# ClientFlow v4.9.1 — Operational Reconciliation & External Intake Esta versão adiciona uma área de **Reconciliação** para organizar informação que existe fora do ClientFlow antes de a transformar em processo comercial. ## Objetivo O ClientFlow passa a preparar informação solta de: - documentos Jasmin criados fora do ClientFlow; - faturas/orçamentos sem oportunidade; - comprovativos de pagamento recebidos manualmente; - pedidos vindos de WhatsApp, telefone, email direto ou presencial; - futuras vendas Odoo sem oportunidade. A regra principal é: ```text Sincronizar/detetar automaticamente. Criar candidato de reconciliação. Operador confirma ligar, criar oportunidade ou ignorar. ``` ## O que mudou ### Nova página ```text /reconciliation /reconciliacao ``` A página mostra: - itens abertos de reconciliação; - documentos sem ligação; - comprovativos por associar; - ações para criar oportunidade, ligar oportunidade existente ou ignorar. ### Novas tabelas aditivas A versão cria schema adicional no arranque: ```text reconciliation_items payment_proofs ``` É uma alteração aditiva: não remove nem altera dados existentes. ### Entrada manual externa A página permite registar pedidos vindos de canais fora do Chatwoot: ```text WhatsApp Telefone Email direto Presencial Outro ``` Ao registar, o sistema cria: - oportunidade; - task com a próxima ação; - evento de timeline. Não cria IDs falsos de Chatwoot. ### Comprovativos de pagamento Um comprovativo pode ser guardado e ligado a uma oportunidade. Importante: ```text Comprovativo recebido não confirma pagamento. ``` Quando está ligado a uma oportunidade, cria task `CONFIRM_PAYMENT` para validação humana. ### Sincronização local Script novo: ```bash PYTHONPATH=. python scripts/sync_reconciliation_candidates.py ``` Ele procura documentos Jasmin locais em `commercial_documents` sem `opportunity_id` e cria candidatos de reconciliação. ## Fluxo operacional recomendado ```text Documento/Comprovativo/Pedido externo ↓ Reconciliação ↓ Operador decide: - ligar a oportunidade existente - criar oportunidade - ignorar ↓ ClientFlow cria/atualiza oportunidade e task ``` ## O que esta versão não faz - Não confirma pagamentos automaticamente. - Não emite faturas automaticamente. - Não apaga nem substitui documentos Jasmin. - Não fecha oportunidades sozinha. - Não usa LLM para reorganizar sem confirmação humana. ## Validação ```bash PYTHONPATH=. python -m compileall app scripts tests PYTHONPATH=. pytest -q ``` ## Rollback O código pode ser revertido normalmente. As tabelas novas são aditivas e podem ficar sem afetar o fluxo antigo.