From fbd56aa934b25b5c2b79ced923c3a1ec1993800b Mon Sep 17 00:00:00 2001 From: Madhura68 Date: Sat, 25 Apr 2026 19:45:19 +0200 Subject: [PATCH] =?UTF-8?q?docs(ST-509/510):=20verfijn=20plan=20=E2=80=94?= =?UTF-8?q?=20multi-select=20bulk-archiveer=20+=20promote=20in=20kaart?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ST-509: selectie-checkbox voor bulk-archivering (archiveSelectedTodosAction), aparte rij-klik voor detail-kaart, paginatelling toegevoegd. ST-510: done-toggle in kaart, promote-knoppen in kaart (→ PBI / → Story), updateTodoAction dekt title + product_id + done. Co-Authored-By: Claude Sonnet 4.6 --- docs/scrum4me-backlog.md | 33 ++++++++++++++++++++------------- 1 file changed, 20 insertions(+), 13 deletions(-) diff --git a/docs/scrum4me-backlog.md b/docs/scrum4me-backlog.md index 0e2a0ab..3cc79c0 100644 --- a/docs/scrum4me-backlog.md +++ b/docs/scrum4me-backlog.md @@ -273,21 +273,28 @@ De MVP is klaar wanneer Lars — de primaire persona — de volledige cyclus kan - [ ] **ST-509** Todo Data Table - Installeer `@tanstack/react-table`; voeg shadcn `data-table`-patroon toe - - Kolommen: afvink-checkbox (inline toggle via `toggleTodoAction`), titel (max 2 regels, text-ellipsis), productnaam-badge, aanmaakdatum - - Toolbar boven de tabel: product-filter dropdown (Alles / Geen product / per product), "Archiveer afgerond"-knop (actief als er afgevinkte todos zijn) - - Paginering: max 10 rijen per pagina; vorige/volgende knoppen; paginatelling - - Rij-selectie: één rij tegelijk; geselecteerde rij visueel gemarkeerd; klik op geselecteerde rij deselecteert - - Lege staat: "Geen todo's voor deze selectie." als filter geen resultaten geeft; "Nog geen todo's. Maak er een aan hieronder." als de lijst helemaal leeg is - - Done when: tabel toont alle actieve todos; paginering werkt; filter werkt; afvinken persistent na herlaad; archiveer-knop verbergt afgevinkte todos + - **Kolommen:** + - Selectie-checkbox (kolom 1): multi-select voor bulk-archivering; header-checkbox selecteert/deselecteert alle zichtbare rijen + - Titel (kolom 2): max 2 regels, `line-clamp-2 truncate`; afgevinkte todos doorgestreept; klik op rij (buiten checkbox) opent detail-kaart + - Productnaam-badge (kolom 3) + - Aanmaakdatum (kolom 4) + - **Toolbar boven de tabel:** + - Product-filter dropdown (Alles / Geen product / per product) + - "+" knop: opent lege detail-kaart voor nieuw aanmaken (erft geselecteerd filter-product) + - "Archiveer geselecteerde (N)" knop: actief zodra ≥ 1 checkbox aangevinkt; roept `archiveSelectedTodosAction` aan met de geselecteerde IDs; resettet selectie na afloop + - **Paginering:** max 10 rijen per pagina; vorige/volgende knoppen; paginatelling ("1–10 van 23") + - **Lege staat:** "Geen todo's voor deze selectie." bij lege filter; "Nog geen todo's. Gebruik + om er een aan te maken." bij volledig lege lijst + - **`archiveSelectedTodosAction`** toevoegen aan `actions/todos.ts`: valideert dat alle meegegeven IDs bij de ingelogde gebruiker horen vóór schrijven; `archiveMany` via `updateMany` + - Done when: tabel toont alle actieve todos; paginering werkt; product-filter werkt; selectie-checkbox selecteert meerdere rijen; bulk-archiveren verwijdert geselecteerde rijen uit de weergave - [ ] **ST-510** Todo detail-kaart - - Kaart onder de tabel; altijd zichtbaar - - **Aanmaken:** "+" knop in toolbar; kaart toont leeg formulier met product-dropdown (erft geselecteerd filter-product, of "Geen product" als filter op "Alles" staat), titel-invoer; opslaan via `createTodoAction`; na opslaan: kaart leegmaken, tabel ververst - - **Bewerken:** klik op tabelrij laadt todo in kaart; velden: product-dropdown, titel, done-toggle; opslaan via nieuwe `updateTodoAction` (title + product_id); annuleren deselecteert rij en leegt kaart - - **Promoveren:** twee knoppen in de kaart — "→ PBI" en "→ Story"; openen de bestaande `PromotePbiDialog` en `PromoteStoryDialog`; alleen zichtbaar als een bestaande todo geselecteerd is - - **Demo-modus:** kaart-invoer uitgeschakeld; promote-knoppen verborgen - - `updateTodoAction` toevoegen aan `actions/todos.ts`: valideert eigenaarschap, past title en/of product_id aan, `revalidatePath('/todos')` - - Done when: aanmaken via kaart persisteert; bewerken van titel en product werkt; promote vanuit kaart opent juist dialoog; kaart leeg bij geen selectie; demo-gebruiker ziet uitgeschakelde kaart + - Kaart onder de tabel; altijd zichtbaar (leeg als geen todo geselecteerd of aangemaakt wordt) + - **Aanmaken:** "+" in toolbar zet kaart in aanmaak-modus; velden: product-dropdown (erft filter-product, of "Geen product" bij "Alles"), titel; opslaan via `createTodoAction`; na opslaan kaart leegmaken en tabel ververst + - **Bewerken:** klik op tabelrij (buiten checkbox) laadt todo in kaart; velden: product-dropdown, titel, done-toggle; opslaan via nieuwe `updateTodoAction` (title + product_id + done); annuleren deselecteert rij en leegt kaart + - **Promoveren:** knoppen "→ PBI" en "→ Story" in de kaart; openen de bestaande `PromotePbiDialog` en `PromoteStoryDialog`; alleen zichtbaar bij een bestaande geselecteerde todo + - **Demo-modus:** kaart-invoervelden uitgeschakeld; knoppen verborgen of disabled + - **`updateTodoAction`** toevoegen aan `actions/todos.ts`: valideert eigenaarschap; past `title`, `product_id` en/of `done` aan; `revalidatePath('/todos')` + - Done when: aanmaken via kaart persisteert; bewerken van titel, product en done-status werkt; promote vanuit kaart opent juist dialoog en verwijdert todo na bevestiging; kaart leeg bij geen selectie; demo-gebruiker ziet uitgeschakelde kaart - [ ] **ST-506** Rolbeheer in instellingen - `/settings` pagina met roltoewijzing (checkbox per rol: Product Owner, Scrum Master, Developer); minimaal één rol verplicht; `updateRoles` Server Action; geselecteerde rollen zichtbaar in profielbalk