# Turbinar Secretária Virtual — Plano Mestre Integrado

> **Versão 3** — Questões arquiteturais respondidas. Módulo Inbox Interna adicionado.
> Regra de ouro: **auditar → reaproveitar → corrigir → completar → criar novo somente se necessário.**

---

## VISÃO ESTRATÉGICA

Transformar a Secretária Virtual de um bot único em uma
**plataforma operacional inteligente** onde:

- A IA resolve o que sabe com seu cérebro em camadas
- Quando não sabe, **consulta o humano certo via Human API**
- Cada humano tem cargo, setor, permissões e um cérebro próprio
- Todo atendimento vira protocolo rastreável com SLA e satisfação final
- O sistema aprende com cada resposta humana e reduz dependência futura
- A equipe interna se comunica pela **Inbox Interna** (canal separado do cliente)

```
EMPRESA
│
├── Número Oficial (WhatsApp / Inbox Central)
│   └── Secretária IA
│        ├── Cérebro Global
│        ├── Cérebro do Setor
│        ├── Contexto do Cliente
│        └── Human API (quando IA não sabe)
│
├── Equipe Humana (hierarquia real)
│   ├── Dono
│   ├── Gerente
│   ├── Encarregados de Setor
│   ├── Secretárias
│   └── Atendentes / Especialistas
│
├── Inbox Interna (NOVO)
│   ├── Comunicação entre equipe
│   ├── Consultas da Human API
│   ├── Pedidos de ajuda colaborativos
│   └── Aceitar / transferir protocolos
│
└── Motor de Conhecimento
    ├── Base Global (sec_brain_nodes — já existe)
    ├── Base por Setor (sector_brain_nodes — novo)
    ├── Respostas Humanas Aprendidas (knowledge_learning — novo)
    └── Score de Eficiência (escalation_logs — novo)
```

---

## HIERARQUIA HUMANA

```
Dono
└── Gerente
    └── Encarregado de Setor
        ├── Secretária
        └── Atendente / Especialista
```

| Papel            | Inbox Externa | Inbox Interna | Configurações | Setores visíveis | Pode escalar |
|------------------|--------------|---------------|---------------|------------------|--------------|
| `owner`          | Tudo          | Tudo          | Total         | Todos            | Sim          |
| `manager`        | Tudo          | Tudo          | Parcial       | Todos            | Sim          |
| `supervisor`     | Seu setor     | Seu setor     | Nenhuma       | Próprio + sub    | Sim          |
| `secretary`      | Triagem       | Tudo (leitura)| Nenhuma       | Todos (leitura)  | Sim          |
| `agent`          | Seu setor     | Seu setor     | Nenhuma       | Próprio          | Não          |
| `viewer`         | Leitura       | Leitura       | Nenhuma       | Próprio          | Não          |

> ⚠️ **Auditoria prévia:** verificar se o sistema alemão já tem algum modelo de permissões,
> roles ou usuários no banco antes de criar tabelas novas.

---

## DECISÕES ARQUITETURAIS (RESPONDIDAS)

### 1. Contas têm login na interface?

**Modelo híbrido — ambos.**

Cada colaborador pode operar de duas formas:
- **Login próprio na plataforma** (email + senha / sessão individual)
- **Somente número pessoal cadastrado** para receber consultas da IA via Human API

```
Usuário interno entra no sistema
        ↓
Acessa Inbox Interna (novo ícone na ThinSidebar)
        ↓
Recebe chamados / consultas / protocolos
```

### 2. Multi-equipe?

**Equipe única por tenant agora.** Arquitetura preparada com `team_id` opcional para virar multi-equipe depois sem quebrar o schema.

### 3. Setor: quem identifica?

**IA tenta, humano corrige (modelo C).**

```
Mensagem chega → IA classifica setor provável → Humano pode corrigir se necessário
```

### 4. Human API — número pessoal?

**Modelo misto (A + B):**

| Situação | Comportamento |
|----------|---------------|
| Número conectado ao motor | Especialista responde diretamente no sistema |
| Número não conectado | Recebe pergunta na Inbox Interna / responde pelo painel |

```
Se conectado → recebe no WA pessoal, responde no sistema
Se não conectado → recebe e responde na Inbox Interna
```

### 5. Timeout sem resposta?

**5 minutos com reescalação inteligente.**

```
5 min sem retorno
    ↓
IA procura outro humano do mesmo setor
    ↓
Mensagem automática: "Não encontrei [nome]. Alguém do setor pode assumir?"
    ↓
Se nenhum disponível → handoff completo para humano
```

Botão interno adicional: **"Sou [nome], preciso de ajuda"** → abre pedido colaborativo na Inbox Interna.

### 6. O que é um Protocolo?

Registro formal de que uma solicitação do cliente **foi iniciada e depois encerrada**.

**Ciclo:**
```
Cliente solicita → Sistema abre protocolo → Equipe trabalha → Cliente confirma → Sistema encerra
```

**Campos mínimos:**
`número | cliente | assunto | setor | responsável | SLA | status | iniciado_em | encerrado_em | satisfação`

---

## BLOCO A — ThinSidebar Atualizada

```
[ThinSidebar 60px]
  ● Conversas         (MessageCircle)   — Inbox Externa WhatsApp
  ● Sessões           (Smartphone)
  ● Secretária        (Bot)
  ● Equipe   ◄ NOVO   (Users)
  ● Inbox Interna ◄ NOVO (MessagesSquare ou Inbox)
  ─────────────────
  ● Configurações     (Settings)
```

- **Equipe** → EquipeTab (Contas, Setores, Membros, Cérebros, Performance)
- **Inbox Interna** → InboxInternaTab (comunicação entre equipe + Human API + protocolos)
- Ambas abas visíveis conforme cargo (owner/manager/supervisor veem Equipe; todos veem Inbox Interna dentro das permissões)

---

## BLOCO B — Modelo de Dados

> ⚠️ **Auditoria prévia obrigatória** — analisar schema atual do alemão para detectar
> tabelas de usuários, permissões, setores, equipes ou chats internos já existentes.
> Reaproveitar antes de criar novo.

### B1 — `accounts` — Contas internas de colaboradores

| Campo            | Tipo      | Descrição                                              |
|------------------|-----------|--------------------------------------------------------|
| id               | UUID PK   |                                                        |
| tenant_id        | FK        | Isolamento por empresa                                 |
| name             | VARCHAR   | Nome completo                                          |
| email            | VARCHAR   | Login único (nullable se acesso só via WA)             |
| password_hash    | VARCHAR   | Bcrypt — nullable se sem acesso à interface            |
| role             | ENUM      | `owner` `manager` `supervisor` `secretary` `agent` `viewer` |
| phone            | VARCHAR   | Número pessoal WA (usado na Human API)                 |
| phone_connected  | BOOLEAN   | Se o número pessoal está conectado ao motor            |
| availability     | ENUM      | `online` `busy` `offline`                              |
| avatar_url       | VARCHAR   |                                                        |
| active           | BOOLEAN   |                                                        |
| created_at       | TIMESTAMP |                                                        |

### B2 — `sectors` — Setores operacionais

| Campo       | Tipo      | Descrição                                                        |
|-------------|-----------|------------------------------------------------------------------|
| id          | UUID PK   |                                                                  |
| tenant_id   | FK        |                                                                  |
| name        | VARCHAR   | Ex: "Clube de Benefícios", "Financeiro", "Alemão Premium"        |
| description | TEXT      | O que este setor atende                                          |
| icon        | VARCHAR   | Nome lucide-react                                                |
| color       | VARCHAR   | Hex                                                              |
| sla_minutes | INTEGER   | Tempo máximo de resposta (SLA)                                   |
| sort_order  | INTEGER   |                                                                  |
| active      | BOOLEAN   |                                                                  |

> **Exemplos de setores:** Financeiro, Comercial, Alemão, Alemão Premium, Alemão Vendas, Urgência, Pós-venda

### B3 — `team_members` — Conta ↔ Setor com função

| Campo              | Tipo      | Descrição                                              |
|--------------------|-----------|--------------------------------------------------------|
| id                 | UUID PK   |                                                        |
| account_id         | FK        |                                                        |
| sector_id          | FK        |                                                        |
| function           | VARCHAR   | Ex: "Encarregado", "Especialista financeiro"           |
| is_primary         | BOOLEAN   | Setor principal do colaborador                         |
| notify_escalation  | BOOLEAN   | Recebe alerta WA de escalação neste setor              |
| notify_human_api   | BOOLEAN   | Recebe consultas da Human API neste setor              |
| on_duty            | BOOLEAN   | Está em turno agora (toggle manual ou horário)         |

### B4 — `sector_brain_nodes` — Cérebro por setor

| Campo      | Tipo    | Descrição                                              |
|------------|---------|--------------------------------------------------------|
| id         | UUID PK |                                                        |
| sector_id  | FK      |                                                        |
| type       | ENUM    | `knowledge` `rules` `escalation` `persona`             |
| content    | TEXT    | Conhecimento específico do setor                       |
| sort_order | INTEGER |                                                        |
| active     | BOOLEAN |                                                        |

### B5 — `human_api_requests` — Consultas IA → Humano (Human API)

| Campo           | Tipo      | Descrição                                          |
|-----------------|-----------|----------------------------------------------------|
| id              | UUID PK   |                                                    |
| conversation_id | FK        | Protocolo em aberto                                |
| sector_id       | FK        | Setor consultado                                   |
| account_id      | FK        | Especialista acionado                              |
| question        | TEXT      | Resumo enviado ao especialista                     |
| answer          | TEXT      | Resposta recebida (null se ainda aguardando)       |
| status          | ENUM      | `pending` `answered` `timeout` `ignored`           |
| delivery_mode   | ENUM      | `whatsapp` `inbox_interna` — como foi entregue     |
| asked_at        | TIMESTAMP |                                                    |
| answered_at     | TIMESTAMP |                                                    |
| timeout_at      | TIMESTAMP | Se não responder até aqui → próximo especialista   |

### B6 — `knowledge_learning` — Respostas humanas que viram conhecimento

| Campo           | Tipo      | Descrição                                       |
|-----------------|-----------|-------------------------------------------------|
| id              | UUID PK   |                                                 |
| sector_id       | FK        |                                                 |
| account_id      | FK        | Quem respondeu                                  |
| question        | TEXT      | Pergunta original                               |
| answer          | TEXT      | Resposta validada                               |
| promoted        | BOOLEAN   | Foi promovido para sector_brain_nodes           |
| promoted_at     | TIMESTAMP |                                                 |
| use_count       | INTEGER   | Quantas vezes a IA reutilizou esta resposta     |

### B7 — `protocols` — Protocolo de atendimento enriquecido

> ⚠️ **Auditoria prévia:** verificar se `sec_conversations` já supre estas necessidades.
> Se sim, apenas adicionar colunas faltantes — não criar tabela nova.

| Campo            | Tipo      | Descrição                                         |
|------------------|-----------|---------------------------------------------------|
| id               | UUID PK   |                                                   |
| conversation_id  | FK        | Liga ao sec_conversations existente               |
| sector_id        | FK        | Setor responsável                                 |
| account_id       | FK        | Responsável atual                                 |
| subject          | VARCHAR   | Assunto / tema central                            |
| summary_ia       | TEXT      | Resumo gerado pela IA ao abrir                    |
| sla_deadline     | TIMESTAMP | Prazo baseado no SLA do setor                     |
| status           | ENUM      | `open` `in_progress` `waiting` `resolved` `closed`|
| satisfaction     | INTEGER   | 1–5 (confirmação do cliente)                      |
| opened_at        | TIMESTAMP |                                                   |
| closed_at        | TIMESTAMP |                                                   |

### B8 — `escalation_logs` — Histórico de escalações e scores

| Campo           | Tipo      | Descrição                                     |
|-----------------|-----------|-----------------------------------------------|
| id              | UUID PK   |                                               |
| conversation_id | FK        |                                               |
| account_id      | FK        | Quem recebeu a escalação                      |
| sector_id       | FK        |                                               |
| response_ms     | INTEGER   | Tempo de resposta em milissegundos            |
| resolved        | BOOLEAN   | Resolveu sem redirecionar?                    |
| satisfaction    | INTEGER   | Nota do cliente                               |
| escalated_at    | TIMESTAMP |                                               |

### B9 — `internal_messages` — Inbox Interna (NOVO)

| Campo        | Tipo      | Descrição                                                              |
|--------------|-----------|------------------------------------------------------------------------|
| id           | UUID PK   |                                                                        |
| tenant_id    | FK        |                                                                        |
| thread_id    | UUID      | Agrupa mensagens de um mesmo assunto/protocolo                         |
| from_account | FK        | Quem enviou (null = sistema/IA)                                         |
| to_account   | FK        | Destinatário (null = broadcast do setor)                               |
| sector_id    | FK NULL   | Setor associado (quando mensagem vai para o setor inteiro)             |
| type         | ENUM      | `human_api` `escalation` `collaboration` `system` `help_request`       |
| content      | TEXT      | Conteúdo da mensagem                                                   |
| ref_id       | UUID NULL | Referência ao human_api_requests ou sec_conversations relacionado      |
| read_at      | TIMESTAMP | Quando foi lida pelo destinatário                                       |
| created_at   | TIMESTAMP |                                                                        |

---

## BLOCO C — Interface: EquipeTab

### Sub-aba 1 — Contas
- Cards de colaboradores: avatar, nome, papel (badge colorido), disponibilidade (bolinha verde/cinza)
- Filtro por papel / setor / disponibilidade
- Botão "Nova conta" → modal completo (nome, email, senha, telefone, papel)
- Editar | Suspender | Redefinir senha
- Toggle de disponibilidade rápido (on_duty)
- Badge "WA conectado" ou "só notificação"

### Sub-aba 2 — Setores
- Cards com ícone colorido, nome, descrição, SLA e contador de membros
- Exemplos pré-cadastrados: Financeiro, Comercial, Alemão, Urgência, Pós-venda
- Botão "Novo setor" → modal: nome, ícone, cor, SLA em minutos
- Clique no setor → drawer lateral com membros e link direto para o cérebro
- Drag-to-reorder

### Sub-aba 3 — Membros
- Tabela: avatar | nome | setor | função | on_duty | notif. escalação | notif. Human API | modo WA
- "+ Vincular membro" → selecionar conta existente + setor + função
- Toggles inline para notificações e disponibilidade
- Desvincular sem excluir a conta

### Sub-aba 4 — Cérebros por Setor
- Selector de setor no topo
- Editor de nodes idêntico ao da Secretária (reaproveitar componente existente)
- Tipos: `knowledge` `rules` `escalation` `persona`
- Badge com quantidade de nodes ativos por setor
- Preview do bloco que será injetado no prompt

### Sub-aba 5 — Performance
- Métricas por colaborador e setor:
  - Tempo médio de resposta na Human API
  - Taxa de resolução (resolveu vs redirecionou)
  - Satisfação média (1–5)
  - Consultas recebidas via Human API
  - Respostas promovidas para base de conhecimento
- Período: hoje / semana / mês
- Ranking de especialistas mais acionados pela IA

---

## BLOCO D — Interface: Inbox Interna (NOVO)

> ⚠️ **Auditoria prévia:** verificar se existe algum chat interno, sala ou thread
> já implementado no sistema antes de criar novo.

### Propósito
Canal interno separado completamente do canal com o cliente. Aqui a equipe:
- Recebe consultas da Human API
- Pede ajuda a colegas
- Aceita / transfere protocolos
- Vê escalações do setor
- Responde às perguntas da IA (quando número não está conectado)

### Layout sugerido
```
[Painel esquerdo — threads]       [Painel direito — mensagens]
─────────────────────────────     ───────────────────────────
🤖 Human API (3)                  Thread: Human API #001
👤 Fulano pediu ajuda             IA: "Cliente perguntou sobre
📋 Protocolo #123 escalado              cancelamento do clube..."
─────────────────────────────     [Digite sua resposta...]
                                  [Enviar] [Recusar] [Redirecionar]
```

### Tipos de thread

| Tipo | Ícone | Quem cria | Quem vê |
|------|-------|-----------|---------|
| `human_api` | 🤖 | Sistema/IA | Especialistas do setor |
| `help_request` | 🆘 | Qualquer membro | Setor + supervisores |
| `escalation` | ⚠️ | Sistema/IA | Setor + manager |
| `collaboration` | 💬 | Qualquer membro | Destinatário(s) |
| `system` | ⚙️ | Sistema | Owner + manager |

### Badge de notificação
- Ícone na ThinSidebar exibe bolinha vermelha com número de mensagens não lidas
- Atualização em tempo real via WebSocket (mesmo canal já existente)

---

## BLOCO E — Fluxo de Atendimento com Protocolo

```
Cliente envia mensagem (WhatsApp)
        ↓
webhook-receiver.js recebe
        ↓
context-builder.js → { cliente, plano, pedidos, promoções }
        ↓
Verifica handoff_mode: humano? → não chama IA
        ↓ (modo IA)
ProtocolEngine.chat()
        ↓
Cria/retoma protocolo automaticamente
        ↓
Tool: identificar_setor → detecta setor provável
        ↓
Injeta cérebro do setor no prompt
        ↓
IA responde ou...
        ├─ Sabe a resposta → responde cliente diretamente
        └─ Não sabe
              ↓
         [Human API ativada]
              ↓
         Resume o problema (1–2 linhas)
              ↓
         Busca especialista on_duty do setor
              ↓
         Se número conectado → envia WA ao número pessoal
         Se não conectado → cria thread na Inbox Interna
              ↓
         Aguarda 5 min
              ↓
         Respondeu? → IA formula resposta ao cliente
         Não respondeu? → tenta próximo do setor
              ↓
         Nenhum disponível? → handoff humano completo
              ↓
         Salva em knowledge_learning
```

### Estrutura do protocolo final

```
Protocolo #XYZ
├── Cliente: João Silva
├── Assunto: Cobrança duplicada do clube
├── Setor: Financeiro
├── Responsável: Ana (Encarregada)
├── Resumo IA: "Cliente questiona cobrança duplicada em abril"
├── SLA: 30 min (prazo: 14h30)
├── Status: Em andamento
├── Histórico cliente ↔ IA (canal externo)
├── Histórico interno (Human API queries — canal interno)
└── Satisfação: ⭐⭐⭐⭐⭐ (após resolução)
```

---

## BLOCO F — Human API (diferencial principal)

### Conceito
Quando a IA não tem resposta confiável, em vez de escalar para atendimento humano
**completo** (handoff), ela faz uma **consulta pontual** ao especialista certo
e mantém o controle da conversa. O cliente não percebe a diferença.

### Fluxo técnico (modelo misto)

```
brain.chat() → não confiante na resposta
      ↓
tool: consultar_especialista({
  setor: "financeiro",
  pergunta: "Qual o prazo para cancelamento sem multa?"
})
      ↓
Motor:
  1. Busca especialista on_duty do setor (team_members.on_duty = true)
  2. Insere human_api_requests (status=pending, timeout_at = agora+5min)
  3. Verifica delivery_mode:
     ├─ phone_connected=true → envia WA via Baileys ao número pessoal
     └─ phone_connected=false → cria thread na Inbox Interna
  4. BullMQ job com delay 5 min
  5. Job dispara → ainda pending? → tenta próximo do setor
  6. Todos timeout? → handoff completo
  7. Respondeu → atualiza human_api_requests (status=answered)
  8. brain.chat() recebe resposta → formula resposta ao cliente
  9. Salva em knowledge_learning
```

### Botão de ajuda colaborativo

Qualquer colaborador dentro da Inbox Interna pode clicar:
```
[Sou Fulano, preciso de ajuda]
→ abre thread tipo `help_request` visível para o setor + supervisores
```

### Aprendizado contínuo

```
knowledge_learning.use_count aumenta a cada reutilização
      ↓
Admin vê painel: "5 respostas sobre cancelamento — promover para base?"
      ↓
Um clique → vira sector_brain_node
      ↓
IA resolve sozinha na próxima vez
```

---

## BLOCO G — Cérebro em Camadas (atualizado)

```
System prompt final =
  [DATA E HORA ATUAL]                           ← já existe ✅
  + [PROTOCOLO ATIVO]                           ← já existe ✅
  + [CÉREBRO GLOBAL — sec_brain_nodes]          ← já existe ✅
  + [CÉREBRO DO SETOR — sector_brain_nodes]     ← NOVO (B4)
  + [CONHECIMENTO APRENDIDO — top 3 relevantes] ← NOVO (B6)
  + [CONTEXTO DO CLIENTE — context-builder]     ← já existe ✅
  + [ESTADO DA CONVERSA — summary]              ← já existe ✅
```

### Tools disponíveis (atualizado)

| Tool                    | Status   | Descrição                                         |
|-------------------------|----------|---------------------------------------------------|
| `listar_horarios`       | ✅ Existe | Lista slots de agenda                             |
| `agendar_horario`       | ✅ Existe | Reserva slot                                      |
| `escalar_humano`        | ✅ Existe | Handoff completo para atendente                   |
| `encerrar_protocolo`    | ✅ Existe | Fecha conversa com resumo                         |
| `identificar_setor`     | 🔲 NOVO  | Registra setor responsável na conversa            |
| `consultar_especialista`| 🔲 NOVO  | Human API — consulta humano sem perder o controle |
| `registrar_satisfacao`  | 🔲 NOVO  | Coleta nota do cliente ao final                   |

---

## BLOCO H — Score Operacional

Medir por colaborador e setor:
- Tempo de resposta (Human API)
- Taxa de solução (resolveu vs redirecionou)
- Satisfação do cliente (1–5)
- Reincidência (mesmo problema)
- Uso da IA vs humano
- Respostas promovidas para base de conhecimento

---

## FLUXO MESTRE

```
Cliente pergunta
      ↓
Secretária IA analisa
      ↓
Existe resposta pronta? ── Sim → Responde cliente
      ↓ Não
Existe algo em andamento/incompleto? ── Sim → Concluir/aproveitar
      ↓ Não
Detecta setor (IA classifica, humano pode corrigir)
      ↓
Aciona especialista humano via Human API
      ↓
Recebe resposta (WA pessoal ou Inbox Interna)
      ↓
Responde cliente
      ↓
Salva aprendizado
```

---

## RESUMO PRIORIZADO DE IMPLEMENTAÇÃO

| #  | Bloco | Tarefa                                                              | Impacto    | Esforço |
|----|-------|---------------------------------------------------------------------|------------|---------|
| 1  | —     | **Auditoria do schema atual** (antes de tudo)                       | 🔴 Crítico | Trivial |
| 2  | B1    | Migration: `accounts` + `sectors`                                   | 🔴 Crítico | Pequeno |
| 3  | B3    | Migration: `team_members` + `sector_brain_nodes`                    | 🔴 Crítico | Pequeno |
| 4  | B9    | Migration: `internal_messages` (Inbox Interna)                      | 🔴 Crítico | Pequeno |
| 5  | A     | Aba "Equipe" + ícone "Inbox Interna" na ThinSidebar                | 🔴 Crítico | Trivial |
| 6  | C1    | Sub-aba Contas: CRUD de colaboradores (login híbrido)               | 🔴 Crítico | Médio   |
| 7  | C2    | Sub-aba Setores: CRUD de setores + SLA                              | 🔴 Crítico | Pequeno |
| 8  | C3    | Sub-aba Membros: vincular conta ↔ setor + on_duty                   | 🟠 Alto    | Pequeno |
| 9  | D     | Inbox Interna: layout + threads + tipos de mensagem                 | 🟠 Alto    | Médio   |
| 10 | D     | Inbox Interna: badge de notificação via WebSocket                   | 🟠 Alto    | Pequeno |
| 11 | C4    | Sub-aba Cérebros: editor por setor (reaproveitar componente)        | 🟠 Alto    | Pequeno |
| 12 | G     | Motor: injetar cérebro do setor no prompt                           | 🟠 Alto    | Médio   |
| 13 | G     | Tool: `identificar_setor`                                           | 🟠 Alto    | Pequeno |
| 14 | B5    | Migration: `human_api_requests`                                     | 🟠 Alto    | Pequeno |
| 15 | F     | Human API: envio de consulta (WA se conectado / Inbox se não)       | 🟠 Alto    | Médio   |
| 16 | F     | Human API: captura de resposta + retorno ao brain                   | 🟠 Alto    | Médio   |
| 17 | F     | Human API: timeout 5 min + rodízio de especialistas (BullMQ)        | 🟠 Alto    | Médio   |
| 18 | F     | Botão "Sou [nome], preciso de ajuda" na Inbox Interna               | 🟡 Médio   | Pequeno |
| 19 | B7    | Migration: `protocols` (se sec_conversations insuficiente)          | 🟡 Médio   | Pequeno |
| 20 | E     | Fluxo completo de protocolo com SLA                                 | 🟡 Médio   | Médio   |
| 21 | B6    | `knowledge_learning` + promoção para brain                          | 🟡 Médio   | Médio   |
| 22 | C5    | Sub-aba Performance: métricas e score                               | 🟡 Médio   | Grande  |
| 23 | H     | Score operacional: ranking de especialistas                         | 🟡 Médio   | Médio   |
| 24 | —     | Login próprio por conta (autenticação separada)                     | 🟡 Médio   | Grande  |
| 25 | G     | Tool: `registrar_satisfacao` (CSAT ao fechar)                       | 🟢 Futuro  | Pequeno |
| 26 | B8    | escalation_logs + ranking de eficiência                             | 🟢 Futuro  | Médio   |

---

## REGRA DE OURO

```
Auditar → Reaproveitar → Corrigir → Completar → Criar novo somente se necessário
```

Aplicada a cada bloco antes de qualquer linha de código.

---

## QUESTÕES RESOLVIDAS ✅

Todas as 6 questões abertas da Versão 2 foram respondidas e incorporadas acima.
Nenhuma questão aberta pendente para início da implementação.

> **Próximo passo:** Item #1 — Auditoria do schema atual do alemão
> para detectar tabelas reaproveitáveis antes de criar qualquer migration.
