34f202af40
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>
1.5 KiB
1.5 KiB
Activity Log · 2026-07-30 · Claude Code DTP
Session 20260730_052701 (session 11)
Tâche : Sprint 4 · CRM — Générateur de workflow vente ERPNext
(lead → visite → devis → réservation → contrat → CONFOTUR).
Fichiers créés — 05_deliverables_mvp/crm/workflow_vente/ :
workflow_vente_spec.json(contrat pipeline · 9 états / 11 transitions)wflib/{__init__,rbac,erpnext,builder}.py(résolution RBAC + connaissance Frappe + assemblage déterministe)workflow_vente_gen.py(CLIbuild/validate· 9 invariants de graphe)workflow.schema.json(contrat de sortie draft-07)out/{workflow,workflow_state,workflow_action_master,MANIFEST}.json(hand-off)tests/test_workflow_vente.py(25 tests) ·README.md·.gitignore
Fichiers modifiés :
.gitea/workflows/ci.yml: jobcrm-workflow-vente-tests+ ajout augate.
Réutilisation (zéro duplication · #6) : rôles résolus depuis
rbac/rbac_50_roles.json (jamais de nom Frappe en dur) + validateur maison
Publiciste.
Vérifs : 25/25 tests ; gate CI local vert (guard + JSON + docs + YAML) ; régression 146 tests verts au total.
Hors périmètre worker (VPS) : création DocType OTO Dossier Vente + import
fixtures (bench migrate) → agent ERPNext Backend (#8).
Détail complet : voir
05_deliverables_mvp/daily_reports/2026-07-30-session11.md.
Auto-score 4Big : 96/100.