-- Criar enums CREATE TYPE "NaturezaProcesso" AS ENUM ( 'CIVEL', 'CRIMINAL', 'PREVIDENCIARIO', 'TRABALHISTA', 'FAMILIA', 'TRIBUTARIO', 'ADMINISTRATIVO' ); CREATE TYPE "TipoParte" AS ENUM ( 'AUTOR', 'REU' ); CREATE TYPE "StatusProcesso" AS ENUM ( 'INICIAL', 'EM_ANDAMENTO', 'SUSPENSO', 'RECURSO', 'CONCLUSO', 'ARQUIVADO' ); CREATE TYPE "TipoDiligencia" AS ENUM ( 'CITACAO', 'INTIMACAO', 'NOTIFICACAO', 'PERICIA', 'OFICIAL_JUSTICA', 'CARTA_PRECATORIA', 'OUTROS' ); CREATE TYPE "TipoAudiencia" AS ENUM ( 'CONCILIACAO', 'INSTRUCAO', 'INICIAL', 'JULGAMENTO', 'MEDIACAO' ); -- Alterar a tabela de processos existente ALTER TABLE "processos" ADD COLUMN IF NOT EXISTS "natureza" "NaturezaProcesso", ADD COLUMN IF NOT EXISTS "tipoParteCliente" "TipoParte", ADD COLUMN IF NOT EXISTS "valorCausa" DECIMAL(15,2), ADD COLUMN IF NOT EXISTS "orgaoJulgador" VARCHAR(100), ADD COLUMN IF NOT EXISTS "orgaoOrigem" VARCHAR(100), ADD COLUMN IF NOT EXISTS "nomeContraparte" VARCHAR(100); -- Criar nova tabela para diligências CREATE TABLE IF NOT EXISTS "diligencias" ( "id" UUID PRIMARY KEY DEFAULT gen_random_uuid(), "processoId" UUID NOT NULL, "tipo" "TipoDiligencia" NOT NULL, "descricao" TEXT NOT NULL, "dataLimite" TIMESTAMP NOT NULL, "status" VARCHAR(20) DEFAULT 'PENDENTE', "responsavel" VARCHAR(100), "observacoes" TEXT, "dataCriacao" TIMESTAMP DEFAULT CURRENT_TIMESTAMP, FOREIGN KEY ("processoId") REFERENCES "processos"("id") ON DELETE CASCADE ); -- Criar nova tabela para audiências CREATE TABLE IF NOT EXISTS "audiencias" ( "id" UUID PRIMARY KEY DEFAULT gen_random_uuid(), "processoId" UUID NOT NULL, "tipo" "TipoAudiencia" NOT NULL, "data" TIMESTAMP NOT NULL, "local" VARCHAR(200) NOT NULL, "modalidade" VARCHAR(20) DEFAULT 'PRESENCIAL', "linkVirtual" TEXT, "observacoes" TEXT, "status" VARCHAR(20) DEFAULT 'AGENDADA', "dataCriacao" TIMESTAMP DEFAULT CURRENT_TIMESTAMP, FOREIGN KEY ("processoId") REFERENCES "processos"("id") ON DELETE CASCADE ); -- Criar nova tabela para movimentações CREATE TABLE IF NOT EXISTS "movimentacoes" ( "id" UUID PRIMARY KEY DEFAULT gen_random_uuid(), "processoId" UUID NOT NULL, "data" TIMESTAMP NOT NULL, "descricao" TEXT NOT NULL, "tipo" VARCHAR(50) NOT NULL, "documento" TEXT, "dataCriacao" TIMESTAMP DEFAULT CURRENT_TIMESTAMP, FOREIGN KEY ("processoId") REFERENCES "processos"("id") ON DELETE CASCADE ); -- Adicionar índices para melhor performance CREATE INDEX IF NOT EXISTS "idx_processo_numero" ON "processos"("numero"); CREATE INDEX IF NOT EXISTS "idx_diligencias_data" ON "diligencias"("dataLimite"); CREATE INDEX IF NOT EXISTS "idx_audiencias_data" ON "audiencias"("data"); CREATE INDEX IF NOT EXISTS "idx_movimentacoes_data" ON "movimentacoes"("data");