## PR-2 — Extrato do ponto por jogo

**PRD:** `docs/prd/pontuacao-e-ranking.md`

**Como** participante competitivo, **quero** ver a conta do meu ponto jogo
por jogo, **para** entender de onde vieram os pontos sem pedir explicação ao
admin.

**Prioridade:** Must — "confia" não resolve discussão; a conta aberta é o que
substitui o admin como árbitro.

**Critérios de aceite:**

- Dado que a rodada foi apurada, quando abro meu extrato, então vejo por jogo:
  o que eu palpitei, o placar oficial, e quantos pontos aquilo valeu.
- Dado que vejo um jogo no extrato, então vejo **por que** valeu aquele tanto
  (placar exato, vencedor e saldo, só vencedor, ou erro).
- Dado que eu não palpitei num jogo, então o extrato mostra o jogo com
  palpite ausente e 0 pontos, não omite o jogo.
- Dado que o jogo não terminou, então ele aparece no extrato como pendente,
  sem ponto e sem revelar palpite de outros.
- Dado que tento ver o extrato de outro participante de um jogo não
  terminado, então a requisição é recusada.

**Tasks:**

_Backend_
- [x] `BE-1` Endpoint de extrato do participante por rodada: palpite, placar oficial, pontos e o motivo da pontuação (depende de PR-1 BE-3)
- [x] `BE-2` Incluir jogos sem palpite no extrato, com 0 pontos (depende de BE-1)
- [x] `BE-3` Respeitar o sigilo de PP-7 no extrato de terceiros (depende de BE-1)

_Mobile_
- [x] `FE-1` Tela de extrato por rodada, com a conta visível por jogo (depende de BE-1)
- [x] `FE-2` Estados: rodada não apurada, sem palpite, erro com retry

_QA_
- [x] `QA-1` Escrever o plano de casos de teste a partir desta story
- [x] `QA-2` Executar o plano conferindo que a soma do extrato bate com o total do ranking (PR-3)

**Riscos/Dependências:**

- Depende de PR-1.
- **O extrato é endpoint agregado** — é um dos candidatos a vazar palpite de
  jogo não terminado (ver PP-7 BE-3).
- Se a soma do extrato não bater com o ranking, o app perde a credibilidade
  que esta story existe para criar.

- **06/08:** o estado "sem palpite" existia no app mas o backend o devolvia como
  `AGUARDANDO_RESULTADO`, e a tela dizia "aguardando resultado" **com o placar
  oficial já visível ao lado**. Corrigido com o estado `SEM_PALPITE` no
  `extrato.service` e o texto "você não palpitou neste jogo".

- **07/08 — QA:** plano em `docs/testes/PR-2-plano.md`, execução em
  `docs/testes/PR-2-execucao.md` (**11/11 ✅**). O critério de `QA-2` (soma do
  extrato = total do ranking) está travado por caso próprio.
- **07/08 — registrado:** `BE-3` fala em "respeitar o sigilo no extrato de
  terceiros", mas **não existe rota** de extrato de outra pessoa — o endpoint é
  sempre o do dono do token, então o sigilo é garantido por construção. A via
  legítima de ver palpite alheio é a de `PP-7`, coberta na suíte de sigilo. Quem
  lê a task isolada procura uma checagem de autorização que não tem por que
  existir.
