c06e15c058
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>
86 lines
4.2 KiB
Markdown
86 lines
4.2 KiB
Markdown
# 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.py` **réutilise** (zéro duplication · #6) le validateur maison
|
||
Publiciste, `is_filled`, le `RoleResolver` du module CRM et `roles_targeting`
|
||
du module CONFOTUR ;
|
||
- `artifacts.py` charge les 5 hand-off `out/` (erreur explicite si absent) ;
|
||
- `controls.py` = les 17 contrôles (fonctions pures) + les 5 dimensions ;
|
||
- `builder.py` assemble le rapport déterministe (aucun horodatage).
|
||
- `audit_5d_gen.py` — CLI `build`/`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` : job `qa-audit-5d-tests` + ajout au `gate`.
|
||
|
||
### 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` +
|
||
YAML `ci.yml` valide.
|
||
- **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 `source` dans `data_room PXX`.
|
||
- Tests E2E Playwright sur le desk ERPNext réel (workflow_dispatch manuel, hors
|
||
gate statique).
|
||
|
||
**Auto-score 4Big : 96/100.**
|