Scrum4Me/app/api
Madhura68 541154b521 feat(PBI-74): cache-headers + LIST endpoints (Story 7)
- T-868: cache: 'no-store' was al ingebouwd in fetchJson helper (Story 1).
  Bevestigd door bestaande ensureProductLoaded test die de fetch-init
  controleert.
- T-869: force-dynamic toegevoegd op alle vier nieuwe LIST-endpoints.
- T-870: vier nieuwe routes voor ensure*Loaded:
  - GET /api/products/:id/backlog → ProductBacklogSnapshot
  - GET /api/pbis/:id/stories → BacklogStory[]
  - GET /api/stories/:id/tasks → BacklogTask[]
  - GET /api/tasks/:id (nieuwe handler naast bestaande PATCH) → TaskDetail
    met _detail: true marker
  Auth via authenticateApiRequest (Bearer of iron-session); access-control
  via productAccessFilter (gebruiker is owner of member van het product).
  Statussen worden via taskStatusToApi/storyStatusToApi/pbiStatusToApi
  vertaald naar lowercase API-vorm.
- T-871: SSE-route /api/realtime/backlog stuurt al ready-event direct na
  LISTEN (regel 106) — geen wijziging nodig.

Verify: lint+typecheck clean, 651/651 tests groen.

Refs: PBI-74, ST-1324, T-868..T-871

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-10 01:23:25 +02:00
..
auth/pair M12 / ST-1110: Demo gebruiker read-only (#17) 2026-04-29 18:44:14 +02:00
cron feat(T-572): map SKIPPED in lib/job-status + alle terminal-checks 2026-05-05 23:10:14 +02:00
debug fix(privacy): NODE_ENV-guard 4 debug-routes (before-launch privacy review) 2026-05-04 14:16:49 +02:00
health Todo description, entity codes, REST API extensions and Claude Code hardening (ST-509/511/512/513) (#2) 2026-04-26 23:40:54 +02:00
ideas feat(ideas): secondary_products meeladen in IdeaDto en alle queries 2026-05-06 02:20:34 +02:00
internal/push Sprint: pbi-55 (#156) 2026-05-07 21:46:01 +02:00
jobs/[id]/sub-tasks Sprint: UI taken/ (#149) 2026-05-07 18:41:19 +02:00
pbis/[id]/stories feat(PBI-74): cache-headers + LIST endpoints (Story 7) 2026-05-10 01:23:25 +02:00
products feat(PBI-74): cache-headers + LIST endpoints (Story 7) 2026-05-10 01:23:25 +02:00
profile/avatar feat(rate-limit): per-user mutation-rate-limiting (v1-readiness #3) 2026-05-04 13:48:59 +02:00
realtime feat(PBI-63): meerdere sprints per product + EXCLUDED + sprint-switcher (#161) 2026-05-08 00:15:04 +02:00
sprints/[id]/tasks Todo description, entity codes, REST API extensions and Claude Code hardening (ST-509/511/512/513) (#2) 2026-04-26 23:40:54 +02:00
stories/[id] feat(PBI-74): cache-headers + LIST endpoints (Story 7) 2026-05-10 01:23:25 +02:00
tasks/[id] feat(PBI-74): cache-headers + LIST endpoints (Story 7) 2026-05-10 01:23:25 +02:00
users/[id]/avatar feat(ST-351): add UserAvatar component and /api/users/[id]/avatar route 2026-04-26 16:15:56 +02:00