# 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)