Files
clientflow_backend/docs/CLIENTFLOW_V491_OPERATIONAL_RECONCILIATION.md
2026-06-09 22:55:58 +01:00

2.7 KiB

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 é:

Sincronizar/detetar automaticamente.
Criar candidato de reconciliação.
Operador confirma ligar, criar oportunidade ou ignorar.

O que mudou

Nova página

/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:

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:

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:

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:

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

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

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.