David Malinowski a2d11476d1 fix(msp): Robustheits-Fixes nach Browser-Testrunde (Dropzone + Wizard)
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
2026-04-14 21:55:51 +02:00
2024-05-31 10:53:56 +01:00
2021-03-24 01:36:20 +01:00
2021-03-24 01:36:20 +01:00
2021-03-24 01:36:20 +01:00
2021-03-24 01:36:20 +01:00

MSP

App for Managed Service Providers

License

GPLv3# msp

S
Description
ERPNext App for Managed Service Providers and IT-Service Companys
Readme
681 KiB
Languages
Python 65.7%
JavaScript 30.5%
PowerShell 3.8%