docs(d2): utcnow family fixed, sqlite-001 results, handover notes for successor agent
This commit is contained in:
+15
@@ -63,10 +63,25 @@
|
||||
| C7 | Dashboard-Widgets als Plugin-Contributions (contacts/tasks/calendar) + Contact-Counts über neuen ContactsContract | ✅ Contract exponiert get_counts; dashboard.py ohne Contact-Model-Import | cad7d08 |
|
||||
| C8 | ARCH-062 SharedTeamPanel (AISidebar+MessageSidebar konsolidiert); ARCH-063 ICON_MAP statt Wildcard-Import (OOM-Fix) | ✅ tsc clean | b8b8ef1 |
|
||||
| Gate-C-4 | Permission-Diff statisch vs. Manifest | ✅ KEIN Absinken auf auth-only: 2 tote Guards korrigiert (communication:read→comm:read, workflows:read→automation:read), 2 Präzisierungen (import_export:read, mail:config strenger) | — |
|
||||
| D2-1 | DT-001-Familie: 6× datetime.utcnow() → datetime.now(UTC) (worker ×2, audit, webhook_service inkl. Inline-Hack bereinigt, backup_service, mcp_client); 0 utcnow verbleibend | ✅ Syntaxchecks + App-Import OK; Wire-Format des Webhooks unverändert (isoformat+Z) | d89044d |
|
||||
| D2-2 | SQLITE-001: automation tests von SQLite in-memory auf ephemeres PostgreSQL umgestellt (CREATE/DROP pro Lauf, pgvector-Extension, komplettes Model-Discovery für cross-plugin FKs) | ✅ 30/30 Tests grün; dabei 3 Testlogik-Bugs gefixt: DryRun-FK (echte Automation vor Run), Rate-Limit-Assertion-Richtung (< → >=), Budget-Float approx | d89044d |
|
||||
|
||||
**Block A ABGESCHLOSSEN** — Gate A bestanden (32f63ad).
|
||||
**Block B ABGESCHLOSSEN** — Gate B bestanden (alle 5 Checks bewiesen).
|
||||
**Block C ABGESCHLOSSEN** — C1–C8 implementiert, Gate-C-Checks 4+5 bewiesen; Checks 1–3 (Playwright gegen Build, Workspace-E2E, Normal-User-E2E) erfordern E2E-Lauf → Block E.
|
||||
**Block D GESTARTET** — D2 komplett (d89044d). Offen: D1 (pytest-Massen), D3 (API-/Testpfade + ARCH-051/055/056/057), D4 (Security-Triage BUG-019/020 + ARCH-027), D5 (Marathon-Triage), D6 (Legacy-Migration ARCH-059/023).
|
||||
|
||||
### Bekannte Vorbestände (Block D Triage)
|
||||
- 9 Contact/Company-Test-Failures existieren seit vor Block B (Stash-Verifikation 2026-08-23): KeyError 'id' bei Create/Delete/Link-Flows — Ursache ungeklärt, gehört zur pytest-Massen-Triage.
|
||||
- 5 PluginLoader-Test-Failures sind Vorbestand (Stash-Verifikation): Tests erwarten UI-Text 'Failed to load plugin', aktueller Loader zeigt deutsche Texte.
|
||||
- Geister-Komponenten: Backend-Manifeste referenzieren @/pages/AIAssistant + 5 Contact-Detail-Tabs, die im Frontend nicht existieren (siehe unten).
|
||||
|
||||
### Handover-Hinweis für Nachfolge-Agent
|
||||
- Reparaturplan: docs/fix-plan-v3.md (Blöcke 0/H/A/B/C done, D gestartet, E/F/G offen)
|
||||
- Findings-Status: docs/test-bugs.md (✅/⏳ je Finding)
|
||||
- Verifikationsmuster: Stash-Test gegen Pre-Block-Commit für Vorbestands-Nachweis; Endpoint-Diff via OpenAPI-Snapshot; Cross-Plugin-Scan als Gate
|
||||
- Test-DB: .env.test (leocrm_test), automation-Tests erstellen eigene ephemere DBs
|
||||
- Forgejo-Issues/Milestones laut AGENTS.md §9 noch NICHT angelegt — nur PROGRESS.md-Tracking
|
||||
|
||||
### Geister-Komponenten (Block D Triage)
|
||||
Backend-Manifeste referenzieren Frontend-Komponenten, die nicht existieren:
|
||||
|
||||
+4
-4
@@ -1045,7 +1045,7 @@ Playwright E2E: 10 passed, 24 failed (BUG-011/012/013 — Mock-Daten und data-te
|
||||
- **Datei:** app/core/worker.py:cleanup_audit_log_job, cleanup_trash_job, cleanup_knowledge_job
|
||||
- **Problem:** `datetime.utcnow() - timedelta(days=...)` verwendet naive datetime. AGENTS.md verbietet naive datetime — TIMESTAMPTZ only. Sollte `datetime.now(UTC)` sein.
|
||||
- **Schweregrad:** Medium
|
||||
- **Status:** ⏳ Nicht gefixt
|
||||
- **Status:** ✅ Gefixt 2026-08-24 (Block D/D2): Beide Cleanup-Jobs auf datetime.now(UTC) umgestellt, lokale Imports erweitert; 0 utcnow-Referenzen verbleiben im Codebase
|
||||
|
||||
### ARCH-040: worker.py — cleanup_knowledge_job importiert direkt von Plugin (Core→Plugin)
|
||||
- **Datei:** app/core/worker.py:cleanup_knowledge_job
|
||||
@@ -1129,7 +1129,7 @@ Playwright E2E: 10 passed, 24 failed (BUG-011/012/013 — Mock-Daten und data-te
|
||||
- **Datei:** app/routes/audit.py:179
|
||||
- **Problem:** `datetime.utcnow() - timedelta(days=retention_days)` verwendet naive datetime. AGENTS.md verbietet naive datetime — TIMESTAMPTZ only. Sollte `datetime.now(UTC)` sein.
|
||||
- **Schweregrad:** Medium
|
||||
- **Status:** ⏳ Nicht gefixt
|
||||
- **Status:** ✅ Gefixt 2026-08-24 (Block D/D2): Retention-Cutoff auf datetime.now(UTC) umgestellt, UTC-Import ergänzt
|
||||
|
||||
### ARCH-054: entity_permissions.py — _check_entity_ownership greift auf falsche Datenstruktur
|
||||
- **Datei:** app/routes/entity_permissions.py:259
|
||||
@@ -1159,7 +1159,7 @@ Playwright E2E: 10 passed, 24 failed (BUG-011/012/013 — Mock-Daten und data-te
|
||||
- **Datei:** app/services/webhook_service.py:send_webhook
|
||||
- **Problem:** `__import__("datetime").datetime.utcnow().isoformat() + "Z"` verwendet naive datetime. AGENTS.md verbietet naive datetime — TIMESTAMPTZ only. Sollte `datetime.now(UTC)` sein.
|
||||
- **Schweregrad:** Medium
|
||||
- **Status:** ⏳ Nicht gefixt
|
||||
- **Status:** ✅ Gefixt 2026-08-24 (Block D/D2): Inline-__import__-Hack entfernt, sauberer UTC-Import; Wire-Format unverändert (isoformat().replace('+00:00','Z'))
|
||||
|
||||
### ARCH-059: ai_copilot_service.py — Legacy AIConversation/AIMessage statt kommunikation
|
||||
- **Datei:** app/services/ai_copilot_service.py:18-21
|
||||
@@ -1171,7 +1171,7 @@ Playwright E2E: 10 passed, 24 failed (BUG-011/012/013 — Mock-Daten und data-te
|
||||
- **Datei:** app/services/backup_service.py:create_backup
|
||||
- **Problem:** `backup.completed_at = datetime.utcnow()` verwendet naive datetime. AGENTS.md verbietet naive datetime — TIMESTAMPTZ only. Sollte `datetime.now(UTC)` sein.
|
||||
- **Schweregrad:** Medium
|
||||
- **Status:** ⏳ Nicht gefixt
|
||||
- **Status:** ✅ Gefixt 2026-08-24 (Block D/D2): completed_at auf datetime.now(UTC) umgestellt; UTC war bereits im Import
|
||||
|
||||
### ARCH-061: routes/index.tsx — Leeres Route-Objekt (Dead Code)
|
||||
- **Datei:** frontend/src/routes/index.tsx:58-59
|
||||
|
||||
Reference in New Issue
Block a user