Skip to content

feat: multi org/user scoping for services & templates + service↔template links - #25

Merged
damienlaine merged 2 commits into
nextfrom
feature/template-rework
Jun 19, 2026
Merged

damienlaine merged 2 commits into
nextfrom
feature/template-rework

Conversation

@damienlaine

Copy link
Copy Markdown
Member

Résumé

Permet de scoper services et templates de documents à plusieurs organisations et/ou utilisateurs (au lieu d'un seul), de gérer le scope des templates depuis l'admin, et d'associer explicitement un ensemble de templates à un service.

Changements

  • Services & document_templates : nouvelles listes allowed_organization_ids / allowed_user_ids (Postgres text[], GIN). Listes vides = global/système. Colonnes legacy organization_id/user_id conservées et dérivées → compat LinTO Studio (qui lit encore scope/user_id).
  • Scope des templates éditable : PUT /document-templates/{id} accepte les listes + replace_scope ; l'upload aussi.
  • Lien service ↔ templates : table service_document_templates + GET/PUT /services/{id}/templates. Un service sans template lié retombe sur le template par défaut global.
  • UI admin : composant ScopeEditor (chips), branché sur le formulaire service, l'upload/édition de template, et la page templates par service.
  • Migration alembic 008 : ajoute les colonnes, backfill depuis les colonnes legacy, drop des contraintes obsolètes, crée la table de liaison.
  • Versions : front 2.5.0, api 1.1.0 ; footer câblé sur package.json (fin du 0.1.0 codé en dur).

Vérifs

Chaîne alembic 001→008 appliquée + round-trip sur vrai Postgres ; parité pytest avec next (zéro régression) ; ruff + tsc OK.

…ate links

- services & document_templates gain allowed_organization_ids / allowed_user_ids
  (text[] arrays, GIN-indexed); both empty = global. Legacy single org/user
  columns kept and derived for backward compat (Studio still reads scope/user_id).
- document template scope is now editable (PUT accepts the lists + replace_scope);
  upload accepts the lists too.
- new service_document_templates link table + GET/PUT /services/{id}/templates;
  a service with no linked templates falls back to the global default template.
- admin UI: reusable ScopeEditor (chip inputs), wired into ServiceForm,
  TemplateUpload, TemplateEditDialog, and the per-service templates page.
- alembic 007 (chained on 005) adds the columns, backfills from the legacy
  columns, drops the now-obsolete unique/check constraints, creates the link table.
Wire the admin footer to package.json (NEXT_PUBLIC_APP_VERSION via next.config)
instead of the hardcoded '0.1.0', so the displayed version stays in sync.
@damienlaine
damienlaine merged commit ad16eb1 into next Jun 19, 2026
5 checks passed
@damienlaine
damienlaine deleted the feature/template-rework branch June 19, 2026 19:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant