Files
ipwatch/amelioration_onglet_architecture.md
2026-02-07 16:57:37 +01:00

7.4 KiB

Amelioration Onglet Architecture - Brainstorming & Todo

Analyse de l'existant

Etat actuel (ArchitectureView.vue - 1543 lignes)

L'onglet Architecture est un editeur visuel de diagrammes reseau avec :

Fonctionnel :

  • Canvas SVG avec drag-drop d'objets depuis une palette (7 types : world, home, computer, network, room, vm, service)
  • Deplacement et redimensionnement des objets
  • Systeme de connecteurs (4 cotes, 0-8 par cote)
  • Splines (courbes de liaison) avec points de controle editables
  • Relations parent-enfant (logiques, non visuelles)
  • Integration IP : sync avec l'API pour recuperer les donnees reseau
  • Panneau de proprietes complet (60+ proprietes editables)
  • Persistence JSON (data/architecture.json)
  • Edition inline de labels, verrouillage d'objets

Limitations actuelles :

  • Pas d'imbrication visuelle (enfants non positionnes relativement au parent)
  • Pas de zoom/pan natif (pas de navigation fluide dans grands diagrammes)
  • Pas de minimap pour vue d'ensemble
  • Pas de undo/redo
  • Pas de multi-selection / group operations
  • Pas de snap-to-grid ou alignement automatique
  • Pas de bibliotheque d'objets reutilisables
  • Pas de multi-diagrammes
  • Code monolithique (1543 lignes dans un seul composant)
  • Performance limitee au-dela de 100+ objets (pas de virtualisation)
  • Splines basiques (quadratiques, pas de routage intelligent)

Brainstorming : Vue Flow vs implementation actuelle

Option A : Migrer vers Vue Flow (@vue-flow/core)

Qu'est-ce que Vue Flow ?

Fonctionnalites cles :

  • Zoom et pan fluides (natifs, optimises)
  • Minimap integree (vue d'ensemble en bas a droite)
  • Controls integres (zoom in/out/fit, panel en bas a gauche)
  • Background configurable (dots, lines, cross)
  • Nodes personnalisables (Custom Nodes = composants Vue complets)
  • Edges personnalisables (Custom Edges = SVG custom)
  • Handles (points de connexion sur les nodes, equivalent des connecteurs actuels)
  • Drag-and-drop natif
  • Selection simple et multiple
  • Evenements riches (onConnect, onNodeDrag, onEdgeUpdate, etc.)
  • State management integre (useVueFlow composable)
  • Types de nodes inclus : default, input, output
  • Types d'edges inclus : bezier, straight, step, smoothstep
  • Sub-flows (nodes imbriques dans d'autres nodes = groupes)
  • Snap-to-grid
  • Performant (virtualisation des nodes hors viewport)

Avantages pour IPWatch :

Fonctionnalite Actuel (custom SVG) Avec Vue Flow
Zoom/Pan Non Natif, fluide
Minimap Non Composant inclus
Snap-to-grid Non Option native
Sub-flows (groupes) Non Nodes imbriques
Multi-selection Non Natif
Performance 100+ nodes Problematique Virtualisation
Routing edges Quadratique simple Bezier, step, smoothstep, custom
Undo/Redo Non Via plugin/composable
Maintenance 1543 lignes custom Communaute active

Inconvenients / Risques :

  • Migration significative : recrire la logique d'affichage
  • Les connecteurs actuels (multi-connecteurs par cote) devront etre adaptes aux "Handles" de Vue Flow
  • Les splines avec points de controle editables sont plus avancees que les edges standard de Vue Flow (mais possible via Custom Edges)
  • Le panneau de proprietes devra etre refait (mais c'est l'occasion de l'ameliorer)
  • Dependance a une librairie tierce (risque de maintenance)
  • Courbe d'apprentissage pour l'API Vue Flow

Option B : Ameliorer l'implementation actuelle

Avantages :

  • Pas de migration, evolution progressive
  • Controle total sur le code
  • Deja fonctionnel pour le cas d'usage actuel

Inconvenients :

  • Reimplementer zoom/pan/minimap/snap = beaucoup de travail
  • Maintenance lourde du code custom SVG
  • Performance difficile a optimiser sans virtualisation

Option C : Approche hybride

Utiliser Vue Flow pour le canvas principal (zoom, pan, nodes, edges, minimap) tout en conservant :

  • Le panneau de proprietes actuel (adapte)
  • La palette d'outils actuelle
  • Le systeme de persistence JSON existant
  • L'integration IP existante

C'est l'option recommandee. Vue Flow gere le "moteur graphique" et IPWatch garde le controle sur la logique metier.


Autres frameworks evalues

Framework Type Vue 3 Avantages Inconvenients
Vue Flow Node graph Natif Complet, actif, ReactFlow-like Courbe d'apprentissage
Cytoscape.js Graphe generique Wrapper Tres puissant, algorithmes de layout Lourd, API complexe, pas Vue-natif
D3.js Bas niveau Non Ultra-flexible Enorme effort d'implementation
Drawflow Node editor Oui Simple Trop basique, peu maintenu
JointJS Diagrammes Non Professionnel Payant (rapperd), pas Vue
GoJS Diagrammes Non Tres complet Payant, pas Vue-natif
jsPlumb Connexions Wrapper Bon pour les connexions Pas de gestion de nodes
Mermaid Diagrammes texte Non Declaratif Pas interactif

Verdict : Vue Flow est le meilleur choix pour IPWatch - natif Vue 3, fonctionnalites proches de l'existant, communaute active.


Ameliorations identifiees

Phase 1 : Migration vers Vue Flow (fondations)

  • Installer @vue-flow/core, @vue-flow/minimap, @vue-flow/controls, @vue-flow/background
  • Creer un composant ArchitectureCanvas.vue base sur Vue Flow
  • Adapter le format de donnees architecture.json (items → nodes, splines → edges)
  • Ecrire un adaptateur de migration pour convertir les donnees existantes
  • Implementer les Custom Nodes pour chaque type (world, home, computer, network, room, vm, service)
  • Implementer les Custom Edges pour reproduire le style des splines actuelles
  • Activer minimap, controls et background
  • Conserver le panneau de proprietes (adapte a la nouvelle structure)

Phase 2 : Nouvelles fonctionnalites Vue Flow

  • Zoom/Pan fluide avec raccourcis clavier (Ctrl+scroll, espace+drag)
  • Snap-to-grid configurable
  • Multi-selection (Shift+click, rectangle de selection)
  • Sub-flows : grouper des nodes dans un node parent (imbrication visuelle)
  • Undo/Redo (Ctrl+Z / Ctrl+Y)
  • Copier/Coller de nodes
  • Auto-layout : algorithme de positionnement automatique (dagre, elkjs)

Phase 3 : Ameliorations UX

  • Bibliotheque d'objets : sauvegarder et reutiliser des configurations de nodes
  • Templates de diagrammes predéfinis (reseau maison, datacenter, etc.)
  • Export en image (PNG/SVG) du diagramme
  • Mode lecture seule (partage de vue)
  • Recherche de nodes (par nom, IP, type)
  • Filtrage par type de node (afficher/masquer categories)
  • Legende dynamique

Phase 4 : Integrations avancees

  • Sync temps reel avec les scans reseau (nodes changent de couleur selon l'etat online/offline)
  • Affichage du trafic sur les edges (epaisseur proportionnelle au trafic via OPNsense API)
  • Integration OPNsense : noeud firewall avec interfaces et regles
  • Multi-diagrammes : gestion de plusieurs vues (physique, logique, par etage, par VLAN)
  • Animation des flux reseau sur les edges

Todo

(deplacer ici les elements valides a realiser)

Done

(deplacer ici les elements termines)