# 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=$?"
```
