# Tasks: 019-ops-console-active-operations **Spec:** [spec.md](./spec.md) · **Plan:** [plan.md](./plan.md) --- ## F0 — Pré-deploy VM123 - [ ] T001 Inventariar VM123 no Proxmox (IP, hostname, serviços existentes) - [ ] T002 Executar `deploy/scripts/preflight-vm123.sh` e documentar resultado - [ ] T003 Confirmar porta livre (default 8100) ou definir `CONSOLE_HOST_PORT` no `.env` - [ ] T004 DNS `console.ligbox.com.br` → Traefik CT114 - [ ] T005 Router Traefik → `http://10.10.10.123:8100` (ou bind local + proxy) --- ## F1 — Data model VM122 - [ ] T010 Migração SQL `chamados`, `chamado_eventos`, `runbook_execucoes`, `aprovacoes` - [ ] T011 `chamado_aggregator.py` — regras session_id + domain + 72h - [ ] T012 Worker hook pós-`webhook_events` insert - [ ] T013 Gerador `public_id` `CH-YYYY-NNNNN` - [ ] T014 Teste unitário agregação (Wazuh + onboard mesmo domínio → 1 chamado) - [ ] T015 Extractor `chamado_observables` a partir de payloads - [ ] T016 `chamado_notas` + append timeline --- ## F2 — API hub VM122 - [ ] T020 `GET /api/v1/chamados` com filtros - [ ] T021 `GET /api/v1/chamados/{public_id}` — **resposta hub completa** - [ ] T022 `POST .../assumir` + RBAC - [ ] T023 `PATCH ...` estados - [ ] T024 `POST .../eventos/anexar` + `POST .../notas` - [ ] T025 `GET .../links/wazuh` deep link builder - [ ] T026 Compat: `desk/tickets` expõe `chamado_public_id` - [ ] T027 `scripts/verify-chamado-unico.sh` --- ## F3 — Console UI Docker VM123 - [x] T030 Scaffold React + Vite + React Router - [x] T031 navigation-ia.md — rotas e drill-down - [x] T032 Layout sidebar + tema tokens - [x] T033 View Overview → links para hub - [x] T034 View Discover → abrir hub - [x] T035 View Chamados lista - [x] T036 **ChamadoHub** `/chamados/:publicId` — timeline + tabs (mock) - [ ] T037 `ObservablesPanel` drill-down real (API) - [ ] T038 `WazuhDeepLinkButton` API - [ ] T039 Auth JWT → API VM122 - [x] T040 Deploy Docker VM123 — **ligbox-ops-console-ui UP :8100** - [ ] T041 Traefik console.ligbox.com.br --- ## F4 — Runbooks + aprovações - [ ] T040 Registry runbooks MVP (8 códigos — ver spec) - [ ] T041 `POST .../runbooks/{code}/executar` - [ ] T042 Fila `GET /api/v1/aprovacoes` - [ ] T043 `POST .../aprovar` e `.../rejeitar` - [ ] T044 UI Aprovações na Console - [ ] T045 Executores R0 (`infra_recheck`) e R1 (`traefik_cert_sync` mock) - [ ] T046 Middleware bloqueio R3 sem dupla aprovação --- ## F5 — Assist Opção A - [ ] T050 VM112 `GET /api/onboarding/session/{id}/ops-status` + secret LAN - [ ] T051 VM122 poll/cache passo wizard no chamado - [ ] T052 Console `AssistPanel` no detalhe chamado - [ ] T053 Validar: sem senha/replay no payload --- ## F6 — Agentic + WebSocket (pós-MVP) - [ ] T060 Políticas agentic R0/R1 - [ ] T061 Propostas runbook na fila aprovações - [ ] T062 `WS /api/v1/chamados/{id}/live` - [ ] T063 Console substitui poll por WebSocket --- ## Cutover - [ ] T070 Redirect `desk.ligbox.com.br` → `console.ligbox.com.br` - [ ] T071 Documentar rollback (`docker compose -f ... down` só stack console) - [ ] T072 Actualizar `docs/network/INTERFACES_PROXMOX.md` com VM123 Console