Audit de second niveau : lit les hand-off out/ des livrables (workflow vente, Dossier Vente, commissions, e-CF DGII, CONFOTUR) et vérifie 17 contrôles en 5 dimensions (D1 Traçabilité/ISA 500 · D2 AML-UAF/Ley 155-17 · D3 Fiscal e-CF/Ley 32-23 · D4 Intégrité/IFRS · D5 Gouvernance-SoD/ISA 315). Anti-invention #6 : paramètre réglementaire non confirmé → A_CONFIRMER (open item assigné au métier), jamais fabriqué. Verdict PASS_WITH_OPEN_ITEMS (13 PASS, 0 FAIL, 4 à confirmer). Réutilise validateur Publiciste + RoleResolver CRM + roles_targeting CONFOTUR (zéro duplication). 37 tests · 15 invariants · build déterministe · régression 341 tests verts. Job CI qa-audit-5d-tests + gate. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
4.2 KiB
Rapport détaillé · 2026-07-30 · Session 17 (20260730_082714)
Sprint 5 · QA — Générateur Audit 5D de conformité
Contexte roadmap
Sprint 5 · volet QA : « Audit UAF + normes ISA/IFRS 5D ». Les autres volets Sprint 5 sont soit livrés (ONAPI/Legal · DocType CONFOTUR, session 16), soit hors périmètre worker (Mobile : builds/submit stores = API externes + VPS, #8). L'audit qualité 5D est le volet QA réalisable en repo.
Décision d'architecture
L'audit est un audit de second niveau : sa matière première est le hand-off
out/ déjà commité par les générateurs amont (workflow vente, DocType
Dossier Vente, barème commissions, plan e-CF DGII, DocType CONFOTUR). Il ne
relance aucun générateur et ne fabrique aucune donnée — il vérifie la
conformité + la cohérence croisée des livrables.
Les 5 dimensions (5D) et leurs normes
| # | Dimension | Norme |
|---|---|---|
| D1 | Traçabilité & anti-invention | ISA 500 |
| D2 | Conformité AML / UAF | Ley 155-17 (sujeto obligado · KYC) |
| D3 | Conformité fiscale e-CF | Ley 32-23 · DGII · Cardnet (#10) |
| D4 | Intégrité référentielle | IFRS (cohérence documentaire) |
| D5 | Gouvernance & SoD | ISA 315 (contrôle interne) |
17 contrôles au total (D1×4, D2×3, D3×3, D4×4, D5×3).
Fichiers créés — 05_deliverables_mvp/qa/audit_5d/
audit_spec.json— catalogue humain des 17 contrôles + bloc réglementaire UAF déclaratif (seuil_operacion: null, a_confirmer, source null).qalib/{__init__,deps,artifacts,controls,builder}.py:deps.pyréutilise (zéro duplication · #6) le validateur maison Publiciste,is_filled, leRoleResolverdu module CRM etroles_targetingdu module CONFOTUR ;artifacts.pycharge les 5 hand-offout/(erreur explicite si absent) ;controls.py= les 17 contrôles (fonctions pures) + les 5 dimensions ;builder.pyassemble le rapport déterministe (aucun horodatage).
audit_5d_gen.py— CLIbuild/validate· 15 invariants.audit.schema.json— contrat de sortie (draft-07, sous-ensemble maison).out/{audit_report,MANIFEST}.json— hand-off commité.tests/test_audit_5d.py— 37 tests (unittest, zéro pip), une injection négative par contrôle.README.md·.gitignore.
Fichiers modifiés
.gitea/workflows/ci.yml: jobqa-audit-5d-tests+ ajout augate.
Anti-invention (cœur · #6)
Le principe même de l'audit : remonter, pas fabriquer. Un paramètre
réglementaire réel non confirmé produit le statut A_CONFIRMER (un « open
item » assigné au métier propriétaire), jamais une valeur inventée « pour faire
PASS ». Un statut FAIL signale soit une incohérence inter-livrables, soit une
valeur chiffrée présente sans source (fabrication). Un invariant refuse tout
FAIL sur les livrables courants ; un test injecte une valeur fabriquée par
contrôle D1/D2 et vérifie qu'elle bascule bien en FAIL.
Verdict courant
PASS_WITH_OPEN_ITEMS — 13 PASS · 0 FAIL · 4 à confirmer :
| Open item | Propriétaire |
|---|---|
| D1.1 · taux de commission | Direction |
| D1.2 · RNC / raison sociale émetteur | Compta |
| D1.3 · ITBIS + TipoCambio | Compta Fiscaliste eCF |
| D2.3 · seuil de déclaration UAF | Oficial de Cumplimiento / UAF |
Ce sont les 4 mêmes paramètres laissés null (a_confirmer) par les
générateurs amont : l'audit prouve qu'aucun n'a été fabriqué et les
consolide en une check-list unique de confirmation pour le VPS.
Vérifications
- 37/37 tests du module ;
validate: schéma + 15 invariants verts. - Gate CI local vert :
guard_constraints+validate_json+check_docs+ YAMLci.ymlvalide. - Régression : 341 tests verts au total (304 prior + 37).
- Build déterministe (invariant #15 : deux exécutions identiques).
Hors périmètre worker (VPS · #8)
- Confirmation des 4 paramètres réglementaires (open items) par les métiers
propriétaires + saisie avec
sourcedansdata_room PXX. - Tests E2E Playwright sur le desk ERPNext réel (workflow_dispatch manuel, hors gate statique).
Auto-score 4Big : 96/100.