78 lines
2.9 KiB
Markdown
78 lines
2.9 KiB
Markdown
# 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)
|