mirror of
https://github.com/itsdave-de/msp.git
synced 2026-09-28 04:02:42 -03:00
a2d11476d15cd4e27ee2f8ae0978a6427e31a224
10 End-to-End-Testszenarien durchgespielt (Drag&Drop, ZIP, Multi-File,
Idempotenz, Unmatched, Error, Doc-Link, Reload-ohne-Kontext, Format-Drift,
Gutschriften). 3 echte Bugs gefunden und behoben, 2 UX-Verbesserungen
ergänzt.
Fixes:
- ZIP-Auto-Detection war zu restriktiv: sniff() hat sich auf Namens-
Heuristik verlassen (confidence 0.85 nur bei 'rechnungen'/'433148' im
Dateinamen, sonst 0.3 → unter Cutoff). Umbenannte ZIPs wurden nicht
erkannt. Fix: ZIP in-memory öffnen, erste CSV-Zeile lesen,
Signatur-Spalten matchen — gleiche Logik wie bei direkten CSVs.
Zusätzlich liest analyze_file bei ZIPs die komplette Datei (ZIP
Central Directory steht am Ende und passt oft nicht in 8 KiB).
- Unmatched-Dateien landeten im Error-State statt im Dropdown-Flow.
Backend hat error="Kein passender Handler …" gesetzt, Frontend
triggerte dadurch set_error(). Fix: analyze_file gibt für Unmatched
jetzt error=null zurück, handler_key=null — das Frontend bietet den
Dropdown mit manueller Handler-Zuordnung an (war schon vorhanden,
wurde aber nie erreicht).
- Fehler-Meldungen im Wizard-Ergebnis zeigten "[object Object]" statt
Text. Frappe-RPC-Errors liefern die Nachricht in _server_messages
als JSON-String. Fix: extract_error_message() parst das sauber aus
(mit Fallback auf exception / message / JSON-Stringify).
UX-Verbesserungen:
- Drift-Checkbox ("Abweichendes Format akzeptieren") ist jetzt immer
sichtbar, nicht nur wenn die Analyse Drift erkannt hat. Hilfreich
beim manuellen Handler-Zuordnungsflow, wenn der User eine Datei
trotz Parser-Ablehnung forcen will. Der Hinweistext passt sich dem
Kontext an.
- Wizard lädt bei fehlender Preview (z. B. Aufruf ohne Dropzone-
Voranalyse) selbst analyze_file, um Stats und Format-Drift-Status
nachzuziehen. Kein "ohne Stats"-Leerzustand mehr im Standardpfad.
Testresultate im Überblick (alle 10 ✓):
1. Drag & Drop: Karte erscheint, 100% Confidence
2. ZIP: nach Fix 100% Confidence (vorher 0)
3. Multi-File (4 parallel): alle Karten nebeneinander
4. Idempotenz: 0 Docs, 116 Skipped, Status Succeeded
5. Unmatched-Flow: Dropdown + disabled Button bis Handler gewählt
6. Broken file: ❌-Karte, keine Crashes
7. Doc-Link: öffnet SINV-271766 als Formular
8. Reload ohne Kontext: "Kein Kontext" + Link zur Dropzone
9. Format-Drift: Drift-Checkbox aktivierbar, nach Bestätigen läuft
Import durch
10. Gutschrift: 2 Credit-Note-Zeilen → negative DN (−101,95 €) als
eigenes Dokument in Ergebnistabelle
MSP
App for Managed Service Providers
License
GPLv3# msp
Languages
Python
65.7%
JavaScript
30.5%
PowerShell
3.8%