PD-72 — Décomposition (Étape 6)¶
Mode d'exécution¶
Mode : sequential (Claude -p a produit l'ensemble du module en une passe unique).
Module créé¶
src/modules/document-transfer/ — 29 fichiers (20 source + 8 tests + 1 fixtures)
Architecture¶
src/modules/document-transfer/
├── document-transfer.module.ts
├── constants/
│ └── transfer.constants.ts
├── dto/
│ └── transfer-job.dto.ts
├── entities/
│ └── document-transfer.entity.ts
├── enums/
│ ├── transfer-error-code.enum.ts
│ ├── transfer-policy.enum.ts
│ └── transfer-status.enum.ts
├── interfaces/
│ ├── transfer-events.interface.ts
│ └── transfer-job.interface.ts
├── listeners/
│ └── anchor-confirmation.listener.ts
├── migrations/
│ └── 1709740800000-create-document-transfer.ts
├── processors/
│ └── pre-transfer.processor.ts
├── services/
│ ├── document-transfer.service.ts
│ ├── transfer-notification.service.ts
│ ├── transfer-orchestrator.service.ts
│ ├── transfer-preconditions.service.ts
│ ├── transfer-proof.service.ts
│ ├── transfer-revocation.service.ts
│ └── transfer-state-machine.service.ts
├── types/
│ └── branded-ids.ts
└── __tests__/
├── fixtures/
│ └── transfer-fixtures.ts
├── pre-transfer.integration.spec.ts
├── pre-transfer.processor.spec.ts
├── transfer-notification.spec.ts
├── transfer-orchestrator.spec.ts
├── transfer-preconditions.spec.ts
├── transfer-proof.spec.ts
├── transfer-revocation.spec.ts
└── transfer-state-machine.spec.ts
Composants et code-contracts¶
| Composant | Contract | Fichiers |
|---|---|---|
| Entity DocumentTransfer | CC-72-01 | entity, enums, types, dto |
| State Machine | CC-72-02 | transfer-state-machine.service.ts |
| Orchestrateur | CC-72-03 | transfer-orchestrator.service.ts |
| Préconditions | CC-72-04 | transfer-preconditions.service.ts |
| Proof (événement + acte) | CC-72-05 | transfer-proof.service.ts |
| Révocation | CC-72-06 | transfer-revocation.service.ts |
| Notification | CC-72-07 | transfer-notification.service.ts |
| Processor BullMQ | CC-72-08 | pre-transfer.processor.ts |
| Listener ancrage | CC-72-09 | anchor-confirmation.listener.ts |
| Module NestJS | CC-72-10 | document-transfer.module.ts |
Tests¶
- 123 tests dans 8 suites
- 7 suites vertes (rapport Claude -p)
- Matrice complète TC-* → fichiers de test
Stubs tracés¶
| Stub | Story destination | Description |
|---|---|---|
| PreEngineService | PD-41 | PRE re-encryption (Umbral) |
| HsmService.sign() | PD-37 | Signature HSM PKCS#11 |
| TsaService.timestamp() | PD-39 | Horodatage RFC 3161 |
| MerkleService.include() | PD-54 | Inclusion Merkle batch |
| AnchoringService.schedule() | PD-55 | Ancrage blockchain |
| AuditService.logEvent() | PD-31 | Journal append-only WORM |
| NotificationService.push() | PD-105 | Push notification |
| ProofBundleService.generate() | PD-245 | Bundle preuve composite |
Learnings appliqués¶
crypto.randomUUID()pour tous les IDs (PD-63)crypto.verify(null, hash, key, sig)pour vérification HSM (PD-282)- Branded types pour
DocumentTransferId,VaultId,ProofId - Centralisation constantes dans constants.ts (PD-243)