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.96.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.96-py3-none-any.whl (21.0 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: libretificacaotjcore-0.1.96.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.96.tar.gz
Algorithm Hash digest
SHA256 b67233f454a1991bfb06460daa88409918ef3ea9ac77230abb1987fd525d1f7f
MD5 25572f52a40462dbd7aa9725138fec2a
BLAKE2b-256 fb562c6a6db119a52bcb5bb49dbe354b3f13a6ca8ac8eec1955850a44fc3e59a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for libretificacaotjcore-0.1.96-py3-none-any.whl
Algorithm Hash digest
SHA256 4373952c356c1900277c5ffb91f8130b03531e85d926c9f2718ad55756328fc1
MD5 b865db0f65c6d158aa1feb2656d0ebe3
BLAKE2b-256 abb97ee1f3299c7111ffc842c6d45fa6e62020a06844ac7d8ff91b8b3fe3c56d

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