forked from jappel/leistungsbilanz-ts
60 lines
2.4 KiB
Markdown
60 lines
2.4 KiB
Markdown
# 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.
|