digraph planification_temporelle { rankdir=LR; fontname="Arial"; node [fontname="Arial", fontsize=11, style=filled, shape=record]; edge [fontname="Arial", fontsize=9]; label="FabNum — Planification temporelle\n\n"; labelloc=t; fontsize=16; // Phases subgraph cluster_phase1 { label="Phase 1 — Fondations"; style=filled; color="#E3F2FD"; fontsize=13; fontcolor="#1565C0"; P7 [label="P7\nValidation\nniveaux|Revue littérature\nSCOR, ISO 28000\nOpen Supply Hub", fillcolor="#BBDEFB"]; P6spike [label="P6 spike\nTest bases\ndonnées|Neo4j Community\nPostgreSQL+AGE\nArangoDB\n(Docker/serveur)", fillcolor="#BBDEFB"]; } subgraph cluster_phase2 { label="Phase 2 — Modèle & Stockage"; style=filled; color="#E8F5E9"; fontsize=13; fontcolor="#2E7D32"; P3 [label="P3\nModèle de\ndonnées|Essentielles / Info\nTiers confiance\nArbitrage\nHistorisation\nIndice fiabilité", fillcolor="#C8E6C9"]; P6impl [label="P6 impl\nStockage|Base retenue\nInstallation native\nBackup", fillcolor="#C8E6C9"]; } subgraph cluster_phase3 { label="Phase 3 — Données & Sources"; style=filled; color="#FFF3E0"; fontsize=13; fontcolor="#E65100"; P2 [label="P2\nGestion\nsources|Identification\nCatégorisation\nVeille (huginn)\nVérification citations", fillcolor="#FFE0B2"]; P4 [label="P4\nAmorçage|3 minerais\n1 composant\n1 produit final\nQualification\n+ audit exhaustivité", fillcolor="#FFE0B2"]; } subgraph cluster_phase4 { label="Phase 4 — Fiches & API"; style=filled; color="#F3E5F5"; fontsize=13; fontcolor="#6A1B9A"; P5 [label="P5\nTemplates\nfiches|Niveau × usage\nExpertise\nSynthèse\nAPI/JSON", fillcolor="#E1BEE7"]; P1 [label="P1\nAPI REST\n+ rôles|Admin / Expert / Service\nAuth + tokens\nAPI-first", fillcolor="#E1BEE7"]; P8 [label="P8\nServices\nsécu profils|Personnalisation client\nProfils visibilité\nRate limiting\nRGPD / stateless", fillcolor="#E1BEE7"]; } subgraph cluster_horizon { label="Horizon"; style=filled; color="#EFEBE9"; fontsize=13; fontcolor="#4E342E"; P10 [label="P10\nÉnergie / Eau|Attributs opération\nSourçage parcellaire\nCroisements risques", fillcolor="#D7CCC8"]; P11 [label="P11\nGéo fine|Région / site\nWRI Aqueduct\nAlertes climatiques", fillcolor="#D7CCC8"]; P9 [label="P9\nMulti-\nsectoriel|Graphes par secteur\nConnexes inter-secteurs\nMinerais partagés", fillcolor="#D7CCC8"]; } // MVP MVP [label="MVP\nJalon interne|Moteur requêtable\nDonnées sourcées\nIndice fiabilité\nRétro-analyse", shape=doubleoctagon, fillcolor="#FFF9C4", style="filled,bold"]; // Dépendances principales P7 -> P3 [label="niveaux\nvalidés", color="#2E7D32", penwidth=2]; P6spike -> P6impl [label="techno\nretenue", color="#2E7D32", penwidth=2]; P3 -> P6impl [label="schéma", color="#2E7D32"]; P6impl -> P4 [label="base\nprête", color="#E65100", penwidth=2]; P2 -> P4 [label="sources\ncatégorisées", color="#E65100"]; P4 -> P5 [label="données\nqualifiées", color="#6A1B9A"]; P5 -> P1 [label="fiches\ngénérables", color="#6A1B9A"]; P1 -> P8 [label="API\nfonctionnelle", color="#6A1B9A"]; // Parallélisations P7 -> P6spike [style=dashed, color="#1565C0", label="parallèle", constraint=false]; P3 -> P2 [style=dashed, color="#E65100", label="P2 démarre\nen parallèle", constraint=false]; // MVP P4 -> MVP [style=bold, color="#F9A825", penwidth=2, label="MVP atteint"]; // Horizon (dépendances faibles) P8 -> P10 [style=dotted, color="#795548"]; P8 -> P11 [style=dotted, color="#795548"]; P8 -> P9 [style=dotted, color="#795548"]; }