feat(codes): server actions + seed/scripts gebruiken code overal

- actions/tasks.ts: saveTask + createTaskAction (legacy form) gebruiken
  createWithCodeRetry + generateNextTaskCode; persisten product_id
  denormalisatie. P2002 op user-supplied code wordt 422 met fieldError
- actions/pbis.ts + stories.ts: insert-helpers nemen verplichte string;
  update laat code-veld weg uit data wanneer null (kan niet meer leeg
  worden gemaakt nu DB NOT NULL is)
- actions/todos.ts: promoteTodoToPbi/Story genereren expliciet een code
  voor het transactiestart (kan niet binnen $transaction array retryen)
- prisma/seed.ts: per-product task counter geeft elke task een T-N code
- scripts/insert-milestone.ts: createMany berekent maxN voor product
  en assigneert T-{maxN+i+1} per nieuwe task

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Janpeter Visser 2026-05-04 08:36:41 +02:00
parent 829122d437
commit 7c82a736f5
6 changed files with 82 additions and 32 deletions

View file

@ -163,9 +163,19 @@ async function main() {
// Tasks: alleen als de story op dit moment 0 tasks had
if (!hadTasks && s.tasks.length > 0) {
if (!args.dryRun) {
const allTasks = await prisma.task.findMany({
where: { product_id: product.id },
select: { code: true },
})
const maxN = allTasks.reduce((m, t) => {
const match = /^T-(\d+)$/.exec(t.code)
return match ? Math.max(m, Number(match[1])) : m
}, 0)
await prisma.task.createMany({
data: s.tasks.map((t) => ({
data: s.tasks.map((t, i) => ({
story_id: storyId,
product_id: product.id,
code: `T-${maxN + i + 1}`,
title: t.title,
description: t.description || null,
priority: ms.priority,