Files
CapaKraken/docs/domain-slices-backlog.md
T

10 KiB

Domain Slices Backlog

Stand: 2026-03-31

Dieses Backlog gruppiert die offenen Arbeiten nach fachlichen/domänischen Blöcken statt nach Dateien. Die Schätzungen sind Restaufwand auf Basis des aktuellen Worktrees und können sich nach Befund leicht ändern.

Aktuell geschnittene Domänenslices: 7 Grobe Gesamtdauer über alle noch offenen Slices: 28-45h

Statuslegende

  • in_progress: wird aktiv bearbeitet
  • ready: fachlich geschnitten, kann als nächster Block umgesetzt werden
  • blocked: fachlich bekannt, aber aktuell von anderem Slice abhängig
  • done: abgeschlossen und validiert

Offene Slices

# Slice Status Restaufwand Kernziel
1 Timeline Interaction, Overlays, Hover, SSE-State in_progress 6-10h Stabile Timeline ohne Render-/Overlay-/Drag-Artefakte, auch bei View-Wechseln und Live-Updates
2 Holiday/Vacation Correctness and Explainability ready 4-6h Feiertage und Urlaube konsistent in Timeline, Chargeability, Forecasts, Assistant und UI-Erklärungen
3 Assistant Parity, Policy Auto-Exposure, Advanced Queries ready 5-8h Assistant kennt und nutzt denselben Berechtigungs- und Datenraum wie der Nutzer, inkl. komplexer Queries
4 Reports, Templates/Blueprints, Export Completeness ready 4-6h Report Builder mit speicherbaren Vorlagen und vollständigen Exportgrößen wie SAH und Bezugsfaktoren
5 Notifications, Tasks, Broadcasts, Reminder Reliability ready 3-5h Robuste Inbox-/Broadcast-/Reminder-Flows ohne leere Fanout- oder Persistenzkanten
6 Dashboard, Widgets, Explainability, First-Load Stability ready 4-6h Dashboard zuverlässig ladbar, Widgets kompakt, nachvollziehbar und per Detail-Toggle kontrollierbar
7 DB Safety, Env Loading, Migration/Seed Discipline, Naming Cleanup ready 2-4h Keine Raw-Prisma/Env-Fallen, kein versehentliches Seeding, keine operativen planarchy-Reste

Umsetzungshinweise

  • Slice 1 ist der größte technische Risikoblock und beeinflusst direkt wahrnehmbare UX.
  • Slice 2 und 3 hängen fachlich teilweise zusammen, können nach Slice 1 parallelisiert werden.
  • Slice 4 profitiert von Slice 2, weil Feiertags-/Urlaubslogik als Export- und Reportgröße sichtbar werden muss.
  • Slice 7 bleibt als Guardrail-Block parallel im Hintergrund wichtig, sollte aber keine Produktarbeit blockieren.

Abhaklog

  • Assistant-Testlandschaft entlang echter Domänengrenzen weiter zerlegt und vollständig grün validiert
  • Slice 1: Timeline Interaction, Overlays, Hover, SSE-State Fortschritt: Live cellWidthRef statt stale Snapshot im Drag-Pfad verdrahtet. Projekt-Drag zentralisiert finalisiert, sodass MouseUp/Canvas-Up nicht mehr parallel mutieren. document-Listener für Projekt-Drag, Allocation-Drag und Multi-Select werden beim Unmount sauber entfernt. Timeline-Popovers schließen bei Scroll/Resize nicht mehr sofort, sondern bleiben stabil sichtbar.
  • Slice 2: Holiday/Vacation Correctness and Explainability
  • Slice 3: Assistant Parity, Policy Auto-Exposure, Advanced Queries
  • Slice 4: Reports, Templates/Blueprints, Export Completeness
  • Slice 5: Notifications, Tasks, Broadcasts, Reminder Reliability
  • Slice 6: Dashboard, Widgets, Explainability, First-Load Stability
  • Slice 7: DB Safety, Env Loading, Migration/Seed Discipline, Naming Cleanup

API Router Slice Inventory

Diese Liste ist die vollständige Arbeitsinventur für den aktuellen Architektur-Track packages/api/src/router. Ziel ist nicht eine inhaltliche Neuschreibung, sondern dünne Top-Level-Router: Zod/Input, Permission-Wiring und Orchestrierung wandern in gezielte *-procedure-support.ts oder benachbarte Support-Module, Verhalten und öffentliche Contracts bleiben stabil.

Status

  • done: bereits sauber extrahiert oder als dünner Kompositionsrouter erreicht
  • ready_now: sinnvoller nächster Slice ohne bekannte Blocker
  • later: fachlich sinnvoll, aber größer oder stärker querliegend
  • monitor: aktuell dünn genug; nur anfassen, wenn dort neue Logik wächst
  • excluded_for_now: bewusst aus dem aktuellen Batch ausgenommen

Vollständige Router-Liste

Router Status Priorität Sinnvolle Slices
allocation.ts done - Aggregator bereits dünn; nur Support-Module weiter pflegen
assistant.ts later 3 Chat loop, confirmation flow, insight generation, response shaping
audit-log.ts monitor 4 Optional: list/detail reads und filter-building trennen, falls Auth/Wiring wächst
blueprint.ts ready_now 2 summary/list reads, identifier reads, CRUD, role-preset mutation, global-field procedures
calculation-rules.ts monitor 4 Aktuell klein; nur bei zusätzlicher Write-/Audit-Logik extrahieren
chargeability-report.ts excluded_for_now - Bewusst zurückgestellt; erst nach Freigabe des geblockten Bereichs
client.ts ready_now 2 list/tree reads, identifier reads, CRUD/deactivate, sort-order batch mutation
comment.ts done - Bereits in comment-procedure-support.ts ausgelagert
computation-graph.ts monitor 4 Bereits Kompositionsrouter; nur bei zusätzlicher Orchestrierung weiter schneiden
country.ts ready_now 2 list/identifier reads, country CRUD, metro-city CRUD
dashboard.ts excluded_for_now - Bewusst zurückgestellt; hoher Querschnitt und paralleler Scope
dispo.ts ready_now 2 workbook input schemas, staging/validation, staged-read procedures, resolve/commit/cancel mutations
effort-rule.ts ready_now 1 list/detail reads, CRUD/default toggle, preview, apply-rules mutation
entitlement.ts excluded_for_now - Bewusst zurückgestellt; größerer Fachblock
estimate.ts later 3 commercial reads, demand line writes, phasing, version workflow, aggregate read models
experience-multiplier.ts ready_now 1 list/detail reads, CRUD/default toggle, preview, apply-rules mutation
holiday-calendar.ts ready_now 2 calendar CRUD, entry CRUD; catalog/resolution reads sind schon separat
import-export.ts ready_now 3 export reads, import preview/validation, file-bound orchestration
insights.ts ready_now 3 anomaly/summary reads, cached narrative read, AI narrative mutation
management-level.ts ready_now 1 group reads/writes, level writes/delete, audit helper extraction
notification.ts excluded_for_now - Bewusst zurückgestellt; zu groß für den aktuellen Batch
org-unit.ts ready_now 3 list/tree reads, identifier reads, CRUD/deactivate
project.ts monitor 4 Bereits stark komponiert; optional nur list und getById separat ziehen
rate-card.ts ready_now 1 list/detail/match reads, card CRUD, line CRUD, replace-lines/batch operations
report.ts done - Bereits in report-template-procedure-support.ts ausgelagert
resource.ts monitor 4 Top-Level dünn; tieferliegende Shared-Read-Module sind separat zu betrachten
role.ts done - Bereits in role-procedure-support.ts ausgelagert
scenario.ts done - Bereits in scenario-procedure-support.ts ausgelagert
settings.ts done - Bereits in settings-procedure-support.ts ausgelagert
staffing.ts done - Aggregator bereits dünn
system-role-config.ts monitor 4 Klein genug; nur bei wachsender Audit-/Validation-Logik schneiden
timeline.ts done - Bereits auf dünnen Aggregator umgestellt
user.ts excluded_for_now - Bewusst zurückgestellt; hoher Querschnitt und paralleler Scope
utilization-category.ts monitor 4 Klein genug; nur bei zusätzlicher Komplexität schneiden
vacation.ts done - Bereits auf dünnen Aggregator umgestellt
webhook.ts monitor 4 Noch tragbar; optional später read/write separation

Empfohlene Reihenfolge

  1. rate-card.ts
  2. effort-rule.ts
  3. experience-multiplier.ts
  4. management-level.ts
  5. blueprint.ts
  6. client.ts
  7. country.ts
  8. holiday-calendar.ts
  9. dispo.ts
  10. insights.ts
  11. import-export.ts
  12. org-unit.ts

Phase 2: Tieferliegende Hotspots Hinter Bereits Dünnen Routern

Diese Slices betreffen nicht mehr primär den Top-Level-Router, sondern große Read-/Procedure-Module im selben Architektur-Track. Sie sind sinnvoll, sobald der aktuelle Router-Arbeitsvorrat abgearbeitet ist.

Slice Priorität Betroffene Module Ziel
Allocation Mutation Decomposition 1 allocation-assignment-procedures.ts Assignment-Transaktionen, Audit, Events, Webhooks und Budget-Folgelogik weiter trennen
Vacation Read Separation 1 vacation-read.ts, vacation-management-procedures.ts Ownership, Anonymisierung, Holiday-Preview und Query-Varianten sauberer schneiden
Estimate Write Router Slimming 1 estimate.ts plus benachbarte Estimate-Module Write-Orchestrierung, version workflow und error translation aus dem Router ziehen
Staffing Read Pipeline Split 1 staffing-suggestions-read.ts, staffing-capacity-read.ts, staffing-best-project-resource.ts gemeinsame Load-/Ranking-/Response-Pipeline extrahieren
Report Engine by Execution Mode 2 report-query-engine.ts, report-query-config.ts generische Reports, resource_month-Sonderfall und Exportpfade klar trennen
Computation Graph Read Model Split 2 computation-graph-resource.ts, computation-graph-project.ts Snapshot-Building, Forecasting und Graph-Assembly entkoppeln

Explizit Ausgeschlossen Im Aktuellen Batch

  • packages/api/src/router/assistant-tools.ts
  • packages/api/src/router/assistant-tools/*
  • packages/api/src/router/chargeability-report.ts
  • packages/api/src/router/dashboard.ts
  • packages/api/src/router/entitlement.ts
  • packages/api/src/router/notification.ts
  • packages/api/src/router/resource-read-shared.ts
  • packages/api/src/router/resource-summary-read.ts
  • packages/api/src/router/user.ts
  • packages/api/src/__tests__/timeline-router.test.ts
  • packages/api/src/__tests__/vacation-router.test.ts

Bereits Erledigte Router-Slices In Dieser Serie

  • timeline: read schemas, holiday/project/allocation/shift support extrahiert
  • vacation: create procedures extrahiert
  • comment: comment procedures extrahiert
  • scenario: scenario procedures extrahiert
  • report: report template procedures extrahiert
  • role: role write procedures extrahiert
  • settings: settings procedures extrahiert