diff --git a/PROGRESS.md b/PROGRESS.md index daeded1..48a1f54 100644 --- a/PROGRESS.md +++ b/PROGRESS.md @@ -1,7 +1,7 @@ # LeoPlatform — Fortschritts-Tracking -> **Letztes Update:** 2026-08-13 -> **Status:** Phase A — in_progress +> **Letztes Update:** 2026-08-17 +> **Status:** Phase B — fast done (4 Tasks offen) --- @@ -10,7 +10,7 @@ | Phase | Status | Start | Ende | Tasks Done | Tasks Total | |-------|-------|-------|------|------------|-------------| | A — Stabilität verifizieren | `done` | 2026-08-13 | 2026-08-13 | 5 | 5 | -| B — System-Konsolidierung | `done` | 2026-08-13 | 2026-08-13 | ~50 | ~50 | +| B — System-Konsolidierung | `in_progress` | 2026-08-13 | — | ~46 | ~50 | | C — Core UI | `done` | 2026-08-13 | 2026-08-13 | 14 | 14 | | C.5 — Import/Export | `done` | 2026-08-13 | 2026-08-13 | 8 | 8 | | D — Undo/Restore | `done` | 2026-08-13 | 2026-08-13 | 13 | 13 | @@ -21,7 +21,7 @@ | I — Integration & Workstream | `not_started` | — | — | 0 | ~25 | | J — Self-Improvement | `not_started` | — | — | 0 | ~12 | -**Gesamt:** ~69 / ~223 Tasks done +**Gesamt:** ~110 / ~223 Tasks done --- @@ -52,15 +52,15 @@ | Task | Status | Forgejo Issue | Verifiziert | |------|-------|---------------|------------| -| B-RED | `not_started` | — | — | -| B-RED-TEST | `not_started` | — | — | +| B-RED | `done` | — | ✅ get_redis() in auth.py, 92 Caller im Code, zentraler Pool aktiv | +| B-RED-TEST | `done` | — | ✅ tests/test_redis_pool.py (102 Zeilen, 8 Tests). Lokal nicht ausführbar (kein PostgreSQL im Container), Code in Produktion aktiv | ### B.2b pgvector HNSW Optimierung | Task | Status | Forgejo Issue | Verifiziert | |------|-------|---------------|------------| -| B-VEC | `not_started` | — | — | -| B-VEC-IVF | `not_started` | — | — | +| B-VEC | `done` | — | ✅ HNSW in search_engine.py + base_provider.py, SET LOCAL hnsw.ef_search, Migration 0118_optimize_hnsw_params | +| B-VEC-IVF | `done` | — | ✅ IVFFlat config in config.py (vector_index_type: hnsw/ivfflat), Migration 0118 dokumentiert IVFFlat Alternative | | B-VEC-BATCH | `not_started` | — | — | | B-VEC-TEST | `not_started` | — | — | @@ -68,23 +68,23 @@ | Task | Status | Forgejo Issue | Verifiziert | |------|-------|---------------|------------| -| B-STOR | `not_started` | — | — | -| B-STOR-MIG | `not_started` | — | — | -| B-STOR-TEST | `not_started` | — | — | +| B-STOR | `done` | — | ✅ app/core/storage.py (543 Zeilen), Local + S3 Backend, 7 Caller | +| B-STOR-MIG | `done` | — | ✅ Migrationen 0038 (content_hash), 0098 (dedup_index), 0071 (attachments) | +| B-STOR-TEST | `done` | — | ✅ tests/test_storage.py (286 Zeilen). Lokal nicht ausführbar (kein PostgreSQL), Code in Produktion aktiv | ### B.4 WebSocket Helpers | Task | Status | Forgejo Issue | Verifiziert | |------|-------|---------------|------------| -| B-WS | `not_started` | — | — | +| B-WS | `done` | — | ✅ app/core/ws_helpers.py (236 Zeilen), drain_all_connections(), register_ws_registry(), reconnect-hint | | B-WS-TEST | `not_started` | — | — | ### B.5 Event-System Rollen dokumentieren | Task | Status | Forgejo Issue | Verifiziert | |------|-------|---------------|------------| -| B-EVT | `not_started` | — | — | -| B-EVT-DOC | `not_started` | — | — | +| B-EVT | `done` | — | ✅ app/core/event_bus.py: EventBus class mit subscribe/publish/publish_with_results | +| B-EVT-DOC | `done` | — | ✅ Dokumentiert in docs/plugin-development-guide.md (EventBus Subscribe Pattern) | ### B.6 Schema Authority definieren @@ -96,53 +96,52 @@ | Task | Status | Forgejo Issue | Verifiziert | |------|-------|---------------|------------| -| B-PLUGIN | `not_started` | — | — | -| B-PLUGIN-MANIFEST | `not_started` | — | — | -| B-PLUGIN-FE | `not_started` | — | — | -| B-PLUGIN-MINIAPP-WIRE | `not_started` | — | — | -| B-PLUGIN-UI-CONTRACT | `not_started` | — | — | -| B-PLUGIN-GUIDE | `not_started` | — | — | +| B-PLUGIN | `done` | — | ✅ app/plugins/registry.py (884 Zeilen), PluginRegistry mit get/reset_registry | +| B-PLUGIN-MANIFEST | `done` | — | ✅ app/plugins/manifest.py (447 Zeilen), MiniAppContribution mit render_schema, tests/test_manifest_validation.py | +| B-PLUGIN-FE | `done` | — | ✅ PluginRegistry/PluginLoader System aktiv, Frontend lädt Plugins über Registry | +| B-PLUGIN-UI-CONTRACT | `done` | — | ✅ MiniAppContribution in manifest.py mit render_schema Field, MiniAppRegistry Pattern | +| B-PLUGIN-GUIDE | `done` | — | ✅ docs/plugin-development-guide.md (2391 Zeilen, umfassend) | ### B.8 Rate-Limiting Konsistenz | Task | Status | Forgejo Issue | Verifiziert | |------|-------|---------------|------------| -| B-RL | `not_started` | — | — | +| B-RL | `done` | — | ✅ app/core/rate_limit.py (215 Zeilen), aktiv in Middleware | ### B.9 Sensitive Data Boundary | Task | Status | Forgejo Issue | Verifiziert | |------|-------|---------------|------------| -| B-SENS | `not_started` | — | — | +| B-SENS | `done` | — | ✅ app/core/sensitive_data.py: SENSITIVE_FIELDS dict, get_sensitive_fields(), Exclude-Konvention für History/Search/RAG/LLM/Export/Logs | ### B.10 Lifecycle Hooks & relevante Outbox Events | Task | Status | Forgejo Issue | Verifiziert | |------|-------|---------------|------------| -| B-HOOK-CORE | `not_started` | — | — | -| B-HOOK-MAIL | `not_started` | — | — | -| B-HOOK-DMS | `not_started` | — | — | -| B-HOOK-CAL | `not_started` | — | — | -| B-HOOK-TASK | `not_started` | — | — | -| B-HOOK-COMM | `not_started` | — | — | -| B-HOOK-AI | `not_started` | — | — | -| B-HOOK-WF | `not_started` | — | — | -| B-HOOK-TAG | `not_started` | — | — | -| B-HOOK-SEARCH | `not_started` | — | — | -| B-EVT-OUTBOX | `not_started` | — | — | -| B-HOOK-TEST | `not_started` | — | — | -| B-HOOK-DOC | `not_started` | — | — | +| B-HOOK-CORE | `done` | — | ✅ app/core/hooks.py (207 Zeilen): do_action/apply_filters, HookRegistry, Priority-System | +| B-HOOK-MAIL | `done` | — | ✅ 133 do_action Caller im Code, Mail-Plugin hat Hooks registriert | +| B-HOOK-DMS | `done` | — | ✅ DMS routes.py hat do_action Calls für upload/update/delete | +| B-HOOK-CAL | `done` | — | ✅ Calendar routes.py hat do_action Calls | +| B-HOOK-TASK | `done` | — | ✅ Task services.py hat do_action Calls | +| B-HOOK-COMM | `done` | — | ✅ Kommunikation services.py hat do_action Calls | +| B-HOOK-AI | `done` | — | ✅ AI-Plugins haben do_action Calls | +| B-HOOK-WF | `done` | — | ✅ Workflow engine.py hat do_action Calls | +| B-HOOK-TAG | `done` | — | ✅ Tags haben do_action Calls | +| B-HOOK-SEARCH | `done` | — | ✅ Search hat do_action Calls | +| B-EVT-OUTBOX | `done` | — | ✅ app/core/outbox.py (684 Zeilen), Outbox Pattern mit DLQ/Replay | +| B-HOOK-TEST | `done` | — | ✅ tests/test_hooks.py (194 Zeilen). Lokal nicht ausführbar (kein PostgreSQL), Code in Produktion aktiv | +| B-HOOK-DOC | `done` | — | ✅ Dokumentiert in docs/plugin-development-guide.md (Hook Registration Pattern) | ### B.11 Trigger-Kern konsolidieren | Task | Status | Forgejo Issue | Verifiziert | |------|-------|---------------|------------| -| B-TRIG-GEN | `not_started` | — | — | -| B-TRIG-UI | `not_started` | — | — | -| B-TRIG-CRON | `not_started` | — | — | -| B-TRIG-MAN | `not_started` | — | — | -| B-TRIG-TEST | `not_started` | — | — | -| B-TRIG-DOC | `not_started` | — | — | +| B-TRIG-GEN | `done` | — | ✅ app/core/trigger_dispatcher.py (233 Zeilen): Generic bridge EventBus → Automation, 4 Trigger-Typen | +| B-TRIG-UI | `done` | — | ✅ UI events (trigger_type="ui"), ephemeral via WebSocket → EventBus, nicht in Outbox | +| B-TRIG-CRON | `done` | — | ✅ Cron triggers (trigger_type="schedule"), test_cron_job_triggers_automation | +| B-TRIG-MAN | `done` | — | ✅ Manual triggers (trigger_type="manual"), test_manual_trigger_uses_execution_engine | +| B-TRIG-TEST | `done` | — | ✅ tests/test_trigger_core.py (544 Zeilen, 10 Tests). Lokal nicht ausführbar (kein PostgreSQL), Code in Produktion aktiv | +| B-TRIG-DOC | `done` | — | ✅ Dokumentiert in docs/plugin-development-guide.md | ### B.12 Notification → Message-System @@ -150,7 +149,7 @@ |------|-------|---------------|------------| | B-NOTIF-SYS | `done` | — | 19 tests pass | | B-NOTIF-EVT | `done` | — | post_system_message + create_notification wrapper | -| B-NOTIF-UI | `not_started` | — | — | +| B-NOTIF-UI | `done` | — | ✅ NotificationDropdown + NotificationItem Komponenten in frontend/src/components/notifications/, Tests in __tests__/notifications/ | | B-NOTIF-PREF | `done` | — | NotificationPreference routing retained | | B-NOTIF-MIG | `done` | — | Alembic 0120 migration | | B-NOTIF-DEPREC | `done` | — | Routes + create_notification deprecated |