-- Migration : workflow Prévenance PCT (gate confirmation + tracker)
--   - patch_planning_import_rows.pct_required : copie au moment de l'import (auto-détecté
--     à partir du contenu des colonnes texte référent_technique / mode_operatoire / impacts).
--   - patch_planning_import_rows.pct_confirmed_at : timestamp de confirmation par l'opérateur
--     avant le démarrage patching.
--   - patch_planning_import_rows.pct_confirmed_by_user_id : qui a confirmé.
--   - Backfill : pour les rows existantes, init pct_required depuis servers.pct_required.
-- Idempotent.

ALTER TABLE public.patch_planning_import_rows
    ADD COLUMN IF NOT EXISTS pct_required             boolean NOT NULL DEFAULT false,
    ADD COLUMN IF NOT EXISTS pct_confirmed_at         timestamptz,
    ADD COLUMN IF NOT EXISTS pct_confirmed_by_user_id integer REFERENCES public.users(id) ON DELETE SET NULL;

-- Backfill : récupère pct_required du serveur lié pour les rows déjà importées
UPDATE public.patch_planning_import_rows r
   SET pct_required = COALESCE(s.pct_required, false)
  FROM public.servers s
 WHERE r.server_id = s.id
   AND r.pct_required = false
   AND COALESCE(s.pct_required, false) = true;

CREATE INDEX IF NOT EXISTS idx_pp_rows_pct_pending
    ON public.patch_planning_import_rows(pct_required)
    WHERE pct_required = true AND pct_confirmed_at IS NULL;
