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>
345 lines
15 KiB
JSON
345 lines
15 KiB
JSON
[
|
|
{
|
|
"id": "olt-firmware-update",
|
|
"title": "Mise a jour firmware OLT Raisecom 68xx",
|
|
"category": "firmware",
|
|
"equipment": "Raisecom ISCOM 6800/6860",
|
|
"risk_level": "dangerous",
|
|
"commands": [
|
|
{
|
|
"cmd": "show card",
|
|
"description": "Affiche l'etat des cartes de controle (active/standby)",
|
|
"risk": "safe",
|
|
"notes": "Identifier quelle carte est inservice (active) et laquelle est standby avant toute operation"
|
|
},
|
|
{
|
|
"cmd": "show version slot 9",
|
|
"description": "Affiche la version firmware du slot 9 (system1/system2, active/committed)",
|
|
"risk": "safe",
|
|
"notes": "Sur le 6800, les cartes smca sont dans les slots 9 et 10"
|
|
},
|
|
{
|
|
"cmd": "show version slot 10",
|
|
"description": "Affiche la version firmware du slot 10",
|
|
"risk": "safe",
|
|
"notes": "Sur le 6800, les cartes smca sont dans les slots 9 et 10"
|
|
},
|
|
{
|
|
"cmd": "show version slot 1",
|
|
"description": "Affiche la version firmware du slot 1",
|
|
"risk": "safe",
|
|
"notes": "Sur le 6860, les cartes smca sont dans les slots 1 et 2"
|
|
},
|
|
{
|
|
"cmd": "show version slot 2",
|
|
"description": "Affiche la version firmware du slot 2",
|
|
"risk": "safe",
|
|
"notes": "Sur le 6860, les cartes smca sont dans les slots 1 et 2"
|
|
},
|
|
{
|
|
"cmd": "download system2 tftp 10.5.2.80 {firmwareFileName} slot {slotNumber}",
|
|
"description": "Telecharge le firmware sur le systeme NON-actif du slot specifie via TFTP",
|
|
"risk": "dangerous",
|
|
"notes": "Toujours mettre a jour le systeme NON-actif (si system1 est actif, telecharger sur system2 et vice-versa). Serveur TFTP: 10.5.14.29, fichiers dans /tftpboot. Aucun NAT permis entre OLT et serveur TFTP."
|
|
},
|
|
{
|
|
"cmd": "commit system2 slot {slotNumber}",
|
|
"description": "Valide le firmware telecharge comme version de demarrage",
|
|
"risk": "dangerous",
|
|
"notes": "Commit le systeme qui vient d'etre telecharge"
|
|
},
|
|
{
|
|
"cmd": "reboot slot {slotNumber}",
|
|
"description": "Redemarrage d'un slot specifique (failover vers standby si disponible)",
|
|
"risk": "caution",
|
|
"notes": "Si une carte standby existe, le failover est automatique et sans interruption de service"
|
|
},
|
|
{
|
|
"cmd": "ha force-switch",
|
|
"description": "Force le basculement de carte de controle active sans redemarrage",
|
|
"risk": "caution",
|
|
"notes": "Permet de basculer vers la carte standby sans reboot"
|
|
},
|
|
{
|
|
"cmd": "reboot",
|
|
"description": "ATTENTION: Redemarrage complet du systeme",
|
|
"risk": "dangerous",
|
|
"notes": "INTERDIT sans approbation explicite. Reboot complet = coupure de service de ~3 minutes pour tous les clients de cet OLT"
|
|
}
|
|
],
|
|
"steps": [
|
|
"Verifier l'etat des cartes de controle avec 'show card' — identifier active vs standby",
|
|
"Verifier les versions firmware actuelles avec 'show version slot N' pour chaque carte smca (slots 9/10 sur 6800, slots 1/2 sur 6860)",
|
|
"Identifier quel system (system1 ou system2) est actif et lequel est committed",
|
|
"Telecharger le firmware sur le systeme NON-actif: 'download system2 tftp 10.5.2.80 {fichier} slot {N}'",
|
|
"Attendre la fin du telechargement (verifier avec 'show version slot N')",
|
|
"Commit le nouveau firmware: 'commit system2 slot {N}'",
|
|
"Redemarrer le slot mis a jour: 'reboot slot {N}' — le failover vers standby se fait automatiquement",
|
|
"Verifier que le slot redemarre correctement avec 'show card' et 'show version slot N'",
|
|
"Repeter la procedure pour l'autre carte de controle si necessaire",
|
|
"Utiliser 'ha force-switch' pour basculer sur la carte mise a jour si besoin"
|
|
],
|
|
"warnings": [
|
|
"NE JAMAIS executer 'reboot' sans numero de slot — cela redemarre tout l'OLT et cause une coupure de ~3 minutes pour tous les clients",
|
|
"Toujours mettre a jour le systeme NON-actif (pas celui qui roule presentement)",
|
|
"Le serveur TFTP est a 10.5.14.29, les fichiers doivent etre dans /tftpboot",
|
|
"Aucun NAT ne doit exister entre l'OLT et le serveur TFTP sinon le transfert echouera",
|
|
"Sur le 6800: cartes smca dans slots 9/10. Sur le 6860: cartes smca dans slots 1/2",
|
|
"Planifier la mise a jour en dehors des heures de pointe si possible"
|
|
]
|
|
},
|
|
{
|
|
"id": "onu-deco-m4-setup",
|
|
"title": "Configuration ONU avec TP-Link Deco M4",
|
|
"category": "device-config",
|
|
"equipment": "TP-Link Deco M4",
|
|
"risk_level": "caution",
|
|
"commands": [
|
|
{
|
|
"cmd": "ip dhcp-server pool {poolName} static-bind {macAddress} 192.168.1.254",
|
|
"description": "Reservation DHCP pour le Deco M4 a l'adresse 192.168.1.254",
|
|
"risk": "caution",
|
|
"notes": "L'adresse MAC du Deco sur le reseau est celle de l'etiquette +1 (ex: 40:3f:8c:f4:78:e1 sur l'etiquette = 40:3f:8c:f4:78:e2 sur le reseau)"
|
|
},
|
|
{
|
|
"cmd": "ip nat dmz 192.168.1.254 interface 4_INTERNET_R_VID_40",
|
|
"description": "Configure le DMZ sur l'interface WAN vers le Deco",
|
|
"risk": "caution",
|
|
"notes": "L'interface WAN est 4_INTERNET_R_VID_40"
|
|
}
|
|
],
|
|
"steps": [
|
|
"Identifier l'adresse MAC sur l'etiquette du Deco M4 et ajouter +1 au dernier octet (ex: e1 → e2) — c'est le MAC reel utilise sur le reseau",
|
|
"Configurer une reservation DHCP dans l'ONU pour cette adresse MAC → 192.168.1.254",
|
|
"Configurer le DMZ sur l'interface WAN 4_INTERNET_R_VID_40 pointant vers 192.168.1.254",
|
|
"Brancher le Deco M4 et le redemarrer",
|
|
"Ajouter l'appareil dans le systeme legacy comme enfant (child device), categorie 'tplink_device2'",
|
|
"Configurer le WiFi: Radio 1 (2.4GHz) + Radio 2 (5GHz) avec le SSID et mot de passe du client (minimum 8 caracteres)",
|
|
"Attendre jusqu'a 5 minutes pour que la configuration se propage completement"
|
|
],
|
|
"warnings": [
|
|
"L'adresse MAC sur l'etiquette du Deco n'est PAS celle utilisee sur le reseau — il faut ajouter +1 au dernier octet",
|
|
"Le mot de passe WiFi doit contenir au minimum 8 caracteres",
|
|
"La configuration peut prendre jusqu'a 5 minutes pour s'appliquer completement",
|
|
"S'assurer de configurer les deux radios (2.4GHz et 5GHz)"
|
|
]
|
|
},
|
|
{
|
|
"id": "olt-diagnostic-commands",
|
|
"title": "Commandes diagnostiques OLT (lecture seule)",
|
|
"category": "diagnostic",
|
|
"equipment": "Raisecom ISCOM 6800/6860",
|
|
"risk_level": "safe",
|
|
"commands": [
|
|
{
|
|
"cmd": "show card",
|
|
"description": "Etat des cartes de controle et de ligne",
|
|
"risk": "safe",
|
|
"notes": "Affiche inservice/standby/offline pour chaque slot"
|
|
},
|
|
{
|
|
"cmd": "show version slot {slotNumber}",
|
|
"description": "Version firmware d'un slot specifique",
|
|
"risk": "safe",
|
|
"notes": "Montre system1/system2, version active et version committed"
|
|
},
|
|
{
|
|
"cmd": "show alarm current",
|
|
"description": "Alarmes actives sur l'OLT",
|
|
"risk": "safe",
|
|
"notes": "Inclut les alarmes LOS (Loss of Signal) critiques pour le diagnostic de coupure fibre"
|
|
},
|
|
{
|
|
"cmd": "show system",
|
|
"description": "Informations systeme generales",
|
|
"risk": "safe",
|
|
"notes": "Uptime, temperature, informations materielles"
|
|
},
|
|
{
|
|
"cmd": "show gpon onu state gpon{X}/{Y}/{Z}:{N}",
|
|
"description": "Etat d'un ONU specifique (online/offline/dying-gasp)",
|
|
"risk": "safe",
|
|
"notes": "X=chassis, Y=slot, Z=port, N=numero ONU. Essentiel pour verifier si un client est connecte"
|
|
},
|
|
{
|
|
"cmd": "show gpon onu optical-info gpon{X}/{Y}/{Z}:{N}",
|
|
"description": "Niveaux de puissance optique d'un ONU",
|
|
"risk": "safe",
|
|
"notes": "rxPower < -28dBm ou absent = probable coupure fibre. Valeurs normales entre -8dBm et -25dBm"
|
|
},
|
|
{
|
|
"cmd": "show interface gpon {X}/{Y}/{Z}",
|
|
"description": "Etat d'un port GPON",
|
|
"risk": "safe",
|
|
"notes": "Montre si le port est up/down et les statistiques"
|
|
},
|
|
{
|
|
"cmd": "show running-config interface gpon {X}/{Y}/{Z}",
|
|
"description": "Configuration actuelle d'un port GPON",
|
|
"risk": "safe",
|
|
"notes": "Montre la configuration en cours (VLANs, profils, ONUs provisionnees)"
|
|
},
|
|
{
|
|
"cmd": "show gpon onu detail gpon{X}/{Y}/{Z}:{N}",
|
|
"description": "Details complets d'un ONU (modele, firmware, serial, profils)",
|
|
"risk": "safe",
|
|
"notes": "Informations detaillees incluant le modele, le serial number et les profils assignes"
|
|
}
|
|
],
|
|
"steps": [
|
|
"Utiliser 'show card' pour verifier l'etat general de l'OLT",
|
|
"Verifier les alarmes actives avec 'show alarm current'",
|
|
"Pour un client specifique, verifier l'etat ONU avec 'show gpon onu state gponX/Y/Z:N'",
|
|
"Verifier les niveaux optiques avec 'show gpon onu optical-info gponX/Y/Z:N'",
|
|
"Si necessaire, verifier la configuration du port avec 'show running-config interface gpon X/Y/Z'",
|
|
"Pour plus de details sur l'ONU, utiliser 'show gpon onu detail gponX/Y/Z:N'"
|
|
],
|
|
"warnings": [
|
|
"Ces commandes sont en lecture seule et peuvent etre executees en toute securite",
|
|
"Le module IA de diagnostic peut automatiser ces commandes via telnet",
|
|
"Les valeurs optiques normales sont entre -8dBm et -25dBm; en dessous de -28dBm indique un probleme"
|
|
]
|
|
},
|
|
{
|
|
"id": "fiber-cut-diagnosis",
|
|
"title": "Diagnostic de coupure fibre",
|
|
"category": "troubleshooting",
|
|
"equipment": "Raisecom ISCOM 6800/6860",
|
|
"risk_level": "safe",
|
|
"commands": [
|
|
{
|
|
"cmd": "show gpon onu state gpon{X}/{Y}/{Z}:{N}",
|
|
"description": "Verifier si l'ONU est en ligne ou hors ligne",
|
|
"risk": "safe",
|
|
"notes": "Si l'ONU est offline ou en dying-gasp, possible coupure fibre"
|
|
},
|
|
{
|
|
"cmd": "show gpon onu optical-info gpon{X}/{Y}/{Z}:{N}",
|
|
"description": "Verifier la puissance optique recue",
|
|
"risk": "safe",
|
|
"notes": "rxPower tres bas (< -28dBm) ou absent = coupure fibre confirmee"
|
|
},
|
|
{
|
|
"cmd": "show gpon onu state gpon{X}/{Y}/{Z}",
|
|
"description": "Verifier l'etat de tous les ONUs sur le meme port",
|
|
"risk": "safe",
|
|
"notes": "Si plusieurs ONUs sont down sur le meme port = probleme de splitter ou fibre trunk"
|
|
},
|
|
{
|
|
"cmd": "show alarm current",
|
|
"description": "Verifier les alarmes LOS (Loss of Signal)",
|
|
"risk": "safe",
|
|
"notes": "Les alarmes LOS confirment une perte de signal optique"
|
|
}
|
|
],
|
|
"steps": [
|
|
"Verifier la reachabilite de l'OLT dans Uptime Kuma",
|
|
"Consulter le cache SNMP pour l'etat de l'ONU (attention: les donnees peuvent etre obsoletes)",
|
|
"Se connecter en telnet a l'OLT et verifier l'etat de l'ONU avec 'show gpon onu state gponX/Y/Z:N'",
|
|
"Verifier la puissance optique avec 'show gpon onu optical-info gponX/Y/Z:N' — si rxPower < -28dBm ou absent = coupure fibre",
|
|
"Verifier si d'autres ONUs sur le meme port sont affectes avec 'show gpon onu state gponX/Y/Z' (probleme de splitter vs fibre individuelle)",
|
|
"Consulter les alarmes avec 'show alarm current' pour les alarmes LOS (Loss of Signal)",
|
|
"Si coupure fibre confirmee: dispatcher un technicien avec un OTDR"
|
|
],
|
|
"warnings": [
|
|
"Le cache SNMP peut etre obsolete — toujours confirmer via telnet direct a l'OLT",
|
|
"rxPower < -28dBm ou absent = forte indication de coupure fibre",
|
|
"Si plusieurs ONUs sur le meme port sont down, le probleme est probablement au niveau du splitter ou de la fibre trunk, pas d'une fibre individuelle",
|
|
"Un technicien avec OTDR est necessaire pour localiser l'emplacement exact de la coupure"
|
|
]
|
|
},
|
|
{
|
|
"id": "dangerous-commands-blacklist",
|
|
"title": "Commandes dangereuses — NE JAMAIS automatiser",
|
|
"category": "troubleshooting",
|
|
"equipment": "Raisecom ISCOM 6800/6860",
|
|
"risk_level": "dangerous",
|
|
"commands": [
|
|
{
|
|
"cmd": "shutdown",
|
|
"description": "Desactive une interface",
|
|
"risk": "dangerous",
|
|
"notes": "NE JAMAIS automatiser. Cause une coupure de service immediate sur l'interface"
|
|
},
|
|
{
|
|
"cmd": "no shutdown",
|
|
"description": "Active une interface",
|
|
"risk": "dangerous",
|
|
"notes": "NE JAMAIS automatiser. Modification de configuration en production"
|
|
},
|
|
{
|
|
"cmd": "config terminal",
|
|
"description": "Entre en mode configuration",
|
|
"risk": "dangerous",
|
|
"notes": "NE JAMAIS automatiser. Ouvre l'acces aux commandes de modification"
|
|
},
|
|
{
|
|
"cmd": "configure",
|
|
"description": "Entre en mode configuration (alias)",
|
|
"risk": "dangerous",
|
|
"notes": "NE JAMAIS automatiser. Alias de config terminal"
|
|
},
|
|
{
|
|
"cmd": "write",
|
|
"description": "Sauvegarde la configuration en cours",
|
|
"risk": "dangerous",
|
|
"notes": "NE JAMAIS automatiser. Persiste les changements de configuration"
|
|
},
|
|
{
|
|
"cmd": "write memory",
|
|
"description": "Sauvegarde la configuration en memoire",
|
|
"risk": "dangerous",
|
|
"notes": "NE JAMAIS automatiser. Alias de write"
|
|
},
|
|
{
|
|
"cmd": "copy running-config startup-config",
|
|
"description": "Copie la config active vers la config de demarrage",
|
|
"risk": "dangerous",
|
|
"notes": "NE JAMAIS automatiser. Persiste les changements de configuration"
|
|
},
|
|
{
|
|
"cmd": "reboot",
|
|
"description": "Redemarrage complet du systeme",
|
|
"risk": "dangerous",
|
|
"notes": "NE JAMAIS automatiser. Coupure de service de ~3 minutes pour tous les clients de l'OLT"
|
|
},
|
|
{
|
|
"cmd": "delete",
|
|
"description": "Suppression de fichiers ou configurations",
|
|
"risk": "dangerous",
|
|
"notes": "NE JAMAIS automatiser. Perte de donnees potentielle irreversible"
|
|
},
|
|
{
|
|
"cmd": "reset",
|
|
"description": "Reinitialisation de composants ou statistiques",
|
|
"risk": "dangerous",
|
|
"notes": "NE JAMAIS automatiser. Peut reinitialiser des configurations critiques"
|
|
},
|
|
{
|
|
"cmd": "download",
|
|
"description": "Telechargement de firmware",
|
|
"risk": "dangerous",
|
|
"notes": "NE JAMAIS automatiser. Operation de firmware qui doit etre supervisee par un humain"
|
|
},
|
|
{
|
|
"cmd": "commit",
|
|
"description": "Validation de firmware",
|
|
"risk": "dangerous",
|
|
"notes": "NE JAMAIS automatiser. Definit le firmware de demarrage"
|
|
}
|
|
],
|
|
"steps": [
|
|
"Ces commandes ne doivent JAMAIS etre incluses dans une liste blanche d'automatisation",
|
|
"Toute commande en mode configuration (config terminal) est interdite d'automatisation",
|
|
"Seules les commandes 'show' en mode enable sont autorisees pour l'automatisation",
|
|
"Le module IA doit seulement SUGGERER ces commandes au technicien, jamais les executer"
|
|
],
|
|
"warnings": [
|
|
"AUCUNE de ces commandes ne doit etre executee automatiquement par le systeme IA",
|
|
"Le module IA doit UNIQUEMENT suggerer ces commandes au technicien humain qui les executera manuellement",
|
|
"Toute commande qui modifie l'etat du systeme (write, config, shutdown, reboot, download, commit, delete, reset) est strictement interdite d'automatisation",
|
|
"En cas de doute, ne PAS executer la commande — demander au technicien"
|
|
]
|
|
}
|
|
]
|