Skip to content

feat: contador "Concluídos" no backoffice (#87) - #108

Merged
hbgit merged 9 commits into
developfrom
feat/issue-87-concluidos
Oct 27, 2026
Merged

hbgit merged 9 commits into
developfrom
feat/issue-87-concluidos

Conversation

@hbgit

@hbgit hbgit commented Oct 27, 2026

Copy link
Copy Markdown
Owner

Fecha #87 (item adiado da #76, PR #85).

Problema

Desde a #76 o alerta vermelho chega a resolved, mas o Painel de Indicadores só contava "Reconhecidos" (acknowledgedRedAlerts): um alerta concluído saía dessa contagem e não entrava em nenhuma outra. Para a coordenação, parecia que o alerta tinha sumido (INV-03).

O que muda

  • Backend: admin.indicators devolve resolvedRedAlerts no mesmo SELECT, com o mesmo WHERE de escopo e o mesmo AdminScopeResolver dos demais contadores (o pulso o carrega embutido). AdminAlert ganha resolvedAt. Sem migração: só modelos de API.

  • Partição única dos vermelhos (application/admin/red_alert_bucket.dart, RedAlertBucket): switch exaustivo sobre AlertStatus, de onde o SQL deriva as listas dos IN (…) (só nomes de enum, nunca entrada do usuário). Um estado novo não compila sem decidir o contador.

    AlertStatus Contador Rótulo na tela
    pending, escalated (legado) openRedAlerts Abertos (pendentes)
    acknowledged acknowledgedRedAlerts Reconhecidos (em atendimento) — não cumulativo
    resolved resolvedRedAlerts (novo) Concluídos

    Invariante: red == openRedAlerts + acknowledgedRedAlerts + resolvedRedAlerts em todo escopo.

  • Admin: linha "Concluídos" no Painel (e "Reconhecidos" vira "Reconhecidos (em atendimento)"); na lista de Alertas o estado é "Concluído", com o selo "Concluído às HH:MM" (só quando o servidor mandou a hora) e o filtro oferece "Concluído"; MonitoringController._mudou compara o contador novo.

  • Nada muda em como o status é gravado nem nas transições (red_alert_discard_paths_test.dart intacto).

Compatibilidade: resolvedRedAlerts: int obrigatório. Servidor novo com app antigo funciona (a chave extra é ignorada pelo fromJson gerado); app novo com servidor antigo falha na desserialização e cai na tela de erro, sem dado parcial. Os apps e o servidor saem do mesmo checkout.

Provas

  • Backend: test/unit/red_alert_bucket_test.dart; admin_read_store_test.dart (concluídos por escopo, concluído sem microárea só no sistema, INV-03 com escalated legado, resolvedAt na linha sem deslocar overdue); admin_endpoint_test.dart (admin, coordenador A e B, soma por papel). Suíte completa: 1546 testes.
  • Admin: indicators_resolved_test.dart, alerts_resolved_test.dart (inclusive resolved sem resolvedAt), backend_admin_data_source_test.dart, mock_admin_data_source_test.dart, alerts_auto_refresh_test.dart. Suíte completa: 480 testes.
  • Emulador (sinalacs_ci36, API 36): scripts/qa/admin_concluidos_e2e.sh falhou antes da correção (docs/superpowers/plans/2026-10-26-issue-87-reproducao.log: "o Painel não tem a linha Concluídos") e passou depois (…-e2e.log): o alerta percorre pending → acknowledged → resolved com o Painel aberto e cada transição aparece em exatamente um contador pelo pulso de 30 s, sem toque (atrasos de ~30 s); o concluído sem microárea fica invisível ao coordenador; "Status: Concluído" e "Concluído às" na lista; banco e cadeia de auditoria conferidos. scripts/qa/admin_login_e2e.sh verde com o 4º alerta semeado (vermelho concluído).
  • Plano: docs/superpowers/plans/2026-10-26-issue-87-concluidos-backoffice.md.

Aberto (registrado no PROGRESS)

  • "Concluídos" conta todo o histórico do escopo, sem janela de tempo (como "Reconhecidos"); uma janela é decisão de produto.
  • Captura de tela do Painel com a linha nova em docs/telas-admin.md.
  • Da revisão final (menores, não corrigidos aqui): o mock do admin conta só pending em "abertos" e não tem vermelho concluído no seed (afeta só demo/testes); dois comentários ainda dizem "3 alertas do painel"; no cartão, ResolvedBadge vem antes de EscalatedBadge; import fora da ordem em orm_admin_read_store.dart.

@hbgit
hbgit merged commit b3fff54 into develop Oct 27, 2026
10 checks passed
@hbgit
hbgit deleted the feat/issue-87-concluidos branch October 27, 2026 01:30
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant