From 7f8de7bf85c846e8764c4d5b3c136a28e851051e Mon Sep 17 00:00:00 2001 From: Scrum4Me Agent <30029041+madhura68@users.noreply.github.com> Date: Sat, 9 May 2026 17:07:00 +0200 Subject: [PATCH] docs(PBI-jobs): voeg F-14 restart-acceptatiecriteria toe aan functional.md Co-Authored-By: Claude Sonnet 4.6 --- docs/specs/functional.md | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/docs/specs/functional.md b/docs/specs/functional.md index e649ee3..436fafe 100644 --- a/docs/specs/functional.md +++ b/docs/specs/functional.md @@ -522,6 +522,30 @@ De app is deployable op Vercel + Neon PostgreSQL en lokaal draaibaar met een Neo --- +### F-14: Job-queue inzicht en beheer (`/jobs`) + +**Prioriteit:** v1 — Operationele controle +**Persona:** Lars + +**Omschrijving:** +De `/jobs`-pagina geeft een overzicht van alle `ClaudeJob`-records voor het actieve product. Vanuit de `JobDetailPane` kan de gebruiker een mislukte, geannuleerde of overgeslagen job opnieuw in de wachtrij zetten. + +**Acceptatiecriteria:** + +#### Mislukte job opnieuw starten + +- [ ] Een `ClaudeJob` in status `FAILED`, `CANCELLED` of `SKIPPED` toont een "Opnieuw starten"-knop in de `JobDetailPane`. +- [ ] De knop reset de bestaande job (geen nieuwe job aanmaken): `status → QUEUED`, `retry_count + 1`, alle run-velden gecleared. +- [ ] Bij `SPRINT_IMPLEMENTATION`-jobs worden alle bijbehorende `SprintTaskExecution`-rows in dezelfde transactie teruggezet naar `PENDING`. +- [ ] Tijdens de server-action is de knop disabled (loading-state). De UI updatet via SSE zonder handmatige refresh. +- [ ] Demo-sessies zien een `DemoTooltip` op de knop en kunnen niet restarten (drie-laagse policy: knop disabled + server action `session.isDemo`-check + HTTP 403). + +**Randgevallen:** +- Job is ondertussen al door een andere actie opnieuw gestart (race condition) → server-action controleert de huidige status vóór de update; als de status niet meer `FAILED/CANCELLED/SKIPPED` is, retourneert de action een foutmelding. +- Demo-token probeert via directe API-aanroep te restarten → 403 Forbidden. + +--- + ## Navigatiestructuur ```