Entidades e relacionamentos · Processos
Diagrama
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.
| Atributo | Tipo | Obrigatório | Regra |
|---|---|---|---|
id | UUID, chave primária | Gerado | Identidade local do processo. |
legacyId | varchar(255), anulável, único | Não | Identificador canônico do registro no Projuris; preserva a correspondência com a origem sem substituir o UUID nativo. |
title | varchar(255) | Sim | Título do processo. |
number | varchar(60), anulável | Não | Número textual, sem validação de dígito CNJ. Independente da coleção de numerações. |
sphere | enum judicial ou extrajudicial | Sim | Esfera do processo. |
caseStatus | varchar(60), anulável | Não | Situação textual livre. |
phase | enum, padrão initial | Derivado | Calculada a partir das movimentações; não é editável manualmente. |
nucleusCodes | text[], padrão vazio, índice GIN | Não | Siglas responsáveis, normalizadas e validadas contra o cadastro de núcleos. |
clientPersonId | UUID anulável, FK → people | Não | Pessoa cliente; precisa existir e ser legível pelo usuário. |
clientName | varchar(255), anulável | Derivado | Nome da Pessoa cliente, recalculado quando o vínculo muda. |
originUnitCode | varchar(40), anulável | Derivado | Unidade de origem da Pessoa cliente. |
consultationId | UUID anulável, FK → consultations | Não | Entrevista de origem, existente e legível. |
consultationSubject | objeto anulável de leitura | Derivado | Assunto da entrevista de origem; não é coluna nem entrada de criação ou alteração. |
authorUserId | UUID anulável, FK → users | Gerado | Autor do cadastro; pode ficar nulo após exclusão do usuário. |
lastMovementAt | timestamptz(3), anulável | Derivado | Data da movimentação mais recente pela data do ato. |
lastMovementText | varchar(300), anulável | Derivado | Resumo da movimentação mais recente. |
createdAt | timestamptz(3) | Gerado | Data de criação. |
updatedAt | timestamptz(3) | Gerado | Data 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.
| Atributo | Tipo | Obrigatório | Regra |
|---|---|---|---|
id | UUID, chave primária | Gerado | Identidade da parte. |
caseId | UUID, FK → cases | Sim | Processo ao qual a parte pertence. |
personId | UUID anulável, FK → people | Não | Pessoa cadastrada, quando houver. |
personName | varchar(255) | Sim no registro | Informado quando não há Pessoa; pode ser derivado dela quando vinculada. |
participation | varchar(30), anulável | Não | Polo ou participação. |
participationType | varchar(60), anulável | Não | Qualificação da participação. |
isPrimary | boolean, padrão false | Não na entrada | No máximo uma parte principal por processo; segunda principal responde 409. |
isClient | boolean, padrão false | Não na entrada | Marca de cliente da parte; não atualiza clientPersonId do Processo. |
createdAt | timestamptz(3) | Gerado | Criação. |
updatedAt | timestamptz(3) | Gerado | Atualizaçã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.
| Atributo | Tipo | Obrigatório | Regra |
|---|---|---|---|
id | UUID, chave primária | Gerado | Identidade da numeração. |
caseId | UUID, FK → cases | Sim | Processo ao qual a numeração pertence. |
number | varchar(40) | Sim | Número textual; não valida dígito CNJ. |
numberingType | varchar(30), anulável | Não | Espécie da numeração. |
instanceType | varchar(30), anulável | Não | Instância. |
isPrimary | boolean, padrão false | Não na entrada | No máximo uma numeração principal por processo; segunda principal responde 409. |
createdAt | timestamptz(3) | Gerado | Criação. |
updatedAt | timestamptz(3) | Gerado | Atualizaçã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.
| Atributo | Tipo | Obrigatório | Regra |
|---|---|---|---|
id | UUID, chave primária | Gerado | Identidade da movimentação. |
legacyId | varchar(255), anulável, único | Não | Identificador canônico da movimentação no Projuris; preserva a correspondência com a origem sem substituir o UUID nativo. |
caseId | UUID, FK → cases | Sim | Processo ao qual pertence. |
occurredAt | timestamptz(3) | Sim | Data do ato; eixo da ordenação da linha do tempo. |
description | text | Sim | Descrição usada na classificação. |
kind | enum de classificação | Derivado | Tipo calculado pelo servidor; não é informado pelo usuário. |
source | enum de origem | Gerado | A inclusão manual grava hub. |
authorUserId | UUID anulável, FK → users | Gerado | Autor; pode ficar nulo após exclusão do usuário. |
createdAt | timestamptz(3) | Gerado | Instante 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)
| Atributo | Tipo | Obrigatório | Regra |
|---|---|---|---|
distributedAt | date, anulável | Não | Data civil da distribuição. |
jurisdiction | varchar(255), anulável | Não | Órgão julgador ou jurisdição. |
publicUrl | varchar(2048), anulável | Não | Endereço público do processo no tribunal; http ou https. |
Parte do Processo (case_parties)
| Atributo | Tipo | Obrigatório | Regra |
|---|---|---|---|
representsPartyId | UUID anulável, FK → case_parties (SET NULL), indexado | Não | Parte do mesmo processo que esta representa, como o advogado da parte adversa (RN-PRO-011). |
Movimentação local (case_movements)
| Atributo | Tipo | Obrigatório | Regra |
|---|---|---|---|
summary | varchar(500), anulável | Não | Resumo da movimentação. |
notifiedAt | date, anulável | Não | Data civil da intimação. |
deadlineAt | date, anulável | Não | Data civil em que o prazo vence. |
documentId | UUID anulável, FK → documents (SET NULL), indexado | Não | Documento da movimentação; precisa ser legível pelo ator. |
publicUrl | varchar(2048), anulável | Não | Endereç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).
| Atributo | Tipo | Obrigatório | Regra |
|---|---|---|---|
sequence | integer ≥ 1, único com caseId | Gerado | Número da movimentação no processo, como a folha física dos autos: o próximo do processo no registro; nunca muda nem é reaproveitado. |
milestone | enum, anulável | Não | Marco 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). |
milestoneClass | enum, anulável | Derivado | primary 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.
| Atributo | Tipo | Obrigatório | Regra |
|---|---|---|---|
id | UUID | Gerado | Identidade do registro de histórico. |
resourceType | string | Gerado | Identifica o recurso; case nas operações do Processo. |
resourceId | UUID | Gerado | Identifica o recurso de origem. |
eventType | string | Gerado | Operação registrada. |
action | classificação da ação | Gerado | Natureza da operação. |
changes | lista de alterações | Gerado | Nomes de campos alterados; o Processo não fornece os valores anteriores e posteriores. |
metadata | objeto | Gerado | Metadados da operação. |
| Identificação do ator | Estrutura compartilhada | A detalhar | Identifica 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ção | Cardinalidade | Obrigatória | Integridade |
|---|---|---|---|
| Processo → Pessoa cliente | N:0..1 | Não | FK com RESTRICT; Pessoa existente e legível. |
| Processo → Entrevista de origem | N:0..1 | Não | FK com SET NULL; uma entrevista pode originar vários processos. |
| Processo → Usuário autor | N:0..1 | Gerado no cadastro | FK com SET NULL; pode ficar nulo após exclusão do usuário. |
| Processo → Núcleo | N:N por sigla | Não | Array nucleusCodes, sem FK; existência validada no cadastro de núcleos. |
| Processo → Parte do Processo | 1:N | Não para o Processo; sim para a Parte | FK com CASCADE; no máximo uma principal por processo. |
| Parte do Processo → Pessoa | N:0..1 | Não | FK com SET NULL; pode existir somente pelo nome. |
| Processo → Número do Processo | 1:N | Não para o Processo; sim para o Número | FK com CASCADE; no máximo uma principal por processo. |
| Processo → Movimentação local | 1:N | Não para o Processo; sim para a Movimentação | FK com CASCADE; acréscimo, consulta e correção do marco. |
| Movimentação local → Usuário autor | N:0..1 | Gerado no registro | FK com SET NULL. |
| Registro de Histórico → Processo | Vários registros por processo | Na referência ao Processo | Referência lógica pelo recurso case; usa o histórico compartilhado. |
| Juntada documental → Processo | Várias juntadas por processo | Não para a Juntada | Referê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.