Skip to content

Dépendances 81 Outils — Graphe Phases 0-4

Ordonnancement complet du développement des 81 outils en 5 phases.

Vue d'ensemble phases

Phase# OutilsPrérequisDuréeServices opérationnels
Phase 09Aucune10 minDB, Redis, Gateway, DNS, Prometheus, ELK
Phase 16Phase 05 minAPI, RADIUS, IDS, Beat, DHCP, Backup
Phase 218Phase 110 minWeb, Portal, OTP, Payments, Monitoring
Phase 328Phase 215 minOCR, Billing, RF, Dashboards, Onboarding
Phase 414Phase 310 minReports, Reconciliation, Edge cases
TOTAL81-50 minStack complète

Phase 0: Infrastructure (aucune dépendance)

Services sans prérequis — parallélisables.

#4  rgz-db              PostgreSQL 16 + TimescaleDB
#5  rgz-redis           Redis 7 cache
#7  rgz-gateway         nftables deny-all firewall
#9  rgz-dns             Unbound DNS + blocklists
#38 prometheus-alert    Prometheus + AlertManager
#40 elk-stack           Elasticsearch + Kibana + Logstash
#65 rf-link-budget      Calculateur RF (utils)
#67 cpe-alignment-tool  Guide alignement terrain
#79 iperf3-test-auto   Tests bandwidth automatisés

Temps: ~10 minutes total

Parallelization: Max 2 agents Haiku

Agent 1 → #4, #5, #7, #9, #38
Agent 2 → #40, #65, #67, #79

Livrables:

  • [x] docker-compose.core.yml (5 services)
  • [x] docker-compose.monitoring.yml (8 services)
  • [x] scripts/gateway/rgz-main.nft
  • [x] config/unbound/ + blocklist
  • [x] tools/rf_link_budget/
  • [x] Prometheus scrape config
  • [x] ELK ILM + pipelines

Phase 1: Core API + RADIUS (dépend Phase 0)

Services dépendant uniquement de Phase 0.

#1  rgz-api            FastAPI Python hub
  ├─ #4, #5 (DB, Redis)
  └─ Cellery app framework

#6  rgz-radius         FreeRADIUS 3.2 + REST
  ├─ #4 (PostgreSQL)
  └─ #1 (API)

#8  rgz-ids            Suricata 7.x IDS/IPS
  └─ #7 (gateway)

#10 rgz-beat           Celery Beat scheduler
  ├─ #1 (API)
  ├─ #5 (Redis)
  └─ #4 (PostgreSQL)

#30 kea-dhcp           Kea DHCP4
  └─ #7 (gateway)

#75 pg-dump-backup     Daily backup
  └─ #4 (PostgreSQL)

Temps: ~5 minutes

Parallelization:

Agent 1 → #1 (API core), #6 (RADIUS)
Agent 2 → #8 (IDS), #10 (Beat), #30 (DHCP), #75 (Backup)

Livrables:

  • [x] app/main.py (FastAPI + CORS)
  • [x] app/celery_app.py (Celery config)
  • [x] config/radius/ + REST module
  • [x] config/kea/
  • [x] scripts/ops/
  • [x] docker-compose.core.yml (updated)

État actuel: ✅ Phase 0 + 1 opérationnelle


Phase 2: Services Web + OTP (dépend Phase 1)

Modules dépendant de Phase 1 (API + DB opérationnelle).

#2  rgz-web            React dashboard admin
  └─ #1 (API)

#3  rgz-portal         Portail captif HTML/JS
  ├─ #1 (API)
  └─ #6 (RADIUS)

#12 otp-sms            Letexto SMS OTP
  └─ #1 (API)

#15 paiement-momo      KKiaPay payment gateway
  └─ #1 (API)

#20 generateur-vouchers Codes 8 chars + Luhn
  ├─ #1 (API)
  └─ #4 (PostgreSQL)

#26 dba-daemon         MIR recalcul + CoA
  ├─ #6 (RADIUS)
  ├─ #4 (PostgreSQL)
  └─ #10 (Beat)

#27 htb-fq-codel       QoS traffic shaping
  └─ #7 (gateway)

#28 nftables-dscp      DSCP marking
  └─ #7 (gateway)

#31 vlan-allocation    Auto VLAN 100+n
  ├─ #1 (API)
  └─ #30 (DHCP)

#32 nftables-generator  Génération règles
  └─ #7 (gateway)

#34 dns-sinkhole       Wildcard → portail
  ├─ #9 (DNS)
  └─ #3 (portal)

#39 snmp-poller        SNMPv3 5min polling
  ├─ #10 (Beat)
  └─ #4 (PostgreSQL)

#43 sla-probe-engine   ICMP/TCP 5min
  ├─ #10 (Beat)
  └─ #4 (PostgreSQL)

#45 logs-immutables    SHA-256 append-only
  ├─ #4 (PostgreSQL)
  └─ #40 (ELK)

#46 module-apdp        Consentement APDP
  ├─ #1 (API)
  └─ #4 (PostgreSQL)

#47 arcep-reporting    Endpoints /reports/*
  ├─ #1 (API)
  └─ #4 (PostgreSQL)

#48 audit-trail        Journal audit
  ├─ #1 (API)
  └─ #4 (PostgreSQL)

#50 ssl-cert-manager   Let's Encrypt auto-renew
  └─ #10 (Beat)

#57 rma-ticket-system  RMA + support tickets
  └─ #1 (API)

#59 cutover-checklist  Migration checklist
  └─ #1 (API)

#61 sms-template-engine SMS templates
  ├─ #1 (API)
  └─ #12 (OTP)

#62 whatsapp-business  WhatsApp notifications
  └─ #1 (API)

#68 site-survey-db     GPS sites + coverage
  └─ #4 (PostgreSQL)

#80 canary-test-system Synthetic probes
  └─ #10 (Beat)

Temps: ~10 minutes

Parallelization: Max 2 agents

Agent 1 → #2, #3, #12, #15, #20, #26, #27, #28, #31, #32
Agent 2 → #34, #39, #43, #45, #46, #47, #48, #50, #57, #59, #61, #62, #68, #80

Count: 18 outils


Phase 3: Modules avancés + Dashboards (dépend Phase 2)

Modules métier avancés, dépendent de Phase 2.

#11 inscription-ocr     Tesseract OCR pièce ID
  └─ #3 (portal)

#13 multi-appareils     2 MAC/compte
  ├─ #6 (RADIUS)
  └─ #4 (PostgreSQL)

#14 forfaits-vouchers   Grille tarifs + voucher
  ├─ #1 (API)
  └─ #6 (RADIUS)

#16 bannieres           Rotation ads
  ├─ #1 (API)
  └─ #3 (portal)

#17 anti-fraude         MAC spoof, DNS tunnel
  ├─ #3 (portal)
  ├─ #6 (RADIUS)
  └─ #8 (IDS)

#18 branding-reseller   Logo/couleurs NAS-ID
  ├─ #3 (portal)
  └─ #1 (API)

#19 moteur-facturation  Split 50/50 + commission
  ├─ #4 (PostgreSQL)
  └─ #10 (Beat)

#22 remboursements      Refund KKiaPay
  └─ #1 (API)

#24 factures-pdf        WeasyPrint PDF
  ├─ #1 (API)
  └─ #19 (facturation)

#29 fair-use-enforcer   Volume surfacturation
  ├─ #1 (API)
  └─ #26 (DBA)

#33 cpe-preconfig       Batch CPE LiteBeam
  └─ #31 (VLAN)

#37 dashboards-grafana  15+ dashboards
  ├─ #38 (Prometheus)
  └─ #4 (PostgreSQL)

#41 rf-monitoring       RSSI heatmap
  ├─ #37 (Grafana)
  └─ #39 (SNMP)

#42 netflow-collector   Flux v5 port 2055
  └─ #7 (gateway)

#44 anomaly-detection   Spike trafic alertes
  ├─ #8 (IDS)
  └─ #38 (Prometheus)

#49 compliance-check    14 items checklist
  └─ #47 (ARCEP)

#51 dashboard-reseller  Self-service revenus
  ├─ #2 (web)
  └─ #1 (API)

#52 dashboard-noc       Core/CPE/alertes
  ├─ #2 (web)
  ├─ #37 (Grafana)
  └─ #38 (Prometheus)

#53 espace-bannieres    Upload ads
  ├─ #2 (web)
  └─ #1 (API)

#55 page-statut-public  Incidents actifs
  └─ #2 (web)

#56 onboarding-reseller 7 étapes J0→J12
  ├─ #1 (API)
  ├─ #31 (VLAN)
  └─ #33 (CPE)

#58 incident-escalation P0/P1/P2 routage
  ├─ #1 (API)
  └─ #61 (SMS)

#63 email-notification  SMTP
  ├─ #1 (API)
  └─ #24 (PDF)

#66 spectrum-analyzer   Interférences 5GHz
  └─ #39 (SNMP)

#69 mobile-audit-pwa    Formulaire offline
  └─ #1 (API)

#76 firmware-updater    Batch CPE
  └─ #39 (SNMP)

#77 config-backup-git   Daily git
  └─ #7 (gateway)

#78 data-deletion-apdp  Anonymisation 90j
  ├─ #4 (PostgreSQL)
  └─ #46 (APDP)

Temps: ~15 minutes

Count: 28 outils


Phase 4: Rapports + Intégrations (dépend Phase 3)

Final modules — rapports, reconciliation, edge cases.

#21 reconciliation      Daily 00:15 KKiaPay↔RADIUS
  ├─ #10 (Beat)
  └─ #4 (PostgreSQL)

#23 edge-cases-billing  8 cas limites
  ├─ #19 (facturation)
  └─ #21 (reconciliation)

#25 credit-sla-auto     Crédits auto
  ├─ #19 (facturation)
  └─ #43 (SLA)

#54 dashboard-rma       Stock + file RMA
  ├─ #2 (web)
  └─ #57 (RMA)

#60 rollback-decision   Auto rollback
  └─ #58 (escalation)

#64 crisis-dispatcher   4 templates crise
  ├─ #58 (escalation)
  └─ #61 (SMS)

#70 rapport-sla-mensuel Uptime % P95
  ├─ #43 (SLA)
  ├─ #10 (Beat)
  └─ #63 (email)

#71 rapport-arcep       Conformité quarterly
  ├─ #47 (ARCEP)
  └─ #10 (Beat)

#72 post-incident-rca   Timeline 5 pourquoi
  └─ #58 (escalation)

#73 bandwidth-trending  Tendances 7j/30j
  ├─ #37 (Grafana)
  └─ #4 (PostgreSQL)

#74 revenue-forecast    Projection ARPU
  ├─ #4 (PostgreSQL)
  └─ #19 (facturation)

Temps: ~10 minutes

Count: 14 outils

Note: #81 site-recensement = déjà en production (N/A)


Graphe mermaid (Phase 0-2)


Timeline estimée

Start ────────────────────────────────────────────────────► 51 jours

P0     ███          (10 min)
       ├─ DB, Redis
       ├─ Gateway, DNS
       ├─ Prometheus, ELK
       └─ RF tools

       P1  ███      (5 min)
           ├─ API, RADIUS
           ├─ IDS, Beat
           ├─ DHCP, Backup
           └─ ...

           P2     ██████████  (10 min)
                  ├─ Web, Portal
                  ├─ OTP, Payment
                  ├─ Monitoring core
                  └─ ... (14 outils)

                    P3         ███████████████  (15 min)
                              ├─ OCR, Billing
                              ├─ Dashboards
                              ├─ Onboarding
                              └─ ... (28 outils)

                                     P4      ███████████  (10 min)
                                            ├─ Reports
                                            ├─ Reconciliation
                                            └─ ... (14 outils)

                                                   ✅ DONE
                                                   (51 min total)

Règles d'ordonnancement

LL#PHASE: Respecter ordre phases

TOUJOURS: Phase N → Phase N+1

JAMAIS: Phase N+2 avant Phase N

bash
# ✅ Correct
develop #4, #5, #7  (Phase 0)
develop #1, #6      (Phase 1, dépend Phase 0)

# ❌ Incorrect
develop #3 (Phase 2) avant #1 (Phase 1)

LL#DEPEND: Valider dépendances

Avant de start une phase, vérifier:

bash
# Phase N prérequis Phase N-1
 Tous les services Phase N-1 = healthy
 Healthchecks passent
 Logs = zéro erreurs critiques
 Tests smoke réussissent

LL#PARALLEL: Max 2 agents par phase

❌ 5 agents parallèles = chaos (merge conflicts)
✅ 2 agents = coordination facile
✅ Partition outils par domaine (core/web/billing)

Checkpoints après chaque phase

Après Phase 0 ✅

docker compose -f docker-compose.monitoring.yml up -d
✅ All 6 services healthy
✅ prometheus -c /etc/prometheus/prometheus.yml (validation)
✅ Elasticsearch cluster green
✅ Kibana dashboards accessible

Après Phase 1 ✅

docker compose -f docker-compose.core.yml up -d
✅ rgz-api:8000 /health → 200
✅ RADIUS port 1812 listening
✅ DHCP pool 10.100.0.0/24 allocated
✅ Celery beat running

Après Phase 2 ✅

curl https://api-rgz.duckdns.org/health
✅ OTP flow (request → verify)
✅ RADIUS auth (subscriber)
✅ Portal page loads
✅ Dashboard React runs

Après Phase 3 ✅

✅ OCR tesseract processes image
✅ Facturation calcule split 50/50
✅ Grafana dashboards render data
✅ Onboarding steps 0→7 work

Après Phase 4 ✅

✅ Reports PDF generate (Celery task)
✅ Reconciliation runs daily 00:15
✅ All 81 tools interoperate
✅ smoke_test.sh passes all

Support

bash
# Vérifier phase actuelle
docker compose ps | grep -E "Up|Exited|Unhealthy"

# Logs dépannage
docker logs <service> --tail 50

# Status complet
./scripts/ops/status.sh

PROJET MOSAÏQUE — 81 outils, 22 conteneurs, 500+ revendeurs WiFi Zone