2.4 KiB
2.4 KiB
ClientFlow v4928.1.5.125 — Follow-up e ciclo de vida comercial
Objetivo
Reduzir o risco de perder oportunidades porque a primeira comunicação não chegou e impedir que oportunidades sem resposta permaneçam indefinidamente no funil ativo.
Alterações principais
- Primeira confirmação no dia útil seguinte ao envio.
- Cadências diferentes para informação, orçamento e pagamento.
- Nova ação interna
CONFIRM_DELIVERYpara validar destinatário, documento, outbox e bounce. - Estados operacionais: ativa, a aguardar cliente, follow-up vencido, recuperação e acompanhamento futuro.
- Fila e filtro de recuperação na página de oportunidades.
- Filtros para follow-up vencido, inativas, por valorizar e nurture.
- Cartões com valor, dias sem resposta, próximo contacto e número de tentativas.
- Atividade comercial baseada em timestamps próprios, sem usar
updated_attécnico. - Reabertura segura por resposta do cliente apenas para
LOST/NO_INTERESTna mesma conversa. - Motivo obrigatório ao fechar como perdida; timing futuro deve usar nurture.
- Resposta do cliente cancela follow-ups obsoletos e reativa o processo.
- Script de backfill em dry-run por defeito.
Cadências
Informação e orçamento
- Dia útil seguinte: confirmar receção e entrega técnica.
- +2 dias úteis: interesse/dúvidas.
- +4 dias úteis: decisão/qualificação.
- +5 dias úteis: última tentativa.
- Recuperação.
Pagamento
- Dia útil seguinte: confirmar receção.
- +2 dias úteis: pedir data prevista.
- +3 dias úteis: lembrete.
- +3 dias úteis: contacto direto/canal alternativo.
- +5 dias úteis: rever intenção.
- Recuperação.
Base de dados
A atualização é aditiva. ensure_opportunity_schema() cria as colunas em falta:
lifecycle_statelast_customer_activity_atlast_operator_activity_atlast_outbound_sent_atlast_delivery_checked_atlast_delivery_statuslast_commercial_activity_atnext_follow_up_atfollow_up_attemptsnurture_untillost_reason
Migração segura
Simular:
python scripts/sync_opportunity_followup_lifecycle.py --limit 50
Aplicar depois de rever:
python scripts/sync_opportunity_followup_lifecycle.py --apply --limit 50
O script não envia comunicações. Cria somente tasks humanas e nunca usa updated_at como atividade comercial.
Validação
compileall: OK
496 testes passados