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>
183 lines
8.4 KiB
Plaintext
183 lines
8.4 KiB
Plaintext
digraph macro_dat {
|
||
rankdir=TB;
|
||
fontname="Arial";
|
||
node [fontname="Arial", fontsize=10, style="filled,rounded", shape=box, penwidth=1.5];
|
||
edge [fontname="Arial", fontsize=9, penwidth=1.2];
|
||
label="FabNum — Macro-DAT (Dossier d'Architecture Technique)\n\n";
|
||
labelloc=t;
|
||
fontsize=16;
|
||
compound=true;
|
||
|
||
// ==================== COUCHE STOCKAGE ====================
|
||
subgraph cluster_stockage {
|
||
label="COUCHE STOCKAGE";
|
||
style=filled; color="#E3F2FD"; fontsize=13; fontcolor="#1565C0";
|
||
|
||
bdd_struct [
|
||
label="Graphe structurel\n\nCapacités nominales\nActeurs, pays, parts de marché\nIndices structurels\nMise à jour trimestrielle"
|
||
fillcolor="#BBDEFB"
|
||
];
|
||
bdd_situa [
|
||
label="Graphe situationnel\n\nImpacts actifs\nCapacités réelles\nIndices situationnels\nHistorique des situations"
|
||
fillcolor="#90CAF9"
|
||
];
|
||
historisation [
|
||
label="Historisation\n\nSnapshots horodatés\nVersions données + indices\nAudit trail\nRétro-analyse"
|
||
fillcolor="#BBDEFB"
|
||
];
|
||
sources_db [
|
||
label="Référentiel sources\n\nSources catégorisées\nTiers de confiance (par domaine)\nLiens source ↔ donnée\nIndice de fiabilité"
|
||
fillcolor="#BBDEFB"
|
||
];
|
||
}
|
||
|
||
// ==================== COUCHE MOTEUR ====================
|
||
subgraph cluster_moteur {
|
||
label="COUCHE MOTEUR (Python)";
|
||
style=filled; color="#E8F5E9"; fontsize=13; fontcolor="#2E7D32";
|
||
|
||
subgraph cluster_calcul {
|
||
label="Calcul";
|
||
style=filled; color="#C8E6C9";
|
||
calcul_indices [label="Calcul indices\n\nIHH, ICS, IVC, ISG\n+ futurs (eau, énergie)\nStructurels ET situationnels\nPré-calcul à chaque MAJ", fillcolor="#A5D6A7"];
|
||
meta_indices [label="Méta-indices\n\nCalcul dynamique\nsur sous-graphe\nsélectionné", fillcolor="#A5D6A7"];
|
||
propagation [label="Propagation\nd'impact\n\nSimulation manuelle\nou via bus\nProjection temporelle\n(stocks)", fillcolor="#A5D6A7"];
|
||
}
|
||
|
||
subgraph cluster_qualite {
|
||
label="Qualité données";
|
||
style=filled; color="#C8E6C9";
|
||
arbitrage [label="Arbitrage sources\n\nTier 1 par défaut\nConvergence → alerte\nSeuils variation", fillcolor="#A5D6A7"];
|
||
qualification [label="Qualification\n\nFiltres qualité\nIndice fiabilité\nPérimètre mesuré", fillcolor="#A5D6A7"];
|
||
}
|
||
|
||
subgraph cluster_requetage {
|
||
label="Requêtage";
|
||
style=filled; color="#C8E6C9";
|
||
chemins [label="Traversée graphe\n\nChemins critiques\nFiltrage multi-critères\nSous-graphes", fillcolor="#A5D6A7"];
|
||
projection_client [label="Contextualisation\nclient\n\nMapping contexte client\nsur graphe FabNum\n(stateless)", fillcolor="#A5D6A7"];
|
||
scenarios [label="Scénarios\nmulti-impacts\n\nCombinatoire N événements\nComparaison scénarios\nContextualisé client", fillcolor="#A5D6A7"];
|
||
}
|
||
|
||
subgraph cluster_generation {
|
||
label="Génération";
|
||
style=filled; color="#C8E6C9";
|
||
templates [label="Templates fiches\n\nNiveau × usage\nExpertise / Synthèse\nAPI / JSON", fillcolor="#A5D6A7"];
|
||
import_export [label="Import / Export\n\nDOT (legacy)\nJSON\nPDF\nBackup / Restore", fillcolor="#A5D6A7"];
|
||
}
|
||
}
|
||
|
||
// ==================== BUS D'IMPACT ====================
|
||
subgraph cluster_bus {
|
||
label="BUS D'IMPACT";
|
||
style=filled; color="#FBE9E7"; fontsize=13; fontcolor="#BF360C";
|
||
|
||
memoire [
|
||
label="Mémoire situationnelle\n\nImpacts actifs\nHistorique événements\nAccumule, met à jour, archive"
|
||
fillcolor="#FFCCBC"
|
||
];
|
||
traducteur [
|
||
label="Traducteur IA\n\nÉvénement → impacts chiffrés\nNœuds impactés, % réduction\nDurée estimée"
|
||
fillcolor="#FFAB91"
|
||
];
|
||
validation [
|
||
label="Validation expert\n\nPropose → valide\nPas d'injection automatique"
|
||
fillcolor="#FFCCBC"
|
||
];
|
||
|
||
traducteur -> validation -> memoire;
|
||
}
|
||
|
||
// ==================== SERVICES INTERNES ====================
|
||
subgraph cluster_services_internes {
|
||
label="SERVICES INTERNES (non exposés)";
|
||
style=filled; color="#FFF3E0"; fontsize=13; fontcolor="#E65100";
|
||
|
||
veille [label="Veille sources\n(huginn)\n\nDétection MAJ\nNouvelles sources\nDisparitions", fillcolor="#FFE0B2"];
|
||
verif_citations [label="Vérification\ncitations\n\nverify-citations", fillcolor="#FFE0B2"];
|
||
recalcul [label="Recalcul indices\n\nDéclenché par MAJ\nstructurel + situationnel", fillcolor="#FFE0B2"];
|
||
alertes [label="Alertes\n\nVariations anormales\nConvergence sources", fillcolor="#FFE0B2"];
|
||
}
|
||
|
||
// ==================== API REST ====================
|
||
subgraph cluster_api {
|
||
label="API REST (point d'accès unique)";
|
||
style=filled; color="#F3E5F5"; fontsize=13; fontcolor="#6A1B9A";
|
||
|
||
subgraph cluster_securite {
|
||
label="Sécurité";
|
||
style=filled; color="#E1BEE7";
|
||
auth [label="Auth + Rôles\n(user / API key)", fillcolor="#CE93D8"];
|
||
profils [label="Profils visibilité", fillcolor="#CE93D8"];
|
||
rate_limit [label="Rate limiting\nMonitoring", fillcolor="#CE93D8"];
|
||
}
|
||
|
||
subgraph cluster_endpoints {
|
||
label="Endpoints";
|
||
style=filled; color="#E1BEE7";
|
||
ep_graphe [label="/graphe/*\nstructurel + situationnel", fillcolor="#CE93D8"];
|
||
ep_fiches [label="/fiches/*\ntous formats", fillcolor="#CE93D8"];
|
||
ep_analyse [label="/analyse/*\nvulnérabilités, scénarios", fillcolor="#CE93D8"];
|
||
ep_indices [label="/indices/*\nstructurels + situationnels", fillcolor="#CE93D8"];
|
||
ep_export [label="/export/*\nPDF, JSON, DOT", fillcolor="#CE93D8"];
|
||
ep_admin [label="/admin/*\nCRUD, sources", fillcolor="#CE93D8"];
|
||
}
|
||
}
|
||
|
||
// ==================== CONSOMMATEURS ====================
|
||
frontend [label="Frontend expert\n\nAnalyse, simulation,\nqualification", fillcolor="#CFD8DC", shape=house];
|
||
client_app [label="Client\n\nCOMEX, Métiers, DSI\nContextualisé", fillcolor="#CFD8DC", shape=house];
|
||
ecosysteme [label="Écosystème 360°\n\nVeille stratégique\nIRON, alertes", fillcolor="#CFD8DC", shape=house];
|
||
|
||
// Admin
|
||
admin [label="Admin (scripts)\n\nCRUD graphe structurel\nGestion sources\nTiers, arbitrage", fillcolor="#FFCC80", shape=hexagon];
|
||
|
||
// Veille 360°
|
||
veille360 [label="Veille 360°\n\nÉvénements géopolitiques\nclimatiques, économiques\nSignaux faibles", fillcolor="#CE93D8", shape=house];
|
||
|
||
// ==================== LIENS ====================
|
||
|
||
// Stockage → Moteur
|
||
bdd_struct -> chemins [color="#1565C0"];
|
||
bdd_struct -> calcul_indices [color="#1565C0"];
|
||
bdd_situa -> propagation [color="#1565C0"];
|
||
bdd_situa -> scenarios [color="#1565C0"];
|
||
sources_db -> arbitrage [color="#1565C0"];
|
||
|
||
// Bus → Stockage + Moteur
|
||
memoire -> bdd_situa [label="MAJ\nsituationnel", color="#BF360C"];
|
||
memoire -> propagation [label="impacts\nchiffrés", color="#BF360C", penwidth=2];
|
||
|
||
// Veille 360° → Bus
|
||
veille360 -> traducteur [label="événements", color="#6A1B9A", penwidth=2];
|
||
|
||
// Moteur → Services internes
|
||
calcul_indices -> recalcul [color="#E65100"];
|
||
arbitrage -> alertes [color="#E65100"];
|
||
|
||
// Moteur → API
|
||
chemins -> ep_graphe [color="#6A1B9A"];
|
||
meta_indices -> ep_indices [color="#6A1B9A"];
|
||
templates -> ep_fiches [color="#6A1B9A"];
|
||
import_export -> ep_export [color="#6A1B9A"];
|
||
propagation -> ep_analyse [color="#6A1B9A"];
|
||
scenarios -> ep_analyse [color="#6A1B9A"];
|
||
|
||
// API → Consommateurs
|
||
ep_graphe -> frontend [color="#37474F"];
|
||
ep_analyse -> frontend [color="#37474F"];
|
||
ep_fiches -> client_app [color="#37474F"];
|
||
ep_analyse -> client_app [color="#37474F"];
|
||
ep_graphe -> ecosysteme [color="#37474F"];
|
||
ep_indices -> ecosysteme [color="#37474F"];
|
||
|
||
// Admin
|
||
admin -> bdd_struct [color="#E65100", penwidth=2, label="accès\ndirect"];
|
||
|
||
// Services internes → Stockage
|
||
veille -> sources_db [color="#E65100", style=dashed, label="MAJ sources"];
|
||
recalcul -> bdd_struct [color="#E65100", style=dashed];
|
||
recalcul -> bdd_situa [color="#E65100", style=dashed];
|
||
alertes -> admin [color="#E65100", style=dashed, label="notification"];
|
||
}
|