docs: 104 Architektur-Fehler (ARCH-001 bis ARCH-104) durch systematisches Code-Review dokumentiert
This commit is contained in:
@@ -1370,3 +1370,69 @@ Playwright E2E: 10 passed, 24 failed (BUG-011/012/013 — Mock-Daten und data-te
|
|||||||
- **Problem:** `unregister()` entfernt Contract und _loaded. get_contract() sieht plugin_name nicht in _loaded → ruft _try_lazy_load() auf → Contract wird neu geladen. Deaktivierte Plugins werden wieder sichtbar. (Bestätigung von ARCH-014)
|
- **Problem:** `unregister()` entfernt Contract und _loaded. get_contract() sieht plugin_name nicht in _loaded → ruft _try_lazy_load() auf → Contract wird neu geladen. Deaktivierte Plugins werden wieder sichtbar. (Bestätigung von ARCH-014)
|
||||||
- **Schweregrad:** High
|
- **Schweregrad:** High
|
||||||
- **Status:** ⏳ Nicht gefixt
|
- **Status:** ⏳ Nicht gefixt
|
||||||
|
|
||||||
|
### ARCH-094: StartPage.tsx — hardcoded deutsche Strings ohne i18n
|
||||||
|
- **Datei:** frontend/src/pages/StartPage.tsx:24-25
|
||||||
|
- **Problem:** 'Haupt-Workspace', 'Kontakte, Kalender, Mail und mehr' — hardcoded deutsche Strings ohne t().
|
||||||
|
- **Schweregrad:** Low
|
||||||
|
- **Status:** ⏳ Nicht gefixt
|
||||||
|
|
||||||
|
### ARCH-095: Contacts.tsx, DMS.tsx, NoAccess.tsx — leere Dateien
|
||||||
|
- **Datei:** frontend/src/pages/Contacts.tsx, DMS.tsx, NoAccess.tsx
|
||||||
|
- **Problem:** Dateien existieren aber sind leer (0 Zeilen). Entweder tot oder unvollständig.
|
||||||
|
- **Schweregrad:** Medium
|
||||||
|
- **Status:** ⏳ Nicht gefixt
|
||||||
|
|
||||||
|
### ARCH-096: main.tsx — window.__AUTH_STORE__ in Dev Mode
|
||||||
|
- **Datei:** frontend/src/main.tsx:16-18
|
||||||
|
- **Problem:** `(window as any).__AUTH_STORE__ = useAuthStore` — exponiert Auth-Store global im Dev Mode. Kann in Production leaken wenn DEV-Flag nicht korrekt gesetzt ist.
|
||||||
|
- **Schweregrad:** Low
|
||||||
|
- **Status:** ⏳ Nicht gefixt
|
||||||
|
|
||||||
|
### ARCH-097: schemas/contact.py — ContactPersonCreate hat keine Pflichtfelder
|
||||||
|
- **Datei:** app/schemas/contact.py:12-26
|
||||||
|
- **Problem:** Alle Felder sind Optional (None). Ein ContactPerson ohne Name/E-Mail wird akzeptiert.
|
||||||
|
- **Schweregrad:** Medium
|
||||||
|
- **Status:** ⏳ Nicht gefixt
|
||||||
|
|
||||||
|
### ARCH-098: schemas/role.py — RoleCreate.permissions ist dict[str, Any]
|
||||||
|
- **Datei:** app/schemas/role.py:11
|
||||||
|
- **Problem:** `permissions: dict[str, Any]` — keine Validierung der Permission-Keys. Jeder Key wird akzeptiert, auch ungültige.
|
||||||
|
- **Schweregrad:** Medium
|
||||||
|
- **Status:** ⏳ Nicht gefixt
|
||||||
|
|
||||||
|
### ARCH-099: ErrorBoundary.tsx — hardcoded deutsche Strings ohne i18n
|
||||||
|
- **Datei:** frontend/src/components/common/ErrorBoundary.tsx:60-75
|
||||||
|
- **Problem:** 'Etwas ist schiefgelaufen', 'Ein unerwarteter Fehler ist aufgetreten', 'Erneut versuchen', 'Neu laden', 'Fehlerdetails' — ohne t().
|
||||||
|
- **Schweregrad:** Low
|
||||||
|
- **Status:** ⏳ Nicht gefixt
|
||||||
|
|
||||||
|
### ARCH-100: SavedFilterBar.tsx — hardcoded deutsche Strings ohne i18n
|
||||||
|
- **Datei:** frontend/src/components/common/SavedFilterBar.tsx:10
|
||||||
|
- **Problem:** 'Speichern' und andere Strings im Docstring — hardcoded deutsch.
|
||||||
|
- **Schweregrad:** Low
|
||||||
|
- **Status:** ⏳ Nicht gefixt
|
||||||
|
|
||||||
|
### ARCH-101: windowStore.ts — globale windowIdCounter Variable
|
||||||
|
- **Datei:** frontend/src/store/windowStore.ts:30
|
||||||
|
- **Problem:** `let windowIdCounter = 0` — globale Variable außerhalb des Stores. Bei Hot-Module-Replacement kann es zu doppelten IDs kommen.
|
||||||
|
- **Schweregrad:** Low
|
||||||
|
- **Status:** ⏳ Nicht gefixt
|
||||||
|
|
||||||
|
### ARCH-102: themeStore.ts — DEFAULT_THEME hardcoded
|
||||||
|
- **Datei:** frontend/src/store/themeStore.ts:22-28
|
||||||
|
- **Problem:** DEFAULT_THEME hat hardcoded Werte (#2563eb, #d946ef, Inter, 0.5rem) die nicht aus Settings kommen.
|
||||||
|
- **Schweregrad:** Low
|
||||||
|
- **Status:** ⏳ Nicht gefixt
|
||||||
|
|
||||||
|
### ARCH-103: calendarStore.ts — Set<string> nicht serialisierbar
|
||||||
|
- **Datei:** frontend/src/store/calendarStore.ts
|
||||||
|
- **Problem:** `visibleCalendarIds: Set<string>` — Set ist nicht JSON-serialisierbar. Persistierung mit zustand persist() funktioniert nicht.
|
||||||
|
- **Schweregrad:** Medium
|
||||||
|
- **Status:** ⏳ Nicht gefixt
|
||||||
|
|
||||||
|
### ARCH-104: pluginToolbarStore.ts — registerItems überschreibt activePlugin
|
||||||
|
- **Datei:** frontend/src/store/pluginToolbarStore.ts:25
|
||||||
|
- **Problem:** `registerItems` setzt `activePlugin: plugin` automatisch. Wenn mehrere Plugins gleichzeitig registrieren, gewinnt das letzte. Sollte separaten setActivePlugin Call erfordern.
|
||||||
|
- **Schweregrad:** Low
|
||||||
|
- **Status:** ⏳ Nicht gefixt
|
||||||
|
|||||||
Reference in New Issue
Block a user