leistungsbilanz-ts/docs/spec/revit-excel-r10-validation.md

2.4 KiB

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:

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.