Este modulo conecta a API com a engine de calculo de rebates. Ele envia
mensagens de execuções via RabbitMQ. e transmite progresso em tempo real para o webapp.
POST /rebates-execution/schedule com as redes.request_id e publica uma mensagem por rede no RabbitMQ.WS /rebates-execution/progress.POST /rebates-execution/schedule -> Envia mensagem para execução de um rebate na engine.Se retail_chain_ids vier vazio, a API busca todas as redes cadastradas (Função
de executar todos as redes).
A resposta retorna request_id e status=scheduled.
O processamento roda em background (nao bloqueia a resposta HTTP).
Request (classe ExecutionScheduleRequest):
class ExecutionScheduleRequest:
retail_chain_ids: list[int]
include_reports: list[str] | None
exclude_reports: list[str] | None
Response (classe ExecutionScheduleResponse):
class ExecutionScheduleResponse:
request_id: str
status: "scheduled"
Websocket para enviar progresso ao cliente.
running_networks com as redes em execução.send_json; caso contrario, envia texto.SCHEDULE_EXCHANGE: onde a API publica as agendas.
rebates.execution.schedulePROGRESS_EXCHANGE: onde a engine publica progresso.
rebates.execution.progressA API publica uma mensagem por rede:
class ExecutionScheduleMessage:
request_id: str
retail_chain_id: int
Observacao: no fluxo atual, apenas request_id e retail_chain_id sao enviados
para a engine. Os campos include_reports/exclude_reports não sao propagados
na mensagem publicada, futuramente isso será corrigido para quando rodar um rebate
ter a opção de excluir um determinado report
RunningRetailChains (schema rebates): tabela usada para informar quais