Desenvolvimento de uma API Crawler que busca dados de um processo em todos os graus dos Tribunais de Justiça de Alagoas (TJAL) e do Ceará (TJCE).
- Criar uma API para receber um JSON contendo o número do processo
- Buscar dados de um processo em todos os graus
- Retornar um JSON com os dados dos processos encontrados em todas as esferas
- Validação do número de processo
- Identificação do tribunal a partir do número do processo
- Busca e extração dos dados do processo em primeira e segunda instância
- Busca de forma paralela entre as diferentes esferas (concorrência)
- Testes unitários
- Banco de dados com tribunais
- Escalabilidade: possibilidade de adicionar novos tribunais ao crawler
- Versionamento de código
- Linguagem de programação: Python
- Framework FastAPI para criar a API web
- Banco de dados em SQLite3 para armazenar os tribunais
- Algumas das bibliotecas usadas:
- BeautifulSoup: Utilizada para fazer o parsing e extrair informações de páginas HTML.
- Requests: Utilizada para fazer as requisições HTTP
- Asyncio: Utilizada para executar tarefas assíncronas de forma paralela.
- Unittest: Utilizada para escrever testes unitários e comparar com resultados esperados.
Disclaimer: Este projeto utiliza o banco de dados localmente, o que não é considerado uma boa prática em ambientes de produção. Essa abordagem foi adotada apenas para fins de apresentação do desafio técnico.
Nesta seção, apresento algumas funcionalidades adicionais que poderiam ser implementadas no futuro, visando melhorar o acesso às informações jurídicas:
-
Adição de novos tribunais do ESAJ (rotas de adição já estão implementadas) e tratamento de possíveis divergências entre diferentes tribunais.
-
Busca por documento da parte:
- Dessa forma seria possível encontrar um processo e todas as informações referentes a esse, sem precisar do número do processo em si.
- Para isso deveria ser implementada uma busca pelo documento + raspagem dos códigos dos processos listados + busca pelo código do processo (que já está implementada).
-
Armazenamento das movimentações e desenvolvimento de um sistema de jurimetria com uma rotina de cronjobs, notificando alguma parte interessada sobre as novas movimentações do processo.
Este documento fornece instruções para a instalação da API. Siga as etapas abaixo para configurar o ambiente e executar a API em seu sistema.
Certifique-se de que seu sistema atenda aos seguintes requisitos:
- Python 3.9 ou superior instalado
- Acesso à internet para instalar dependências e rodar o crawler
Para começar, clone o repositório do projeto em um diretório local. Abra o terminal e execute o seguinte comando:
git clone https://github.com/viniavena/prosel-jusbrasil.git
Isso criará uma cópia do projeto em seu sistema.
Recomendo o uso de um ambiente virtual para isolar as dependências do projeto. Siga as etapas abaixo para configurar um ambiente virtual:
- No terminal, navegue até o diretório do projeto e crie um novo ambiente virtual:
python3 -m venv crawler-venv
- Ative o ambiente virtual:
source crawler-venv/bin/activate
Agora você está dentro do ambiente virtual e pronto para instalar as dependências.
A API requer algumas dependências para ser executada corretamente. Para instalá-las, execute o seguinte comando no terminal:
pip install -r requirements.txt
Isso instalará todas as dependências necessárias para a API.
Após concluir a configuração, você pode iniciar o servidor da API. No terminal, execute o seguinte comando:
uvicorn main:app --reload
Aguarde a mensagem "Uvicorn running on..." no terminal, indicando que o servidor está em execução.
A API agora está rodando em http://localhost:8000 ou em outro endereço e porta especificados pelo Uvicorn.
A API está pronta para uso. Você pode enviar solicitações para a API usando ferramentas como o cURL, Insomnia, Postman ou qualquer biblioteca HTTP de sua preferência.
Consulte a seguinte documentação da API para obter mais detalhes sobre os endpoints disponíveis e os formatos das solicitações e respostas.
Uma demonstração da API está disponível aqui.
Você também pode acessar uma documentação interativa da API aqui.
Disclaimer: Na versão publicada na demo, não é utilizado multithreading entre as diferentes esferas e não é possível adicionar ou deletar tribunais da tabela.
Uma vez inicializado o servidor é possível acessar uma documentação automática e interativa por meio de: http://127.0.0.1:8000/redoc
A documentação a seguir descreve os endpoints disponíveis na API.
Retorna uma mensagem de boas-vindas ao robo crawler do ESAJ Alagoas e Ceará. Use o método POST para buscar informações usando o número do processo.
Descrição: Busca informações sobre um processo com base no número do processo fornecido.
Parâmetro:
- numero_processo (string): O número do processo a ser pesquisado.
O número do processo deve seguir o padrão CNJ de numeração de processos jurídicos: NNNNNNN-DD.AAAA.JTR.OOOO
Exemplo de requisição:
{
"numero_processo": "0705244-63.2022.8.02.0001"
}
Retorna uma lista com todos os tribunais disponíveis no crawler.
Busca um tribunal pelo seu ID. Parâmetro:
- tribunal_id (string): O ID do tribunal a ser buscado.
Adiciona um novo tribunal à lista de tribunais. Parâmetro:
- objeto da classe Tribunal:
- tribunal_id (string): O ID do tribunal a ser adicionado.
- uf (string): sigla UF do estado em questão
- base_url (string): radical da url do esaj correspondete ao tribunal
Exemplo de requisição:
{
"tribunal_id": "06",
"uf": "CE",
"base_url": "https://esaj.tjce.jus.br"
}
Deleta um tribunal da lista de tribunais. Parâmetro:
- tribunal_id (string): O ID do tribunal a ser deletado.