Dieses Projekt bietet einen KaibanJS Multi-Agenten-Workflow, der:
- EDIFACT-Formatspezifikationen aus Qdrant (Collection:
willi_mako
) bezieht, - je Format einen JavaScript-Parser (EDIFACT → JSON + Erklärungen) generiert und
- den Parser mit Beispielnachrichten in
MAKO_SAMPLES/
testet.
Die zwei wichtigsten Startpunkte sind:
- Parser generieren (Team-Pipeline)
- Erklärung für eine EDIFACT-Nachricht erzeugen (Explain-Team)
Dieses Projekt ist Teil von Willi‑Mako, einer Lösung für die Marktkommunikation in der Energiewirtschaft. Weitere Informationen: https://stromhaltig.de/
Urheberrecht: © STROMDAO GmbH — Kontakt: dev@stromdao.com
Willi‑Agent automatisiert die Verarbeitung von EDIFACT-Nachrichten, die in der deutschen Marktkommunikation (z. B. APERAK, INVOIC, UTILMD, MSCONS, ORDERS …) verwendet werden. Der Agent:
- erzeugt je Format einen Parser (EDIFACT → strukturiertes JSON),
- erklärt die Inhalte feldgenau (menschenlesbar, standardmäßig auf Deutsch),
- unterstützt Tests und Validierungen zur Qualitätssicherung und
- erleichtert die Dokumentation sowie das Onboarding neuer Formate.
Typische Einsatzszenarien:
- Schnelles Onboarding eines neuen EDIFACT-Formats inklusive Tests.
- Automatische Erläuterungen für Fachbereiche (Markdown-Reports in Deutsch).
- Erstellung und Pflege von Parser-Artefakten für Betriebs- und Integrationszwecke.
- Node.js 18 oder neuer
- Eine gültige
.env
-Datei im Projektroot (nicht einchecken!)
npm install --legacy-peer-deps
Folgende Variablen sind nötig, damit Qdrant und Gemini funktionieren:
- QDRANT_URL = https://willi-col.corrently.cloud (fixer Wert, immer so setzen)
- QDRANT_COLLECTION = willi_mako (fixer Wert, immer so setzen)
- QDRANT_API_KEY =
- Den Key erhältst du in der Willi Mako Anwendung unter: https://stromhaltig.de/app/
- GEMINI_API_KEY = (alternativ GOOGLE_AI_API_KEY)
Optionale, sinnvolle Defaults (falls noch nicht vorhanden):
- EMBEDDING_PROVIDER=gemini
- GEMINI_MODEL=gemini-2.5-flash
- GEMINI_VISION_MODEL=gemini-2.5-flash
- GEMINI_EMBED_MODEL=text-embedding-004
Beispiel (ohne echte Schlüssel):
QDRANT_URL=https://willi-col.corrently.cloud
QDRANT_COLLECTION=willi_mako
QDRANT_API_KEY=YOUR_QDRANT_KEY
GEMINI_API_KEY=YOUR_GEMINI_KEY
EMBEDDING_PROVIDER=gemini
GEMINI_MODEL=gemini-2.5-flash
GEMINI_VISION_MODEL=gemini-2.5-flash
GEMINI_EMBED_MODEL=text-embedding-004
Startet die Multi-Agenten-Pipeline (Strategie → Wissen → Builder → Tester):
npm start
Ergebnisse pro Format landen unter artifacts/<FORMAT>/
:
search-plan.json
– Suchplan und Top-Treffer aus Qdrantspec.json
– konsolidierte Spezifikationparser.js
– generiertes Parsermodul (ESM) für EDIFACT → JSON + explain()tests.json
– TestergebnisseworkflowLogs.json
undstatus.txt
– Lauf- und Statusprotokolle
- APERAK
- INVOIC
- MSCONS
- ORDERS
- PARTIN
- QUOTES
- REMADV
- UTILMD
- UTILTS
- UITLTS
Nützliche Umgebungsvariablen für die Pipeline:
ONLY_FORMATS=APERAK,INVOIC
– nur diese Formate verarbeitenSTOP_AFTER_FORMAT=APERAK
– nach diesem Format anhaltenBASELINE_PARSER=true
– deterministischen Basis-Parser bevorzugen
Erzeugt zu einer einzelnen EDIFACT-Nachricht eine Erklärung als JSON und als deutsches Markdown. Die Ausgabe wird in output/
geschrieben und im Dateinamen mit dem erkannten Format versehen.
npm run explain-kanban -- ./MAKO_SAMPLES/APERAK_2.md
Erzeugt u. a.:
output/APERAK_APERAK_2.explained.json
output/APERAK_APERAK_2.explained.de.md
Hinweise:
- Das Explain-Team verwendet standardmäßig Deutsch (de) für das Markdown.
- Falls vorhanden, wird ein generierter Parser aus
artifacts/<FORMAT>/parser.js
genutzt; sonst greift ein Basis-Parser.
In jeder Nachricht sind Sender (UNB/02/01) und Empfänger (UNB/03/01) über BDEW-Codes identifiziert. Das Explain-Team löst diese optional in sprechende Namen auf. Dazu wird eine veröffentlichte JSON genutzt:
- Standardquelle:
https://stromhaltig.de/data/marktpartnersuche-export-20250905/table-001.json
- Optional konfigurierbar via
.env
:BDEW_CODES_URL=<eigene URL>
- Lokale Datei bevorzugen: Lege
bdewcodes.json
ins Projekt-Root oder setzeBDEW_CODES_PATH=/pfad/zu/bdewcodes.json
. Das Tool erkennt Tabellenformate{ headers, rows }
sowie Arrays von Objekten.
Die aufgelösten Namen werden im Markdown hinter den IDs in Klammern angezeigt, z. B. 9900295000008 (Beispiel GmbH)
.
-
Einzelne Beispiel-Datei mit vorhandenem Parser erklären (legt
explained.json
unterartifacts/<FORMAT>/
ab):npm run explain-one -- ./MAKO_SAMPLES/APERAK_2.md
-
Alle vorhandenen Parser einmal gegen eine Minimaleingabe laufen lassen und Erklärungen schreiben:
npm run explain
-
Entwicklerlauf mit automatischem Reload:
npm run dev
MAKO_SAMPLES/
– Beispiel-EDIFACT-Nachrichtenartifacts/<FORMAT>/
– Artefakte je Format (Spezifikation, Parser, Tests, Logs)output/
– Ausgaben des Explain-Teams (JSON + deutsches Markdown)src/
– Agents, Tools und Orchestrierung (KaibanJS)scripts/
– CLIs für Explain-Workflows
- 401/403 bei Qdrant: Prüfe
QDRANT_API_KEY
und dassQDRANT_URL
sowieQDRANT_COLLECTION
exakt wie oben gesetzt sind. - Auth-Fehler bei Gemini: Setze
GEMINI_API_KEY
(oder alternativGOOGLE_AI_API_KEY
). - Keine Parser gefunden: Erst die Pipeline mit
npm start
ausführen, dann Explain-Skripte verwenden.
Apache-2.0 (siehe package.json
).