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

Uploaded Python 3

File details

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

File metadata

  • Download URL: libretificacaotjcore-0.1.95.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.95.tar.gz
Algorithm Hash digest
SHA256 2755e3181d52924b1f8c81fc7d2fed55a23c2f10019858f8020fa480e2cd7df1
MD5 a3db42e8bd32a03c08f38c5ba622755e
BLAKE2b-256 25a65468c35a949392f03b1f346ef5e09aca0e2475b553a6cc150cbf32c31da3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for libretificacaotjcore-0.1.95-py3-none-any.whl
Algorithm Hash digest
SHA256 612a89d30f717f1f0be6e8e6a75f0bea24e0dee97c0ecfddd9604565750982c4
MD5 bcb7b09998f8cf8ca6e7471fe01a37d5
BLAKE2b-256 262c2c5b11d0f4ce101900d2c90991298301d3dde4e4ce003c4d28b8599531f4

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