Initial commit: LexMind - Plataforma Jurídica Inteligente

This commit is contained in:
bigtux
2026-02-10 15:46:26 -03:00
commit 08bd4f039d
108 changed files with 75782 additions and 0 deletions

118
docs/INTEGRACAO-DIARIOS.md Normal file
View File

@@ -0,0 +1,118 @@
# Integração com Diários Oficiais - LexMind
## Visão Geral
O LexMind agora possui integração real com a API DataJud do CNJ para buscar publicações processuais automaticamente.
## Fontes de Dados
### 1. API DataJud (CNJ) - Fonte Principal
- **URL Base:** https://api-publica.datajud.cnj.jus.br/
- **Autenticação:** API Key pública do CNJ
- **Tribunais Suportados:** Todos os TJs, TRFs, STJ, STF, TST
- **Dados Retornados:** Movimentações processuais (publicações, intimações, citações, etc.)
### 2. DJe TJSP (Backup - não implementado)
- Pode ser adicionado via scraping se necessário
## Arquivos Criados/Modificados
```
src/lib/
├── diarios-service.ts # Service principal de integração
├── publicacoes-service.ts # Cálculo de prazos e tipos
src/app/api/publicacoes/buscar/
├── route.ts # API atualizada para busca real
scripts/
├── buscar-publicacoes.ts # Script de busca diária (cron)
├── testar-datajud.ts # Teste de conexão com API
├── teste-integracao.ts # Teste completo do service
├── teste-standalone.ts # Teste isolado
```
## Uso
### Busca Manual (via API)
```bash
# Buscar publicações de um processo específico
curl -X POST https://lexmind.com.br/api/publicacoes/buscar \
-H "Content-Type: application/json" \
-H "Cookie: <session>" \
-d '{"processoId": "cuid-do-processo"}'
# Buscar todos os processos ativos do usuário
curl -X POST https://lexmind.com.br/api/publicacoes/buscar \
-H "Cookie: <session>"
```
### Busca Diária (Cron)
```bash
cd /var/www/lexmind
npx ts-node scripts/buscar-publicacoes.ts
```
### Testes
```bash
# Testar conexão com DataJud
npx ts-node scripts/testar-datajud.ts
# Testar busca com processo real
npx ts-node scripts/teste-standalone.ts
```
## Tipos de Publicação Detectados
| Tipo | Código CNJ | Keywords |
|------|------------|----------|
| INTIMACAO | 12265, 12021 | intimação, fica intimado |
| CITACAO | 14, 12037 | citação, fica citado |
| SENTENCA | 22, 848 | sentença, julgo procedente |
| ACORDAO | 217, 219 | acórdão, acordam os desembargadores |
| DESPACHO | 11010, 11383 | despacho, determino |
| PUBLICACAO | 92 | (genérico) |
## Cálculo de Prazos
- INTIMACAO/CITACAO/SENTENCA/ACORDAO: 15 dias úteis
- DESPACHO: 5 dias úteis
- OUTROS: 5 dias úteis
## Rate Limiting
- Delay de 500ms entre requisições em lote
- Busca processos dos últimos 30 dias por padrão
## Configuração do Cron
Para executar a busca diariamente às 7h:
```bash
# Via crontab no servidor
0 7 * * * cd /var/www/lexmind && /usr/bin/npx ts-node scripts/buscar-publicacoes.ts >> /var/log/lexmind-publicacoes.log 2>&1
# Ou via Clawdbot (remoto)
clawdbot cron add "0 7 * * *" "ssh jarvis-do 'cd /var/www/lexmind && npx ts-node scripts/buscar-publicacoes.ts'"
```
## Troubleshooting
### API retorna erro 401
- Verificar se a API Key está correta
- A key pública do CNJ raramente muda
### Processo não encontrado
- Verificar formato do número (20 dígitos sem formatação)
- Verificar se o tribunal está correto
- Alguns processos podem estar em sigilo
### Timeout na busca
- Aumentar delay entre requisições
- Verificar conectividade de rede
## Manutenção
- Monitorar logs de busca diária
- Verificar se há novos códigos de movimentos no CNJ
- Atualizar mapeamento de tribunais se necessário

111
docs/PUBLICACOES.md Normal file
View File

@@ -0,0 +1,111 @@
# Módulo de Monitoramento de Publicações
## Visão Geral
Este módulo permite que advogados monitorem publicações nos Diários Oficiais (DJe, DOU, DOESP) relacionadas aos seus processos. O sistema calcula automaticamente prazos com base no tipo de publicação.
## Funcionalidades
- **Cadastro de processos** para monitoramento
- **Busca de publicações** (mock para MVP)
- **Cálculo automático de prazos** com base no tipo de publicação
- **Dashboard** com estatísticas e alertas
- **Filtros** por tipo, processo, período, status de leitura
- **Marcação de publicações** como lidas
## Tipos de Publicação e Prazos
| Tipo | Prazo Padrão |
|------|--------------|
| Intimação | 15 dias úteis |
| Citação | 15 dias úteis |
| Sentença | 15 dias úteis (recurso) |
| Despacho | 5 dias úteis |
| Acórdão | 15 dias úteis (embargos/recurso) |
| Outros | 5 dias úteis |
## API Endpoints
### Processos
- `GET /api/processos` - Lista processos monitorados
- `POST /api/processos` - Cadastra novo processo
- `GET /api/processos/[id]` - Detalhes de um processo
- `PUT /api/processos/[id]` - Atualiza processo
- `DELETE /api/processos/[id]` - Remove processo
### Publicações
- `GET /api/publicacoes` - Lista publicações (com filtros)
- `PATCH /api/publicacoes/[id]/visualizar` - Marca como lida
- `POST /api/publicacoes/buscar` - Busca novas publicações
## Configuração de Busca Automática (Cron Job)
### Opção 1: Cron do Sistema
```bash
# Editar crontab
crontab -e
# Adicionar linha para buscar diariamente às 8h
0 8 * * * curl -X POST http://localhost:3000/api/publicacoes/buscar -H "Cookie: session=..." >> /var/log/lexmind-publicacoes.log 2>&1
```
### Opção 2: Scheduler Externo
Use serviços como:
- **cron-job.org** (gratuito)
- **EasyCron**
- **GitHub Actions** (scheduled workflow)
Configurar para fazer POST em `/api/publicacoes/buscar` diariamente.
## Integração com APIs Reais (Futuro)
Para substituir o mock por APIs reais dos tribunais:
1. Editar `src/lib/publicacoes-service.ts`
2. Implementar `buscarPublicacoesTribunal(tribunal, numeroProcesso)`
3. APIs sugeridas:
- **Datajud** (CNJ) - https://datajud-wiki.cnj.jus.br/
- **e-SAJ** (TJSP) - via scraping
- **PJe** - via API onde disponível
## Schema do Banco
```prisma
model ProcessoMonitorado {
id String @id @default(cuid())
userId String
numeroProcesso String // Formato CNJ: 0000000-00.0000.0.00.0000
tribunal String // Ex: TJSP, TRF3, STJ
vara String?
comarca String?
parteAutora String?
parteRe String?
status ProcessoStatus @default(ATIVO)
publicacoes Publicacao[]
}
model Publicacao {
id String @id @default(cuid())
processoId String
dataPublicacao DateTime
diario String // Ex: DJe, DOU, DOESP
conteudo String @db.Text
tipo TipoPublicacao
prazoCalculado DateTime?
prazoTipo String?
visualizado Boolean @default(false)
}
```
## Changelog
### v1.0.0 (MVP)
- Cadastro e gerenciamento de processos
- Dashboard de publicações
- Busca mock para testes
- Cálculo automático de prazos
- Filtros e marcação de leitura