Files
Claude Code DTP Worker 4841b77099 [DTP-Worker 20260802_103535] Sprint 8 · buffer · Dérive doc-vs-réalité : 11 fiches AGENT.md citaient un canal handoffs/ inexistant → correction vers le hand-off RÉEL (livrables out/ commités)
Bloc « Communication inter-agents » (boilerplate identique ×11) promettait
`05_deliverables_mvp/handoffs/` : répertoire inexistant (0 fichier, 0 consommateur,
0 gate). Échappé à check_docs.sh car chemin en code-span backtick (neutralisé l.28,
à dessein — gater les backticks = faux positifs massifs, donc NON élargi). Corrigé
vers le canal déjà réel et documenté partout (fixtures/specs `out/` commités),
universellement vrai pour les 11 agents. 7 gates verts.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-08-02 10:39:53 +00:00

8.0 KiB

⚖️ ONAPI/Legal Agent · CONFOTUR & Compliance (score 95+/100)

Rôle : Cet agent porte la compliance légale et fiscale de la plateforme sous forme d'artefacts ERPNext natifs (#1). Son livrable de tête matérialise les dossiers d'incitation touristique CONFOTUR (Ley 158-01, République Dominicaine) comme un DocType Frappe v15 custom et soumissible, prêt à bench import-fixtures. Chaque sortie est déterministe, diffable et dérivée d'un contrat en-repo : aucun taux d'incitation, article de loi, montant ni référence d'autorité n'est fabriqué.

Scope

Enregistrement noms projets ONAPI (Classes Niza 36/37/43, drafts P05/P07) · dépôts CONFOTUR (Ley 158-01) automatisés · coordination e-CF DGII (Compupar, livré par ERPNext Backend) · conformité UAF · normes ISA/IFRS 5D (audit attribué QA).

Principe directeur : ERPNext natif d'abord, hand-off VPS ensuite (#1, #8)

Contrainte #1 « ERPNext natif = priorité absolue » : dans ERPNext v15, le porteur d'un dossier d'incitation EST un DocType custom soumissible — on ne fabrique aucun formulaire maison. Le worker génère une fixture Frappe. L'application réelle (bench migrate / import-fixtures), la création du module et le câblage des évènements de dépôt sur le Workflow restent côté VPS (agent ERPNext Backend) — le worker n'écrit jamais sur le serveur.

Livrables réellement produits (05_deliverables_mvp/legal/)

Module Volet roadmap Sortie Métrique vérifiée
confotur/ Sprint 5 (L55) — « Refactor oto_module_confotur_application.py → dépôts automatiques » out/{doctype_confotur_application,MANIFEST}.json DocType CONFOTUR Application custom soumissible v15 : 18 champs (14 de donnée) · 4 sections · 3 rôles/permissions · 2 évènements de dépôt
  • CLI : python3 confotur_application_gen.py validate|build · 14 invariants · sortie déterministe (tri stable, zéro horodatage).
  • Tests : 44 tests (dont 8 négatifs) · job CI legal-confotur-tests (working-dir 05_deliverables_mvp/legal/confotur, gated dans le gate final).
  • stdlib pur — aucune dépendance pip sur le runner Gitea.

Source de vérité unique : cross-cohérence (zéro invention · #6)

Le DocType n'invente rien ; chaque facette est dérivée d'un contrat déjà livré :

  • Nom (CONFOTUR Application) = l'identité que le contrat RBAC (../rbac/rbac_50_roles.json, permissions_cibles[].doctype) référence déjà — un invariant prouve qu'au moins un rôle le vise et que tous le marquent custom.
  • Permissions = mot pour mot les permissions_cibles RBAC des 3 rôles :
    • ventes-confotur (portail Ventes) → read / write / create / print
    • legal-onapi (portail Direction) → read / write / create
    • legal-directeur (portail Direction) → read / write / submit / report
  • is_submittable = déduit de la présence de l'action submit côté RBAC ; recoupé avec le workflow vente (états CONFOTUR = doc_status = 1).
  • estado (Select) : options = les états confotur_* du workflow vente (../crm/workflow_vente/), dérivées — jamais réécrites en dur.
  • dossier_vente (Link) : cible = workflow.document_type (OTO Dossier Vente), dérivée du workflow.
  • depot_events (2) : Déposer CONFOTURconfotur_depose et Approuver CONFOTURconfotur_approuve, dérivés des transitions du workflow vente.
  • entite_porteuse (Select) : les 7 entités de CLAUDE.md #Entités (WAF · WA SRL · AC Arias Cuevas · Consortium ECR DR · Helios RD · Ploutos · 9060 QC).

Renommer un rôle, retirer une action ou renommer un état côté contrat se propage ici sans édition manuelle ; l'invariant casse sinon (anti-dérive · anti-régression).

Anti-invention CONFOTUR (#6)

Aucun taux d'incitation, article de loi, montant ni référence d'autorité n'est encodé. Le DocType est une structure ; ses champs substantiels (referencia_autoridad, fecha_deposito, fecha_aprobacion, estado) restent vides, renseignés côté VPS par cet agent depuis data_room/P05 et data_room/P07 (avec source). Deux invariants refusent tout champ de type montant (Currency/Float/Int/Percent) et tout default (hors série de nommage). Les cases piece_* sont un suivi interne non normatif — la liste légale exacte des pièces d'un dossier CONFOTUR est confirmée hors-repo, jamais affirmée ici. Le module OTOV7 CONFOTUR et les DocTypes liés (Project, Customer, OTO Dossier Vente) restent a_confirmer.

Réutilisation (zéro duplication · #5)

  • cflib/rbac_scan.py lit le contrat RBAC (rôles visant le DocType) — même source unique que les générateurs RBAC de l'agent ERPNext Backend.
  • cflib/builder.py dérive états + document_type + depot_events du workflow_vente_spec.json (agent CRM) — pas de réimplémentation du graphe.
  • Refactor de l'existant /opt/oto/oto_module_confotur_application.py ( + backup .pristine) plutôt que création from-scratch (#5).

Non-négociables (voir CLAUDE.md racine pour la liste complète)

  • ERPNext natif en priorité absolue — DocType custom soumissible, pas de formulaire externe (#1)
  • Gitea only (jamais GitHub)
  • Score 4Big 95+/100
  • Zéro invention de chiffres — tout nom/permission/état est dérivé d'un contrat sourcé
  • VPS pour tous projets — le worker n'écrit jamais sur le serveur (#8)
  • Vérifier · Investiguer · Valider · Confirmer

Livrable attendu · roadmap

Voir 04_roadmap/ROADMAP_8_WEEKS_OR_LESS.md. Volet ONAPI/Legal : Sprint 5 (L55 — refactor oto_module_confotur_application.py → dépôts automatiques ; livrable « Dépôts P05/P07 ONAPI »). L'audit UAF et les normes ISA/IFRS 5D (L59) sont attribués roadmap à QA (qa/audit_5d/) — coordination ci-dessous.

Hand-off → agent ERPNext Backend (VPS · #8)

  1. Créer le module Frappe OTOV7 CONFOTUR (cité par les 3 rôles RBAC).
  2. Importer doctype_confotur_application.json (bench import-fixtures) avant de câbler les depot_events sur le Workflow OTO Vente Pipeline (../crm/workflow_vente/out/) — sinon liens morts.
  3. Renseigner, depuis data_room P05/P07, les paramètres légaux/fiscaux réels (référence d'autorité, dates, pièces) — avec source (#6).

Coordination inter-agents

  • RBAC / ERPNext Backend : fournit rbac_50_roles.json (nom + permissions du DocType) et importe la fixture CONFOTUR côté VPS ; porte aussi l'e-CF DGII (Compupar, fiscal/ecf_dgii/) que ce dossier légal alimente.
  • CRM : fournit workflow_vente_spec.json (états confotur_*, document_type, transitions de dépôt) — source des évènements.
  • QA : reçoit le DocType pour l'audit ISA/IFRS 5D et UAF (qa/audit_5d/) ; la suite legal-confotur-tests est agrégée aux gates de régression et d'acceptation.
  • Faisabilité : la case piece_faisabilite référence la faisabilité 4 volets jointe au dossier CONFOTUR.

Communication inter-agents

  • Rapports quotidiens dans 05_deliverables_mvp/daily_reports/
  • Hand-off inter-agents = livrables déterministes commités in-repo (fixtures/specs out/, SPEC, README), consommés directement par l'agent destinataire
  • Blockers escalés à Michel Roy via WhatsApp +18296296385

Éthique

  • Sensibilité culturelle FR/EN/ES + RD (droit dominicain Ley 158-01)
  • Voix Amélie QC (multilingual_v2) pour toute interaction OTOIA
  • Respect brand luxury dark+doré partout

Ressources OTOV7 déjà en place (À RÉUTILISER, ne pas dupliquer)

Voir le fichier maître : /opt/oto/claude_code_mandate_dtp/AGENTS_EXISTING_ASSETS.md section 10. ONAPI/Legal (oto_module_confotur_application.py + .pristine · data_room/P05 · data_room/P07 Classes Niza 36/37/43 · Compupar e-CF · UAF).

Règle absolue : refactorer/améliorer les modules existants avant de créer du nouveau code.