Repository navigation
feat: contador "Concluídos" no backoffice (#87) - #108
Merged
Merged
Conversation
…dAt no protocolo (#87)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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.indicatorsdevolveresolvedRedAlertsno mesmoSELECT, com o mesmoWHEREde escopo e o mesmoAdminScopeResolverdos demais contadores (o pulso o carrega embutido).AdminAlertganharesolvedAt. Sem migração: só modelos de API.Partição única dos vermelhos (
application/admin/red_alert_bucket.dart,RedAlertBucket):switchexaustivo sobreAlertStatus, de onde o SQL deriva as listas dosIN (…)(só nomes de enum, nunca entrada do usuário). Um estado novo não compila sem decidir o contador.AlertStatuspending,escalated(legado)openRedAlertsacknowledgedacknowledgedRedAlertsresolvedresolvedRedAlerts(novo)Invariante:
red == openRedAlerts + acknowledgedRedAlerts + resolvedRedAlertsem 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._mudoucompara o contador novo.Nada muda em como o status é gravado nem nas transições (
red_alert_discard_paths_test.dartintacto).Compatibilidade:
resolvedRedAlerts: intobrigatório. Servidor novo com app antigo funciona (a chave extra é ignorada pelofromJsongerado); 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
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 comescalatedlegado,resolvedAtna linha sem deslocaroverdue);admin_endpoint_test.dart(admin, coordenador A e B, soma por papel). Suíte completa: 1546 testes.indicators_resolved_test.dart,alerts_resolved_test.dart(inclusiveresolvedsemresolvedAt),backend_admin_data_source_test.dart,mock_admin_data_source_test.dart,alerts_auto_refresh_test.dart. Suíte completa: 480 testes.sinalacs_ci36, API 36):scripts/qa/admin_concluidos_e2e.shfalhou 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 percorrepending → acknowledged → resolvedcom 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.shverde com o 4º alerta semeado (vermelho concluído).docs/superpowers/plans/2026-10-26-issue-87-concluidos-backoffice.md.Aberto (registrado no PROGRESS)
docs/telas-admin.md.pendingem "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,ResolvedBadgevem antes deEscalatedBadge; import fora da ordem emorm_admin_read_store.dart.