gigafibre-fsm/docs/PLATFORM-STRATEGY.md
louispaulb 607ea54b5c refactor: reduce token count, DRY code, consolidate docs
Backend services:
- targo-hub: extract deepGetValue to helpers.js, DRY disconnect reasons
  lookup map, compact CAPABILITIES, consolidate vision.js prompts/schemas,
  extract dispatch scoring weights, trim section dividers across 9 files
- modem-bridge: extract getSession() helper (6 occurrences), resetIdleTimer(),
  consolidate DM query factory, fix duplicate username fill bug, trim headers
  (server.js -36%, tplink-session.js -47%, docker-compose.yml -57%)

Frontend:
- useWifiDiagnostic: extract THRESHOLDS const, split processDiagnostic into
  6 focused helpers (processOnlineStatus, processWanIPs, processRadios,
  processMeshNodes, processClients, checkRadioIssues)
- EquipmentDetail: merge duplicate ROLE_LABELS, remove verbose comments

Documentation (17 → 13 files, -1,400 lines):
- New consolidated README.md (architecture, services, dependencies, auth)
- Merge ECOSYSTEM-OVERVIEW into ARCHITECTURE.md
- Merge MIGRATION-PLAN + ARCHITECTURE-COMPARE + FIELD-GAP + CHANGELOG → MIGRATION.md
- Merge COMPETITIVE-ANALYSIS into PLATFORM-STRATEGY.md
- Update ROADMAP.md with current phase status
- Delete CONTEXT.md (absorbed into README)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-13 08:39:58 -04:00

385 lines
22 KiB
Markdown

# Gigafibre Platform Strategy
## Vision unifiée par département — Inspiré Calix CommandIQ / SmartTown
> Avril 2026 — Document de planification stratégique
---
## 1. Inventaire des applications actuelles
### Applications à CONSERVER (core platform)
| App | URL | Rôle | Stack |
|-----|-----|------|-------|
| **ERPNext v16** | erp.gigafibre.ca | Source de vérité (clients, facturation, équipement, tickets) | Python/PostgreSQL |
| **Targo Ops** | erp.gigafibre.ca/ops/ | Console opérations internes (dispatch, clients, tickets, réseau) | Vue 3 / Quasar PWA |
| **Targo Hub** | msg.gigafibre.ca | Backend API, SSE temps réel, SMS, vision AI, magic links, page mobile tech | Node.js 20 |
| **Client Portal** | client.gigafibre.ca | Self-service client (factures, support, catalogue) | Vue 3 / Quasar PWA |
| **Website** | www.gigafibre.ca | Site vitrine marketing, vérification d'adresse | React / Vite |
| **Authentik (Client)** | id.gigafibre.ca | SSO clients et staff | Docker |
| **Traefik** | — | Reverse proxy, TLS, routing | Docker |
| **n8n** | n8n.gigafibre.ca | Workflows automatisés (SMS, email, webhooks) | Docker |
### Applications à RETIRER (legacy / redondantes)
| App | URL | Raison du retrait | Fonctionnalités à migrer | Statut migration |
|-----|-----|-------------------|-------------------------|-----------------|
| **dispatch-app** (legacy) | dispatch.gigafibre.ca | Remplacé par Ops `/dispatch` + page mobile `/t/{token}` | ~~Timeline dispatch~~ ✅, ~~Mobile tech~~ ✅, ~~Magic links~~ ✅, Catalogue équipement dans mobile ✅, Scan barcode ✅ | **Prêt à retirer** |
| **Targo Field App** | (apps/field/) | Remplacé par page mobile lightweight `/t/{token}` servi par targo-hub | ~~Job list~~ ✅, ~~Job detail~~ ✅, ~~Scan barcode~~ ✅, ~~Diagnostic~~ (à évaluer) | **Prêt à retirer** |
| **Oktopus CE** (TR-069 ACS) | oss.gigafibre.ca | ⚠️ Fait du TR-369 — pas d'alternative connue pour big data CPE temps réel | — | **Conserver** |
### Applications à NE PAS RETIRER
| App | Raison |
|-----|--------|
| **Authentik (Staff)** auth.targo.ca | Activement utilisé — remplacement impossible à court terme |
| **Legacy DB** (MariaDB) | Migration incomplète (~20/160 tables). Données critiques encore exclusives : comptabilité, soumissions, accords, télécom, projets, consommation, fibre/IP |
| **Oktopus CE** | Seule solution TR-369 pour statut temps réel et big data des CPE clients |
### Applications PARALLÈLES (hors scope Gigafibre FSM)
| App | Rôle | Note |
|-----|------|------|
| **Targo Backend/Frontend** | RH/Feuilles de temps employés Targo | Projet séparé, pas de chevauchement |
| **Infra-Map-Vue** | Cartographie fibre topologique (poteaux, routes optiques) | À intégrer éventuellement dans Ops comme module réseau |
| **Device Monitor** | Monitoring devices (prototype) | Fonctionnalités à absorber par targo-hub OLT/SNMP |
---
## 2. Fonctionnalités par département
### MARKETING — Segmentation dynamique et ventes contextuelles
> *"Patterns and contextual signals are analyzed to dynamically segment audiences and identify upsell and cross-sell opportunities."*
**Données disponibles dans ERPNext aujourd'hui :**
- Historique de facturation (115K+ factures) — panier moyen, ancienneté, churn risk
- Tickets de support (242K+) — fréquence des appels, types de problèmes récurrents
- Équipement installé (7 500+) — âge du modem, capacité Wi-Fi, nombre d'appareils
- Abonnements actifs (21K+) — services manquants (pas de TV, pas de VoIP)
- Données réseau (OLT, signal optique, débit) — qualité de service réelle
**Stratégie upsell/cross-sell contextuelle :**
| Signal contextuel | Action marketing | Canal |
|-------------------|-----------------|-------|
| Client avec Internet seulement + ticket "lenteur Wi-Fi" | Proposer routeur Wi-Fi 6 mesh + bornes extérieures | SMS personnalisé via Twilio |
| Client sans TV + visionnement Netflix détecté (DPI/QoS) | Offrir IPTV bundle à prix réduit | Email via Mailjet + bannière portail |
| Client avec ancien modem (>3 ans) | Upgrade gratuit vers ONT dernière gen | Notification push portail client |
| Client avec >3 tickets/mois | Offrir Support Prioritaire (10$/mois) | Appel proactif CSR |
| Déménagement détecté (changement adresse) | Offrir installation complète maison intelligente | Visite tech + catalogue domotique |
| Client fidèle >5 ans, 0 ticket | Programme fidélité : caméra d'entrée offerte | Lettre personnalisée + portail |
**Modules à développer :**
| Module | Description | Où |
|--------|-------------|-----|
| **Segment Engine** | Requêtes ERPNext automatisées qui tagguent les clients par segment (à risque, upsell TV, upgrade Wi-Fi, fidèle, nouveau) | n8n workflow + ERPNext Custom Script |
| **Campaign Manager** | Interface dans Ops pour créer/envoyer des campagnes SMS/email ciblées par segment | Ops app — nouveau module `/campaigns` |
| **Smart Banners** | Bannières contextuelles dans le portail client basées sur le profil | Client Portal — composant dynamique |
| **QR Modem → Offre** | QR code sur le modem → URL → détecte le client → affiche offres personnalisées | targo-hub page servie (comme `/t/{token}`) |
**Produits domotique à offrir :**
- Bornes Wi-Fi extérieures (mesh outdoor)
- Caméras d'entrée connectées (Doorbell IP)
- Thermostats intelligents
- Détecteurs de fumée/CO connectés
- Serrures intelligentes
- Hub domotique Zigbee/Z-Wave
---
### OPERATIONS — Proactivité et résolution automatique
> *"Operations agent workforce works around the clock to proactively uncover and resolve issues, reducing outages and improving the subscriber experience."*
**Monitoring proactif actuel :**
- OLT SNMP polling (targo-hub `olt-snmp.js`) — signal optique, statut ONU
- GenieACS TR-069 — paramètres CPE, reboots, firmware
- Traccar GPS — position techniciens en temps réel
**Vision proactive à implémenter :**
| Détection | Action automatique | Notification |
|-----------|-------------------|-------------|
| Signal optique ONU dégradé (<-25 dBm) | Créer ticket prioritaire + dispatch auto tech le plus proche | SMS client : "Nous avons détecté un problème, un technicien est en route" |
| ONT hors ligne >30 min (pas panne secteur) | Vérifier statut OLT, si OK → créer ticket | SMS client : "Votre connexion semble interrompue, nous investiguons" |
| Wi-Fi congestionné (>20 clients, canal saturé) | Push config optimale via TR-069 (changement canal auto) | Notification portail : "Nous avons optimisé votre Wi-Fi" |
| Latence >50ms vers gateway | Alert dispatch + diagnostic réseau auto | Rien (résolution silencieuse si possible) |
| Firmware CPE obsolète | Schedule mise à jour nocturne via GenieACS | Email : "Mise à jour de sécurité appliquée" |
| Panne OLT (multiple ONU down) | Créer incident majeur, notifier tous clients affectés en masse | SMS masse : "Panne détectée dans votre secteur, résolution en cours" |
**Modules existants vs à développer :**
| Module | Statut | Prochaine étape |
|--------|--------|----------------|
| Dispatch Timeline (drag-drop, Gantt) | ✅ Complet | — |
| Tags/Compétences (match auto) | ✅ Complet | — |
| Horaires + RRULE (garde, shifts) | ✅ Complet | — |
| Publication SMS + magic links | ✅ Complet | — |
| Page mobile tech lightweight | ✅ Complet | — |
| Scan barcode + gestion équipement | ✅ Complet | — |
| Pool d'offres Uber-style | ✅ Complet | — |
| Confirmation unassign jobs publiés | ✅ Complet | — |
| OLT SNMP monitoring | ✅ Basique | Ajouter alertes automatiques |
| Proactive ticket creation | ❌ À faire | n8n workflow : SNMP alert → create Issue |
| Auto-dispatch (matching algo) | ❌ À faire | Algorithme basé sur tags + distance + charge |
| Outage detection + mass notify | ❌ À faire | Corréler ONU down par OLT → SMS masse |
| CPE auto-config via TR-069 | ❌ À faire | GenieACS presets + targo-hub proxy |
---
### SERVICE — Intelligence contextuelle pour CSR et résolution au premier appel
> *"Specialized service agents share best practices and contextual insights to CSRs to solve problems faster and on the first call."*
**Données contextuelles disponibles pour le CSR (dans Ops app) :**
- Historique complet du client (tickets, factures, paiements)
- Équipement installé avec diagnostics en temps réel (signal, Wi-Fi, devices connectés)
- Notes des techniciens sur les visites précédentes
- Statut réseau du secteur (panne en cours ?)
- Historique des interventions sur cette adresse
**Outils d'aide CSR à développer :**
| Outil | Description | Impact |
|-------|-------------|--------|
| **Client Context Card** | Vue unifiée en 1 écran : abo actifs, dernier ticket, équipement, santé réseau, paiements en retard | Réduction temps d'appel de 40% |
| **Diagnostic Auto** | Bouton "Diagnostiquer" sur la fiche client → lance ping, speedtest, check signal ONU, vérifie firmware | Résolution 1er appel +30% |
| **Knowledge Base contextuelle** | Suggestions automatiques basées sur le type de problème : "Ce client a un HG8245H → vérifier le port LAN 4 connu pour défaillance" | Partage best practices |
| **Script d'appel guidé** | Flow interactif : symptôme → questions → diagnostic → solution → escalation si nécessaire | Uniformité du service |
| **Historique interactions** | Timeline unifiée : appels, SMS, emails, visites tech, modifications de compte | Contexte complet |
**État actuel vs cible :**
| Fonctionnalité | Statut |
|---------------|--------|
| Fiche client avec équipement et tickets | ✅ Ops `/clients/:id` |
| Détail équipement avec diagnostic OLT | ✅ EquipmentDetail.vue |
| Envoi SMS/email depuis Ops | ✅ Via targo-hub/Twilio |
| Historique thread de tickets | ✅ Ops tickets module |
| Diagnostic auto (1 clic) | ❌ À intégrer (GenieACS + SNMP) |
| Suggestions contextuelles AI | ❌ À faire (Gemini sur historique tickets similaires) |
| Scripts d'appel guidés | ❌ À faire |
---
### SUBSCRIBER — L'intelligence du support dans les mains du client
> *"Subscriber agents extend the reach of support organizations directly to subscribers with personalized upsell opportunities, optimization techniques, and outage information through the subscriber's app."*
**Portail client actuel (client.gigafibre.ca) :**
- ✅ Consultation factures et historique
- ✅ Paiement Stripe
- ✅ Création/suivi de tickets
- ✅ Catalogue produits avec panier
- ✅ Auth SSO (id.gigafibre.ca)
**Fonctionnalités Subscriber à ajouter :**
| Feature | Description | Priorité |
|---------|-------------|----------|
| **QR Code sur modem** | Étiquette QR collée sur le modem → URL `msg.gigafibre.ca/q/{mac}` → identifie le compte → envoie token SMS/email au propriétaire → accès gestion compte | 🔴 Haute |
| **Dashboard santé réseau** | Vitesse actuelle, latence, uptime 30 jours, appareils connectés | 🔴 Haute |
| **Contrôle parental (langage naturel)** | "Bloquer TikTok pour les enfants après 21h" → traduit en règles TR-069 → push au routeur | 🟡 Moyenne |
| **Notifications outage** | Push/SMS automatique quand panne détectée dans le secteur, avec ETA résolution | 🔴 Haute |
| **Optimisation Wi-Fi** | Conseils personnalisés : "Votre routeur est dans le sous-sol, déplacez-le au rez-de-chaussée pour +40% de couverture" | 🟡 Moyenne |
| **Self-diagnostic** | Bouton "Tester ma connexion" → speedtest + vérification signal → rapport | 🔴 Haute |
| **Offres personnalisées** | Bannières contextuelles : "Ajoutez la TV IPTV à votre forfait pour 20$/mois" basé sur profil | 🟡 Moyenne |
| **Gestion appareils** | Liste des appareils connectés, renommer, bloquer, prioritiser | 🟡 Moyenne |
| **Historique consommation** | Graphique de bande passante utilisée par jour/semaine/mois | 🟢 Basse |
---
## 3. QR Code Modem — Flow technique détaillé
Le QR code sur le modem est un game-changer pour l'expérience client. Flow :
```
┌─────────────────────────────────────────────────────────┐
│ ÉTIQUETTE QR SUR LE MODEM │
│ URL: msg.gigafibre.ca/q/{MAC_ADDRESS} │
└──────────────────────┬──────────────────────────────────┘
┌─────────────────────────────────────────────────────────┐
│ targo-hub GET /q/{mac} │
│ 1. Lookup Service Equipment par MAC │
│ 2. Trouver le Customer lié │
│ 3. Récupérer téléphone/email du Customer │
│ 4. Envoyer OTP 6 chiffres par SMS (Twilio) │
│ 5. Afficher page : "Code envoyé au 514-***-**89" │
└──────────────────────┬──────────────────────────────────┘
│ Client entre le code OTP
┌─────────────────────────────────────────────────────────┐
│ POST /q/{mac}/verify { otp: "123456" } │
│ 1. Vérifier OTP (Redis, TTL 5 min) │
│ 2. Générer JWT session (24h) │
│ 3. Servir page subscriber : │
│ - Santé réseau (signal, vitesse, uptime) │
│ - Appareils connectés │
│ - Contrôle parental │
│ - Offres personnalisées │
│ - Lien vers portail complet (client.gigafibre.ca) │
└─────────────────────────────────────────────────────────┘
```
**Avantages :**
- Zéro mot de passe à retenir
- Accessible même par des clients non technologiques
- Le QR est physiquement chez le client → preuve de possession
- Upsell contextuel immédiat (le client est devant son modem)
- Support proactif : "Votre signal est faible, voulez-vous un diagnostic ?"
---
## 4. Architecture cible — Plateforme unifiée
```
┌─────────────────────────┐
│ www.gigafibre.ca │ Marketing
│ (React — vitrine) │ Vérification adresse
└────────────┬────────────┘
┌────────────────────────────┼────────────────────────────┐
│ │ │
▼ ▼ ▼
┌─────────┐ ┌──────────────────┐ ┌──────────────────┐
│ Ops │ │ Client Portal │ │ Mobile Tech │
│ App │ │ (Vue/Quasar) │ │ /t/{token} │
│ (PWA) │ │ client.gigafibre│ │ (HTML pur) │
│ │ │ │ │ │
│ Dispatch│ │ Factures │ │ Jobs du jour │
│ Clients │ │ Paiements │ │ Scan barcode │
│ Tickets │ │ Support │ │ GPS navigation │
│ Réseau │ │ Catalogue │ │ Status update │
│ Campagns│ │ QR Modem portal │ │ Équipement CRUD │
└────┬────┘ └────────┬─────────┘ └────────┬─────────┘
│ │ │
└─────────────────────────┼─────────────────────────────┘
┌──────────▼──────────┐
│ targo-hub │
│ (Node.js 20) │
│ │
│ SSE temps réel │
│ SMS (Twilio) │
│ Vision AI (Gemini) │
│ Magic links / OTP │
│ OLT SNMP polling │
│ QR modem → auth │
│ TR-069 proxy │
│ Segment engine │
└──────────┬──────────┘
┌──────────▼──────────┐
│ ERPNext v16 │
│ (PostgreSQL) │
│ │
│ Customers 6,600+ │
│ Invoices 115K+ │
│ Equipment 7,500+ │
│ Tickets 242K+ │
│ Subscriptions 21K+ │
└──────────┬──────────┘
┌────────────────┼────────────────┐
▼ ▼ ▼
┌──────────┐ ┌──────────┐ ┌──────────┐
│ GenieACS │ │ Traccar │ │ id.giga │
│ TR-069 │ │ GPS │ │ Authentik │
│ 7,500 CPE│ │ 46 techs │ │ SSO │
└──────────┘ └──────────┘ └──────────┘
```
---
## 5. Plan de retrait des applications legacy
### Phase 1 — Immédiat (avril 2026)
| Action | Risque | Validation |
|--------|--------|-----------|
| Retirer **dispatch-app** du docker-compose apps | Bas — toutes les features sont dans Ops + /t/{token} | Vérifier que les magic links SMS pointent vers msg.gigafibre.ca/t/ |
| Retirer le container **apps-dispatch-frontend-1** | Bas | Confirmer qu'aucun bookmark/lien externe pointe vers dispatch.gigafibre.ca |
| Supprimer le repo dispatch-app de la CI | Aucun | — |
### Phase 2 — Court terme (mai 2026)
| Action | Risque | Validation |
|--------|--------|-----------|
| Retirer **apps/field/** du monorepo | Bas — /t/{token} couvre tout | Comparer features field vs /t/{token} |
| Migrer **auth.targo.ca****id.gigafibre.ca** pour n8n et Hub | Moyen — tester les flows n8n | Tester chaque workflow n8n post-migration |
| Éteindre **legacy-db** MariaDB | Bas — migration 100% complétée | Garder un dump SQL en backup |
| Évaluer retrait **Oktopus CE** vs intégration GenieACS | Moyen | Comparer fonctionnalités monitoring |
### Phase 3 — Moyen terme (été 2026)
| Action | Risque | Validation |
|--------|--------|-----------|
| Absorber **device-monitor** dans targo-hub OLT SNMP | Bas | Vérifier couverture fonctionnelle |
| Intégrer **infra-map-vue** comme module Ops `/network/map` | Moyen | iframe ou migration Vue |
| Unifier **Targo Backend** avec targo-hub (si pertinent) | Élevé — évaluer | Audit des fonctionnalités RH |
---
## 6. Métriques de succès par département
| Département | KPI | Cible |
|-------------|-----|-------|
| **Marketing** | Taux de conversion upsell via portail/SMS | 5% des clients ciblés |
| **Marketing** | Revenu additionnel par client (ARPU lift) | +8$/mois moyen |
| **Operations** | Tickets proactifs (créés avant appel client) | 30% des incidents réseau |
| **Operations** | Temps moyen de résolution dispatch | <4h (actuellement ~8h) |
| **Service** | Résolution au premier appel (FCR) | 75% (actuellement ~55%) |
| **Service** | Temps moyen d'appel CSR | <6 min (actuellement ~10 min) |
| **Subscriber** | Adoption portail self-service | 40% des clients actifs |
| **Subscriber** | Réduction appels support via self-diagnostic | -25% volume appels |
---
## 7. Analyse concurrentielle
### Gaiia (gaiia.com) — Comparable principal
Canadian-founded (2021), YC-backed, $13.2M Series A. 40+ ISP customers.
| Gaiia Module | Gigafibre Status |
|---|---|
| Workforce & Scheduling | Done (dispatch PWA) |
| Field Service App | Done (/t/{token} mobile) |
| Billing & Revenue | ERPNext (basic) |
| Customer Portal | Not built |
| Online Checkout | Not built |
| Network Monitoring | Oktopus CE + OLT SNMP |
| Workflow Builder | n8n |
### Avantages Gigafibre vs Gaiia
- Self-hosted / souverain (pas de frais par abonné)
- Full ERP (accounting, HR, inventory inclus)
- Dispatch board avancé (lasso, undo, auto-dispatch, route optimization)
- Open source offrable à d'autres ISPs
### Gaps à combler (vs Gaiia)
- Customer portal self-service
- Online checkout (Gaiia rapporte 6x conversion)
- Billing proration (mid-cycle changes)
- Auto travel time on dispatch
### Industrie — Matrice comparative
| Feature | Gaiia | Odoo FS | Zuper | Salesforce FS | Gigafibre |
|---|---|---|---|---|---|
| Target | ISP-specific | General | Telecom | Enterprise | ISP custom |
| Self-hosted | No | Yes | No | No | Yes |
| Pricing | Per-subscriber | $30/user | $50/user | $200/user | Free (OSS) |
| Dispatch drag-drop | Yes | Yes | Yes | Yes | Yes |
| GPS real-time | Yes | Limited | Yes | Yes | Yes (WS) |
| Equipment tracking | Yes | Yes | Yes | Yes | Yes |
| Customer portal | Yes | Yes | Yes | Yes | Not yet |
| Online checkout | Yes | No | No | No | Not yet |
---
*Document vivant — dernière mise à jour : 12 avril 2026*