- TypeScript 90.9%
- CSS 3.8%
- Python 2.7%
- Shell 2%
- Dockerfile 0.5%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
|
All checks were successful
🚀 CI — Build & Publish / 🚀 CI (push) Successful in 3m37s
Reviewed-on: #6 |
||
| .claude | ||
| .forgejo | ||
| .ressources | ||
| _projet | ||
| client | ||
| server | ||
| shared | ||
| .dockerignore | ||
| .gitignore | ||
| .gitleaks.toml | ||
| .trivyignore | ||
| AGENTS.md | ||
| CLAUDE.md | ||
| Dockerfile | ||
| package-lock.json | ||
| package.json | ||
| README.md | ||
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/adminvia 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/).