No description
Find a file
2026-07-10 16:28:18 -03:00
src fix: correção no modelo tecnospeed 2026-07-10 16:28:18 -03:00
.gitignore fix: correção no modelo tecnospeed 2026-07-10 16:28:18 -03:00
buildImages.sh fix: correção no modelo tecnospeed 2026-07-10 16:28:18 -03:00
docker-compose.yml fix: correção no modelo tecnospeed 2026-07-10 16:28:18 -03:00
Dockerfile fix: correção no modelo tecnospeed 2026-07-10 16:28:18 -03:00
envio_cliente.json fix: correção no modelo tecnospeed 2026-07-10 16:28:18 -03:00
modelo_envio_plugnotas.json fix: correção no modelo tecnospeed 2026-07-10 16:28:18 -03:00
modelo_webhook_plugnotas.json fix: correção no modelo tecnospeed 2026-07-10 16:28:18 -03:00
payload_nfe_tray.json fix: correção no modelo tecnospeed 2026-07-10 16:28:18 -03:00
pedido_completo.json fix: correção no modelo tecnospeed 2026-07-10 16:28:18 -03:00
README.md fix: correção no modelo tecnospeed 2026-07-10 16:28:18 -03:00
requirements.txt fix: correção no modelo tecnospeed 2026-07-10 16:28:18 -03:00
webhook.json fix: correção no modelo tecnospeed 2026-07-10 16:28:18 -03:00

Innovar AMR Tray Controller

Microserviço responsável por atuar como controlador de integrações entre a plataforma de e-commerce Tray, o emissor de NFe Plugnotas e o ERP Sienge.

Visão Geral

Este projeto consome mensagens de uma fila RabbitMQ (originadas de webhooks) e orquestra a comunicação entre diferentes sistemas para automatizar o fluxo de vendas:

  1. Tray (E-commerce):

    • Recebe webhooks de criação (insert) e atualização (update) de pedidos.
    • Busca dados completos do pedido na API da Tray.
    • Atualiza dados fiscais (NFe) no pedido dentro da Tray após faturamento.
  2. Plugnotas (Notas Fiscais):

    • Envia dados do pedido para emissão de Nota Fiscal Eletrônica.
    • Recebe webhooks informando a conclusão da emissão da NFe, extraindo a chave de acesso, o número e os produtos a partir do XML retornado (base64).
  3. Sienge (ERP - Integração via Filas/RPC):

    • Clientes: Envia requisições (RPC) para criação de clientes no Sienge quando um novo pedido é gerado.
    • Títulos a Receber: Envia requisições (RPC) para geração de títulos financeiros no Sienge após a emissão da NFe.

Fluxo de Processamento

1. Webhook Tray (Recebimento)

  • Ação insert: O controlador identifica o novo pedido, cria/sincroniza o cliente no ERP Sienge e atualiza o ID do cliente no banco de dados local.
  • Ação update: Caso o pedido passe para o status "A ENVIAR", o serviço envia os dados mapeados para a fila de emissão de NFe, sinalizando no banco local que o envio ocorreu.

2. Webhook Plugnotas (RecebimentoPlugnotas)

  • Ao receber a confirmação de que a NFe foi gerada com status "CONCLUIDO":
    • Decodifica e extrai as informações pertinentes da nota a partir do XML da NFe.
    • Envia a ordem para criar o título a receber no ERP (Sienge).
    • Atualiza a nota fiscal (chave, link, xml) diretamente no painel da Tray.
    • Grava o status atualizado no banco de dados local.

Tecnologias e Bibliotecas

  • Python 3
  • Bibliotecas Principais: Pydantic (validação de dados), SQLAlchemy/Psycopg2 (banco de dados), Redis, Requests, Pika (RabbitMQ).
  • Mensageria: RabbitMQ para filas assíncronas e RPC, facilitado pelas bibliotecas base da equipe (Exchange2).
  • Banco de Dados: PostgreSQL (Persistência de estado dos pedidos, status de integrações e logs).
  • Cache / Configuração: Redis (Armazenamento e busca das credenciais e configurações de ambiente em tempo real).
  • Infraestrutura: Docker & Docker Compose.

Como Executar

Pré-requisitos

  • Docker e Docker Compose instalados no ambiente de execução.
  • Acesso aos repositórios Git base (Exchange2 e SoftGOModel) pois o script de build fará o clone de dependências proprietárias.
  • Instâncias do Redis, RabbitMQ e PostgreSQL acessíveis na rede (sg_base_network).

Passos para Build e Deploy

  1. Clone o repositório e navegue até a pasta raiz.
  2. Execute o script de build para baixar as dependências e criar a imagem Docker:
    chmod +x buildImages.sh
    ./buildImages.sh
    
  3. Inicie o container com o Docker Compose:
    docker-compose up -d
    

Variáveis de Ambiente e Configurações

O container do controller possui poucas configurações no docker-compose.yml, pois o sistema busca suas credenciais principais (banco, AMQP, endpoints, chaves de API da Tray, etc.) diretamente de uma chave JSON no Redis (innovar_amr_tray-system_config-innovar). Certifique-se de que essa chave JSON esteja corretamente populada no Redis para que o microserviço consiga inicializar.

Estrutura de Diretórios

  • src/controller.py: Ponto de entrada do serviço e consumidor principal da fila RabbitMQ.
  • src/services/: Regras de negócio, transformações e mapeamentos (Tray para Sienge, Tray para NFe).
  • src/models/: Definições Pydantic para validação das estruturas de dados.
  • src/api/: Comunicação HTTP direta com APIs externas.
  • src/db/: Instância e métodos de comunicação com o PostgreSQL local.