add new proofsystem

This commit is contained in:
rodrigo committed 2025-07-27 19:20:10 -03:00
1 parent a63aaeb655
commit 2399cb1f2d
11 files changed
+2009 -6

No files matched your search

@@ -0,0 +1,57 @@
-- Migration para sistema de captura web de provas
-- NÃO RESETAR O BANCO DE DADOS - apenas adicionar nova tabela
-- Criar tabela para sessões de captura web
CREATE TABLE IF NOT EXISTS "web_proof_sessions" (
"id" TEXT NOT NULL,
"sessionId" TEXT NOT NULL UNIQUE,
"targetUrl" TEXT NOT NULL,
"description" TEXT,
"status" TEXT NOT NULL DEFAULT 'PENDENTE',
"metadata" JSONB,
"environment" JSONB,
"screenshots" TEXT[],
"sessionHash" TEXT,
"contentHash" TEXT,
"pageHash" TEXT,
"reportPath" TEXT,
"networkData" JSONB,
"trustedTimestamp" TEXT,
"error" TEXT,
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updatedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
"processedAt" TIMESTAMP(3),
CONSTRAINT "web_proof_sessions_pkey" PRIMARY KEY ("id")
);
-- Criar índices para otimização de consultas
CREATE INDEX IF NOT EXISTS "web_proof_sessions_sessionId_idx" ON "web_proof_sessions"("sessionId");
CREATE INDEX IF NOT EXISTS "web_proof_sessions_status_idx" ON "web_proof_sessions"("status");
CREATE INDEX IF NOT EXISTS "web_proof_sessions_createdAt_idx" ON "web_proof_sessions"("createdAt");
CREATE INDEX IF NOT EXISTS "web_proof_sessions_contentHash_idx" ON "web_proof_sessions"("contentHash");
-- Adicionar trigger para atualizar updatedAt automaticamente
CREATE OR REPLACE FUNCTION update_web_proof_sessions_updated_at()
RETURNS TRIGGER AS $$
BEGIN
NEW."updatedAt" = CURRENT_TIMESTAMP;
RETURN NEW;
END;
$$ language 'plpgsql';
CREATE TRIGGER update_web_proof_sessions_updated_at
BEFORE UPDATE ON "web_proof_sessions"
FOR EACH ROW
EXECUTE FUNCTION update_web_proof_sessions_updated_at();
-- Adicionar comentários para documentação
COMMENT ON TABLE "web_proof_sessions" IS 'Tabela para armazenar sessões de captura de provas web forenses';
COMMENT ON COLUMN "web_proof_sessions"."sessionId" IS 'Identificador único da sessão de captura';
COMMENT ON COLUMN "web_proof_sessions"."targetUrl" IS 'URL alvo que foi capturada';
COMMENT ON COLUMN "web_proof_sessions"."metadata" IS 'Metadados técnicos coletados durante a captura';
COMMENT ON COLUMN "web_proof_sessions"."environment" IS 'Informações do ambiente isolado de captura';
COMMENT ON COLUMN "web_proof_sessions"."sessionHash" IS 'Hash SHA-256 da sessão para verificação de integridade';
COMMENT ON COLUMN "web_proof_sessions"."contentHash" IS 'Hash SHA-256 do conteúdo capturado';
COMMENT ON COLUMN "web_proof_sessions"."pageHash" IS 'Hash SHA-512 da página específica';
COMMENT ON COLUMN "web_proof_sessions"."trustedTimestamp" IS 'Timestamp de autoridade certificadora confiável';
+27
View File
@@ -1067,3 +1067,30 @@ model CalculoPensaoAlimenticia {
@@map("calculos_pensao_alimenticia")
}
model WebProofSession {
id String @id @default(cuid())
sessionId String @unique
targetUrl String
description String?
status String @default("PENDENTE")
metadata Json?
environment Json?
screenshots String[]
sessionHash String?
contentHash String?
pageHash String?
reportPath String?
networkData Json?
trustedTimestamp String?
error String?
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
processedAt DateTime?
@@index([sessionId])
@@index([status])
@@index([createdAt])
@@index([contentHash])
@@map("web_proof_sessions")
}