Second half of S-12c (behandel-portal backend), completing the decision path per ADR-0013:
Domain:BeoordeelRegistratie now, after applying the decision (aggregate + ACL for approval), completes the open Flowable Beoordelen task for that registration (found by registrationId) with the besluit, so the workflow advances. No open task → the decision still stands (completes nothing); idempotent.
BFF:POST /behandel/registrations/{id}/decide behind the medewerker/behandelaar policy, forwarding goedkeuren/afwijzen to the domain. Validates the besluit vocabulary (400 on unknown) without troubling the domain.
Behavior: decide is 401 without a token, 403 without the role, 400 for an unknown besluit, 204 (forwarded) for a behandelaar.
This completes the behandel backend. S-12d (the Angular behandel-portal + Playwright e2e) closes umbrella #13 and retires the temporary /approve.
## What & why
Second half of **S-12c** (behandel-portal backend), completing the decision path per **ADR-0013**:
- **Domain:** `BeoordeelRegistratie` now, after applying the decision (aggregate + ACL for approval), **completes the open Flowable `Beoordelen` task** for that registration (found by registrationId) with the besluit, so the workflow advances. No open task → the decision still stands (completes nothing); idempotent.
- **BFF:** `POST /behandel/registrations/{id}/decide` behind the medewerker/`behandelaar` policy, forwarding `goedkeuren`/`afwijzen` to the domain. Validates the besluit vocabulary (400 on unknown) without troubling the domain.
Behavior: decide is **401** without a token, **403** without the role, **400** for an unknown besluit, **204** (forwarded) for a behandelaar.
This completes the behandel backend. **S-12d** (the Angular behandel-portal + Playwright e2e) closes umbrella #13 and retires the temporary `/approve`.
## Definition of Done
- [x] Linked issue: #13 (umbrella, `refs`)
- [x] Tests first; red → green per layer
- [x] Unit + acceptance green (`make unit`): domain 79, bff 27, acceptance 9 (acl/event-subscriber unaffected)
- [x] Beoordeling acceptance scenario asserts task completion (goedkeuren + afwijzen)
- [x] openapi.json + api-client regenerated (drift guard passes)
- [x] Mutation ≥ break(90): **domain 100%, bff 100%**
- [x] CI green (pending)
Part of #13.
Red — BeoordeelRegistratie has no user-task dependency and doesn't complete the task.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
After applying the decision, BeoordeelRegistratie finds the open Beoordelen task for
the registration and completes it with the besluit so the workflow advances (ADR-0013).
No open task → the decision still stands (completes nothing). DI already provides
IUserTaskClient (S-12b).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Forwards a behandelaar's goedkeuren/afwijzen to the domain (which applies the decision
and completes the workflow task). Validates the besluit vocabulary (400 on unknown)
without troubling the domain. openapi.json + api-client regenerated.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
What & why
Second half of S-12c (behandel-portal backend), completing the decision path per ADR-0013:
BeoordeelRegistratienow, after applying the decision (aggregate + ACL for approval), completes the open FlowableBeoordelentask for that registration (found by registrationId) with the besluit, so the workflow advances. No open task → the decision still stands (completes nothing); idempotent.POST /behandel/registrations/{id}/decidebehind the medewerker/behandelaarpolicy, forwardinggoedkeuren/afwijzento the domain. Validates the besluit vocabulary (400 on unknown) without troubling the domain.Behavior: decide is 401 without a token, 403 without the role, 400 for an unknown besluit, 204 (forwarded) for a behandelaar.
This completes the behandel backend. S-12d (the Angular behandel-portal + Playwright e2e) closes umbrella #13 and retires the temporary
/approve.Definition of Done
refs)make unit): domain 79, bff 27, acceptance 9 (acl/event-subscriber unaffected)Part of #13.