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.97.tar.gz (16.2 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.97-py3-none-any.whl (21.0 kB view details)

Uploaded Python 3

File details

Details for the file libretificacaotjcore-0.1.97.tar.gz.

File metadata

  • Download URL: libretificacaotjcore-0.1.97.tar.gz
  • Upload date:
  • Size: 16.2 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.97.tar.gz
Algorithm Hash digest
SHA256 8e987f51dc1fba559831d932cd2742b837134cabe3dd4cd37c8a3d7d5350980d
MD5 bd42de20d643d81862eb0b20f3f21fbd
BLAKE2b-256 8d036a894ebaaf8bd6802d13679f0fda11078ea43aa47d12ec77eeb5afb06dd1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for libretificacaotjcore-0.1.97-py3-none-any.whl
Algorithm Hash digest
SHA256 f133249c131f164c3d36262b86e6b56af931e1502bdc9b7fcd85d813bd659712
MD5 636f5dbb866bb06d92eb2700089f05d5
BLAKE2b-256 56852949ab06d5446570007cfef92289ca4ecb88a1ab46a86b99474c66027d84

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