Files
pet16704/README.md
T

117 lines
7.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Pet16704 — Linha do Tempo Processual
Visualização interativa da linha do tempo dos autos vinculados **Pet16704** (STF) — um ponto por
documento, agrupado pela instituição de origem (Relatoria, PGR, Polícia Federal, Partes e Defesas,
Secretaria e Cartório) e posicionado pela data real de juntada.
**Ver a página publicada:** (preencha aqui o link do GitHub Pages depois do primeiro deploy)
## Por que isso existe
O material de origem trazia um `gitGraph` do Mermaid com um commit por documento (3.437 no total).
Isso não escala: o Mermaid posiciona commits em sequência fixa, sem eixo temporal real, e o SVG
gerado saía em **16.368 × 40 px** — ilegível. As descrições também vinham truncadas em ~100
caracteres pelas tags do Mermaid.
Este projeto troca aquele gráfico por uma timeline de verdade:
- eixo X com datas reais (não sequência de commits) e zoom/pan sobre o período;
- uma faixa de visão geral (histograma mensal empilhado por instituição) para navegar entre o
período parado (20182025) e a explosão de atividade em 2026;
- textos completos, sem truncamento, extraídos de `TIMELINE.md`;
- filtros por instituição, tipo de documento e pessoas mencionadas;
- uma visão em tabela (ordenável, pesquisável) como alternativa acessível ao gráfico.
## Estrutura do repositório
```
web/index.html página estática (self-contained: HTML + CSS + JS, sem build step)
web/docs.json um registro por documento (id, instituição, data, texto completo, tipo, pessoas)
web/people.json catálogo de pessoas identificadas: {key, count, role}
PESSOAS.md o mesmo catálogo, em tabelas markdown agrupadas por papel processual
pipeline/ scripts e dados intermediários da extração (referência, não é preciso rodar nada)
parte1/, parte2/ resumos dos autos vinculados a Pet16704 (um .md por processo + um INDEX.md geral)
```
Para rodar localmente: `python3 -m http.server 8000` **na raiz do repositório** e abrir
`http://localhost:8000/web/index.html` (servir a partir de dentro de `web/` quebra o botão de
resumo do processo, que busca `../parte1/`\ `../parte2/` um nível acima)
(precisa de um servidor por causa do `fetch()` de `docs.json`/`people.json` — abrir o arquivo direto
via `file://` não funciona nos navegadores).
Na linha do tempo, clicar (ou tocar, no celular) em um ponto abre ao lado o resumo completo daquele
documento — data, instituição, tipo, texto integral, pessoas mencionadas e arquivo-fonte. Passar o
mouse sobre um ponto, sem clicar, mostra só uma prévia rápida (tooltip).
## Como os dados foram montados
1. **`docs.json`** — cruzamento de duas fontes do dump original (`gitgraph.md` para a instituição
de cada documento, `TIMELINE.md` para data/texto completo/arquivo-fonte). Ver
`pipeline/extract.py`.
2. **Tipo de documento** — extraído do nome do arquivo-fonte de cada documento (ex.: "Despacho",
"Petição", "Procuração", "Certidão"), normalizado com acentuação correta.
3. **Pessoas mencionadas (`people.json` / `PESSOAS.md`)** — reconhecimento de entidades feito
**localmente, sem usar o Claude para o texto em si**, com o modelo
[`pierreguillou/ner-bert-base-cased-pt-lenerbr`](https://huggingface.co/pierreguillou/ner-bert-base-cased-pt-lenerbr)
(BERT treinado no corpus **LeNER-Br**, de textos jurídicos brasileiros). Rodado sobre os 3.437
textos via `pipeline/run_ner.py`.
Depois da extração bruta (435 nomes distintos), foi feita uma limpeza:
- separação de nomes que o modelo juntou erroneamente com "e" (ex. "Fulano e Beltrano" → duas
pessoas), preservando sobrenomes compostos legítimos ("Castro e Silva");
- remoção de nomes de escritórios de advocacia reconhecidos como pessoa por engano;
- descarte de fragmentos de um único token (nomes incompletos, ex. só o primeiro nome);
- junção de variações do mesmo nome por contenção de tokens (ex. "Daniel Vorcaro" →
"Daniel Bueno Vorcaro").
Resultado: **292 pessoas distintas**, listadas em `people.json` (formato bruto, usado pela
página) e em `PESSOAS.md` (tabelas legíveis, agrupadas por papel). O papel processual de cada
pessoa (Relator/Ministro, Outorgante/Parte, Peticionante, Advogado(a), Investigado(a),
Delegado(a) PF, Senador(a), Deputado(a), Alvo de diligência, Perito(a), Testemunha) foi inferido
por frases-gatilho perto de cada menção (ex. "Despacho do Relator X", "Procuração de X
constituindo Y", "em desfavor de X"). **63% das pessoas (185 de 292) ficaram sem papel
classificado** ("Mencionado(a)") por falta de um sinal textual próximo confiável — isso é
esperado e fica visível na própria listagem, não escondido.
**Limitações conhecidas:** isso é reconhecimento automático de entidades em texto livre, não uma
base curada. Pode haver nomes não reconhecidos, variações da mesma pessoa não unificadas, e
classificações de papel aproximadas. Trate como um ponto de partida para busca, não como fonte
definitiva de identidade ou qualificação processual.
4. **Recuperação de datas (`pipeline/recover_dates.py`)** — dos 615 documentos que o `TIMELINE.md`
deixou sem data, 366 tiveram uma data recuperada lendo o texto original do próprio documento em
busca da sua linha de fechamento no padrão "Cidade/UF, DD de mês de YYYY." (ex. "Brasília, 10 de
abril de 2026."). Esses casos ficam marcados com `dateInferred: true` em `docs.json` e aparecem
no resumo do documento como "data lida no texto do documento, não da juntada nos autos" — é uma
data real do documento, mas não necessariamente a data em que foi juntado ao processo. Os 249
restantes seguem sem data (fora do gráfico, só na tabela). Duas versões mais permissivas foram
tentadas e descartadas por amostragem manual antes desta: buscar qualquer "DD de mês de YYYY" no
texto pegava datas de citação de leis/decretos ("da Lei 11.419, de 19 de dezembro de 2006") e
prazos de normas citadas ("será exigido a partir de 1º de janeiro de 2017") como se fossem a data
do documento; e um fallback numérico (`dd.mm.aaaa`) pegava números soltos de anexos técnicos
longos (um laudo de vistoria, a validade de um CRECI) sem relação com a data real. Exigir uma
cidade e vírgula imediatamente antes da data eliminou os falsos positivos encontrados.
5. **Autos vinculados (`parte1/`, `parte2/`)** — resumos em markdown dos processos conexos citados
ao longo da Pet16704 (Inq 5026, Inq 5035, Inq 5050, Inq 5070, Rcl 88121 e diversas Petições —
PET 15198, 15375, 15478 etc.), um arquivo por processo mais um `INDEX.md` consolidado em cada
pasta. Cobrem partes/investigados, advogados, autoridades e linha do tempo resumida de cada
procedimento. Na página, o resumo de qualquer documento da linha do tempo tem um botão "Ver
resumo do processo" que busca e mostra o arquivo correspondente aqui.
## Projeto relacionado
[**vorcaros**](https://rafapolo.github.io/vorcaros/) — visualização em grafo da rede societária
(empresas e sócios) ligada às mesmas pessoas que aparecem nesta linha do tempo processual. Os dois
projetos olham o mesmo caso por ângulos diferentes: um pela rede de negócios, este pelo andamento
processual.
## Aviso
Este projeto reúne informações de um processo público em curso no STF. Nomes, datas e descrições
refletem o conteúdo dos autos tal como disponibilizado; erros de extração automática (OCR, NER,
digitação no material de origem) podem existir. Não constitui manifestação jurídica sobre culpa,
inocência ou qualquer qualificação processual das pessoas mencionadas.