Biblioteca para centralizar conexao com filas no rabbit e banco de dados no mongodb para os servicos de retificacao da TJ
Project description
🛠️ LIBRETIFICACAOTJCORE
Biblioteca central (core) dos serviços de retificação eSOCIAL da TJ / Tributo Justo. Não é um serviço executável: é um pacote Python importado pelos microserviços de retificação, fornecendo acesso a banco (MongoDB), mensageria (RabbitMQ), armazenamento (S3), tratativas de arquivos, criptografia e os DTOs/Enums comuns ao domínio.
📝 O que ela faz
- Centraliza a conexão com filas no RabbitMQ e o consumo/publicação de mensagens
- Centraliza a conexão com o MongoDB e expõe repositórios por agregado de domínio
- Centraliza operações de criação, leitura e atualização de arquivos e protocolos
- Disponibiliza serviços para tratativa de arquivos (ZIP), S3 e criptografia de senha
- Disponibiliza DTOs e Enums comuns a todos os serviços de retificação
🧩 Arquitetura
A lib é organizada em quatro categorias de módulos sob libretificacaotjcore/:
| Categoria | Pasta | Responsabilidade | Detalhe |
|---|---|---|---|
| Serviços | services/ |
Integrações externas: RabbitMQ, S3, HTTP, arquivos, cripto | docs/services.md |
| Banco | database/ |
Conexão MongoDB e repositórios por agregado | docs/database.md |
| DTOs | dtos/ |
Modelos Pydantic com validação | docs/dtos-enums.md |
| Enums | enums/ |
Eventos eSOCIAL e fases da retificação | docs/dtos-enums.md |
Como o pacote roda, o padrão async-first e o fluxo das 27 fases de retificação estão em docs/arquitetura.md.
📦 Stack
Pacote libretificacaotjcore (v0.1.95) · Python >=3.13 · build via setuptools.
| Dependência | Uso |
|---|---|
motor |
Driver MongoDB assíncrono |
aio-pika / pika |
Cliente RabbitMQ (async / sync) |
boto3 |
Operações no AWS S3 |
httpx |
Cliente HTTP assíncrono |
aiofiles |
I/O de arquivos assíncrono |
cryptography |
Criptografia de senha (Fernet) |
pydantic |
Validação e serialização dos DTOs |
py7zr |
Suporte 7zip |
🚀 Exemplo rápido
A lib recebe todas as credenciais via construtor — não lê .env próprio. Um serviço consumidor
tipicamente conecta no banco e na fila e processa cada mensagem com um DTO:
from libretificacaotjcore.database.config_db import ConfigDb
from libretificacaotjcore.database.arquivo_repository import ArquivoRepository
from libretificacaotjcore.services.rabbitmq_consumer import RabbitMQConsumer
from libretificacaotjcore.dtos.solicitacao_dto import SolicitacaoDTO
config_db = ConfigDb(host="localhost", user="user", password="pwd", port=27017, db_name="retificacoes")
db = await config_db.get_db() # cria schema/índices e retorna o banco
arquivo_repo = ArquivoRepository(db)
consumer = RabbitMQConsumer(host="localhost", queue="retificacoes", username="guest", password="guest")
await consumer.connect()
async def processar(mensagem: dict) -> bool:
solicitacao = SolicitacaoDTO(**mensagem) # valida o payload da fila
arquivos = await arquivo_repo.buscar_por_cnpj(solicitacao.Cnpj)
...
return True # retornar False sinaliza falha de processamento
await consumer.start_consuming(processar) # loop infinito com auto-reconexão
⚙️ Configuração
É necessário ter o uv (astral) instalado.
Com o UV instalado, execute o comando abaixo para sincronizar as dependências:
uv sync
📺 Como publicar?
Para publicar a lib, gere o build:
uv build
e depois faça o upload:
twine upload dist/*
Obs: é necessário informar o token do PyPI para que o comando funcione.
📚 Documentação
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file libretificacaotjcore-0.1.98.tar.gz.
File metadata
- Download URL: libretificacaotjcore-0.1.98.tar.gz
- Upload date:
- Size: 16.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9b0eb273b7432b0a4f92b20062f0f284b8830bf7fc0e7f3242aa705f14475151
|
|
| MD5 |
2a2a8702c1f5df2817194ce76799a0cd
|
|
| BLAKE2b-256 |
7e8f7156e3104a9825e3f7edb6894d3090c7757db4b3f7a65547ecd1c9ee8c82
|
File details
Details for the file libretificacaotjcore-0.1.98-py3-none-any.whl.
File metadata
- Download URL: libretificacaotjcore-0.1.98-py3-none-any.whl
- Upload date:
- Size: 21.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a123dbb524f898e97c86f964e4abe339cd802a8596ed4b1c9112a6f68351acc5
|
|
| MD5 |
f18a64b9ade95cf7d87acd108ea9cd29
|
|
| BLAKE2b-256 |
82ce77556f093c3bd04354fe0af9b74275c6b5b11d17771cbe8d435e675cb7a3
|