Code/docs/FabNum v2/macro-daf.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

153 lines
7.7 KiB
Plaintext

digraph macro_daf {
rankdir=TB;
fontname="Arial";
node [fontname="Arial", fontsize=10, style=filled, shape=box];
edge [fontname="Arial", fontsize=9];
label="FabNum — Macro-DAF (Dossier d'Architecture Fonctionnel)\n\n";
labelloc=t;
fontsize=16;
compound=true;
// F1. Modéliser
subgraph cluster_F1 {
label="F1. MODÉLISER LA CHAÎNE DE VALEUR";
style=filled; color="#E3F2FD"; fontsize=12; fontcolor="#1565C0";
F1_1 [label="F1.1\nValider les niveaux\nde décomposition", fillcolor="#BBDEFB"];
F1_2 [label="F1.2\nDéfinir les intitulés\ngénériques", fillcolor="#BBDEFB"];
F1_3 [label="F1.3\nDéfinir les critères\nd'arrêt (profondeur)", fillcolor="#BBDEFB"];
F1_4 [label="F1.4\nGérer chaînes\nessentielles / connexes", fillcolor="#BBDEFB"];
F1_5 [label="F1.5\nGérer les matières\ncomposées (NMC...)", fillcolor="#BBDEFB"];
F1_1 -> F1_2 -> F1_3 -> F1_4 -> F1_5;
acteur_F1 [label="Acteur : Admin", shape=ellipse, fillcolor="#E3F2FD", fontsize=9];
}
// F2. Structurer et qualifier
subgraph cluster_F2 {
label="F2. STRUCTURER ET QUALIFIER LES DONNÉES";
style=filled; color="#E8F5E9"; fontsize=12; fontcolor="#2E7D32";
F2_1 [label="F2.1\nSpécifier données\n(essentielles / info)", fillcolor="#C8E6C9"];
F2_2 [label="F2.2\nDéfinir périmètre\nmesuré", fillcolor="#C8E6C9"];
F2_3 [label="F2.3\nIdentifier et catégoriser\nles sources", fillcolor="#C8E6C9"];
F2_4 [label="F2.4\nAttribuer tiers\nde confiance\n(par domaine)", fillcolor="#C8E6C9"];
F2_5 [label="F2.5\nQualifier données\n(filtres qualité)", fillcolor="#C8E6C9"];
F2_6 [label="F2.6\nArbitrer divergences\n(tier 1 par défaut,\nconvergence → alerte)", fillcolor="#C8E6C9"];
F2_7 [label="F2.7\nCalculer indice\nde fiabilité", fillcolor="#C8E6C9"];
F2_1 -> F2_2 -> F2_3 -> F2_4 -> F2_5 -> F2_6 -> F2_7;
acteur_F2 [label="Acteur : Admin", shape=ellipse, fillcolor="#E8F5E9", fontsize=9];
}
// F3. Surveiller et maintenir
subgraph cluster_F3 {
label="F3. SURVEILLER ET MAINTENIR (cycle structurel — trimestriel)";
style=filled; color="#FFF3E0"; fontsize=12; fontcolor="#E65100";
F3_1 [label="F3.1\nVeiller sur\nles sources\n(huginn)", fillcolor="#FFE0B2"];
F3_2 [label="F3.2\nDétecter variations\nanormales (alertes)", fillcolor="#FFE0B2"];
F3_3 [label="F3.3\nContrôler\ncitations\n(verify-citations)", fillcolor="#FFE0B2"];
F3_4 [label="F3.4\nHistoriser données\net indices", fillcolor="#FFE0B2"];
F3_5 [label="F3.5\nAuditer exhaustivité\ndes matières premières", fillcolor="#FFE0B2"];
F3_1 -> F3_2;
F3_3 -> F3_4;
acteur_F3 [label="Acteurs : Admin (gouv.)\nServices internes (auto.)", shape=ellipse, fillcolor="#FFF3E0", fontsize=9];
}
// F4. Calculer les indices
subgraph cluster_F4 {
label="F4. CALCULER LES INDICES DE CRITICITÉ";
style=filled; color="#FCE4EC"; fontsize=12; fontcolor="#C62828";
F4_1 [label="F4.1\nCalculer IHH, ICS\nIVC, ISG (+ futurs)\nstructurels et situationnels", fillcolor="#F8BBD0"];
F4_2 [label="F4.2\nPré-calculer à\nchaque MAJ graphe", fillcolor="#F8BBD0"];
F4_3 [label="F4.3\nMéta-indices\ndynamiques\n(sur sélection)", fillcolor="#F8BBD0"];
F4_4 [label="F4.4\nRétro-analyser\n(backtesting)", fillcolor="#F8BBD0"];
F4_5 [label="F4.5\nPropager les impacts\net projeter\ntemporellement", fillcolor="#F8BBD0"];
F4_1 -> F4_2;
F4_3 -> F4_4;
acteur_F4 [label="Acteur : Services internes", shape=ellipse, fillcolor="#FCE4EC", fontsize=9];
}
// F5. Produire les fiches
subgraph cluster_F5 {
label="F5. PRODUIRE LES FICHES";
style=filled; color="#F3E5F5"; fontsize=12; fontcolor="#6A1B9A";
F5_1 [label="F5.1\nGénérer depuis\ndonnées via templates", fillcolor="#E1BEE7"];
F5_2 [label="F5.2\nAdapter par niveau\n(matière première,\ncomposant, composé...)", fillcolor="#E1BEE7"];
F5_3 [label="F5.3\nAdapter par usage\n(expertise, synthèse,\nAPI/JSON)", fillcolor="#E1BEE7"];
F5_1 -> F5_2 -> F5_3;
acteur_F5 [label="Acteur : Services internes", shape=ellipse, fillcolor="#F3E5F5", fontsize=9];
}
// F6. Exposer et servir
subgraph cluster_F6 {
label="F6. EXPOSER ET SERVIR";
style=filled; color="#E0F2F1"; fontsize=12; fontcolor="#00695C";
F6_1 [label="F6.1\nRequêtage graphe\n(expert / simplifié)", fillcolor="#B2DFDB"];
F6_2 [label="F6.2\nConsultation\nfiches", fillcolor="#B2DFDB"];
F6_3 [label="F6.3\nAnalyse vulnérabilité\net scénarios", fillcolor="#B2DFDB"];
F6_4 [label="F6.4\nExport\n(PDF, JSON, DOT)", fillcolor="#B2DFDB"];
F6_5 [label="F6.5\nContextualisation\nclient", fillcolor="#B2DFDB"];
F6_6 [label="F6.6\nIntégration\nécosystème 360°", fillcolor="#B2DFDB"];
F6_7 [label="F6.7\nScénarios multi-impacts\n(combinatoire)", fillcolor="#B2DFDB"];
acteur_F6 [label="Acteurs : Expert, Client\nCOMEX, Métiers, DSI", shape=ellipse, fillcolor="#E0F2F1", fontsize=9];
}
// F7. Capter et traduire les événements
subgraph cluster_F7 {
label="F7. CAPTER ET TRADUIRE LES ÉVÉNEMENTS (bus d'impact)";
style=filled; color="#FBE9E7"; fontsize=12; fontcolor="#BF360C";
F7_1 [label="F7.1\nRecevoir événements\n(veille 360°,\nsignaux faibles)", fillcolor="#FFCCBC"];
F7_2 [label="F7.2\nTraduire en impacts\nchiffrés (IA)", fillcolor="#FFCCBC"];
F7_3 [label="F7.3\nValidation expert\navant injection", fillcolor="#FFCCBC"];
F7_4 [label="F7.4\nMaintenir la mémoire\nsituationnelle\n(accumule, archive)", fillcolor="#FFCCBC"];
F7_5 [label="F7.5\nMettre à jour\nle graphe situationnel", fillcolor="#FFCCBC"];
F7_1 -> F7_2 -> F7_3 -> F7_4 -> F7_5;
acteur_F7 [label="Acteurs : Veille 360° (input)\nIA (traduction)\nExpert (validation)", shape=ellipse, fillcolor="#FBE9E7", fontsize=9];
}
// F8. Sécuriser et contrôler (transversal)
subgraph cluster_F8 {
label="F8. SÉCURISER ET CONTRÔLER (transversal)";
style=filled; color="#ECEFF1"; fontsize=12; fontcolor="#37474F";
F8_1 [label="F8.1 Auth\n(user / API key)", fillcolor="#CFD8DC"];
F8_2 [label="F8.2 Rôles\n(admin/expert/service)", fillcolor="#CFD8DC"];
F8_3 [label="F8.3 Profils\nvisibilité", fillcolor="#CFD8DC"];
F8_4 [label="F8.4 Rate limiting\n+ Monitoring", fillcolor="#CFD8DC"];
F8_1 -> F8_2 -> F8_3;
acteur_F8 [label="Acteurs : Admin (config)\nSystème (exécution)", shape=ellipse, fillcolor="#ECEFF1", fontsize=9];
}
// Flux principal
F1_5 -> F2_1 [lhead=cluster_F2, ltail=cluster_F1, penwidth=2, color="#333333"];
F2_7 -> F3_1 [lhead=cluster_F3, ltail=cluster_F2, penwidth=2, color="#333333"];
F3_4 -> F4_1 [lhead=cluster_F4, ltail=cluster_F3, penwidth=2, color="#333333"];
F4_2 -> F5_1 [lhead=cluster_F5, ltail=cluster_F4, penwidth=2, color="#333333"];
F5_3 -> F6_1 [lhead=cluster_F6, ltail=cluster_F5, penwidth=2, color="#333333"];
// F3 en continu
F3_2 -> F3_1 [style=dashed, color="#E65100", label="boucle\ncontinue"];
// F7 alimente F4 (impacts → calcul)
F7_5 -> F4_5 [lhead=cluster_F4, ltail=cluster_F7, penwidth=2, color="#BF360C", label="impacts\nchiffrés"];
// F7 boucle situationnelle
F7_4 -> F7_1 [style=dashed, color="#BF360C", label="mise à jour\ncontinue"];
// F8 transversal
F8_3 -> F5_1 [style=dotted, color="#37474F", lhead=cluster_F5, label="filtre"];
F8_3 -> F6_1 [style=dotted, color="#37474F", lhead=cluster_F6, label="filtre"];
}