diff --git a/c-work/1-plan/2026-04-comcoach-greenfield-ia.md b/c-work/2-build/2026-04-comcoach-greenfield-ia.md similarity index 88% rename from c-work/1-plan/2026-04-comcoach-greenfield-ia.md rename to c-work/2-build/2026-04-comcoach-greenfield-ia.md index 891fd32..0370bd2 100644 --- a/c-work/1-plan/2026-04-comcoach-greenfield-ia.md +++ b/c-work/2-build/2026-04-comcoach-greenfield-ia.md @@ -1,5 +1,6 @@ - + + # ComCoach Greenfield-IA: TrainingModule + Sessions @@ -41,6 +42,16 @@ ComCoach erst zum vermarktbaren Produkt. (`frontend_nyla/src/pages/views/commcoach/CommcoachKeepAlive.tsx`) beibehalten -- die Voice-Session darf nicht gekillt werden bei Sidebar-Wechsel. +- **Bestehendes `goals`-Feld**: `CoachingContext.goals` existiert bereits + als `Optional[str]` (JSON-Array `[{id, text, status, createdAt}]`). + Beim Rename wird es zu Freitext umgewidmet; bestehende JSON-Werte per + Migration zu Plain-Text konvertieren (Ziel-Texte extrahieren). +- **Bestehendes `category`-Feld**: `CoachingContext.category` ist ein Enum + (`leadership`, `conflict`, `negotiation`, ..., `custom`). Beim Rename + wird `category` durch `moduleType` ersetzt. Migration: + alle bestehenden `category`-Werte -> `moduleType="coaching"`, altes + Feld `category` wird deprecated/entfernt. +- **Bestehendes `description`-Feld**: Bleibt erhalten, ergaenzt `goals`. ## Ziel und Nicht-Ziele @@ -110,7 +121,8 @@ flowchart LR | `title` | text | "Konfliktgespraeche", "JS-Grundkurs" | | `moduleType` | enum | `coaching` \| `training` \| `exam` \| `elearning` | | `personaId` | UUID? | Default-Persona fuer Sessions | -| `goals` | text | freie Zielbeschreibung | +| `description` | text | Kurzbeschreibung (besteht bereits) | +| `goals` | text | freie Zielbeschreibung (existiert als JSON, wird zu Freitext migriert) | | `kpiTargets` | jsonb | strukturierte Ziel-KPIs | | `status` | enum | `active` \| `archived` \| `completed` | | `createdAt` / `updatedAt` | timestamp | -- | @@ -144,6 +156,9 @@ flowchart LR | 2026-04-29 | Sidebar 5 Tabs (statt 4 mit Doppelung) | Use-Cases brauchen klare Trennung Assistent vs. Liste | | 2026-04-29 | Statistik im Settings-Tab raus, nur Dashboard | Doppelung weg | | 2026-04-29 | KeepAlive bleibt nur fuer Session-Tab (nicht Module/Dashboard) | Voice-Session muss persistieren, Listen koennen unmounten | +| 2026-05-03 | `goals`-Feld wird von JSON-Array zu Freitext migriert | Vereinfachung, JSON-Struktur war overengineered | +| 2026-05-03 | `category`-Enum entfaellt zugunsten von `moduleType` | Keine zwei Klassifizierungs-Dimensionen noetig | +| 2026-05-03 | Alle Zeilennummern gegen Codebase verifiziert, alle korrekt | Pre-Build-Audit | ## Umsetzungs-Checkliste @@ -152,7 +167,12 @@ flowchart LR - [ ] `datamodelCommcoach.py`: - Klasse `CoachingContext` -> `TrainingModule` (Rename, alle FKs in Childs `contextId` -> `moduleId`). - - Neue Felder `kpiTargets jsonb`, `moduleType enum`, `goals text`. + - Neues Feld `kpiTargets jsonb`, neues Feld `moduleType enum`. + - Bestehendes `goals` (JSON-Array) -> Freitext migrieren. + - Bestehendes `category` (Enum) -> entfernen (ersetzt durch + `moduleType`). Bestehende Werte per Migration alle auf + `moduleType="coaching"`. + - `description` bleibt unveraendert. - [ ] DB-Migration: `script_db_rename_coaching_context_to_training_module.py`. Tabellenname Postgres-Rename, FK-Spalte `contextId` -> `moduleId` auf allen abhaengigen Tabellen (`CoachingSession`, diff --git a/c-work/1-plan/2026-04-teamsbot-greenfield-ia-and-live-update.md b/c-work/2-build/2026-04-teamsbot-greenfield-ia-and-live-update.md similarity index 97% rename from c-work/1-plan/2026-04-teamsbot-greenfield-ia-and-live-update.md rename to c-work/2-build/2026-04-teamsbot-greenfield-ia-and-live-update.md index b92a5ae..87f922f 100644 --- a/c-work/1-plan/2026-04-teamsbot-greenfield-ia-and-live-update.md +++ b/c-work/2-build/2026-04-teamsbot-greenfield-ia-and-live-update.md @@ -1,5 +1,6 @@ - + + # TeamsBot Greenfield-IA: MeetingModule + Live-Update-Fixes @@ -38,6 +39,9 @@ TeamsBot zum verlaesslichen Meeting-Tool. - Backend `stats`-Payload bereits vorhanden, nur nicht gebunden. - `MeetingModule` ist additiv -- alte `TeamsbotSession`-Eintraege bekommen `moduleId` per Migration (Default-Modul "Adhoc"). +- **Namenskonvention**: `TeamsbotSession` hat `startedByUserId` (nicht + `userId`/`ownerUserId`). `MeetingModule.ownerUserId` ist konsistent + mit dem bestehenden Pattern. ## Ziel und Nicht-Ziele @@ -177,6 +181,7 @@ flowchart LR | 2026-04-29 | 5 Tabs (statt 3) | Use-Cases brauchen klare Trennung Assistent/Module/Live | | 2026-04-29 | SSE bleibt (kein WS) | Architektur stabil, Browser-Bot nutzt WS, Frontend nicht | | 2026-04-29 | Dashboard-Counts: Adaptive Polling jetzt, SSE-Channel als Follow-up | Pragmatisch, schnell sichtbar | +| 2026-05-03 | Alle Zeilennummern gegen Codebase verifiziert, alle korrekt | Pre-Build-Audit | ## Umsetzungs-Checkliste diff --git a/c-work/_CHANGELOG.md b/c-work/_CHANGELOG.md index f9d42cf..69a0b53 100644 --- a/c-work/_CHANGELOG.md +++ b/c-work/_CHANGELOG.md @@ -14,6 +14,7 @@ Skip: reine Refactors, Formatting, Lint, Dep-Bumps, Test-only, Wiki-Tippfehler. ## 2026-05-03 +- 2026-05-03 | docs | wiki | **ComCoach + TeamsBot Greenfield-IA: Plaene verifiziert und in `2-build/` verschoben.** Alle Zeilennummern und Code-Referenzen gegen aktuelle Codebase geprueft (alle korrekt). ComCoach-Plan ergaenzt: `goals`-Feld existiert bereits (JSON->Freitext-Migration), `category`-Enum wird durch `moduleType` ersetzt, `description`-Feld bleibt. TeamsBot-Plan ergaenzt: Namenskonvention `startedByUserId` dokumentiert. Beide Plaene: ``, ``. (c-work: `2-build/2026-04-comcoach-greenfield-ia.md`, `2-build/2026-04-teamsbot-greenfield-ia-and-live-update.md`) - 2026-05-03 | fix | gateway | **AI Step Output: `context` Feld zeigte Prompt statt Input-Context.** `actionNodeExecutor.py` baute `out["context"]` falsch aus `promptText + extractedContext` zusammen. Wenn AI ein Binary-Dokument erzeugte (z.B. Excel), war `extractedContext` leer und `context` wurde identisch mit `prompt`. Jetzt wird der tatsaechliche aufgeloeste `context`-Input-Parameter gespeichert. - 2026-05-03 | fix | frontend-nyla | **FormGeneratorTree: Auto-Scroll bei Expand am unteren Bildschirmrand.** Wenn ein Gruppenobjekt in der unteren Haelfte des sichtbaren Bereichs expanded wird, scrollt der Container den Parent-Node zur Mitte, damit Kinder ohne manuelles Scrollen sichtbar sind. - 2026-05-03 | fix | frontend-nyla | **Automation > Workspace Tab: Polling fuer laufende Runs.** `_WorkspaceTab` pollt `fetchWorkspaceRunDetail` alle 3s solange Run-Status nicht terminal. Stoppt automatisch bei completed/failed/cancelled.