Files
CapaKraken/docs/assistant-tool-test-split-migration.md
T

6.0 KiB

Assistant Tool Test Split Migration

Stand: 2026-04-01

Diese Notiz hält fest, wie die alten Assistant-Tool-Monolith-Tests in kleinere, fachlich geschnittene Suiten aufgeteilt wurden und wie die Regression dafür reproduzierbar ausgeführt wird.

Ziel

  • Alte Sammeltests waren konfliktanfällig und schwer gezielt zu regressieren.
  • Neue Split-Tests schneiden entlang fachlicher Domänen und realer Access-/Mutation-Verträge.
  • Die Regression soll explizit und reproduzierbar laufen, statt implizit über breite Dateiglob-Matches.

Regression ausführen

Im Paket @capakraken/api:

pnpm test:assistant-split

Der Runner führt fünf explizite Vitest-Batches plus abschließenden API-Typecheck aus:

  1. Allocation und Quick Assign
  2. Timeline und Advanced Ranking
  3. Dispo
  4. Estimate
  5. Insights und Misc

Die explizite Regression enthält dabei auch dedizierte Suites für:

  • export_projects_csv
  • Holiday-Resolution-Fehlerpfade
  • get_timeline_holiday_overlays

Legacy-zu-Split-Mapping

assistant-tool-policy.test.ts

Aufgeteilt in:

  • assistant-tool-policy-access.test.ts
  • assistant-tool-policy-admin.test.ts
  • assistant-tool-policy-planning.test.ts
  • ergänzend domänische Guards in assistant-tools-auth-guard.test.ts

Abgedeckt werden damit insbesondere:

  • Sichtbarkeit von Tools je Rolle
  • Permission-Gates für Planning, Costs und useAssistantAdvancedTools
  • Trennung zwischen Self-Service, Admin- und Controller-Surface

assistant-tools-advanced.test.ts

Aufgeteilt in:

  • assistant-tools-advanced-resource-ranking.test.ts
  • assistant-tools-advanced-timeline-entries-view.test.ts
  • assistant-tools-advanced-timeline-holiday-overlays.test.ts
  • assistant-tools-advanced-project-timeline-context.test.ts
  • assistant-tools-advanced-project-shift-preview.test.ts
  • assistant-tools-timeline-resource-selection.test.ts

Abgedeckt werden damit insbesondere:

  • Advanced-Ranking und Project-Resource-Selection
  • Timeline-Readmodels, Holiday-Overlays und Shift-Preview
  • Access-Gates für viewPlanning, viewCosts und useAssistantAdvancedTools

assistant-tools-audit.test.ts

Aufgeteilt in:

  • assistant-tools-audit-log-list.test.ts
  • assistant-tools-audit-read.test.ts
  • assistant-tools-audit-entity-summary.test.ts
  • assistant-tools-audit-errors-auth.test.ts
  • ergänzend assistant-tools-query-change-history.test.ts

Abgedeckt werden damit insbesondere:

  • Listen-, Detail- und Summary-Reads
  • stabile Auth-/Role-Fehler für Controller-only Reads
  • Query-Change-History als separates Controller-Readmodel

assistant-tools-country.test.ts

Aufgeteilt in:

  • assistant-tools-country-list.test.ts
  • assistant-tools-country-get.test.ts
  • assistant-tools-country-mutations-success.test.ts
  • assistant-tools-country-mutations-errors.test.ts
  • assistant-tools-metro-city-mutations-success.test.ts
  • assistant-tools-metro-city-mutations-errors.test.ts

Abgedeckt werden damit insbesondere:

  • Country-Readmodels
  • Fehleroberflächen für Not Found und Duplikate
  • Country- und Metro-City-Mutationen

Hinweis: get_country verlangt inzwischen explizit VIEW_ALL_RESOURCES; die neuen Split-Tests sind an diesem aktuellen Vertrag ausgerichtet.

assistant-tools-holidays.test.ts

Aufgeteilt in:

  • assistant-tools-holiday-calendar-get.test.ts
  • assistant-tools-holiday-calendar-get-errors.test.ts
  • assistant-tools-holiday-calendars-list.test.ts
  • assistant-tools-holiday-calendar-mutations-success.test.ts
  • assistant-tools-holiday-calendar-mutations-guards.test.ts
  • assistant-tools-holiday-entry-mutations-success.test.ts
  • assistant-tools-holiday-entry-mutations-errors.test.ts
  • assistant-tools-holiday-resolution-calendar-preview.test.ts
  • assistant-tools-holiday-resolution-regional-resource.test.ts
  • assistant-tools-holiday-resolution-errors.test.ts
  • assistant-tools-holiday-capacity.test.ts
  • assistant-tools-holiday-chargeability.test.ts
  • assistant-tools-holiday-budget-shoring.test.ts
  • assistant-tools-holiday-simulation.test.ts
  • assistant-tools-holiday-staffing-suggestions.test.ts

Abgedeckt werden damit insbesondere:

  • Holiday-Calendars und deren CRUD
  • Region-/Resource-spezifische Auflösung
  • negative Pfade für unvollständige Perioden, unbekannte Ressourcen und unbekannte Preview-Länder
  • Holiday-Einfluss auf Capacity, Chargeability, Budget und Staffing

assistant-tools-import-export.test.ts

Aufgeteilt in:

  • assistant-tools-import.test.ts
  • assistant-tools-export.test.ts
  • assistant-tools-export-projects.test.ts
  • assistant-tools-dispo-import.test.ts
  • assistant-tools-dispo-import-batch-list-cancel.test.ts
  • assistant-tools-dispo-import-batch-delegation.test.ts
  • assistant-tools-dispo-staged-listings-resources-projects.test.ts
  • assistant-tools-dispo-staged-unresolved-read.test.ts
  • assistant-tools-dispo-staged-vacations-read.test.ts
  • assistant-tools-dispo-staged-assignments-read.test.ts
  • assistant-tools-dispo-staged-resolution.test.ts

Abgedeckt werden damit insbesondere:

  • CSV-Import-/Export-Pfade
  • dedizierte Execution-Coverage für export_resources_csv und export_projects_csv
  • Permission-Gates wie importData
  • Dispo-Import-Staging, Delegation, Commit und Cancel

Verifikationsstand

Der aktuelle Split-Runner wurde gegen die genannten Batches, die dedizierten Gap-Closure-Suiten und den API-Typecheck validiert.

Migration abgeschlossen

Der Legacy-Scope der entfernten Monolith-Suiten ist vollständig auf fachlich geschnittene Split-Suiten gemappt. Neue Assistant-Regressionen sollen direkt in die fachlich passende Split-Suite eingeordnet werden. Der explizite Split-Runner bleibt für diesen Scope der kanonische Regressionspfad; breite Glob-Runs und eine Wiederbelebung der alten Monolith-Dateien sind bewusst nicht vorgesehen.

Bewusst noch nicht Teil dieses Dokuments:

  • konfliktträchtige, bereits separat bearbeitete Notification-/Timeline-Support-Dateien
  • breit gefächerte Repo-weite Vitest-Globs, weil diese in der Vergangenheit versehentlich mehr als die Ziel-Suite eingesammelt haben