digraph architecture_vue1 { rankdir=TB; fontname="Arial"; fontsize=18; label="FabNum — Vue 1 : Le moteur\nRequêtage, indices, fiches via API\n"; labelloc=t; splines=true; nodesep=0.7; ranksep=0.9; node [fontname="Arial", fontsize=10, style="filled,rounded", shape=box, penwidth=1.5]; edge [fontname="Arial", fontsize=9, penwidth=1.2]; // Ligne 1 : utilisateurs (4 colonnes fixes) admin [ label="Administrateur\n\nGère le graphe,\nles sources, les tiers\nde confiance" fillcolor="#FFE082" shape=house ]; expert [ label="Expert\n\nAnalyse les risques,\nqualifie les données" fillcolor="#A5D6A7" shape=house ]; client [ label="Client\n(COMEX, Métiers, DSI)\n\nConsulte les analyses,\nles fiches, les alertes." fillcolor="#EF9A9A" shape=house ]; // Placeholder veille 360° (invisible) ph_eco [label="" shape=point width=0.01 style=invis]; { rank=same; admin; expert; client; ph_eco; } // Ligne 2 : API + placeholder bus api [ label="API\n\nPoint d'accès unique\nAuthentification, rôles,\nprofils de visibilité" fillcolor="#B39DDB" penwidth=2 ]; // Placeholder bus (invisible) ph_bus [label="" shape=point width=0.01 style=invis]; { rank=same; api; ph_bus; } // Ligne 3 : Moteur + placeholders moteur [ label="Moteur FabNum\n\nCalcul des indices\n(IHH, ICS, IVC, ISG)\nRequêtage du graphe\nChemins critiques\nGénération fiches (templates)\nArbitrage des sources" fillcolor="#90CAF9" penwidth=2 ]; // Placeholder IA (invisible) ph_ia [label="" shape=point width=0.01 style=invis]; // Placeholder veille (invisible) ph_veille [label="" shape=point width=0.01 style=invis]; { rank=same; ph_veille; moteur; ph_ia; } // Ligne 4 : BDD + sources bdd [ label="Base de données\n(graphe)\n\nNœuds, relations, indices\nSources rattachées\nHistorique des données" fillcolor="#80CBC4" penwidth=2 ]; sources [ label="Sources externes\n\nUSGS, Statista, BRGM,\nScholar Gateway, Consensus,\nWRI Aqueduct, ND-GAIN..." fillcolor="#E0E0E0" shape=cylinder ]; { rank=same; bdd; sources; } // Relations expert -> api [label="consulte\nanalyse", color="#2E7D32"]; client -> api [label="consulte\nles résultats", color="#C62828"]; admin -> moteur [label="administre\n(scripts)", color="#E65100", style=bold, penwidth=2]; api -> moteur [label="transmet\nles requêtes", color="#4527A0", dir=both]; moteur -> bdd [label="lit et écrit\nles données", color="#00695C", dir=both]; sources -> bdd [label="alimente\nles données", color="#546E7A", style=dashed]; // Liens invisibles pour stabiliser la disposition ph_eco -> ph_bus [style=invis]; ph_bus -> ph_ia [style=invis]; ph_veille -> bdd [style=invis]; }