## PP-7 — Sigilo do palpite até o jogo terminar

**PRD:** `docs/prd/palpite-e-prazo.md`

**Como** participante competitivo, **quero** que ninguém — nem o admin —
veja meu palpite antes do jogo terminar, **para** que o bolão tenha graça e
eu confie na competição.

**Prioridade:** Must — foi classificado na Fase 1 como a pior de todas as
dores; sem isso o competitivo não joga.

**Critérios de aceite:**

- Dado que o jogo não terminou, quando eu consulto os palpites daquele jogo,
  então vejo apenas o meu.
- Dado que sou admin do bolão, quando consulto os palpites de um jogo que não
  terminou, então também vejo apenas o meu.
- Dado que o jogo terminou, quando consulto os palpites daquele jogo, então
  vejo o palpite de todos os participantes.
- Dado que o jogo começou mas não terminou, quando consulto, então os
  palpites **continuam ocultos** — a liberação é no fim do jogo, não no apito.
- Dado que eu chamo a API diretamente pedindo os palpites de um jogo em
  andamento, então o servidor não retorna palpite de outro participante —
  esconder na tela não basta.

**Tasks:**

_Backend_
- [x] `BE-1` Filtrar palpites de terceiros na origem: só retornar quando o jogo tiver terminado (depende de PP-1 BE-4)
- [x] `BE-2` Aplicar o filtro independentemente do papel do usuário, incluindo admin (depende de BE-1)
- [x] `BE-3` Garantir que nenhum endpoint agregado (ranking, extrato, lista) vaze palpite de jogo não terminado

_Mobile_
- [x] `FE-1` Tela de palpites do jogo com estado "ainda em segredo" antes do fim, e liberada depois (depende de BE-1)
- [x] `FE-2` Não armazenar em cache local palpite de terceiro de jogo não terminado

_QA_
- [x] `QA-1` Escrever o plano de casos de teste a partir desta story
- [x] `QA-2` Executar o plano com chamadas diretas à API como participante comum e como admin, em jogo aberto, em andamento e terminado

**Riscos/Dependências:**

- **Isto é requisito de segurança, não de UI.** O critério que vale é o da
  API, não o da tela.
- Endpoints agregados (BE-3) são o vazamento mais provável: ranking ou
  extrato que traz palpite junto.
- Depende de PP-1 e de o sistema saber que o jogo terminou (PR-1).

- **06/08, verificado em device nos dois estados:** jogo não terminado mostra
  "Ainda em segredo" com o texto "nem o organizador vê antes" e o horário de
  início no fuso local; jogo terminado revela placar, autor e ponto de cada um.
- `FE-2` (não cachear palpite alheio) é garantido por construção: a tela busca
  do servidor a cada abertura, e há teste provando que sair e voltar refaz a
  chamada. Cache aqui seria o mesmo vazamento por outro caminho.

- **06/08:** plano de casos em `docs/testes/PP-7-plano.md`. Escrito a partir da
  story, não do código — caso escrito depois de olhar a implementação valida o
  que foi feito, não o que foi pedido.

- **06/08 — execução: ✅ 10 de 10** (`docs/testes/PP-7-execucao.md`).
- Lacuna que a execução expôs: faltava o caso de **quem não participa do bolão**
  (`PP-7-06`). A suíte garantia que participante e admin não veem antes do fim,
  mas não a barreira anterior — sigilo responde "quando", autorização responde
  "quem", e as duas precisam existir separadamente. Agora 403 nos dois endpoints.
