diff --git a/docs/test-bugs.md b/docs/test-bugs.md index b94ea1e..519dff2 100644 --- a/docs/test-bugs.md +++ b/docs/test-bugs.md @@ -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) - **Schweregrad:** High - **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 nicht serialisierbar +- **Datei:** frontend/src/store/calendarStore.ts +- **Problem:** `visibleCalendarIds: Set` — 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