docs: 423 Architektur-Fehler — alle Plugin Models gelesen
This commit is contained in:
@@ -3272,3 +3272,75 @@ Playwright E2E: 10 passed, 24 failed (BUG-011/012/013 — Mock-Daten und data-te
|
||||
- **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
|
||||
|
||||
### ARCH-412: ai_assistant/models.py — api_key als Plaintext in DB
|
||||
- **Datei:** app/plugins/builtins/ai_assistant/models.py:35
|
||||
- **Problem:** `api_key: Mapped[str] = mapped_column(Text, nullable=False, default="")` — API Key wird als Plaintext gespeichert.
|
||||
- **Schweregrad:** High
|
||||
- **Status:** ⏳ Nicht gefixt
|
||||
|
||||
### ARCH-413: mcp_client/models.py — api_token als Plaintext in DB
|
||||
- **Datei:** app/plugins/builtins/mcp_client/models.py:30
|
||||
- **Problem:** `api_token: Mapped[str | None] = mapped_column(String(500), nullable=True)` — API Token wird als Plaintext gespeichert.
|
||||
- **Schweregrad:** High
|
||||
- **Status:** ⏳ Nicht gefixt
|
||||
|
||||
### ARCH-414: permissions/models.py — ShareLink.token als Plaintext
|
||||
- **Datei:** app/plugins/builtins/permissions/models.py:50
|
||||
- **Problem:** `token: Mapped[str] = mapped_column(String(64), nullable=False, unique=True)` — Share Link Token als Plaintext. Sollte gehasht werden.
|
||||
- **Schweregrad:** Medium
|
||||
- **Status:** ⏳ Nicht gefixt
|
||||
|
||||
### ARCH-415: calendar/models.py — CalendarEntry Spalten vor __table_args__
|
||||
- **Datei:** app/plugins/builtins/calendar/models.py:60
|
||||
- **Problem:** `indexed_at`, `embedding`, `search_tsv` werden vor `__table_args__` definiert — SQLAlchemy Anti-Pattern.
|
||||
- **Schweregrad:** Low
|
||||
- **Status:** ⏳ Nicht gefixt
|
||||
|
||||
### ARCH-416: dms/models.py — File Spalten vor __table_args__
|
||||
- **Datei:** app/plugins/builtins/dms/models.py:50
|
||||
- **Problem:** `indexed_at`, `content_tsv`, `content_text`, `embedding` vor `__table_args__` — SQLAlchemy Anti-Pattern.
|
||||
- **Schweregrad:** Low
|
||||
- **Status:** ⏳ Nicht gefixt
|
||||
|
||||
### ARCH-417: mail/models.py — Mail Spalten vor __table_args__
|
||||
- **Datei:** app/plugins/builtins/mail/models.py:100
|
||||
- **Problem:** `indexed_at`, `embedding`, `body_tsv`, `company_id` vor `__table_args__` — SQLAlchemy Anti-Pattern.
|
||||
- **Schweregrad:** Low
|
||||
- **Status:** ⏳ Nicht gefixt
|
||||
|
||||
### ARCH-418: tags/models.py — Tag Spalten vor __table_args__
|
||||
- **Datei:** app/plugins/builtins/tags/models.py:30
|
||||
- **Problem:** `embedding`, `search_tsv` vor `__table_args__` — SQLAlchemy Anti-Pattern.
|
||||
- **Schweregrad:** Low
|
||||
- **Status:** ⏳ Nicht gefixt
|
||||
|
||||
### ARCH-419: mail/models.py — MailAccount.encrypted_password mit password_salt
|
||||
- **Datei:** app/plugins/builtins/mail/models.py:40
|
||||
- **Problem:** `encrypted_password` und `password_salt` — gut dass verschlüsselt, aber der Salt sollte pro-Account random sein, nicht hardcoded default="".
|
||||
- **Schweregrad:** Medium
|
||||
- **Status:** ⏳ Nicht gefixt
|
||||
|
||||
### ARCH-420: mail/models.py — PgpKey.encrypted_private_key in DB
|
||||
- **Datei:** app/plugins/builtins/mail/models.py:300
|
||||
- **Problem:** `encrypted_private_key: Mapped[str] = mapped_column(Text, nullable=False)` — PGP Private Key in DB gespeichert. Auch wenn verschlüsselt, ist das ein hohes Risiko.
|
||||
- **Schweregrad:** High
|
||||
- **Status:** ⏳ Nicht gefixt
|
||||
|
||||
### ARCH-421: forgejo_error_reporter/models.py — Integer auto-increment PK statt UUID
|
||||
- **Datei:** app/plugins/builtins/forgejo_error_reporter/models.py:20
|
||||
- **Problem:** `id = Column(Integer, primary_key=True, autoincrement=True)` — Integer auto-increment PK. AGENTS.md verbietet Integer IDs, UUID only.
|
||||
- **Schweregrad:** Medium
|
||||
- **Status:** ⏳ Nicht gefixt
|
||||
|
||||
### ARCH-422: forgejo_error_reporter/models.py — Kein TenantMixin
|
||||
- **Datei:** app/plugins/builtins/forgejo_error_reporter/models.py
|
||||
- **Problem:** `ReportedError` hat kein TenantMixin — nicht tenant-scoped. Kann für Cross-Tenant Data Leaks führen.
|
||||
- **Schweregrad:** Medium
|
||||
- **Status:** ⏳ Nicht gefixt
|
||||
|
||||
### ARCH-423: marketplace/models.py — Kein TenantMixin (global)
|
||||
- **Datei:** app/plugins/builtins/marketplace/models.py:30
|
||||
- **Problem:** `MarketplaceListing` hat kein TenantMixin — bewusst global, aber muss dokumentiert sein.
|
||||
- **Schweregrad:** Low
|
||||
- **Status:** ⏳ Nicht gefixt
|
||||
|
||||
Reference in New Issue
Block a user