# Tasks — Spec 030 Agentic Ops UI ## Fase UI-A — Mission Board (frontend only) ✅ - [x] A1 Criar `agentic-ops.css` (grid `ao-*`, tokens agente) - [x] A2 Componente `AgenticStatusBar` (health + action-log last tick) - [x] A3 Componente `MissionBoard` — 4 colunas severidade - [x] A4 Dedup via API `/incidents` (UI-B) - [x] A5 `IncidentCard` — click selecciona + highlight - [x] A6 `ContextPanel` — thread + reply + chat - [x] A7 Fleet rail compacto - [x] A8 Deploy produção + staging ## Fase UI-B — Backend deduplicação ✅ - [x] B1 Migration `agent_incidents` + índices - [x] B2 `store.upsert_incident()` no runner tick - [x] B3 Refactor `notify_finding_to_operators` — reutilizar thread - [x] B4 Endpoints `/overview`, `/incidents`, `/incidents/{id}/ack`, `/timeline` - [x] B5 Backfill automático no boot (`backfill_incidents`) - [x] B6 Testes `test_agents_030.py` ## Fase UI-C — Polish ✅ - [x] C1 Run timeline (lista ticks) - [x] C2 Mobile tabs (Board / Frota / Contexto) - [x] C3 Empty states + skeleton loading - [x] C4 Pulse animation agente com incidente open - [x] C5 Atalho teclado `R` refresh, `Esc` deselect - [x] C6 Poll 30s quando view activa ## Fase UI-D — Live updates 📋 - [ ] D1 Poll 30s quando view activa (pausa tab hidden) - [ ] D2 SSE `/api/v1/agents/stream` (opcional, Spec 029 H3) ## Fase UI-E — Integração Desk 📋 - [ ] E1 Botão “Criar ticket” no card → `/api/v1/tickets` POST - [ ] E2 Link finding → domínio/tenant se aplicável - [ ] E3 Preparar hub CH-* (Spec 019) — deep link --- ## Ordem recomendada Roger 1. **UI-A** (1–2 dias) — impacto visual imediato, zero risco DB 2. **UI-B** (1 dia) — limpa produção, para spam de threads 3. **UI-C** (0.5 dia) — mobile + polish 4. UI-D / UI-E — backlog P2 --- ## Definition of Done (030 MVP = UI-A + UI-B) - [ ] ≤10 cards visíveis para ambiente actual - [ ] Ack funcional end-to-end - [ ] Context panel com thread única por cenário - [ ] Documentação quickstart actualizada - [ ] Deploy produção `:8091` após staging OK