## PR-1 — Calcular o ponto de cada palpite

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

**Como** participante, **quero** que meus pontos sejam calculados sozinhos
quando o jogo termina, **para** ninguém precisar somar nada à mão.

**Prioridade:** Must — é o que tira o admin do papel de calculadora, a causa
direta de ele desistir na terceira rodada.

**Critérios de aceite:**

- Dado que acertei o placar exato, quando o jogo é apurado, então recebo
  **10** pontos.
- Dado que acertei o vencedor **e** o saldo de gols, mas não o placar exato,
  então recebo **5** pontos.
- Dado que acertei só o vencedor, então recebo **3** pontos.
- Dado que errei o vencedor, então recebo **0** pontos.
- Dado que o jogo terminou empatado e eu palpitei o placar exato do empate,
  então recebo **10**; se palpitei outro empate, recebo **3**.
- Dado que eu não palpitei naquele jogo, então recebo **0**, sem penalidade
  adicional.
- Dado que o jogo ainda não terminou, então nenhum ponto é atribuído.
- Dado que o jogo já terminou mas o placar ainda não chegou da fonte (atraso do
  tier gratuito), então o jogo aparece explicitamente como **"aguardando
  resultado"** — nunca como zero pontos nem como tela vazia.

**Tasks:**

_Backend_
- [x] `BE-1` Ingerir o placar final oficial do jogo a partir da fonte de resultados
- [x] `BE-2` Implementar a regra 10 / 5 / 3 / 0, incluindo o caso de empate (depende de BE-1)
- [x] `BE-3` Persistir o ponto por palpite, com o placar oficial que o gerou (depende de BE-2)
- [x] `BE-4` Marcar o jogo como terminado, para liberar o sigilo de PP-7 (depende de BE-1)

_Mobile_
- [x] `FE-1` Exibir o ponto obtido em cada jogo da rodada (depende de BE-3)
- [x] `FE-2` Estado "aguardando resultado" para jogo terminado sem placar apurado, distinto de zero pontos (depende de BE-1)

_QA_
- [x] `QA-1` Escrever o plano de casos de teste a partir desta story
- [x] `QA-2` Executar o plano com tabela de casos cobrindo as quatro faixas, empates e ausência de palpite
- [x] `QA-3` Confirmar que o app **não recalcula ponto localmente**: alterar o valor no servidor e verificar que a tela reflete o servidor, sem conta própria (regra de RNF do PRD)

**Riscos/Dependências:**

- **Depende da fonte oficial de resultados** — mesma dependência crítica dos
  outros épicos.
- ⚠️ **O tier gratuito da `football-data.org` entrega placar atrasado** (decisão
  de PoC, 03/08). O ponto não aparece logo após o apito. `FE-1` precisa mostrar
  o jogo como "aguardando resultado" de forma explícita, senão o participante lê
  como app travado — e essa é a única necessidade essencial da Fase 1 que fica
  descoberta.
- O cálculo é do servidor; o app nunca é fonte de verdade (regra do PRD).
- BE-4 é o gatilho do sigilo: enquanto o jogo não é marcado como terminado,
  palpite de terceiro continua oculto.
- "Saldo de gols" aqui significa a diferença de gols entre os times, não o
  saldo acumulado no campeonato.

- **06/08:** plano em `docs/testes/PR-1-plano.md` (14 casos) e execução em
  `docs/testes/PR-1-execucao.md` — **✅ 14 de 14**.
- `QA-3` foi executada de verdade: alterei `points` para **77** direto no banco e
  o extrato no emulador mostrou `77 pts` e total `154`. O app exibe o que o
  servidor calculou, sem repetir a conta.
- ⚠️ Aviso que não bloqueia: `PR-1-06` (empate `1x1` num jogo `4x4` vale 3, não
  5) é regra intencional mas **não óbvia**. A tela de regras foi corrigida para
  dizê-la. Vale confirmar a regra antes do primeiro bolão real — mudar depois é
  mexer em pontuação já registrada.

- **07/08 — regra do empate confirmada pelo dono.** Palpitar `1x1` num jogo que
  termina `4x4` vale **3 pontos** (só vencedor), não 5: todo empate tem saldo 0,
  então "acertou o saldo" não diz nada além de "acertou que foi empate". A
  confirmação importa porque mudar depois significaria alterar pontos já
  registrados — e o caso `PR-1-06` existe justamente para travar isso.
