2.3 KiB
2.3 KiB
Data Model
Design principles
- components are metadata-driven
- placement data is separate from catalog data
- plugin-imported components must behave like built-in components
- cable links are first-class entities
Core entities
RackTemplate
Describes a rack type that can be instantiated in projects.
Suggested fields:
idnamerack_standardas10_inchor19_inchtotal_uusable_depth_mmmax_weight_kgmounting_style
Project
idnameowner_idcreated_atupdated_atstatus
RackInstance
idproject_idrack_template_idlabelposition_index
ComponentDefinition
Catalog entry for a reusable part.
idsource_typeasbuiltinorpluginplugin_idmanufacturerpart_numbernamecategoryrack_standardheight_uwidth_mmdepth_mmweight_kgpower_wprice_netcurrencyfront_svg_asset_idpreview_3d_asset_id
ComponentInstance
Placed component inside a rack.
idproject_idrack_instance_idcomponent_definition_idstart_uorientationnotes
PortDefinition
Optional port model for cable planning.
idcomponent_definition_idnamesideasfrontorrearoffset_x_mmoffset_y_mmoffset_z_mmport_type
CableLink
idproject_idfrom_component_instance_idfrom_port_definition_idto_component_instance_idto_port_definition_idcable_typeestimated_length_mmslack_percentmanual_override_length_mm
PluginPack
idnameversionvendormanifest_versionstatusimported_at
Validation rules
ComponentDefinition.rack_standardmust matchRackTemplate.rack_standardComponentInstance.start_uplusheight_umust not exceed rack height- placed components must not overlap
- cable links should only reference valid ports belonging to the selected components
BOM generation logic
The BOM should aggregate by:
manufacturerpart_number- optional variant attributes such as color or length
The BOM should be able to combine:
- placed components
- accessory parts
- calculated cables
Future extensions
- multi-rack room coordinates
- thermal zones
- separate front and rear accessories
- stock and supplier integration