PD-55 — Revue de Code (v2)¶
Résumé¶
| Critère | Statut |
|---|---|
| Patterns NestJS | ⚠️ |
| Qualité code | ⚠️ |
| Gestion erreurs | ⚠️ |
| Maintenabilité | ❌ |
Verdict : ❌ NON_CONFORME
Les corrections v2 (R-01/R-03/R-05/SEC-55-01..04) sont bien visibles, mais plusieurs écarts restent.
Points positifs¶
- Bonne séparation des responsabilités (processor orchestration, services métier, adapter infra)
- Usage DI NestJS correct, dont l'alias BlockchainServiceInterface
- Machine d'état explicitée et contrôlée via isValidAnchorStatusTransition
- Transactions explicites sur opérations sensibles
- Journalisation/audit systématique sur transitions critiques
- Correctif sécurité API appliqué (@UseGuards(JwtAuthGuard))
Points à améliorer¶
| ID | Description | Fichier | Gravité |
|---|---|---|---|
| R-55-01 | Job répétable enregistre windowStart/windowEnd figés au démarrage | anchor.module.ts | MAJEUR |
| R-55-02 | Collecte événements incohérente (requête sur anchor_batch_events + filtre status=PENDING) | proof-event.service.ts | MAJEUR |
| R-55-03 | Migration index partiel avec sous-requête non supporté PostgreSQL | create-anchor-tables.ts | MAJEUR |
| R-55-04 | waitForConfirmation() ne remonte pas blockNumber; finalizeBatch peut finaliser sans bloc | blockchain-adapter.service.ts | MAJEUR |
| R-55-05 | Confirmations incohérentes (12 hardcodé vs constante 30) | blockchain-anchor.processor.ts | MAJEUR |
| R-55-06 | detectWindowGap() fail-open sur erreur DB (invariant de continuité) | anchor-alert.service.ts | MAJEUR |
| R-55-07 | failBatch() lit hors transaction/verrou avant mise à jour | anchor-batch.service.ts | MINEUR |
| R-55-08 | withTimeout() sans clearTimeout et wrapping d'erreurs via new Error() | blockchain-anchor.processor.ts | MINEUR |
| R-55-09 | markEventsAnchored() semble non utilisée dans le flux principal | proof-event.service.ts | MINEUR |
Date : 2026-02-22 Revieweur : ChatGPT (gpt-5.3-codex) Mode : Review code automatisée (Step 7 v2)