# ClientFlow v4928.1.5.41 — workflow anomaly fixes

Correções focadas nas anomalias funcionais encontradas pelos testes `workflow_anomaly_hunt` e `workflow_anomaly_hunt_v2`.

## Corrigido

- Normalização de email em clientes: `trim + lower`, com reutilização lógica da ficha existente quando não há NIF.
- Validação simples de email inválido ao criar/editar cliente.
- Bloqueio de regressões perigosas de estado: oportunidades `WON/LOST/NO_INTEREST` não regressam para fases comerciais sem reabertura explícita.
- Fecho automático de tarefas pendentes incompatíveis quando a oportunidade passa a estado terminal.
- Bloqueio operacional com HTTP 409 em ações incompatíveis com o estado da oportunidade.
- Idempotência de tarefas repetidas por fingerprint da mensagem, evitando múltiplos `SEND_QUOTE` pendentes para o mesmo pedido repetido.
- Follow-ups limitados a uma janela operacional segura: 1 a 30 dias.
- Webhook Chatwoot incompleto passa a devolver 422 em vez de aceitar payload vazio/incompleto.
- Validação de produtos e linhas de oportunidade: preços/quantidades negativas ou inválidas são recusados.
- Runner `workflow_anomaly_hunt_v2` ajustado para não falhar na fase documental e para reconstruir reconciliação após seed documental.

## Comandos de validação recomendados

```bash
./e2e_test_lab/scripts/run_e2e_lab.sh | tee e2e_test_lab/latest_e2e_run.log
./e2e_test_lab/scripts/run_deep_e2e_lab.sh | tee e2e_test_lab/latest_deep_e2e_run.log
./e2e_test_lab/scripts/run_workflow_anomaly_hunt.sh | tee e2e_test_lab/latest_workflow_anomaly_run.log
./e2e_test_lab/scripts/run_workflow_anomaly_hunt_v2.sh | tee e2e_test_lab/latest_workflow_anomaly_v2_run.log
```
