ADR 0015 – Tâches de fond
Statut : Décidée. Date : 28/09/2026 (mise à jour du document de découpage).
Contexte
Section intitulée « Contexte »Aucune tâche perdue au redémarrage d’un conteneur ; pas de composant supplémentaire sur Kubernetes
Décision
Section intitulée « Décision »pg-boss, introduit au Lot 2 (génération des documents officiels), puis SMS, imports, webhooks, calculs nocturnes ; tâche inscrite dans la même transaction que l’écriture métier. Redis et BullMQ écartés ; Graphile Worker comme alternative.
Alternatives écartées
Section intitulée « Alternatives écartées »Redis et BullMQ écartés ; Graphile Worker comme alternative.
Conséquences
Section intitulée « Conséquences »Non précisées au-delà de la justification ci-dessus. Mise en œuvre (L2-7, 04/10/2026) : pg-boss 12 sous le schéma pgboss, connexion TACHES_DATABASE_URL (rôle propriétaire du schéma, distinct de biotrace_app qui reste soumis à la RLS). Première tâche : audit.generer-dossier (dossier d’audit, RG-130). La tâche est inscrite après la validation de l’écriture métier, non dans la même transaction (EC-124) : la ligne métier « en_attente » est la source de vérité, la tâche est idempotente (clé de singleton = identifiant de l’objet) et rejouable.
Stratégie de sortie
Section intitulée « Stratégie de sortie »Une file en base, des tâches idempotentes qui ne portent que des identifiants, et une ligne métier qui garde l’état : remplacer pg-boss par Graphile Worker (autre file PostgreSQL) revient à changer TachesService (apps/api/src/taches/), seul module qui connaît pg-boss. Les traitements (AuditService.generer) sont des méthodes ordinaires, appelables sans file.
BioTrace_decoupage_lots.md, section « Décisions techniques », ligne « Tâches de fond ».