feat(dispatch): eigen antwoordadressen opvragen (M41 G8d) #177

Merged
janpeter merged 1 commit from feat/m41-reply-addresses-list into main 2026-10-02 20:22:13 +02:00
Owner

Waarom

M41 increment 4, gat G8d. De dialoog "Automatisch uitvoeren" in scrum4me-workers las queue_dispatch_reply_addresses rechtstreeks uit de database. De runtimerol van workers (scrum4me_web_runtime) heeft daar geen recht op, dus de dialoog kon nooit antwoordadressen tonen. De service moet ze daarom zelf kunnen leveren.

Wat

  • GET /dispatch/v1/reply-addresses → {"reply_addresses":[{"address":"mac:jp"}]}.
    • Alleen de eigen ingeschakelde adressen van de geauthenticeerde actor, gesorteerd.
    • Er is geen user-parameter; ?user_id= wordt genegeerd.
    • Anoniem geeft 401 voordat de database wordt geraakt. Demogebruikers worden geweigerd door de refresh van de actor, en workers-aanroepers moeten admin zijn, zoals overal.
    • Operatie list_reply_addresses.
  • Clientmethode listReplyAddresses().
  • De DB-rol scrum4me_dispatch had al SELECT op de tabel; er is geen schema- of policywijziging.

Bewijs

  • __tests__/dispatch/http.test.ts: eerst rood (2 failures, methode ontbrak), daarna 10/10.
  • Nieuwe integratiegevallen in end-to-end.integration.test.ts:
    • twee ingeschakelde adressen en één uitgeschakeld geeft precies de twee, gesorteerd;
    • de adressen van een andere gebruiker zijn nooit zichtbaar;
    • ?user_id= verandert niets;
    • de route staat in de 401-matrix.
  • Dispatch-integratiesuite: 280 groen. Unitsuite: 2021 groen. Typecheck schoon.
  • Kanttekening: de integratiegevallen zijn alleen tegen de afgemaakte code gedraaid. Rood eerst is alleen op unitniveau gezien.

Hoort bij scrum4me-workers feat/m41-g8-screen-links (G8d). Story ST-1617, taak T-1954.

🤖 Generated with Claude Code

## Waarom M41 increment 4, gat G8d. De dialoog "Automatisch uitvoeren" in scrum4me-workers las `queue_dispatch_reply_addresses` rechtstreeks uit de database. De runtimerol van workers (`scrum4me_web_runtime`) heeft daar geen recht op, dus de dialoog kon nooit antwoordadressen tonen. De service moet ze daarom zelf kunnen leveren. ## Wat - `GET /dispatch/v1/reply-addresses` → `{"reply_addresses":[{"address":"mac:jp"}]}`. - Alleen de eigen ingeschakelde adressen van de geauthenticeerde actor, gesorteerd. - Er is geen user-parameter; `?user_id=` wordt genegeerd. - Anoniem geeft 401 voordat de database wordt geraakt. Demogebruikers worden geweigerd door de refresh van de actor, en workers-aanroepers moeten admin zijn, zoals overal. - Operatie `list_reply_addresses`. - Clientmethode `listReplyAddresses()`. - De DB-rol `scrum4me_dispatch` had al SELECT op de tabel; er is geen schema- of policywijziging. ## Bewijs - `__tests__/dispatch/http.test.ts`: eerst rood (2 failures, methode ontbrak), daarna 10/10. - Nieuwe integratiegevallen in `end-to-end.integration.test.ts`: - twee ingeschakelde adressen en één uitgeschakeld geeft precies de twee, gesorteerd; - de adressen van een andere gebruiker zijn nooit zichtbaar; - `?user_id=` verandert niets; - de route staat in de 401-matrix. - Dispatch-integratiesuite: 280 groen. Unitsuite: 2021 groen. Typecheck schoon. - Kanttekening: de integratiegevallen zijn alleen tegen de afgemaakte code gedraaid. Rood eerst is alleen op unitniveau gezien. Hoort bij scrum4me-workers `feat/m41-g8-screen-links` (G8d). Story ST-1617, taak T-1954. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
feat(dispatch): eigen antwoordadressen opvragen (M41 G8d)
All checks were successful
CI / Final merge attestation and immutable publication (pull_request) Has been skipped
CI / PR candidate (never published) (pull_request) Successful in 8m14s
e91da75829
GET /dispatch/v1/reply-addresses geeft de ingeschakelde antwoordadressen van
de geauthenticeerde actor terug, gesorteerd op adres. De gebruiker is nooit
een parameter. Plus client.listReplyAddresses().

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
s4m-codex-reviewer left a comment

APPROVED

Findings

  • Geen blokkerende bevindingen.

Geen gekoppeld plan gevonden — beoordeeld op codekwaliteit + product-standaarden.

De GET-route leidt de gebruiker uitsluitend uit de geauthenticeerde actor af, filtert op ingeschakelde eigen adressen en sorteert deterministisch. Client-, route- en integratietests dekken het nieuwe contract, inclusief het negeren van een meegegeven user_id.

## APPROVED ### Findings - Geen blokkerende bevindingen. Geen gekoppeld plan gevonden — beoordeeld op codekwaliteit + product-standaarden. De GET-route leidt de gebruiker uitsluitend uit de geauthenticeerde actor af, filtert op ingeschakelde eigen adressen en sorteert deterministisch. Client-, route- en integratietests dekken het nieuwe contract, inclusief het negeren van een meegegeven `user_id`.
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
janpeter/scrum4me-mcp!177
No description provided.