-- =============================================================================
-- Migration: 20260418000001_dev_verificacoes
-- Nova aba "Verificações" em /saas/desenvolvimento
-- -----------------------------------------------------------------------------
-- Diferente de dev_auditoria_items (bugs conhecidos), esta tabela registra o
-- PROCESSO de revisão sênior sessão-a-sessão: o que já foi olhado, o que falta
-- olhar, o que foi encontrado em cada área do sistema.
-- =============================================================================

CREATE TABLE IF NOT EXISTS public.dev_verificacoes_items (
  id                 BIGSERIAL PRIMARY KEY,
  area               VARCHAR(80)  NOT NULL,
  categoria          VARCHAR(120),
  titulo             TEXT         NOT NULL,
  descricao          TEXT,
  resultado          TEXT,
  acao_sugerida      TEXT,
  severidade         VARCHAR(20)
                       CHECK (severidade IS NULL OR severidade IN ('critico','alto','medio','baixo')),
  status             VARCHAR(20)  NOT NULL DEFAULT 'pendente'
                       CHECK (status IN ('pendente','verificando','ok','problema','corrigido','wontfix')),
  verificado_em      DATE,
  sessao_verificacao VARCHAR(160),
  arquivo_afetado    TEXT,
  auditoria_item_id  BIGINT       REFERENCES public.dev_auditoria_items(id) ON DELETE SET NULL,
  tags               TEXT[]       DEFAULT '{}',
  ordem              INTEGER      NOT NULL DEFAULT 0,
  created_at         TIMESTAMPTZ  NOT NULL DEFAULT now(),
  updated_at         TIMESTAMPTZ  NOT NULL DEFAULT now()
);

CREATE INDEX IF NOT EXISTS idx_dev_verificacoes_area       ON public.dev_verificacoes_items(area);
CREATE INDEX IF NOT EXISTS idx_dev_verificacoes_status     ON public.dev_verificacoes_items(status);
CREATE INDEX IF NOT EXISTS idx_dev_verificacoes_severidade ON public.dev_verificacoes_items(severidade);
CREATE INDEX IF NOT EXISTS idx_dev_verificacoes_ordem      ON public.dev_verificacoes_items(area, ordem);

DROP TRIGGER IF EXISTS trg_dev_verificacoes_updated_at ON public.dev_verificacoes_items;
CREATE TRIGGER trg_dev_verificacoes_updated_at
  BEFORE UPDATE ON public.dev_verificacoes_items
  FOR EACH ROW EXECUTE FUNCTION public.dev_set_updated_at();

ALTER TABLE public.dev_verificacoes_items ENABLE ROW LEVEL SECURITY;
DROP POLICY IF EXISTS dev_verificacoes_items_saas_admin_all ON public.dev_verificacoes_items;
CREATE POLICY dev_verificacoes_items_saas_admin_all ON public.dev_verificacoes_items
  FOR ALL TO authenticated
  USING (public.is_saas_admin())
  WITH CHECK (public.is_saas_admin());

COMMENT ON TABLE  public.dev_verificacoes_items IS 'Revisão sênior por área/sessão — o que foi verificado e o que foi encontrado.';
COMMENT ON COLUMN public.dev_verificacoes_items.area IS 'Domínio revisado: auth, router, agenda, financeiro, pacientes, comunicacao, etc.';
COMMENT ON COLUMN public.dev_verificacoes_items.auditoria_item_id IS 'Link opcional: se a verificação virou um bug em dev_auditoria_items.';
