-- 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[]))) );