# ClientFlow v4928.1.5.1 — Task Reply Audit

Esta versão adiciona um script operacional para auditar todas as tarefas e comparar, para cada uma, o pedido do cliente com a resposta sugerida pelo `Reply Assistant`.

## Objetivo

Permitir rever em lote se o assistente está a interpretar corretamente:

- o pedido real do cliente;
- o `action_code` atual da tarefa;
- o template/modelo escolhido;
- o conhecimento BLIF usado;
- a resposta sugerida;
- bloqueios e avisos antes de envio.

O script é **read-only** por defeito: não envia mensagens, não conclui tarefas e não cria rascunhos persistentes.

## Script

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

Ficheiro:

```text
scripts/audit_task_reply_suggestions.py
```

## Exemplos

Auditar todas as tarefas pendentes:

```bash
python scripts/audit_task_reply_suggestions.py \
  --status pending \
  --format markdown \
  --out /tmp/clientflow_task_reply_audit.md
```

Auditar todas as tarefas e exportar CSV:

```bash
python scripts/audit_task_reply_suggestions.py \
  --status all \
  --format csv \
  --out /tmp/clientflow_task_reply_audit.csv
```

Auditar apenas tarefas comerciais:

```bash
python scripts/audit_task_reply_suggestions.py \
  --status pending \
  --route comercial \
  --format markdown
```

Testar com LLM/OpenRouter ativo:

```bash
python scripts/audit_task_reply_suggestions.py \
  --status pending \
  --use-llm \
  --format markdown
```

> Por defeito, o script força `CLIENTFLOW_REPLY_LLM_ENABLED=false` para evitar custos e variação de resultados. O LLM só é usado com `--use-llm`.

## Campos do relatório

Cada tarefa inclui:

- Task ID;
- estado/fila;
- cliente/contacto;
- conversa Chatwoot;
- action code;
- template escolhido;
- tipo de resposta;
- conhecimento BLIF usado;
- anexos selecionados;
- pedido do cliente;
- resposta sugerida atual;
- resposta sugerida anterior da preparação, quando existir;
- bloqueios;
- avisos.

## Segurança operacional

Por defeito o script usa:

```text
persist=False
CLIENTFLOW_REPLY_LLM_ENABLED=false
```

Isto significa que o teste não altera estado operacional. Para gravar `message_drafts` de auditoria, usar explicitamente:

```bash
--persist-drafts
```

## Requisitos

Executar no backend ClientFlow com `.env` ou `DATABASE_URL` definido.

```bash
cd /caminho/clientflow_backend
python scripts/audit_task_reply_suggestions.py --status pending
```

Se não existir `OPENROUTER_API_KEY`, o script define um valor interno `not-used-by-task-reply-audit` quando o LLM está desligado, porque o `app.config` exige essa variável.

## Utilidade para afinar o agente

Este relatório é útil para encontrar casos como:

```text
Cliente pergunta: “o valor inclui instalação?”
Tarefa atual: SEND_QUOTE
Resposta esperada: esclarecimento sem anexo
```

A partir do relatório é possível identificar onde faltam:

- regras de conhecimento BLIF;
- templates específicos;
- intents/subtipos;
- dados na oportunidade;
- documentos associados.
