[DTP-Worker] Sprint 2 · Générateur fixtures ERPNext (RBAC 50 rôles → Role + Custom DocPerm)
Transforme rbac_50_roles.json en fixtures Frappe/ERPNext v15 natives, prêtes à appliquer via bench (VPS · agent ERPNext). Réalise le prochain incrément annoncé au §7 de RBAC_50_ROLES_SPEC.md. Zéro pip, zéro VPS, sortie déterministe. - fixturelib/frappe.py : modèle natif (15 flags DocPerm, mapping 1:1 des verbes RBAC, if_owner⇔scope "own"). fixturelib/builder.py : bundle déterministe. - rbac_fixtures_gen.py : CLI build/validate (refuse d'écrire si invariant KO). - fixtures.schema.json : contrat de sortie (validateur maison Publiciste réutilisé). - 11 tests unittest : schéma+oracle, 50 rôles, séparation des pouvoirs, round-trip fidèle au contrat, déterminisme. Job CI rbac-fixtures-tests au gate. - Anti-invention #6 : 100% dérivé du contrat, flags non pilotés à 0, DocTypes custom signalés « à confirmer VPS ». Vérif : 11/11 verts + gate CI local vert (exit 0) + régression 60 tests OK. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -124,15 +124,19 @@ du code sans vérifier l'existence courante »).
|
||||
Ce worker n'écrit **jamais** sur le VPS. L'agent ERPNext Backend appliquera la
|
||||
cible côté serveur (`erpnext-backend-1`) :
|
||||
|
||||
1. Générer les fixtures `Role` + `Custom DocPerm` depuis `rbac_50_roles.json`.
|
||||
2. `bench --site frontend migrate` pour installer les rôles.
|
||||
3. Créer les DocTypes DTP `custom` manquants (§6) **après** confirmation.
|
||||
1. Générer les fixtures `Role` + `Custom DocPerm` depuis `rbac_50_roles.json`
|
||||
— **livré** : [`fixtures_gen/`](fixtures_gen/README.md) (`python3 rbac_fixtures_gen.py build`).
|
||||
2. Créer les DocTypes DTP `custom` manquants (§6) **après** confirmation
|
||||
(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.
|
||||
5. Vérification HTTP post-déploiement (workflow #3) + audit QA 4Big.
|
||||
|
||||
> Un **générateur de fixtures** `rbac_50_roles.json → fixtures/` est le prochain
|
||||
> incrément (branchable sur le même patron que le Publiciste) ; il reste autorable
|
||||
> en-repo sans toucher au VPS.
|
||||
> ✅ 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.
|
||||
|
||||
## 8. Vérification (en-repo, sans toucher au VPS)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user