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

Uploaded Python 3

File details

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

File metadata

  • Download URL: libretificacaotjcore-0.1.99.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.99.tar.gz
Algorithm Hash digest
SHA256 519ce06190184b2b7e66509f1fc3633ac6e05e5e921d8e1a27480a75f6b2d2ab
MD5 3b6f8c800bc7d6a95556be6a2f443d65
BLAKE2b-256 413d4887e08bec6686e46172f88e114010c18a193194f230e8458edcc159a1d3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for libretificacaotjcore-0.1.99-py3-none-any.whl
Algorithm Hash digest
SHA256 79601372d928b021c69cd4818d6f6baf260d2606274b9eebee9d09641c7e9c7f
MD5 f71705e4a1b2d5966d69e08dc9501f50
BLAKE2b-256 3b07e9dd23bc9c08c8995518f72fbc672df0cfda409f3d99489ef6c731238dd2

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