Commit Graph

20 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 765108c904 🧩 refactor(orchestration): decompor orquestrador e mixins de fluxo
Extrai a gestao de contexto, memoria compartilhada, efeitos colaterais de tools e sugestoes de estoque do OrquestradorService para um OrchestratorContextManager dedicado, mantendo o servico principal focado na coordenacao do turno e preservando os contratos internos ja usados pela aplicacao.

Separa prompts, trace, normalizacao de invocacao, merge de drafts, execucao de tools e renderizacao com fallback em um OrchestratorExecutionManager, enquanto os mixins de venda, revisao e locacao passam a delegar buckets, snapshots e selecoes para helpers especificos apoiados por uma base FlowStateSupport reutilizavel.

Mantem a logica e as regras de negocio inalteradas, endurece a compatibilidade com cenarios de teste que instanciam o servico parcialmente e valida a refatoracao com a suite completa verde em 218 testes.
3 weeks ago
Vitor Hugo Belorio Simão 876b0dd2d1 🐛 fix(identity): validar CPF informado e bloquear vinculo duplicado no mock
- passa a aceitar apenas CPFs validos informados pelo usuario na hidratacao mock, mantendo score, limite e restricoes como dados derivados automaticamente do documento informado

- impede que o mesmo CPF fique vinculado a dois usuarios diferentes, retornando erro de dominio claro no pedido e preservando o fluxo aberto para que o cliente informe outro CPF

- atualiza o seed local para gerar CPFs validos e deterministas, alinhando a base mock aos testes manuais e evitando registros incoerentes no ambiente de validacao

- amplia a cobertura de regressao para seed, order service e fluxo conversacional de compra com CPF invalido ou ja vinculado
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 c7175aa700 🐛 fix(order): reaproveitar selecao textual e priorizar opcoes proximas ao orcamento
- aceita referencias parciais ao modelo a partir da ultima lista de estoque, incluindo prefixos relevantes como T-Cros para T-Cross, sem reiniciar o fluxo de pedido

- ordena a busca de estoque em ordem decrescente quando ha teto de orcamento, mantendo crescente apenas quando o cliente pede explicitamente a opcao mais barata

- amplia as regressões do fluxo de pedido para cobrir selecao textual reaproveitada, confirmacao por modelo e a priorizacao de ofertas mais proximas ao valor informado
4 weeks ago
Vitor Hugo Belorio Simão cdb36ab964 feat(context): enriquecer resumo conversacional e endurecer expiracao do estado
- adiciona helper central de tempo UTC e passa a reutiliza-lo nas rotinas de expiracao, persistencia temporaria e geracao de identificadores operacionais\n- amplia o build_context_summary com fluxo ativo, memoria generica formatada, ultima tool executada, troca de contexto pendente, fila, selecao de estoque e rascunhos de revisao e pedido\n- reaproveita snapshots de fluxo quando uma chave temporaria do bucket nao estiver mais disponivel, mantendo mais contexto util para o modelo\n- padroniza a expiracao do estado em memoria, no Redis e nos fluxos de pedido para reduzir inconsistencias entre turnos e reinicios\n- adiciona testes dedicados para garantir a qualidade do resumo enviado ao modelo em cenarios de revisao, compra e fallback por snapshot
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 b2e17d0c29 🐛 fix(flows): endurecer confirmacao de opcao unica e data relativa em revisao
- exige confirmacao explicita quando a busca de estoque retorna apenas 1 veiculo antes de avancar no pedido
- preserva confirmacao pendente da unica opcao e evita criacao implicita ao receber CPF ou texto livre
- captura data relativa parcial em drafts de revisao reaproveitados e passa a pedir apenas o horario faltante
- adiciona testes para opcao unica em pedidos e para reaproveitamento com data relativa seguida de horario
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 f5a7a720ed 🐛 fix(orchestration): blindar listagem e cancelamento de pedidos no fluxo 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 64b4878cb2 🐛 fix(sales): recuperar cpf e orcamento tecnico no fluxo de compra
- extrair CPF diretamente da mensagem quando o llm falhar em preencher o draft de pedido
- extrair orcamento de formatos tecnicos como '70 mil', 'R$ 45000' e 'ate 50 mil' sem depender da decisao semantica do modelo
- relistar estoque em mensagens de continuidade quando o draft ja estiver aberto e o contexto de compra estiver suficiente
- cobrir com testes os cenarios de follow-up no Telegram em que o llm nao devolve cpf ou orcamento
1 month ago
Vitor Hugo Belorio Simão 6d6b7291ea 🧠 feat(orchestration): reforcar extracao estruturada para pedidos de compra
- remover o fallback semantico local de orcamento e perfil do fluxo de vendas
- enriquecer o turno sempre com uma extracao dedicada de entidades apos a decisao estruturada
- endurecer os prompts para obrigar o modelo a preencher orcamento_max e perfil_veiculo em pedidos de compra
- manter o fluxo alinhado ao contrato do modelo sem reintroduzir regex conversacional
1 month ago
Vitor Hugo Belorio Simão 0eb56f1f0a 🐛 fix(sales): extrair orcamento do pedido sem depender do llm
- adicionar fallback tecnico para capturar orcamento diretamente da mensagem de compra
- inferir perfil de veiculo no fluxo de vendas quando a memoria generica vier incompleta
- garantir a listagem automatica de estoque mesmo quando o modelo nao preencher orcamento_max
- cobrir o cenario com teste focado de pedido sem hints estruturados do llm
1 month ago
Vitor Hugo Belorio Simão 5f229bd745 🐛 fix(sales): atualizar estoque pelo contexto e padronizar escolha por lista
- invalidar resultados antigos quando orcamento ou perfil de veiculo mudarem durante a compra
- relistar o estoque automaticamente ao iniciar um novo pedido com contexto atualizado
- preservar drafts de pedido em erros recuperaveis e limpar apenas o campo invalido
- remover IDs da vitrine de estoque e orientar a escolha pelo numero da opcao exibida
1 month ago
Vitor Hugo Belorio Simão 82fc846e01 🚗 feat(sales): listar estoque pelo contexto e reservar veiculos no pedido
Passa a aproveitar orcamento e perfil guardados na conversa para sugerir estoque quando a compra ainda nao tem veiculo definido, preservando a selecao na memoria e guiando o usuario ate o fechamento do pedido.

Tambem impede que veiculos reservados continuem aparecendo como disponiveis, devolve o status do veiculo na resposta deterministica do pedido e amplia os testes de regressao dos fluxos de compra e cancelamento.
1 month ago
Vitor Hugo Belorio Simão 134a5fef41 🚗 feat(sales): vincular pedido ao veiculo selecionado e endurecer fluxos conversacionais
Passa a criar pedidos de compra a partir de um veiculo concreto do estoque selecionado na conversa, reaproveitando a ultima consulta e exibindo o modelo escolhido na resposta final.

Tambem endurece a orquestracao contra vazamento de contexto entre compra, cancelamento e revisao, preserva o estado necessario no fluxo e adiciona testes de regressao para os cenarios validados no Telegram.
1 month ago
Vitor Hugo Belorio Simão 6537808963 🐛 fix(flows): endurecer validacao e preservar drafts
Impede que consultas de estoque caiam no fluxo de compra, evita reaproveitamento implícito de CPF para criar pedidos e mantém drafts quando a execução da tool falha.

Também preserva corretamente o estado de revisão, limpando o draft apenas quando a operação conclui com sucesso ou quando a confirmação pendente passa a ser o estado principal.
1 month ago
Vitor Hugo Belorio Simão 57dc824242 🧠 feat(orquestrador): ampliar controle conversacional e hidratar cliente mock por CPF
- adiciona tools de orquestracao para limpar contexto, descartar fila, cancelar fluxo e continuar pedidos pendentes
- prioriza a decisao do LLM para comandos globais antes dos slot fillings ativos
- melhora selecao entre pedidos concorrentes e resposta deterministica das tools de orquestracao
- estrutura conflitos de horario de revisao para facilitar confirmacao posterior
- reaproveita CPF da memoria/perfil do usuario no fluxo de compra
- cria servico mock para hidratar customer e vincular users.cpf ao informar um CPF valido
1 month ago
Vitor Hugo Belorio Simão a412f9c674 🧹 cleanup(services): reorganiza estrutura interna em subpastas por responsabilidade
Redistribui os arquivos de app/services em modulos mais claros, separando orchestration, flows, ai, tools e user sem alterar a logica de negocio ou o comportamento funcional do sistema.

Ajusta os imports afetados em rotas, startup da aplicacao e integracao com Telegram para refletir a nova organizacao interna e manter o fluxo atual intacto.

Objetivos da limpeza:

- reduzir a sensacao de pasta deposito em app/services

- tornar o papel de cada modulo mais explicito

- melhorar manutencao e navegacao do projeto

- preparar o codigo para crescimento futuro com menor acoplamento estrutural
1 month ago