# Comparação entre snapshots executivos (Etapa 95)

## Visão geral

A **Etapa 95** adiciona a **base de comparação entre snapshots executivos** e uma **leitura resumida de evolução do caso** para indicar se o ciclo **melhorou**, **piorou**, **ficou estável** ou ficou **misto** entre checkpoints. Tudo é **em memória local** e **agregador/manual**.

| Conceito | Descrição |
|----------|-----------|
| **Comparação** | **EventCycleSnapshotComparison**: ComparisonId, CycleId, BaseSnapshotId, ComparedSnapshotId, ComparisonSummary, PriorityDelta, RiskDelta, BottleneckChanged, ActionChanged, OverallDirection, MainImprovement, MainRegression, ComparedAt. |
| **Direção** | **EventCycleEvolutionDirection**: Improved, Regressed, Stable, Mixed. |
| **Estado** | **EventCycleSnapshotComparisonState**: CycleId, Comparisons, LatestComparison, TotalComparisons, EvolutionSummary, LastComparedAt. |
| **Store** | **SnapshotComparisonStore**: AddComparison, GetByCycleId, GetAll, ClearCycle, ClearAll (em memória). |
| **Controller** | **EventCycleSnapshotComparisonController**: Compare(base, compared), CompareLatestTwo(cycleId), CompareLatestTwoForAllCycles(), GetComparisonState(cycleId), GetGlobalComparisonState(). |

## Como a comparação funciona (heurística, legível)

A comparação usa os campos do snapshot:
- **ClosureStatus**
- **PriorityScore** (da carteira; maior = mais urgente, então diminuir tende a ser melhoria)
- **RiskLabel** (normalizado para score interno; “Bloqueado” pior que “Em risco”, que pior que “Normal”)
- **MainBottleneck**
- **MainRecommendedAction / MainRecoveryAction**

Regras:
- **Improved**: melhora em um ou mais eixos (risco/priority/closure) e não piora em nenhum
- **Regressed**: piora em um ou mais eixos e não melhora em nenhum
- **Stable**: sem mudanças relevantes
- **Mixed**: melhora em um eixo e piora em outro

Além disso, gera:
- **MainImprovement** (ex.: “Risco diminuiu”, “Closure melhorou”)
- **MainRegression** (ex.: “Risco aumentou”, “Prioridade aumentou”)
- **ComparisonSummary** (texto compacto com as mudanças)

## UI

- **EventCycleSnapshotComparisonStripView**: mostra a última direção global (ciclo, melhoria/regressão e timestamp).
- **EventCycleSnapshotComparisonPanel**:
  - “Comparar últimos (todos)” compara os 2 snapshots mais recentes de cada ciclo que tenha ≥ 2 snapshots.
  - Por ciclo: “Comparar últimos” e “Limpar ciclo”.
  - Mostra snapshot base vs comparado (últimos 2) e a leitura de direção + melhorias/regressões.
- **Dashboard consolidado**: linha global “Evolução: direção [ciclo] | + melhoria | − regressão | timestamp”.

## Diferença entre timeline, snapshot e comparação

- **Timeline detalhada**: eventos granulares, operacional.
- **Snapshot executivo**: checkpoint com poucos campos-chave.
- **Comparação de snapshot**: leitura gerencial da mudança entre checkpoints (melhorou/piorou/estável/misto).

## Limitações atuais

- **Sem persistência real**: comparações e snapshots não sobrevivem a reinício.
- **Sem histórico multiusuário**: uma visão por sessão local.
- **Sem automação real**: comparação é on-demand (cliques).

## Garantias

- **Quest intacto**: nenhum fluxo Quest/runtime XR alterado.
- **Web Hotel e Produtor intactas**: apenas novas secções e uma linha no dashboard.
- **Camada agregadora/manual**: só lê snapshots já capturados; não substitui módulos detalhados; sem dependência circular.

