feat(sprint): edit-icoon op PBI (Product Backlog) en story (Sprint Backlog)

- PBI-rij in Product Backlog-kolom: ✎-icoon rechts uitgelijnd, opent PbiDialog
  (rij is nu div role=button i.p.v. nested-button)
- Story-rij in Sprint Backlog-kolom: ✎-icoon vóór de Trash, opent StoryDialog
- SprintStory + PbiWithStories verrijkt met velden die de dialogen lezen
  (description / acceptance_criteria / pbi_id / created_at op story; priority /
  status / description op PBI)
- pbi.status via pbiStatusToApi → PbiStatusApi (DB UPPER_SNAKE → API lowercase)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Janpeter Visser 2026-05-04 09:19:49 +02:00
parent cc6baeebc1
commit 6a76bc0f8c
3 changed files with 70 additions and 6 deletions

View file

@ -3,6 +3,7 @@ import { notFound, redirect } from 'next/navigation'
import { getSession } from '@/lib/auth'
import { getAccessibleProduct } from '@/lib/product-access'
import { prisma } from '@/lib/prisma'
import { pbiStatusToApi } from '@/lib/task-status'
import { SprintBoardClient } from '@/components/sprint/sprint-board-client'
import { SprintHeader } from '@/components/sprint/sprint-header'
import type { SprintStory, PbiWithStories, ProductMember } from '@/components/sprint/sprint-backlog'
@ -69,6 +70,10 @@ export default async function SprintBoardPage({ params, searchParams }: Props) {
id: s.id,
code: s.code,
title: s.title,
description: s.description,
acceptance_criteria: s.acceptance_criteria,
pbi_id: s.pbi_id,
created_at: s.created_at,
priority: s.priority,
status: s.status,
taskCount: s.tasks.length,
@ -108,10 +113,17 @@ export default async function SprintBoardPage({ params, searchParams }: Props) {
id: pbi.id,
code: pbi.code,
title: pbi.title,
priority: pbi.priority,
status: pbiStatusToApi(pbi.status),
description: pbi.description,
stories: pbi.stories.map(s => ({
id: s.id,
code: s.code,
title: s.title,
description: s.description,
acceptance_criteria: s.acceptance_criteria,
pbi_id: s.pbi_id,
created_at: s.created_at,
priority: s.priority,
status: s.status,
taskCount: 0,