From 46a5b2cac48aa5b602c32737c4547832437f1568 Mon Sep 17 00:00:00 2001 From: Agent Zero Date: Sat, 22 Aug 2026 23:20:35 +0200 Subject: [PATCH] =?UTF-8?q?docs:=20411=20Architektur-Fehler=20=E2=80=94=20?= =?UTF-8?q?komplettes=20Code-Review=20aller=20Hauptmodule=20abgeschlossen?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/test-bugs.md | 132 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 132 insertions(+) diff --git a/docs/test-bugs.md b/docs/test-bugs.md index d050e7a..7649b10 100644 --- a/docs/test-bugs.md +++ b/docs/test-bugs.md @@ -3140,3 +3140,135 @@ Playwright E2E: 10 passed, 24 failed (BUG-011/012/013 — Mock-Daten und data-te - **Problem:** `dependencies=['permissions']` — aber tasks/workstream.py importiert von kommunikation. Nicht deklariert. Problem 29 bestätigt. - **Schweregrad:** Medium - **Status:** ⏳ Nicht gefixt + +### ARCH-390: App.tsx — Hardcoded deutsche Strings ohne i18n +- **Datei:** frontend/src/App.tsx:49,61,79 +- **Problem:** `'Sie sind offline...'`, `'Ihre Sitzung ist abgelaufen...'`, `'Zum Hauptinhalt springen'` — hardcoded deutsch ohne t(). +- **Schweregrad:** Low +- **Status:** ⏳ Nicht gefixt + +### ARCH-391: routes/index.tsx — TODO P2-F1 hardcoded plugin routes +- **Datei:** frontend/src/routes/index.tsx:1 +- **Problem:** `// TODO: P2-F1 — Replace hardcoded plugin routes with dynamic PluginRouteRenderer`. Statische Routes für /calendar, /dms, /mail, /reports etc. existieren parallel zu PluginRouteRenderer. Problem 6 bestätigt. +- **Schweregrad:** High +- **Status:** ⏳ Nicht gefixt + +### ARCH-392: routes/index.tsx — /kein-zugriff hardcoded deutscher Pfad +- **Datei:** frontend/src/routes/index.tsx:100 +- **Problem:** `path: '/kein-zugriff'` — hardcoded deutscher Pfad. Sollte `/no-access` sein. +- **Schweregrad:** Low +- **Status:** ⏳ Nicht gefixt + +### ARCH-393: routes/index.tsx — PluginRouteRenderer als catch-all ohne Permission-Check +- **Datei:** frontend/src/routes/index.tsx:270 +- **Problem:** `{ path: '*', element: {} }` — PluginRouteRenderer als catch-all ohne Permission-Check. Problem 7/28 bestätigt. +- **Schweregrad:** High +- **Status:** ⏳ Nicht gefixt + +### ARCH-394: routes/index.tsx — /wiki ohne PermissionRoute +- **Datei:** frontend/src/routes/index.tsx:260 +- **Problem:** `{ path: '/wiki', element: withSuspense() }` — keine PermissionRoute. Alle anderen Plugin-Seiten haben PermissionRoute. +- **Schweregrad:** Medium +- **Status:** ⏳ Nicht gefixt + +### ARCH-395: routes/index.tsx — /system-dashboard ohne PermissionRoute +- **Datei:** frontend/src/routes/index.tsx:261 +- **Problem:** `{ path: '/system-dashboard', element: withSuspense() }` — keine PermissionRoute. Sollte system:admin erfordern. +- **Schweregrad:** High +- **Status:** ⏳ Nicht gefixt + +### ARCH-396: routes/index.tsx — /tags ohne führenden Slash +- **Datei:** frontend/src/routes/index.tsx:255 +- **Problem:** `{ path: 'tags', ... }` — fehlender führender Slash. Alle anderen Paths haben `/`. Inkonsistent. +- **Schweregrad:** Low +- **Status:** ⏳ Nicht gefixt + +### ARCH-397: routes/index.tsx — communication:read Permission existiert nicht +- **Datei:** frontend/src/routes/index.tsx:245 +- **Problem:** `` — aber das kommunikation Plugin definiert `comm:read`, nicht `communication:read`. Problem 8 bestätigt. +- **Schweregrad:** High +- **Status:** ⏳ Nicht gefixt + +### ARCH-398: routes/index.tsx — activity:read Permission existiert nicht +- **Datei:** frontend/src/routes/index.tsx:257 +- **Problem:** `` — aber kein Plugin definiert `activity:read`. Problem 8 bestätigt. +- **Schweregrad:** High +- **Status:** ⏳ Nicht gefixt + +### ARCH-399: AppShell.tsx — showMessageSidebar prüft /ai-assistant aber AIAssistant wurde entfernt +- **Datei:** frontend/src/components/layout/AppShell.tsx:40 +- **Problem:** `location.pathname.startsWith('/ai-assistant')` — aber AIAssistant.tsx wurde in Phase 2 entfernt. Dead Code. +- **Schweregrad:** Low +- **Status:** ⏳ Nicht gefixt + +### ARCH-400: workspaceStore.ts — visibleModuleKeys gibt alle Module zurück wenn kein Workspace +- **Datei:** frontend/src/store/workspaceStore.ts:100 +- **Problem:** `if (!ctx?.workspace_id || !ctx?.modules?.length) return true` — wenn kein Workspace-Kontext, werden ALLE Module sichtbar. Problem 4 bestätigt. +- **Schweregrad:** High +- **Status:** ⏳ Nicht gefixt + +### ARCH-401: Sidebar.tsx — Statische UND dynamische Menü-Items (Doppelarchitektur) +- **Datei:** frontend/src/components/layout/Sidebar.tsx:54-60 +- **Problem:** `singleItems` ist hardcoded (dashboard, contacts, system-dashboard). Gleichzeitig kommen Plugin-Menüs via `usePluginStore(s => s.getAllMenuItems())`. Doppelarchitektur — Problem 6/22 bestätigt. +- **Schweregrad:** High +- **Status:** ⏳ Nicht gefixt + +### ARCH-402: Sidebar.tsx — dashboard:read Permission existiert nicht +- **Datei:** frontend/src/components/layout/Sidebar.tsx:100 +- **Problem:** `permission: item.to === '/dashboard' ? 'dashboard:read'` — aber kein Plugin definiert `dashboard:read`. Problem 8 bestätigt. +- **Schweregrad:** High +- **Status:** ⏳ Nicht gefixt + +### ARCH-403: PluginRouteRenderer.tsx — Keine Permission-Prüfung +- **Datei:** frontend/src/components/plugins/PluginRouteRenderer.tsx:18-50 +- **Problem:** PluginRouteRenderer rendert jede Plugin-Seite ohne Permission-Check. Problem 7/28 bestätigt. +- **Schweregrad:** High +- **Status:** ⏳ Nicht gefixt + +### ARCH-404: PluginLoader.tsx — @vite-ignore im Production-Build +- **Datei:** frontend/src/components/plugins/PluginLoader.tsx:108 +- **Problem:** `import(/* @vite-ignore */ importPath)` — @vite-ignore funktioniert im Dev-Modus, kann aber im Production-Build Probleme machen. Problem 19 bestätigt. +- **Schweregrad:** Medium +- **Status:** ⏳ Nicht gefixt + +### ARCH-405: PluginLoader.tsx — Hardcoded deutsche Strings ohne i18n +- **Datei:** frontend/src/components/plugins/PluginLoader.tsx:70,75,80 +- **Problem:** `'Plugin konnte nicht geladen werden'`, `'Erneut versuchen'`, `'Neu laden'` — hardcoded deutsch ohne t(). +- **Schweregrad:** Low +- **Status:** ⏳ Nicht gefixt + +### ARCH-406: PluginRouteRenderer.tsx — 'Page Not Found' hardcoded englisch +- **Datei:** frontend/src/components/plugins/PluginRouteRenderer.tsx:60 +- **Problem:** `'Page Not Found'` — hardcoded englisch ohne t(). +- **Schweregrad:** Low +- **Status:** ⏳ Nicht gefixt + +### ARCH-407: useAIContext.ts — .catch(() => {}) verschluckt Fehler +- **Datei:** frontend/src/hooks/useAIContext.ts:16 +- **Problem:** `.catch(() => {})` — Fehler beim AI Context Update werden still ignoriert. +- **Schweregrad:** Low +- **Status:** ⏳ Nicht gefixt + +### ARCH-408: usePermission.ts — Wildcard-Matching prüft Segment-Anzahl +- **Datei:** frontend/src/hooks/usePermission.ts:25 +- **Problem:** `if (pParts.length === rParts.length)` — Wildcard-Matching prüft Segment-Anzahl. `core:*:read` (3 Segmente) matcht nicht `contacts:read` (2 Segmente). Problem 9 bestätigt. +- **Schweregrad:** High +- **Status:** ⏳ Nicht gefixt + +### ARCH-409: contacts.ts — TODO P2-F9 dual API clients +- **Datei:** frontend/src/api/contacts.ts:1 +- **Problem:** `// TODO: P2-F9 — Consolidate dual API clients` — contacts.ts und unifiedContacts.ts existieren parallel. Doppelarchitektur. +- **Schweregrad:** Medium +- **Status:** ⏳ Nicht gefixt + +### ARCH-410: ai.ts — AIProvider.api_key in Type definiert +- **Datei:** frontend/src/api/ai.ts:20 +- **Problem:** `api_key: string` im AIProvider Interface — API Key sollte nie im Frontend Type definiert sein. Wird in Responses zurückgegeben. +- **Schweregrad:** High +- **Status:** ⏳ Nicht gefixt + +### ARCH-411: pluginManifests.ts — /plugins/active-manifests erfordert plugins:read +- **Datei:** frontend/src/api/pluginManifests.ts:10 +- **Problem:** `apiGet('/plugins/active-manifests')` — dieser Endpoint erfordert `plugins:read` (Problem 3). Normaler User ohne plugins:read bekommt keine Plugin-Menüs. +- **Schweregrad:** High +- **Status:** ⏳ Nicht gefixt