# Snapshots executivos do caso (Etapa 94)

## Visão geral

A **Etapa 94** cria a **base de snapshots executivos do caso** e um **histórico resumido de checkpoints** para a gestão acompanhar a evolução de um ciclo sem depender apenas da timeline detalhada. A camada é **agregadora/manual** e mantém tudo **em memória local**.

| Conceito | Descrição |
|----------|-----------|
| **Snapshot** | **EventCycleExecutiveSnapshot**: SnapshotId, CycleId, Title, Summary, ClosureStatus, PriorityScore, RiskLabel, MainBottleneck, MainRecommendedAction, MainRecoveryAction, NotesSummary, CapturedAt. |
| **Estado** | **EventCycleExecutiveSnapshotsState**: CycleId, Snapshots, LatestSnapshot, TotalSnapshots, LastCapturedAt, SnapshotSummary. |
| **Store** | **ExecutiveSnapshotsStore**: AddSnapshot, GetSnapshots, GetAllSnapshots, RemoveSnapshot (em memória). |
| **Controller** | **EventCycleExecutiveSnapshotsController**: CaptureSnapshot(...), CaptureSnapshotsForAllCycles(...), GetSnapshotsState(cycleId), GetGlobalSnapshotsState(), CompareSnapshots(current, previous), RemoveSnapshot. |

## Diferença entre timeline detalhada e snapshot executivo

- **Timeline detalhada**: granular, técnica/operacional, voltada a eventos e registros de execução.
- **Snapshot executivo**: **checkpoint** com **poucos campos-chave** (closure, risco, prioridade, gargalo, ação principal, recuperação, resumo de notas) para leitura rápida e comparação entre momentos.

## Como o snapshot é capturado (heurístico, legível)

Um snapshot agrega, quando disponível:
- **Resumo executivo** (título e ação recomendada principal)
- **ClosureStatus** e leitura global (bloqueado/em risco)
- **Portfolio item** (PriorityScore e RiskLevelLabel)
- **Gargalo prioritário** (MainBottleneck)
- **Plano de ações** (TopPriorityAction)
- **Plano de recuperação** (PrimaryRecoveryAction)
- **Notas gerenciais** (NotesSummary)

O **Summary** do snapshot é uma frase curta no formato:
`Closure | Risco | Gargalo | Ação`.

## UI

- **EventCycleExecutiveSnapshotsStripView**: total de snapshots, último snapshot e timestamp.
- **EventCycleExecutiveSnapshotsPanel**:
  - “Capturar (todos)” cria um checkpoint para cada ciclo da carteira.
  - Por ciclo: “Capturar” cria snapshot para aquele caso.
  - Lista snapshots com Δ (comparação textual simples com o snapshot anterior).
  - “Remover” apaga um snapshot específico.
- **Dashboard consolidado**: quando há snapshots, mostra “Snapshots: total | último | timestamp”.

## Ações

- **Capturar snapshot**: manual (por ciclo) ou em lote (todos).
- **Remover snapshot**: remove por SnapshotId.
- **Comparar**: CompareSnapshots mostra diferenças de closure, risco, prioridade, gargalo e ação principal.
- **Abrir/navegar**: futuro (CycleId) — atualmente a navegação é conceptual; o painel já lista por ciclo.

## Limitações atuais

- **Sem persistência real**: snapshots desaparecem ao reiniciar.
- **Sem multiusuário real**: um único histórico por sessão local.
- **Sem automação real**: captura é manual/on-demand.

## Garantias

- **Quest intacto**: nenhum fluxo Quest nem runtime XR foi alterado.
- **Web Hotel e Produtor intactas**: apenas novas secções e uma linha no dashboard.
- **Camada agregadora/manual**: snapshots apenas leem estados e notas; não substituem módulos detalhados; sem dependência circular.

