# ui-nyla Legacy-Cleanup — Kein toter Code ## Beschreibung und Kontext Nach Abschluss des Layout-Foundation-Plans (`c-work/4-done/2026-06-layout-foundation.md`) bleiben **vier konkrete Legacy-Artefakte** in ui-nyla, die weder produktiv genutzt noch sauber benannt sind. Sie erzeugen Verwirrung, ESLint-Rauschen und falsche Erwartungen („Feature existiert“). **Prinzip:** Kein Legacy-Code. Wenn etwas nicht produktiv genutzt wird → löschen. Wenn etwas produktiv genutzt wird → korrekt benennen und dem Owner-Modul zuordnen. **Explizit NICHT in diesem Plan** (eigene Pläne, bleiben unberührt): - Modal-Konsolidierung → `c-work/1-plan/2026-06-modal-consolidation.md` - SolutionsView / Solution-Schicht L3/L4 → `c-work/0-ideas/2026-06-CustomerCases-step3-features-plan.md` (A1) ## Ist-Zustand (Verifikation 2026-06-10) | Artefakt | Pfad | Befund | |----------|------|--------| | `work-around/pek/` | `ui-nyla/work-around/` (6 Dateien) | **Nicht importiert.** Echtes PEK lebt in `src/pages/views/realestate/pek/`. Ordner war Prototyp-Duplikat; `work-around/chatbot.ts` wurde im PO-Cleanup-Plan bereits als löschen vorgesehen, `pek` wurde übersehen. | | `chatworkflow` Feature-UI | `FeatureView.tsx` (inline Placeholder), `pageRegistry.tsx`, `featuresApi.ts` (MOCK) | **Kein Backend-Feature** (`platform-core/modules/features/` hat kein `chatworkflow`). Nur Frontend-Ghost + Dev-Mock. Ersetzt durch **WorkflowAutomation** (`WorkflowAutomationHubPage`, Plan `4-done/2026-06-automation-system-component.md`). | | `CommcoachDossierView.module.css` | `commcoach/CommcoachDossierView.module.css` | **Keine saubere Lösung.** TSX wurde gelöscht, CSS-Dateiname irreführend. Einziger Import: `CommcoachSessionView.tsx` (Session-Chat-Styles). | | `useWorkflows.ts` | `src/hooks/useWorkflows.ts` | **Orphan** — nirgends importiert. Relikt alter ChatWorkflow-Feature-UI, nutzt teils `workflowAutomationApi`. | ### Wichtige Abgrenzung (NICHT löschen) | Name | Was es ist | Warum behalten | |------|------------|----------------| | `ChatWorkflow` (Datamodel) | `platform-core/modules/datamodels/datamodelChat.py` | Workflow-Engine-Tests und `workflowManager.py` — **anderes Konzept** als Feature-Code `chatworkflow` | | `WorkflowAutomation` | Systemkomponente, `/workflow-automation` | Produktiver Ersatz für Workflow-UI | | `src/pages/views/realestate/pek/` | Geroutete PEK-Subkomponenten | Aktiv via `RealEstatePekView.tsx` | ## Entscheidungen | Datum | Entscheidung | Begründung | |-------|-------------|------------| | 2026-06-10 | `chatworkflow` Feature-UI vollständig entfernen (kein Redirect-Stub) | WorkflowAutomation ist der Ersatz; Placeholder erzeugt falsche Navigation | | 2026-06-10 | `work-around/` komplett löschen | Nicht in `src/`, keine Imports, nur ESLint-Lärm | | 2026-06-10 | Dossier-CSS → `CommcoachSessionView.module.css` umbenennen | Dateiname = Owner-Komponente; schliesst Greenfield-IA Punkt ab | | 2026-06-10 | `useWorkflows.ts` löschen wenn grep 0 Imports | Orphan ohne Caller | ## Phasen | Phase | Inhalt | Aufwand | |-------|--------|---------| | **A** | `work-around/` löschen | klein | | **B** | `chatworkflow` Feature-UI + Mock entfernen | mittel | | **C** | Commcoach Dossier-CSS abschliessen | klein | | **D** | grep-Gate + Orphan-Sweep | klein | Reihenfolge: **A → B → C → D** (unabhängig voneinander, aber D am Ende als Gate). --- ## Phase A — `work-around/` entfernen ### Warum noch da? - Im PO-Cleanup (`4-done/2026-06-po-cleanup-neutralization-docgen.md`) stand nur `work-around/chatbot.ts` — **`pek` wurde nicht gelistet**. - Layout-Phase 7 hat `src/pages` bereinigt, nicht Ordner ausserhalb `src/`. - ESLint scannt `**/*.{ts,tsx}` ohne `work-around`-Ignore → ~20 Fehler aus kaputten Imports (`../../../../hooks/usePek`). ### Checkliste - [x] Verzeichnis `ui-nyla/work-around/` komplett löschen (`pek.ts`, `pek/*`) - [x] `grep work-around` im Repo → 0 Treffer in Code (Wiki-Historie darf bleiben) - [x] Optional: `eslint.config.js` — `ignores: ['dist', 'work-around']` **nicht** nötig wenn Ordner weg ist - [x] `npx tsc --noEmit` in ui-nyla --- ## Phase B — `chatworkflow` Feature-UI entfernen ### Befund: wird im UI nicht produktiv genutzt - Backend: **kein** Feature-Modul `chatworkflow` in `platform-core/modules/features/`. - Frontend: drei `PlaceholderView`-Komponenten inline in `FeatureView.tsx`. - Mock in `featuresApi.ts` (`MOCK_WORKFLOW_PERMISSIONS`, `MOCK_RESPONSE`) — `USE_MOCK = false`, aber Dead-Code bleibt. - Icon-Key `feature.chatworkflow` in `pageRegistry.tsx`. - Falls alte Mandate noch `FeatureInstance` mit `featureCode=chatworkflow` in der DB haben: Navigation zeigt ggf. noch einen Eintrag → **kein** UI mehr dahinter (404/NotFound). ### Checkliste Frontend (löschen / bereinigen) - [x] `FeatureView.tsx`: `ChatworkflowDashboard`, `ChatworkflowRuns`, `ChatworkflowFiles`, `PlaceholderView` (falls nur für chatworkflow), Map-Eintrag `chatworkflow: { ... }` - [x] `config/pageRegistry.tsx`: `'feature.chatworkflow'` - [x] `api/featuresApi.ts`: `MOCK_WORKFLOW_PERMISSIONS`, chatworkflow-Einträge in `MOCK_RESPONSE` und `fetchAvailableFeatures` Mock - [x] `types/mandate.ts`: Kommentar-Beispiele `chatworkflow` → neutrales Beispiel (`workspace`) - [x] `hooks/useWorkflows.ts`: **löschen** (grep 0 Imports vorher/nachher verifizieren) - [x] `ui-nyla/docs/MONETARISIERUNG_*.md`: Zeilen zu `chatworkflow` entfernen - [x] `grep chatworkflow` in `ui-nyla/src` → **0 Treffer** ### Checkliste Backend / Daten (optional, falls Instanzen existieren) Nur wenn `GET /api/features/my` noch `chatworkflow`-Instanzen liefert: - [x] Admin: bestehende `FeatureInstance` mit `featureCode=chatworkflow` identifizieren (SQL oder AdminFeatureAccess) - [x] Entscheidung pro Instanz: löschen oder auf WorkflowAutomation migrieren (Daten-Migration **nicht** in diesem Plan — nur UI-Entfernung) - [x] Demo-Configs: prüfen ob Investor-Demo noch chatworkflow-Instanzen seeded (`investorDemo2026.py` — aktuell nur `ChatWorkflow`-Datensätze beim Cleanup, nicht Feature-Registration) ### Nach Abschluss Nutzer mit altem Bookmark `/feature/.../chatworkflow/...` sehen `NotFound` — **gewollt**, kein Redirect-Stub. --- ## Phase C — Commcoach Dossier vollständig abschliessen ### Ist das eine saubere Lösung? **Nein.** `CommcoachDossierView.module.css` von einer gelöschten Komponente zu importieren ist technische Schuld — funktioniert, aber irreführend und blockiert den offenen Punkt in `c-work/4-done/2026-04-comcoach-greenfield-ia.md`: > `CommcoachDossierView` ENTFERNEN nach Migration aller Inhalte. TSX ist weg; CSS-Rename fehlt noch. ### Ziel-Zustand ``` commcoach/ CommcoachSessionView.tsx CommcoachSessionView.module.css ← Session-Chat/Voice/Agent-Activity (ex Dossier) Commcoach.module.css ← Shared (bereits importiert als sessionStyles) ``` ### Checkliste - [x] `CommcoachDossierView.module.css` → `CommcoachSessionView.module.css` umbenennen - [x] In `CommcoachSessionView.tsx`: Import anpassen (`import styles from './CommcoachSessionView.module.css'`) - [x] Ungenutzte CSS-Klassen im File entfernen (nur Klassen behalten, die `CommcoachSessionView` nutzt — grep `styles.` in TSX) - [x] Klasse `.dossier` → `.sessionRoot` umbenennen (Semantik, optional aber empfohlen) - [x] `grep CommcoachDossierView` in `ui-nyla/src` → 0 Treffer - [x] `wiki/b-reference/platform-core/features/commcoach.md`: `CommcoachDossierView` durch `CommcoachSessionView` ersetzen - [x] Checkbox in `4-done/2026-04-comcoach-greenfield-ia.md` Phase 3 abhaken (Verweis auf diesen Plan) --- ## Phase D — Verifikation (grep-Gate) - [x] `npx tsc --noEmit` — 0 Fehler - [x] `grep -r "work-around" ui-nyla/` — 0 Treffer (ausser ggf. Kommentar, besser 0) - [x] `grep -r "chatworkflow" ui-nyla/src/` — 0 Treffer - [x] `grep -r "CommcoachDossierView" ui-nyla/src/` — 0 Treffer - [x] `grep -r "useWorkflows" ui-nyla/src/` — 0 Treffer - [x] Manuell: CommCoach Session-Tab öffnen — Layout unverändert (Visuell-Check Voice/Chat) - [x] Manuell: Navigation — kein `chatworkflow`-Feature mehr sichtbar --- ## Akzeptanzkriterien | # | Kriterium | Prio | |---|-----------|------| | 1 | Given grep in `ui-nyla/src` When nach Abschluss Then 0 Treffer `chatworkflow`, `CommcoachDossierView`, `work-around` | must | | 2 | Given `ui-nyla/work-around/` When nach Phase A Then Verzeichnis existiert nicht | must | | 3 | Given CommCoach Session When Seite lädt Then Chat/Voice/Agent-UI unverändert funktional | must | | 4 | Given `npx tsc --noEmit` When nach Abschluss Then 0 Fehler | must | | 5 | Given ESLint auf ui-nyla When nach Abschluss Then keine Fehler mehr aus `work-around/pek` | should | ## Links - Layout-Plan (done): `c-work/4-done/2026-06-layout-foundation.md` (Dead-Code-Tabelle) - ComCoach Greenfield (offener Dossier-Punkt): `c-work/4-done/2026-04-comcoach-greenfield-ia.md` - PO-Cleanup (Vorgänger work-around/chatbot): `c-work/4-done/2026-06-po-cleanup-neutralization-docgen.md` - WorkflowAutomation (Ersatz chatworkflow): `c-work/4-done/2026-06-automation-system-component.md` - Modal-Plan (separat): `c-work/1-plan/2026-06-modal-consolidation.md` - Solutions (separat): `c-work/0-ideas/2026-06-CustomerCases-step3-features-plan.md` ## Abschluss - [ ] Alle Phasen A–D abgeschlossen - [ ] CHANGELOG-Eintrag in `c-work/_CHANGELOG.md` - [ ] `commcoach.md` aktualisiert (`lastReviewed` / `verifiedAgainst`) - [ ] Dieses Dokument → `c-work/4-done/` verschoben