docs(progress): Weitermachen-Uebergabe auf Stand 2026-09-15 aktualisiert — Bauplan + Session-Lektionen fuer jede KI

This commit is contained in:
Agent Zero
2026-09-15 23:35:07 +02:00
parent b1c8891ee0
commit 2d3ee216ea
+17 -4
View File
@@ -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/<modul>.ts` (TanStack-Hooks) oder bestehenden Client erweitern → `pages/<Modul>.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)