Files
atomic-design-poc/docker-compose.openzaak.yml
T
ehoandClaude Sonnet 5 ba24784586
CI / changes (push) Successful in 8s
CI / lint (push) Successful in 55s
CI / frontend (push) Successful in 1m33s
CI / backend (push) Successful in 1m46s
CI / e2e (push) Successful in 3m14s
CI / storybook-a11y (push) Successful in 6m50s
CI / semgrep (push) Successful in 1m13s
CI / api-client-drift (push) Successful in 1m47s
feat(openzaak): one-command UI-OpenZaak bridge, real BSN fix, flake mitigation
scripts/openzaak-ui-up.sh brings up the root app and the OpenZaak harness
together, wires them onto one docker network, seeds the catalogus, grants
the container-alias zaaktype scope, and verifies a real aanvraag submitted
through the UI lands in OpenZaak.

Along the way: DocumentStore.DemoOwner was reusing the seeded doctor's
11-digit BIG-nummer as a stand-in BSN, which isn't a valid 9-digit BSN shape
— OpenZaak rejects it, breaking both submit's rol-creation step and the
citizen's own applications list under Zgw:Enabled=true. Fixed to a real
elfproef-valid BSN.

Also adds mitigation for a still-unexplained per-container flake (every
outbound ZGW POST fails as if the body were empty, for that container's
whole lifetime) that correlates with host memory pressure: the script now
warns when host swap is heavily used, and an opt-in ZgwDiagnosticHandler
(ZGW_DEBUG_HTTP=1) logs Content-Length vs. actual bytes sent so the next
reproduction can confirm or rule out client-side body corruption.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-31 08:23:01 +02:00

51 lines
2.9 KiB
YAML

# Opt-in overlay, layered ON TOP of docker-compose.yml (never alone):
#
# docker compose -f docker-compose.yml -f docker-compose.openzaak.yml up -d
#
# Points the containerized BFF (`api`) at a real OpenZaak instead of the local SQLite store.
# `api` joins the OpenZaak project's OWN network (external, below) to reach its `web` service
# by the dotted alias `docker-compose.openzaak.bff.yml` (backend/openzaak/) gives it —
# `openzaak.local`, not a bare `openzaak`: Django's URLValidator rejects a dotless hostname
# embedded in a URL field (confirmed empirically — see that file's header comment for the full
# reasoning, including why the join runs in this direction and not the reverse). See
# `scripts/openzaak-ui-up.sh` for the one command that brings both projects up together, seeds
# the catalogus, grants the extra scope this alias needs, and fills in OPENZAAK_ZAAKTYPE_URL.
#
# ClientId/Secret/RSINs match exactly what backend/openzaak/bootstrap-catalogus.sh provisions.
# Only `herregistratie` gets a ZaaktypeUrls entry: the harness seeds exactly one zaaktype
# ("Herregistratie arts") — a registratie/intake submission would hit an unconfigured zaaktype,
# caught by WP-60's retry/flagging (Aanvraag.ZgwError), not surfaced as a UI error. DrcBaseUrl/
# InformatieobjecttypeUrls are deliberately left unset: this harness seeds no Documenten
# content or scope, so a document upload's ZGW half just no-ops (also caught since WP-60).
#
# ZGW authorization scopes a zaaktype write by the EXACT zaaktype URL string an Applicatie was
# granted for (confirmed empirically: the same zaaktype, referenced via a different hostname
# string, 403s even though the URL itself resolves fine) — bootstrap-catalogus.sh only ever
# grants the `http://localhost:8000/...` form (it runs on the host). scripts/openzaak-ui-up.sh
# additively grants the SAME scope again for the `openzaak.local:8000` form this file's `api`
# actually presents, without touching bootstrap-catalogus.sh's own (host-usable) grant.
services:
api:
environment:
- Zgw__Enabled=true
- Zgw__ZrcBaseUrl=http://openzaak.local:8000/zaken/api/v1
- Zgw__ZtcBaseUrl=http://openzaak.local:8000/catalogi/api/v1
# Uncomment to chase the per-container flake (scripts/openzaak-ui-up.sh's header
# comment): logs Content-Length vs. actual bytes sent for every outbound ZGW POST.
# - ZGW_DEBUG_HTTP=1
- Zgw__ClientId=bigregister-test
- Zgw__Secret=bigregister-test-secret
- Zgw__UserId=bigregister-test
- Zgw__UserRepresentation=Docker compose OpenZaak test
- Zgw__Bronorganisatie=123443210
- Zgw__VerantwoordelijkeOrganisatie=123443210
- Zgw__ZaaktypeUrls__herregistratie=${OPENZAAK_ZAAKTYPE_URL:?run backend/openzaak/bootstrap-catalogus.sh and export OPENZAAK_ZAAKTYPE_URL first — see scripts/openzaak-ui-up.sh for the one-command version}
networks:
default: {}
oz: {}
networks:
oz:
name: openzaak_default
external: true