diff --git a/package.json b/package.json index ae39d83..3f9cd10 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", @@ -97,9 +101,6 @@ "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", "prettier": "^3.5.3", 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';