From 7e3ff9d5c7841e004773f83a8968881157e5f9ac Mon Sep 17 00:00:00 2001 From: Agent Zero Date: Sat, 22 Aug 2026 23:18:36 +0200 Subject: [PATCH] =?UTF-8?q?docs:=20375=20Architektur-Fehler=20=E2=80=94=20?= =?UTF-8?q?Routes+Services+Models+Schemas+AI+Workflows=20komplett=20gelese?= =?UTF-8?q?n?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/test-bugs.md | 78 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 78 insertions(+) diff --git a/docs/test-bugs.md b/docs/test-bugs.md index 48a2eee..01b9f51 100644 --- a/docs/test-bugs.md +++ b/docs/test-bugs.md @@ -2978,3 +2978,81 @@ Playwright E2E: 10 passed, 24 failed (BUG-011/012/013 — Mock-Daten und data-te - **Problem:** Bekannte Inkonsistenz: Address-Tabelle wird für Bank-Accounts genutzt, Contacts nutzen inline Address-Felder. Doppelarchitektur. - **Schweregrad:** Low - **Status:** ⏳ Nicht gefixt + +### ARCH-363: system_settings.py — SystemSettingsResponse gibt sensitive Felder zurück +- **Datei:** app/schemas/system_settings.py:50 +- **Problem:** SystemSettingsResponse gibt tax_number, vat_id, iban, bic in Response zurück. Route maskiert für non-admin, aber Schema erlaubt es. +- **Schweregrad:** Medium +- **Status:** ⏳ Nicht gefixt + +### ARCH-364: bank_account.py — BankAccountResponse gibt iban/bic zurück +- **Datei:** app/schemas/bank_account.py:35 +- **Problem:** BankAccountResponse gibt iban und bic in Response zurück. Sensitive Finanzdaten. +- **Schweregrad:** Medium +- **Status:** ⏳ Nicht gefixt + +### ARCH-365: agent_loop.py — Core→Plugin Imports (contracts, kommunikation, ai_assistant) +- **Datei:** app/ai/agent_loop.py:280, 300 +- **Problem:** Importiert `from app.plugins.builtins.contracts import get_contract_registry`, `from app.plugins.builtins.kommunikation.models import CommConversation`, `from app.plugins.builtins.ai_assistant.tool_registry import ToolRegistry`. Core→Plugin Verstöße. +- **Schweregrad:** High +- **Status:** ⏳ Nicht gefixt + +### ARCH-366: llm_client.py — Core→Plugin Import (get_contract) +- **Datei:** app/ai/llm_client.py:292 +- **Problem:** `from app.plugins.builtins.contracts import get_contract` — Core→Plugin Import. +- **Schweregrad:** High +- **Status:** ⏳ Nicht gefixt + +### ARCH-367: context_builder.py — Core→Plugin Import (ai_assistant contracts) +- **Datei:** app/ai/context_builder.py:224 +- **Problem:** `from app.plugins.builtins.ai_assistant.contracts import get_tool_registry` — Core→Plugin Import. +- **Schweregrad:** High +- **Status:** ⏳ Nicht gefixt + +### ARCH-368: agent_permissions.py — Core→Plugin Import (ai_assistant contracts) +- **Datei:** app/ai/agent_permissions.py:64 +- **Problem:** `from app.plugins.builtins.ai_assistant.contracts import get_tool_registry` — Core→Plugin Import. +- **Schweregrad:** High +- **Status:** ⏳ Nicht gefixt + +### ARCH-369: oversight.py — DB Model in ai/ Module statt models/ +- **Datei:** app/ai/oversight.py:50 +- **Problem:** `DecisionRecordDB` ist ein SQLAlchemy Model definiert in `app/ai/oversight.py` statt in `app/models/`. Sollte in models/ sein. +- **Schweregrad:** Medium +- **Status:** ⏳ Nicht gefixt + +### ARCH-370: agent_loop.py — `pass # agent_workstream removed` Dead Code +- **Datei:** app/ai/agent_loop.py:280 +- **Problem:** `pass # agent_workstream removed` — Dead Code Kommentar, Code wurde entfernt aber Kommentar bleibt. +- **Schweregrad:** Low +- **Status:** ⏳ Nicht gefixt + +### ARCH-371: engine.py — Core→Plugin Imports (contracts, kommunikation) +- **Datei:** app/workflows/engine.py:100, 110 +- **Problem:** Importiert `from app.plugins.builtins.contracts import get_contract_registry`, `from app.plugins.builtins.kommunikation.models import CommConversation`. Core→Plugin Verstöße. +- **Schweregrad:** High +- **Status:** ⏳ Nicht gefixt + +### ARCH-372: step_handlers.py — Core→Plugin Imports (mail, calendar, dms, search, automation contracts) +- **Datei:** app/workflows/step_handlers.py:200, 250, 300, 350, 400 +- **Problem:** Importiert direkt von `app.plugins.builtins.mail.contracts`, `calendar.contracts`, `dms.contracts`, `unified_search.contracts`, `automation.contracts`. Core→Plugin Verstöße. +- **Schweregrad:** High +- **Status:** ⏳ Nicht gefixt + +### ARCH-373: step_handlers.py — crm handler importiert contact_service direkt +- **Datei:** app/workflows/step_handlers.py:450 +- **Problem:** `from app.services.contact_service import create_contact, update_contact` — direkter Service-Import in Step Handler. Sollte über Contract oder generische Interface gehen. +- **Schweregrad:** Medium +- **Status:** ⏳ Nicht gefixt + +### ARCH-374: engine.py — acquire_lock fail-open +- **Datei:** app/workflows/engine.py:550 +- **Problem:** `return True # Fail open — allow processing without lock` — wenn Redis-Lock nicht akquiriert werden kann, wird der Workflow trotzdem ausgeführt. Das kann zu Race Conditions führen. +- **Schweregrad:** Medium +- **Status:** ⏳ Nicht gefixt + +### ARCH-375: engine.py — `from app.core.redis import get_redis` aber app/core/redis.py existiert nicht +- **Datei:** app/workflows/engine.py:540 +- **Problem:** `from app.core.redis import get_redis` — aber es gibt keine `app/core/redis.py`. Redis wird über `app.core.auth.get_redis` importiert. Das wird einen ImportError geben. +- **Schweregrad:** High +- **Status:** ⏳ Nicht gefixt