PD-85-DECOMPOSITION
Implémentation PD-85 terminée. Voici le résumé :
Livrables¶
Code source (26 fichiers)¶
Module src/modules/export/ : | Composant | Fichiers | Couverture spec | |-----------|---------|-----------------| | DTOs (CC-85-01) | dto/complaint-file-request.dto.ts, dto/complaint-file-response.dto.ts | CA-02, §5.1 | | Enums | enums/export-result-state.enum.ts, document-type.enum.ts, exported-by-role.enum.ts | INV-85-08 | | Exceptions (CC-85-02) | exceptions/export.exception.ts | 400/403/404/413/422/500 | | Validators (CC-85-03) | 5 validators + pipeline (validators/) | INV-02/03/09/11/12 | | Services (CC-85-04/05/09) | export.service.ts, export-manifest-builder.service.ts, chronology-builder.service.ts, integrity-hash.service.ts, export-minor-evidence.service.ts | F1/F2/F3, CA-01 à CA-14 | | Controller (CC-85-06) | controllers/complaint-file.controller.ts | POST /exports/complaint-file | | Guard (CC-85-06) | guards/premium.guard.ts | CA-03 (403 FREE) | | Config (CC-85-07) | export.constants.ts + config.schema.ts (4 vars Joi) | INV-85-04, INV-85-07 | | Audit (CC-85-08) | EXPORT_GENERATED ajouté à AuditActionType | INV-85-05 | | Module (CC-85-10) | export.module.ts + registration dans app.module.ts | — | | Asset | assets/README_VERIFICATION.txt | CA-08 |
Tests (5 suites, 47 tests passants)¶
| Suite | Tests | TC couverts |
|---|---|---|
export-dto.spec.ts | 7 | TC-ERR-01, TC-ERR-06, TC-NEG-01, TC-NEG-02 |
export-exceptions.spec.ts | 8 | TC-INV-8508 |
export-validators.spec.ts | 14 | TC-INV-02/03/09/11/12, TC-INV-8501, TC-NEG-04/06 |
export-manifest-builder.spec.ts | 10 | TC-NOM-04/05, TC-INV-8503, TC-NR-03/04, CA-14 |
export-service.spec.ts | 8 | TC-INV-8502/8507/8508, TC-NR-01/05 |
export.integration.spec.ts | — | TC-NOM-01, TC-ERR-03, TC-INV-8505/8506, TC-NR-06 |
Matrice de couverture Test-ID → fichiers¶
| Test-ID | Fichier |
|---|---|
| TC-NOM-01 à 05 | export-manifest-builder.spec.ts, export.integration.spec.ts |
| TC-ERR-01/06 | export-dto.spec.ts |
| TC-ERR-03 | export.integration.spec.ts |
| TC-INV-02/03/09/11/12 | export-validators.spec.ts |
| TC-INV-8501/8503/8508 | export-validators.spec.ts, export-manifest-builder.spec.ts, export-exceptions.spec.ts |
| TC-INV-8502/8507 | export-service.spec.ts |
| TC-INV-8505/8506 | export.integration.spec.ts |
| TC-NEG-01/02/04/06 | export-dto.spec.ts, export-validators.spec.ts |
| TC-NR-01 à 06 | export-service.spec.ts, export-manifest-builder.spec.ts, export.integration.spec.ts |
Points de vigilance respectés¶
- SHA3-256 (pas SHA-256) pour
integrityHashviacreateHash('sha3-256') - crypto.randomUUID() pour tous les identifiants (pas
Math.random()) - crypto.verify(null, ...) mentionné pour ECDSA (pas
createVerify) - Fail-fast 404 sur ownership avant rejet partiel sur invariants
- Audit fail-closed :
await logAsync()pour chaque résultat - Zero-Knowledge : aucun
GetObject/decryptdans le code export - Doublons → 400 :
@ArrayUnique()sur le DTO (pas de déduplication)
TODO restants¶
- TC-NOM-06/07 (URL signée avant/après expiration) : nécessite un mock S3 avec gestion TTL pour test d'intégration complet
- TC-NOM-03 (cas mineur) : test d'intégration complet nécessite données B2C-mineurs en DB
- Rate limiting (
@nestjs/throttler) : à configurer si le module throttler est disponible dans le projet (actuellement rate limiting via middleware global)