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>
22 KiB
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} |
Prêt à retirer | |
| Targo Field App | (apps/field/) | Remplacé par page mobile lightweight /t/{token} servi par targo-hub |
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