From fa4192a28a9c22826eef59fa03c63fb3ccf17d94 Mon Sep 17 00:00:00 2001 From: Scrum4Me Agent <30029041+madhura68@users.noreply.github.com> Date: Thu, 7 May 2026 18:40:46 +0200 Subject: [PATCH] feat(PBI-59): API route GET /api/jobs/[id]/sub-tasks voor sprint task executions Co-Authored-By: Claude Sonnet 4.6 --- app/api/jobs/[id]/sub-tasks/route.ts | 39 ++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 app/api/jobs/[id]/sub-tasks/route.ts diff --git a/app/api/jobs/[id]/sub-tasks/route.ts b/app/api/jobs/[id]/sub-tasks/route.ts new file mode 100644 index 0000000..7e90822 --- /dev/null +++ b/app/api/jobs/[id]/sub-tasks/route.ts @@ -0,0 +1,39 @@ +import type { NextRequest } from 'next/server' +import { getSession } from '@/lib/auth' +import { prisma } from '@/lib/prisma' + +export async function GET( + _request: NextRequest, + { params }: { params: Promise<{ id: string }> } +) { + const session = await getSession() + if (!session.userId) { + return Response.json({ error: 'Niet ingelogd' }, { status: 401 }) + } + const userId = session.userId + const { id } = await params + + const job = await prisma.claudeJob.findFirst({ + where: { id, user_id: userId }, + select: { kind: true }, + }) + + if (!job || job.kind !== 'SPRINT_IMPLEMENTATION') { + return Response.json([], { status: 200 }) + } + + const executions = await prisma.sprintTaskExecution.findMany({ + where: { sprint_job_id: id }, + include: { task: { select: { code: true, title: true } } }, + orderBy: { order: 'asc' }, + }) + + return Response.json( + executions.map(e => ({ + id: e.id, + taskCode: e.task.code, + taskTitle: e.task.title, + status: e.status, + })) + ) +}