Aller au contenu

Index des histoires : ingestion (ING) - v0.0.0

Module : ingestion Total stories : 6 Décomposé à partir de : docs/architecture/ingestion-arch.md (approuvé - session ARCHITECT 2026-05-21) Référence RPD : docs/prd/ingestion-prd.md + docs/prd/prd-v0.md §4 + §8 Référence du design : N/A - la v0.0.0 n'a pas d'interface utilisateur (architecture §1.1). Un document de conception sera nécessaire à partir de la v0.0.3 (téléchargement de l'interface utilisateur + atelier). Date : 21/05/2026

Graphique de dépendance

ING-001  (scaffold: TestContainers, fixtures, empty migrations)
   ├──> ING-002  (scheduler + MinIO client + tenant iteration + ING_UPLOAD_RECEIVED)
   │       │
   │       └──> ING-004  (commit TX + reject + dedup + ImportCommitted)
   └──> ING-003  (parsers + validator + phone normalizer) ──> ING-004
                                                                ├──> ING-005  (startup recovery + ARTCI prod gate)
                                                                │       │
                                                                │       └──> ING-006  (cross-cutting IT pack)
                                                                └──> ING-006

Prérequis externes (doivent être mis en place avant que ING-002 ne commence le développement) : - TENANT-001 (TenantConfigCache, default-agency provisioning, customer/contract base tables) - AUDIT-001 (AuditEventBuilder, outbox, PiiHasher) - Extension du catalogue AUDIT OQ-X10 admettant les types d'événements ING_* - OQ-X11 (TENANT provisions papillon-ingestion-inbox bucket + per-tenant credentials) - OQ-X12 (TENANT confirms additive ALTER strategy on customer/contract) - OQ-X13 (Le PO confirme la consommation de ImportCommitted - no-op listener acceptable)

Liste des histoires

# Story ID Title Side Depends On Complexity Status
1 ING-001 Dev environment + test infrastructure + empty migrations BACKEND TENANT-S0, AUDIT-S0 S Backlog
2 ING-002 Scheduler + MinIO inbox client + tenant iteration skeleton BACKEND ING-001, TENANT-001, AUDIT-001, OQ-X10–11 S Backlog
3 ING-003 CSV/XLSX parsing + row validation + phone normalization BACKEND ING-001 M Backlog
4 ING-004 Commit transaction + reject path + SHA-256 dedup + ImportCommitted BACKEND ING-002, ING-003, TENANT-001, OQ-X10/12 M Backlog
5 ING-005 Startup recovery + ARTCI feature-flag prod gate + structured logging BACKEND ING-004 S Backlog
6 ING-006 Cross-cutting integration test pack (isolation, large file, magic byte, crash, flag) BACKEND ING-005 M Backlog

Niveaux de concurence

Tier Stories Can Start After
0 ING-001 TENANT-S0 + AUDIT-S0 merged
1 ING-002, ING-003 ING-001 merged + AUDIT catalog OQ-X10 + TENANT-001 (for 002)
2 ING-004 ING-002 AND ING-003 merged
3 ING-005 ING-004 merged
4 ING-006 ING-005 merged (test scaffolding may start earlier)

Critères d'acceptation du PRD Couverture

L'architecture §11 liste 5 ACs contraignants pour ING-001 + 3 ACs pour l'échafaudage ING-S0. Chaque étage inférieur ajoute ses propres AC techniques, conformément à la règle des 2-4 par étage.

Architecture / PRD source ACs Assigned To
arch §11 ING-S0 scaffolding smoke boot, migrations apply, fixtures parse ING-001 (3 ACs) ✅
arch §11 ING-001 AC-1 (happy-path commit) clean 5-row CSV → COMMITTED + audit + processed move + event ING-004 (AC-001) ✅
arch §11 ING-001 AC-2 (all-or-nothing reject + sidecar) tainted XLSX → PARSE_FAILED + sidecar + audit ING-004 (AC-002) ✅
arch §11 ING-001 AC-3 (SHA-256 duplicate path) re-dropped file → DUPLICATE row + audit + move, no business write ING-004 (AC-003) ✅
arch §11 ING-001 AC-4 (prod feature-flag closed) prod + flag=false → tick is no-op + WARN log ING-005 (AC-001) ✅
arch §11 ING-001 AC-5 (startup crash recovery) PICKED_UP >5min → PARSE_FAILED + move + audit ING-005 (AC-003) ✅
arch §12 A4/A10 (cross-tenant SHA-256 isolation) same hash, two tenants → both COMMIT, no cross-write ING-006 (AC-001) ✅
arch §8 perf budget + §12 A5 (heap) 5 000 rows ≤10 s parse + ≤5 s commit, <256 MB heap ING-006 (AC-002) ✅
arch §5.1 crash matrix (stages 3, 5a, 5b) three crash points → idempotent recovery by next tick ING-006 (AC-003) ✅
arch §7.6 A1 magic-byte spoof + AC-4 release gate combo OOXML-bytes-with-.csv-ext → PARSE_FAILED; prod flag closed smoke ING-006 (AC-004) ✅
arch §11 ING-002 technical (scheduler+MinIO+upload audit) cron iterates, ING_UPLOAD_RECEIVED, local tick endpoint, large-file reject ING-002 (AC-001/2/3) ✅
arch §11 ING-003 technical (parse + validate kernel) clean parse, tainted anomalies, 5001-row cutoff, magic-byte mismatch ING-003 (AC-001..004) ✅
arch §11 ING-001 prerequisite (ING-S0) 3 smoke ACs ING-001 (AC-001..003) ✅
TOTAL 21 ACs 21 assigned ✅

Couverture vérifiée : chaque CA contraignant de l'architecture §11 est détenu par exactement une histoire ; chaque préoccupation transversale de l'architecture §12/§13 est couverte par ING-006 ; ING-002 / ING-003 portent des CA techniques dérivés proportionnels au code qu'ils introduisent.

Ordre de mise en œuvre

  1. ING-001 - l'échafaudage débloque chaque histoire en aval.
  2. ING-002 - câblage du squelette de l'ordonnanceur + client MinIO. Indépendant de ING-003 (développable en parallèle au niveau 1).
  3. ING-003 - noyau pur d'analyseur/valideur. Indépendant de ING-002.
  4. ING-004 - ferme le chemin heureux de la v0.0.0 ; fusionne le câblage de ING-002 + ING-003 dans un FSM de validation transactionnelle avec audit + ImportCommitted. Blocage de la production jusqu'à ce que ING-005 obtienne le drapeau ARTCI.
  5. ING-005 - bascule l'interrupteur de la version 0.0.0 (ARTCI prod gate) + ajoute la résilience de la récupération en cas de crash. Après cette histoire, la v0.0.0 ING est fonctionnellement complète sur dev/staging.
  6. ING-006 - release gate : cross-cutting integration test pack. La v0.0.0 ING n'est livrée que lorsqu'elle est verte.

Notes

  • Les six histoires sont uniquement en backend - Wireframe : N/A - backend only partout. Les blocs Frontend / UI-States dans chaque histoire sont intentionnellement marqués N/A.
  • Posture de conformité : ARTCI loi 2013-450 Art. 14 → PRÉLIMINAIRE (voir ING-005). CIMA Reg. 01-24 → pas directement engagé dans la v0.0.0 (pas de paiement / sortie réglementaire d'ING).
  • Le WARN de démarrage [LEGAL-REVIEW] est reconnu pour la v0.0.0 dev/staging (la porte est ouverte dans non-prod par conception).
  • Forward-compat checkpoints (pas le travail de la v0.0.0, reformulé pour la visibilité) : V0.0.2 ING-007 (DOB + réintroduction de branche + résolution de code_agence) ; V0.0.3 ING-008+ (UI upload, atelier, history). Ceux-ci seront décomposés dans une future invocation de /decompose, PAS ici.