57 lines
2.7 KiB
Markdown
57 lines
2.7 KiB
Markdown
# Plattformneutrale Engine und Browseradapter
|
|
|
|
Stand: 2026-07-17
|
|
|
|
## Zweck
|
|
|
|
Die ASSESSOR-Kernlogik soll heute in der lokalen React-/Tauri-Anwendung und später im Backend eines internen Servers ausführbar sein. Deshalb verarbeitet die Engine keine Browser-`File`-Objekte und greift nicht direkt auf DOM, `localStorage` oder Download-APIs zu.
|
|
|
|
## Schichten
|
|
|
|
```text
|
|
React-Dateiauswahl
|
|
-> Browser-File-Adapter
|
|
-> ImportSource (Metadaten + Uint8Array)
|
|
-> plattformneutrale Importengine
|
|
-> TextDecoderAdapter
|
|
-> MarkupDocumentAdapter
|
|
-> Formatparser
|
|
-> ImportDocument
|
|
-> Tabellenanalyse und Profilwahl
|
|
```
|
|
|
|
### Plattformneutraler Kern
|
|
|
|
- `src/domain/import-source.ts` definiert binäre Importquellen ohne Browserobjekte.
|
|
- `src/importers/engine.ts` ist der zentrale Engine-Einstieg für Browser, Tests und ein zukünftiges Backend.
|
|
- `src/importers/runtime-adapters.ts` definiert Verträge für Textdekodierung und HTML-/XML-Strukturextraktion.
|
|
- CSV, JSON und Excel arbeiten direkt auf Text beziehungsweise Bytes.
|
|
- HTML und XML erhalten bereits dekodierte, inerte Strukturen vom Markupadapter.
|
|
|
|
### Browserkomposition
|
|
|
|
Unter `src/platform/browser` liegen die aktuellen Browserimplementierungen:
|
|
|
|
- Umwandlung von `File` in `ImportSource`
|
|
- UTF-8-Dekodierung mit Windows-1252-Fallback
|
|
- DOM-basierte, inerte HTML- und XML-Auswertung
|
|
- `localStorage`-Persistenzadapter
|
|
- Browser-Downloadadapter
|
|
|
|
Der bisherige Aufruf `importFile(file, options)` bleibt als dünne Browser-Kompatibilitätsschicht erhalten. Ein zukünftiges Backend ruft stattdessen `importSource(source, options, adapters)` mit serverseitigen Adaptern auf.
|
|
|
|
## Weitere Plattformgrenzen
|
|
|
|
- Reviewpersistenz hängt nur vom `StorageAdapter` ab.
|
|
- Exporte geben Textartefakte an einen `DownloadAdapter` weiter.
|
|
- Snapshots und Dashboardexporte verwenden einen injizierbaren `Clock`.
|
|
- IDs der Import- und Analyseobjekte bleiben deterministisch und benötigen keinen Zufallszahlengenerator.
|
|
|
|
## Sicherheitsgrenze
|
|
|
|
Importierte HTML-Inhalte werden ausschließlich vom Browser-Markupadapter gelesen. Aktive Elemente werden vor der Tabellenextraktion entfernt und nie in die React-Oberfläche eingesetzt oder ausgeführt. Excel-Formeln und VBA bleiben deaktiviert. Die bestehenden Local-only-Prüfungen verhindern weiterhin Netzwerkfähigkeiten und prüfen zusätzlich, dass Kernmodule keine Browser-, React- oder Tauri-Abhängigkeiten einführen.
|
|
|
|
## Verifikation
|
|
|
|
Die plattformneutralen Engine-Tests erstellen reine Bytequellen und injizieren Testadapter. Sie benötigen weder ein Browser-`File`-Objekt noch einen DOM-Zugriff durch die Engine. Die bisherigen Browserimporte bleiben über ihre Integrations- und Workflowtests abgedeckt.
|