From fdf4c8c19ba94903d3cec764bb1270b3181ff845 Mon Sep 17 00:00:00 2001 From: patrick Date: Wed, 23 Sep 2026 01:35:52 +0200 Subject: [PATCH] =?UTF-8?q?Gesamtprojekt:=20Nachtrag=2022=20=E2=80=94=20er?= =?UTF-8?q?ste=20Bausteine=20von=20AI=20(ENG-01)=20und=20Workflow=20(ENG-0?= =?UTF-8?q?1)=20gemergt=20und=20verifiziert?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Sonnet 5 --- docs/GESAMTPROJEKT-PRUEFPROTOKOLL.md | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/docs/GESAMTPROJEKT-PRUEFPROTOKOLL.md b/docs/GESAMTPROJEKT-PRUEFPROTOKOLL.md index 5d9117fb..c92d5897 100644 --- a/docs/GESAMTPROJEKT-PRUEFPROTOKOLL.md +++ b/docs/GESAMTPROJEKT-PRUEFPROTOKOLL.md @@ -535,3 +535,25 @@ Merge von #141 (UX-07, Barrierefreiheit WCAG 2.1 AA für `web/mail-search`) und **Nicht angefasst in dieser Sitzung — vollständig unbebaute Boards:** AI-Kanban (46 Tickets), Workflow-Kanban (36), Connect-Kanban (32), Migration-Kanban (34) haben nach wie vor keinen Code. Das ist der mit Abstand größte verbleibende Umfang für ein vollständiges NEXARCH-Gesamtprodukt und würde jeweils eigene Grundlagen-Tickets (Datenmodell, Job-Runtime, API-Grundgerüst nach dem FDN-01..04-Muster) brauchen, bevor Fachtickets sinnvoll sind. Commits (Worktree `code-mergefinal7`): Merge UX-07, Merge UX-08, Protokoll-Nachtrag dieser Abschnitt. + +## Nachtrag 22: erste Bausteine von AI und Workflow + +Merge von #143 (AI ENG-01, Provider-Interface) und #144 (Workflow ENG-01, Zustandsmodell) — beide führen NEUE Top-Level-Go-Module ein (`ai/`, `workflow/`), beide konfliktfrei (`git merge --no-ff`, keine überlappenden Dateien mit dem bestehenden Stand). + +**Korrektur in beiden Tickets:** Der Ticket-Text nannte "Multi-Tenancy Modell A", das ist veraltet. Die tatsächliche Projektentscheidung ist Modell C (eine Datenbank je Mandant, siehe SICHERHEITSKONZEPT.md/PRODUKTARCHITEKTUR.md). Beide neuen Module folgen Modell C, nicht dem alten Ticket-Text — im jeweiligen `docs/ENG-01-PRUEFPROTOKOLL.md` vermerkt. + +**`ai/` (neu):** `internal/provider` — Interface für Chat, Completion, Embedding mit einheitlichem Fehlerformat. Zwei Implementierungen: `ollama` (echter Client gegen die externen Ollama-Server) und `mock` (für Fehlerfall-Tests). Contract-Test prüft beide Implementierungen gegen denselben Vertrag. + +- **Geprüft auf 204:** `go build`/`vet`/`gofmt` sauber, `go test ./...` grün (`internal/provider` `ok`, `ollama`/`mock` ohne eigene Tests). Ollama-Erreichbarkeit von 204 aus bestätigt: `office.sysops.de:11434` und `:11435` beide HTTP 200. +- **Bekannte Lücke, dokumentiert im Ticket-Protokoll, nicht behoben:** Beide externen Ollama-Server laufen ohne `--embeddings`-Flag (fremde Infrastruktur, außerhalb unserer Kontrolle). Der Embedding-Teil des Vertrags ist deshalb nur über den Mock-Provider strukturell geprüft, nicht gegen einen echten Provider. + +**`workflow/` (neu):** `internal/statemachine` — `ProcessDefinition` (Zustände/Übergänge als Go-Wert; ein dateibasiertes, deklaratives Format ist ENG-03, noch nicht gebaut), `Engine` mit `Start`/`Transition`/`Get`/`History`. Instanz-Persistenz in Postgres mit optimistischem Sperren (`FOR UPDATE` + Versionsspalte). `internal/migrate` und `internal/testdb` sind eigenständige Kopien der DMS-Muster (Go-Module teilen keine `internal/`-Pakete). + +- **Geprüft auf 204** (Wegwerf-DB, `TEST_TENANT_DSN` aus der bestehenden Dev-Umgebung): `go build`/`vet`/`gofmt` sauber, `go test ./...` grün — inklusive 20 gleichzeitiger Übergänge ohne Fehlzustand (genau einer gewinnt) und einem echten Neustart-Test (zweite unabhängige Engine-Instanz übernimmt eine laufende Instanz korrekt). +- **Kein HTTP-Dienst in diesem Ticket** (ENG-02 Modul-Adapter-Schnittstelle folgt), nur die Go-Bibliothek plus Migrationen. Entsprechend noch kein Eintrag in `deploy/ports.tsv` nötig — vorgemerkt für ENG-02. + +**Regression, alle vier bestehenden Module unbetroffen:** `/` (Core), `dms/`, `archive/`, `mail/` bauen unverändert. `scripts/e2e-core-dms.sh`: 10/10. `scripts/gesamt-token-smoke.sh`: 45/45, Rückbau-Snapshot `IDENTISCH`. `check-port-defaults.sh`/`check-route-prefixes.sh`: ok. + +**Für später vorgemerkt:** Sobald ENG-02 (AI) bzw. ENG-02 (Workflow) einen HTTP-Dienst einführen, brauchen beide Module einen eigenen Port-Bereich in `deploy/ports.tsv` nach demselben Muster wie DMS (8600–8699) — noch nicht vergeben, weil in diesem Ticket kein Dienst entstand. + +Head jetzt `325e153` (von `8a935a4`), gepusht, PR #104 aktualisiert. Kein Merge nach `main`. Worktree `code-mergefinal8` entfernt nach Abschluss.