Dépendances 81 Outils — Graphe Phases 0-4
Ordonnancement complet du développement des 81 outils en 5 phases.
Vue d'ensemble phases
| Phase | # Outils | Prérequis | Durée | Services opérationnels |
|---|---|---|---|---|
| Phase 0 | 9 | Aucune | 10 min | DB, Redis, Gateway, DNS, Prometheus, ELK |
| Phase 1 | 6 | Phase 0 | 5 min | API, RADIUS, IDS, Beat, DHCP, Backup |
| Phase 2 | 18 | Phase 1 | 10 min | Web, Portal, OTP, Payments, Monitoring |
| Phase 3 | 28 | Phase 2 | 15 min | OCR, Billing, RF, Dashboards, Onboarding |
| Phase 4 | 14 | Phase 3 | 10 min | Reports, Reconciliation, Edge cases |
| TOTAL | 81 | - | 50 min | Stack 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ésTemps: ~10 minutes total
Parallelization: Max 2 agents Haiku
Agent 1 → #4, #5, #7, #9, #38
Agent 2 → #40, #65, #67, #79Livrables:
- [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, #80Count: 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éussissentLL#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 accessibleAprè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 runningAprès Phase 2 ✅
curl https://api-rgz.duckdns.org/health
✅ OTP flow (request → verify)
✅ RADIUS auth (subscriber)
✅ Portal page loads
✅ Dashboard React runsAprès Phase 3 ✅
✅ OCR tesseract processes image
✅ Facturation calcule split 50/50
✅ Grafana dashboards render data
✅ Onboarding steps 0→7 workAprès Phase 4 ✅
✅ Reports PDF generate (Celery task)
✅ Reconciliation runs daily 00:15
✅ All 81 tools interoperate
✅ smoke_test.sh passes allSupport
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