From d5d066f44a67a28d6a1f397f0f9100df16a7e4d5 Mon Sep 17 00:00:00 2001 From: "Rodrigo B. de Sousa Martins" Date: Sun, 27 Jul 2025 19:24:09 -0300 Subject: [PATCH] add new proofsystem --- package.json | 44 +++++++------- .../migrations/create_web_proof_sessions.sql | 57 ------------------- 2 files changed, 24 insertions(+), 77 deletions(-) delete mode 100644 prisma/migrations/create_web_proof_sessions.sql diff --git a/package.json b/package.json index ae39d83..a050ea2 100644 --- a/package.json +++ b/package.json @@ -20,7 +20,12 @@ "create-admin": "ts-node scripts/create_admin_user.ts", "worker": "ts-node src/workers/startWorker.ts", "install-deps": "npm install ua-parser-js uuid axios xlsx html2canvas puppeteer-core chrome-aws-lambda jspdf canvas ws socket.io socket.io-client", - "install-web-proof-deps": "npm install html2canvas puppeteer-core chrome-aws-lambda jspdf canvas node-html-to-image playwright ws socket.io socket.io-client" + "install-web-proof-deps": "npm install html2canvas puppeteer-core chrome-aws-lambda jspdf canvas node-html-to-image playwright ws socket.io socket.io-client", + "prisma:resolve-migration": "npx prisma migrate resolve --applied", + "prisma:sync-schema": "npx prisma db push && npx prisma generate", + "prisma:reset-migrations": "npx prisma migrate reset --force", + "prisma:fix-manual-migration": "npx prisma migrate status && npx prisma db push && npx prisma generate", + "prisma:mark-applied": "npx prisma migrate resolve --applied" }, "dependencies": { "@emotion/react": "^11.11.3", @@ -51,8 +56,7 @@ "opentimestamps-javascript": "^1.0.1", "pdf-lib": "^1.17.1", "html2canvas": "^1.4.1", - "puppeteer-core": "^21.11.0", - "chrome-aws-lambda": "^10.1.0", + "puppeteer-core": "^24.15.0", "jspdf": "^2.5.1", "canvas": "^3.1.2", "screenshot-desktop": "^1.12.7", @@ -96,34 +100,34 @@ "@vitejs/plugin-react": "^4.3.4", "autoprefixer": "^10.4.17", "concurrently": "^9.1.2", - "eslint": "^9.23.0", - "eslint-config-prettier": "^10.1.1", - "eslint-plugin-prettier": "^5.2.5", - "eslint-plugin-react": "^7.37.4", - "eslint-plugin-react-hooks": "^5.2.0", - "postcss": "^8.4.33", + "eslint": "^9.23.0",er": "^5.2.5", + "eslint-plugin-react-hooks": "^5.2.0",: "^7.37.4", + "postcss": "^8.4.33",t-hooks": "^5.2.0", "prettier": "^3.5.3", "prisma": "^6.5.0", "tailwindcss": "^3.4.1", - "ts-node": "^10.9.2", + "ts-node": "^10.9.2",3.4.1", "typescript": "^5.8.2", "vite": "^6.2.4", "@types/html2canvas": "^1.0.0", - "@types/canvas": "^2.11.6", - "@types/node-html-to-image": "^4.0.0" - }, + "@types/canvas": "^2.11.6","@types/html2canvas": "^1.0.0", + "@types/node-html-to-image": "^4.0.0"anvas": "^2.11.6", + },.0.0" "prisma": { "seed": "ts-node prisma/seed.ts" - }, + },prisma/seed.ts" "puppeteer": { "headless": true, "args": [ "--no-sandbox", "--disable-setuid-sandbox", - "--disable-dev-shm-usage", - "--disable-accelerated-2d-canvas", - "--disable-gpu", - "--window-size=1920x1080" - ] - } + "--disable-dev-shm-usage",d-sandbox", + "--disable-accelerated-2d-canvas",, + "--disable-gpu", "--disable-accelerated-2d-canvas", + "--window-size=1920x1080" "--disable-gpu", + ] "--window-size=1920x1080" + } ] + + +} } } diff --git a/prisma/migrations/create_web_proof_sessions.sql b/prisma/migrations/create_web_proof_sessions.sql deleted file mode 100644 index 622801f..0000000 --- a/prisma/migrations/create_web_proof_sessions.sql +++ /dev/null @@ -1,57 +0,0 @@ --- 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';