{"id":32493919,"url":"https://github.com/augustoarraes/sapju","last_synced_at":"2026-04-27T16:33:34.831Z","repository":{"id":319524236,"uuid":"1078923894","full_name":"augustoarraes/sapju","owner":"augustoarraes","description":"Sistema de Análise de  Processos Jurídicos.","archived":false,"fork":false,"pushed_at":"2025-10-19T06:10:55.000Z","size":320,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-10-19T10:57:10.314Z","etag":null,"topics":["api-rest","docker","fastapi","judge","postgresql","python","rabbitmq"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/augustoarraes.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-10-18T17:57:29.000Z","updated_at":"2025-10-19T06:10:58.000Z","dependencies_parsed_at":null,"dependency_job_id":"20925ce3-7cd3-4039-9376-4e093d824620","html_url":"https://github.com/augustoarraes/sapju","commit_stats":null,"previous_names":["augustoarraes/sapju"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/augustoarraes/sapju","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/augustoarraes%2Fsapju","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/augustoarraes%2Fsapju/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/augustoarraes%2Fsapju/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/augustoarraes%2Fsapju/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/augustoarraes","download_url":"https://codeload.github.com/augustoarraes/sapju/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/augustoarraes%2Fsapju/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32345805,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-26T23:26:28.701Z","status":"online","status_checked_at":"2026-04-27T02:00:06.769Z","response_time":128,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["api-rest","docker","fastapi","judge","postgresql","python","rabbitmq"],"created_at":"2025-10-27T12:37:02.026Z","updated_at":"2026-04-27T16:33:34.826Z","avatar_url":"https://github.com/augustoarraes.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# SAPJu\n\nSAPJu defini com as iniciais de *`Sistema de Análise de Processos Jurídicos`* + `u` minusculo. \n\nMelhor [referência](desafio-python-developer.md) do Sistema. O Sistema distribuído foi desenvolvido com o frame do Python FastAPI, com Docker, Banco de Dados Postgres, eventos com RabbitMQ (*broker* de eventos) e MinIO como storage das extrações. São três microsserviços FastAPI:\n- API: App Backend de Processo e Documentos\n- Publisher: Responsável inserir na fila de eventos do RabbitMQ\n- Extrator: Responsável por consumir a fila de eventos do RabbitMQ e Realizar a Extração dos Textos dos Documentos (cadastrados na API).\nPorquê FastAPI?: Python, Assincrono nativo, alto desempeho, alta performance, leve, moderno, totalmente integrável e muito mais.\n\n## Diretórios do Projeto\n- `sapju`: A API (FastAPI), backend de cadastro de Processo e Documentos (PDFs)\n- `Publisher`: Microsserviço (FastAPI) que lança eventos na fila do RabbitMQ.\n- `Extrator`: Microsserviço (FastAPI) Consumidor do RabbitMQ e Extrator de Texto dos PDFs\n- `documentos`: Documentos exemplos utilizados na App.\n\n## Subindo o Sistema\n\n```bash\ndocker compose up -d\n```\n⚠️ Devido às dependencias entre os serviços, é normal aparecer \"Error\" no inicio do proceso. Ao concluir, todos os containers estarão prontos.\nSugiro em seguida:\n```bash\n# .. Devido ao RabbitMQ demorar um pouco a subir\ndocker restart sapju_publisher sapju_extrator\n```\n\nSwagger da API: [http://127.0.0.1:5000/docs](http://127.0.0.1:5000/docs)\n\nSwagger do Publisher de Documentos: [http://127.0.0.1:5673/docs](http://127.0.0.1:5673/docs)\n\nSwagger do Extrator de Documentos: [http://127.0.0.1:5674/docs](http://127.0.0.1:5674/docs)\n\nAdmin Web do MinIO (S3/armazenamento da Extração dos documentos): [http://localhost:9001](http://localhost:9001)\n\nE, as configurações e credenciais do sistema estão em `/sapju/app/.env` e em `compose.yml`.\n\n## Troubleshooting\n\nListando serviços `docker ps`.\nSempre bom verificar de algum dos serviços não subiram ou cairam `docker logs -f sapju_publisher`. Sendo assim, `docker restart sapju_publisher`, por exemplo. \n\n\n## Utilizando a API\n\n### Cadastrando o Processo\nEndpoint: \n~~~bash\nhttp://localhost:5000/api/processo\n~~~\nBody:\n``` json\n{\n  \"classe\": \"ARE\",\n  \"numero\": 123456,\n  \"orgao_origem\": \"STF\"\n}\n```\n\n### Upload de Documento(s)\nEnpoint:\n~~~bash\nhttp://localhost:5000/api/processos/{processo_id}/documentos\n~~~\nEm Body, escolher `form-data`, criar a `Key` *`arquivos`* e o tipo dessa `Key` é *`File`*. Em `Value`, selecione o Documento para upload.\n\n### Consultando o Processo\nEndpoint: \n~~~bash\nhttp://localhost:5000/api/processos/{processo_id}\n~~~\n\n### Consultando um Documento\nEndpoint:\n~~~bash\nhttp://localhost:5000/api/processos/{processo_id}/documentos/{documento_id}\n~~~\n\n### Status da Extração do Texto\nEndpoint: \n~~~bash\nhttp://localhost:5000/api/processos/{processo_id}/documentos/{documento_id}/status\n~~~\n\n\n## Rodando os Testes\n```bash\ndocker exec -it sapju_api pytest\n```\nAqui iniciei a implementação dos Testes de Integração. Não implementei nenhum teste unitário até então.\n\n\n## Arquitetura da Aplicação\n\nOs Processos Judiciais e Documentos são cadastrados via Api. Assim que os documento são inseridos, são lançados (*publisher*) na esteira de eventos do Rabbit.\nO extrator consome os arquivos disponíveis na fila, realiza a extração de texto e persiste em outro serviço de *storage* MinIO.\n\n![SAPJU](sapju.png)\n\n\n## Melhorias e Futuras Features\n\nConcluir a ETL (Extrair, Transformar e Carregar). Pois ainda faltaria Transformar e Carregar.\n\nUma camada posterior a esse App, um Treino inicial de modelos IA.\n\n\n## Contato\n\nAugusto Arraes\n[(85) 99991 6898](https://wa.me/5585999916898)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faugustoarraes%2Fsapju","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faugustoarraes%2Fsapju","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faugustoarraes%2Fsapju/lists"}