Code/docs/FabNum v2/architecture-vue4.dot
Stéphan Peccini 29a85bdcf7
docs(evolution): intégration revue critique + réorganisation complète
Revue critique (claude.ai) intégrée :
- Point 3 : versionnage formules indices + date disponibilité effective
- Point 4 : critères sélection amorçage (stresser les mécanismes)
- Point 6 : réversibilité dans le spike technique
- Point 7 : SCOR/ISO en contrepoint, axes validation complémentaires
- Point 8 : interface concrète IRON (3 cas d'usage)
- Point 12 : projection qualitative/chiffrée selon confiance, rétro-analyse calibration
- Point 13 : deux sorties bus (situationnelle/structurelle), coût IA différé
- Contraintes transversales : décisions différées avec signaux déclencheurs

Réorganisation document :
- Vue 1 en en-tête (principe fondamental)
- Ordre de réalisation aligné sur les 4 vues
- Progression architecturale (Vue 1→4) en fin de document
- DAF et DAT mis à jour (8 fonctions, bus d'impact, structurel/situationnel)
- Vue 4 corrigée (veille propose, ne injecte pas ; flèche API restaurée ;
  sortie structurelle du bus)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-08 13:08:27 +02:00

114 lines
4.8 KiB
Plaintext

digraph architecture_vue4 {
rankdir=TB;
fontname="Arial";
fontsize=18;
label="FabNum — Vue 4 : Architecture complète\nBus d'impact, mémoire situationnelle, IA\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 structurel,\nles sources, les tiers\nde confiance"
fillcolor="#FFE082" shape=house
];
expert [
label="Expert\n\nAnalyse les risques,\nqualifie les données,\nvalide les impacts,\nvalide les sources"
fillcolor="#A5D6A7" shape=house
];
client [
label="Client\n(COMEX, Métiers, DSI)\n\nConsulte les analyses,\nles fiches, les alertes.\nPeut contextualiser\nses requêtes."
fillcolor="#EF9A9A" shape=house
];
ecosysteme [
label="Écosystème\nveille 360°\n\nDétecte les événements,\npropose des sources,\nalimente le bus d'impact"
fillcolor="#CE93D8" shape=house
];
{ rank=same; admin; expert; client; ecosysteme; }
// Ligne 2 : API + Bus d'impact
api [
label="API\n\nPoint d'accès unique\nAuthentification, rôles,\nprofils de visibilité\n\nSert le graphe situationnel\n(structurel accessible aussi)"
fillcolor="#B39DDB" penwidth=2
];
bus [
label="Bus d'impact\n\nMémoire situationnelle\nTraduction événements → impacts\nAccumule, met à jour, archive\nMise à jour en continu\n(rythme décisionnel)"
fillcolor="#FF8A65" penwidth=2.5
style="filled,rounded,bold"
];
{ rank=same; api; bus; }
// Ligne 3 : Moteur + IA + veille
moteur [
label="Moteur FabNum\n\nCalcul des indices\n(structurels et situationnels)\nRequêtage, chemins critiques\nGénération fiches (templates)\nArbitrage des sources\nProjection temporelle"
fillcolor="#90CAF9" penwidth=2
];
ia_bus [
label="IA\n\nAnalyse les événements,\npropose les impacts\nchiffrés"
fillcolor="#FFCC80"
];
veille [
label="Veille sources\n\nSurveillance des sources\n(huginn)\nVérification des citations\nAlertes (variations)"
fillcolor="#FFAB91" penwidth=1.5
];
{ rank=same; veille; moteur; ia_bus; }
// Ligne 4 : BDD scindée + sources
subgraph cluster_bdd {
label="Base de données (graphe)";
style=filled;
color="#E0F2F1";
fontsize=10;
fontcolor="#00695C";
bdd_situa [
label="Graphe situationnel\n\nImpacts actifs\nCapacités réelles\nIndices situationnels\nHistorique des situations"
fillcolor="#4DB6AC"
];
bdd_struct [
label="Graphe structurel\n\nCapacités nominales\nActeurs, pays, parts de marché\nIndices structurels\nMise à jour trimestrielle"
fillcolor="#80CBC4"
];
}
sources [
label="Sources externes\n\nUSGS, Statista, BRGM,\nScholar Gateway, Consensus,\nWRI Aqueduct, ND-GAIN..."
fillcolor="#E0E0E0" shape=cylinder
];
// Relations utilisateurs
expert -> api [label="consulte\nanalyse", color="#2E7D32"];
expert -> sources [label="valide et\nalimente", color="#2E7D32", style=bold];
client -> api [label="consulte\nles résultats", color="#C62828"];
admin -> moteur [label="administre\n(scripts)", color="#E65100", style=bold, penwidth=2];
// Écosystème 360° — trois interactions
ecosysteme -> api [label="requête\nanalyses", color="#6A1B9A"];
ecosysteme -> expert [label="propose événements\net sources", color="#6A1B9A", style=dashed, penwidth=2];
// Expert → Bus (événements validés)
expert -> bus [label="valide\nles impacts", color="#E65100", style=bold];
// Bus ↔ IA
bus -> ia_bus [label="événement\nà analyser", color="#E65100", dir=both];
// Bus → Moteur + BDD (deux sorties)
bus -> moteur [label="impacts\nchiffrés", color="#BF360C", penwidth=2];
bus -> bdd_situa [label="MAJ\nsituationnel", color="#BF360C", style=dashed];
bus -> bdd_struct [label="MAJ structurel\n(fermeture mine,\nnouvel opérateur)", color="#BF360C", style=dashed];
// API ↔ Moteur
api -> moteur [label="transmet\nles requêtes", color="#4527A0", dir=both];
// Moteur ↔ BDD
moteur -> bdd_struct [label="lit/écrit\nstructurel", color="#00695C", dir=both];
moteur -> bdd_situa [label="lit/écrit\nsituationnel", color="#00695C", dir=both];
// Veille
sources -> veille [label="surveille\nles MAJ", color="#BF360C"];
veille -> bdd_struct [label="met à jour\nles sources", color="#E65100", style=dashed];
sources -> bdd_struct [label="alimente\nles données", color="#546E7A", style=dashed];
}