# 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) — **v2 Fase 1 (2026-06-25)**

| # | Módulo | Função |
|---|--------|--------|
| 1 | **Console** | Home unificada: KPIs, alertas 24h, saúde plataforma, incidentes Agentic, domínios, infra, chamados |
| 2 | **Discover** | Feed eventos; alertas clicáveis por severidade |
| 3 | **Chamados** | Lista + hub `CH-*` |

**Deprecado no Desk (banners Fase 4 leve):** Overview, Dashboard KPIs, Eventos, Tickets → links para Console.

```text
┌─────────────────────────────────────────┐
│ Console (home /)                          │
│  KPI bar → Alertas 24h → Saúde tenants   │
│  → Incidentes Agentic → Domínios atenção │
│  → Infra (ex-Tenants) → Chamados recentes│
└──────────────┬──────────────────────────┘
               │
     Discover / Chamados / Hub CH-*
```

---

## Módulos sidebar (legado — pré-v2)

| # | Módulo | Inspiração Wazuh | Função |
|---|--------|------------------|--------|
| 1 | **Overview** | Threat Hunting overview | ~~Entrada rápida~~ → fundido em Console |
| 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)
