Description
The BMS data model hardcodes cell counts as fixed-length tuples and enums. This year's accumulator has a different cell configuration, and the UI needs to support any reasonable number of cells per segment without code changes. A single config should drive cell/segment counts across the entire data layer.
Acceptance Criteria
- Cell and segment counts are defined in one place and all data structures derive from them
- Adding or removing cells/segments only requires changing config values — no type or enum changes needed
- No change in behavior — all existing subscriptions, rendering, and tests continue to work
Proposed Solution
Introduce a BMS_CONFIG in bms.utils.ts, replace fixed tuple types and index enums with config-driven arrays throughout bms.utils.ts, topic.utils.ts, and cell.service.ts. No UI changes.
Description
The BMS data model hardcodes cell counts as fixed-length tuples and enums. This year's accumulator has a different cell configuration, and the UI needs to support any reasonable number of cells per segment without code changes. A single config should drive cell/segment counts across the entire data layer.
Acceptance Criteria
Proposed Solution
Introduce a
BMS_CONFIGinbms.utils.ts, replace fixed tuple types and index enums with config-driven arrays throughoutbms.utils.ts,topic.utils.ts, andcell.service.ts. No UI changes.