[DTP-Worker] Sprint 8 · Générateur Run-book de déploiement VPS unifié (7 phases · 20 modules gated · couverture bijective vs CI) (DevOps · roadmap L73)

Agrégateur de méta-niveau au-dessus du run-book RBAC : ordonne le déploiement
VPS de TOUS les livrables gated en 7 phases (Prérequis → DocTypes → RBAC →
Workflow/métier → Frontend → Contenu → Vérification QA), avec graphe de
dépendances inter-phases acyclique et confirmations préalables sourcées.

Anti-invention (#6) : périmètre dérivé du CI (parse_ci réutilisé), couverture
bijective module→phase (un module gated non planifié OU un module planifié non
gated → refus), SoD (auto-exclusion), zéro chiffre métier (confirmations
sourcées via audit_5d D1.1/D1.2/D1.3/D2.3 + endpoint OTOIA).

Vérifs : 29/29 tests module (dont 14 injections négatives) · audit_4big PASS
20/20 à 100 · régression run 20/20 suites · 503 tests · 0 échec · gate CI local
vert. CI job devops-deploy-runbook-tests + gate ; enregistrement audit_4big
(19→20) ; plan régression régénéré (19→20 suites).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Claude Code DTP Worker
2026-07-30 11:41:43 +00:00
parent 4b0752906d
commit 58ed555db0
19 changed files with 1647 additions and 17 deletions
@@ -0,0 +1,221 @@
[
{
"order": 1,
"id": "prerequis",
"titre": "Prérequis VPS : modules custom OTOV7 + spec RBAC validée",
"responsable": "vps",
"rationale": "Rien ne s'importe tant que les modules d'application custom (OTOV7 Ventes, OTOV7 CONFOTUR, …) n'existent pas et que le contrat RBAC 50 rôles n'est pas validé comme source de vérité unique.",
"depends_on": [],
"modules": [
{
"module": "rbac",
"ci_job": "rbac-tests"
}
],
"confirmations": [
{
"id": "custom_modules",
"libelle": "Créer les modules d'application custom (OTOV7 Ventes, OTOV7 CONFOTUR, …) avant tout import de fixtures",
"owner": "ERPNext Backend",
"source": "sessions 12/15/16 · création module OTO Ventes / OTOV7 CONFOTUR (hors périmètre worker · CLAUDE.md #8)"
}
]
},
{
"order": 2,
"id": "doctypes",
"titre": "DocTypes custom (structure) avant tout ce qui les référence",
"responsable": "vps",
"rationale": "Les Custom DocPerm, le Workflow vente et les Workspaces référencent des DocTypes custom qui doivent exister au préalable (contrainte dure ERPNext v15).",
"depends_on": [
"prerequis"
],
"modules": [
{
"module": "crm/dossier_vente",
"ci_job": "crm-dossier-vente-tests"
},
{
"module": "legal/confotur",
"ci_job": "legal-confotur-tests"
}
],
"confirmations": [
{
"id": "custom_doctypes",
"libelle": "Créer les DocTypes custom (OTO Dossier Vente, CONFOTUR Application, Faisabilité, Publiciste Log) avant l'import des Workspaces et du Workflow",
"owner": "ERPNext Backend",
"source": "session 15 · DocTypes custom à créer avant import Workspaces (run-book RBAC)"
}
]
},
{
"order": 3,
"id": "rbac-apply",
"titre": "RBAC : Role + Custom DocPerm + User Permission + Role Profile",
"responsable": "worker+vps",
"rationale": "Le run-book RBAC (rbac/apply_plan) ordonne déjà ce volet ; on l'insère ici en bloc car les Has Role d'un Role Profile et les DocPerm référencent des Role/DocTypes qui doivent préexister.",
"depends_on": [
"doctypes"
],
"modules": [
{
"module": "rbac/apply_plan",
"ci_job": "rbac-applyplan-tests"
},
{
"module": "rbac/fixtures_gen",
"ci_job": "rbac-fixtures-tests"
},
{
"module": "rbac/roleprofile_gen",
"ci_job": "rbac-roleprofile-tests"
},
{
"module": "rbac/userperm_gen",
"ci_job": "rbac-userperm-tests"
}
],
"confirmations": []
},
{
"order": 4,
"id": "workflow-metier",
"titre": "Workflow vente + règles métier (commissions, e-CF DGII, dépôts CONFOTUR)",
"responsable": "worker+vps",
"rationale": "Le Workflow pilote le DocType Dossier Vente et s'appuie sur les rôles ; commissions et e-CF se déclenchent sur ses états soumis. Paramètres réglementaires à confirmer avant activation.",
"depends_on": [
"doctypes",
"rbac-apply"
],
"modules": [
{
"module": "crm/commissions",
"ci_job": "crm-commissions-tests"
},
{
"module": "crm/workflow_vente",
"ci_job": "crm-workflow-vente-tests"
},
{
"module": "fiscal/ecf_dgii",
"ci_job": "fiscal-ecf-tests"
}
],
"confirmations": [
{
"id": "taux_commission",
"libelle": "Confirmer les taux de commission vendeurs (barème reste taux_pct null tant que non confirmé)",
"owner": "Direction",
"source": "qa/audit_5d contrôle D1.1 (A_CONFIRMER)"
},
{
"id": "rnc_emisor",
"libelle": "Confirmer le RNC émetteur pour l'émission e-CF DGII",
"owner": "Compta",
"source": "qa/audit_5d contrôle D1.2 (A_CONFIRMER)"
},
{
"id": "itbis_tipocambio",
"libelle": "Confirmer le taux ITBIS et le TipoCambio USD/DOP pour l'e-CF",
"owner": "Compta Fiscaliste eCF",
"source": "qa/audit_5d contrôle D1.3 (A_CONFIRMER)"
},
{
"id": "seuil_uaf",
"libelle": "Confirmer le seuil d'opération de déclaration UAF (Ley 155-17)",
"owner": "Oficial de Cumplimiento",
"source": "qa/audit_5d contrôle D2.3 (A_CONFIRMER)"
}
]
},
{
"order": 5,
"id": "frontend",
"titre": "Frontend desk : Workspaces portails + Custom Block chat OTOIA",
"responsable": "worker+vps",
"rationale": "Les Workspaces (Has Role) et le Custom Block de chat s'ancrent sur les rôles RBAC et les DocTypes déjà en place ; l'endpoint OTOIA reste à renseigner.",
"depends_on": [
"rbac-apply"
],
"modules": [
{
"module": "frontend/chat_otoia",
"ci_job": "chat-otoia-tests"
},
{
"module": "frontend/portails",
"ci_job": "frontend-portails-tests"
}
],
"confirmations": [
{
"id": "endpoint_otoia",
"libelle": "Renseigner l'endpoint runtime du chat OTOIA (reste null / a_confirmer côté livrable)",
"owner": "ERPNext Backend",
"source": "session 19 · endpoint OTOIA = null (a_confirmer)"
}
]
},
{
"order": 6,
"id": "contenu",
"titre": "Contenu projets & publication : Publiciste, Faisabilité, Bancable, SEO, Démo",
"responsable": "worker+vps",
"rationale": "Génération et publication du contenu projet (data_room, dossiers bancables, balises SEO, run-sheet de démo) une fois la plateforme et le frontend en place.",
"depends_on": [
"workflow-metier",
"frontend"
],
"modules": [
{
"module": "demo/scenarios",
"ci_job": "demo-scenario-tests"
},
{
"module": "faisabilite/bancable",
"ci_job": "bancable-tests"
},
{
"module": "faisabilite/generator",
"ci_job": "faisabilite-gen-tests"
},
{
"module": "publiciste",
"ci_job": "publiciste-tests"
},
{
"module": "seo",
"ci_job": "seo-tests"
}
],
"confirmations": []
},
{
"order": 7,
"id": "verification-qa",
"titre": "Vérification post-déploiement : HTTP + audits QA (5D · 4Big · régression)",
"responsable": "vps",
"rationale": "Gate final : vérification HTTP puis exécution des audits de conformité 5D, de qualité 4Big (≥95/100) et de la matrice de régression sur le desk réel.",
"depends_on": [
"workflow-metier",
"frontend",
"contenu"
],
"modules": [
{
"module": "qa/audit_4big",
"ci_job": "qa-audit-4big-tests"
},
{
"module": "qa/audit_5d",
"ci_job": "qa-audit-5d-tests"
},
{
"module": "qa/regression",
"ci_job": "qa-regression-tests"
}
],
"confirmations": []
}
]