Scaffold rapide — Copier + Adapter
Principe : NE PAS generer from scratch. Copier un template existant et l'adapter.
Templates disponibles
Nouveau crawler
- Lire un crawler existant comme template :
src/adapters/crawlers/sirene.ts - Copier la structure (AsyncGenerator + TokenBucket + withRetry)
- Adapter : URL API, schema Zod de reponse, mapping vers DatalakeEntity
- Patterns resilience dans
src/lib/: token-bucket.ts, retry.ts, circuit-breaker.ts
Nouvelle route API
- Lire une route existante :
src/api/routes/entities.ts - Copier la structure (Hono handler + Zod validation + cache headers)
- Adapter : path, query params, service call
- Validation schemas dans
src/api/validation.ts
Nouveau schema Zod
- Lire les schemas existants :
src/core/entities/entity-cards.schema.ts - Copier le pattern (export const XxxSchema = z.object({...}); export type Xxx = z.infer)
- Job types existants :
src/core/entities/job-types.ts(25+ exemples)
Nouveau data contract
- Lire un contrat existant :
src/config/data-contracts/dl-entities-dqc.yml - Copier la structure YAML (source, tier, SLA, dimensions qualite)
- Source registry :
src/config/data-contracts/source-registry.yml
Nouveau job type
- Lire job-types.ts :
src/core/entities/job-types.ts - Ajouter le type au discriminated union
- Ajouter le handler dans
src/worker/handlers/
Utilitaires reutilisables (src/lib/)
TokenBucket— rate limitingwithRetry— exponential backoff + jitterCircuitBreaker— fail-fast + auto-recoverycreateLogger— structured loggingisValidSiren/isValidSiret— validation SIREN/SIRETsignPayload/verifySignature— HMAC-SHA256cleanMojibake— nettoyage encodage UTF-8