No description
  • HTML 46.3%
  • Go 35.3%
  • Go Template 10.3%
  • CSS 2.2%
  • Python 2.2%
  • Other 3.7%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
DA SILVA Romain OBS/GDO d8c9c3a25d
All checks were successful
🚀 CI — Build & Publish / 🚀 CI (push) Successful in 4m29s
fix(web): appliquer le format gofmt
Co-Authored-By: Claude Code <noreply@anthropic.com>
2026-10-08 17:19:04 +02:00
.claude chore: aligner le dépôt sur l'état local de travail 2026-08-27 23:29:11 +02:00
.forgejo fix(ci): lire l’archive avec github token Forgejo 2026-10-08 17:10:36 +02:00
.ressources chore(ressources): sync charte Orange vendorée (Boosted 5.3.8, icônes Solaris, logos) 2026-09-24 06:01:10 +00:00
_projet fix(FEAT-21): corriger la commande de collecte matériel 2026-10-08 16:46:47 +02:00
cmd/pluganalytics feat(FEAT-15): afficher la version applicative 2026-09-23 16:21:04 +02:00
internal fix(web): appliquer le format gofmt 2026-10-08 17:19:04 +02:00
.dockerignore feat(FEAT-01): déposer un export CLI et obtenir un diagnostic 2026-08-28 10:41:18 +02:00
.gitattributes chore(gitattributes): forcer LF sur le code source Go 2026-08-28 10:41:39 +02:00
.gitignore docs(ressources): doc OneOS complète v5 (socle) + v6, réorganisée 2026-08-28 10:20:19 +02:00
AGENTS.md chore: aligner le dépôt sur l'état local de travail 2026-08-27 23:29:11 +02:00
CLAUDE.md Initial commit 2026-08-25 18:47:29 +00:00
Dockerfile feat(FEAT-17,18): graphiques, PDF, icônes, en-tête/pied ODS et navigation 2026-09-24 11:29:20 +02:00
go.mod feat(FEAT-01): déposer un export CLI et obtenir un diagnostic 2026-08-28 10:41:18 +02:00
README.md fix(FEAT-23): fiabiliser horloge et exports client 2026-10-08 16:46:46 +02:00
TUTORIEL.md chore: aligner le dépôt sur l'état local de travail 2026-08-27 23:29:11 +02:00

PlugAnalytics

Application web interne Orange Business de mise en forme et de diagnostic de la sortie CLI des boîtiers de raccordement téléphonique PBX Plug.

Description

Les boîtiers PBX Plug (matériel OneAccess, groupe Ekinops ; système OneOS) raccordent le PABX ou les postes analogiques d'un client Entreprise à la Livebox for Business. Quand un client signale une mauvaise qualité de voix, les équipes Orange Business doivent lire l'historique d'appels détaillé du boîtier, une sortie texte longue et pénible à exploiter à la main.

PlugAnalytics transforme cette sortie CLI brute en un diagnostic lisible : identité de l'équipement, verdict de synthèse, indicateurs de qualité VoIP (perte de paquets, gigue, note de qualité audio, écho, délai d'établissement), points d'alerte situés par rapport à la limite de responsabilité Orange Business / client, graphiques, détail par appel et exports. Il s'adresse aux techniciens terrain, au support à distance et aux ingénieurs qualité de service, et remplace l'ancien outil de bureau PlugAnalyzer.

Le détail du besoin est dans _projet/vision.md, les choix techniques dans _projet/design.md, l'interface dans _projet/ux-ui.md.

Schéma du projet

flowchart LR
    boitier["PBX Plug\n(OneOS v5 / v6)"]
    agent["Agent Orange Business\nterminal journalisé"]
    app["PlugAnalytics\nanalyse en mémoire"]

    app -- "commandes de collecte à copier" --> agent
    agent -- "commandes CLI" --> boitier
    boitier -- "sortie CLI (journal)" --> agent
    agent -- "collage ou dépôt du journal" --> app
    app -- "diagnostic + exports (web, PDF, CSV, courriel)" --> agent
    app -. "aucune donnée conservée" .-> vide[("∅")]

L'outil ne se connecte jamais au boîtier : l'agent lance les commandes dans son propre terminal, puis transmet le résultat à PlugAnalytics.

Statut du projet

Version 1 en service. La branche main publie l'image de production (:latest), la branche dev l'image de pré-production (:beta). La version affichée en pied de page de chaque écran correspond au commit utilisé pour construire l'image.

Les 22 fonctionnalités livrées sont décrites dans _projet/features/implemented/. L'application est volontairement sans état : aucune donnée issue des historiques d'appels n'est conservée côté serveur.

Fonctionnalités

Collecte et dépôt

  • Commandes de collecte (FEAT-21) : l'écran d'accueil affiche, par génération OneOS (v6 par défaut, v5), la suite de commandes à coller dans le terminal du boîtier, commençant par term len 0, avec un bouton de copie et la marche à suivre.
  • Dépôt d'un export CLI (FEAT-01, FEAT-16) : collage du journal ou dépôt d'un fichier texte ; l'analyse part au clic sur « Analyser », ce qui laisse corriger le contenu avant validation. Une sortie non reconnue ou tronquée est signalée clairement.

Diagnostic

  • Identité et verdict (FEAT-02) : génération OneOS, modèle, version, état SIP et des ports voix ; période couverte, nombre d'appels, taux d'aboutissement, part d'appels hors seuil, qualité audio moyenne, fenêtres de saturation.
  • Points d'alerte (FEAT-03) : indicateurs hors seuil, priorisés, avec l'étiquette de démarcation (périmètre Orange Business ou installation client) et les causes probables.
  • Qualité par appel (FEAT-04) : un graphique par indicateur (audio, réseau, écho, établissement) ; un clic sur un appel ouvre sa fiche.
  • Trafic et canaux (FEAT-05, FEAT-19) : frise des appels émis et reçus dans le temps, occupation des canaux rapportée à la capacité du modèle, lecture par sens ou par port voix, usage des ports.
  • Échecs et communications (FEAT-06) : répartitions par aboutissement, cause de fin d'appel et codec, avec accès direct aux appels concernés.
  • Recherche et fiche d'appel (FEAT-07) : recherche par rang ou par numéro, validée par Entrée ; fiche détaillée sans quitter la page.
  • Remédiation (FEAT-11) : commandes prêtes à copier pour les défauts à correction univoque côté boîtier (horloge), selon la génération.
  • Seuils et glossaire (FEAT-12, FEAT-13) : seuils d'interprétation versionnés et explication de chaque indicateur, accessibles depuis le diagnostic.

Exports

  • Export interne (FEAT-08) et export anonymisé pour le client (FEAT-09) : page web autonome, PDF, CSV ou synthèse pour courriel, sur tous les appels ou un périmètre choisi (non aboutis, entrants, sortants, sélection cochée avec « tout sélectionner »).
  • Rapport PDF à la charte Orange Business (FEAT-20) : bandeau avec logo Orange, étiquettes de niveau colorées et libellées, pagination.
  • Graphique en image (FEAT-10) : copie ou enregistrement de chaque graphique.

Interface et exploitation

  • Charte Orange Unified Design System (FEAT-17, FEAT-18, FEAT-22) : en-tête collant qui se réduit au défilement, menu vers les parties du diagnostic, cartes côte à côte sur grand écran, pied de page Orange, logo Orange en icône d'onglet.
  • Version affichée (FEAT-15) : commit de construction en pied de page, à communiquer lors d'un échange support.
  • Journaux sobres (FEAT-14) : les accès HTTP réussis (dont les sondes de disponibilité) ne sont journalisés qu'en niveau détaillé ; erreurs et analyses restent visibles. Aucun numéro ni contenu d'appel n'est journalisé.

Stack technique

Reprise de _projet/design.md :

Couche Choix
Langage & runtime Go, bibliothèque standard uniquement (serveur HTTP, gabarits, journalisation)
Interface Orange Boosted Bootstrap 5.3.8 (build compilé vendoré, charte reprise telle quelle) ; icônes Solaris ; logos Orange
Graphiques Chart.js 4.4.4 (UMD) vendoré dans .ressources/projet/
Export PDF Générateur intégré, sans dépendance (police Helvetica, repli prévu par la charte)
Persistance Aucune — application sans état, analyse en mémoire
Authentification Aucune en v1 (accès réseau interne)
Déploiement Image Docker unique (construction Go 1.25, exécution distroless non root)
CI/CD Forgejo Actions : dev → image :beta (profil rapide), main → image :latest (profil strict)

Architecture : monolithe web sans état, rendu côté serveur, aucune dépendance réseau sortante.

Prérequis

  • Docker — pour exécuter l'image publiée ou la construire (voie recommandée).
  • ou Go 1.21 ou plus récent — pour lancer l'application sans conteneur ou exécuter les tests.
  • Aucun service externe (base de données, cache) n'est requis.

Installation & Démarrage

Avec l'image publiée (production)

  1. Récupérer l'image :
    docker pull git.bvcesctoulouse.com/onexpertise/pluganalytics:latest
    
  2. Lancer le conteneur (ici publié sur le port 80 de l'hôte) :
    docker run -d --name pluganalytics --restart unless-stopped -p 80:8080 git.bvcesctoulouse.com/onexpertise/pluganalytics:latest
    
  3. Ouvrir http://<hôte>/.

Pour la pré-production, remplacer :latest par :beta.

Mise à jour : docker restart relance le conteneur existant sur son image d'origine et ne prend donc pas en compte une nouvelle image. Il faut recréer le conteneur (ou laisser un outil de mise à jour automatique comme Watchtower le faire) :

docker pull git.bvcesctoulouse.com/onexpertise/pluganalytics:latest
docker rm -f pluganalytics
docker run -d --name pluganalytics --restart unless-stopped -p 80:8080 git.bvcesctoulouse.com/onexpertise/pluganalytics:latest

La version affichée en pied de page permet de vérifier l'image en service.

En construisant l'image

  1. Depuis la racine du dépôt :
    docker build --build-arg PLUGANALYTICS_VERSION=$(git rev-parse HEAD) -t pluganalytics .
    
    Sans --build-arg, le pied de page affiche la version de repli dev.
  2. Lancer :
    docker run --rm -p 8080:8080 pluganalytics
    
  3. Ouvrir http://localhost:8080/.

Avec Go, sans conteneur

  1. Depuis la racine du dépôt (les assets de charte sont lus dans .ressources/) :
    go run ./cmd/pluganalytics
    
  2. Ouvrir http://localhost:8080/.

Suite de tests :

go test ./...

Configuration

Variables d'environnement :

Variable Rôle Défaut
PLUGANALYTICS_ADDR adresse d'écoute HTTP :8080
PLUGANALYTICS_ASSETS_DIR emplacement de la charte vendorée servie par l'application .ressources (image : /app/assets)
PLUGANALYTICS_MAX_UPLOAD_BYTES plafond de taille d'une sortie CLI déposée 10485760 (10 Mo)
PLUGANALYTICS_LOG_LEVEL verbosité des journaux sur la sortie standard (debug / info / warn / error) info

Pour les boîtiers OneOS v5, qui n'indiquent pas leur fuseau dans l'export CLI, PlugAnalytics évalue l'écart d'horloge et rédige la commande de remise à l'heure dans le fuseau de référence Europe/Paris, embarqué dans le binaire. Les boîtiers OneOS v6 utilisent le décalage fourni par Current system time.

Argument de construction de l'image :

Argument Rôle Défaut
PLUGANALYTICS_VERSION version affichée en pied de page (la CI y met le commit construit) dev

Le détail des profils de CI/CD est dans .forgejo/workflows/README.md.

Roadmap

La fonctionnalité en cours est FEAT-23 : fiabiliser l'heure boîtier et les exports client.

Au-delà de la version 1, _projet/vision.md identifie deux évolutions possibles : un agent applicatif installé sur le poste de l'agent pour la connexion directe au boîtier (accès via rebond, authentification par clé et compte personnels), et une authentification via Orange Connect.

Licence / Confidentialité

Projet interne Orange Business, propriétaire. Les ressources de charte (Orange Boosted Bootstrap, icônes Solaris, logos Orange) sont d'usage strictement réservé aux projets Orange. Les données traitées (historiques d'appels) contiennent des numéros de téléphone de clients : elles ne sont ni stockées ni journalisées par l'application.