Entidades e relacionamentos · Processos

Diagrama

Processo local e seus vínculos

Carregando diagrama…

Ver código Mermaid
erDiagram
  PERSON |o--o{ CASE : "cliente (clientPersonId)"
  CONSULTATION |o--o{ CASE : "origem (consultationId)"
  USER |o--o{ CASE : "autor (authorUserId)"
  CASE ||--o{ CASE_PARTY : "partes"
  PERSON |o--o{ CASE_PARTY : "pessoa da parte (personId)"
  CASE ||--o{ CASE_NUMBER : "numeracoes"
  CASE ||--o{ CASE_MOVEMENT : "movimentacoes"
  USER |o--o{ CASE_MOVEMENT : "autor (authorUserId)"
  CASE {
    uuid id PK
    string legacyId UK
  }
  CASE_MOVEMENT {
    uuid id PK
    string legacyId UK
  }

O diagrama apresenta os vínculos do cadastro local. Núcleos por sigla, histórico compartilhado e juntadas documentais usam referências descritas em Relações e cardinalidades. O acervo externo permanece separado; a migração prevista não constitui uma relação física já implementada.

Modelo de dados

Os atributos usam inglês e correspondem ao contrato da API Reference. Tipos, relações e regras do cadastro são preservados pela renomeação.

O cadastro local usa TypeORM sobre PostgreSQL. O Processo é o registro central em cases; partes, numerações e movimentações ficam em tabelas próprias. A trilha de operações usa o histórico compartilhado do Hub, sem uma entidade persistida exclusiva CaseEvent.

O Processo é o registro nativo do domínio. A integração com o Projuris Legado pertence ao módulo próprio e não cria um segundo cadastro de Processo nem tabelas locais de cópia do acervo externo.

Nas tabelas de atributos, Obrigatório distingue valores informados, valores gerados pelo servidor e campos opcionais. A nulabilidade física, quando indicada, é independente da possibilidade de enviar null no contrato HTTP; as entradas estão na API Reference.

Processo (cases)

Representa o caso judicial ou extrajudicial, com cliente, entrevista de origem, núcleos responsáveis e estado de acompanhamento.

AtributoTipoObrigatórioRegra
idUUID, chave primáriaGeradoIdentidade local do processo.
legacyIdvarchar(255), anulável, únicoNãoIdentificador canônico do registro no Projuris; preserva a correspondência com a origem sem substituir o UUID nativo.
titlevarchar(255)SimTítulo do processo.
numbervarchar(60), anulávelNãoNúmero textual, sem validação de dígito CNJ. Independente da coleção de numerações.
sphereenum judicial ou extrajudicialSimEsfera do processo.
caseStatusvarchar(60), anulávelNãoSituação textual livre.
phaseenum, padrão initialDerivadoCalculada a partir das movimentações; não é editável manualmente.
nucleusCodestext[], padrão vazio, índice GINNãoSiglas responsáveis, normalizadas e validadas contra o cadastro de núcleos.
clientPersonIdUUID anulável, FK → peopleNãoPessoa cliente; precisa existir e ser legível pelo usuário.
clientNamevarchar(255), anulávelDerivadoNome da Pessoa cliente, recalculado quando o vínculo muda.
originUnitCodevarchar(40), anulávelDerivadoUnidade de origem da Pessoa cliente.
consultationIdUUID anulável, FK → consultationsNãoEntrevista de origem, existente e legível.
consultationSubjectobjeto anulável de leituraDerivadoAssunto da entrevista de origem; não é coluna nem entrada de criação ou alteração.
authorUserIdUUID anulável, FK → usersGeradoAutor do cadastro; pode ficar nulo após exclusão do usuário.
lastMovementAttimestamptz(3), anulávelDerivadoData da movimentação mais recente pela data do ato.
lastMovementTextvarchar(300), anulávelDerivadoResumo da movimentação mais recente.
createdAttimestamptz(3)GeradoData de criação.
updatedAttimestamptz(3)GeradoData de atualização.

O vocabulário de phase é initial, in_progress, evidence, judgment, appeal, payment e closed. Nome do cliente, origem, fase e resumo da movimentação são mantidos pelo servidor.

Quando presente, consultationSubject contém slug, name e area da entrevista de origem. Ele é nulo sem entrevista vinculada, sem assunto na entrevista ou quando a entrevista não está no alcance de leitura; o Processo não possui assunto ou área próprios.

Parte do Processo (case_parties)

Identifica quem participa do processo. A parte pode apontar para uma Pessoa cadastrada ou existir apenas com o nome informado.

AtributoTipoObrigatórioRegra
idUUID, chave primáriaGeradoIdentidade da parte.
caseIdUUID, FK → casesSimProcesso ao qual a parte pertence.
personIdUUID anulável, FK → peopleNãoPessoa cadastrada, quando houver.
personNamevarchar(255)Sim no registroInformado quando não há Pessoa; pode ser derivado dela quando vinculada.
participationvarchar(30), anulávelNãoPolo ou participação.
participationTypevarchar(60), anulávelNãoQualificação da participação.
isPrimaryboolean, padrão falseNão na entradaNo máximo uma parte principal por processo; segunda principal responde 409.
isClientboolean, padrão falseNão na entradaMarca de cliente da parte; não atualiza clientPersonId do Processo.
createdAttimestamptz(3)GeradoCriação.
updatedAttimestamptz(3)GeradoAtualização.

O índice único parcial por processo onde is_primary é verdadeiro impede duas partes principais. É permitido não ter parte principal. A parte herda do Processo o alcance de leitura e de manutenção.

Número do Processo (case_numbers)

Registra uma das numerações do processo e sua condição de principal, quando aplicável.

AtributoTipoObrigatórioRegra
idUUID, chave primáriaGeradoIdentidade da numeração.
caseIdUUID, FK → casesSimProcesso ao qual a numeração pertence.
numbervarchar(40)SimNúmero textual; não valida dígito CNJ.
numberingTypevarchar(30), anulávelNãoEspécie da numeração.
instanceTypevarchar(30), anulávelNãoInstância.
isPrimaryboolean, padrão falseNão na entradaNo máximo uma numeração principal por processo; segunda principal responde 409.
createdAttimestamptz(3)GeradoCriação.
updatedAttimestamptz(3)GeradoAtualização.

O índice único parcial por processo onde is_primary é verdadeiro impede duas numerações principais. É permitido não ter principal. Alterar a coleção não atualiza automaticamente Case.number.

Movimentação local (case_movements)

Acrescenta um andamento ao Processo. O tipo é classificado a partir da descrição, e a fonte e o autor são definidos pelo servidor.

AtributoTipoObrigatórioRegra
idUUID, chave primáriaGeradoIdentidade da movimentação.
legacyIdvarchar(255), anulável, únicoNãoIdentificador canônico da movimentação no Projuris; preserva a correspondência com a origem sem substituir o UUID nativo.
caseIdUUID, FK → casesSimProcesso ao qual pertence.
occurredAttimestamptz(3)SimData do ato; eixo da ordenação da linha do tempo.
descriptiontextSimDescrição usada na classificação.
kindenum de classificaçãoDerivadoTipo calculado pelo servidor; não é informado pelo usuário.
sourceenum de origemGeradoA inclusão manual grava hub.
authorUserIdUUID anulável, FK → usersGeradoAutor; pode ficar nulo após exclusão do usuário.
createdAttimestamptz(3)GeradoInstante do registro, distinto da data do ato.

A movimentação admite acréscimo e consulta; a única alteração é a correção do marco (RN-PRO-015), em implementação. O Processo conserva o resumo da mais recente pela data do ato, enquanto a fase é derivada do conjunto de movimentações.

Campos da Ficha da Pessoa em implementação

Estado: em implementação na API. São dados nativos do Hub; o Projuris não é fonte automática deles (RN-PRO-010).

Processo (cases)

AtributoTipoObrigatórioRegra
distributedAtdate, anulávelNãoData civil da distribuição.
jurisdictionvarchar(255), anulávelNãoÓrgão julgador ou jurisdição.
publicUrlvarchar(2048), anulávelNãoEndereço público do processo no tribunal; http ou https.

Parte do Processo (case_parties)

AtributoTipoObrigatórioRegra
representsPartyIdUUID anulável, FK → case_parties (SET NULL), indexadoNãoParte do mesmo processo que esta representa, como o advogado da parte adversa (RN-PRO-011).

Movimentação local (case_movements)

AtributoTipoObrigatórioRegra
summaryvarchar(500), anulávelNãoResumo da movimentação.
notifiedAtdate, anulávelNãoData civil da intimação.
deadlineAtdate, anulávelNãoData civil em que o prazo vence.
documentIdUUID anulável, FK → documents (SET NULL), indexadoNãoDocumento da movimentação; precisa ser legível pelo ator.
publicUrlvarchar(2048), anulávelNãoEndereço público da movimentação no tribunal; http ou https.

As atividades vinculadas à movimentação apontam para ela por work_items.caseMovementId, descrito na Área de Trabalho.

Número e marco da movimentação em implementação

Os campos pertencem à Movimentação local (case_movements).

Estado: em implementação na API (RN-PRO-014 e RN-PRO-015).

AtributoTipoObrigatórioRegra
sequenceinteger ≥ 1, único com caseIdGeradoNúmero da movimentação no processo, como a folha física dos autos: o próximo do processo no registro; nunca muda nem é reaproveitado.
milestoneenum, anulávelNãoMarco do processo: initial_petition (Petição inicial), expert_report (Laudo pericial), hearing (Audiência), judgment (Sentença), appellate_judgment (Acórdão), decision (Decisão), defense (Contestação) ou appeal (Recurso). Informado no registro e corrigível pela correção do marco (RN-PRO-015).
milestoneClassenum, anulávelDerivadoprimary para Petição inicial, Laudo pericial, Audiência, Sentença e Acórdão; secondary para Decisão, Contestação e Recurso; nulo quando não há marco.

As movimentações registradas antes desta mudança recebem número por processo na ordem da data do ato, com o identificador como desempate: a mais antiga é a de número 1.

Registro de Histórico (compartilhado)

Mantém a trilha interna de operações do Hub. Os registros referentes ao Processo usam resourceType igual a case e sua identidade local em resourceId. Não são movimentações do tribunal.

AtributoTipoObrigatórioRegra
idUUIDGeradoIdentidade do registro de histórico.
resourceTypestringGeradoIdentifica o recurso; case nas operações do Processo.
resourceIdUUIDGeradoIdentifica o recurso de origem.
eventTypestringGeradoOperação registrada.
actionclassificação da açãoGeradoNatureza da operação.
changeslista de alteraçõesGeradoNomes de campos alterados; o Processo não fornece os valores anteriores e posteriores.
metadataobjetoGeradoMetadados da operação.
Identificação do atorEstrutura compartilhadaA detalharIdentifica quem realizou a operação.

Esta seção cobre a referência usada pelo Processo; a estrutura integral do histórico compartilhado permanece pendente de detalhamento. A exclusão de CaseEvent do modelo persistido não elimina a trilha compartilhada.

Relações e cardinalidades

A obrigatoriedade refere-se ao vínculo no registro de origem. A política de integridade física não equivale a uma operação de exclusão oferecida pela API.

RelaçãoCardinalidadeObrigatóriaIntegridade
Processo → Pessoa clienteN:0..1NãoFK com RESTRICT; Pessoa existente e legível.
Processo → Entrevista de origemN:0..1NãoFK com SET NULL; uma entrevista pode originar vários processos.
Processo → Usuário autorN:0..1Gerado no cadastroFK com SET NULL; pode ficar nulo após exclusão do usuário.
Processo → NúcleoN:N por siglaNãoArray nucleusCodes, sem FK; existência validada no cadastro de núcleos.
Processo → Parte do Processo1:NNão para o Processo; sim para a ParteFK com CASCADE; no máximo uma principal por processo.
Parte do Processo → PessoaN:0..1NãoFK com SET NULL; pode existir somente pelo nome.
Processo → Número do Processo1:NNão para o Processo; sim para o NúmeroFK com CASCADE; no máximo uma principal por processo.
Processo → Movimentação local1:NNão para o Processo; sim para a MovimentaçãoFK com CASCADE; acréscimo, consulta e correção do marco.
Movimentação local → Usuário autorN:0..1Gerado no registroFK com SET NULL.
Registro de Histórico → ProcessoVários registros por processoNa referência ao ProcessoReferência lógica pelo recurso case; usa o histórico compartilhado.
Juntada documental → ProcessoVárias juntadas por processoNão para a JuntadaReferência lógica por relação do tipo processo; não é FK apresentada no diagrama.

Ciclo de vida

O Processo local permite criação, consulta e alteração. Sua exclusão é lógica: o registro deixa de aparecer nas consultas usuais, mas permanece no banco com partes, numerações, movimentações e histórico. O contrato não oferece restauração.

Partes e numerações permitem inclusão, consulta e remoção física, sem edição direta. Movimentações locais podem ser acrescentadas e consultadas, e só o marco pode ser corrigido. A trilha registra operações internas; sua finalidade é distinta do andamento processual.

Integração com Projuris Legado

A consulta ao acervo externo pertence ao domínio Projuris Legado. Somente a incorporação explícita persiste Processos e Movimentações nas tabelas nativas, identificados pelos respectivos UUIDs e legacyId opcionais e únicos. A integração não mantém tabelas locais de cópia do acervo externo.

Camadas do domínio