# Plano de testes — `PR-7` Avisar quem foi afetado por um recálculo

**Story:** `docs/stories/PR-7-aviso-de-recalculo.md`

Ponto que muda sozinho é indistinguível de bug — ou de fraude, quando foi o admin
que corrigiu. O aviso é o que transforma "meus pontos caíram" em "entendi por
que". Os dois riscos são simétricos: **não avisar quem foi afetado** e **avisar
demais**, que faz o participante desligar a notificação e deixar de ver as que
importam.

| ID | Título | Tipo | Prioridade |
| -- | ------ | ---- | ---------- |
| PR-7-01 | O aviso diz jogo, placar antes e depois | caminho feliz | alta |
| PR-7-02 | Quem não teve ponto alterado não recebe aviso | regra de negócio | alta |
| PR-7-03 | O aviso leva ao extrato | UI | alta |
| PR-7-04 | Mudança de posição entra no aviso | caminho feliz | alta |
| PR-7-05 | Vários jogos corrigidos = um aviso consolidado | regra de negócio | alta |
| PR-7-06 | Correção manual é identificada como do admin | segurança | alta |
| PR-7-07 | O aviso é do bolão da rota, não de todos | segurança | alta |
| PR-7-08 | Marcar lido afeta só o próprio aviso | segurança | alta |
| PR-7-09 | Sem push, o aviso continua visível no app | regra de negócio | alta |
| PR-7-10 | Permissão de notificação negada | não aplicável | — |

---

### PR-7-01 — O aviso diz jogo, placar antes e depois
**Tipo:** caminho feliz · **Prioridade:** alta
**Resultado esperado:** "Flamengo x Vasco: o placar mudou de 2x0 para 2x1". Aviso
sem o **antes** não explica nada: o participante não sabe o que mudou.

### PR-7-02 — Quem não teve ponto alterado não recebe aviso
**Tipo:** regra de negócio · **Prioridade:** alta
**Resultado esperado:** nenhuma notificação para quem ficou com o mesmo ponto e a
mesma posição. Avisar todo mundo a cada correção é o caminho mais curto para o
participante silenciar o app.

### PR-7-03 — O aviso leva ao extrato
**Tipo:** UI · **Prioridade:** alta
**Resultado esperado:** tocar no aviso abre o extrato da rodada, e o aviso passa a
lido. Aviso que não leva a lugar nenhum deixa a dúvida em pé.

### PR-7-04 — Mudança de posição entra no aviso
**Tipo:** caminho feliz · **Prioridade:** alta
**Resultado esperado:** "sua posição passou de 2º para 1º" quando houve troca. É a
informação que a pessoa realmente quer.

### PR-7-05 — Vários jogos corrigidos = um aviso consolidado
**Tipo:** regra de negócio · **Prioridade:** alta
**Passos:** uma sincronização que corrige dois jogos do mesmo bolão.
**Resultado esperado:** **um** aviso, dizendo quantos jogos e listando o que
mudou em cada um. Um aviso por jogo transforma domingo à noite em spam; um aviso
consolidado que **não diz** o que mudou é pior que dois avisos.

### PR-7-06 — Correção manual é identificada como do admin
**Tipo:** segurança · **Prioridade:** alta
**Resultado esperado:** o texto diz que foi o administrador. É a mitigação
prevista para esse poder: intervenção humana visível.

### PR-7-07 — O aviso é do bolão da rota, não de todos
**Tipo:** segurança · **Prioridade:** alta
**Resultado esperado:** a listagem por bolão traz só os avisos daquele bolão.
Defeito real corrigido em 06/08: a rota ignorava o `poolId` e vazava entre bolões.

### PR-7-08 — Marcar lido afeta só o próprio aviso
**Tipo:** segurança · **Prioridade:** alta
**Resultado esperado:** ninguém marca como lido o aviso de outra pessoa.

### PR-7-09 — Sem push, o aviso continua visível no app
**Tipo:** regra de negócio · **Prioridade:** alta
**Resultado esperado:** entrega de push zero, aviso gravado e legível na tela de
avisos. É o que mantém a story funcionando sem FCM configurado.

### PR-7-10 — Permissão de notificação negada
**Tipo:** não aplicável · **Prioridade:** —
**Resultado esperado:** **não executável nesta versão.** Não existe push: o
adaptador é o `PushDesativadoAdapter` e o app nunca pede permissão de notificação
(`PP-8 FE-1`/`FE-2` estão bloqueadas por credencial FCM). Como o aviso já é
sempre in-app, a condição "permissão negada" não muda nada — e marcar o caso como
"passou" sugeriria uma verificação que não aconteceu.
