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

2.7 KiB

ClientFlow v4.9.2 — External API Sync for Reconciliation

Esta versão liga a área de Reconciliação às APIs externas, de forma conservadora.

Objetivo

Preparar informação solta que existe fora do ClientFlow para ser analisada pelo operador:

  • documentos Jasmin sem oportunidade;
  • faturas/pro-formas/orçamentos criados manualmente;
  • vendas/encomendas Odoo sem oportunidade;
  • envios Packlink sem oportunidade;
  • comprovativos e pedidos externos já suportados na v4.9.1.

Regra de segurança

A sincronização externa não cria oportunidades automaticamente e não confirma pagamentos.

Fluxo:

API externa
  ↓
item de reconciliação
  ↓
operador decide:
  - ligar a oportunidade existente
  - criar oportunidade
  - ignorar

Novos componentes

app/external_reconciliation_sync.py
scripts/sync_external_reconciliation.py

A página /reconciliation recebeu botões para:

Sincronizar Jasmin
Sincronizar Odoo
Sincronizar Packlink
Sincronizar APIs externas

Script

cd /mnt/ssd/home/plx/clientflow_backend
source .venv/bin/activate 2>/dev/null || true

PYTHONPATH=. python scripts/sync_external_reconciliation.py --all
PYTHONPATH=. python scripts/sync_external_reconciliation.py --jasmin --limit 100
PYTHONPATH=. python scripts/sync_external_reconciliation.py --odoo --days 90
PYTHONPATH=. python scripts/sync_external_reconciliation.py --packlink

Configuração

A sincronização respeita os flags existentes:

JASMIN_ENABLED=true
ODOO_ENABLED=true
PACKLINK_ENABLED=true

Se um sistema estiver desativado, o script reporta skipped e não falha.

Frequência sugerida

Jasmin documentos       15 min
Odoo vendas             15-30 min
Packlink envios         30 min
Reconciliação completa  1 vez por dia

Exemplo systemd timer para execução geral:

[Unit]
Description=ClientFlow external reconciliation sync

[Service]
Type=oneshot
WorkingDirectory=/mnt/ssd/home/plx/clientflow_backend
Environment=PYTHONPATH=.
ExecStart=/mnt/ssd/home/plx/clientflow_backend/.venv/bin/python scripts/sync_external_reconciliation.py --all

Timer:

[Unit]
Description=Run ClientFlow external reconciliation sync every 15 minutes

[Timer]
OnBootSec=2min
OnUnitActiveSec=15min
Persistent=true

[Install]
WantedBy=timers.target

O que não faz

Não apaga documentos.
Não substitui orçamentos.
Não emite faturas.
Não confirma pagamentos.
Não fecha oportunidades.
Não cria oportunidades automaticamente.

Validação

Depois do deploy:

PYTHONPATH=. python -m compileall app scripts tests
PYTHONPATH=. pytest -q
PYTHONPATH=. python scripts/sync_external_reconciliation.py --all

Depois abrir /reconciliation e confirmar os candidatos.