# Visão resumida da carteira (Etapa 90)

## Visão geral

A **Etapa 90** cria a **base da visão resumida da carteira** com **agrupamento por status, risco e prioridade**, para que a gestão faça **leitura rápida do portfólio de casos** sem abrir cada ciclo. A camada é **agregadora**: usa o estado de priorização da carteira (EventCyclePortfolioPriorityState), que por sua vez consome closure, métricas, alertas, gargalos, recuperação e simulação; não substitui esses módulos.

| Conceito | Descrição |
|----------|-----------|
| **Estado do overview** | **EventCyclePortfolioOverviewState**: TotalCycles, InProgressCount, AtRiskCount, BlockedCount, CompletedCount, CompletedWithIssuesCount, HighPriorityCount, ClosingSoonCount, RecoveryOpportunityCount, OverviewSummary, Groups, LastUpdatedAt. |
| **Grupo** | **EventCyclePortfolioGroup**: GroupKey, Title, ItemCount, Summary, HighestPriorityItemId, Notes. |
| **Controller** | **EventCyclePortfolioOverviewController**: BuildOverview(orders, …), BuildOverviewFromPriorityState(priorityState, updatedAt). |

## Agrupamentos

- **Bloqueados** — RiskLevelLabel contém "Bloqueado".
- **Em risco** — RiskLevelLabel contém "Em risco", "Crítico" ou "Alertas bloqueantes".
- **Alta prioridade** — PriorityScore ≥ 70.
- **Boa oportunidade de recuperação** — TopRecoveryAction e SimulatedBestScenarioDelta preenchidos.
- **Perto de fechar** — PriorityReason contém "Perto de fechamento" ou ClosureStatus/CommercialStageLabel indicam aceite final.
- **Em andamento** — Não concluído e não bloqueado.
- **Concluídos** — ClosureStatus indica concluído/encerrado.
- **Concluídos com issues** — Concluídos com performance &lt; 70 ou com pendências.

Um mesmo ciclo pode entrar em vários grupos (ex.: em risco e alta prioridade). As contagens refletem isso.

## Como ajuda a leitura rápida gerencial

- Ver **total de ciclos** e **contagens por grupo** numa única vista.
- Identificar **grupo mais crítico** (Bloqueados / Em risco) e **grupo com mais itens**.
- Em cada grupo, ver **resumo**, **contagem** e **item de maior prioridade** (HighestPriorityItemId / Notes) sem abrir o ciclo.
- Atualizar a visão com um único gesto ("Atualizar"); navegação para grupo ou para o item prioritário do grupo pode ser feita depois via CycleId.

## UI

- **EventCyclePortfolioOverviewStripView** — Total de ciclos, grupo mais crítico, grupo mais numeroso (e contagem), timestamp.
- **EventCyclePortfolioOverviewPanel** — Resumo geral; total; última atualização; cards por grupo (título, contagem, resumo, item prioritário no grupo). Botão "Atualizar".
- **EventCycleDashboardPanel** — Bloco "Carteira: N ciclo(s) | Em andamento X | Em risco Y | Bloqueados Z | Crítico: [grupo] | Maior grupo: [nome] (M) | timestamp".

## Ações

- **Atualizar** — Recalcula priorização e overview e repinta.
- **Navegar para grupo** — Futuro: filtrar lista de priorização por GroupKey ou scroll para secção do grupo.
- **Abrir item prioritário do grupo** — Futuro: usar HighestPriorityItemId (CycleId) para abrir o ciclo no CRM.
- **Limpar visão** — Não há estado persistido; "Atualizar" já mostra o estado atual.

## Limitações atuais

- **Sem persistência real** — Overview é calculado on-demand a partir da priorização.
- **Sem filtros avançados** — Agrupamentos são fixos (status, risco, prioridade).
- **Sem analytics externos** — Sem integração a BI ou dados históricos externos.

## Garantias

- **Quest intacto** — Nenhum fluxo Quest nem runtime XR alterado.
- **Web Hotel e Produtor intactas** — Apenas novas secções e um bloco no dashboard.
- **Camada agregadora** — Só consome EventCyclePortfolioPriorityState (e indiretamente os módulos que a priorização já usa); sem dependência circular.
