-- Tables: Dev / Tracking
-- Gerado automaticamente em 2026-05-11T16:53:50.930Z
-- Total: 10

CREATE TABLE public.dev_auditoria_items (
    id bigint NOT NULL,
    categoria character varying(120),
    titulo text NOT NULL,
    descricao_problema text,
    solucao text,
    severidade character varying(20),
    status character varying(20) DEFAULT 'aberto'::character varying NOT NULL,
    resolvido_em date,
    sessao_resolucao character varying(160),
    arquivo_afetado text,
    tags text[] DEFAULT '{}'::text[],
    created_at timestamp with time zone DEFAULT now() NOT NULL,
    updated_at timestamp with time zone DEFAULT now() NOT NULL,
    ordem integer DEFAULT 0 NOT NULL,
    CONSTRAINT dev_auditoria_items_severidade_check CHECK (((severidade IS NULL) OR ((severidade)::text = ANY ((ARRAY['critico'::character varying, 'alto'::character varying, 'medio'::character varying, 'baixo'::character varying])::text[])))),
    CONSTRAINT dev_auditoria_items_status_check CHECK (((status)::text = ANY ((ARRAY['aberto'::character varying, 'em_analise'::character varying, 'resolvido'::character varying, 'wontfix'::character varying, 'duplicado'::character varying])::text[])))
);

CREATE TABLE public.dev_comparison_competitor_status (
    id bigint NOT NULL,
    comparison_id bigint NOT NULL,
    competitor_id bigint NOT NULL,
    status character varying(20) DEFAULT 'a_definir'::character varying NOT NULL,
    nota text,
    fonte character varying(20),
    created_at timestamp with time zone DEFAULT now() NOT NULL,
    updated_at timestamp with time zone DEFAULT now() NOT NULL,
    CONSTRAINT dev_comparison_competitor_status_fonte_check CHECK (((fonte IS NULL) OR ((fonte)::text = ANY ((ARRAY['fetched'::character varying, 'observacao'::character varying, 'publico'::character varying, 'hipotese'::character varying])::text[])))),
    CONSTRAINT dev_comparison_competitor_status_status_check CHECK (((status)::text = ANY ((ARRAY['tem'::character varying, 'parcial'::character varying, 'gap'::character varying, 'na'::character varying, 'a_definir'::character varying])::text[])))
);

CREATE TABLE public.dev_comparison_matrix (
    id bigint NOT NULL,
    dominio character varying(120),
    feature text NOT NULL,
    nosso_status character varying(20) DEFAULT 'a_definir'::character varying NOT NULL,
    nossa_nota text,
    importancia character varying(20),
    ordem integer DEFAULT 0 NOT NULL,
    created_at timestamp with time zone DEFAULT now() NOT NULL,
    updated_at timestamp with time zone DEFAULT now() NOT NULL,
    CONSTRAINT dev_comparison_matrix_importancia_check CHECK (((importancia IS NULL) OR ((importancia)::text = ANY ((ARRAY['alta'::character varying, 'media'::character varying, 'baixa'::character varying])::text[])))),
    CONSTRAINT dev_comparison_matrix_nosso_status_check CHECK (((nosso_status)::text = ANY ((ARRAY['tem'::character varying, 'parcial'::character varying, 'gap'::character varying, 'na'::character varying, 'a_definir'::character varying])::text[])))
);

CREATE TABLE public.dev_competitor_features (
    id bigint NOT NULL,
    competitor_id bigint NOT NULL,
    categoria character varying(120),
    nome text NOT NULL,
    descricao text,
    fonte character varying(20) DEFAULT 'publico'::character varying NOT NULL,
    fonte_url text,
    data_fonte date,
    destaque boolean DEFAULT false NOT NULL,
    created_at timestamp with time zone DEFAULT now() NOT NULL,
    updated_at timestamp with time zone DEFAULT now() NOT NULL,
    ordem integer DEFAULT 0 NOT NULL,
    CONSTRAINT dev_competitor_features_fonte_check CHECK (((fonte)::text = ANY ((ARRAY['fetched'::character varying, 'observacao'::character varying, 'publico'::character varying, 'hipotese'::character varying])::text[])))
);

CREATE TABLE public.dev_competitors (
    id bigint NOT NULL,
    slug character varying(80) NOT NULL,
    nome character varying(160) NOT NULL,
    pais character varying(40),
    foco character varying(160),
    pricing text,
    posicionamento text,
    url text,
    ultima_pesquisa date,
    notas text,
    ativo boolean DEFAULT true NOT NULL,
    ordem integer DEFAULT 0 NOT NULL,
    created_at timestamp with time zone DEFAULT now() NOT NULL,
    updated_at timestamp with time zone DEFAULT now() NOT NULL
);

CREATE TABLE public.dev_generation_log (
    id bigint NOT NULL,
    tipo character varying(40) NOT NULL,
    comando text,
    sucesso boolean DEFAULT false NOT NULL,
    stdout text,
    stderr text,
    duration_ms integer,
    metadata jsonb DEFAULT '{}'::jsonb,
    trigger_user_id uuid,
    created_at timestamp with time zone DEFAULT now() NOT NULL
);

CREATE TABLE public.dev_roadmap_items (
    id bigint NOT NULL,
    phase_id bigint NOT NULL,
    numero integer,
    bloco character varying(160),
    feature text NOT NULL,
    descricao text,
    esforco character varying(4),
    prioridade character varying(20),
    status character varying(20) DEFAULT 'pendente'::character varying NOT NULL,
    notas text,
    assignee character varying(120),
    data_inicio date,
    data_conclusao date,
    ordem integer DEFAULT 0 NOT NULL,
    tags text[] DEFAULT '{}'::text[],
    created_at timestamp with time zone DEFAULT now() NOT NULL,
    updated_at timestamp with time zone DEFAULT now() NOT NULL,
    CONSTRAINT dev_roadmap_items_esforco_check CHECK (((esforco IS NULL) OR ((esforco)::text = ANY ((ARRAY['S'::character varying, 'M'::character varying, 'L'::character varying, 'XL'::character varying])::text[])))),
    CONSTRAINT dev_roadmap_items_prioridade_check CHECK (((prioridade IS NULL) OR ((prioridade)::text = ANY ((ARRAY['bloqueador'::character varying, 'alta'::character varying, 'media'::character varying, 'diferencial'::character varying])::text[])))),
    CONSTRAINT dev_roadmap_items_status_check CHECK (((status)::text = ANY ((ARRAY['pendente'::character varying, 'em_andamento'::character varying, 'concluido'::character varying, 'cancelado'::character varying, 'bloqueado'::character varying])::text[])))
);

CREATE TABLE public.dev_roadmap_phases (
    id bigint NOT NULL,
    numero integer NOT NULL,
    nome character varying(160) NOT NULL,
    objetivo text,
    timeline_sugerida character varying(160),
    criterio_saida text,
    status character varying(20) DEFAULT 'planejada'::character varying NOT NULL,
    data_inicio date,
    data_fim date,
    ordem integer DEFAULT 0 NOT NULL,
    created_at timestamp with time zone DEFAULT now() NOT NULL,
    updated_at timestamp with time zone DEFAULT now() NOT NULL,
    CONSTRAINT dev_roadmap_phases_status_check CHECK (((status)::text = ANY ((ARRAY['planejada'::character varying, 'em_andamento'::character varying, 'concluida'::character varying, 'arquivada'::character varying])::text[])))
);

CREATE TABLE public.dev_test_items (
    id bigint NOT NULL,
    area character varying(80) NOT NULL,
    categoria character varying(120),
    titulo text NOT NULL,
    arquivo text,
    descricao text,
    total_tests integer DEFAULT 0,
    passing integer DEFAULT 0,
    failing integer DEFAULT 0,
    skipped integer DEFAULT 0,
    cobertura_pct numeric(5,2),
    status character varying(20) DEFAULT 'ok'::character varying NOT NULL,
    last_run_at timestamp with time zone,
    sessao_criacao character varying(160),
    notas text,
    tags text[] DEFAULT '{}'::text[],
    ordem integer DEFAULT 0 NOT NULL,
    created_at timestamp with time zone DEFAULT now() NOT NULL,
    updated_at timestamp with time zone DEFAULT now() NOT NULL,
    CONSTRAINT dev_test_items_status_check CHECK (((status)::text = ANY ((ARRAY['ok'::character varying, 'falhando'::character varying, 'pendente'::character varying, 'obsoleto'::character varying, 'a_escrever'::character varying])::text[])))
);

CREATE TABLE public.dev_verificacoes_items (
    id bigint NOT NULL,
    area character varying(80) NOT NULL,
    categoria character varying(120),
    titulo text NOT NULL,
    descricao text,
    resultado text,
    acao_sugerida text,
    severidade character varying(20),
    status character varying(20) DEFAULT 'pendente'::character varying NOT NULL,
    verificado_em date,
    sessao_verificacao character varying(160),
    arquivo_afetado text,
    auditoria_item_id bigint,
    tags text[] DEFAULT '{}'::text[],
    ordem integer DEFAULT 0 NOT NULL,
    created_at timestamp with time zone DEFAULT now() NOT NULL,
    updated_at timestamp with time zone DEFAULT now() NOT NULL,
    CONSTRAINT dev_verificacoes_items_severidade_check CHECK (((severidade IS NULL) OR ((severidade)::text = ANY ((ARRAY['critico'::character varying, 'alto'::character varying, 'medio'::character varying, 'baixo'::character varying])::text[])))),
    CONSTRAINT dev_verificacoes_items_status_check CHECK (((status)::text = ANY ((ARRAY['pendente'::character varying, 'verificando'::character varying, 'ok'::character varying, 'problema'::character varying, 'corrigido'::character varying, 'wontfix'::character varying])::text[])))
);
