-- =============================================================================
-- Migración:    0035_rename_estado_firmado_a_vigente
-- Sprint:       1.5a-fixes-2 · Bug #15
-- Tabla:        contratos (ALTER + UPDATE)
-- Aplica en:    BD de cada tenant (innovium_<slug>)
--
-- Descripción:
--   "Firmado" suena a estado FINAL, pero en negocio funerario el
--   estado final es 'completado' (servicio realizado). El estado
--   inmediato post-firma es VIGENTE (contrato firmado, servicio en
--   curso). Se renombra 'firmado' → 'vigente'.
--
-- Estrategia:
--   1. Ampliar el ENUM para que incluya 'vigente' coexistiendo con
--      'firmado' (no se puede tener un valor sin que esté en el ENUM).
--   2. UPDATE: migrar todas las filas con estado='firmado' a 'vigente'.
--   3. Default cambia a 'vigente'.
--
--   El valor 'firmado' queda en el ENUM por backwards-compat (no rompe
--   queries que esperan ese valor durante el deploy). Se eliminará
--   en una migration futura del Sprint 2.x cuando ya no haya código
--   que lo escriba.
--
-- Sin downtime: ALTER MODIFY COLUMN sobre ENUM con todos los valores
-- viejos + nuevos NO bloquea writes (MySQL hace metadata-only change
-- cuando se cumplen las condiciones de online DDL).
-- =============================================================================

ALTER TABLE contratos
    MODIFY COLUMN estado ENUM('vigente', 'completado', 'anulado', 'firmado')
                  NOT NULL DEFAULT 'vigente'
                  COMMENT 'vigente=firmado, en curso. completado=servicio realizado. anulado=cancelado.';

UPDATE contratos SET estado = 'vigente' WHERE estado = 'firmado';
