Scrum4Me/__tests__
Madhura68 9b299198cd feat(PBI-59): Sprint.code (SP-N sequentieel per product)
Voegt een verplicht code-veld toe aan Sprint, sequentieel per product
(consistent met PBI-N, ST-NNN, T-N).

- **Schema** — `Sprint.code String @db.VarChar(30)` + `@@unique([product_id, code])`
- **Migratie** — voegt kolom toe als nullable, backfillt bestaande sprints
  via `ROW_NUMBER() OVER (PARTITION BY product_id ORDER BY created_at)`
  als `SP-N`, en zet daarna NOT NULL + UNIQUE.
- **Generator** — `generateNextSprintCode(productId)` in lib/code-server.ts
  volgt het patroon van story/pbi/task; createSprintAction gebruikt
  `createWithCodeRetry` voor race-bescherming.
- **Seed** — sprint-counter per product (`SP-1`, `SP-2`, ...).

Zichtbaar in:
- Sprint-header (`Product › Sprint actief · SP-3`)
- JobCard + JobDetailPane voor SPRINT_IMPLEMENTATION jobs
- Insights: VelocityChart x-axis (compacter dan goal-truncated),
  AlignmentTrend tooltip, SprintInfoStrip
- actions/jobs-page.ts: `sprintCode` is weer een echte code i.p.v. null

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-07 20:03:28 +02:00
..
actions feat(PBI-59): Sprint.code (SP-N sequentieel per product) 2026-05-07 20:03:28 +02:00
api feat(PBI-33): chat-kanaal UI + lint cleanup (#145) 2026-05-07 16:04:53 +02:00
app feat(ST-1138): mobile Solo-pagina + verify TaskDetailDialog (T-331/T-332/T-333) 2026-05-04 10:52:41 +02:00
components Sprint: UI taken/ (#149) 2026-05-07 18:41:19 +02:00
lib PBI-56 + ST-1275: PLAN_READY → GRILLING re-grill + SKIPPED status rendering (#147) 2026-05-07 17:36:44 +02:00
proxy proxy: add /ideas to protectedRoutes; verify demo-guard for /api/ideas (M12 T-501) 2026-05-04 19:56:41 +02:00
realtime End-to-end smoke-test: PBI/Story/Task verschijnen zonder refresh (#57) 2026-05-02 21:09:37 +02:00
stores feat(ST-vi5iff4s): SoloTask-interface + Prisma-queries uitbreiden met PBI-velden (#116) 2026-05-06 03:30:11 +02:00
lars-flow-checklist.md docs(ST-612): update Lars-flow checklist met todo Data Table stappen 2026-04-25 20:10:16 +02:00