ligbox-ops-platform/specs/019-ops-console-active-operations/design/navigation-ia.md
Ligbox Spec Hub 3a2c64834b Initial import: ligbox-ops-platform + specs + LAPTOP + obsidian merge (CT130)
Source: VM122 /opt + obsidian-infra + LAPTOP
Hub: CT130 spec-hub 10.10.10.130
2026-06-19 17:26:41 +00:00

147 lines
7.1 KiB
Markdown

# Information Architecture — Navegação tipo Wazuh, hub `CH-*`
**Spec:** 019 · **Decisão Roger:** 2026-06-16 — **Opção A**
---
## Princípio
O **Chamado `CH-*` é o hub de investigação** — equivalente ao «caso» TheHive / incidente Wazuh, mas unificando onboard, suporte e cybersecurity.
**Discover** e **Overview** são **portas de entrada**; toda investigação séria **aterriz** no hub e **permanece** lá até fecho.
```text
┌─────────────┐
│ Overview │ KPIs, funil, alertas recentes
└──────┬──────┘
│ click métrica / alerta
┌──────▼──────┐
│ Discover │ Busca livre, filtros, saved searches
└──────┬──────┘
│ click evento → criar ou abrir CH-*
┌──────▼──────────────────────────────────────┐
│ CH-* HUB DE INVESTIGAÇÃO │
│ Timeline │ Observables │ Assist │ Acções │
│ Runbooks │ Aprovações │ Links │ Notas │
└──────┬──────────────────────────────────────┘
│ drill-down entidade
┌────────────┼────────────┐
▼ ▼ ▼
Tenant Domínio Wazuh deep link
(agent) scorecard (VM104 nativo)
```
---
## Módulos sidebar (Console VM123)
| # | Módulo | Inspiração Wazuh | Função |
|---|--------|------------------|--------|
| 1 | **Overview** | Threat Hunting overview | Entrada rápida; não substitui o hub |
| 2 | **Discover** | Explore → Discover | Investigação transversal; sempre liga a `CH-*` |
| 3 | **Chamados** | — (Ligbox) | Lista de hubs activos; fila de trabalho |
| 4 | **Hub `CH-*`** | Alert detail + case | **Ecrã principal de investigação** (rota `/chamados/CH-…`) |
| 5 | **Tenants** | Agent management | Contexto infra; click → filtra Discover ou abre CH |
| 6 | **Runbooks** | — | Biblioteca; execução sempre no contexto de um `CH-*` |
| 7 | **Aprovações** | — | Fila global; cada item linka ao hub origem |
---
## Layout do hub `CH-*` (wireframe textual)
```text
┌────────────────────────────────────────────────────────────────────────┐
│ CH-2026-00042 [assumido] myvexx.com L12 onboard+wazuh [Assumir]│
├───────────────────────────────┬────────────────────────────────────────┤
│ TIMELINE (centro, scroll) │ PAINEL DIREITO (tabs) │
│ │ │
│ ● 10:00 wazuh.alert L12 │ [Assist] [Observables] [Infra] [Ações] │
│ ● 10:05 onboarding.failed │ │
│ ● 10:06 runbook proposto │ Assist: passo DNS Cloudflare │
│ ● 10:10 aprovação R1 │ tempo no passo: 142s │
│ │ último erro: timeout CF │
│ │ │
│ │ Observables: │
│ │ domain: myvexx.com [→] │
│ │ session_id: abc… [→] │
│ │ agent: vm112 [→ Wazuh] │
│ │ rule_id: 5712 [→] │
├───────────────────────────────┴────────────────────────────────────────┤
│ Acções: [Executar runbook ▼] [Nota] [Delegar] [Investigar no Wazuh] │
└────────────────────────────────────────────────────────────────────────┘
```
### Tabs do painel direito
| Tab | Conteúdo |
|-----|----------|
| **Assist** | Opção A — passo wizard, erro, email planeado |
| **Observables** | Entidades clicáveis (TheHive-style): domain, IP, agent, session, rule |
| **Infra** | Scorecard 8/14 checks (009/010/011) embutido |
| **Acções** | Runbooks pendentes, fila aprovação, histórico execuções |
---
## Regra de navegação contextual (obrigatória)
Em **qualquer módulo**, click numa entidade:
| Entidade | Acção |
|----------|-------|
| `domain` | Abre hub CH aberto desse domínio ou Discover filtrado |
| `session_id` | Abre hub com essa sessão ou cria CH |
| `agent` / tenant | Tenants → detalhe → eventos relacionados |
| `rule_id` | Discover filtrado `rule_id:X` + CHs com mesma regra |
| `public_id` `CH-*` | Navega para hub |
| Evento Discover | `POST` attach ou navega para CH existente |
**Deep link Wazuh:** botão «Investigar no Wazuh» — URL VM104 com query pré-preenchida (agent + timeframe); **não** iframe.
---
## Discover → Hub (fluxo)
1. Analista filtra eventos em Discover
2. Selecciona 1+ eventos → **«Abrir em chamado»**
3. API: encontrar CH existente (agregação) ou criar `CH-*` novo
4. Eventos ligados em `chamado_eventos`
5. UI navega para `/chamados/CH-2026-00042`
6. Investigação continua **só no hub** (timeline, runbooks, fecho)
---
## O que NÃO é o hub
| Não | Porquê |
|-----|--------|
| Overview sozinho | Só resumo; sem acções nem timeline completa |
| Discover sozinho | Porta de entrada; sem runbooks nem estado de resolução |
| Wazuh dashboard | SIEM puro; sem onboard/Assist/runbooks Ligbox |
| Ticket MVP antigo | Sem observables nem drill-down unificado |
---
## Rotas SPA (React Router)
| Rota | View |
|------|------|
| `/` | Overview |
| `/discover` | Discover |
| `/discover?q=…` | Discover com query partilhável |
| `/chamados` | Lista chamados |
| `/chamados/:publicId` | **Hub investigação** |
| `/tenants` | Tenants |
| `/tenants/:id` | Detalhe tenant |
| `/aprovacoes` | Fila aprovações |
| `/runbooks` | Catálogo runbooks |
---
## Critérios UX (aceite navegação)
- [ ] De Discover a hub em ≤ 2 cliques
- [ ] Qualquer observable no hub navega em ≤ 1 clique
- [ ] Hub mostra ≥ 1 fonte (onboard + wazuh) na mesma timeline
- [ ] «Investigar no Wazuh» abre VM104 em novo tab com contexto
- [ ] URL `/chamados/CH-*` partilhável entre técnicos
- [ ] Voltar de Tenants para hub preserva scroll timeline (opcional P2)