# 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)