1097 lines
35 KiB
Plaintext
1097 lines
35 KiB
Plaintext
datasource db {
|
|
provider = "postgresql"
|
|
url = env("DATABASE_URL")
|
|
}
|
|
|
|
generator client {
|
|
provider = "prisma-client-js"
|
|
}
|
|
|
|
enum PerfilUsuario {
|
|
ADVOGADO_ADMIN
|
|
ADVOGADO
|
|
ASSISTENTE
|
|
ESTAGIARIO
|
|
}
|
|
|
|
model Usuario {
|
|
id String @id @default(dbgenerated("gen_random_uuid()")) @db.Uuid
|
|
nome String @db.VarChar(100)
|
|
email String @unique @db.VarChar(100)
|
|
senha String @db.VarChar(100)
|
|
perfil PerfilUsuario @default(ADVOGADO)
|
|
cpf String? @db.VarChar(14)
|
|
rg String? @db.VarChar(20)
|
|
oab String? @db.VarChar(20)
|
|
oabUF String? @db.VarChar(2)
|
|
telefone String? @db.VarChar(15)
|
|
endereco String? @db.VarChar(200)
|
|
numero String? @db.VarChar(10)
|
|
complemento String? @db.VarChar(100)
|
|
bairro String? @db.VarChar(100)
|
|
cidade String? @db.VarChar(100)
|
|
estado String? @db.VarChar(2)
|
|
cep String? @db.VarChar(9)
|
|
ativo Boolean @default(true)
|
|
dataCriacao DateTime @default(now())
|
|
atendimentos Atendimento[]
|
|
agendamentos AgendamentoAtendimento[]
|
|
|
|
// Adicionar estas relações
|
|
tarefasResponsavel Tarefa[] @relation("tarefasResponsavel")
|
|
tarefasCriadas Tarefa[] @relation("tarefasCriadas")
|
|
comentarios Comentario[]
|
|
documentos Documento[]
|
|
|
|
// Adicionar relações para cálculos judiciais
|
|
calculos CalculoJudicial[]
|
|
historicoCalculos HistoricoCalculo[]
|
|
exportacoes ExportacaoCalculo[]
|
|
|
|
// Adicionar relação para cálculos de pensão alimentícia
|
|
calculosPensaoAlimenticia CalculoPensaoAlimenticia[]
|
|
|
|
@@map("usuarios")
|
|
}
|
|
|
|
model Cliente {
|
|
id String @id @default(dbgenerated("gen_random_uuid()")) @db.Uuid
|
|
nome String @db.VarChar(100)
|
|
email String @db.VarChar(100)
|
|
cpfCnpj String @unique @db.VarChar(18)
|
|
rg String? @db.VarChar(20)
|
|
orgaoEmissor String? @db.VarChar(10)
|
|
estadoRg String? @db.Char(2)
|
|
usaDNI Boolean @default(false)
|
|
possuiFilhos Boolean @default(false)
|
|
telefone String @db.VarChar(20)
|
|
instagram String? @db.VarChar(50)
|
|
dataNascimento DateTime? @db.Date
|
|
|
|
// Endereço
|
|
cep String @db.VarChar(9)
|
|
endereco String @db.VarChar(150)
|
|
numero String @db.VarChar(10)
|
|
complemento String? @db.VarChar(50)
|
|
bairro String @db.VarChar(100)
|
|
cidade String @db.VarChar(100)
|
|
estado String @db.Char(2)
|
|
|
|
// Informações Pessoais
|
|
estadoCivil String? @db.VarChar(20)
|
|
profissao String? @db.VarChar(100)
|
|
|
|
// Informações Financeiras
|
|
vinculoEmpregaticio String? @db.VarChar(50)
|
|
renda Decimal? @db.Decimal(10, 2)
|
|
declaraIR Boolean @default(false)
|
|
tipoPrevidencia String? @default("NAO_CONTRIBUI") @db.VarChar(20)
|
|
contribuiPrevidencia Boolean @default(false)
|
|
|
|
// Filiação
|
|
nomePai String? @db.VarChar(100)
|
|
nomeMae String? @db.VarChar(100)
|
|
conjugeNome String? @db.VarChar(100)
|
|
conjugeCpf String? @db.VarChar(14)
|
|
|
|
processos Processo[]
|
|
processosAdministrativos ProcessoAdministrativo[]
|
|
filhos Filho[]
|
|
partesProcesso ParteProcesso[]
|
|
dataCriacao DateTime @default(now())
|
|
atendimentos Atendimento[]
|
|
agendamentos AgendamentoAtendimento[]
|
|
tarefas Tarefa[]
|
|
|
|
// Adicionar relação para cálculos judiciais
|
|
calculos CalculoJudicial[]
|
|
|
|
// Adicionar relação para cálculos de pensão alimentícia
|
|
calculosPensaoAlimenticia CalculoPensaoAlimenticia[]
|
|
|
|
@@map("clientes")
|
|
}
|
|
|
|
model Filho {
|
|
id String @id @default(dbgenerated("gen_random_uuid()")) @db.Uuid
|
|
nome String
|
|
dataNascimento DateTime
|
|
clienteId String @db.Uuid
|
|
cliente Cliente @relation(fields: [clienteId], references: [id])
|
|
|
|
@@map("filhos")
|
|
}
|
|
|
|
enum NaturezaProcesso {
|
|
CIVEL
|
|
CRIMINAL
|
|
PREVIDENCIARIO
|
|
TRABALHISTA
|
|
FAMILIA
|
|
TRIBUTARIO
|
|
ADMINISTRATIVO
|
|
}
|
|
|
|
enum TipoParte {
|
|
AUTOR
|
|
REU
|
|
}
|
|
|
|
enum StatusProcesso {
|
|
INICIAL
|
|
EM_ANDAMENTO
|
|
SUSPENSO
|
|
RECURSO
|
|
CONCLUSO
|
|
ARQUIVADO
|
|
}
|
|
|
|
enum TipoDiligencia {
|
|
CITACAO
|
|
INTIMACAO
|
|
NOTIFICACAO
|
|
PERICIA
|
|
OFICIAL_JUSTICA
|
|
CARTA_PRECATORIA
|
|
OUTROS
|
|
}
|
|
|
|
enum TipoAudiencia {
|
|
CONCILIACAO
|
|
INSTRUCAO
|
|
INICIAL
|
|
JULGAMENTO
|
|
MEDIACAO
|
|
}
|
|
|
|
enum StatusAtividade {
|
|
ATIVO
|
|
BAIXADO
|
|
SUSPENSO
|
|
}
|
|
|
|
enum TipoParticipacao {
|
|
AUTOR
|
|
REU
|
|
TERCEIRO_INTERESSADO
|
|
}
|
|
|
|
model ParteProcesso {
|
|
id String @id @default(dbgenerated("gen_random_uuid()")) @db.Uuid
|
|
processoId String @db.Uuid
|
|
clienteId String? @db.Uuid
|
|
tipo String @db.VarChar(20)
|
|
nome String @db.VarChar(200)
|
|
cpfCnpj String? @db.VarChar(18)
|
|
principal Boolean @default(false)
|
|
observacoes String?
|
|
dataCriacao DateTime @default(now()) @db.Timestamp()
|
|
|
|
processo Processo @relation(fields: [processoId], references: [id], onDelete: Cascade)
|
|
cliente Cliente? @relation(fields: [clienteId], references: [id])
|
|
|
|
@@index([processoId])
|
|
@@index([clienteId])
|
|
}
|
|
|
|
model Processo {
|
|
id String @id @default(dbgenerated("gen_random_uuid()")) @db.Uuid
|
|
numero String @unique
|
|
natureza String
|
|
valorCausa Decimal? @db.Decimal(15, 2)
|
|
|
|
// Campos novos
|
|
tribunalUF String? @db.VarChar(20)
|
|
tribunal String? @db.VarChar(50)
|
|
numeroOriginal String? @db.VarChar(50)
|
|
|
|
// Manter campos antigos
|
|
orgaoJulgador String @db.VarChar(100)
|
|
orgaoOrigem String? @db.VarChar(100)
|
|
|
|
nomeContraparte String @db.VarChar(100)
|
|
status String @default("INICIAL") @db.VarChar(20)
|
|
statusAtividade String @default("ATIVO") @db.VarChar(20)
|
|
dataCriacao DateTime @default(now()) @db.Timestamp()
|
|
dataAtualizacao DateTime @updatedAt @db.Timestamp()
|
|
clienteId String @db.Uuid
|
|
tipoParteCliente String @db.VarChar(20)
|
|
dadosDatajud Json?
|
|
dataAjuizamento DateTime?
|
|
classeProcessual String?
|
|
assuntos String[]
|
|
nivelSigilo Int?
|
|
|
|
// Relações
|
|
cliente Cliente @relation(fields: [clienteId], references: [id])
|
|
partes ParteProcesso[]
|
|
audiencias Audiencia[]
|
|
diligencias Diligencia[]
|
|
movimentacoes Movimentacao[]
|
|
documentos Documento[]
|
|
custas CustaProcessual[]
|
|
honorarios Honorario[]
|
|
movimentacoesTribunal MovimentacaoTribunal[]
|
|
orgaoJulgadorRef OrgaoJulgador? @relation(fields: [orgaoJulgadorId], references: [id])
|
|
orgaoJulgadorId String? @db.Uuid
|
|
atendimentos Atendimento[]
|
|
tarefas Tarefa[]
|
|
|
|
// Adicionar relação para cálculos judiciais
|
|
calculos CalculoJudicial[]
|
|
|
|
// Adicionar relação para cálculos de pensão alimentícia
|
|
calculosPensaoAlimenticia CalculoPensaoAlimenticia[]
|
|
|
|
resultado ResultadoProcesso @default(NAO_JULGADO)
|
|
|
|
@@index([clienteId])
|
|
@@index([orgaoJulgadorId])
|
|
@@index([tribunal])
|
|
@@index([tribunalUF])
|
|
}
|
|
|
|
enum StatusProcessoAdministrativo {
|
|
INICIAL
|
|
EM_ANALISE
|
|
EM_RECURSO
|
|
FINALIZADO
|
|
ARQUIVADO
|
|
}
|
|
|
|
model ProcessoAdministrativo {
|
|
id String @id @default(dbgenerated("gen_random_uuid()")) @db.Uuid
|
|
numero String @unique
|
|
descricao String @db.Text
|
|
orgao String @db.VarChar(200)
|
|
clienteId String @db.Uuid
|
|
tipoParteCliente TipoParte
|
|
valorPretensao Decimal? @db.Decimal(15, 2)
|
|
status StatusProcessoAdministrativo @default(INICIAL)
|
|
resultado String? @db.VarChar(100)
|
|
observacoes String? @db.Text
|
|
dataCriacao DateTime @default(now())
|
|
dataAtualizacao DateTime @updatedAt
|
|
|
|
// Relações
|
|
cliente Cliente @relation(fields: [clienteId], references: [id])
|
|
movimentacoes MovimentacaoAdministrativa[]
|
|
documentos Documento[]
|
|
custas CustaAdministrativa[]
|
|
|
|
@@index([clienteId])
|
|
@@map("processos_administrativos")
|
|
}
|
|
|
|
model MovimentacaoAdministrativa {
|
|
id String @id @default(dbgenerated("gen_random_uuid()")) @db.Uuid
|
|
processoId String @db.Uuid
|
|
data DateTime
|
|
descricao String @db.Text
|
|
tipoMovimentacao String @db.VarChar(100)
|
|
numero String? @db.VarChar(100)
|
|
documentos String[]
|
|
observacoes String? @db.Text
|
|
dataCriacao DateTime @default(now())
|
|
|
|
processo ProcessoAdministrativo @relation(fields: [processoId], references: [id], onDelete: Cascade)
|
|
|
|
@@index([processoId])
|
|
@@map("movimentacoes_administrativas")
|
|
}
|
|
|
|
model Audiencia {
|
|
id String @id @default(dbgenerated("gen_random_uuid()")) @db.Uuid
|
|
processoId String @db.Uuid
|
|
tipo String @db.VarChar(50)
|
|
data DateTime @db.Timestamp()
|
|
local String @db.VarChar(200)
|
|
modalidade String @default("PRESENCIAL") @db.VarChar(20)
|
|
status String @default("AGENDADA") @db.VarChar(20)
|
|
linkVirtual String? @db.Text
|
|
observacoes String? @db.Text
|
|
dataCriacao DateTime @default(now()) @db.Timestamp()
|
|
processo Processo @relation(fields: [processoId], references: [id], onDelete: Cascade)
|
|
|
|
@@index([processoId])
|
|
}
|
|
|
|
model Diligencia {
|
|
id String @id @default(dbgenerated("gen_random_uuid()")) @db.Uuid
|
|
processoId String @db.Uuid
|
|
tipo String @db.VarChar(50)
|
|
descricao String @db.Text
|
|
dataLimite DateTime @db.Timestamp()
|
|
status String @default("PENDENTE") @db.VarChar(20)
|
|
responsavel String? @db.VarChar(100)
|
|
observacoes String? @db.Text
|
|
dataCriacao DateTime @default(now()) @db.Timestamp()
|
|
|
|
processo Processo @relation(fields: [processoId], references: [id], onDelete: Cascade)
|
|
|
|
@@index([processoId])
|
|
}
|
|
|
|
model Movimentacao {
|
|
id String @id @default(dbgenerated("gen_random_uuid()")) @db.Uuid
|
|
processoId String @db.Uuid
|
|
data DateTime @db.Timestamp()
|
|
descricao String @db.Text
|
|
tipo String @db.VarChar(50)
|
|
documento String? @db.Text
|
|
dataCriacao DateTime @default(now()) @db.Timestamp()
|
|
|
|
processo Processo @relation(fields: [processoId], references: [id], onDelete: Cascade)
|
|
|
|
@@index([processoId])
|
|
}
|
|
|
|
// Manter e atualizar este modelo Documento mais completo
|
|
model Documento {
|
|
id String @id @default(dbgenerated("gen_random_uuid()")) @db.Uuid
|
|
nome String @db.VarChar(200)
|
|
tipo TipoDocumento
|
|
conteudo String @db.Text
|
|
url String? @db.Text // Tornar opcional pois nem todo documento terá URL
|
|
processoId String? @db.Uuid
|
|
processo Processo? @relation(fields: [processoId], references: [id])
|
|
processoAdministrativoId String? @db.Uuid // Adicionar este campo
|
|
processoAdministrativo ProcessoAdministrativo? @relation(fields: [processoAdministrativoId], references: [id]) // Adicionar esta relação
|
|
atendimentoId String? @db.Uuid
|
|
atendimento Atendimento? @relation(fields: [atendimentoId], references: [id])
|
|
anexoId String? @unique @db.Uuid // Adicionar @unique aqui
|
|
anexo Anexo? @relation(fields: [anexoId], references: [id])
|
|
criadoPorId String @db.Uuid
|
|
criadoPor Usuario @relation(fields: [criadoPorId], references: [id])
|
|
criadoEm DateTime @default(now())
|
|
atualizadoEm DateTime @updatedAt
|
|
protocolo String? @db.VarChar(20) // Renomeado de atendimentoProtocolo
|
|
|
|
@@index([processoId])
|
|
@@index([atendimentoId])
|
|
@@index([protocolo])
|
|
@@index([processoAdministrativoId]) // Adicionar este índice
|
|
@@map("documentos")
|
|
}
|
|
|
|
// Custas e Honorários
|
|
enum TipoCustaProcessual {
|
|
INICIAL // Custas iniciais do processo
|
|
RECURSO // Custas recursais
|
|
PERICIA // Honorários periciais
|
|
OFICIAL_JUSTICA // Diligência de oficial
|
|
CARTA_PRECATORIA // Custas de carta precatória
|
|
DEPOSITO_JUDICIAL // Depósito judicial
|
|
CERTIDAO // Certidões diversas
|
|
DIGITALIZACAO // Serviço de digitalização
|
|
CONDUTOR // Despesas com condutor
|
|
CORREIOS // Despesas postais
|
|
CARTORIO // Custas cartoriais
|
|
OUTROS // Outras despesas
|
|
}
|
|
|
|
enum StatusPagamento {
|
|
PENDENTE
|
|
PARCIALMENTE_PAGO // Novo status
|
|
PAGO
|
|
VENCIDO
|
|
CANCELADO
|
|
}
|
|
|
|
enum FormaPagamento {
|
|
VISTA
|
|
PARCELADO
|
|
ENTRADA_MAIS_PARCELAS
|
|
PERCENTUAL_CAUSA
|
|
PERCENTUAL_EXITO
|
|
PERCENTUAL_CAUSA_COM_ENTRADA // Novo tipo
|
|
}
|
|
|
|
model CustaProcessual {
|
|
id String @id @default(dbgenerated("gen_random_uuid()")) @db.Uuid
|
|
processoId String @db.Uuid
|
|
processo Processo @relation(fields: [processoId], references: [id])
|
|
tipo TipoCustaProcessual
|
|
descricao String @db.VarChar(200)
|
|
valor Decimal @db.Decimal(10, 2)
|
|
percentual Decimal? @db.Decimal(5, 2) // Percentual se aplicável
|
|
status StatusPagamento @default(PENDENTE)
|
|
vencimento DateTime?
|
|
dataPagamento DateTime?
|
|
comprovante String? @db.Text // URL do comprovante
|
|
observacoes String? @db.Text
|
|
dataCriacao DateTime @default(now())
|
|
|
|
// Parcelamento
|
|
numeroParcelas Int @default(1)
|
|
parcelaAtual Int @default(1)
|
|
|
|
@@index([processoId])
|
|
@@map("custas_processuais")
|
|
}
|
|
|
|
model Honorario {
|
|
id String @id @default(dbgenerated("gen_random_uuid()")) @db.Uuid
|
|
processoId String @db.Uuid
|
|
processo Processo @relation(fields: [processoId], references: [id])
|
|
|
|
// Valores e forma de pagamento
|
|
valorFixo Decimal? @db.Decimal(10, 2)
|
|
percentualCausa Decimal? @db.Decimal(5, 2)
|
|
percentualExito Decimal? @db.Decimal(5, 2)
|
|
valorEntrada Decimal? @db.Decimal(10, 2)
|
|
valorTotalCausa Decimal? @db.Decimal(10, 2)
|
|
formaPagamento FormaPagamento @default(VISTA)
|
|
|
|
// Parcelamento
|
|
numeroParcelas Int @default(1)
|
|
valorParcela Decimal? @db.Decimal(10, 2)
|
|
diaVencimento Int @default(10)
|
|
|
|
// Controle
|
|
status StatusPagamento @default(PENDENTE)
|
|
dataContrato DateTime @default(now())
|
|
dataVencimento DateTime @db.Timestamp()
|
|
dataCriacao DateTime @default(now()) @db.Timestamp()
|
|
observacoes String? @db.Text
|
|
|
|
// Parcelas
|
|
parcelas ParcelaHonorario[]
|
|
|
|
@@index([processoId])
|
|
@@map("honorarios")
|
|
}
|
|
|
|
model ParcelaHonorario {
|
|
id String @id @default(dbgenerated("gen_random_uuid()")) @db.Uuid
|
|
honorarioId String @db.Uuid
|
|
honorario Honorario @relation(fields: [honorarioId], references: [id], onDelete: Cascade)
|
|
numeroParcela Int
|
|
valor Decimal @db.Decimal(10, 2)
|
|
valorPago Decimal? @db.Decimal(10, 2) // Novo campo
|
|
vencimento DateTime
|
|
dataPagamento DateTime?
|
|
status StatusPagamento @default(PENDENTE)
|
|
comprovante String? @db.Text
|
|
observacoes String? @db.Text
|
|
|
|
@@index([honorarioId])
|
|
@@map("parcelas_honorario")
|
|
}
|
|
|
|
model ModeloDocumento {
|
|
id String @id @default(dbgenerated("gen_random_uuid()")) @db.Uuid
|
|
nome String @db.VarChar(100)
|
|
tipo String @db.VarChar(50)
|
|
conteudo String @db.Text
|
|
variaveis Json? // Mantido apenas um campo variaveis como Json
|
|
cabecalho Boolean @default(true)
|
|
rodape Boolean @default(true)
|
|
assinatura Boolean @default(true)
|
|
dataCriacao DateTime @default(now())
|
|
|
|
@@map("modelos_documentos")
|
|
}
|
|
|
|
// Novo modelo para configurações de template
|
|
model ConfiguracaoDocumento {
|
|
id String @id @default(dbgenerated("gen_random_uuid()")) @db.Uuid
|
|
timbradoUrl String?
|
|
timbradoMarginTop Int? @default(100)
|
|
timbradoMarginBottom Int? @default(50)
|
|
timbradoMarginLeft Int? @default(50)
|
|
timbradoMarginRight Int? @default(50)
|
|
templatePadrao String?
|
|
margensTemplate Json? @default("{\"top\":35,\"bottom\":29,\"left\":25,\"right\":25}")
|
|
criadoEm DateTime @default(now())
|
|
|
|
@@index([criadoEm])
|
|
// Adicionar configuração global única
|
|
@@map("configuracao_documento")
|
|
}
|
|
|
|
// Controle de Prazos e Alertas
|
|
model Alerta {
|
|
id String @id @default(dbgenerated("gen_random_uuid()")) @db.Uuid
|
|
usuarioId String @db.Uuid
|
|
tipo String @db.VarChar(50)
|
|
mensagem String @db.Text
|
|
lido Boolean @default(false)
|
|
dataAlerta DateTime
|
|
dataCriacao DateTime @default(now())
|
|
|
|
@@map("alertas")
|
|
}
|
|
|
|
// Integrações com Tribunais
|
|
model MovimentacaoTribunal {
|
|
id String @id @default(dbgenerated("gen_random_uuid()")) @db.Uuid
|
|
processoId String @db.Uuid
|
|
processo Processo @relation(fields: [processoId], references: [id])
|
|
tribunal String @db.VarChar(50)
|
|
data DateTime
|
|
descricao String
|
|
dataCriacao DateTime @default(now())
|
|
|
|
@@index([processoId])
|
|
}
|
|
|
|
// Novo modelo para órgãos julgadores
|
|
model OrgaoJulgador {
|
|
id String @id @default(dbgenerated("gen_random_uuid()")) @db.Uuid
|
|
nome String @unique @db.VarChar(200)
|
|
processos Processo[]
|
|
dataCriacao DateTime @default(now())
|
|
|
|
@@map("orgaos_julgadores")
|
|
}
|
|
|
|
enum TipoAtendimento {
|
|
INICIAL
|
|
RETORNO
|
|
ENCAMINHAMENTO
|
|
ORIENTACAO
|
|
ACORDO
|
|
OUTROS
|
|
}
|
|
|
|
model Atendimento {
|
|
id String @id @default(dbgenerated("gen_random_uuid()")) @db.Uuid
|
|
protocolo String @unique
|
|
clienteId String @db.Uuid
|
|
processoId String? @db.Uuid
|
|
tipo TipoAtendimento @default(INICIAL)
|
|
titulo String @db.VarChar(200)
|
|
conteudo String @db.Text
|
|
dataAtendimento DateTime @default(now())
|
|
dataCriacao DateTime @default(now())
|
|
usuarioId String @db.Uuid
|
|
|
|
// Novas relações para atendimentos relacionados
|
|
atendimentoInicialId String? @db.Uuid
|
|
atendimentoInicial Atendimento? @relation("AtendimentosRelacionados", fields: [atendimentoInicialId], references: [id])
|
|
atendimentosRelacionados Atendimento[] @relation("AtendimentosRelacionados")
|
|
|
|
// Relações existentes
|
|
cliente Cliente @relation(fields: [clienteId], references: [id])
|
|
processo Processo? @relation(fields: [processoId], references: [id])
|
|
usuario Usuario @relation(fields: [usuarioId], references: [id])
|
|
anexos Anexo[] // Adicionar esta linha para criar a relação bidirecional
|
|
agendamento AgendamentoAtendimento[] // Adicionar esta linha
|
|
documentos Documento[] // Adicionar esta linha
|
|
status String? @default("ATIVO") @db.VarChar(20)
|
|
justificativaCancelamento String? @db.Text
|
|
dataAtualizacao DateTime? @default(now()) @updatedAt
|
|
|
|
@@index([clienteId])
|
|
@@index([processoId])
|
|
@@index([protocolo])
|
|
@@index([atendimentoInicialId])
|
|
@@map("atendimentos")
|
|
}
|
|
|
|
model Anexo {
|
|
id String @id @default(dbgenerated("gen_random_uuid()")) @db.Uuid
|
|
nome String
|
|
url String
|
|
tipo String
|
|
tamanho Int
|
|
atendimento Atendimento? @relation(fields: [atendimentoId], references: [id])
|
|
atendimentoId String? @db.Uuid
|
|
tarefa Tarefa? @relation(fields: [tarefaId], references: [id])
|
|
tarefaId String? @db.Uuid
|
|
criadoEm DateTime @default(now())
|
|
documento Documento? // Adicionar esta linha
|
|
|
|
@@index([atendimentoId])
|
|
@@index([tarefaId])
|
|
}
|
|
|
|
enum StatusAgendamento {
|
|
AGENDADO
|
|
CONFIRMADO
|
|
CANCELADO
|
|
REALIZADO
|
|
NAO_COMPARECEU
|
|
}
|
|
|
|
model AgendamentoAtendimento {
|
|
id String @id @default(dbgenerated("gen_random_uuid()")) @db.Uuid
|
|
clienteId String @db.Uuid
|
|
usuarioId String @db.Uuid
|
|
data DateTime @db.Timestamp()
|
|
observacoes String? @db.Text
|
|
status StatusAgendamento @default(AGENDADO)
|
|
criadoEm DateTime @default(now())
|
|
atualizadoEm DateTime @updatedAt
|
|
atendimentoId String? @db.Uuid // ID do atendimento quando realizado
|
|
|
|
cliente Cliente @relation(fields: [clienteId], references: [id])
|
|
usuario Usuario @relation(fields: [usuarioId], references: [id])
|
|
atendimento Atendimento? @relation(fields: [atendimentoId], references: [id])
|
|
|
|
@@map("agendamentos_atendimento")
|
|
}
|
|
|
|
model Tarefa {
|
|
id String @id @default(dbgenerated("gen_random_uuid()")) @db.Uuid // Usar mesmo padrão das outras tabelas
|
|
titulo String
|
|
descricao String?
|
|
status StatusTarefa
|
|
prioridade PrioridadeTarefa
|
|
dataInicio DateTime
|
|
dataVencimento DateTime
|
|
dataConclusao DateTime? // Adicionar este campo
|
|
progresso Int @default(0)
|
|
responsavel Usuario @relation("tarefasResponsavel", fields: [responsavelId], references: [id])
|
|
responsavelId String @db.Uuid
|
|
criadoPor Usuario @relation("tarefasCriadas", fields: [criadoPorId], references: [id])
|
|
criadoPorId String @db.Uuid
|
|
processo Processo? @relation(fields: [processoId], references: [id])
|
|
processoId String? @db.Uuid
|
|
cliente Cliente? @relation(fields: [clienteId], references: [id])
|
|
clienteId String? @db.Uuid
|
|
subtarefas SubTarefa[]
|
|
anexos Anexo[]
|
|
comentarios Comentario[]
|
|
etiquetas String[]
|
|
criadoEm DateTime @default(now())
|
|
atualizadoEm DateTime @updatedAt
|
|
|
|
@@map("tarefas")
|
|
}
|
|
|
|
model SubTarefa {
|
|
id String @id @default(dbgenerated("gen_random_uuid()")) @db.Uuid
|
|
titulo String
|
|
concluida Boolean @default(false)
|
|
tarefa Tarefa @relation(fields: [tarefaId], references: [id], onDelete: Cascade)
|
|
tarefaId String @db.Uuid
|
|
|
|
@@map("subtarefas")
|
|
}
|
|
|
|
model Comentario {
|
|
id String @id @default(dbgenerated("gen_random_uuid()")) @db.Uuid
|
|
texto String
|
|
criadoPor Usuario @relation(fields: [criadoPorId], references: [id])
|
|
criadoPorId String @db.Uuid
|
|
tarefa Tarefa @relation(fields: [tarefaId], references: [id], onDelete: Cascade)
|
|
tarefaId String @db.Uuid
|
|
criadoEm DateTime @default(now())
|
|
|
|
@@map("comentarios")
|
|
}
|
|
|
|
enum StatusTarefa {
|
|
PENDENTE
|
|
EM_ANDAMENTO
|
|
CONCLUIDA
|
|
CANCELADA
|
|
}
|
|
|
|
enum PrioridadeTarefa {
|
|
BAIXA
|
|
MEDIA
|
|
ALTA
|
|
URGENTE
|
|
}
|
|
|
|
enum ResultadoProcesso {
|
|
NAO_JULGADO
|
|
PROCEDENTE
|
|
PARCIALMENTE_PROCEDENTE
|
|
IMPROCEDENTE
|
|
SEM_ANALISE_MERITO
|
|
}
|
|
|
|
enum TipoDocumento {
|
|
PETICAO
|
|
CONTRATO
|
|
PROCURACAO
|
|
DECLARACAO
|
|
OUTROS
|
|
}
|
|
|
|
model DocumentoModelo {
|
|
id String @id @default(dbgenerated("gen_random_uuid()")) @db.Uuid
|
|
nome String @db.VarChar(200)
|
|
descricao String? @db.Text
|
|
tipo TipoDocumento
|
|
conteudo String @db.Text
|
|
variaveis String[] // Array de placeholders para substituição
|
|
criadoEm DateTime @default(now())
|
|
atualizadoEm DateTime @updatedAt
|
|
|
|
@@map("documentos_modelos")
|
|
}
|
|
|
|
enum TipoCustaAdministrativa {
|
|
TAXA_ADMINISTRATIVA
|
|
RECURSO
|
|
DILIGENCIA
|
|
CERTIDAO
|
|
COPIA
|
|
OUTROS
|
|
}
|
|
|
|
model CustaAdministrativa {
|
|
id String @id @default(dbgenerated("gen_random_uuid()")) @db.Uuid
|
|
processoId String @db.Uuid
|
|
processo ProcessoAdministrativo @relation(fields: [processoId], references: [id], onDelete: Cascade)
|
|
tipo TipoCustaAdministrativa
|
|
descricao String @db.VarChar(200)
|
|
valor Decimal @db.Decimal(10, 2)
|
|
status StatusPagamento @default(PENDENTE)
|
|
vencimento DateTime?
|
|
dataPagamento DateTime?
|
|
comprovante String? @db.Text
|
|
observacoes String? @db.Text
|
|
dataCriacao DateTime @default(now())
|
|
numeroParcelas Int @default(1)
|
|
parcelaAtual Int @default(1)
|
|
|
|
@@index([processoId])
|
|
@@map("custas_administrativas")
|
|
}
|
|
|
|
enum StatusProva {
|
|
PENDENTE
|
|
PROCESSANDO
|
|
CONCLUIDO
|
|
ERRO
|
|
}
|
|
|
|
model Prova {
|
|
id String @id @default(dbgenerated("gen_random_uuid()")) @db.Uuid
|
|
fileName String @db.VarChar(255)
|
|
mimeType String @db.VarChar(100)
|
|
checksumSha256 String @db.VarChar(64)
|
|
checksumSha512 String @db.VarChar(128)
|
|
checksumMd5 String @db.VarChar(32)
|
|
timestamp String @db.Text
|
|
metadata Json
|
|
reportPath String @db.VarChar(255)
|
|
status StatusProva @default(PENDENTE)
|
|
error String? @db.Text
|
|
dataCriacao DateTime @default(now())
|
|
dataValida DateTime @updatedAt
|
|
|
|
@@map("provas")
|
|
}
|
|
|
|
// Modelos para o sistema de cálculo judicial
|
|
model CalculoJudicial {
|
|
id String @id @default(uuid())
|
|
titulo String
|
|
descricao String?
|
|
dataBase DateTime
|
|
dataCalculo DateTime @default(now())
|
|
valorBase Decimal @db.Decimal(15, 2)
|
|
valorCorrigido Decimal @db.Decimal(15, 2)
|
|
valorFinal Decimal @db.Decimal(15, 2)
|
|
status String @default("RASCUNHO") // RASCUNHO, FINALIZADO, ARQUIVADO
|
|
usuarioId String? @db.Uuid
|
|
processoId String? @db.Uuid
|
|
clienteId String? @db.Uuid
|
|
|
|
// Relações
|
|
usuario Usuario? @relation(fields: [usuarioId], references: [id])
|
|
processo Processo? @relation(fields: [processoId], references: [id])
|
|
cliente Cliente? @relation(fields: [clienteId], references: [id])
|
|
|
|
// Componentes do cálculo
|
|
correcoes CorrecaoMonetaria[]
|
|
juros JuroCalculo[]
|
|
multas MultaCalculo[]
|
|
honorarios HonorarioCalculo[]
|
|
parcelas ParcelaCalculo[]
|
|
descontos DescontoCalculo[]
|
|
pensaoAlimenticia PensaoAlimenticia?
|
|
|
|
// Metadados
|
|
configuracoes Json?
|
|
historico HistoricoCalculo[]
|
|
exportacoes ExportacaoCalculo[]
|
|
|
|
criadoEm DateTime @default(now())
|
|
atualizadoEm DateTime @updatedAt
|
|
|
|
@@map("calculosjudiciais")
|
|
}
|
|
|
|
model CorrecaoMonetaria {
|
|
id String @id @default(uuid())
|
|
calculoId String
|
|
indice String // INPC, IPCA-E, TR, SELIC etc.
|
|
dataInicial DateTime
|
|
dataFinal DateTime?
|
|
valorOriginal Decimal @db.Decimal(15, 2)
|
|
valorCorrigido Decimal @db.Decimal(15, 2)
|
|
fatorCorrecao Decimal @db.Decimal(15, 6)
|
|
|
|
calculo CalculoJudicial @relation(fields: [calculoId], references: [id], onDelete: Cascade)
|
|
|
|
criadoEm DateTime @default(now())
|
|
atualizadoEm DateTime @updatedAt
|
|
|
|
@@map("correcoes_monetarias")
|
|
}
|
|
|
|
model JuroCalculo {
|
|
id String @id @default(uuid())
|
|
calculoId String
|
|
tipo String // SIMPLES, COMPOSTO
|
|
taxa Decimal @db.Decimal(8, 6) // Taxa percentual (ex: 0.01 para 1%)
|
|
periodicidade String // MENSAL, ANUAL, DIARIO
|
|
natureza String // MORATORIO, COMPENSATORIO, CONVENCIONAL, LEGAL
|
|
dataInicial DateTime
|
|
dataFinal DateTime?
|
|
valorBase Decimal @db.Decimal(15, 2)
|
|
valorJuros Decimal @db.Decimal(15, 2)
|
|
|
|
calculo CalculoJudicial @relation(fields: [calculoId], references: [id], onDelete: Cascade)
|
|
|
|
criadoEm DateTime @default(now())
|
|
atualizadoEm DateTime @updatedAt
|
|
|
|
@@map("juros_calculos")
|
|
}
|
|
|
|
model MultaCalculo {
|
|
id String @id @default(uuid())
|
|
calculoId String
|
|
tipo String // CONTRATUAL, LEGAL
|
|
percentual Decimal @db.Decimal(8, 6)
|
|
valorBase Decimal @db.Decimal(15, 2)
|
|
valorMulta Decimal @db.Decimal(15, 2)
|
|
fundamento String? // Artigo de lei ou cláusula contratual
|
|
|
|
calculo CalculoJudicial @relation(fields: [calculoId], references: [id], onDelete: Cascade)
|
|
|
|
criadoEm DateTime @default(now())
|
|
atualizadoEm DateTime @updatedAt
|
|
|
|
@@map("multas_calculos")
|
|
}
|
|
|
|
model HonorarioCalculo {
|
|
id String @id @default(uuid())
|
|
calculoId String
|
|
tipo String // CONTRATUAL, SUCUMBENCIAL, EXECUCAO
|
|
percentual Decimal @db.Decimal(8, 6)
|
|
valorBase Decimal @db.Decimal(15, 2)
|
|
valorHonorario Decimal @db.Decimal(15, 2)
|
|
fundamento String? // Fundamentação legal ou contratual
|
|
|
|
calculo CalculoJudicial @relation(fields: [calculoId], references: [id], onDelete: Cascade)
|
|
|
|
criadoEm DateTime @default(now())
|
|
atualizadoEm DateTime @updatedAt
|
|
|
|
@@map("honorarios_calculos")
|
|
}
|
|
|
|
model ParcelaCalculo {
|
|
id String @id @default(uuid())
|
|
calculoId String
|
|
numero Int
|
|
dataVencimento DateTime
|
|
valorOriginal Decimal @db.Decimal(15, 2)
|
|
valorCorrigido Decimal @db.Decimal(15, 2)
|
|
valorJuros Decimal @db.Decimal(15, 2)
|
|
valorMulta Decimal @db.Decimal(15, 2)
|
|
valorTotal Decimal @db.Decimal(15, 2)
|
|
pago Boolean @default(false)
|
|
dataPagamento DateTime?
|
|
|
|
calculo CalculoJudicial @relation(fields: [calculoId], references: [id], onDelete: Cascade)
|
|
|
|
criadoEm DateTime @default(now())
|
|
atualizadoEm DateTime @updatedAt
|
|
|
|
@@map("parcelas_calculos")
|
|
}
|
|
|
|
model DescontoCalculo {
|
|
id String @id @default(uuid())
|
|
calculoId String
|
|
tipo String // INSS, IRRF, CUSTAS, OUTRO
|
|
descricao String?
|
|
percentual Decimal? @db.Decimal(8, 6)
|
|
valorFixo Decimal? @db.Decimal(15, 2)
|
|
valorBase Decimal @db.Decimal(15, 2)
|
|
valorDesconto Decimal @db.Decimal(15, 2)
|
|
|
|
calculo CalculoJudicial @relation(fields: [calculoId], references: [id], onDelete: Cascade)
|
|
|
|
criadoEm DateTime @default(now())
|
|
atualizadoEm DateTime @updatedAt
|
|
|
|
@@map("descontos_calculos")
|
|
}
|
|
|
|
model HistoricoCalculo {
|
|
id String @id @default(uuid())
|
|
calculoId String
|
|
usuarioId String? @db.Uuid
|
|
acao String // CRIACAO, ATUALIZACAO, RECALCULO, EXCLUSAO
|
|
descricao String
|
|
valorAnterior Decimal? @db.Decimal(15, 2)
|
|
valorNovo Decimal? @db.Decimal(15, 2)
|
|
metadados Json?
|
|
|
|
calculo CalculoJudicial @relation(fields: [calculoId], references: [id], onDelete: Cascade)
|
|
usuario Usuario? @relation(fields: [usuarioId], references: [id])
|
|
|
|
criadoEm DateTime @default(now())
|
|
|
|
@@map("historicos_calculos")
|
|
}
|
|
|
|
model ExportacaoCalculo {
|
|
id String @id @default(uuid())
|
|
calculoId String
|
|
usuarioId String? @db.Uuid
|
|
tipo String // PDF, EXCEL, WORD
|
|
arquivo String // Caminho do arquivo gerado
|
|
|
|
calculo CalculoJudicial @relation(fields: [calculoId], references: [id], onDelete: Cascade)
|
|
usuario Usuario? @relation(fields: [usuarioId], references: [id])
|
|
|
|
criadoEm DateTime @default(now())
|
|
|
|
@@map("exportacoes_calculos")
|
|
}
|
|
|
|
model IndiceMonetario {
|
|
id String @id @default(uuid())
|
|
nome String // INPC, IPCA-E, TR, SELIC etc.
|
|
mesReferencia Int // 1-12 (representando os meses do ano)
|
|
anoReferencia Int
|
|
valor Decimal @db.Decimal(15, 6)
|
|
dataPublicacao DateTime?
|
|
fonte String? // IBGE, BACEN, etc.
|
|
|
|
criadoEm DateTime @default(now())
|
|
atualizadoEm DateTime @updatedAt
|
|
|
|
@@unique([nome, mesReferencia, anoReferencia])
|
|
@@map("indices_monetarios")
|
|
}
|
|
|
|
model PensaoAlimenticia {
|
|
id String @id @default(uuid())
|
|
calculoId String @unique
|
|
percentualSalarioMinimo Decimal @db.Decimal(8, 6)
|
|
multaPactuada Decimal? @db.Decimal(8, 6)
|
|
tipoAtualizacao String @default("INPC") // Tipo de índice para atualização monetária
|
|
dataInicial DateTime
|
|
dataFinal DateTime?
|
|
observacoes String?
|
|
|
|
calculo CalculoJudicial @relation(fields: [calculoId], references: [id], onDelete: Cascade)
|
|
historicoSalarios HistoricoSalarioMinimo[]
|
|
parcelasPensao ParcelaPensao[]
|
|
|
|
criadoEm DateTime @default(now())
|
|
atualizadoEm DateTime @updatedAt
|
|
|
|
@@map("pensoes_alimenticias")
|
|
}
|
|
|
|
model HistoricoSalarioMinimo {
|
|
id String @id @default(uuid())
|
|
pensaoId String
|
|
dataVigencia DateTime
|
|
valor Decimal @db.Decimal(15, 2)
|
|
|
|
pensao PensaoAlimenticia @relation(fields: [pensaoId], references: [id], onDelete: Cascade)
|
|
|
|
criadoEm DateTime @default(now())
|
|
atualizadoEm DateTime @updatedAt
|
|
|
|
@@map("historico_salario_minimo")
|
|
}
|
|
|
|
model ParcelaPensao {
|
|
id String @id @default(uuid())
|
|
pensaoId String
|
|
competencia DateTime // Mês/ano a que se refere a parcela
|
|
valorSalarioMinimo Decimal @db.Decimal(15, 2)
|
|
percentual Decimal @db.Decimal(8, 6)
|
|
valorOriginal Decimal @db.Decimal(15, 2)
|
|
valorCorrigido Decimal @db.Decimal(15, 2)
|
|
valorJuros Decimal @db.Decimal(15, 2)
|
|
valorMulta Decimal @db.Decimal(15, 2)
|
|
valorTotal Decimal @db.Decimal(15, 2)
|
|
pago Boolean @default(false)
|
|
dataPagamento DateTime?
|
|
|
|
pensao PensaoAlimenticia @relation(fields: [pensaoId], references: [id], onDelete: Cascade)
|
|
|
|
criadoEm DateTime @default(now())
|
|
atualizadoEm DateTime @updatedAt
|
|
|
|
@@map("parcelas_pensao")
|
|
}
|
|
|
|
// Atualize o modelo CalculoPensaoAlimenticia para usar o tipo UUID
|
|
model CalculoPensaoAlimenticia {
|
|
id String @id @default(dbgenerated("gen_random_uuid()")) @db.Uuid
|
|
titulo String
|
|
descricao String?
|
|
status String
|
|
dataInicial DateTime
|
|
dataFinal DateTime?
|
|
percentualSalarioMinimo Decimal @db.Decimal(10, 2)
|
|
multaPactuada Decimal? @db.Decimal(10, 2)
|
|
tipoAtualizacao String
|
|
valorCalculado Decimal @db.Decimal(15, 2)
|
|
valorMulta Decimal @db.Decimal(15, 2)
|
|
valorTotal Decimal @db.Decimal(15, 2)
|
|
observacoes String?
|
|
|
|
// Relações com tipos UUID compatíveis
|
|
processo Processo? @relation(fields: [processoId], references: [id])
|
|
processoId String? @db.Uuid
|
|
|
|
cliente Cliente? @relation(fields: [clienteId], references: [id])
|
|
clienteId String? @db.Uuid
|
|
|
|
usuario Usuario @relation(fields: [usuarioId], references: [id])
|
|
usuarioId String @db.Uuid
|
|
|
|
criadoEm DateTime @default(now())
|
|
atualizadoEm DateTime @updatedAt
|
|
|
|
@@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")
|
|
}
|