feat(schema): hub-modellen communicatiecentrum slice B (M31/IDEA-179) #47

Merged
janpeter merged 2 commits from feat/hub-slice-b-schema into main 2026-08-12 03:16:37 +02:00
Owner

Hub-datamodel voor het communicatiecentrum (IDEA-179 slice B / M31): enums HubApprovalSource/HubApprovalStatus/HubNotificationOutcome + modellen HubDevice/HubApproval/HubApprovalNotification/HubPairing, plus de User.hub_devices/hub_approvals-reverse-velden.

De consumer (Scrum4Me) volgt via submodule-bump + migratie in de bijbehorende Scrum4Me-PR. npx prisma validate groen (7.8.0).

Merge-strategie: gebruik een merge-commit of rebase (géén squash), zodat de submodule-pointer 198df6b die de Scrum4Me-PR record't geldig blijft; anders re-pointen we na merge.

🤖 Generated with Claude Code

Hub-datamodel voor het communicatiecentrum (IDEA-179 slice B / M31): enums `HubApprovalSource`/`HubApprovalStatus`/`HubNotificationOutcome` + modellen `HubDevice`/`HubApproval`/`HubApprovalNotification`/`HubPairing`, plus de `User.hub_devices`/`hub_approvals`-reverse-velden. De consumer (Scrum4Me) volgt via submodule-bump + migratie in de bijbehorende Scrum4Me-PR. `npx prisma validate` groen (7.8.0). **Merge-strategie:** gebruik een merge-commit of rebase (géén squash), zodat de submodule-pointer `198df6b` die de Scrum4Me-PR record't geldig blijft; anders re-pointen we na merge. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
feat(schema): hub-modellen voor communicatiecentrum slice B (M31/IDEA-179)
All checks were successful
CI / Verify (pull_request) Successful in 17s
198df6b698
Enums HubApprovalSource/HubApprovalStatus/HubNotificationOutcome +
modellen HubDevice/HubApproval/HubApprovalNotification/HubPairing, plus
User.hub_devices/hub_approvals reverse-relaties. Spec §6
(docs/specs/2026-08-11-communicatie-centrum-slice-b-design.md).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
s4m-codex-reviewer requested changes 2026-08-12 01:36:16 +02:00
Dismissed
s4m-codex-reviewer left a comment

Verdict: REQUEST_CHANGES

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

Findings

  • ERRORprisma/schema.prisma:1379HubDevice.environment documenteert een gesloten waardeset ('sandbox' | 'production') maar wordt als vrije String opgeslagen. Omdat scrum4me-shared volgens de architectuurdoc de canonieke bron voor schema- en enum-contracten is, kan dit invalide device-omgevingen in de database toelaten en downstream consumers uiteen laten lopen. Maak dit een Prisma enum, vergelijkbaar met de andere nieuwe gesloten statussen/sources.
  • ERRORprisma/schema.prisma:1426HubApprovalNotification.kind documenteert eveneens een gesloten waardeset ('initial' | 'answered' | 'expired' | 'cancelled') maar gebruikt String. Dit mist hetzelfde canonieke contract en dezelfde DB-validatie als HubApprovalStatus/HubNotificationOutcome; een typo in kind wordt persistent geldig en kan queue-/delivery-logica breken. Modelleer dit als enum.
  • WARNINGprisma/schema.prisma:1397HubApproval.answered_via documenteert een kleine gesloten waardeset ('app' | 'source') maar is ook een vrije String?. Dit is minder kritisch dan delivery routing, maar voor hetzelfde shared-schema-contract verdient een enum de voorkeur.

Notes

De diff bevat alleen schemawijzigingen en geen migratie, wat past bij de productdoc: migraties horen bij de designated migrator in Scrum4Me, niet in scrum4me-shared. De in de diff genoemde slice-B spec kon ik niet terugvinden in de actieve productdocs van dit product, dus plan-/specconformiteit kon niet inhoudelijk worden vastgesteld.

# Verdict: REQUEST_CHANGES Geen gekoppeld plan gevonden — beoordeeld op codekwaliteit + product-standaarden. ## Findings - **ERROR** — `prisma/schema.prisma:1379` — `HubDevice.environment` documenteert een gesloten waardeset (`'sandbox' | 'production'`) maar wordt als vrije `String` opgeslagen. Omdat `scrum4me-shared` volgens de architectuurdoc de canonieke bron voor schema- en enum-contracten is, kan dit invalide device-omgevingen in de database toelaten en downstream consumers uiteen laten lopen. Maak dit een Prisma enum, vergelijkbaar met de andere nieuwe gesloten statussen/sources. - **ERROR** — `prisma/schema.prisma:1426` — `HubApprovalNotification.kind` documenteert eveneens een gesloten waardeset (`'initial' | 'answered' | 'expired' | 'cancelled'`) maar gebruikt `String`. Dit mist hetzelfde canonieke contract en dezelfde DB-validatie als `HubApprovalStatus`/`HubNotificationOutcome`; een typo in `kind` wordt persistent geldig en kan queue-/delivery-logica breken. Modelleer dit als enum. - **WARNING** — `prisma/schema.prisma:1397` — `HubApproval.answered_via` documenteert een kleine gesloten waardeset (`'app' | 'source'`) maar is ook een vrije `String?`. Dit is minder kritisch dan delivery routing, maar voor hetzelfde shared-schema-contract verdient een enum de voorkeur. ## Notes De diff bevat alleen schemawijzigingen en geen migratie, wat past bij de productdoc: migraties horen bij de designated migrator in `Scrum4Me`, niet in `scrum4me-shared`. De in de diff genoemde slice-B spec kon ik niet terugvinden in de actieve productdocs van dit product, dus plan-/specconformiteit kon niet inhoudelijk worden vastgesteld.
feat(schema): hub gesloten-waardesets als enum (review #47)
All checks were successful
CI / Verify (pull_request) Successful in 17s
48b3d23a50
Codex-review REQUEST_CHANGES op PR #47: environment/kind/answered_via
stonden als vrije String terwijl de andere nieuwe gesloten sets
(HubApprovalStatus/Source/NotificationOutcome) enums zijn. Canoniek
shared-schema hoort deze contracten af te dwingen (DB-validatie).

- HubDeviceEnvironment (SANDBOX|PRODUCTION) ← HubDevice.environment
- HubNotificationKind (INITIAL|ANSWERED|EXPIRED|CANCELLED) ← HubApprovalNotification.kind
- HubAnsweredVia (APP|SOURCE) ← HubApproval.answered_via

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

Verdict: APPROVED

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

Findings

  • Geen blokkerende findings gevonden.

Review-notities

  • De wijziging blijft beperkt tot prisma/schema.prisma, wat past bij scrum4me-shared als canonieke schema-bron.
  • Er worden geen consumer-migraties, runtime-imports of framework-afhankelijkheden toegevoegd.
  • De nieuwe relaties en indexes zijn coherent voor de toegevoegde hub approval/device/notification modellen.
# Verdict: APPROVED Geen gekoppeld plan gevonden — beoordeeld op codekwaliteit + product-standaarden. ## Findings - Geen blokkerende findings gevonden. ## Review-notities - De wijziging blijft beperkt tot `prisma/schema.prisma`, wat past bij `scrum4me-shared` als canonieke schema-bron. - Er worden geen consumer-migraties, runtime-imports of framework-afhankelijkheden toegevoegd. - De nieuwe relaties en indexes zijn coherent voor de toegevoegde hub approval/device/notification modellen.
Sign in to join this conversation.
No reviewers
No labels
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-shared!47
No description provided.