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
|
|
@ -532,6 +532,9 @@ Acceptance criteria:
|
|||
|
||||
## Phase 14: External Model Round-Trip
|
||||
|
||||
Status: abgeschlossen am 30.09.2026 mit R10. Siehe
|
||||
[R10-Abnahme](revit-excel-r10-validation.md).
|
||||
|
||||
Status: R0 ist mit Korrekturen freigegeben; R1 stellt die Dokumentation auf
|
||||
Linear-XLSX und Worksharing-ID um. Die frühere CSV-Planung 14.0–14.6 ist
|
||||
abgelöst und wird nicht fortgeschrieben.
|
||||
|
|
|
|||
|
|
@ -162,7 +162,7 @@ ProjectDevices and device rows (#20).
|
|||
3. [x] Snapshot-to-revision descriptions and history presentation.
|
||||
4. [x] Distribution-board power summary and project column layout.
|
||||
|
||||
The Revit/Linear-XLSX round-trip is now the separately planned active Phase 14.
|
||||
It uses exact Worksharing-ID identity and must not be inferred from these
|
||||
unrelated backlog tasks. See
|
||||
The Revit/Linear-XLSX round-trip was completed separately in Phase 14. It uses
|
||||
exact Worksharing-ID identity and must not be inferred from these unrelated
|
||||
backlog tasks. See
|
||||
[the R0–R10 plan](revit-excel-phase-14-plan.md).
|
||||
|
|
|
|||
|
|
@ -478,6 +478,14 @@ synthetischen großen Workbooks. Die virtualisierte Tabelle rendert nur den
|
|||
sichtbaren Ausschnitt, während Filterung, Sortierung und Auswahl auf der einmal
|
||||
geladenen kompakten Liste arbeiten.
|
||||
|
||||
Umsetzungsstand R10: Die vollständige Kette ist mit dateibasierter SQLite-
|
||||
Persistenz und Neustart getestet. Der synthetische Lasttest verarbeitet 5.000
|
||||
Objekte, misst Transport, Planung, Transaktionen, Command-/Snapshotgröße,
|
||||
Heap und Clientprojektion und prüft Restore sowie Projektduplikat. Große
|
||||
Zustandsersetzungen verwenden begrenzte Insertblöcke innerhalb derselben
|
||||
atomaren Transaktion. Die Ergebnisse sind in der
|
||||
[R10-Abnahme](revit-excel-r10-validation.md) dokumentiert.
|
||||
|
||||
Jedes Paket R1–R10 führt fokussierte Tests sowie aus:
|
||||
|
||||
```text
|
||||
|
|
|
|||
|
|
@ -18,7 +18,7 @@ Der alte CSV-Plan 14.0–14.6 ist abgelöst und wird nicht fortgeschrieben.
|
|||
| R7 | abgeschlossen | Gruppierter Editorbereich, drei Drag-and-drop-Ziele, Row-Indikator, ausdrückliches Lösen und atomare Löschübergänge mit exaktem Undo/Redo. |
|
||||
| R8 | abgeschlossen | Rückgabe-Excel für alle, abweichende oder ausgewählte Objekte und append-only Exportnachweis sind umgesetzt. |
|
||||
| R9 | abgeschlossen | Vollständiger Folgeimport nach exakter Worksharing-ID mit Quellentscheidungen, fehlenden Objekten, bestätigtem Löschen und persistentem Undo/Redo. |
|
||||
| R10 | offen | Ende-zu-Ende-Härtung, große Datenmengen und Abschlussdokumentation. |
|
||||
| R10 | abgeschlossen | Ende-zu-Ende-Kette, 5.000-Objekte-Lasttest, gebatchte Zustandspersistenz und Abschlussdokumentation. |
|
||||
|
||||
## R0 – Audit
|
||||
|
||||
|
|
@ -214,6 +214,15 @@ Zusätzlich: mehrere Tausend synthetische Objekte, virtualisierte UI,
|
|||
Speicher-/Payload-/Transaktionsmessungen, Löschwarnungen samt Link-Inversen,
|
||||
alte CSV-Ablehnungen und Dokumentation auf den ausgelieferten Stand.
|
||||
|
||||
Umsetzungsstand vom 30.09.2026: Der dateibasierte Integrationstest deckt die
|
||||
vollständige Kette bis zu Undo/Redo nach einem Datenbankneustart ab. Ein
|
||||
synthetisches Workbook mit 5.000 Objekten durchläuft Erst- und Folgeimport,
|
||||
Snapshot-Restore, Projektduplikat sowie die extrahierte Clientfilter- und
|
||||
Virtualisierungslogik. Die dabei gefundene SQLite-Grenze ungebatchter Inserts
|
||||
ist für alle vollständigen External-Model-Zustandspfade behoben. Messwerte und
|
||||
Abnahme stehen in [R10-Abnahme](revit-excel-r10-validation.md). Phase 14 ist
|
||||
damit abgeschlossen.
|
||||
|
||||
## Pflichtprüfungen je Paket R1–R10
|
||||
|
||||
```text
|
||||
|
|
|
|||
60
docs/spec/revit-excel-r10-validation.md
Normal file
60
docs/spec/revit-excel-r10-validation.md
Normal file
|
|
@ -0,0 +1,60 @@
|
|||
# R10-Abnahme der Linear-XLSX-Anbindung
|
||||
|
||||
Stand: 30.09.2026. R10 schließt Phase 14 mit synthetischen, reproduzierbaren
|
||||
Integrations- und Lasttests ab. Die reale Musterdatei wird dafür nicht benötigt
|
||||
und bleibt unversioniert.
|
||||
|
||||
## Ende-zu-Ende-Nachweis
|
||||
|
||||
`tests/revit-xlsx-end-to-end.test.ts` verwendet eine dateibasierte SQLite-
|
||||
Datenbank und prüft in einer Kette:
|
||||
|
||||
```text
|
||||
Erstimport → Objektplanung → Row-Zuordnung → Rückgabe-XLSX
|
||||
→ Folgeimport → Snapshot/Restore → Projektduplikat
|
||||
→ Datenbankneustart → Undo → Redo
|
||||
```
|
||||
|
||||
Der Test bestätigt insbesondere die materialisierte Row-Menge, die Reduktion
|
||||
des älteren Importbatches auf Metadaten, das Remapping aller internen UUIDs im
|
||||
Duplikat und parserfreies Undo/Redo nach dem Neustart.
|
||||
|
||||
## Last- und Größenmessung
|
||||
|
||||
`tests/revit-xlsx-scale.test.ts` erzeugt 5.000 synthetische Objekte in einer
|
||||
Linear-kompatiblen XLSX. Der Test misst Erst- und Folgeimport, Command- und
|
||||
Snapshotgröße, Heap-Wachstum sowie clientseitiges Filtern, Sortieren und das
|
||||
virtuelle Fenster. Er führt außerdem Snapshot-Restore und Projektduplikat mit
|
||||
dem vollständigen Zustand aus.
|
||||
|
||||
Messung auf der Entwicklungsumgebung am 30.09.2026:
|
||||
|
||||
| Messwert | Ergebnis |
|
||||
| --- | ---: |
|
||||
| Objekte | 5.000 |
|
||||
| XLSX-Datei | 191.019 Bytes |
|
||||
| Erstimport-Command | 15.598.253 Bytes |
|
||||
| logischer Projektsnapshot | 15.598.071 Bytes |
|
||||
| XLSX-Erstplanung | 6.831 ms |
|
||||
| atomare Erstimporttransaktion | 672 ms |
|
||||
| XLSX-Folgeplanung | 6.303 ms |
|
||||
| atomare Folgeimporttransaktion | 887 ms |
|
||||
| Clientfilter, Sortierung und Fenster | 37 ms |
|
||||
| Heap-Zuwachs des erfolgreichen Gesamtlaufs | 154.125.568 Bytes |
|
||||
|
||||
Der Heap-Wert ist wegen Garbage Collection und der absichtlich verwendeten
|
||||
In-Memory-Datenbank nicht deterministisch. Wiederholte Auditläufe lagen unter
|
||||
der Testobergrenze von 768 MiB. Das virtuelle Fenster enthält bei 520 px Höhe
|
||||
maximal 22 statt 5.000 Zeilen.
|
||||
|
||||
## Gefundene und behobene Grenze
|
||||
|
||||
Der erste 5.000-Objekte-Lauf scheiterte an einem ungebatchten SQLite-
|
||||
Mehrfach-Insert. `insertManyInBatches` begrenzt nun die Insertblöcke für
|
||||
Erstimport, Folgeimport, Snapshot-Restore und Projektduplikat. Alle Blöcke
|
||||
bleiben Teil der jeweiligen bestehenden Transaktion; ein Fehler rollt weiterhin
|
||||
die gesamte Operation zurück.
|
||||
|
||||
Die vorhandenen Tests decken außerdem die deutschen Ablehnungen alter
|
||||
CSV-Snapshots und CSV-History, Löschwarnungen, atomare Link-Inversen und den
|
||||
Schutz referenzierter Räume und Verteiler ab.
|
||||
Loading…
Add table
Add a link
Reference in a new issue