[DTP-Worker] Sprint 2 · Générateur plan User Permission (RBAC row-level scope_donnees → Frappe)

Complète le pipeline RBAC (Role + Custom DocPerm déjà livrés) par la dimension
row-level. Mapping natif ERPNext v15 des 4 scope_donnees :
- entite → User Permission allow=Company (28 templates, user=sentinelle)
- own    → if_owner (déjà posé par fixtures_gen)
- groupe → aucune restriction (vue consolidée)
- equipe → pas de dimension native → signalé VPS (jamais mappé, #6)

Module userperm_gen/ : permlib/{frappe,builder}, CLI build/validate (refuse
d'écrire si invariant KO), userperm.schema.json (validateur maison, zéro pip),
12 tests unittest, README. Job CI rbac-userperm-tests ajouté au gate.
Docs SPEC §7 + fixtures_gen README cousues. Régression 72 tests verts, gate OK.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Claude Code DTP Worker
2026-07-30 03:33:44 +00:00
parent d815c7ab63
commit b1b011ab81
12 changed files with 925 additions and 3 deletions
+12 -1
View File
@@ -130,13 +130,24 @@ cible côté serveur (`erpnext-backend-1`) :
(listés dans `MANIFEST.custom_doctypes_a_confirmer`).
3. Déposer `role.json` + `custom_docperm.json` dans `fixtures/` de l'app OTO
(`hooks.py`), puis `bench --site frontend migrate`.
4. Mapper les `scope_donnees` en `User Permission` par utilisateur.
4. Mapper les `scope_donnees` en `User Permission` par utilisateur — **plan
livré** : [`userperm_gen/`](userperm_gen/README.md)
(`python3 userperm_gen.py build`). Matérialiser le `user_permission_template`
par utilisateur assigné (champ `user` = sentinelle) après confirmation des
Companies (`MANIFEST.companies_a_confirmer`) et décision du mécanisme des
rôles `equipe` (`MANIFEST.roles_scope_equipe_a_confirmer`).
5. Vérification HTTP post-déploiement (workflow #3) + audit QA 4Big.
> ✅ Le **générateur de fixtures** `rbac_50_roles.json → fixtures/` est **livré**
> en-repo ([`fixtures_gen/`](fixtures_gen/README.md), même patron que le
> Publiciste, zéro pip / zéro VPS). Sortie déterministe validée par 11 tests +
> job CI `rbac-fixtures-tests`. L'application `bench` reste côté serveur.
>
> ✅ Le **plan `User Permission` row-level** `scope_donnees → mécanisme Frappe`
> est **livré** en-repo ([`userperm_gen/`](userperm_gen/README.md)) : 28
> templates `Company` (portée `entite`), portées `own`/`groupe` sans restriction
> fabriquée, portée `equipe` signalée (pas de dimension native → aucune
> invention #6). 12 tests + job CI `rbac-userperm-tests`.
## 8. Vérification (en-repo, sans toucher au VPS)