# ClientFlow v4928.1.5.3 — Intent Gate & Reply Safety Fix

## Objetivo

Corrigir os falsos positivos encontrados pela auditoria de respostas sugeridas (`audit_task_reply_suggestions.py`), onde bounces, pedidos de remoção, respostas sem interesse e casos de suporte podiam cair em templates comerciais como lista de equipamentos.

## Alterações principais

### 1. ReplyIntentGate

Novo módulo:

```text
app/reply_intent_gate.py
```

Classifica a natureza da mensagem antes de escolher template ou conhecimento BLIF:

- `BOUNCE_EMAIL`
- `UNSUBSCRIBE_REQUEST`
- `ADDRESS_UPDATE`
- `NO_INTEREST`
- `SUPPORT_INCIDENT`
- `COMMERCIAL_CLARIFICATION`
- `VAT_CLARIFICATION`
- `DELIVERY_PAYMENT`
- `RFID_QUESTION`
- `LOAD_BALANCER_QUESTION`
- `CONDOMINIUM_MOBIE`
- `INVOICE_REQUEST`
- `COMMERCIAL_REQUEST`
- `CALLBACK_REQUEST`
- `MANUAL_REVIEW`

### 2. Fallback comercial mais seguro

`SEND_INFO` e `REVIEW_MANUALLY` deixaram de cair por defeito em `SEND_INFO_EQUIPMENT_LIST`.

Novo fallback:

```text
MANUAL_REVIEW_REQUIRED
```

Isto evita enviar lista de equipamentos quando a intenção não está clara.

### 3. Templates operacionais/não comerciais

Novos templates:

- `INTERNAL_BOUNCE_EMAIL`
- `ACK_UNSUBSCRIBE`
- `ACK_ADDRESS_UPDATE`
- `ACK_NO_INTEREST`
- `ACK_SUPPORT_RECEIVED`
- `ACK_CALLBACK_REQUEST`
- `MANUAL_REVIEW_REQUIRED`

### 4. Correção do caso Varisom / instalação

O validador agora permite frases aprovadas como:

```text
sem instalação incluída
A BLIF não presta serviço direto de instalação
qualquer eletricista qualificado
suporte remoto ao eletricista
```

E continua a bloquear promessas incorretas como:

```text
instalação incluída
A BLIF faz a instalação
instalação gratuita
```

### 5. Auditoria melhorada

O script `scripts/audit_task_reply_suggestions.py` passa a mostrar:

- `intent_category`
- `intent_label`
- `intent_reasons`
- contagem por intenção no resumo
- se a resposta comercial foi permitida pela triagem

## Uso recomendado

Depois de instalar a versão, correr:

```bash
cd /mnt/ssd/home/plx/clientflow_backend
python scripts/audit_task_reply_suggestions.py --status pending --format markdown --out /tmp/task_reply_audit_v153.md
```

Ou comparar todos os estados:

```bash
python scripts/audit_task_reply_suggestions.py --status all --format markdown --out /tmp/task_reply_audit_v153_all.md
```

## Segurança

O script continua read-only por defeito:

- não envia mensagens;
- não conclui tarefas;
- não cria rascunhos persistentes;
- não ativa OpenRouter/LLM salvo `--use-llm`.

