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

32 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: 25-41h

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 in_progress 1-3h Feiertage und Urlaube konsistent in Timeline, Chargeability, Forecasts, Assistant und UI-Erklärungen
3 Assistant Parity, Policy Auto-Exposure, Advanced Queries in_progress 5-8h Assistant kennt und nutzt denselben Berechtigungs- und Datenraum wie der Nutzer, inkl. komplexer Queries
4 Reports, Templates/Blueprints, Export Completeness in_progress 4-6h Report Builder mit speicherbaren Vorlagen und vollständigen Exportgrößen wie SAH und Bezugsfaktoren
5 Notifications, Tasks, Broadcasts, Reminder Reliability in_progress 3-5h Robuste Inbox-/Broadcast-/Reminder-Flows ohne leere Fanout- oder Persistenzkanten
6 Dashboard, Widgets, Explainability, First-Load Stability in_progress 4-6h Dashboard zuverlässig ladbar, Widgets kompakt, nachvollziehbar und per Detail-Toggle kontrollierbar
7 DB Safety, Env Loading, Migration/Seed Discipline, Naming Cleanup in_progress 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.

Arbeitsliste

  1. Slice 1: Timeline Interaction, Overlays, Hover, SSE-State
  2. Slice 2: Holiday/Vacation Correctness and Explainability
  3. Slice 3: Assistant Parity, Policy Auto-Exposure, Advanced Queries
  4. Slice 4: Reports, Templates/Blueprints, Export Completeness
  5. Slice 5: Notifications, Tasks, Broadcasts, Reminder Reliability
  6. Slice 6: Dashboard, Widgets, Explainability, First-Load Stability
  7. Slice 7: DB Safety, Env Loading, Migration/Seed Discipline, Naming Cleanup

Abhaklog

  • Assistant-Testlandschaft entlang echter Domänengrenzen weiter zerlegt und vollständig grün validiert
  • Staffing Read Pipeline Split: gemeinsame holiday-/absence-aware Capacity-Zusammenfassung aus staffing-suggestions-read.ts und staffing-best-project-resource.ts in staffing-capacity-summary.ts extrahiert und gegen fokussierte Staffing-/Assistant-Regressionen validiert
  • Vacation Read Separation: Holiday-/Deduction-Preview-Shaping aus vacation-read.ts in vacation-read-support.ts extrahiert und gegen Vacation-Auth-/Router-Regressionen 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. Query-Refresh wird pro aktivem Timeline-Kontext statt nur einmal pro Mount erzwungen. Session-Loading und SSE-Reconnect werden gehärtet, damit erste Route-Loads nicht in einem leeren Zwischenzustand hängen bleiben. Vacation-SSE und lokale Planning-Invalidierung laden jetzt auch vacation.list nach, damit Urlaubsbalken ohne Reload konsistent bleiben. Allocation-Handles und Move-Flächen stoppen jetzt mousedown sauber, damit Resource-/Project-Row-Canvases nicht parallel Range-Selektion starten.
  • Slice 2: Holiday/Vacation Correctness and Explainability Fortschritt: Vacation-Deduction-Snapshots werden im UI bereits in MyVacationsClient erklärt. Dieselbe Ableitung wird jetzt auch im Vacation-Kalender per Hover-Tooltip genutzt. Holiday-Editor-Vorschau zeigt jetzt Scope-/Source-Zusammenfassung plus aufgeloeste Feiertage mit Scope. entitlement.getBalanceDetail, Assistant-Tool get_vacation_balance und BalanceCard nutzen jetzt denselben holiday-/deduction-aware Explainability-Pfad inkl. Vacation-Breakdown, Holiday-Basis und ausgeschlossenen Feiertagen. Fokussierte Validierung für Entitlement-/Assistant-Balance und Web-Typecheck ist grün; Alt-Snapshots respektieren weiter persistierte deductedDays, während fehlende Snapshots wieder korrekt auf kanonische Feiertagsauflösung zurückfallen. Entitlement-Jahresübersicht, Assistant-get_entitlement_summary und die Manager-Übersicht tragen jetzt auch countryCode, countryName, federalState und metroCityName, damit regionale Feiertagsunterschiede als Bezugsgröße sichtbar bleiben. Assistant-run_report liefert für resource_month jetzt zusätzlich einen Explainability-Block mit Holiday-/Absence-/Location-Basis, fehlenden empfohlenen Bezugsgrößen und Interpretationshinweisen zur SAH-Ableitung. Chargeability-Detailpfad und Assistant-get_chargeability_report tragen jetzt ebenfalls einen Explainability-Block mit Ortsbezug, Herleitungsfeldern, Formeln und aktiven Filtern, damit dieselbe SAH-/Holiday-/Absence-Logik auch im Forecast-Readmodel transparent ist. Chargeability-Frontend zeigt dieselbe Berechnungsbasis jetzt kompakt an; der Excel-Export enthält zusätzlich ein Explainability-Sheet mit Formeln, Filtern und Bezugsgrößen. Budget-Forecast-Readmodel, Dashboard-Detail und Assistant-get_budget_forecast tragen jetzt ebenfalls eine kompakte Burn-Herleitung mit Base-vs-Adjusted-Burn, Holiday-/Absence-Abzügen, Holiday-aware-vs-Fallback-Assignments und Anzahl der Kalenderkontexte; das Widget zeigt diese Herleitung nur im Detailmodus an. Project-Health-Readmodel, Dashboard-Detail und Assistant-get_project_health tragen jetzt ebenfalls eine explizite Budget-Herleitung mit Base-vs-Adjusted-Spend, Holiday-/Absence-Abzügen, Holiday-aware-vs-Fallback-Assignments und Kalenderkontexten; das Widget zeigt diese Basis nur im Detailmodus an. Nächster Fokus: verbleibende Forecast-/Widget-Parität derselben Ableitungen schließen.
  • Slice 3: Assistant Parity, Policy Auto-Exposure, Advanced Queries Fortschritt: Tool-Sichtbarkeit und Laufzeit-Guarding auf gemeinsame Registry-/Access-Metadaten gezogen. Estimate-Tools tragen jetzt explizite Rollen-/Permission-/Cost-Metadaten statt impliziter Alt-Policy. Fokussierte Assistant-Policy-Regressionstests laufen gegen dieselbe zentrale Quelle. Tool-Selektion priorisiert Holiday-/Vacation-/Entitlement- sowie Dashboard-/Report-Anfragen jetzt gezielter, damit diese Tools unter dem OpenAI-128-Limit erhalten bleiben. Top-Level-Chat-/Approval-/Prompt-Orchestrierung ist jetzt in assistant-procedure-support.ts und assistant-system-prompt.ts extrahiert; API-Typecheck plus fokussierte Assistant-Suite laufen wieder grün. Produktive AI-Fallbacks, Admin-UI-Platzhalter und Settings-Default im Frontend zeigen jetzt konsistent gpt-5.4 statt alter gpt-4o-mini-Defaults; die fokussierte Assistant-/Settings-/Insights-Suite dafür ist grün validiert.
  • Slice 4: Reports, Templates/Blueprints, Export Completeness Fokus: Report-Templates/Blueprints, SAH-/Bezugsgrößen-Vollständigkeit und Export-Parität zur UI weiterziehen. Fortschritt: Report Builder exponiert Template-Beschreibung und Shared-Status jetzt auch im Frontend statt nur im Backend-Vertrag. Gespeicherter Template-Status vs. lokal geänderte Builder-Konfiguration wird jetzt explizit angezeigt, damit lokale Draft-Änderungen nicht mehr wie persistierte Vorlagen wirken. Duplicate-Template-Saves werden jetzt fachlich als CONFLICT mit verständlicher Meldung statt als roher DB-Fehler zurückgegeben. resource_month-Explainability ist jetzt im gemeinsamen Report-Pfad statt nur im Assistant-Sonderfall verdrahtet; der Builder zeigt dieselbe Holiday-/Absence-/SAH-Basis kompakt im Result-Header an. resource_month-Exporte laufen jetzt als XLSX mit separatem Explainability-Sheet, damit SAH-/Kalender-/Feiertagslogik im Export nachvollziehbar bleibt ohne Logik in Excel neu aufzubauen. Der resource_month-Blueprint-/Preset-Katalog kommt jetzt aus einem gemeinsamen Backend-Vertrag inklusive Runtime-Output-Schema statt aus lokalem Frontend-Hardcode; fokussierte Router-/Typecheck-Validierung dafür ist grün. resource, project und assignment tragen jetzt zusätzliche Bezugsgrößen wie Blueprint, Client Unit, Enterprise ID, Value Score, Shoring-/Onshore-Felder sowie Resource-/Project-Kontext an Assignments in den Report-Spaltenkatalog. Nächster Fokus: verbleibende Report-/Export-Vollständigkeit an echten Nutzerflows prüfen, insbesondere Frontend-/Export-Verhalten außerhalb von resource_month.
  • Slice 5: Notifications, Tasks, Broadcasts, Reminder Reliability Fortschritt: Notification-/Reminder-/Webhook-Testtrio ist grün validiert. Zukünftige Scheduled Broadcasts mit Task-/Approval-Metadaten werden jetzt hart abgewiesen, damit taskAction/dueDate nicht still verloren gehen. Broadcast-Fanout mappt jetzt auch verlorene sourceId-/Sender-Referenzen stabil auf fachliche NOT_FOUND-Fehler statt rohe FK-Fehler. Nicht-terminale Task-Statuswechsel bereinigen jetzt completedAt/completedBy deterministisch, damit wiedergeöffnete Tasks fachlich und technisch konsistent bleiben. Wiederkehrende Reminder ziehen nextRemindAt nach Downtime jetzt direkt auf den ersten Termin nach now vor, damit überfällige Serien-Erinnerungen nicht auf jedem Scheduler-Tick erneut feuern. Task-Reassignment mappt fehlende assigneeId-Referenzen jetzt über den gemeinsamen Notification-Fehlerpfad stabil auf NOT_FOUND, statt rohe FK-Fehler aus dem Core-Router nach oben zu reichen. Immediate Broadcasts werden jetzt ohne $transaction hart abgewiesen, damit es keinen nicht-atomaren Fan-out-Fallback mit Teilpersistenz mehr gibt. Broadcast-Fanout gegen fehlende Empfänger ist jetzt ebenfalls fokussiert abgesichert: userId-FK-Verlust im Recipient-Create mappt stabil auf fachliches NOT_FOUND, ohne Broadcast-Finalisierung, SSE oder E-Mail-Nebenwirkungen. Direkte Router-Writes für notification.create und notification.createTask nutzen jetzt denselben kontextsensitiven Notification-Fehlerpfad wie Assistant/Broadcast, sodass fehlende Recipient-/Sender-Referenzen als fachliche NOT_FOUND-Fehler statt rohe Prisma-FKs herauskommen. executeTaskAction blockt jetzt auch DISMISSED als terminalen Zustand und läuft nur noch transaktional, damit Domain-Aktion und Task-Abschluss nicht mehr auseinanderlaufen; die Assistant-Test-Helpers spiegeln denselben Transaction-Contract jetzt ebenfalls. Reminder-Updates und -Deletes sind jetzt auch gegen Missing-/Wrong-Owner-Fälle fokussiert regressionsgesichert, damit die fachliche NOT_FOUND-Oberfläche stabil bleibt. assignTask fängt jetzt auch den Read-then-Update-Race auf gelöschte Tasks sauber als fachliches NOT_FOUND ab; Missing-Task- und Wrong-Category-Pfade sind auf Router-Ebene zusätzlich abgesichert. Nächster Fokus: verbleibende Persistenz-/Broadcast-Kanten schließen.
  • Slice 6: Dashboard, Widgets, Explainability, First-Load Stability Fortschritt: Peak Times komprimiert die Summary-Leiste jetzt in drei kompakte Pills statt großer redundanter Karten. Zusatztexte und Erklärinfos bleiben dort jetzt konsequent hinter dem Details-Toggle. Budget Forecast reduziert Summary-Helfertexte und sekundäre Zeilendetails jetzt ebenfalls sauber bei Details off. Dashboard-Layout-Hydration überschreibt beim First Load lokale Nutzeraktionen nicht mehr, wenn DB-Layout und erste Interaktion race-condition-artig aufeinandertreffen; fokussierte Hook-/Widget-Tests dafür sind grün. Top-Value-Ressourcen tragen jetzt auch countryName durch Readmodel, API-Detailpfad und Widget-Lokationsanzeige, damit Kalender-/Feiertagsbezug nicht nur als Kürzel sichtbar ist. Top-Value trägt jetzt zusätzlich valueScoreBreakdown und valueScoreUpdatedAt bis in API-/Assistant-Detailpfade und Widget-Hover durch, damit die Score-Herleitung nachvollziehbar bleibt ohne den Default-View mit Text zu überladen. Peak Times trägt jetzt pro Periode calendarContextCount plus kompakte calendarLocations aus dem Application-Layer bis in Widget-Hover, Detailpanel und get_dashboard_detail, damit regionale Feiertags-/Standortbasis auch für Auslastungsspitzen sichtbar bleibt.
  • Slice 7: DB Safety, Env Loading, Migration/Seed Discipline, Naming Cleanup Fortschritt: Repo-Wrapper für Env-Laden sind gesetzt; aktuelle Assistant-, Import/Export- und Insights-Tests sowie der Web-Typecheck laufen grün. Operative Altspuren planarchy kommen derzeit noch über einen Symlink-Pfad und einzelne Logs/Artefakte hinein und werden weiter bereinigt. pnpm db:prisma -- ... prüft jetzt für destruktive oder schemawirksame Prisma-Kommandos hart, dass DATABASE_URL wirklich auf capakraken zeigt; falsche Ziele wie planarchy werden vor jedem Prisma-Zugriff blockiert. Aktive Worker: Worker A: Slice 5 Notification-/Broadcast-Persistenzkanten. Worker B: Slice 2 Holiday-/Vacation-Explainability in Forecast-/Widget-Parität. Lokal: Slice 1 Timeline-Stabilität, Slice 3 Assistant-Parity, Slice 7 DB-/Env-Guardrails und Naming-Cleanup.

Validierter Stand

  • Assistant-Regressionen: 8 fokussierte Testdateien, 36 Tests grün.
  • Assistant-/Settings-/Insights-/AI-Defaults: 8 fokussierte Testdateien, 30 Tests grün.
  • Web-Typecheck: pnpm --filter @capakraken/web exec tsc -p tsconfig.typecheck.json --noEmit grün.
  • Timeline/SSE-Regressionen: pnpm --filter @capakraken/api exec vitest run src/__tests__/timeline-router.test.ts src/__tests__/sse-subscription-policy.test.ts grün (15 Tests).
  • Dashboard WidgetContainer: pnpm --filter @capakraken/web exec vitest run src/components/dashboard/WidgetContainer.test.tsx grün (2 Tests).
  • Insights Slice: pnpm --filter @capakraken/api exec vitest run src/__tests__/insights-router.test.ts src/__tests__/insights-procedure-support.test.ts grün (9 Tests).
  • Country Slice: pnpm --filter @capakraken/api exec vitest run src/__tests__/country-router.test.ts src/__tests__/country-procedure-support.test.ts src/__tests__/country-support.test.ts grün (12 Tests).
  • Holiday Calendar Slice: pnpm --filter @capakraken/api exec vitest run src/__tests__/holiday-calendar-router.test.ts src/__tests__/holiday-calendar-router-auth.test.ts src/__tests__/holiday-calendar-procedure-support.test.ts src/__tests__/holiday-calendar-support.test.ts src/__tests__/holiday-calendar-write-support.test.ts grün (26 Tests).
  • Dispo Slice: pnpm --filter @capakraken/api exec vitest run src/__tests__/dispo-router.test.ts src/__tests__/dispo-procedure-support.test.ts src/__tests__/dispo-management-support.test.ts grün (10 Tests).
  • Org Unit + Import/Export Slice: pnpm --filter @capakraken/api exec vitest run src/__tests__/org-unit-router.test.ts src/__tests__/org-unit-procedure-support.test.ts src/__tests__/org-unit-support.test.ts src/__tests__/import-export-router.test.ts src/__tests__/import-export-procedure-support.test.ts grün (19 Tests).
  • Estimate Slice: pnpm --filter @capakraken/api exec vitest run src/__tests__/estimate-router.test.ts grün (45 Tests).
  • Import/Export Procedure Support: pnpm --filter @capakraken/api exec vitest run src/__tests__/import-export-procedure-support.test.ts grün (5 Tests).
  • Assistant Tool Selection: pnpm --filter @capakraken/api exec vitest run src/__tests__/assistant-tool-selection.test.ts grün (3 Tests).
  • Assistant Split Regression Runner: pnpm --filter @capakraken/api test:assistant-split als explizite Fünf-Batch-Regression plus API-Typecheck etabliert; deckt jetzt auch export_projects_csv, Holiday-Resolution-Fehlerpfade und get_timeline_holiday_overlays ab.
  • Assistant Report Read: pnpm --filter @capakraken/api exec vitest run src/__tests__/assistant-tools-report-read.test.ts grün (3 Tests).
  • Report Router: pnpm --filter @capakraken/api exec vitest run src/__tests__/report-router.test.ts grün (8 Tests).
  • Report Explainability/Export Parity: pnpm --filter @capakraken/api exec vitest run src/__tests__/report-router.test.ts src/__tests__/assistant-tools-report-read.test.ts grün (11 Tests), pnpm --filter @capakraken/web exec vitest run src/components/reports/reportBuilderExplainability.test.ts grün (2 Tests).
  • Report Blueprint Catalog Contract: pnpm --filter @capakraken/api exec vitest run src/__tests__/report-router.test.ts grün (9 Tests), pnpm --filter @capakraken/api exec tsc -p tsconfig.json --noEmit --pretty false grün, pnpm --filter @capakraken/web exec vitest run src/components/reports/reportBuilderExplainability.test.ts grün (2 Tests).
  • Report Column Coverage Expansion: pnpm --filter @capakraken/api exec vitest run src/__tests__/report-router.test.ts grün (11 Tests), pnpm --filter @capakraken/api exec tsc -p tsconfig.json --noEmit --pretty false grün.
  • Chargeability Report Slice: pnpm --filter @capakraken/api exec vitest run src/__tests__/chargeability-report-router.test.ts src/__tests__/assistant-tools-chargeability-report.test.ts grün (7 Tests).
  • Notification Router + Reminder Scheduler: pnpm --filter @capakraken/api exec vitest run src/__tests__/notification-router.test.ts src/__tests__/reminder-scheduler.test.ts grün (41 Tests).
  • Project Health Explainability: pnpm --filter @capakraken/application exec vitest run src/__tests__/dashboard.test.ts -t "excludes regional public holidays from project health budget usage" grün (1 Test), pnpm --filter @capakraken/api exec vitest run src/__tests__/dashboard-router.test.ts -t "getProjectHealthDetail" grün (1 Test), pnpm --filter @capakraken/api exec vitest run src/__tests__/assistant-tools-dashboard-project-health.test.ts grün (1 Test).
  • Dashboard Top Value Country Context: pnpm --filter @capakraken/api exec vitest run src/__tests__/dashboard-procedure-support.test.ts src/__tests__/dashboard-router.test.ts grün (19 Tests).
  • Dashboard Top Value Explainability: pnpm --filter @capakraken/application exec vitest run src/__tests__/dashboard.test.ts -t "enforces visible-role filtering for top value resources" grün (1 Test), pnpm --filter @capakraken/api exec vitest run src/__tests__/dashboard-procedure-support.test.ts src/__tests__/dashboard-router.test.ts src/__tests__/assistant-tools-dashboard-detail.test.ts grün (20 Tests), pnpm --filter @capakraken/web exec vitest run src/components/dashboard/widgets/TopValueWidget.test.tsx grün (1 Test).
  • Peak Times Calendar Explainability: pnpm --filter @capakraken/application exec vitest run src/__tests__/dashboard.test.ts -t "peak times" grün (4 Tests aktiv, 17 geskippt), pnpm --filter @capakraken/web exec vitest run src/components/dashboard/widgets/PeakTimesWidget.test.tsx grün (1 Test), pnpm --filter @capakraken/api exec vitest run src/__tests__/dashboard-procedure-support.test.ts src/__tests__/assistant-tools-dashboard-detail.test.ts grün (4 Tests).
  • Notification Task Reopen Reliability: pnpm --filter @capakraken/api exec vitest run src/__tests__/notification-router.test.ts grün (37 Tests).
  • Notification Task Assignment Reference Guard: pnpm --filter @capakraken/api exec vitest run src/__tests__/notification-procedure-support.test.ts src/__tests__/notification-router.test.ts grün (46 Tests).
  • Notification Immediate Broadcast Transaction Guard: pnpm --filter @capakraken/api exec vitest run src/__tests__/notification-router.test.ts grün (40 Tests).
  • Notification Broadcast Recipient Reference Guard: pnpm --filter @capakraken/api exec vitest run src/__tests__/notification-procedure-support.test.ts src/__tests__/notification-router.test.ts grün (49 Tests), pnpm --filter @capakraken/api exec tsc -p tsconfig.json --noEmit --pretty false grün.
  • Notification Direct Create/CreateTask Reference Guard: pnpm --filter @capakraken/api exec vitest run src/__tests__/notification-procedure-support.test.ts src/__tests__/notification-router.test.ts src/__tests__/assistant-tools-notification-create-errors.test.ts src/__tests__/assistant-tools-task-create-errors.test.ts grün (60 Tests), pnpm --filter @capakraken/api exec tsc -p tsconfig.json --noEmit --pretty false grün.
  • Notification Task Action Transaction Guard: pnpm --filter @capakraken/api exec vitest run src/__tests__/notification-router.test.ts src/__tests__/assistant-tools-task-action-guards.test.ts src/__tests__/assistant-tools-task-action-execution.test.ts src/__tests__/assistant-tools-task-action-assignment-errors.test.ts src/__tests__/assistant-tools-task-action-vacation-errors.test.ts grün (56 Tests), pnpm --filter @capakraken/api exec tsc -p tsconfig.json --noEmit --pretty false grün.
  • Notification Reminder Ownership + AssignTask Race Guard: pnpm --filter @capakraken/api exec vitest run src/__tests__/notification-router.test.ts grün (51 Tests), pnpm --filter @capakraken/api exec tsc -p tsconfig.json --noEmit --pretty false grün.
  • Notification Support + Assistant Router: pnpm --filter @capakraken/api exec vitest run src/__tests__/notification-procedure-support.test.ts src/__tests__/notification-router.test.ts src/__tests__/notification-router-auth.test.ts src/__tests__/assistant-router.test.ts src/__tests__/assistant-router-auth.test.ts src/__tests__/assistant-chat-loop.test.ts src/__tests__/assistant-chat-response.test.ts src/__tests__/assistant-tool-selection.test.ts src/__tests__/assistant-approvals.test.ts src/__tests__/assistant-procedure-support.test.ts grün (74 Tests).
  • Assistant Broadcast Validation: pnpm --filter @capakraken/api exec vitest run src/__tests__/assistant-tools-broadcast-send-validation-errors.test.ts grün (3 Tests).
  • Staffing Read Slice: pnpm --filter @capakraken/api exec vitest run src/__tests__/staffing-router.test.ts src/__tests__/assistant-tools-holiday-staffing-suggestions.test.ts src/__tests__/assistant-tools-advanced-resource-ranking.test.ts grün (32 Tests).
  • Vacation Read Slice: pnpm --filter @capakraken/api exec vitest run src/__tests__/vacation-router.test.ts src/__tests__/vacation-router-auth.test.ts grün (58 Tests).
  • API-Typecheck: pnpm --filter @capakraken/api exec tsc -p tsconfig.json --noEmit --pretty false grün.

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 done - top-level chat, approval payloads und system prompt in Support-Module extrahiert
audit-log.ts monitor 4 Optional: list/detail reads und filter-building trennen, falls Auth/Wiring wächst
blueprint.ts done - summary/list reads, identifier reads, CRUD, role-preset mutation und global-field procedures in blueprint-procedure-support.ts extrahiert
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 done - list/tree reads, identifier reads, CRUD/deactivate und sort-order batch mutation in client-procedure-support.ts extrahiert
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 done - list/identifier reads, country CRUD, metro-city CRUD
dashboard.ts excluded_for_now - Bewusst zurückgestellt; hoher Querschnitt und paralleler Scope
dispo.ts done - workbook input schemas, staging/validation, staged-read procedures, resolve/commit/cancel mutations
effort-rule.ts done - list/detail reads, CRUD/default toggle, preview und apply-rules mutation in effort-rule-procedure-support.ts extrahiert
entitlement.ts excluded_for_now - Bewusst zurückgestellt; größerer Fachblock
estimate.ts done - commercial reads, demand line writes, phasing, version workflow, aggregate read models
experience-multiplier.ts done - list/detail reads, CRUD/default toggle, preview und apply-rules mutation in experience-multiplier-procedure-support.ts extrahiert
holiday-calendar.ts done - calendar CRUD, entry CRUD; catalog/resolution reads sind schon separat
import-export.ts done - export reads, import preview/validation, file-bound orchestration
insights.ts done - anomaly/summary reads, cached narrative read, AI narrative mutation
management-level.ts done - group reads/writes, level writes/delete und Audit-Orchestrierung in management-level-procedure-support.ts extrahiert
notification.ts later 3 Top-Level ist tragbar; nächster sinnvoller Schritt ist die weitere Zerlegung von notification-procedure-support.ts
org-unit.ts done - list/tree reads, identifier reads, CRUD/deactivate
project.ts monitor 4 Bereits stark komponiert; optional nur list und getById separat ziehen
rate-card.ts done - list/detail/match reads, card CRUD, line CRUD und replace-lines in rate-card-procedure-support.ts extrahiert
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. Phase-2-Hotspots mit Vacation Read Separation
  2. Phase-2-Hotspots mit Staffing Read Pipeline Split
  3. notification.ts via weiterer Zerlegung von notification-procedure-support.ts
  4. entitlement.ts nach Abschluss der Holiday-/Vacation-Parität
  5. dashboard.ts nur bei erneutem Wachstum im API-Router
  6. user.ts nur, falls dort wieder Top-Level-Orchestrierung anwächst

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
Resource Shared Read Decomposition 1 resource-read-shared.ts, resource-summary-read-procedure-support.ts, resource-identifier-read.ts Summary-/Detail-Selects, Identifier-Selects und Mapper aus resource-read-shared.ts in fokussierte Helper extrahieren; oeffentliche Read-Vertraege stabil halten
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-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
  • rate-card: rate-card procedures extrahiert
  • effort-rule: effort-rule procedures extrahiert
  • experience-multiplier: experience-multiplier procedures extrahiert
  • management-level: management-level procedures extrahiert
  • blueprint: blueprint procedures extrahiert
  • client: client procedures extrahiert
  • country: read-/write-procedures in country-procedure-support.ts validiert
  • holiday-calendar: write-procedures in holiday-calendar-procedure-support.ts validiert
  • dispo: staged import/read/write procedures in dispo-procedure-support.ts validiert
  • import-export: file-bound orchestration in import-export-procedure-support.ts validiert
  • insights: procedure support und nullable-settings-Haertung validiert
  • org-unit: read-/write-procedures in org-unit-procedure-support.ts validiert
  • estimate: write/orchestration, rate lookup und Fehlertranslation in estimate-procedure-support.ts validiert
  • assistant: chat-/approval-/prompt orchestration in assistant-procedure-support.ts und assistant-system-prompt.ts validiert