Files
c0de.it/docs/rack-planner/data-model.md
Lars Gebhardt-Kusche 98dd388fda
All checks were successful
Deploy / deploy (push) Successful in 14s
asdasd
2026-05-15 22:15:31 +02:00

140 lines
2.3 KiB
Markdown

# 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:
- `id`
- `name`
- `rack_standard` as `10_inch` or `19_inch`
- `total_u`
- `usable_depth_mm`
- `max_weight_kg`
- `mounting_style`
### Project
- `id`
- `name`
- `owner_id`
- `created_at`
- `updated_at`
- `status`
### RackInstance
- `id`
- `project_id`
- `rack_template_id`
- `label`
- `position_index`
### ComponentDefinition
Catalog entry for a reusable part.
- `id`
- `source_type` as `builtin` or `plugin`
- `plugin_id`
- `manufacturer`
- `part_number`
- `name`
- `category`
- `rack_standard`
- `height_u`
- `width_mm`
- `depth_mm`
- `weight_kg`
- `power_w`
- `price_net`
- `currency`
- `front_svg_asset_id`
- `preview_3d_asset_id`
### ComponentInstance
Placed component inside a rack.
- `id`
- `project_id`
- `rack_instance_id`
- `component_definition_id`
- `start_u`
- `orientation`
- `notes`
### PortDefinition
Optional port model for cable planning.
- `id`
- `component_definition_id`
- `name`
- `side` as `front` or `rear`
- `offset_x_mm`
- `offset_y_mm`
- `offset_z_mm`
- `port_type`
### CableLink
- `id`
- `project_id`
- `from_component_instance_id`
- `from_port_definition_id`
- `to_component_instance_id`
- `to_port_definition_id`
- `cable_type`
- `estimated_length_mm`
- `slack_percent`
- `manual_override_length_mm`
### PluginPack
- `id`
- `name`
- `version`
- `vendor`
- `manifest_version`
- `status`
- `imported_at`
## Validation rules
- `ComponentDefinition.rack_standard` must match `RackTemplate.rack_standard`
- `ComponentInstance.start_u` plus `height_u` must 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:
- `manufacturer`
- `part_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