David Malinowski 211b68bbb8 feat(msp): FileHandler-Abstraktion + Dropzone-Page mit Format-Auto-Detection
Fundament für den geplanten Multi-Format-Import-Assistenten. Die bestehende
Parser/Builder-Infrastruktur bleibt unverändert — die neue Handler-Schicht
ist eine dünne Hülle darüber, die zusätzlich ZIP-Entpacken und Sniff-basierte
Auto-Erkennung erledigt.

Neue Bausteine:
- msp.importers.handlers.base.BaseFileHandler mit sniff() / preview() /
  execute() und Dataclasses PreviewResult / ExecuteResult.
- msp.importers.handlers.registry mit detect_best_handler() (Scoring aller
  registrierten Handler gegen Dateiinhalt + Name, Cutoff bei confidence >= 0.5).
- msp.importers.zip_unpack: entpackt ZIPs mit genau einer CSV in ein Temp-
  Verzeichnis (wie ADN sie monatlich liefert).
- msp.importers.handlers.adn_monthly_csv_handler: erster Handler, wrappt den
  bestehenden ADN-Parser und Orchestrator. Sniff erkennt ADN-Header mit 100%
  Confidence, ZIP-Dateien mit ADN-Namensmuster mit 85% Confidence.

HTTP-Endpoints für die Dropzone-UI (msp.importers.assistant):
- list_handlers(): Metadaten aller Handler — für manuelle Format-Auswahl
  in der UI, wenn Auto-Erkennung fehlschlägt.
- analyze_file(file_url): Detection + DB-freie Vorschau — liefert
  line_count, customer_count, product_count, period_label, format_drift,
  credit_note_lines, suggested_profile.
- process_file(file_url, handler_key, config): führt den Import aus, gibt
  Zusammenfassung + Supplier-Import-Run-Name zurück.

Frappe-Page „Lieferanten-Import" (/app/import-dropzone):
- Drag-&-Drop-Zone für CSV und ZIP, Multi-Upload.
- Pro Datei eine reaktive Karte mit Lifecycle
  (uploading → analyzing → matched/unmatched/error), die ihre Backend-Calls
  selbst steuert (XHR-Upload mit Progress-Bar, anschließend
  msp.importers.assistant.analyze_file).
- Bei Auto-Erkennung: Stats + „Assistent öffnen"-Button. Routet aktuell
  noch auf die bestehende Supplier-Import-Run-Form mit vorbelegten
  Parametern — wird in Phase 4 durch einen eigenen Wizard abgelöst.
- Bei Unmatched: Dropdown mit allen verfügbaren Handlern zur manuellen
  Zuordnung.

End-to-End im Browser validiert: CSV-Upload → Karte mit 100%-Confidence-
Erkennung → 116 Zeilen, 57 Kunden, 11 Produkte, Zeitraum 02.2026–02.2027.
ZIP-Upload funktioniert analog (getestet via Smoke-Skript).
2026-04-14 21:27:30 +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%