[DTP-Worker] Sprint 8 · buffer L75 · Reproductibilité checkout propre : hand-off out/ des 4 générateurs RBAC était .gitignore-é (gate rouge en CI, vert local seulement) + durcissement check_artifacts (build produit ⇒ DOIT être suivi par git)
Défaut réel (même classe que le bug regression_run.json corrigé plus tôt) : les 4 générateurs RBAC (fixtures_gen/userperm_gen/roleprofile_gen/apply_plan) .gitignore-aient leur out/, alors qu'ils sont audités en archétype `generator` (critère HANDOFF). En checkout PROPRE (git archive HEAD = ce que voit le runner Gitea) leur out/ est absent → qa/audit_4big (dont le build relit le out/ de CHAQUE module) les note 80<95 ⇒ INV7 ⇒ build refusé ⇒ check-artifacts ET check-regression ROUGES. Ça ne passait qu'en local via les out/ non suivis laissés par des build manuels. Fix : committer le out/ des 4 générateurs (build byte-déterministe prouvé ; apply_plan lit ses frères en process, pas via out/) → alignement sur les 15 autres générateurs ; audit 100/100 en checkout propre. Durcissement : check_artifacts.sh exige désormais `git ls-files --error-unmatch` sur chaque fichier produit → un out/ ignoré/non commité devient une erreur LOCALE honnête au lieu d'une surprise en CI. Bite-proof : git rm --cached d'un artefact (laissé sur disque) ⇒ exit 1 ; re-add ⇒ exit 0. Régénéré : quality_report.json (dérive DOC = taille des 4 README édités). Vérifs : 6 gates verts sur git archive propre ; 534/21 inchangé ; suites OK. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,49 @@
|
||||
{
|
||||
"generated_from": "rbac_50_roles.json",
|
||||
"source_version": "1.0.0",
|
||||
"cible_rbac_roles": 50,
|
||||
"counts": {
|
||||
"role_profiles": 6,
|
||||
"portails_metier": 5,
|
||||
"portails_techniques": 1,
|
||||
"roles_couverts": 50
|
||||
},
|
||||
"profiles": [
|
||||
{
|
||||
"portail": "achat",
|
||||
"role_profile": "OTO Portail Achat",
|
||||
"metier": true,
|
||||
"nb_roles": 5
|
||||
},
|
||||
{
|
||||
"portail": "compta",
|
||||
"role_profile": "OTO Portail Compta",
|
||||
"metier": true,
|
||||
"nb_roles": 8
|
||||
},
|
||||
{
|
||||
"portail": "construction",
|
||||
"role_profile": "OTO Portail Construction",
|
||||
"metier": true,
|
||||
"nb_roles": 10
|
||||
},
|
||||
{
|
||||
"portail": "direction",
|
||||
"role_profile": "OTO Portail Direction",
|
||||
"metier": true,
|
||||
"nb_roles": 9
|
||||
},
|
||||
{
|
||||
"portail": "plateforme",
|
||||
"role_profile": "OTO Portail Plateforme",
|
||||
"metier": false,
|
||||
"nb_roles": 6
|
||||
},
|
||||
{
|
||||
"portail": "ventes",
|
||||
"role_profile": "OTO Portail Ventes",
|
||||
"metier": true,
|
||||
"nb_roles": 12
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,344 @@
|
||||
[
|
||||
{
|
||||
"doctype": "Role Profile",
|
||||
"name": "OTO Portail Achat",
|
||||
"role_profile": "OTO Portail Achat",
|
||||
"roles": [
|
||||
{
|
||||
"doctype": "Has Role",
|
||||
"parentfield": "roles",
|
||||
"parenttype": "Role Profile",
|
||||
"role": "OTO Achat Acheteur"
|
||||
},
|
||||
{
|
||||
"doctype": "Has Role",
|
||||
"parentfield": "roles",
|
||||
"parenttype": "Role Profile",
|
||||
"role": "OTO Achat Directeur"
|
||||
},
|
||||
{
|
||||
"doctype": "Has Role",
|
||||
"parentfield": "roles",
|
||||
"parenttype": "Role Profile",
|
||||
"role": "OTO Achat Fournisseurs"
|
||||
},
|
||||
{
|
||||
"doctype": "Has Role",
|
||||
"parentfield": "roles",
|
||||
"parenttype": "Role Profile",
|
||||
"role": "OTO Achat Magasinier"
|
||||
},
|
||||
{
|
||||
"doctype": "Has Role",
|
||||
"parentfield": "roles",
|
||||
"parenttype": "Role Profile",
|
||||
"role": "OTO Achat Réception"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"doctype": "Role Profile",
|
||||
"name": "OTO Portail Compta",
|
||||
"role_profile": "OTO Portail Compta",
|
||||
"roles": [
|
||||
{
|
||||
"doctype": "Has Role",
|
||||
"parentfield": "roles",
|
||||
"parenttype": "Role Profile",
|
||||
"role": "OTO Compta Audit UAF"
|
||||
},
|
||||
{
|
||||
"doctype": "Has Role",
|
||||
"parentfield": "roles",
|
||||
"parenttype": "Role Profile",
|
||||
"role": "OTO Compta Clients AR"
|
||||
},
|
||||
{
|
||||
"doctype": "Has Role",
|
||||
"parentfield": "roles",
|
||||
"parenttype": "Role Profile",
|
||||
"role": "OTO Compta Contrôle Gestion"
|
||||
},
|
||||
{
|
||||
"doctype": "Has Role",
|
||||
"parentfield": "roles",
|
||||
"parenttype": "Role Profile",
|
||||
"role": "OTO Compta Fiscaliste eCF"
|
||||
},
|
||||
{
|
||||
"doctype": "Has Role",
|
||||
"parentfield": "roles",
|
||||
"parenttype": "Role Profile",
|
||||
"role": "OTO Compta Fournisseurs AP"
|
||||
},
|
||||
{
|
||||
"doctype": "Has Role",
|
||||
"parentfield": "roles",
|
||||
"parenttype": "Role Profile",
|
||||
"role": "OTO Compta Général"
|
||||
},
|
||||
{
|
||||
"doctype": "Has Role",
|
||||
"parentfield": "roles",
|
||||
"parenttype": "Role Profile",
|
||||
"role": "OTO Compta Paie"
|
||||
},
|
||||
{
|
||||
"doctype": "Has Role",
|
||||
"parentfield": "roles",
|
||||
"parenttype": "Role Profile",
|
||||
"role": "OTO Compta Trésorier"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"doctype": "Role Profile",
|
||||
"name": "OTO Portail Construction",
|
||||
"role_profile": "OTO Portail Construction",
|
||||
"roles": [
|
||||
{
|
||||
"doctype": "Has Role",
|
||||
"parentfield": "roles",
|
||||
"parenttype": "Role Profile",
|
||||
"role": "OTO Construction Architecte"
|
||||
},
|
||||
{
|
||||
"doctype": "Has Role",
|
||||
"parentfield": "roles",
|
||||
"parenttype": "Role Profile",
|
||||
"role": "OTO Construction BIM"
|
||||
},
|
||||
{
|
||||
"doctype": "Has Role",
|
||||
"parentfield": "roles",
|
||||
"parenttype": "Role Profile",
|
||||
"role": "OTO Construction Chef Projet"
|
||||
},
|
||||
{
|
||||
"doctype": "Has Role",
|
||||
"parentfield": "roles",
|
||||
"parenttype": "Role Profile",
|
||||
"role": "OTO Construction Directeur"
|
||||
},
|
||||
{
|
||||
"doctype": "Has Role",
|
||||
"parentfield": "roles",
|
||||
"parenttype": "Role Profile",
|
||||
"role": "OTO Construction Ingénieur"
|
||||
},
|
||||
{
|
||||
"doctype": "Has Role",
|
||||
"parentfield": "roles",
|
||||
"parenttype": "Role Profile",
|
||||
"role": "OTO Construction QAQC"
|
||||
},
|
||||
{
|
||||
"doctype": "Has Role",
|
||||
"parentfield": "roles",
|
||||
"parenttype": "Role Profile",
|
||||
"role": "OTO Construction Sous-traitants"
|
||||
},
|
||||
{
|
||||
"doctype": "Has Role",
|
||||
"parentfield": "roles",
|
||||
"parenttype": "Role Profile",
|
||||
"role": "OTO Faisabilité IFC Speckle"
|
||||
},
|
||||
{
|
||||
"doctype": "Has Role",
|
||||
"parentfield": "roles",
|
||||
"parenttype": "Role Profile",
|
||||
"role": "OTO Faisabilité Rendu 3D"
|
||||
},
|
||||
{
|
||||
"doctype": "Has Role",
|
||||
"parentfield": "roles",
|
||||
"parenttype": "Role Profile",
|
||||
"role": "OTO Faisabilité Économiste"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"doctype": "Role Profile",
|
||||
"name": "OTO Portail Direction",
|
||||
"role_profile": "OTO Portail Direction",
|
||||
"roles": [
|
||||
{
|
||||
"doctype": "Has Role",
|
||||
"parentfield": "roles",
|
||||
"parenttype": "Role Profile",
|
||||
"role": "OTO Conseil Administration"
|
||||
},
|
||||
{
|
||||
"doctype": "Has Role",
|
||||
"parentfield": "roles",
|
||||
"parenttype": "Role Profile",
|
||||
"role": "OTO Direction Commerciale"
|
||||
},
|
||||
{
|
||||
"doctype": "Has Role",
|
||||
"parentfield": "roles",
|
||||
"parenttype": "Role Profile",
|
||||
"role": "OTO Direction Financière"
|
||||
},
|
||||
{
|
||||
"doctype": "Has Role",
|
||||
"parentfield": "roles",
|
||||
"parenttype": "Role Profile",
|
||||
"role": "OTO Direction Générale"
|
||||
},
|
||||
{
|
||||
"doctype": "Has Role",
|
||||
"parentfield": "roles",
|
||||
"parenttype": "Role Profile",
|
||||
"role": "OTO Direction Opérations"
|
||||
},
|
||||
{
|
||||
"doctype": "Has Role",
|
||||
"parentfield": "roles",
|
||||
"parenttype": "Role Profile",
|
||||
"role": "OTO Direction Président"
|
||||
},
|
||||
{
|
||||
"doctype": "Has Role",
|
||||
"parentfield": "roles",
|
||||
"parenttype": "Role Profile",
|
||||
"role": "OTO Faisabilité Analyste"
|
||||
},
|
||||
{
|
||||
"doctype": "Has Role",
|
||||
"parentfield": "roles",
|
||||
"parenttype": "Role Profile",
|
||||
"role": "OTO Legal Directeur"
|
||||
},
|
||||
{
|
||||
"doctype": "Has Role",
|
||||
"parentfield": "roles",
|
||||
"parenttype": "Role Profile",
|
||||
"role": "OTO Legal ONAPI"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"doctype": "Role Profile",
|
||||
"name": "OTO Portail Plateforme",
|
||||
"role_profile": "OTO Portail Plateforme",
|
||||
"roles": [
|
||||
{
|
||||
"doctype": "Has Role",
|
||||
"parentfield": "roles",
|
||||
"parenttype": "Role Profile",
|
||||
"role": "OTO Plateforme BI"
|
||||
},
|
||||
{
|
||||
"doctype": "Has Role",
|
||||
"parentfield": "roles",
|
||||
"parenttype": "Role Profile",
|
||||
"role": "OTO Plateforme DevOps"
|
||||
},
|
||||
{
|
||||
"doctype": "Has Role",
|
||||
"parentfield": "roles",
|
||||
"parenttype": "Role Profile",
|
||||
"role": "OTO Plateforme Mobile"
|
||||
},
|
||||
{
|
||||
"doctype": "Has Role",
|
||||
"parentfield": "roles",
|
||||
"parenttype": "Role Profile",
|
||||
"role": "OTO Plateforme OTOIA"
|
||||
},
|
||||
{
|
||||
"doctype": "Has Role",
|
||||
"parentfield": "roles",
|
||||
"parenttype": "Role Profile",
|
||||
"role": "OTO Plateforme QA"
|
||||
},
|
||||
{
|
||||
"doctype": "Has Role",
|
||||
"parentfield": "roles",
|
||||
"parenttype": "Role Profile",
|
||||
"role": "OTO Plateforme RBAC Admin"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"doctype": "Role Profile",
|
||||
"name": "OTO Portail Ventes",
|
||||
"role_profile": "OTO Portail Ventes",
|
||||
"roles": [
|
||||
{
|
||||
"doctype": "Has Role",
|
||||
"parentfield": "roles",
|
||||
"parenttype": "Role Profile",
|
||||
"role": "OTO Marketing Directeur"
|
||||
},
|
||||
{
|
||||
"doctype": "Has Role",
|
||||
"parentfield": "roles",
|
||||
"parenttype": "Role Profile",
|
||||
"role": "OTO Marketing Publiciste"
|
||||
},
|
||||
{
|
||||
"doctype": "Has Role",
|
||||
"parentfield": "roles",
|
||||
"parenttype": "Role Profile",
|
||||
"role": "OTO Marketing SEO"
|
||||
},
|
||||
{
|
||||
"doctype": "Has Role",
|
||||
"parentfield": "roles",
|
||||
"parenttype": "Role Profile",
|
||||
"role": "OTO Marketing Social"
|
||||
},
|
||||
{
|
||||
"doctype": "Has Role",
|
||||
"parentfield": "roles",
|
||||
"parenttype": "Role Profile",
|
||||
"role": "OTO Ventes Après-Vente"
|
||||
},
|
||||
{
|
||||
"doctype": "Has Role",
|
||||
"parentfield": "roles",
|
||||
"parenttype": "Role Profile",
|
||||
"role": "OTO Ventes CONFOTUR"
|
||||
},
|
||||
{
|
||||
"doctype": "Has Role",
|
||||
"parentfield": "roles",
|
||||
"parenttype": "Role Profile",
|
||||
"role": "OTO Ventes Chef Équipe"
|
||||
},
|
||||
{
|
||||
"doctype": "Has Role",
|
||||
"parentfield": "roles",
|
||||
"parenttype": "Role Profile",
|
||||
"role": "OTO Ventes Conseiller"
|
||||
},
|
||||
{
|
||||
"doctype": "Has Role",
|
||||
"parentfield": "roles",
|
||||
"parenttype": "Role Profile",
|
||||
"role": "OTO Ventes Contrats"
|
||||
},
|
||||
{
|
||||
"doctype": "Has Role",
|
||||
"parentfield": "roles",
|
||||
"parenttype": "Role Profile",
|
||||
"role": "OTO Ventes Courtier Externe"
|
||||
},
|
||||
{
|
||||
"doctype": "Has Role",
|
||||
"parentfield": "roles",
|
||||
"parenttype": "Role Profile",
|
||||
"role": "OTO Ventes Directeur"
|
||||
},
|
||||
{
|
||||
"doctype": "Has Role",
|
||||
"parentfield": "roles",
|
||||
"parenttype": "Role Profile",
|
||||
"role": "OTO Ventes Réservations"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
Reference in New Issue
Block a user