Commit Graph

21 Commits (31d02a7daad47ced44645271c8fe020455fb0c0a)

Author SHA1 Message Date
Vitor Hugo Belorio Simão 31d02a7daa 📨 feat(integrations): escalar entregas do Brevo com destinatario dinamico
Consolidar as rotas de email por evento em um modelo global dinamico, resolvendo o destinatario a partir do cadastro do usuario e registrando recipient_email e recipient_name em cada entrega do outbox para melhorar rastreabilidade e operacao.

Permitir captura opcional de email no Telegram, salvar o endereco no cadastro do usuario e reaproveitar esse dado em revisao, pedido e aluguel, incluindo prompts de consentimento e reenvio imediato do resumo apos a confirmacao.

Ampliar a configuracao do provider Brevo e dos scripts operacionais com sender por rota, reply-to, cc, bcc, tags, headers, listagem de rotas e entregas, alem de migracoes de bootstrap e cobertura automatizada validada com 100 testes OK.
3 weeks ago
Vitor Hugo Belorio Simão d0b11e368a 🛡️ fix(orchestration): endurecer retomada de fluxos e stress local
- prioriza selecoes e refinamentos corretos em mensagens multiassunto

- adiciona retries defensivos no envio do Telegram sem derrubar o worker

- reidrata o ultimo contrato de locacao apos restart e responde consultas informativas

- restringe a heuristica de informacoes de aluguel para nao sequestrar compra e troca

- preserva expires_at no backend memory e ajusta o stress smoke para usar CPF mock valido

- adiciona regressões automatizadas e valida com 230 testes mais stress smoke pesado
3 weeks ago
Vitor Hugo Belorio Simão a5b28182d9 🔒 fix(observability): mascarar dados sensiveis em logs e historico
Centraliza a sanitizacao de cpf, placa, external_id e identificadores de comprovante para evitar que esses dados sejam persistidos crus no historico conversacional e nos logs operacionais.

Aplica a mascaracao no trace do orquestrador, na auditoria de turnos e no tratamento de erros do satellite do Telegram, preservando apenas fragmentos uteis para troubleshooting.

Amplia a cobertura com testes para persistencia mascarada, leitura de registros legados e payloads de log sanitizados, mantendo a suite completa verde com 209 testes.
3 weeks ago
Vitor Hugo Belorio Simão aa3bc3f3e0 🐛 fix(rental): blindar fluxo ativo e refinar busca por modelo
Evita acoes indevidas de devolucao e pagamento herdadas so pelo contexto recente do aluguel.

Refina a identificacao de modelo para ignorar anos e pedidos genericos, mantendo a listagem aleatoria quando nao houver preferencia especifica.

Adiciona regressoes para follow-ups de locacao, filtros de frota e limpeza de contexto.
3 weeks ago
Vitor Hugo Belorio Simão 2c4e1dd688 🚧 feat(rental): blindar follow-ups e comprovantes multimodais 4 weeks ago
Vitor Hugo Belorio Simão 0ba1660c20 🚧 feat(rental): estruturar fluxo multimodal de aluguel no Telegram
- adiciona frota, contratos e eventos de aluguel ao banco mock, ao seed operacional e ao bootstrap para habilitar o dominio de locacao de ponta a ponta no ambiente local

- cria o rental_service e o rental_flow com listagem da frota, selecao guiada por numero/placa/modelo, abertura e devolucao de contratos e continuidade incremental no orquestrador

- integra o processamento multimodal no Telegram para comprovantes e multas de aluguel, amplia o estado conversacional com contexto de locacao e fixa a resposta deterministica da listagem para permitir escolha apos a consulta

- adiciona cobertura para servico, seed, separacao entre compra e locacao, follow-ups do fluxo, resumo de contexto e cenarios multimodais do Telegram

# Conflicts:
#	app/db/mock_seed.py
#	app/services/orchestration/orchestrator_config.py
#	tests/test_conversation_adjustments.py
4 weeks ago
Vitor Hugo Belorio Simão d1bd972f57 🐛 fix(orchestration): blindar compra, revisao e respostas longas no Telegram
- prioriza cancelamento e listagem corretos sobre drafts antigos de compra, limpa o contexto apos reprovacao definitiva de credito, orienta CPF invalido sem reiniciar o fluxo e reduz listagens de estoque para opcoes curtas e consistentes com a selecao exibida

- adiciona um caminho dedicado para avaliacao de veiculo na troca com aliases normalizados, formatter deterministico e protecao contra desvio indevido para fluxos de revisao ou respostas livres do modelo

- estabiliza cancelamento, remarcacao e listagem de revisoes, reaproveita motivo informado na mesma mensagem, mantem listagens completas em formato compacto e fragmenta automaticamente respostas longas antes do envio ao Telegram

- amplia a cobertura de regressao para compra, revisao, fila conversacional, avaliacao de troca e particionamento de mensagens no satellite
4 weeks ago
Vitor Hugo Belorio Simão d0c29ca374 🐛 fix(sales): priorizar listagem de pedidos sobre follow-up de compra ativo
- impede que mensagens como 'Liste os meus pedidos' sejam consumidas pelo atalho de order_create quando ainda existe draft de compra aberto
- corrige o reaproveitamento indevido da ultima falha de credito em fluxos de vendas ativos, permitindo que a listagem siga para o handler correto
- adiciona regressao cobrindo o cenario de order_list com pending_order_drafts para evitar que a resposta fique presa no erro anterior
4 weeks ago
Vitor Hugo Belorio Simão 65cd775b2a 🧾 feat(audit): persistir historico de conversas no banco mock
- adiciona a tabela conversation_turns ao schema mock com request_id, conversation_id, user_id, canal, mensagem, resposta, status, intent, domain, action, tool, erro e latencia por turno
- integra o OrquestradorService para registrar historico tanto em turnos concluidos quanto em falhas, aproveitando o trace do turno e os metadados de execucao
- cria o ConversationHistoryService com persistencia e consulta list_turns com filtros simples para auditoria interna
- inclui cobertura para persistencia do historico, leitura filtrada e registro de turnos completed/failed na camada de orquestracao
4 weeks ago
Vitor Hugo Belorio Simão 9b6b2a643b 🐛 fix(review): estabilizar follow-ups curtos e remarcacao incremental no Telegram
- consome follow-ups curtos de revisao aberta antes do LLM para preservar data, horario e rascunhos ativos entre mensagens

- melhora a extracao de modelo a partir de resumos curtos e aceita respostas isoladas como Onix quando esse eh o ultimo campo faltante

- faz a remarcacao aceitar amanha 11h ou amanha seguido de 11h sem cair em um novo agendamento de revisao

- prioriza review_reschedule, review_cancel e review_list sobre respostas livres do modelo e amplia a cobertura de regressao da orquestracao
4 weeks ago
Vitor Hugo Belorio Simão 31cd7cdb69 🐛 fix(orchestration): blindar decisoes estruturadas e continuidade do fluxo de revisao
- torna o normalizador de decisoes mais tolerante a saidas quase validas do modelo, aceitando pseudo-JSON, aliases de topo e degradando call_tool ou ask_missing_fields incompletos para coleta estruturada\n- normaliza aliases de tools de revisao, reaproveita argumentos de drafts abertos antes de executar tool direta e aceita today/tomorrow no parsing tecnico de data relativa\n- prioriza confirmacoes pendentes de troca de contexto antes dos follow-ups de venda para evitar que respostas como sim reabram listas de estoque por engano\n- melhora o fluxo de revisao para manter drafts diante de respostas temporais como 14h ou 16h e para pedir apenas horario e campos realmente faltantes quando a data ja foi capturada\n- amplia a cobertura de regressao para confirmacao de context switch, normalizacao de tool calls legadas, continuidade de revisao incremental e confirmacao de horarios sugeridos
4 weeks ago
Vitor Hugo Belorio Simão af30a81cef 🐛 fix(orchestration): blindar continuidade de contexto e fluxos estruturados de revisao e compra
- adiciona snapshots de fluxo, collected_slots e last_tool_result ao estado conversacional, incluindo persistencia no backend em memoria e no Redis\n- endurece o reaproveitamento de revisao, o reset imediato de contexto e a retomada incremental sem perder drafts apos respostas fracas do modelo\n- prioriza follow-ups operacionais de vendas antes do LLM para selecao de estoque, CPF, nova busca e continuidade de pedido/cancelamento\n- normaliza aliases de tools de compra, persiste selecoes pendentes de estoque e preserva sugestoes com budget_relaxed entre turnos\n- melhora a policy de troca de contexto para confirmacoes ambiguas, novos pedidos operacionais e onboarding orientado apos mudanca de dominio\n- amplia a cobertura de regressao para revisao, compra, cancelamento, reset global e execucao estruturada do orquestrador
1 month ago
Vitor Hugo Belorio Simão 8a00b6a68e 🐛 fix(policy): corrigir troca explicita de contexto com fluxo aberto
- impede que uma compra explicita durante revisao aberta seja enfileirada cedo demais com prompt pendente do fluxo atual
- deixa a mudanca seguir para a confirmacao normal de context switch via pending_switch
- adiciona teste para garantir que a policy nao devolve resposta antecipada nem fila automatica nesse cenario
1 month ago
Vitor Hugo Belorio Simão 135718bc43 🐛 fix(orchestration): endurecer execucao de tools e retomada do fluxo de revisao
- saneia argumentos da tool no registry e converte erros de assinatura em falhas controladas

- normaliza argumentos de listagem de agendamentos e rebaixa call_tool incompleto de revisao mesmo com domain inconsistente

- limpa confirmacoes pendentes de revisao quando o usuario inicia um novo agendamento

- adiciona cobertura para listagem de revisoes com kwargs extras e para retomada segura do agendamento
1 month ago
Vitor Hugo Belorio Simão 95f3ed2f6b 🐛 fix(review): blindar agendamento e gestao de revisoes no fluxo estruturado
- prioriza o fluxo de agendamento e reuso do ultimo veiculo sobre respostas livres e remarcacao sem protocolo

- normaliza aliases de tools e argumentos de revisao e rebaixa call_tool incompleto para coleta incremental

- impede listagem de pedidos em mensagens de agendamentos e reforca respostas deterministicas de revisao

- extrai data/hora valida de frases longas e descarta ruido invalido em data_hora

- adiciona logs de progresso e amplia a cobertura de testes conversacionais e do contrato estruturado
1 month ago
Vitor Hugo Belorio Simão 7a7a1f0af7 🐛 fix(state): persistir mutacoes do contexto conversacional no Redis
- adicionar save_user_context ao contrato do repositorio de estado para diferenciar leitura de persistencia explicita
- salvar o user_context apos mutacoes em memoria generica, fila, selecao pendente, troca de dominio e contexto de estoque
- alinhar o backend Redis ao comportamento do store local, evitando perder orcamento, cpf e selecoes entre turnos
- cobrir a persistencia do contexto com os harnesses de teste usados nos fluxos de venda e policy
1 month ago
Vitor Hugo Belorio Simão 21661e8306 🐛 fix(orchestration): priorizar fluxo de compra sobre resposta livre do modelo
- evitar que respostas answer_user ou ask_missing_fields do modelo interrompam compras ja caracterizadas
- manter o order_flow como caminho deterministico quando cpf, orcamento ou perfil ja permitem avancar
- preservar a arquitetura com o modelo decidindo o turno e o backend apenas coordenando a continuidade
- cobrir com teste de regressao o caso reproduzido no servidor para compra com orcamento e cpf
1 month ago
Vitor Hugo Belorio Simão 6fe92a0ae1 🐛 fix(orchestration): normalizar aliases do contrato de decisao do modelo
- aceitar aliases de intent retornados pelo Vertex como place_order e create_order
- converter aliases de campos faltantes como modelo_carro para vehicle_id no fluxo de compra
- redirecionar decisoes de compra quase-validas para collect_order_create em vez de cair no fallback
- cobrir com testes os formatos divergentes retornados localmente e no servidor
1 month ago
Vitor Hugo Belorio Simão e274dc9017 🧠 feat(orchestration): completar contexto de busca de compra com extracao estruturada
- adicionar uma extracao estruturada focada em orcamento e perfil de veiculo para fluxos de vendas
- acionar esse enriquecimento apenas quando o turno ja for de compra e os campos vierem vazios
- manter o backend alinhado ao contrato do modelo sem reintroduzir heuristicas locais
- cobrir o enriquecimento com teste de contrato para o fluxo de decisao
1 month ago
Vitor Hugo Belorio Simão 407727d80b 🧠 feat(orchestration): padronizar erros de tool e reduzir fallback deterministico
- normalizar HTTPException em um contrato estruturado com code, message, retryable e field
- preservar drafts de revisao em erros recuperaveis sem perder o restante do contexto
- delegar a resposta final de tools ao modelo com formatter deterministico apenas como fallback
- registrar request_id, conversation_id e tempos de llm/tool para rastrear cada turno
1 month ago
Vitor Hugo Belorio Simão 8cf79174ee 🧠 feat(orquestrador): deixar o modelo decidir o turno e limitar regex a formalizacao tecnica
Introduz o contrato TurnDecision e a extracao estruturada por turno no planner para que intent, domain, action, selecao e resposta venham do modelo, com validacao Pydantic e fallback previsivel quando o JSON vier invalido.

Tambem extrai a normalizacao tecnica para um modulo dedicado e passa a usar regex apenas para formalizar CPF, placa, protocolos, datas e outros formatos estruturados, reduzindo heuristicas semanticas dentro do normalizador, da policy e dos fluxos de revisao.
1 month ago