From 1875e79ce130e55a5acadc3b78282bf87fbdbe3e Mon Sep 17 00:00:00 2001 From: "bert.hausmans" Date: Thu, 23 Apr 2026 20:44:46 +0200 Subject: [PATCH] docs(backlog): add gaps discovered during S3a PR 2 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - TECH-06 — ESLint config ontbreekt in apps/portal (pendant van TECH-05). - DOC-02 — VitePress docs:build faalt op missing image in /docs/volunteer/je-aanmelden-via-een-link.md. - DOC-03 — Formulieren sidebar story is incompleet; nog geen publicatieflow, inzendingen-overzicht, templates, webhooks, conditionele logica. - FORM-09 — TriggerPersonIdentityMatchOnFormSubmit ShouldQueue herzien: async queue-dispatch levert null bij submit-response; eager state + lazy resolution patroon invoeren nu de refactor nog klein is (voor FORM-05 landt). Co-Authored-By: Claude Opus 4.7 (1M context) --- dev-docs/BACKLOG.md | 73 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 73 insertions(+) diff --git a/dev-docs/BACKLOG.md b/dev-docs/BACKLOG.md index 3a8cc77a..bfd88489 100644 --- a/dev-docs/BACKLOG.md +++ b/dev-docs/BACKLOG.md @@ -339,6 +339,32 @@ shifts claimen zonder toegang tot de Organizer app. --- +### DOC-02 — VitePress docs:build faalt op missing image + +**Aanleiding:** `/docs/volunteer/je-aanmelden-via-een-link.md` verwijst +naar `./images/placeholder.png` dat niet bestaat. Dev mode werkt, +build faalt. Blokkeert CI als die `docs:build` gaat draaien. +**Wat:** Placeholder afbeelding toevoegen OF de referentie weghalen / +vervangen door een echte screenshot van het registratieflow. +**Prioriteit:** Laag — cosmetisch, niet blokkerend voor dev. + +--- + +### DOC-03 — Formulieren sidebar story is incompleet + +**Aanleiding:** Tijdens S3a PR 2 is +`docs/organizer/forms/concepts/wat-is-een-formulier.md` gewired in de +sidebar, samen met de nieuwe veldtype-pagina's. Maar de bredere +Formulieren-sidebar mist nog: publicatieflow, inzendingen-overzicht, +templates, webhook-configuratie, conditionele logica. +**Wat:** Dedicated docs-sprint voor de Formulieren-module in +VitePress. Schat: 6-8 pagina's in Nederlands, aimed at organisatoren +die formulieren configureren. +**Prioriteit:** Middel — landt best vlak voor/na S3b (organizer +form-builder UI), omdat screenshots pas zin hebben als de UI staat. + +--- + ### FORM-05 — Smart identity-match on public submission values **Stub-status (S3a PR 2, 2026-04-23):** Public event_registration @@ -366,6 +392,39 @@ Prioriteit: Medium. Kan gebundeld worden met de organizer --- +### FORM-09 — TriggerPersonIdentityMatchOnFormSubmit ShouldQueue herzien + +**Aanleiding:** De bestaande listener `implements ShouldQueue`. Gevolg: +bij een public event_registration submission is +`identity_match_status` nog `null` op het moment dat de submit-HTTP- +response terugkeert. De confirmation page rendert daardoor zonder +banner bij first load — pas na een refresh (of queue-worker tick) is +de `pending` staat zichtbaar. Tijdens S3a PR 2 is dit genoteerd als +"dev ergonomics" (draai `queue:work` erbij), maar dat is een +workaround, geen fix. +**Wat:** Verwijder `implements ShouldQueue` uit +`TriggerPersonIdentityMatchOnFormSubmit`. De listener wordt +orchestrator: schrijft `identity_match_status` synchroon in de +request-lifecycle zodat de submit-response direct klopt. Wanneer +FORM-05 proper landt met zwaardere matching-logica +(`PersonIdentityService::detectMatchesByValues` met fuzzy name +matching over de hele org), wordt dat zware werk gedispatched als +aparte `ResolveIdentityMatchJob` vanuit deze listener. Eager state +transition blijft sync, heavy resolution blijft async. + +Zie ook: architectuur-discussie in de S3a planning-sessie +("eager state + lazy resolution" patroon). + +**Prioriteit:** Middel — niet user-facing blocking vandaag (draait +met `queue:work` gewoon), maar architecturaal is de refactor juist nu +klein (1 regel weghalen + test-aanpassing). Wordt groter als FORM-05 +landt zonder deze refactor. + +**Impact:** ~5 regels code, 1-2 test-aanpassingen. Eén commit, aparte +PR. + +--- + ### SUP-01 — Leveranciersportal + productieverzoeken **Aanleiding:** Leveranciers moeten productie-informatie kunnen indienen. @@ -449,6 +508,20 @@ Vuexy 9.5 template. Moet in één keer groen draaien. --- +### TECH-06 — ESLint config ontbreekt in apps/portal + +**Aanleiding:** `npm run lint` faalt in `apps/portal/` omdat +`.eslintrc.cjs` niet bestaat. Geen flat-config equivalent aanwezig. +Portal draait dus effectief zonder lint, wat botst met CLAUDE.md's +zero-compromise regels. Apart van TECH-05 (dat over apps/app gaat). +**Wat:** Flat-config ESLint installeren in `apps/portal/`, afgestemd +op Vue 3 + TypeScript + Vuexy 10.11.1. In één keer groen laten +draaien. Bij voorkeur gedeelde shared-config tussen apps/app en +apps/portal om drift te voorkomen. +**Prioriteit:** Middel — tooling-gap, niet user-facing. + +--- + ### ~~TECH-02 — scopeForFestival helper op Event model~~ ✅ OPGELOST ---