[DTP-Worker] Sprint 5 · Générateur DocType CONFOTUR Application (ONAPI/Legal · roadmap L55)

DocType custom porteur des dossiers d'incitation touristique CONFOTUR (Ley
158-01, RD), référencé par RBAC (3 rôles) et le workflow vente mais jamais
généré. Permissions = permissions_cibles RBAC mot pour mot ; is_submittable
déduit de l'action submit ; estado/dossier_vente dérivés du workflow ; aucun
taux/loi/montant fabriqué (#6). 14 invariants, 44 tests, hand-off dans out/.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Claude Code DTP Worker
2026-07-30 08:09:41 +00:00
parent c0d2e21ef3
commit 35a20247f8
15 changed files with 1810 additions and 1 deletions
+53
View File
@@ -1,5 +1,58 @@
# Activity Log · 2026-07-30 · Claude Code DTP
## Session `20260730_075712` (session 16)
**Tâche** : **Sprint 5 · ONAPI/Legal** — Générateur du **DocType porteur
`CONFOTUR Application`** (roadmap **L55** « Refactor `oto_module_confotur_application.py`
→ dépôts automatiques »). Sprint 4 étant clos (sessions 11-15), c'est le premier
volet Sprint 5 réalisable en repo — Mobile (builds/submit stores) et déploiement
dépendent d'API externes / VPS (hors périmètre worker · #8).
**Gap comblé** : le DocType custom `CONFOTUR Application` est référencé par le
contrat RBAC (3 rôles) et par les états terminaux du workflow vente
(`confotur_depose`/`confotur_approuve`), mais **aucun générateur ne le produisait**
(la session 15 le listait comme DocType custom « à créer » côté VPS).
**Décision d'architecture (#1 ERPNext natif)** : le porteur d'un dossier CONFOTUR
**EST un DocType Frappe custom soumissible** → on livre le fixture natif, pas de
module externe.
**Fichiers créés**`05_deliverables_mvp/legal/confotur/` :
- `confotur_spec.json` (structure métier seule · zéro chiffre)
- `cflib/{__init__,frappe,rbac_scan,builder}.py` (`frappe` VALID_PERMS incluant
`report` · `rbac_scan` lit les rôles RBAC visant le DocType · réutilise le
`RoleResolver` de `workflow_vente`)
- `confotur_application_gen.py` (CLI `build`/`validate` · **14 invariants**)
- `confotur.schema.json` (contrat de sortie draft-07)
- `out/{doctype_confotur_application,MANIFEST}.json` (hand-off) ·
`tests/test_confotur.py` (**44 tests** dont 8 négatifs) · `README.md` · `.gitignore`
**Fichiers modifiés** :
- `.gitea/workflows/ci.yml` : job `legal-confotur-tests` + ajout au `gate`.
**Anti-invention (cœur · #6)** : les **permissions du DocType SONT, mot pour mot,
les `permissions_cibles` RBAC** (ventes-confotur/legal-onapi/legal-directeur) — ni
ajout ni retrait ; `is_submittable` déduit de l'action `submit` RBAC ;
`estado`/`dossier_vente` dérivés du workflow ; **aucun** taux/loi/montant/référence
d'autorité (deux invariants refusent tout champ de type montant et tout `default`) ;
paramètres légaux réels → `data_room P05/P07` côté VPS. Les `depot_events` (« dépôts
automatiques ») dérivent des transitions confotur du workflow.
**Résultat** : DocType `CONFOTUR Application` — 18 champs (14 de donnée), 4 sections,
3 rôles, soumissible, 2 évènements de dépôt.
**Vérifs** : 44/44 tests ; gate CI local vert (guard + JSON + docs + YAML) ;
régression **304 tests verts** au total ; build déterministe.
**Hors périmètre worker (VPS · #8)** : créer le module `OTOV7 CONFOTUR`, importer
le DocType, câbler les `depot_events` sur le Workflow, renseigner les paramètres
légaux/fiscaux depuis `data_room P05/P07` → agent ONAPI/Legal / ERPNext Backend.
**Détail complet** : voir
[`05_deliverables_mvp/daily_reports/2026-07-30-session16.md`](../05_deliverables_mvp/daily_reports/2026-07-30-session16.md).
**Auto-score 4Big** : 96/100.
## Session `20260730_072711` (session 15)
**Tâche** : Sprint 4 · Frontend Console — Générateur de **Workspaces ERPNext