# Tasks — Spec 010 Desk Assist & Takeover

**Status:** 🔄 Fase A+B+C+F entregues — Fase D (push 007) pendente  
**Prioridade:** **P0**  
**API:** `0.9.3-desk-assist-c`

---

## Fase A — Escalada + estados (VM122) ✅

- [x] **T001** Schema: ticket status `escalated|assisting|resolved` + `session_id`, `assist_mode`, `assisted_by`
- [x] **T002** Tabelas `assist_sessions`, `assist_actions`
- [x] **T003** Webhook ingress `onboarding.escalated` + `onboarding.failed` → ticket escalated
- [x] **T004** `GET /api/v1/assist/sessions` — merge funil + assist state
- [x] **T005** `POST /api/v1/assist/sessions/{id}/escalate` — técnico puxa (≥ domain.validated)
- [x] **T006** UI: sessões funil clicáveis + badges estado
- [x] **T007** UI ticket/sessão: assignee + botão «Assumir sessão» + handoff
- [x] **T008** Regra RBAC assist (permissions.py)
- [x] **T009** Lock optimista — 409 se sessão já assisting

## Fase B — ASM Takeover (VM112 + VM122) ✅

- [x] **T010** VM112: `POST .../pause`, `.../takeover`, `.../resume`
- [x] **T011** VM112: wizard ASM UI + banner «A actuar em nome do cliente»
- [x] **T012** VM112: botão cliente «Preciso de ajuda técnica»
- [x] **T013** Desk: `POST .../takeover` → chama VM112, guarda token hash
- [x] **T014** Desk: `POST .../handoff` → resume cliente
- [x] **T015** Webhooks `onboarding.assist.started|ended`
- [x] **T016** Teste E2E: cliente pausado → técnico ASM → handoff → cliente retoma

## Fase C — Console acções Desk ✅

- [x] **T020** `POST .../actions/{action}` — proxy VM112
- [x] **T021** Catálogo MVP: dns.revalidate, dns.reapply, account.retry_sync, infra.resync
- [x] **T022** UI Console: painel acções + disabled se não assisting
- [x] **T023** `GET .../links` — Proxmox, Carbonio, Traefik, Cloudflare (nova aba)
- [x] **T024** Audit log cada acção em `assist_actions`
- [x] **T025** `onboarding.mark_step_complete` + `onboarding.abort` (ops_lead+)

## Fase F — Ranking técnicos (Roger) ✅

- [x] **T040** `GET /api/v1/assist/technicians/ranking` — assumidos, escalados, acções, score
- [x] **T041** UI Dashboard: tabela ranking 30 dias
- [x] **T042** Audit movimento visível no console da sessão

## Fase D — Integração transversal

- [ ] **T030** Spec 007: push «sessão escalada» → technician/ops_lead
- [ ] **T031** Auto-escalada `onboarding.failed` + stale 24h
- [ ] **T032** Docs quickstart + runbook técnico pt-BR
- [ ] **T033** Testes permissões: noc read-only, technician takeover

---

## VM112 backlog (repo separado)

- [ ] **V112-A1** Assist API `assist-v1` contract
- [ ] **V112-A2** Wizard pause overlay pt-BR
- [ ] **V112-A3** SUP-4 painel humano base

---

## Env vars (previstas)

```env
DESK_ASSIST_ENABLED=true
VM112_ASSIST_API=https://onboard.ligbox.com.br/api/onboarding
VM112_ASSIST_SERVICE_TOKEN=
DESK_ASSIST_MIN_STAGE=domain_validated
```

---

## Dependências

- Spec 001 ✅ webhooks + funil
- Spec 003 ✅ RBAC
- Spec 011 📋 OTRS futuro (não bloqueia)
