[DTP-Worker] Sprint 2 · Générateur Role Profile par portail (RBAC 50 rôles → 6 bundles assignables ERPNext v15)

- roleprofile_gen/ : profilelib (frappe Role Profile + Has Role natif v15,
  builder déterministe), roleprofile.schema.json, CLI build/validate refusant
  d'écrire si invariant cassé, 11 tests stdlib, README, .gitignore (out/).
- 6 profils couvrant les 50 rôles de façon bijective (5 portails métier +
  console technique plateforme). Aucun DocType custom (que du natif).
- Anti-invention #6 : rôles 100 % issus du contrat, nom de profil = convention
  déterministe dérivée de la clé portail.
- CI : job rbac-roleprofile-tests ajouté au gate (.gitea/workflows/ci.yml).
- Doc : SPEC §7 ét.5 + encart livré. Daily report session 8.
- Régression : 83 tests verts (72 + 11). Gate CI local vert.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Claude Code DTP Worker
2026-07-30 04:04:04 +00:00
parent b1b011ab81
commit 70e022ccd6
11 changed files with 879 additions and 2 deletions
+12 -1
View File
@@ -136,7 +136,12 @@ cible côté serveur (`erpnext-backend-1`) :
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.
5. Générer les **`Role Profile`** (bundles de rôles par portail) — **livré** :
[`roleprofile_gen/`](roleprofile_gen/README.md) (`python3 roleprofile_gen.py
build`). Importer `role_profile.json` **après** les fixtures `Role` (étape 3),
puis affecter `User.role_profile_name` selon `MANIFEST.profiles` → tous les
rôles d'un portail appliqués en un geste.
6. 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
@@ -148,6 +153,12 @@ cible côté serveur (`erpnext-backend-1`) :
> 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`.
>
> ✅ Les **`Role Profile`** (bundles de rôles par portail) sont **livrés** en-repo
> ([`roleprofile_gen/`](roleprofile_gen/README.md)) : **6 profils** (5 portails
> métier + console technique `plateforme`) couvrant les **50 rôles de façon
> bijective**, 100 % DocTypes natifs v15 (`Role Profile` + `Has Role`), aucun
> DocType custom à confirmer. 11 tests + job CI `rbac-roleprofile-tests`.
## 8. Vérification (en-repo, sans toucher au VPS)