@volontariapp/workers 1.3.8-snap-8e4f7a0 → 1.3.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/README.md +64 -0
  3. package/package.json +11 -11
package/CHANGELOG.md CHANGED
@@ -1,5 +1,20 @@
1
1
  # Changelog
2
2
 
3
+ ## 1.3.9
4
+
5
+ ### Patch Changes
6
+
7
+ - README bump
8
+
9
+ - Updated dependencies []:
10
+ - @volontariapp/bridge@1.0.5
11
+ - @volontariapp/config@3.2.1
12
+ - @volontariapp/database@3.4.4
13
+ - @volontariapp/health-check@1.0.5
14
+ - @volontariapp/logger@0.2.6
15
+ - @volontariapp/messaging@2.10.1
16
+ - @volontariapp/outbox@0.9.41
17
+
3
18
  ## 1.3.8
4
19
 
5
20
  ### Patch Changes
package/README.md ADDED
@@ -0,0 +1,64 @@
1
+ # @volontariapp/workers
2
+
3
+ ## Overview & Background Processing
4
+
5
+ Le package `workers` fournit l'infrastructure de base (Base Classes, Audits, Handlers) pour l'ensemble des processus asynchrones de Volontariapp.
6
+ Il travaille en tandem avec la librairie `@volontariapp/outbox`. Là où l'`outbox` *produit* les messages vers Redis (BullMQ), le package `workers` *consomme* et *traite* ces messages.
7
+
8
+ ## Cycle de Vie d'un Job
9
+
10
+ Ce package implémente un système d'audit robuste qui enregistre les transitions d'état de chaque job dans la base de données.
11
+
12
+ ```mermaid
13
+ stateDiagram-v2
14
+ [*] --> Redis_BullMQ : Outbox pushes job
15
+
16
+ state "Worker Logic" as WL {
17
+ Redis_BullMQ --> Working : Worker pops job
18
+ Working --> Success : Exécution métier OK
19
+ Working --> Failed : Exécution erreur / Timeout
20
+ }
21
+
22
+ Working --> DB_Audit : INSERT job_audit (Working)
23
+ Success --> DB_Audit : UPDATE job_audit (Done)
24
+ Failed --> DB_Audit : UPDATE job_audit (Failed)
25
+ ```
26
+
27
+ ## Structure des Dossiers
28
+
29
+ ```text
30
+ src/
31
+ ├── consumers/ # Wrappers BullMQ gérant le concurrency et la résilience
32
+ ├── audits/ # Repositories pour écrire dans les tables d'audit SQL
33
+ ├── handlers/ # Classes abstraites de base pour implémenter un Worker
34
+ └── test/ # Utilitaires de mock BullMQ pour les tests
35
+ ```
36
+
37
+ ## Exemple d'Implémentation
38
+
39
+ ### Création d'un Worker Métier
40
+
41
+ Pour créer un worker dans un microservice (ou un service worker dédié), il suffit d'étendre la classe de base fournie par ce package. La base se charge de l'audit SQL et de la gestion des erreurs de manière transparente.
42
+
43
+ ```typescript
44
+ import { BaseJobHandler, JobAuditService } from '@volontariapp/workers';
45
+
46
+ export class NotifyFollowersWorker extends BaseJobHandler<NotifyPayload> {
47
+ constructor(
48
+ auditService: JobAuditService,
49
+ private readonly notificationService: INotificationService
50
+ ) {
51
+ super(auditService, 'notify-followers'); // Nom du job
52
+ }
53
+
54
+ // Seule la logique métier doit être implémentée
55
+ protected async processJob(payload: NotifyPayload): Promise<void> {
56
+ const followers = await this.notificationService.getFollowers(payload.eventId);
57
+
58
+ for (const follower of followers) {
59
+ await this.notificationService.pushNotification(follower.id, payload.message);
60
+ }
61
+ // L'audit "Working" et "Done" est géré automatiquement par le BaseJobHandler
62
+ }
63
+ }
64
+ ```
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@volontariapp/workers",
3
- "version": "1.3.8-snap-8e4f7a0",
3
+ "version": "1.3.9",
4
4
  "publishConfig": {
5
5
  "access": "public",
6
6
  "provenance": true
@@ -39,13 +39,13 @@
39
39
  "db:down": "docker compose -f ../../ci-tools/testing/docker-compose.yml --profile test stop test-db redis"
40
40
  },
41
41
  "dependencies": {
42
- "@volontariapp/bridge": "1.0.4",
43
- "@volontariapp/config": "3.2.0",
44
- "@volontariapp/database": "3.4.3-snap-8e4f7a0",
45
- "@volontariapp/health-check": "1.0.4",
46
- "@volontariapp/logger": "0.2.5",
47
- "@volontariapp/messaging": "2.10.0-snap-8e4f7a0",
48
- "@volontariapp/outbox": "0.9.40-snap-8e4f7a0"
42
+ "@volontariapp/bridge": "1.0.5",
43
+ "@volontariapp/config": "3.2.1",
44
+ "@volontariapp/database": "3.4.4",
45
+ "@volontariapp/health-check": "1.0.5",
46
+ "@volontariapp/logger": "0.2.6",
47
+ "@volontariapp/messaging": "2.10.1",
48
+ "@volontariapp/outbox": "0.9.41"
49
49
  },
50
50
  "peerDependencies": {
51
51
  "@nestjs/bullmq": "^11.0.0",
@@ -59,9 +59,9 @@
59
59
  "@nestjs/common": "^11.0.0",
60
60
  "@types/jest": "^30.0.0",
61
61
  "@types/node": "^24.0.0",
62
- "@volontariapp/database": "3.4.3-snap-8e4f7a0",
63
- "@volontariapp/outbox": "0.9.40-snap-8e4f7a0",
64
- "@volontariapp/testing": "1.0.1",
62
+ "@volontariapp/database": "3.4.4",
63
+ "@volontariapp/outbox": "0.9.41",
64
+ "@volontariapp/testing": "1.0.2",
65
65
  "bullmq": "^5.76.5",
66
66
  "ioredis": "^5.3.7",
67
67
  "jest": "^30.3.0",