/* global React */
// ==================== PLANIFICATION — DONNÉES PLANS D'ACTION ====================
// Plans d'actions par projet, indexés par projectId.
// Chaque action : id, wbs, name, owner, dep (dépendances), start, end, progress, status, milestone, phase
// Les dates sont des chaînes ISO YYYY-MM-DD.

const PLANS = {
  // ===== P-612 — Port autonome de Dakar =====
  "P-612": {
    start: "2024-03-01",
    end: "2028-12-31",
    phases: [
      { id: "ph1", name: { fr: "Études & financement", en: "Studies & financing" }, color: "oklch(0.55 0.13 230)" },
      { id: "ph2", name: { fr: "Travaux & équipements", en: "Works & equipment" }, color: "oklch(0.55 0.13 145)" },
      { id: "ph3", name: { fr: "Systèmes d'information & PCS", en: "Information systems & PCS" }, color: "oklch(0.55 0.15 290)" },
      { id: "ph4", name: { fr: "Gouvernance & certifications", en: "Governance & certifications" }, color: "oklch(0.55 0.14 75)" },
      { id: "ph5", name: { fr: "Mise en service & évaluation", en: "Commissioning & evaluation" }, color: "oklch(0.55 0.12 12)" },
    ],
    actions: [
      { id: "A1",  wbs: "1.1", phase: "ph1", name: { fr: "Études techniques détaillées (avant-projet)", en: "Detailed engineering studies" }, owner: "Cheikh A. Mbaye", start: "2024-03-15", end: "2024-08-30", progress: 100, status: "done", dep: [] },
      { id: "A2",  wbs: "1.2", phase: "ph1", name: { fr: "Étude d'impact environnemental (EIES)", en: "Environmental impact assessment" }, owner: "Aminata Sow", start: "2024-04-01", end: "2024-09-30", progress: 100, status: "done", dep: ["A1"] },
      { id: "A3",  wbs: "1.3", phase: "ph1", name: { fr: "Signature accord de financement AFD · BEI · BM", en: "Financing agreement signed" }, owner: "Mariama Sy", start: "2024-10-01", end: "2024-12-15", progress: 100, status: "done", dep: ["A1","A2"], milestone: true },
      { id: "A4",  wbs: "2.1", phase: "ph2", name: { fr: "Dragage du Môle 4 (−14 m)", en: "Mole 4 dredging (−14 m)" }, owner: "Ousmane Niang", start: "2025-01-15", end: "2025-12-31", progress: 92, status: "active", dep: ["A3"] },
      { id: "A5",  wbs: "2.2", phase: "ph2", name: { fr: "Appel d'offres portiques STS", en: "STS cranes tender" }, owner: "Tidiane Kane", start: "2024-11-01", end: "2025-03-30", progress: 100, status: "done", dep: ["A3"] },
      { id: "A6",  wbs: "2.3", phase: "ph2", name: { fr: "Réception 2 portiques Super-Post-Panamax", en: "Delivery 2 Super-Post-Panamax STS" }, owner: "Ousmane Niang", start: "2025-04-15", end: "2025-08-30", progress: 100, status: "done", dep: ["A5"], milestone: true },
      { id: "A7",  wbs: "2.4", phase: "ph2", name: { fr: "Construction terminal Sud — Phase 1", en: "South terminal — Phase 1 build" }, owner: "Ousmane Niang", start: "2025-10-01", end: "2027-03-10", progress: 28, status: "active", dep: ["A4"] },
      { id: "A8",  wbs: "2.5", phase: "ph2", name: { fr: "Voirie & connexion ferroviaire dédiée", en: "Roads & dedicated rail link" }, owner: "Tidiane Kane", start: "2026-04-01", end: "2027-09-30", progress: 4, status: "planned", dep: ["A4"] },
      { id: "A9",  wbs: "3.1", phase: "ph3", name: { fr: "Cahier des charges Port Community System", en: "Port Community System specs" }, owner: "Fatou Mbengue", start: "2025-02-01", end: "2025-06-30", progress: 100, status: "done", dep: ["A3"] },
      { id: "A10", wbs: "3.2", phase: "ph3", name: { fr: "Sélection éditeur PCS · contractualisation", en: "PCS vendor selection · contracting" }, owner: "Fatou Mbengue", start: "2025-07-01", end: "2025-11-15", progress: 100, status: "done", dep: ["A9"] },
      { id: "A11", wbs: "3.3", phase: "ph3", name: { fr: "Déploiement Port Community System", en: "PCS deployment" }, owner: "Fatou Mbengue", start: "2026-01-15", end: "2026-12-20", progress: 42, status: "active", dep: ["A10"] },
      { id: "A12", wbs: "3.4", phase: "ph3", name: { fr: "Intégration douanes · GAINDE 3.0", en: "Customs integration · GAINDE 3.0" }, owner: "Amadou Bâ", start: "2026-06-01", end: "2027-02-28", progress: 8, status: "active", dep: ["A11"] },
      { id: "A13", wbs: "4.1", phase: "ph4", name: { fr: "Plan stratégique Port 2035 — adoption", en: "Strategic Plan Port 2035 adopted" }, owner: "Cheikh A. Mbaye", start: "2025-09-01", end: "2026-01-30", progress: 100, status: "done", dep: ["A3"], milestone: true },
      { id: "A14", wbs: "4.2", phase: "ph4", name: { fr: "Mise en place SOC 24/7 · audit blanc ISO 27001", en: "24/7 SOC · ISO 27001 mock audit" }, owner: "Amadou Bâ", start: "2025-11-15", end: "2026-09-30", progress: 52, status: "active", dep: ["A10"] },
      { id: "A15", wbs: "4.3", phase: "ph4", name: { fr: "Certification ISO 27001", en: "ISO 27001 certification" }, owner: "Amadou Bâ", start: "2026-10-01", end: "2027-06-30", progress: 0, status: "planned", dep: ["A14"], milestone: true },
      { id: "A16", wbs: "4.4", phase: "ph4", name: { fr: "SME · Plan environnemental & ISO 14001", en: "EMS · ISO 14001 environmental plan" }, owner: "Aminata Sow", start: "2025-06-01", end: "2027-12-31", progress: 38, status: "active", dep: ["A2"] },
      { id: "A17", wbs: "4.5", phase: "ph4", name: { fr: "Programme parité H/F & inclusion", en: "Gender parity & inclusion programme" }, owner: "Khady Touré", start: "2025-04-01", end: "2027-12-31", progress: 48, status: "active", dep: ["A3"] },
      { id: "A18", wbs: "5.1", phase: "ph5", name: { fr: "Mise en service terminal Sud — Phase 1", en: "South terminal Phase 1 commissioning" }, owner: "Ndèye F. Diop", start: "2027-03-10", end: "2027-06-30", progress: 0, status: "planned", dep: ["A7","A11"], milestone: true },
      { id: "A19", wbs: "5.2", phase: "ph5", name: { fr: "Formation opérateurs (CNUCED PPS)", en: "Operator training (UNCTAD PPS)" }, owner: "Khady Touré", start: "2027-01-15", end: "2027-09-30", progress: 0, status: "planned", dep: ["A11"] },
      { id: "A20", wbs: "5.3", phase: "ph5", name: { fr: "Évaluation finale Plan stratégique", en: "Strategic plan final evaluation" }, owner: "Cheikh A. Mbaye", start: "2028-09-01", end: "2028-12-31", progress: 0, status: "planned", dep: ["A18","A15"], milestone: true },
    ],
  },

  // ===== P-241 — Santé primaire Sahel =====
  "P-241": {
    start: "2024-03-01", end: "2027-02-28",
    phases: [
      { id: "ph1", name: { fr: "Préparation", en: "Preparation" }, color: "oklch(0.55 0.13 230)" },
      { id: "ph2", name: { fr: "Équipement & infrastructures", en: "Equipment & infrastructure" }, color: "oklch(0.55 0.13 145)" },
      { id: "ph3", name: { fr: "Formation & déploiement", en: "Training & rollout" }, color: "oklch(0.55 0.15 290)" },
      { id: "ph4", name: { fr: "Suivi & évaluation", en: "M&E" }, color: "oklch(0.55 0.14 75)" },
    ],
    actions: [
      { id: "B1", wbs: "1.1", phase: "ph1", name: { fr: "Mission de cadrage 3 pays", en: "Inception mission 3 countries" }, owner: "Aïssata Diallo", start: "2024-03-01", end: "2024-05-15", progress: 100, status: "done", dep: [] },
      { id: "B2", wbs: "1.2", phase: "ph1", name: { fr: "Baseline 42 sites", en: "Baseline 42 sites" }, owner: "Souleymane Touré", start: "2024-04-01", end: "2024-08-30", progress: 100, status: "done", dep: ["B1"], milestone: true },
      { id: "B3", wbs: "2.1", phase: "ph2", name: { fr: "Achat chaîne du froid solaire", en: "Solar cold-chain procurement" }, owner: "Modou Sarr", start: "2024-09-01", end: "2025-02-28", progress: 100, status: "done", dep: ["B2"] },
      { id: "B4", wbs: "2.2", phase: "ph2", name: { fr: "Installation 30 sites", en: "Install 30 sites" }, owner: "Bintou Tall", start: "2024-11-01", end: "2025-04-15", progress: 100, status: "done", dep: ["B3"] },
      { id: "B5", wbs: "2.3", phase: "ph2", name: { fr: "Installation 12 sites complémentaires", en: "Install 12 additional sites" }, owner: "Bintou Tall", start: "2025-05-01", end: "2026-02-28", progress: 76, status: "active", dep: ["B4"] },
      { id: "B6", wbs: "3.1", phase: "ph3", name: { fr: "Cohorte 1 formation (140 agents)", en: "Training cohort 1 (140)" }, owner: "Aminata Coulibaly", start: "2024-09-01", end: "2024-12-31", progress: 100, status: "done", dep: ["B1"] },
      { id: "B7", wbs: "3.2", phase: "ph3", name: { fr: "Cohorte 2 formation (280 agents)", en: "Training cohort 2 (280)" }, owner: "Aminata Coulibaly", start: "2025-09-01", end: "2026-08-30", progress: 54, status: "active", dep: ["B6"] },
      { id: "B8", wbs: "4.1", phase: "ph4", name: { fr: "Évaluation mi-parcours", en: "Mid-term evaluation" }, owner: "Karim Bensaad", start: "2025-04-01", end: "2025-06-30", progress: 100, status: "done", dep: ["B4"], milestone: true },
      { id: "B9", wbs: "4.2", phase: "ph4", name: { fr: "Audit DQA externe", en: "External DQA audit" }, owner: "Karim Bensaad", start: "2026-07-01", end: "2026-09-30", progress: 0, status: "planned", dep: ["B5","B7"] },
      { id: "B10", wbs: "4.3", phase: "ph4", name: { fr: "Clôture & évaluation finale", en: "Closure & final evaluation" }, owner: "Aïssata Diallo", start: "2026-11-01", end: "2027-02-28", progress: 0, status: "planned", dep: ["B9"], milestone: true },
    ],
  },
};

// Generic generator for projects without an explicit plan
function generatePlanFor(project) {
  if (!project) return null;
  const start = new Date("2024-03-01");
  const end = new Date("2027-06-30");
  const phases = [
    { id: "ph1", name: { fr: "Préparation", en: "Preparation" }, color: "oklch(0.55 0.13 230)" },
    { id: "ph2", name: { fr: "Mise en œuvre", en: "Implementation" }, color: "oklch(0.55 0.13 145)" },
    { id: "ph3", name: { fr: "Suivi & évaluation", en: "M&E" }, color: "oklch(0.55 0.14 75)" },
  ];
  const p = project.progress || 50;
  const actions = [
    { id: "G1", wbs: "1.1", phase: "ph1", name: { fr: "Études préalables & cadrage", en: "Inception studies" }, owner: project.lead, start: "2024-03-01", end: "2024-08-30", progress: 100, status: "done", dep: [] },
    { id: "G2", wbs: "1.2", phase: "ph1", name: { fr: "Baseline & cartographie sites", en: "Baseline & site mapping" }, owner: project.lead, start: "2024-05-01", end: "2024-10-15", progress: 100, status: "done", dep: ["G1"], milestone: true },
    { id: "G3", wbs: "2.1", phase: "ph2", name: { fr: "Démarrage des activités sectorielles", en: "Sector activities start" }, owner: project.lead, start: "2024-11-01", end: "2025-08-30", progress: 100, status: "done", dep: ["G2"] },
    { id: "G4", wbs: "2.2", phase: "ph2", name: { fr: "Déploiement à l'échelle", en: "Scale-up rollout" }, owner: project.lead, start: "2025-09-01", end: "2026-12-31", progress: Math.min(100, p + 20), status: p > 75 ? "done" : "active", dep: ["G3"] },
    { id: "G5", wbs: "2.3", phase: "ph2", name: { fr: "Renforcement bénéficiaires", en: "Beneficiary capacity strengthening" }, owner: project.lead, start: "2025-04-01", end: "2026-09-30", progress: p, status: "active", dep: ["G3"] },
    { id: "G6", wbs: "3.1", phase: "ph3", name: { fr: "Évaluation à mi-parcours", en: "Mid-term evaluation" }, owner: project.lead, start: "2025-10-01", end: "2025-12-31", progress: 100, status: "done", dep: ["G3"], milestone: true },
    { id: "G7", wbs: "3.2", phase: "ph3", name: { fr: "Audit final & clôture", en: "Final audit & closure" }, owner: project.lead, start: "2027-01-01", end: "2027-06-30", progress: 0, status: "planned", dep: ["G4","G5"], milestone: true },
  ];
  return { start: "2024-03-01", end: "2027-06-30", phases, actions };
}

function getPlanFor(projectId, project) {
  if (PLANS[projectId]) return PLANS[projectId];
  return generatePlanFor(project);
}

window.PLANS = PLANS;
window.getPlanFor = getPlanFor;
window.generatePlanFor = generatePlanFor;
