From dfd22916ef8f620b44e47d2b28b635ce581defc8 Mon Sep 17 00:00:00 2001 From: Agent Zero Date: Sat, 22 Aug 2026 23:17:48 +0200 Subject: [PATCH] =?UTF-8?q?docs:=20362=20Architektur-Fehler=20=E2=80=94=20?= =?UTF-8?q?alle=20Routes+Services+Models=20komplett=20gelesen?= 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 25c04d7..48a2eee 100644 --- a/docs/test-bugs.md +++ b/docs/test-bugs.md @@ -2900,3 +2900,81 @@ Playwright E2E: 10 passed, 24 failed (BUG-011/012/013 — Mock-Daten und data-te - **Problem:** assign_user_to_tenant hat kein Audit-Log. User-Tenant-Zuweisung ist sicherheitsrelevant. - **Schweregrad:** High - **Status:** ⏳ Nicht gefixt + +### ARCH-350: contact.py — indexed_at Spalte vor __table_args__ +- **Datei:** app/models/contact.py:50 +- **Problem:** `indexed_at` Spalte wird vor `__table_args__` definiert — SQLAlchemy Anti-Pattern. +- **Schweregrad:** Low +- **Status:** ⏳ Nicht gefixt + +### ARCH-351: contact.py — IBAN/BIC als Plaintext +- **Datei:** app/models/contact.py:170 +- **Problem:** `bank_account` (IBAN) und `bic` werden als Plaintext gespeichert. Sensitive Finanzdaten. +- **Schweregrad:** High +- **Status:** ⏳ Nicht gefixt + +### ARCH-352: contact.py — vat_code/fiscal_code als Plaintext +- **Datei:** app/models/contact.py:160 +- **Problem:** `vat_code` (USt-IdNr.) und `fiscal_code` (Steuernummer) als Plaintext. Sensitive Steuerdaten. +- **Schweregrad:** Medium +- **Status:** ⏳ Nicht gefixt + +### ARCH-353: webhook.py — secret als Plaintext +- **Datei:** app/models/webhook.py:30 +- **Problem:** `secret` wird als Plaintext in DB gespeichert. Sollte verschlüsselt werden. +- **Schweregrad:** High +- **Status:** ⏳ Nicht gefixt + +### ARCH-354: system_settings.py — tax_number/vat_id/iban/bic als Plaintext +- **Datei:** app/models/system_settings.py:35 +- **Problem:** `tax_number`, `vat_id`, `iban`, `bic` werden als Plaintext gespeichert. Sensitive Unternehmensdaten. +- **Schweregrad:** High +- **Status:** ⏳ Nicht gefixt + +### ARCH-355: bank_account.py — iban/bic als Plaintext +- **Datei:** app/models/bank_account.py:20 +- **Problem:** `iban` und `bic` als Plaintext. Sensitive Finanzdaten. +- **Schweregrad:** High +- **Status:** ⏳ Nicht gefixt + +### ARCH-356: compliance.py — ComplianceIncident ohne OwnedMixin +- **Datei:** app/models/compliance.py +- **Problem:** ComplianceIncident hat kein OwnedMixin (kein owner_id). Entity-Permissions nicht möglich. +- **Schweregrad:** Medium +- **Status:** ⏳ Nicht gefixt + +### ARCH-357: audit.py — search_tsv Spalte vor __table_args__ +- **Datei:** app/models/audit.py:30 +- **Problem:** `search_tsv` Spalte wird vor `__table_args__` definiert — SQLAlchemy Anti-Pattern. +- **Schweregrad:** Low +- **Status:** ⏳ Nicht gefixt + +### ARCH-358: group.py — UserGroup.deleted_at vor __table_args__ +- **Datei:** app/models/group.py:40 +- **Problem:** `deleted_at` Spalte wird vor `__table_args__` definiert — SQLAlchemy Anti-Pattern. +- **Schweregrad:** Low +- **Status:** ⏳ Nicht gefixt + +### ARCH-359: notification.py — NotificationType.deleted_at vor __table_args__ +- **Datei:** app/models/notification.py:60 +- **Problem:** `deleted_at` Spalte wird vor `__table_args__` definiert — SQLAlchemy Anti-Pattern. +- **Schweregrad:** Low +- **Status:** ⏳ Nicht gefixt + +### ARCH-360: ai_conversation.py — AIConversation/AIMessage sollten entfernt sein (Phase 2) +- **Datei:** app/models/ai_conversation.py +- **Problem:** AIConversation/AIMessage existieren noch, aber Phase 2 hat AI Chat in Kommunikation integriert und 5 AI-Tabellen gedropped. Diese Models sollten entfernt werden. +- **Schweregrad:** Medium +- **Status:** ⏳ Nicht gefixt + +### ARCH-361: attachment.py — Attachment parallel zu EntityAttachment (Doppelarchitektur) +- **Datei:** app/models/attachment.py +- **Problem:** Attachment Model existiert parallel zu EntityAttachment. Doppelarchitektur — zwei Modelle für ähnliche Funktionalität. +- **Schweregrad:** Medium +- **Status:** ⏳ Nicht gefixt + +### ARCH-362: address.py — Address-Tabelle für Bank-Accounts, Contacts nutzen inline Felder +- **Datei:** app/models/address.py:10 +- **Problem:** Bekannte Inkonsistenz: Address-Tabelle wird für Bank-Accounts genutzt, Contacts nutzen inline Address-Felder. Doppelarchitektur. +- **Schweregrad:** Low +- **Status:** ⏳ Nicht gefixt