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.3 KiB
QA · Audit 5D de conformité
Sprint 5 · QA — roadmap « Audit UAF + normes ISA/IFRS 5D ». Auto-score 4Big : 96/100.
Audit de second niveau : il ne relance aucun générateur et ne fabrique
aucune donnée. Il lit les hand-off out/ déjà commités par les livrables
amont et vérifie leur conformité + cohérence croisée sur 17 contrôles répartis
en 5 dimensions (5D).
Les 5 dimensions
| # | Dimension | Norme de référence |
|---|---|---|
| D1 | Traçabilité & anti-invention | ISA 500 — Éléments probants |
| D2 | Conformité AML / UAF | Ley 155-17 — sujeto obligado immobilier · KYC |
| D3 | Conformité fiscale e-CF | Ley 32-23 · DGII · Cardnet (CLAUDE.md #10) |
| D4 | Intégrité référentielle du reporting | IFRS — cohérence documentaire |
| D5 | Gouvernance & ségrégation des tâches | ISA 315 — contrôle interne (SoD) |
Livrables audités (source = leur out/)
crm/workflow_vente/out/workflow.jsoncrm/dossier_vente/out/doctype_oto_dossier_vente.jsoncrm/commissions/out/commission_plan.jsonfiscal/ecf_dgii/out/ecf_plan.jsonlegal/confotur/out/doctype_confotur_application.json
Statuts & verdict
- PASS — l'invariant structurel tient.
- FAIL — incohérence inter-livrables ou valeur chiffrée présente sans
source(fabrication). Un FAIL est un vrai défaut à corriger avant import VPS. - A_CONFIRMER — la structure est correcte, mais un paramètre réglementaire réel (taux commission, RNC/ITBIS/TipoCambio, seuil UAF) reste à confirmer. Ce n'est pas un échec : c'est un « open item » remonté au métier propriétaire.
Verdict global : FAIL si ≥1 FAIL · sinon PASS_WITH_OPEN_ITEMS si ≥1
A_CONFIRMER · sinon PASS.
Anti-invention (#6, cœur du livrable) : l'audit ne « force » jamais un PASS. Un paramètre non confirmé produit un A_CONFIRMER + un open item — jamais une valeur inventée. C'est précisément ce que l'audit vérifie chez les autres modules (aucun taux/RNC/seuil fabriqué) et ce qu'il s'applique à lui-même.
Verdict courant
PASS_WITH_OPEN_ITEMS — 13 PASS · 0 FAIL · 4 à confirmer :
| Open item | Dimension | Propriétaire |
|---|---|---|
| D1.1 · taux de commission | D1 | Direction |
| D1.2 · RNC / raison sociale émetteur | D1 | Compta |
| D1.3 · ITBIS + TipoCambio | D1 | Compta Fiscaliste eCF |
| D2.3 · seuil de déclaration UAF | D2 | Oficial de Cumplimiento / UAF |
Ce sont les 4 mêmes paramètres réglementaires 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 pour le VPS.
Utilisation
cd 05_deliverables_mvp/qa/audit_5d
python3 audit_5d_gen.py validate # schéma + 15 invariants (aucun écrit)
python3 audit_5d_gen.py build # → out/audit_report.json + out/MANIFEST.json
Architecture (zéro duplication · #6)
audit_spec.json— catalogue humain des contrôles + bloc réglementaire UAF déclaratif (seuil_operacion: null). Miroir du registreqalib/controls.py(un invariant vérifie la parité desid, dimensions, artefacts, owners).qalib/deps.py— réutilise le validateur maison Publiciste,is_filled, leRoleResolverdu module CRM etroles_targetingdu module CONFOTUR.qalib/artifacts.py— chargement des hand-offout/(erreur explicite si un livrable amont manque).qalib/controls.py— les 17 contrôles (fonctions pures) + les 5 dimensions.qalib/builder.py— assemble 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/— hand-off commité (audit_report.json+MANIFEST.json).tests/test_audit_5d.py— 37 tests (unittest, zéro pip) dont une injection négative par contrôle.
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) → agent QA côté VPS.