# ClientFlow v4.9.26.5 — Manual opportunity from fiscal customer

Inclui também a hotfix `v4926.4.1_skip_duplicate_identity_suggestion`.

## Alterações principais

- Página do cliente fiscal passa a ter formulário **Nova oportunidade**.
- Permite criar oportunidade manual por telefone, WhatsApp, email, presencial ou manual.
- A oportunidade nasce já ligada ao `customers.id` fiscal.
- Opcionalmente cria uma task inicial para a próxima ação.
- Guarda snapshot fiscal do cliente na metadata da oportunidade.
- Regista evento `manual_opportunity_created` na timeline da oportunidade.
- O assistente de identidade de email deixa de criar sugestão pendente duplicada quando o cliente sugerido já é o cliente fiscal atual.
- O detalhe da oportunidade mostra mensagem específica quando a identidade extraída confirma o cliente fiscal atual.

## Configuração recomendada

```env
EMAIL_IDENTITY_EXTRACTION_ENABLED=true
EMAIL_IDENTITY_EXTRACTION_USE_LLM=true
EMAIL_IDENTITY_LLM_MODEL=qwen/qwen3-235b-a22b-2507
EMAIL_IDENTITY_LLM_FALLBACK_MODEL=qwen/qwen3-max
EMAIL_IDENTITY_LLM_TIMEOUT_SECONDS=20
EMAIL_IDENTITY_LLM_MAX_BODY_CHARS=3500
```

## Testes manuais recomendados

### Criar oportunidade a partir de cliente fiscal

1. Abrir `/customers`.
2. Abrir uma ficha de cliente.
3. Usar o formulário **Nova oportunidade**.
4. Confirmar que a nova oportunidade abre em `/opportunities/{id}`.
5. Confirmar que o cliente fiscal já está associado.
6. Confirmar que a task inicial aparece quando a checkbox está marcada.

### Validar skip duplicate identity suggestion

```bash
PYTHONPATH=. python - <<'PY'
from app.fiscal_enrichment_service import assist_email_identity_enrichment
print(assist_email_identity_enrichment("OPPORTUNITY_ID", refresh=True, apply_safe=False))
PY
```

Se a identidade extraída apontar para o mesmo cliente fiscal já associado, o esperado é:

```json
{
  "suggested": 0,
  "skipped": 1,
  "status": "email_identity_matches_current_fiscal_customer"
}
```
