No description
  • TypeScript 90.9%
  • CSS 3.8%
  • Python 2.7%
  • Shell 2%
  • Dockerfile 0.5%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Romain DA SILVA 59cf9a03f4
All checks were successful
🚀 CI — Build & Publish / 🚀 CI (push) Successful in 3m37s
Merge pull request 'chore(pipeline): sync depuis l'upstream' (#6) from pipeline-sync-bot into dev
Reviewed-on: #6
2026-09-25 07:56:32 +00:00
.claude chore(pipeline): sync agents/rules/.claude depuis pipeline-vibecoding 2026-08-27 19:39:59 +00:00
.forgejo chore(pipeline): sync agents/rules/.claude/workflows depuis l'upstream 2026-09-25 06:01:49 +00:00
.ressources chore(ressources): sync charte Orange vendorée (Boosted 5.3.8, icônes Solaris, logos) 2026-08-27 20:40:49 +00:00
_projet front : feuille de style applicative + alignement ux-ui.md sur OUDS 2026-08-28 17:45:15 +02:00
client front : feuille de style applicative + alignement ux-ui.md sur OUDS 2026-08-28 17:45:15 +02:00
server build(server) : prisma generate non bloquant tant que le schéma est vide 2026-08-27 23:02:42 +02:00
shared Implémente les extensions V2+ et le bilinguisme du rapport (lot 5) 2026-08-27 12:18:42 +02:00
.dockerignore front : charte Orange Boosted consommée en CSS compilé (fin du SCSS) 2026-08-27 23:19:48 +02:00
.gitignore CI : pipeline en un seul job, sans graphe de dépendances 2026-08-27 21:10:06 +02:00
.gitleaks.toml CI : pipeline en un seul job, sans graphe de dépendances 2026-08-27 21:10:06 +02:00
.trivyignore CI/build : corrige les 3 CRITICAL du scan d'image 2026-08-27 23:30:16 +02:00
AGENTS.md Initial commit 2026-08-25 18:39:09 +00:00
CLAUDE.md Initial commit 2026-08-25 18:39:09 +00:00
Dockerfile CI/build : corrige les 3 CRITICAL du scan d'image 2026-08-27 23:30:16 +02:00
package-lock.json front : retire sass des devDependencies (plus aucun .scss) 2026-08-28 09:08:19 +02:00
package.json Reprend le projet sur l'architecture cible de design.md 2026-08-26 17:12:37 +02:00
README.md docs : README aligné sur l'architecture réelle (monorepo React/Express/Docker) 2026-08-28 09:17:52 +02:00

Insight

Générateur de rapports d'état d'équipement réseau à partir de journaux de session terminal, pour les offres réseau managées Orange Business.

Description

Insight convertit un journal de session terminal (SSH ou copie WASAC) en rapport d'état d'équipement structuré, lisible et transmissible au client, sans connexion directe à l'équipement ni infrastructure de collecte. Il s'adresse aux techniciens et Responsables Service Client (RSC) d'Orange Business qui interviennent sur des équipements managés mais ne produisent aujourd'hui aucun document opposable prouvant l'état contrôlé. L'outil est multi-constructeur par construction (Ekinops OneOS qualifié en premier) et couvre les offres monosite (Socle SD) comme multi-sites (Socle BVPN). Toute détection d'anomalie repose sur des règles déterministes codées en dur — aucune IA, aucun appel à un service externe.

Schéma du projet

flowchart TD
    A[Technicien / RSC] -->|Sélectionne les modules à collecter| B[Génération du script de commandes]
    B -->|Copié en session SSH ou WASAC| C[Journal de session terminal]
    C -->|Dépôt de fichier ou collage texte| D[Frontend Insight - navigateur]
    D --> E[Analyse du journal et construction du rapport]
    E --> F[Anonymisation des données sensibles pour le PDF client]
    F --> G[Prévisualisation puis export PDF via impression navigateur]
    H[Backend Express] -->|Identité de l'auteur - certificat PKI, Orange Connect| D

Le traitement du journal (analyse, détection d'anomalies, construction et anonymisation du rapport) s'exécute côté navigateur. Le backend fournit l'identité de l'auteur et hébergera l'historique des rapports réservé au groupe administrateur. Version simplifiée du diagramme d'architecture de _projet/design.md.

Statut du projet

En développement actif. Aucune version taguée, aucune fonctionnalité encore formellement validée et archivée (_projet/features/implemented/ est vide).

Le dépôt a basculé sur l'architecture cible décrite dans _projet/design.md : monorepo npm (shared/, client/, server/), frontend React/TypeScript (Vite), backend Node.js/Express, base SQLite via Prisma, image Docker unique. L'approche antérieure "zéro build, zéro backend" (page index.html vanilla) n'existe plus dans le dépôt.

Le schéma Prisma (server/prisma/schema.prisma) est volontairement sans modèle métier à ce stade : la persistance (identité/session, historique administrateur) sera introduite fonctionnalité par fonctionnalité, quand la spécification correspondante existera.

Fonctionnalités

Le périmètre fonctionnel est en cours de construction. Les capacités décrites ci-dessous sont présentes dans le code (client/src/) mais restent en cours de finalisation dans _projet/features/wip/ — aucune n'est encore passée en implemented/. Voir _projet/features/features_summary.md pour la liste détaillée.

  • Préparation & génération du script : sélection des modules à collecter, génération du script de commandes Ekinops OneOS à copier en session, copie presse-papier.
  • Import du journal : dépôt de fichier, sélection de fichier ou collage direct (WASAC), détection de contenu tronqué, qualification du contexte de collecte (offre, site).
  • Analyse Ekinops OneOS : identité et interfaces (dont Wi-Fi), CPU/mémoire, table ARP/voisinage IPv6 multi-VRF, table de routage IPv4/IPv6 multi-VRF, baux DHCP, pare-feu et sessions NAT, horodatage de collecte avec détection de désynchronisation NTP, trafic depuis le dernier redémarrage. Modules optionnels détectés et activables : BGP, VRRP, IPsec (IKEv1/v2). Traduction des événements syslog en libellés métier.
  • Rapport comparatif : rapport couvrant un couple d'équipements nominal/secours.
  • Détection d'anomalies : règles déterministes (client/src/parser/detector.ts) alimentant une section « Points d'attention » toujours présente, avec conclusion de synthèse.
  • Configuration du rapport : preset, niveau d'anonymisation, métadonnées (auteur, destinataire, référence), filigrane « CONFIDENTIEL » selon le preset.
  • Restitution : prévisualisation avant export, export PDF via impression navigateur, export condensé (TXT / Markdown / HTML) pour outil de suivi d'intervention, avec avertissement d'absence d'anonymisation sur ce format.
  • Interface : parcours guidé en 5 étapes avec confirmation avant réinitialisation, fil d'Ariane, notifications et erreurs, pied de page institutionnel, interface bilingue français/anglais.

Stack technique

Couche Technologie
Monorepo npm workspaces — shared/ (types partagés), client/, server/
Frontend React 18 + TypeScript, bundlé avec Vite
Charte graphique Orange Boosted Bootstrap (Orange OUDS), CSS compilé vendoré dans .ressources/orange-boosted-bootstrap/dist/ (alias Vite @boosted)
Backend / API Node.js + TypeScript + Express — identité de l'auteur, API applicative, service des fichiers statiques du frontend en production
Base de données SQLite via Prisma ORM (schéma sans modèle métier à ce stade)
Tests Vitest (client/ et server/)
Conteneurisation Docker — image unique, backend Express servant le frontend buildé
CI/CD Forgejo Actions (.forgejo/workflows/)

Détail des conventions de code et de l'architecture : _projet/design.md.

Prérequis

  • Node.js >= 20 et npm.
  • Aucun serveur de base de données à installer (SQLite est un fichier).

Installation & Démarrage

# 1. Installer les dépendances de tout le monorepo
npm ci

# 2. Développement : lancer le backend (build de shared/ puis serveur en watch)
npm run dev

# 3. Dans un second terminal : lancer le frontend Vite
npm run dev --workspace=client

Le frontend Vite est servi sur http://localhost:5173, le backend Express sur http://localhost:3000 (GET /api/health pour vérifier).

Build de production et exécution en un seul processus :

npm run build
NODE_ENV=production npm run start --workspace=server

Le backend sert alors l'API et le frontend buildé sur http://localhost:3000.

Exécution via Docker (image unique) :

docker build -t insight .
docker run -p 3000:3000 -v insight-data:/app/server/data insight

Accès sur http://localhost:3000. Le fichier SQLite est persisté dans le volume monté sur /app/server/data.

Configuration

Variable Rôle Défaut
NODE_ENV production active le service des fichiers statiques du frontend par le backend non défini (mode développement)
PORT Port d'écoute du backend Express 3000
DATABASE_URL Emplacement du fichier SQLite (Prisma) non défini — à fixer quand un modèle de données existera

L'intégration Orange Connect (API OCID) et la lecture du certificat PKI par mutual TLS restent à qualifier ; leur configuration sera documentée à l'implémentation. Voir _projet/design.md.

Roadmap

Fonctionnalités en cours (_projet/features/wip/) : l'ensemble du périmètre listé dans _projet/features/features_summary.md (analyse Ekinops OneOS, rapport, anonymisation, parcours guidé, export), en cours de finalisation et de validation avant archivage.

Étapes suivantes issues de _projet/vision.md et _projet/design.md :

  • Identification automatique de l'auteur via certificat PKI (authentification mutuelle TLS).
  • Contrôle d'accès et groupes user / admin via intégration Orange Connect (API OCID) — mécanisme d'intégration à qualifier.
  • Historique des rapports générés, réservé au groupe administrateur — périmètre exact à spécifier.
  • Qualification du second constructeur, Cisco (dossier client/src/parser/vendors/cisco/ présent en structure), puis extension à d'autres constructeurs selon le même principe.

Licence / Confidentialité

Projet interne Orange Business, propriétaire. Aucune licence open source. Le dépôt vendore Orange Boosted Bootstrap sous sa propre licence (voir .ressources/orange-boosted-bootstrap/).