# Priorização executiva entre ciclos e fila gerencial (Etapa 89)

## Visão geral

A **Etapa 89** cria a **base de priorização executiva entre múltiplos ciclos** e uma **fila gerencial de atenção**, para que a gestão decida quais casos devem receber atenção primeiro com base em risco, valor, bloqueio e potencial de recuperação. A camada é **agregadora**: consome closure, métricas, alertas, gargalos, plano de recuperação, simulação de cenários e resumo executivo; não substitui esses módulos.

| Conceito | Descrição |
|----------|-----------|
| **Item da carteira** | **EventCyclePortfolioItem**: CycleId, OpportunityId, LeadId, Title, CommercialStageLabel, ClosureStatus, OverallCyclePerformanceScore, RiskLevelLabel, BottleneckSeverityLabel, TopRecommendedAction, TopRecoveryAction, SimulatedBestScenarioDelta, PriorityScore (0-100), PriorityReason, LastUpdatedAt. |
| **Estado da fila** | **EventCyclePortfolioPriorityState**: Items (ordenados por prioridade), HighestPriorityItem, HighestRiskItem, BestRecoveryOpportunity, NearestToCloseItem, AveragePriorityScore, PrioritizationSummary, LastPrioritizedAt. |
| **Controller** | **EventCyclePortfolioPriorityController**: BuildPortfolioPriority(orders, opportunities, proposals, sessions, followUpTasks). |

## Critérios de prioridade (heurísticos)

- **Caso bloqueado** → +25 ao score de prioridade (atenção primeiro).
- **Caso em risco** → +15.
- **Alto potencial de recuperação** (plano de recuperação ativo e delta de simulação positivo) → +20.
- **Perto de fechamento** (execução concluída, aceite final pendente) → +18.
- **Concluído e saudável** → -30 (menor prioridade).
- **Múltiplos críticos** (vários gargalos bloqueantes ou alertas críticos) → +12.
- **Performance baixa** (score &lt; 40) e ciclo não concluído → +10.

O **PriorityScore** final é limitado a 0–100. A **PriorityReason** resume os fatores aplicados (ex.: "Ciclo bloqueado; Alto potencial de recuperação").

## Como risco, recuperação e fechamento influenciam a ordem

- **Risco** — Bloqueado e em risco sobem na fila; concluído e saudável desce.
- **Recuperação** — Casos com plano de recuperação e ganho simulado maior sobem (BestRecoveryOpportunity).
- **Fechamento** — Casos perto do aceite final (NearestToCloseItem) sobem para não travar encerramento.

## UI

- **EventCyclePortfolioPriorityStripView** — Quantidade de casos, caso prioritário (título e score), timestamp da última priorização.
- **EventCyclePortfolioPriorityPanel** — Resumo da priorização; prioritário; mais crítico; melhor recuperação; mais perto de fechar; média do score; lista priorizada por ciclo com #rank, score, título, risco, gargalo, performance, razão, ação recomendada, recuperação e delta simulado. Item prioritário em destaque. Botões "Gerar priorização" e "Recalcular".
- **EventCycleDashboardPanel** — Bloco global (quando há itens): "Fila: Prioritário [título] | Mais crítico [título] | Melhor recuperação [título] | timestamp".

## Ações

- **Gerar priorização** / **Recalcular** — Executa BuildPortfolioPriority e atualiza a vista (não há persistência; a fila é recalculada a partir do estado atual).
- **Navegar para caso** — CycleId/OpportunityId permitem, no futuro, scroll ou abertura do ciclo no CRM.
- **Destacar caso prioritário** — O painel destaca em negrito e cor o item com maior PriorityScore.

## Limitações atuais

- **Sem persistência real** — A fila não é guardada; cada visualização recalcula.
- **Sem dados históricos robustos** — Prioridade é heurística (scores fixos por regra).
- **Sem automação real** — Nenhum workflow ou notificação atualiza a fila.

## 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ó lê closure, métricas, alertas, gargalos, recuperação, simulação e resumo executivo; sem dependência circular.
