feat(schema): copilot per-product rollen/rechten — AccessLevel + ProductMember.role/access + CopilotAppUser + policy-helper #15

Merged
janpeter merged 2 commits from claude/copilot-user-roles into main 2026-06-12 14:49:22 +02:00
Owner

Samenvatting

Deel 1 van de copilot per-product gebruikers/rollen/rechten-feature (IDEA-118 vervolg; plan dubbel-GO na 3 cross-model-reviewrondes). Twee additieve commits:

  • Schema (2528aff): enum AccessLevel {READ_WRITE, READ_ONLY} + enum CopilotAppUserStatus {PENDING, LINKED}; ProductMember.role/access/updated_at (backfill via defaults DEVELOPER/READ_ONLY); nieuwe model CopilotAppUser (mapping host-app-user → scrum4me User — de product-owner is géén ProductMember, dus de mapping wijst naar User; de service berekent de effectieve owner-of-member-toegang); CopilotChatSession.user_id/app_user_ref; back-relations op Product + User.
  • Policy-helper (da713c8): lib/copilot-access.ts — één @prisma-vrije bron-van-waarheid voor de RO/RW-classificatie (read+ideatie = RO; muteren/uitvoeren = RW; dispatch_job per kind; fail-safe default RW) + 6 unit-tests.

Verificatie

  • Schema: gen-consumer-schema.shprisma validate = "valid 🚀" (de canonieke file heeft bewust geen datasource; validatie loopt via de consumer-gen, zoals bij alle consumers).
  • npm run verify groen: dep-gate (lib/ @prisma-vrij), tsc --noEmit clean, 107 tests (incl. de 6 nieuwe policy-tests).

Hierna (na merge)

Web (designated migrator) bumpt de submodule + authort de additieve migratie, draait update_scrum4me_web + psql-verify; daarna copilot-service (Deel 2) + kit (Deel 3) + web-UI (Deel 4) + kit-first-uitrol (Deel 5). Volledige plan: scrum4me-workers docs/superpowers/plans/2026-06-12-copilot-user-roles.md.

🤖 Generated with Claude Code

## Samenvatting Deel 1 van de **copilot per-product gebruikers/rollen/rechten**-feature (IDEA-118 vervolg; plan dubbel-GO na 3 cross-model-reviewrondes). Twee additieve commits: - **Schema** (`2528aff`): `enum AccessLevel {READ_WRITE, READ_ONLY}` + `enum CopilotAppUserStatus {PENDING, LINKED}`; `ProductMember.role/access/updated_at` (backfill via defaults `DEVELOPER`/`READ_ONLY`); nieuwe `model CopilotAppUser` (mapping host-app-user → scrum4me **`User`** — de product-owner is géén `ProductMember`, dus de mapping wijst naar `User`; de service berekent de effectieve owner-of-member-toegang); `CopilotChatSession.user_id/app_user_ref`; back-relations op `Product` + `User`. - **Policy-helper** (`da713c8`): `lib/copilot-access.ts` — één `@prisma`-vrije bron-van-waarheid voor de RO/RW-classificatie (read+ideatie = RO; muteren/uitvoeren = RW; `dispatch_job` per kind; fail-safe default RW) + 6 unit-tests. ## Verificatie - Schema: `gen-consumer-schema.sh` → `prisma validate` = **"valid 🚀"** (de canonieke file heeft bewust geen `datasource`; validatie loopt via de consumer-gen, zoals bij alle consumers). - `npm run verify` groen: dep-gate (`lib/` `@prisma`-vrij), `tsc --noEmit` clean, **107 tests** (incl. de 6 nieuwe policy-tests). ## Hierna (na merge) Web (designated migrator) bumpt de submodule + authort de additieve migratie, draait `update_scrum4me_web` + psql-verify; daarna copilot-service (Deel 2) + kit (Deel 3) + web-UI (Deel 4) + kit-first-uitrol (Deel 5). Volledige plan: scrum4me-workers `docs/superpowers/plans/2026-06-12-copilot-user-roles.md`. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
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!15
No description provided.