-- ============================================================================= -- Migration: 20260419000002_features_is_active -- V#40 — features hard-deleted: adiciona is_active para soft-delete. -- -- Estratégia conservadora: -- - features.is_active boolean DEFAULT true NOT NULL -- - SaasFeaturesPage substitui DELETE por UPDATE is_active=false -- - Views que expõem features para o app (v_tenant_entitlements etc) NÃO são -- alteradas: features depreciadas ainda servem tenants legados via plan_features -- enquanto não houver migração explícita -- - Permite reativar feature acidentalmente deprecada -- ============================================================================= ALTER TABLE public.features ADD COLUMN IF NOT EXISTS is_active boolean NOT NULL DEFAULT true; CREATE INDEX IF NOT EXISTS idx_features_is_active ON public.features (is_active) WHERE is_active = false; COMMENT ON COLUMN public.features.is_active IS 'V#40: false = feature depreciada, escondida no catálogo SaaS mas continua válida em planos/tenants existentes.';