-- #migration 2026_07_06_029
-- Nouveau format de mesure (SPEC_format_cartes_mesure.md) : objectif + questions
-- à cadence par métrique. Une carte peut mélanger plusieurs cadences (ex.
-- C-006 : 7 jours pour les contacts, 30 jours pour la rentabilité).

-- ── 1. Objectif de la carte (label + métrique principale) ───────────────────
ALTER TABLE card_guide
  ADD COLUMN objectif_label VARCHAR(200) NULL AFTER domain,
  ADD COLUMN objectif_metric_principale VARCHAR(40) NULL AFTER objectif_label;

-- ── 2. mesure.questions[] — remplace à terme card_guide_indicateurs ─────────
-- card_guide_indicateurs n'est pas supprimée : les cartes pas encore migrées
-- vers le nouveau format continuent de fonctionner avec l'ancien (cadence
-- fixe 7 jours, cf. api/impact.php). depends_on_metric permet de masquer une
-- question tant que la réponse booléenne dont elle dépend est négative
-- (ex. "As-tu fait des marchés ce mois-ci ?" → non → pas de question rentabilité).
CREATE TABLE IF NOT EXISTS card_guide_mesure_questions (
  id                INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
  card_id           VARCHAR(20)  NOT NULL,
  metric            VARCHAR(40)  NOT NULL,
  label             VARCHAR(255) NOT NULL,
  type              ENUM('number','boolean','select') NOT NULL DEFAULT 'number',
  options_json      TEXT         NULL,      -- ex: ["Oui","Mitigé","Non"] si type=select
  unit              VARCHAR(20)  NULL,      -- ex: "/10"
  cadence_jours     SMALLINT UNSIGNED NOT NULL DEFAULT 7,
  depends_on_metric VARCHAR(40)  NULL,
  sort_order        SMALLINT     NOT NULL DEFAULT 0,
  FOREIGN KEY (card_id) REFERENCES card_guide(card_id) ON DELETE CASCADE,
  INDEX idx_gmesureq_card (card_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- ── 3. Échéances de relevé, par action ET par métrique ───────────────────────
CREATE TABLE IF NOT EXISTS action_impact_schedule (
  id          VARCHAR(40)  NOT NULL PRIMARY KEY,
  action_id   VARCHAR(40)  NOT NULL,
  metric      VARCHAR(40)  NOT NULL,
  next_at     DATE         NOT NULL,
  created_at  DATETIME     NOT NULL DEFAULT CURRENT_TIMESTAMP,
  UNIQUE KEY uq_schedule (action_id, metric),
  FOREIGN KEY (action_id) REFERENCES actions(id) ON DELETE CASCADE,
  INDEX idx_schedule_next (next_at)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- ── 4. actions.impact_next_at devient obsolète (remplacée par la table ci-dessus) ──
-- Plus lue nulle part côté back (cron + api/impact.php basculent sur
-- action_impact_schedule) ni côté front : suppression plutôt que dépréciation.
ALTER TABLE actions DROP COLUMN impact_next_at;
