Skip to main content

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

libretificacaotjcore-0.1.98.tar.gz (16.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

libretificacaotjcore-0.1.98-py3-none-any.whl (21.2 kB view details)

Uploaded Python 3

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

Hashes for libretificacaotjcore-0.1.98.tar.gz
Algorithm Hash digest
SHA256 9b0eb273b7432b0a4f92b20062f0f284b8830bf7fc0e7f3242aa705f14475151
MD5 2a2a8702c1f5df2817194ce76799a0cd
BLAKE2b-256 7e8f7156e3104a9825e3f7edb6894d3090c7757db4b3f7a65547ecd1c9ee8c82

See more details on using hashes here.

File details

Details for the file libretificacaotjcore-0.1.98-py3-none-any.whl.

File metadata

File hashes

Hashes for libretificacaotjcore-0.1.98-py3-none-any.whl
Algorithm Hash digest
SHA256 a123dbb524f898e97c86f964e4abe339cd802a8596ed4b1c9112a6f68351acc5
MD5 f18a64b9ade95cf7d87acd108ea9cd29
BLAKE2b-256 82ce77556f093c3bd04354fe0af9b74275c6b5b11d17771cbe8d435e675cb7a3

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page