Add optional cable-sizing module
Per-circuit cross-section recommendation as a separate module attached to the circuit list. It never writes project data itself: "Übernehmen" applies cable type, cross-section and length through the regular circuit.update command, so revisions and Undo/Redo stay intact. - Pure domain module (src/cable-sizing) with IEC 60364-5-52:2009 Annex B tables for PVC and XLPE, copper and aluminium, methods A1, A2, B1, B2, C, D1, D2 and E. Every value was cross-checked against public reproductions; where sources differ the lower value is used (docs/cable-sizing-module.md). - Temperature and grouping between table values round to the safer value; values outside the tables return no result instead of a factor of 1. Ground methods use B.52.18 (D2) and B.52.19 A (D1). - Overload protection: circuit-breakers In <= Iz; gG fuses additionally I2 <= 1.45 Iz with I2 = 1.6/1.9/2.1 In. - Inputs prefilled from the circuit: power, phase (group or device rows), project voltage, power-weighted cos phi, length and protective device. - Opened from a "Leitungsberechnung" button in the row actions, not from a grid cell, so cable cells keep the spreadsheet behavior. - Stateless API under /api/cable-sizing; no database table or migration. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
d95f0bf5c0
commit
49488f4e1b
17 changed files with 1999 additions and 4 deletions
24
AGENTS.md
24
AGENTS.md
|
|
@ -507,9 +507,31 @@ Before implementation, audit the current ProjectDevice, CircuitDeviceRow,
|
|||
command, snapshot, transfer and editor drag-and-drop paths. Propose concrete
|
||||
domain objects and commands before adding migrations.
|
||||
|
||||
## Cable Sizing Module
|
||||
|
||||
`src/cable-sizing` is an agreed, separate calculator module attached to the
|
||||
circuit list (see `docs/cable-sizing-module.md`). Rules:
|
||||
|
||||
- The domain code stays pure: no imports from `db/`, `server/` or `frontend/`.
|
||||
- It never writes project data. Results are applied only by an explicit
|
||||
"Übernehmen", which runs the regular `circuit.update` command.
|
||||
- It is opened from the circuit row action button "Leitungsberechnung", never
|
||||
by clicking a grid cell; cable cells keep the normal spreadsheet behavior.
|
||||
- It has no database table and no migration; `/api/cable-sizing/*` is
|
||||
stateless.
|
||||
- Reference data is IEC 60364-5-52:2009 Annex B. Change table values only with
|
||||
a documented source in `docs/cable-sizing-module.md`; where sources differ,
|
||||
use the lower value. Inputs outside the tables return no result instead of
|
||||
assuming a factor of 1.
|
||||
- Inputs are prefilled from the circuit (power, phase, voltage, weighted cos φ,
|
||||
length, protective device) and remain editable; manual cable entry without
|
||||
a calculation stays possible.
|
||||
|
||||
## Future Sizing
|
||||
|
||||
Do not implement full cable/protection sizing unless explicitly requested.
|
||||
Do not implement full automatic cable/protection sizing of all circuits
|
||||
unless explicitly requested. The cable sizing module above only suggests
|
||||
values for one circuit on demand.
|
||||
|
||||
Keep the structure ready for it.
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue