docs: 155 Architektur-Fehler (ARCH-001 bis ARCH-155) durch systematisches Code-Review dokumentiert

This commit is contained in:
Agent Zero
2026-08-22 22:41:57 +02:00
parent daaa88a53d
commit fb98e06cec
+108
View File
@@ -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