Receba novidades do Hedhog no seu e-mail
Novos lançamentos, receitas e breaking changes — sem spam.
Submódulo sac
ai-suggestions
Rascunhos de resposta por IA para o atendente, refináveis em linguagem natural e nunca enviados sem confirmação humana.
Caminho de origem: libraries/sac/src/ai
Arquivo do módulo: sac-ai.module.ts
Introdução
Um rascunho é gerado a cada chamado novo e a cada resposta do cliente. Como todas as entradas convergem para os mesmos dois métodos, e-mail e WhatsApp ganham isso de graça. A geração automática roda na fila — ninguém está esperando por ela —, enquanto um rascunho pedido ou refinado na tela é síncrono, porque ali há um atendente olhando.
O atendente tem três saídas, todas atos explícitos: confirmar e enviar, refinar com uma instrução em linguagem natural ("mais curto", "cite o prazo de 5 dias úteis") ou jogar o texto no editor. Os refinamentos se encadeiam por `parent_suggestion_id`, então a sequência de ajustes fica auditável. Confirmar passa pelo caminho de resposta de sempre, com o mesmo transporte por canal, o mesmo SLA e o mesmo registro de eventos.
Só mensagens públicas entram no contexto: notas internas são onde a equipe escreve o que não vai para o cliente. Um índice único parcial garante um rascunho AUTOMÁTICO por mensagem disparadora — uma conversa de WhatsApp com dez mensagens seguidas não vira dez chamadas ao modelo —, enquanto os refinamentos pedidos pelo atendente ficam de fora dele de propósito. O prompt de sistema é registrado com frases obrigatórias que carregam a defesa contra injeção de prompt: se um override no banco as remover, o resolvedor descarta o override e volta à versão em código, de modo que a proteção não sai pela tela do admin.
Endpoints HTTP
4 endpoints
Último rascunho do chamado, para a tela mostrar sem esperar a geração.
- Params
- id (int)
Gera um rascunho ou refina o atual. Síncrono: há um atendente esperando na tela.
- Params
- id (int)
Body
| Field | Type | Required | Notes |
|---|---|---|---|
| instruction | string (max 1000) | no | Plain-language adjustment; empty generates a fresh draft |
| parent_suggestion_id | int | no | Draft being refined; empty uses the most recent |
Confirma e publica o rascunho como resposta do atendente, marcando a sugestão como usada.
- Params
- id (int)
Body
| Field | Type | Required | Notes |
|---|---|---|---|
| body | string | no | What was actually sent — the agent may have edited the draft before confirming |
Registra o feedback ou descarta o rascunho.
- Params
- id (int)
Body
| Field | Type | Required | Notes |
|---|---|---|---|
| feedback | helpful | not_helpful | no | — |
| status | discarded | no | — |