# 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.