forked from jappel/leistungsbilanz-ts
Harden Linear XLSX end to end
This commit is contained in:
parent
2581beee3c
commit
4ff01b2ccd
26 changed files with 522 additions and 246 deletions
|
|
@ -67,8 +67,9 @@ Prüfsumme; Ersetzen übernimmt die Grobbilanzen atomar und mit Undo/Redo,
|
|||
Duplizieren vergibt neue IDs. Transferformat 1 bleibt ohne Grobbilanzen
|
||||
importierbar.
|
||||
|
||||
Das aktuelle Projekt-Snapshot-Schema 9 enthält die logischen Einspeisungsverweise
|
||||
der Verteilungen; Versionen 1–8 werden mit leeren Verweisen hochgestuft. Schema 8
|
||||
Das aktuelle Projekt-Snapshot-Schema 10 enthält Linear-XLSX-Zustand und die in
|
||||
Schema 9 eingeführten logischen Einspeisungsverweise der Verteilungen;
|
||||
Versionen 1–8 werden mit leeren Verweisen hochgestuft. Schema 8
|
||||
enthält außerdem die optionale Netto-Raumfläche `rooms[].areaM2`.
|
||||
Snapshot-Versionen 1–7 werden dafür mit
|
||||
`areaM2 = null` hochgestuft. Restore, Export und Import erhalten vorhandene
|
||||
|
|
@ -485,40 +486,32 @@ read nor write project data; applying a result uses `circuit.update` through
|
|||
|
||||
Full request example and calculation rules: `docs/cable-sizing-module.md`.
|
||||
|
||||
## Revit CSV Foundation
|
||||
## Revit / Linear XLSX
|
||||
|
||||
- `GET /projects/:projectId/external-csv/configuration`
|
||||
- returns the complete versioned project configuration or `null`
|
||||
- `PUT /projects/:projectId/external-csv/configuration`
|
||||
- request: `expectedRevision` and the complete validated configuration
|
||||
- executes `external-csv-configuration.update`
|
||||
- returns configuration, revision and project history state
|
||||
- `POST /projects/:projectId/external-csv/preview`
|
||||
- request: file name and Base64-encoded CSV content up to 18 MB
|
||||
- requires a stored project configuration
|
||||
- returns transport metadata, SHA-256, row classifications, suspect row
|
||||
numbers and mapped source values for every recognized IFC object
|
||||
- does not persist a draft, mutate project state or create a revision
|
||||
- `POST /projects/:projectId/external-csv/initial-import/plan`
|
||||
- reparses the file and returns grouped room/family decisions plus current
|
||||
room, distribution-board and ProjectDevice catalogs
|
||||
- is stateless and rejects an already imported external source
|
||||
- `POST /projects/:projectId/external-csv/initial-import/apply`
|
||||
- requires the expected revision, configuration version, file hash and one
|
||||
decision for every room and exact family/type group
|
||||
- reparses the file, blocks unknown family/type values and executes
|
||||
`external-import.apply-initial` as one undoable project revision
|
||||
- creates no Circuit or CircuitDeviceRow
|
||||
- `GET /projects/:projectId/circuit-lists/:circuitListId/external-objects`
|
||||
- resolves the circuit list's distribution board server-side
|
||||
- returns only external objects assigned to that board, with unassigned
|
||||
objects first, their source room/marker values and current row-link status
|
||||
- returns an empty list when the optional Revit import does not exist
|
||||
- is read-only and exposes no stored command payloads or import bytes
|
||||
- `GET|PUT /projects/:projectId/external-model/configuration` reads or writes
|
||||
the complete XLSX configuration. PUT requires `expectedRevision`.
|
||||
- `POST /projects/:projectId/external-model/configuration/detect` detects the
|
||||
sheet layout and columns from an uploaded `.xlsx` sample without persisting.
|
||||
- `GET /projects/:projectId/external-model/import-status` returns the latest
|
||||
batch metadata, object count and current missing-object count.
|
||||
- `POST .../initial-import/plan|apply` provides the stateless initial plan and
|
||||
its confirmed atomic application. Apply retransmits and reparses the XLSX.
|
||||
- `POST .../follow-up-import/plan|apply` classifies exact Worksharing-ID
|
||||
additions, source changes, unchanged and missing objects. Apply requires the
|
||||
preview hash and source decisions and updates linked row quantities atomically.
|
||||
- `GET|PUT .../external-model/objects` loads one compact project list and
|
||||
applies revision-safe multi-object planning changes.
|
||||
- `POST .../objects/assign-row|assign-new-row|assign-new-circuit|detach-row`
|
||||
changes external-object row assignments through persistent commands.
|
||||
- `POST .../objects/delete-missing` requires `confirmed: true`, deletes only
|
||||
objects marked missing and adjusts linked row quantities in the same command.
|
||||
- `POST .../external-model/return-workbook` creates the structure-preserving
|
||||
return XLSX for all, deviating or selected objects.
|
||||
- `GET .../external-model/export-batches` returns append-only export metadata.
|
||||
|
||||
Parser errors expose stable codes such as `header-not-found`,
|
||||
`ambiguous-header`, `invalid-ifc-guid` and `duplicate-ifc-guid`. The confirmed
|
||||
import uploads and parses the file again and verifies its hash.
|
||||
Uploads accept only `.xlsx` up to 10 MiB. Worksharing-IDs are exact and
|
||||
case-sensitive; IfcGUID is optional and non-unique. Undo/Redo uses persisted
|
||||
command states and never reparses workbook bytes.
|
||||
|
||||
## Document Branding (print view)
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue