From 4f4c1c25be68649681dbadf2dea1cc069f4e3a9d Mon Sep 17 00:00:00 2001
From: ValueOn AG
Date: Sun, 3 May 2026 22:58:29 +0200
Subject: [PATCH] comcoach and teamsbot redesign started
---
.../2026-04-comcoach-greenfield-ia.md | 26 ++++++++++++++++---
...-teamsbot-greenfield-ia-and-live-update.md | 7 ++++-
c-work/_CHANGELOG.md | 1 +
3 files changed, 30 insertions(+), 4 deletions(-)
rename c-work/{1-plan => 2-build}/2026-04-comcoach-greenfield-ia.md (88%)
rename c-work/{1-plan => 2-build}/2026-04-teamsbot-greenfield-ia-and-live-update.md (97%)
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.