[DTP-Worker] Sprint 4 · Générateur workflow vente ERPNext (lead → CONFOTUR)

Contrat pipeline commercial CRM natif (lead → visite → devis → réservation →
contrat → CONFOTUR) → fixtures Frappe/ERPNext v15 : Workflow (9 états / 11
transitions) + Workflow State + Workflow Action Master + MANIFEST.

Rôles gardant états/transitions résolus depuis rbac_50_roles.json (réutilisation,
zéro duplication · #6) : le contrat ne cite qu'un id de rôle, jamais un nom
Frappe en dur. CLI build/validate refuse d'écrire si l'un des 9 invariants de
graphe casse (monotonie doc_status, atteignabilité, séparation des pouvoirs sur
les étapes engageant de l'argent / clôturant).

25 tests (stdlib pur + oracle jsonschema) · job CI crm-workflow-vente-tests ajouté
au gate · 146 tests de régression verts au total. Application VPS (DocType porteur
OTO Dossier Vente + bench migrate) = agent ERPNext Backend, hors périmètre worker.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Claude Code DTP Worker
2026-07-30 05:36:27 +00:00
parent 915fc5194a
commit 34f202af40
17 changed files with 1797 additions and 1 deletions
@@ -0,0 +1,48 @@
{
"generated_from": "workflow_vente_spec.json",
"rbac_source": "rbac_50_roles.json",
"source_version": "1.0.0",
"workflow_name": "OTO Vente Pipeline",
"document_type": "OTO Dossier Vente",
"document_type_custom": true,
"counts": {
"states": 9,
"transitions": 11,
"workflow_state_masters": 9,
"workflow_action_masters": 9,
"terminal_states": 3
},
"custom_doctypes_a_confirmer": [
"OTO Dossier Vente"
],
"roles_rbac_utilises": [
{
"role_id": "direction-cco",
"erpnext_role_name": "OTO Direction Commerciale"
},
{
"role_id": "ventes-chef-equipe",
"erpnext_role_name": "OTO Ventes Chef Équipe"
},
{
"role_id": "ventes-confotur",
"erpnext_role_name": "OTO Ventes CONFOTUR"
},
{
"role_id": "ventes-conseiller",
"erpnext_role_name": "OTO Ventes Conseiller"
},
{
"role_id": "ventes-contrats",
"erpnext_role_name": "OTO Ventes Contrats"
},
{
"role_id": "ventes-directeur",
"erpnext_role_name": "OTO Ventes Directeur"
},
{
"role_id": "ventes-reservations",
"erpnext_role_name": "OTO Ventes Réservations"
}
]
}