---
name: ticket-manage
description: >
  Gestão completa do ciclo de vida de tickets D2 Suporte: criar com campos correctos, atribuir
  por prioridade e SLA, escalar quando SLA em risco, fechar com checklist obrigatória. Baseado
  em PROC-D2-SUP-001 (Atendimento), SUP-002 (Ticketing Workflow) e SUP-003 (SLA Management).
  Usar para: gestão ticket, SLA check, escalar suporte, fechar ticket, atribuir prioridade.
disable-model-invocation: true
---

# /ticket-manage v1.0 — Gestão Integrada de Suporte D2

Workflow completo de gestão de tickets segundo os PROCs D2 Suporte (SUP-001/002/003).
Complementa `/ticket` (operações básicas) com gestão de SLA, checklist e escalação automática.

---

## Comandos

| Comando | Função |
|---------|--------|
| `/ticket-manage` | Dashboard SLA + tickets em risco |
| `/ticket-manage new` | Criar ticket com campos correctos |
| `/ticket-manage assign <id>` | Atribuir por prioridade e SLA |
| `/ticket-manage sla` | Ver estado SLA todos os tickets abertos |
| `/ticket-manage escalate <id>` | Escalar com protocolo SUP-001 |
| `/ticket-manage close <id>` | Fechar com checklist obrigatória |
| `/ticket-manage report` | Relatório semanal SLA (SUP-003) |

---

## Prioridades e SLAs (SUP-003)

| Prioridade | Código | Primeira Resposta | Resolução | Escalação |
|------------|--------|-------------------|-----------|-----------|
| Crítico | P1 | <1h | <4h | Imediata D7 |
| Funcional | P2 | <2h | <24h | Após 12h sem resolução |
| Dúvida | P3 | <4h | <48h | Após 24h sem resolução |
| Melhoria | P4 | <24h | Próximo sprint | N/A |

**Mapping Desk CRM:**
| Desk Priority ID | Correspondência |
|-----------------|----------------|
| 4 — Urgente | P1 Crítico |
| 3 — Alta | P2 Funcional |
| 2 — Normal | P3 Dúvida |
| 1 — Baixa | P4 Melhoria |

---

## `/ticket-manage` — Dashboard SLA

```
1. mcp__desk-crm-v3__get_tickets({ status: [1,2,3] })
2. Para cada ticket:
   a. Calcular tempo decorrido desde criação/última resposta
   b. Comparar com SLA da prioridade
   c. Classificar: OK / EM RISCO (<25% SLA restante) / VIOLADO (SLA excedido)
3. Mostrar dashboard agrupado por estado SLA
```

**Output:**
```markdown
## 🎫 Dashboard Suporte — [DATA]

### 🔴 SLA Violado (N)
| # | Prioridade | Cliente | Assunto | Há | SLA |
|---|-----------|---------|---------|-----|-----|
| #234 | P1 Crítico | ClienteA | Downtime servidor | 6h | <4h ❌ |

### 🟠 Em Risco (<25% restante)
| # | Prioridade | Cliente | Assunto | Há | Restante |
|---|-----------|---------|---------|-----|---------|
| #236 | P2 Funcional | ClienteB | Erro login | 20h | 4h ⚠️ |

### 🟢 Dentro do SLA
| # | Prioridade | Cliente | Assunto | Há |
|---|-----------|---------|---------|-----|
| #238 | P3 Dúvida | ClienteC | Como configurar X | 2h |

---
**Resumo:** X violados | Y em risco | Z OK | Total: W tickets abertos
```

---

## `/ticket-manage new` — Criar Ticket Correcto

```
1. Recolher campos obrigatórios:
   - Cliente: pesquisar mcp__desk-crm-v3__get_customers({ search: nome }) OU perguntar ID
   - Assunto: descrever o problema
   - Descrição completa
   - Prioridade: perguntar (P1/P2/P3/P4) ou sugerir baseado no assunto
   - Departamento: 1=Suporte Técnico, 2=Vendas, 3=Facturação, 4=Geral
   - Origem: Desk CRM, email, WhatsApp

2. Confirmar antes de criar:
   "Criar ticket P[X] para [Cliente] — [Assunto]? [Sim/Cancelar]"

3. mcp__desk-crm-v3__create_ticket({
     client_id: id,
     department_id: dept_id,
     priority: priority_id,  // 4=Urgente, 3=Alta, 2=Normal, 1=Baixa
     subject: assunto,
     message: "<p>[descrição detalhada]</p><p><strong>Origem:</strong> [origem]</p>"
   })

4. Enviar confirmação de recepção ao cliente (se externo):
   - P1/P2: "Prioridade máxima. Analisando agora. Actualização em 30min/2h."
   - P3: "Recebemos. Resposta em 4h."
   - P4: "Registado para próximo sprint."

5. Output: "Ticket #X criado [P1-Crítico] | SLA: 1h resposta / 4h resolução"
```

---

## `/ticket-manage assign <id>` — Atribuir por Prioridade

```
1. mcp__desk-crm-v3__get_ticket({ ticket_id: id })
2. Determinar responsável baseado em categoria:
   - Técnico (WP, servidor, código) → D7 Tecnologia
   - Billing, factura → D3 / Emanuel
   - Comercial, proposta → D1
   - Geral → Support Specialist (staff_id: 25)
3. Se P1: notificar imediatamente (comentário interno + /task urgente)
4. Registar atribuição como comentário interno:
   mcp__desk-crm-v3__reply_ticket({
     ticket_id: id,
     message: "<p>Atribuído: [Responsável] | SLA: [prazo] | Prioridade: [P1-P4]</p>",
     internal: true
   })
5. Output: "Ticket #X atribuído a [Responsável] | SLA expira: [data/hora]"
```

---

## `/ticket-manage sla` — Estado SLA Completo

```
1. Recolher todos tickets abertos (status 1, 2, 3)
2. Para cada ticket calcular:
   - tempo_decorrido = agora - created_at
   - sla_limite = por prioridade (1h/2h/4h/24h para primeira resposta)
   - percentagem_usada = tempo_decorrido / sla_limite × 100
3. Agrupar: VIOLADO (>100%), EM RISCO (75-100%), OK (<75%)
4. Highlight P1 e P2 com aviso especial
```

**Alertas automáticos a gerar:**
```
P1 sem resposta >30min → "⚠️ CRÍTICO: Ticket #X P1 excede 30min. Acção imediata."
P2 sem resposta >2h → "⚠️ ALERTA: Ticket #X P2 em risco. Re-atribuir?"
Qualquer ticket >48h → "⏰ Ticket #X aberto há +48h. Revisar."
```

---

## `/ticket-manage escalate <id>` — Escalação com Protocolo

```
1. mcp__desk-crm-v3__get_ticket({ ticket_id: id })
2. Determinar destino de escalação:
   - Tech complexo (WP, servidor) → D7 Tecnologia
   - Billing → D3 Facturação
   - Dev customizado → Project Manager
3. Criar tarefa Desk CRM com contexto completo:
   mcp__desk-crm-v3__create_task({
     name: "[ESCALADO] Ticket #X: [Assunto]",
     description: "<h4>Escalado de Ticket #X</h4>
                   <p><strong>Cliente:</strong> [nome]</p>
                   <p><strong>Problema:</strong> [descrição]</p>
                   <p><strong>Tentativas anteriores:</strong> [o que foi tentado]</p>
                   <p><strong>SLA original:</strong> [prazo]</p>
                   <p><strong>Motivo escalação:</strong> [razão]</p>",
     priority: 3,
     assignees: [1]
   })
4. Informar cliente:
   mcp__desk-crm-v3__reply_ticket({
     ticket_id: id,
     message: "<p>Olá [Nome],</p>
               <p>A situação é mais complexa e foi escalada para a equipa especialista.
               Prazo estimado: 24-48h.</p>
               <p>Pedimos desculpa pela demora.</p>"
   })
5. Nota interna com motivo detalhado
6. Output: "Ticket #X escalado → Tarefa #Y | Dept: [destino] | ETA: [prazo]"
```

---

## `/ticket-manage close <id>` — Fecho com Checklist Obrigatória

```
1. mcp__desk-crm-v3__get_ticket({ ticket_id: id })
2. Executar checklist SUP-001 (OBRIGATÓRIO — 100% antes de fechar):
```

### Checklist de Fecho (SUP-001)

- [ ] Solução aplicada e testada
- [ ] Explicação clara da solução enviada ao cliente
- [ ] Causa raiz identificada (não só sintoma)
- [ ] Passos de prevenção comunicados
- [ ] Cliente confirmou resolução ("Resolvido? Feedback?")
- [ ] Lições aprendidas registadas (se novo problema)
- [ ] Follow-up 3 dias agendado (se P1/P2)

```
3. Se checklist incompleta → NÃO fechar, listar pendentes
4. Se 100% → fechar:
   mcp__desk-crm-v3__reply_ticket({
     ticket_id: id,
     message: "<p>Olá [Nome],</p>
               <p>Confirmamos que a situação foi resolvida.</p>
               <p><strong>Solução:</strong> [explicação]</p>
               <p><strong>Prevenção:</strong> [dica]</p>
               <p>Obrigado pelo contacto. Se precisar de algo, estamos disponíveis.</p>
               <p>Nota 1-10 sobre o suporte?</p>"
   })
   mcp__desk-crm-v3__close_ticket({ ticket_id: id })
5. Output: "Ticket #X fechado ✓ | Checklist: 7/7 | [Data fecho]"
```

---

## `/ticket-manage report` — Relatório SLA Semanal (SUP-003)

```
1. Recolher tickets dos últimos 7 dias
2. Calcular por prioridade:
   - % tickets que cumpriram SLA de resposta
   - % tickets que cumpriram SLA de resolução
   - Tempo médio de resposta e resolução
3. Identificar violações e categorizar causas
4. Comparar com semana anterior
```

**Output:**
```markdown
## Relatório SLA Semanal — [DD-MM-YYYY a DD-MM-YYYY]

### Cumprimento SLA (Meta: >90%)
| Prioridade | Tickets | SLA Resposta | SLA Resolução | Violações |
|-----------|---------|-------------|--------------|-----------|
| P1 Crítico | 2 | 100% ✅ | 50% ⚠️ | 1 |
| P2 Funcional | 8 | 87.5% ⚠️ | 100% ✅ | 1 |
| P3 Dúvida | 15 | 93.3% ✅ | 86.7% ⚠️ | 2 |
| P4 Melhoria | 3 | 100% ✅ | N/A | 0 |

### Top 3 Tickets Mais Lentos
1. #X — [Assunto] — P2 — 36h — causa: dependência externa D7
2. #Y — [Assunto] — P3 — 52h — causa: complexidade técnica
3. #Z — [Assunto] — P1 — 5h30 — causa: falta de informação cliente

### Acções Correctivas
- [ ] P2 cumprimento <90% → Revisão processo atribuição automática
```

---

## Referências PROCs

| PROC | Ficheiro Hub |
|------|-------------|
| SUP-001 Atendimento | `Hub/06-Operacoes/Procedimentos/D2-Suporte/PROC-D2-SUP-001-Atendimento-Cliente.md` |
| SUP-002 Ticketing | `Hub/06-Operacoes/Procedimentos/D2-Suporte/PROC-D2-SUP-002-Ticketing-Workflow.md` |
| SUP-003 SLA | `Hub/06-Operacoes/Procedimentos/D2-Suporte/PROC-D2-SUP-003-SLA-Management.md` |

---

## Anti-Patterns

- **NUNCA** fechar sem checklist 100% completa
- **NUNCA** escalar sem informar o cliente
- **NUNCA** ignorar tickets P1 >30min
- **NUNCA** resolver sintoma sem identificar causa raiz

---

## Integração com Outras Skills

| Skill | Quando usar |
|-------|-------------|
| `/ticket` | Operações básicas (view, reply) |
| `/ticket-triage` | Triagem automática SPAM/facturas |
| `/crm` | Contexto cliente 360° |
| `/today` | Dashboard diário com SLA alerts |

---

## Changelog

### v1.0.0 (07-04-2026)
- Versão inicial baseada em SUP-001, SUP-002, SUP-003
- Dashboard SLA com alertas automáticos
- Criação com campos obrigatórios e confirmação recepção
- Checklist fecho obrigatória 7 pontos
- Protocolo escalação com contexto completo
- Relatório semanal SLA

---

*Skill v1.0.0 | 07-04-2026 | Descomplicar® | Baseado em PROCs D2-SUP-001/002/003*

---

## Healing Log

Registo de erros conhecidos e como evitá-los. Lido automaticamente antes de executar.

```jsonl
{"date":"","issue":"","fix":"","source":"user|auto"}
```

*Adicionar nova linha após cada erro corrigido.*
