chore(backlog): mark ST-801–806 as done
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
ba05684a2d
commit
413e8ad861
1 changed files with 6 additions and 6 deletions
|
|
@ -524,27 +524,27 @@ Transport: Server-Sent Events (Vercel ondersteunt geen stateful WebSockets). Bro
|
|||
|
||||
Filtering server-side: alleen events binnen de actieve sprint van een product waar de gebruiker eigenaar of lid van is, plus `assignee_id == userId` (eigen kolommen) of `assignee_id IS NULL` (claim-lijst).
|
||||
|
||||
- [ ] **ST-801** Postgres LISTEN/NOTIFY-infrastructuur
|
||||
- [x] **ST-801** Postgres LISTEN/NOTIFY-infrastructuur
|
||||
- Migratie met `notify_solo_change()`-functie + `AFTER INSERT/UPDATE/DELETE`-triggers op `tasks` en `stories`; payload bevat `op`, `entity`, `id`, `product_id`, `sprint_id`, `assignee_id`, `fields` (gewijzigde kolommen)
|
||||
- Done when: `psql $DIRECT_URL -c "LISTEN scrum4me_solo;"` toont een payload bij een UI-mutatie
|
||||
|
||||
- [ ] **ST-802** SSE-route `/api/realtime/solo`
|
||||
- [x] **ST-802** SSE-route `/api/realtime/solo`
|
||||
- `app/api/realtime/solo/route.ts`, `runtime: 'nodejs'`, `maxDuration: 300`; auth via iron-session, query-param `product_id`, opent `pg.Client` op `DIRECT_URL` met `LISTEN`; heartbeat 25s; hard close 240s; in-handler filtering op product/sprint/assignee
|
||||
- Done when: `curl -N` op localhost levert binnen 1s een event op na een task-mutatie via UI
|
||||
|
||||
- [ ] **ST-803** Client hook `useSoloRealtime(productId)`
|
||||
- [x] **ST-803** Client hook `useSoloRealtime(productId)`
|
||||
- `lib/realtime/use-solo-realtime.ts`; opent `EventSource`, exponential backoff reconnect (1s → 30s); Page Visibility API voor pauseren/hervatten; cleanup op unmount
|
||||
- Done when: tab wisselen sluit/opent connectie zichtbaar in DevTools Network
|
||||
|
||||
- [ ] **ST-804** Solo-store realtime-acties
|
||||
- [x] **ST-804** Solo-store realtime-acties
|
||||
- `applyTaskUpdate`, `applyTaskCreate`, `applyTaskDelete`, `applyStoryAssignment`, `markPending`/`clearPending` om eigen optimistic-echo te onderdrukken
|
||||
- Done when: unit-test op solo-store met gesimuleerde events laat juiste eindstate zien
|
||||
|
||||
- [ ] **ST-805** Wire-up in SoloBoard + UI-indicator
|
||||
- [x] **ST-805** Wire-up in SoloBoard + UI-indicator
|
||||
- `components/solo/solo-board.tsx` roept de hook aan; klein "live"/"verbinden..."-statusindicator; toast bij langer dan 5s disconnected
|
||||
- Done when: twee tabs van Solo Paneel — mutatie in tab A komt binnen 1–2s in tab B zonder refresh
|
||||
|
||||
- [ ] **ST-806** Documentatie + acceptatietest
|
||||
- [x] **ST-806** Documentatie + acceptatietest
|
||||
- Sectie "Realtime updates" in `docs/scrum4me-architecture.md` met diagram en filtering-regels; vermelding in `CLAUDE.md`; korte note over `/api/realtime/solo` in `docs/API.md`; handmatig E2E-scenario's gedraaid (zelfde gebruiker twee tabs, MCP-write, REST-write, story-claim, network-flap)
|
||||
- Done when: alle scenario's lopen door zonder onverwachte gedragingen
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue