From 2d3ee216eaf05759a1403bbfc7df1dd8447ea47a Mon Sep 17 00:00:00 2001 From: Agent Zero Date: Tue, 15 Sep 2026 23:35:07 +0200 Subject: [PATCH] =?UTF-8?q?docs(progress):=20Weitermachen-Uebergabe=20auf?= =?UTF-8?q?=20Stand=202026-09-15=20aktualisiert=20=E2=80=94=20Bauplan=20+?= =?UTF-8?q?=20Session-Lektionen=20fuer=20jede=20KI?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- PROGRESS.md | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/PROGRESS.md b/PROGRESS.md index 4d71d90..a252e7a 100644 --- a/PROGRESS.md +++ b/PROGRESS.md @@ -79,11 +79,11 @@ Audit-Findings sind behoben (13 Backend + 4 Frontend). Danach Phase O UI-Overhau Phase P Notizen-App oder UI-Backlog-Module 2-16. -## Weitermachen (2026-09-13, Übergabe — für das nächste Modell/jede KI) +## Weitermachen (2026-09-15, Übergabe — für das nächste Modell/jede KI) -**Produktion läuft stabil** (HEAD 5ecadd5 = origin/main, 0 ungepushte Commits, Health healthy ~28ms, Alembic 0144, RLS 113 Tabellen, Worker up). Alle Forgejo-Issues bis #378 geschlossen. +**Produktion läuft stabil** (HEAD b1c8891 = origin/main, 0 ungepushte Commits, Health healthy, Alembic 0144, RLS 113 Tabellen, Worker up). Alle Forgejo-Issues bis #385 geschlossen. Outbox sauber: 158 Events published (Webhook-Fix #380). -**2026-09-13/14 abgeschlossen:** (1) Externer Architektur-Audit verifiziert — alle 17 Findings bestätigt, 13 Backend-Fixes (Commit 4a25ac1, #370). (2) PHASE Q KOMPLETT — Frontend-Plugin-Architektur: generierte Komponenten-Map (scripts/generate_component_map.py, 40 Eintraege, Fail-Hard bei Ghosts) ersetzt STATIC_COMPONENT_MAP + widgetRegistry; Plugin-Routen/Settings nur noch aus Manifesten via PluginRouteRenderer (variant pages/settings). (3) UI-Backlog Module 1-9 erledigt, siehe Tabelle oben (Commits + Issues #369, #372-#379). +**2026-09-13 bis 15 abgeschlossen:** (1) Externer Architektur-Audit verifiziert — alle 17 Findings bestätigt, 13 Backend-Fixes (Commit 4a25ac1, #370). (2) PHASE Q KOMPLETT — Frontend-Plugin-Architektur: generierte Komponenten-Map (scripts/generate_component_map.py, jetzt 42 Eintraege, Fail-Hard bei Ghosts) ersetzt STATIC_COMPONENT_MAP + widgetRegistry; Plugin-Routen/Settings nur noch aus Manifesten via PluginRouteRenderer (variant pages/settings). (3) Drei Produktions-Bugfixes 2026-09-14 (siehe Bugfix-Tabelle unten): Webhook-JSONB-Containment (#380 — 158 failed Events live repariert), Zustands-Selector-Spinner-Hang (#381 — "Dashboard loads forever" aufgeklärt+gefixt), Consumer-Registry-qualname. (4) UI-Backlog Module 1-13 erledigt, siehe Tabelle oben (Commits + Issues #369, #372-#385) — davon Module 11-13 an einem Tag (2026-09-15): Graph-RAG #383, Companies #384, Public-Share #385. **OFFENE THREADS (alles Weitere hängt hier, nichts geht verloren):** 1. **UI-Backlog Module 14-16** (Reihenfolge nach Business-Nutzen): 14 Guests (3) → 15 External-Agent (3) → 16 Ownership-Transfer (1). Muster + Architektur-Regel: siehe Roadmap-Abschnitt "UI-Backlog" (Plugin-Module via Manifest, Core-Module statisch; Referenz: Marketplace=Plugin, Approvals=Core). @@ -105,9 +105,22 @@ Phase P Notizen-App oder UI-Backlog-Module 2-16. 2. Suite-Isolation: kombinierte Test-Runs quicken mit "relation users does not exist" (Solo-Runs grün) 3. AppShell vitest worker OOM bei Solo/Combo-Runs +**Modul-Bauplan (bewaehrtes Muster, Module 14-16 direkt anwendbar):** Backend lesen (Routes/Schemas/Permissions) → `api/.ts` (TanStack-Hooks) oder bestehenden Client erweitern → `pages/.tsx` → Registrierung (Plugin: manifest plugin.py page_routes+menu_items + generate_component_map.py + ICON_MAP-Icon; Core: routes/index.tsx + Settings.tsx; oeffentlich: statische Route ausserhalb ProtectedRoute) → i18n de/en (Python-Patch-Skript, JSON-Roundtrip pruefen) → Vitest → tsc → Build → Deploy (frontend-only wenn kein plugin.py; full bei plugin.py) → Live-Verifikation (API curl + echter-Login Playwright DOM-Check) → Forgejo-Issue (Label 5=task, danach schliessen) → PROGRESS.md + Roadmap-Zeile. + +**Session-Lektionen fuer Tests/Implementation (2026-09-15, wiederkehrende Stolperfallen):** +- Vitest: Mutation-Mocks mit `vi.hoisted()` definieren (Top-Level const = ReferenceError durch Hoisting) +- TanStack Query v5 ruft `mutationFn(variable, context)` — Assertion auf `mock.calls[0][0]`, nicht `toHaveBeenCalledWith(...)` +- Query-Ergebnisse asynchron: `await screen.findByTestId(...)` statt synchronem getByTestId +- `window.confirm`: Direkt-Zuweisung im beforeEach (`window.confirm = () => true`), spyOn nur in-Test +- Hook-Mocks (`useXxx: () => (...)`) sind robuster als queryFn-Mocks — synchron, kein isLoading-Handling +- text_editor verschluckt gelegentlich JSX-Kommentar-Schliessungen (`*/` ohne `}`): vor tsc mit `grep '{/*'` pruefen +- Frontend-Catch: der Client-Interceptor wirft `ApiError` mit `.status` auf Top-Level — NICHT `err.response.status` lesen +- i18n: Block ggf. bereits vorhanden (ungenutzte Alt-Keys) — nur fehlende Keys mergen, nicht ueberschreiben +- Oeffentliche Seiten (ohne Login): statische Route analog `/guest/*`, NIEMALS in die AppShell/ProtectedRoute + **Wichtig:** AGENTS.md-Regeln zuerst lesen (§0.0 Sub-Agents nur für einfache Jobs, §0.2 auf bestehendem Code aufbauen, §10 'PROGRESS.md als Source of Truth'). -> **Letztes Update:** 2026-09-14 +> **Letztes Update:** 2026-09-15 ## Produktions-Bugfixes (2026-09-14)