Orchestrateur Node.js
Vue d’ensemble
Section intitulée « Vue d’ensemble »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.
Pile technologique
Section intitulée « Pile technologique »| Technologie | Version | Fonction |
|---|---|---|
| Fastify | — | Framework HTTP (API REST) |
| TypeScript | — | Développement typé |
| BullMQ | — | File d’attente de jobs avec backend Redis |
| Drizzle ORM | — | Accès à la base de données SQLite |
| SQLite | — | Stockage local des données (prospects, données PDL, logs de jobs) |
| Redis | Conteneur dédié | Backend de file d’attente BullMQ |
| Bull Board | — | Interface web de monitoring des files d’attente |
Architecture
Section intitulée « Architecture »┌──────────────────────────────────────────┐│ 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 │ ││ └─────────────────────────────────────┘ │└──────────────────────────────────────────┘Pipeline de traitement des jobs
Section intitulée « Pipeline de traitement des jobs »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 statusChaque é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
Stockage des données
Section intitulée « Stockage des données »Tables SQLite (via Drizzle ORM)
Section intitulée « Tables SQLite (via Drizzle ORM) »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
Intégration WordPress
Section intitulée « Intégration WordPress »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.
Infrastructure
Section intitulée « Infrastructure »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.
État actuel
Section intitulée « État actuel »L’orchestrateur est en phase de planification/spécification. Aucun code n’a encore été déployé en production.