Aller au contenu

Orchestrateur Node.js

L’orchestrateur Node.js est un service prévu qui gérera l’automatisation asynchrone du processus ACC (autoconsommation collective). Il fonctionne aux côtés de WordPress en tant que conteneur Docker.

TechnologieVersionFonction
FastifyFramework HTTP (API REST)
TypeScriptDéveloppement typé
BullMQFile d’attente de jobs avec backend Redis
Drizzle ORMAccès à la base de données SQLite
SQLiteStockage local des données (prospects, données PDL, logs de jobs)
RedisConteneur dédiéBackend de file d’attente BullMQ
Bull BoardInterface web de monitoring des files d’attente
┌──────────────────────────────────────────┐
│ Node.js Orchestrator │
│ │
│ ┌────────────┐ ┌─────────────────┐ │
│ │ Fastify API │ │ BullMQ Workers │ │
│ │ │ │ │ │
│ │ POST /prospect │ - PDL search │ │
│ │ GET /status │ │ - Data enrichment │
│ │ GET /jobs │ │ - CRM sync │ │
│ └──────┬──────┘ └───────┬────────┘ │
│ │ │ │
│ ┌──────▼────────────────────▼────────┐ │
│ │ Redis │ │
│ │ (BullMQ queues) │ │
│ └─────────────────────────────────────┘ │
│ │ │
│ ┌──────▼─────────────────────────────┐ │
│ │ SQLite (Drizzle) │ │
│ │ - prospects table │ │
│ │ - pdl_data table │ │
│ │ - job_logs table │ │
│ └─────────────────────────────────────┘ │
└──────────────────────────────────────────┘

L’orchestrateur traite les prospects à travers un pipeline asynchrone multi-étapes :

1. Form Submission (from WordPress)
└── Create prospect in SQLite
└── Enqueue "pdl-search" job
2. PDL Search (BullMQ worker)
├── Call Symphonics API → search PDL by address
├── Store results in SQLite
└── Enqueue "data-enrichment" job
3. Data Enrichment (BullMQ worker)
├── Call Enedis API → energy consumption data
├── Update prospect record
└── Enqueue "crm-sync" job
4. CRM Sync (BullMQ worker)
├── Create/update HubSpot Contact
├── Create HubSpot Deal
└── Update prospect status

Chaque étape est un job BullMQ indépendant avec :

  • Logique de réessai automatique en cas d’échec
  • Suivi de l’état du job (waiting → active → completed/failed)
  • Monitoring via Bull Board

Prospects — Enregistrement central pour chaque demande ACC :

  • Identité du prospect (nom, e-mail, téléphone, adresse)
  • Référence à la centrale associée
  • Statut de traitement
  • Horodatages

PDL Data — Données de réponse de l’API Symphonics :

  • Numéros de référence PDL
  • Informations contractuelles
  • Profils de consommation

Job Logs — Historique de traitement :

  • Type de job, statut, horodatages
  • Détails de l’erreur en cas d’échec
  • Lien vers l’enregistrement du prospect

Le plugin WordPress irisolaris-orchestrator fournit :

  • Tableau de bord admin — Vue d’ensemble des prospects et du statut du pipeline de traitement
  • Liste des prospects — Liste consultable/filtrable de toutes les demandes ACC
  • Suivi des jobs — Visualisation du statut de traitement, réessai des jobs en échec
  • Interface de configuration — Identifiants API, paramètres des files d’attente, politiques de réessai

La communication entre WordPress et le service Node.js se fait via des appels API REST.

Docker Compose:
├── wordpress (existing)
├── orchestrator-api (Fastify + TypeScript)
├── orchestrator-workers (BullMQ workers)
└── redis-orchestrator (dedicated Redis for BullMQ)

L’orchestrateur utilise une instance Redis dédiée séparée du Redis Object Cache de WordPress pour éviter les interférences.

L’orchestrateur est en phase de planification/spécification. Aucun code n’a encore été déployé en production.