projudi

Sistema de Processo Judicial

Arquitetura de Domínio Estruturada

Este documento apresenta a organização em Bounded Contexts do Sistema de Processo Judicial, seguindo princípios de Domain-Driven Design para garantir clareza, manutenibilidade e escalabilidade.

Regras do Sistema


Bounded Contexts

1. Conclusões e Decisões ✅

Escopo: Gestão da fila de autos conclusos e itens submetidos à decisão do magistrado.

2. Pendências e Cumprimentos ✅

Escopo: Gestão completa do ciclo de vida de pendências processuais.

3. Audiências, Sessões e Agenda ✅

Escopo: Planejamento, agendamento e condução de audiências e sessões.

4. Ciclo de Vida do Processo 🔄

Escopo: Criação, cadastro, vínculos e redistribuição de processos.

5. Consulta e Dados do Processo 🔄

Escopo: Localização, consulta e manutenção de dados processuais.

6. Identidade, Acesso e Equipes ✅

Escopo: Autenticação, autorização e gestão de equipes.

7. Atos e Instrumentos Judiciais 🆕

Escopo: Emissão e gestão de atos judiciais (certidões, mandados, etc.).

8. Configurações e Automação 🔄

Escopo: Classificadores, regras e automações do sistema.

9. Estatísticas e Produtividade 🔄

Escopo: Métricas de produtividade e estatísticas operacionais.

10. Relatórios Gerenciais 🔄

Escopo: Relatórios administrativos e de gestão.

11. Gestão Documental ✅

Escopo: Documentos, arquivos, mídias e modelos.

12. Movimentações Processuais ✅

Escopo: Criação e gestão de movimentações processuais.

13. Partes e Representação ✅

Escopo: Gestão de partes, advogados e representantes.

14. Financeiro — Guias e Custas ✅

Escopo: Gestão financeira de guias e custas processuais.

15. APIs Públicas e Serviços ✅

Escopo: Interfaces públicas e serviços externos.


Estrutura de Pacotes Revisada

src/main/java/br/gov/go/tj/projudi/
├── conclusao/              # Conclusões e Decisões
├── pendencia/              # Pendências e Cumprimentos  
├── audiencia/              # Audiências, Sessões e Agenda
├── processo/
│   ├── ciclovida/         # Ciclo de Vida do Processo
│   └── consulta/          # Consulta e Dados do Processo
├── identidadeacesso/       # Identidade, Acesso e Equipes
├── ato/                   # Atos e Instrumentos Judiciais
├── configuracao/          # Configurações e Automação
├── relatorio/
│   ├── produtividade/     # Estatísticas e Produtividade
│   └── gerencial/         # Relatórios Gerenciais
├── documento/             # Gestão Documental
├── movimentacao/          # Movimentações Processuais
├── parte/                 # Partes e Representação
├── financeiro/            # Financeiro — Guias e Custas
└── api/publica/           # APIs Públicas e Serviços

Shared Kernel 🔗

O Shared Kernel contém elementos fundamentais do domínio que são compartilhados entre múltiplos bounded contexts, como value objects, enums e utilitários básicos que representam conceitos universais do sistema judicial.

Value Objects Fundamentais

// Identificadores únicos
ProcessoId, ServentiaId, UsuarioId, ComarcaId, CargoId, AreaId
AssessorId, AdvogadoId, ParteId, GuiaId, AudienciaId

// Dados estruturados
CPF, CNPJ, RG, OAB, Email, Telefone
CEP, Endereco, NumeroProcesso

// Períodos e datas
PeriodoProcessual, DataAudiencia, PrazoLegal

Enums e Constantes

// Status universais
StatusProcesso, StatusPendencia, StatusAudiencia, StatusGuia

// Tipos e classificações
TipoProcesso, TipoMovimentacao, TipoPendencia, TipoAudiencia
PerfilUsuario, TipoDocumento, GrauInstancia

// Configurações do sistema
ConfiguracaoSistema, ParametrosGerais

Benefícios da Reorganização

Melhor coesão: Contextos mais equilibrados em tamanho
Menos overhead: Redução de contextos muito pequenos
Maior flexibilidade: Espaço para crescimento futuro
Manutenibilidade: Organização mais clara para desenvolvedores
Reutilização: Shared Kernel elimina duplicação de conceitos fundamentais
Consistência: Uso padronizado de value objects e validações em todos os contextos