From b9104e0632633d13a718f3b1cc988473e7605548 Mon Sep 17 00:00:00 2001 From: Johannes Rest Date: Tue, 8 Sep 2026 10:01:53 +0200 Subject: [PATCH] Document local setup and add malformed CSV sample --- README.md | 98 ++++++++++++++++++++++++++ samples/invoices-invalid-structure.csv | 3 + 2 files changed, 101 insertions(+) create mode 100644 README.md create mode 100644 samples/invoices-invalid-structure.csv diff --git a/README.md b/README.md new file mode 100644 index 0000000..d815840 --- /dev/null +++ b/README.md @@ -0,0 +1,98 @@ +# ImportAssist + +Eigenprojekt zur Weiterbildung in C#, Azure und KI-Integration. + +ImportAssist prüft synthetische Rechnungsdaten. Die lokale +Verarbeitung läuft über eine Konsole, einen HTTP-Endpunkt +oder einen Blob-Trigger mit Azurite. + +## Voraussetzungen + +- .NET-10-SDK gemäß global.json +- Azure Functions Core Tools 4 +- Azurite +- Unter Arch Linux: aspnet-targeting-pack + +Alle folgenden relativen Pfade beziehen sich auf das Repository. + +## Lokal starten + +Terminal 1 — Azurite: + +```bash +"$HOME/.local/bin/azurite" \ + --location "$HOME/.local/share/ImportAssist/azurite" +``` + +Terminal 2 — Functions-Host: + +```bash +cd src/ImportAssist.Functions +func start +``` + +In local.settings.json werden folgende Values benötigt: + +```json +{ + "AzureWebJobsStorage": "UseDevelopmentStorage=true", + "FUNCTIONS_WORKER_RUNTIME": "dotnet-isolated" +} +``` + +## CSV prüfen + +Direkt über die Konsole: + +```bash +dotnet run --project src/ImportAssist.Cli -- samples/invoices.csv +``` + +Über einen Blob-Upload: + +```bash +dotnet run --project tools/ImportAssist.Upload -- samples/invoices.csv +``` + +Nach abgeschlossener Verarbeitung den Bericht lesen. +BLOBNAME.csv durch den Namen aus der Upload-Ausgabe ersetzen: + +```bash +dotnet run --project tools/ImportAssist.Upload -- result "BLOBNAME.csv" +``` + +Eingaben liegen im Container imports, Berichte in results. + +## CSV-Format + +- Kopfzeile: InvoiceId;CustomerId;Amount;Currency +- Vier durch Semikolon getrennte Felder pro Zeile +- Keine Anführungszeichen oder Zeilenumbrüche innerhalb eines Feldes +- Beträge mit Dezimalpunkt, ohne Tausendertrennzeichen + +Prüfregeln: Rechnungsnummer und Kundennummer müssen vorhanden +sein; der Betrag muss eine gültige positive Zahl sein. +Die Währung wird bislang nicht fachlich geprüft. + +## Prüfberichte + +- Completed: Alle Zeilen wurden fachlich geprüft. + Einzelne Rechnungen können fehlerhaft sein. +- Rejected: CSV-Struktur ungültig; keine fachliche Prüfung. + Die Ursache steht in fileErrors. + +samples/invoices.csv ergibt eine gültige und vier fehlerhafte +Rechnungen. + +samples/invoices-invalid-structure.csv wird wegen einer fehlenden +Spalte in Zeile 3 abgewiesen. + +## Beenden + +Functions-Host und Azurite jeweils mit Strg+C beenden. +Azurite speichert seine Daten im angegebenen lokalen Verzeichnis. + +## Aktueller Umfang + +Lokaler Prototyp mit synthetischen Daten. +Cloud-Deployment und KI-Anbindung stehen noch aus. diff --git a/samples/invoices-invalid-structure.csv b/samples/invoices-invalid-structure.csv new file mode 100644 index 0000000..7a6ffd2 --- /dev/null +++ b/samples/invoices-invalid-structure.csv @@ -0,0 +1,3 @@ +InvoiceId;CustomerId;Amount;Currency +INV-101;C-100;125.50;EUR +INV-102;C-200;89.00