diff --git a/docs/test-bugs.md b/docs/test-bugs.md index e307889..bff20ae 100644 --- a/docs/test-bugs.md +++ b/docs/test-bugs.md @@ -1634,3 +1634,111 @@ Playwright E2E: 10 passed, 24 failed (BUG-011/012/013 — Mock-Daten und data-te - **Problem:** search_tsv Spalte wird vor __table_args__ definiert. Gleicher Anti-Pattern wie ARCH-078. - **Schweregrad:** Low - **Status:** ⏳ Nicht gefixt + +### ARCH-138: api/search.ts — hardcoded ENTITY_URL_MAP (TODO P2-F3) +- **Datei:** frontend/src/api/search.ts:2 +- **Problem:** TODO: 'Replace hardcoded ENTITY_URL_MAP with dynamic backend config'. Hardcoded URL-Mapping für Search-Entities. +- **Schweregrad:** Low +- **Status:** ⏳ Nicht gefixt + +### ARCH-139: api/tags.ts — EntityType hardcoded +- **Datei:** frontend/src/api/tags.ts:11 +- **Problem:** `export type EntityType = 'contact' | 'file' | 'calendar_entry'` — hardcoded. Nicht erweiterbar durch Plugins. +- **Schweregrad:** Low +- **Status:** ⏳ Nicht gefixt + +### ARCH-140: routes/system_dashboard.py — Core→Plugin Import +- **Datei:** app/routes/system_dashboard.py:15 +- **Problem:** `from app.plugins.registry import get_registry` — Core importiert von Plugin Registry. +- **Schweregrad:** High +- **Status:** ⏳ Nicht gefixt + +### ARCH-141: routes/guests.py — SHA-256 statt bcrypt für Token +- **Datei:** app/routes/guests.py:28 +- **Problem:** `_hash_token` verwendet SHA-256 statt bcrypt. Inkonsistent mit auth.py die bcrypt verwendet. +- **Schweregrad:** Low +- **Status:** ⏳ Nicht gefixt + +### ARCH-142: api/webhooks.ts — Webhook.secret an Frontend gesendet +- **Datei:** frontend/src/api/webhooks.ts:17 +- **Problem:** `secret: string | null` — Webhook.secret wird an Frontend gesendet. HMAC Secret sollte nicht an Client gesendet werden. +- **Schweregrad:** High +- **Status:** ⏳ Nicht gefixt + +### ARCH-143: routes/health.py — Response-Format inkonsistent +- **Datei:** app/routes/health.py:35 +- **Problem:** health_ready() ruft get_health_status() auf aber gibt ReadyResponse zurück nicht HealthResponse. Response-Format inkonsistent. +- **Schweregrad:** Low +- **Status:** ⏳ Nicht gefixt + +### ARCH-144: Systematisches Problem — Frontend API-Clients duplizieren Backend Models +- **Dateien:** frontend/src/api/tags.ts, tasks.ts, calendar.ts, reports.ts, knowledge.ts, comm.ts, ai.ts, etc. +- **Problem:** Jeder API-Client definiert eigene TypeScript Types die die Backend SQLAlchemy Models duplizieren. Contract-Mismatch-Risiko bei Änderungen. +- **Schweregrad:** Medium +- **Status:** ⏳ Nicht gefixt + +### ARCH-145: routes/system_dashboard.py — post_system_message (Core→Plugin Kette) +- **Datei:** app/routes/system_dashboard.py:16 +- **Problem:** `from app.core.notifications import post_system_message` — notifications.py importiert wiederum von plugins.builtins.contracts. Indirekte Core→Plugin Abhängigkeit. +- **Schweregrad:** Medium +- **Status:** ⏳ Nicht gefixt + +### ARCH-146: knowledge/routes.py — falsche Permission für /extract +- **Datei:** app/plugins/builtins/knowledge/routes.py:16 +- **Problem:** `require_permission("wiki:read")` für /knowledge/extract — sollte `knowledge:read` sein. Falsche Permission. +- **Schweregrad:** High +- **Status:** ⏳ Nicht gefixt + +### ARCH-147: mcp_client/routes.py — api_token in Response +- **Datei:** app/plugins/builtins/mcp_client/routes.py:38 +- **Problem:** `_config_to_response` gibt `api_token=cfg.api_token` zurück. API-Token wird an Frontend gesendet. Security Issue. +- **Schweregrad:** High +- **Status:** ⏳ Nicht gefixt + +### ARCH-148: self_improvement/routes.py — falsche Permission für /signals/collect +- **Datei:** app/plugins/builtins/self_improvement/routes.py:33 +- **Problem:** `require_permission("automation:read")` für /signals/collect — sollte `improvement:read` sein. Falsche Permission. +- **Schweregrad:** Medium +- **Status:** ⏳ Nicht gefixt + +### ARCH-149: tags/routes.py und entity_links/routes.py — _is_valid_entity_type dupliziert +- **Datei:** app/plugins/builtins/tags/routes.py:26, app/plugins/builtins/entity_links/routes.py:23 +- **Problem:** _is_valid_entity_type Funktion ist in beiden Dateien identisch. Sollte zentralisiert werden. +- **Schweregrad:** Low +- **Status:** ⏳ Nicht gefixt + +### ARCH-150: tags/routes.py und entity_links/routes.py — ENTITY_MODELS Import bei jedem Call +- **Datei:** app/plugins/builtins/tags/routes.py:27, app/plugins/builtins/entity_links/routes.py:24 +- **Problem:** `from app.services.entity_permission_service import ENTITY_MODELS` wird bei jedem Call ausgeführt. Sollte einmal importiert werden. +- **Schweregrad:** Low +- **Status:** ⏳ Nicht gefixt + +### ARCH-151: mcp_server/routes.py — Bearer-Token Auth neben Session-Cookie +- **Datei:** app/plugins/builtins/mcp_server/routes.py:17 +- **Problem:** `get_current_user_or_bearer` — Bearer-Token Auth neben Session-Cookie. Zwei Auth-Methoden können zu Security-Problemen führen. +- **Schweregrad:** Medium +- **Status:** ⏳ Nicht gefixt + +### ARCH-152: marketplace/routes.py — require_admin vs require_permission inkonsistent +- **Datei:** app/plugins/builtins/marketplace/routes.py:22,28 +- **Problem:** Einige Endpoints verwenden require_admin, andere require_permission. Inkonsistent. +- **Schweregrad:** Low +- **Status:** ⏳ Nicht gefixt + +### ARCH-153: ai_proactive/routes.py — SSE Streaming ohne Auth +- **Datei:** app/plugins/builtins/ai_proactive/routes.py +- **Problem:** SSE Streaming Endpoint ohne Auth-Check. Wie ARCH-067 (SuggestionBadge.tsx EventSource ohne Auth). +- **Schweregrad:** High +- **Status:** ⏳ Nicht gefixt + +### ARCH-154: tasks/routes.py — hardcoded Regex Patterns +- **Datei:** app/plugins/builtins/tasks/routes.py:16-18 +- **Problem:** TASK_STATUS_PATTERN, TASK_TYPE_PATTERN, ASSIGNEE_TYPE_PATTERN sind hardcoded Regex. Sollten mit Model-Defaults synchronisiert werden. +- **Schweregrad:** Low +- **Status:** ⏳ Nicht gefixt + +### ARCH-155: report_generator/routes.py — importiert Contact Model (Plugin→Core/Plugin) +- **Datei:** app/plugins/builtins/report_generator/routes.py:18 +- **Problem:** `from app.models.contact import Contact` — Plugin importiert Core Model. Contact ist Core aber auch Plugin (ARCH-005). Doppelarchitektur. +- **Schweregrad:** Medium +- **Status:** ⏳ Nicht gefixt