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:

"$HOME/.local/bin/azurite" \
  --location "$HOME/.local/share/ImportAssist/azurite"

Terminal 2 — Functions-Host:

cd src/ImportAssist.Functions
func start

In local.settings.json werden folgende Values benötigt:

{
  "AzureWebJobsStorage": "UseDevelopmentStorage=true",
  "FUNCTIONS_WORKER_RUNTIME": "dotnet-isolated"
}

CSV prüfen

Direkt über die Konsole:

dotnet run --project src/ImportAssist.Cli -- samples/invoices.csv

Über einen Blob-Upload:

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:

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.

KI-Analyse aus C#

ImportAssist.Analyze liest Analyseprompt, Schnittstellenbeschreibung und einen gespeicherten JSON-Prüfbericht ein und ruft Azure OpenAI auf.

Lokale Konfiguration

User Secrets für das Projekt initialisieren:

dotnet user-secrets init --project tools/ImportAssist.Analyze

Folgende Konfigurationswerte im zugehörigen User-Secrets-Speicher setzen:

  • AzureOpenAI:Endpoint – Azure-OpenAI-Basisadresse der Ressource
  • AzureOpenAI:Deployment – importassist-analysis
  • AzureOpenAI:ApiKey – Schlüssel der Ressource

API-Schlüssel ausschließlich lokal hinterlegen. User Secrets liegen außerhalb des Repositorys, sind aber unverschlüsselt.

Ausführen

Alle Befehle aus dem Repository-Hauptverzeichnis ausführen:

dotnet run --project tools/ImportAssist.Analyze -- \
  samples/invoices-report.json

dotnet run --no-build --project tools/ImportAssist.Analyze -- \
  samples/invoices-rejected-report.json

Azurite und der Functions-Host werden für diese gespeicherten Berichte nicht benötigt. Der Modellaufruf benötigt eine Internetverbindung.

Die Analyse erscheint auf stdout; Statusmeldungen und Tokenverbrauch erscheinen auf stderr.

Exitcodes:

  • 0: Modellantwort regulär abgeschlossen; keine fachliche Qualitätsgarantie.
  • 1: Konfigurations-, Datei- oder Aufruffehler.
  • 2: Modellantwort nicht regulär abgeschlossen.

Die Antwort ist Freitext. Eine automatische fachliche Bewertung und ein verbindliches JSON-Ausgabeformat sind noch nicht implementiert.

S
Description
Eigenentwicklung .NET/Azure plus KI Integration
Readme
101 KiB
0 Stars 1 Watchers 0 Forks
Languages
C# 100%