# v4928.1.5.37 — terminal flow guard + Odoo sync panel Combina a correção `v4928.1.5.36_terminal_opportunity_flow_guard` com a nova área `v1.5.37_odoo_sync_panel`. ## Inclui de v1.5.36 - Oportunidades em fase terminal deixam de recomendar follow-ups como próxima ação. - Follow-ups pendentes podem ser fechados em lote quando a oportunidade já está concluída. - O fluxo operacional passa a marcar fatura como concluída quando existe fatura atual emitida. - O chip da decisão seguinte usa o `action_code` real da task pendente. ## Novo em v1.5.37 - Novo painel **Estado Odoo** no detalhe da oportunidade. - Botão **Sincronizar Odoo agora** por oportunidade, equivalente ao fluxo manual de Jasmin. - Painel mostra venda Odoo ligada, cliente/valor Odoo, estado físico, entregas/pickings e produção/preparação. - Lista vendas Odoo ligadas/candidatas a partir de `reconciliation_items`. - Ação para associar uma venda Odoo candidata à oportunidade e atualizar `operation_links`. - Partial HTMX `/opportunities/{opportunity_id}/partials/odoo-status`. - Auditoria read-only `scripts/audit_odoo_opportunity_sync.py` para oportunidades avançadas sem venda/estado físico Odoo sincronizado. ## Segurança operacional - O painel não chama Odoo ao abrir a oportunidade; a sincronização é manual para evitar lentidão e efeitos colaterais. - A associação de candidato Odoo reutiliza a reconciliação existente e não cria documentos fiscais. - O botão de sincronização apenas lê Odoo e atualiza `operation_links`/estado físico ClientFlow. ## Validação recomendada ```bash python -m compileall -q app scripts tests python -m pytest -q python scripts/audit_system_health.py; echo "EXIT_CODE=$?" python scripts/audit_deep_system.py --window-hours 72 --sample-limit 25; echo "EXIT_CODE=$?" python scripts/audit_odoo_opportunity_sync.py; echo "EXIT_CODE=$?" ```