docs: 411 Architektur-Fehler — komplettes Code-Review aller Hauptmodule abgeschlossen
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user