// Adicionar ao schema.prisma existente (não substitui) model SessaoNavegacao { id String @id @default(dbgenerated("gen_random_uuid()")) @db.Uuid titulo String descricao String? status StatusSessao @default(INICIADA) usuarioId String @db.Uuid usuario Usuario @relation(fields: [usuarioId], references: [id]) // Dados da sessão sessionKey String @unique browserFingerprint Json inicioSessao DateTime @default(now()) fimSessao DateTime? duracaoSegundos Int? // Arquivos gerados videoPath String? screenshotsPaths String[] metadataPath String? relatorioPdfPath String? // Hashes e validação checksumVideo String? checksumMetadata String? timestampProof String? // Navegação registrada acoes AcaoNavegacao[] capturas CapturaNavegacao[] criadoEm DateTime @default(now()) atualizadoEm DateTime @updatedAt @@map("sessoes_navegacao") } model AcaoNavegacao { id String @id @default(dbgenerated("gen_random_uuid()")) @db.Uuid sessaoId String @db.Uuid sessao SessaoNavegacao @relation(fields: [sessaoId], references: [id], onDelete: Cascade) timestamp DateTime tipo TipoAcao url String? elemento String? coordenadas Json? valor String? screenshot String? metadados Json criadoEm DateTime @default(now()) @@map("acoes_navegacao") } model CapturaNavegacao { id String @id @default(dbgenerated("gen_random_uuid()")) @db.Uuid sessaoId String @db.Uuid sessao SessaoNavegacao @relation(fields: [sessaoId], references: [id], onDelete: Cascade) timestamp DateTime url String titulo String? screenshotPath String htmlContent String? checksumHtml String? checksumScreenshot String // Metadados da página networkRequests Json[] cookies Json[] localStorage Json? sessionStorage Json? criadoEm DateTime @default(now()) @@map("capturas_navegacao") } enum StatusSessao { INICIADA EM_ANDAMENTO FINALIZANDO CONCLUIDA ERRO CANCELADA } enum TipoAcao { NAVEGACAO CLIQUE DIGITACAO SCROLL HOVER DOWNLOAD FORMULARIO POPUP REDIRECT } // Adicionar relação ao modelo Usuario existente // Usuario { // sessoesNavegacao SessaoNavegacao[] // }