Aller au contenu

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 integrityHash via createHash('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/decrypt dans 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)