docs: 411 Architektur-Fehler — komplettes Code-Review aller Hauptmodule abgeschlossen

This commit is contained in:
Agent Zero
2026-08-22 23:20:35 +02:00
parent ae46812895
commit 46a5b2cac4
+132
View File
@@ -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: <ErrorBoundary>{<PluginRouteRenderer />}</ErrorBoundary> }` — 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(<WikiPage />) }` — 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(<SystemDashboardPage />) }` — 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:** `<PermissionRoute permission="communication:read">` — 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:** `<PermissionRoute permission="activity:read">` — 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