## CV-5 — Histórico de bolões anteriores e títulos

**PRD:** `docs/prd/ciclo-de-vida-do-bolao.md`

**Como** participante competitivo, **quero** consultar os bolões que já
terminei e onde eu ficei em cada um, **para** ter o registro dos meus títulos
— campeão do ano passado é status.

**Prioridade:** Could — é o item que o próprio usuário classificou como "bom
ter, mas eu uso o app sem".

**Critérios de aceite:**

- Dado que participei de bolões encerrados, quando abro meu histórico, então
  vejo cada bolão com o ranking final e a minha posição.
- Dado que fui campeão de um bolão, então isso fica destacado no histórico.
- Dado que fui co-campeão, então o título aparece como compartilhado, não como
  vitória isolada.
- Dado que nunca participei de bolão encerrado, então vejo mensagem útil em
  vez de tela vazia.
- Dado que saí de um bolão antes do fim, então ele aparece no histórico como
  abandonado, sem posição final.

**Tasks:**

_Backend_
- [x] `BE-1` Endpoint de histórico do participante: bolões encerrados, posição final e títulos (depende de CV-1 BE-3)
- [x] `BE-2` Distinguir campeão, co-campeão e bolão abandonado no histórico (depende de BE-1, CV-2 BE-1, CV-4 BE-1)

_Mobile_
- [x] `FE-1` Tela de histórico com bolões encerrados e posição final (depende de BE-1)
- [x] `FE-2` Destaque de título, diferenciando campeão de co-campeão (depende de BE-2)
- [x] `FE-3` Estados: sem histórico, carregando, erro com retry

_QA_
- [x] `QA-1` Escrever o plano de casos de teste a partir desta story
- [x] `QA-2` Executar o plano com campeão, co-campeão, bolão abandonado e histórico vazio

**Riscos/Dependências:**

- Depende de CV-1, CV-2 e CV-4.
- Bolão encerrado antecipadamente (CV-3) precisa aparecer de forma honesta no
  histórico — título de bolão encerrado na rodada 5 não vale o mesmo.
- ⚠️ **Decidido em 03/08: correção de placar após o encerramento troca o
  campeão.** Logo, **um título registrado aqui pode ser revogado** depois de
  já ter aparecido no histórico. `BE-1` não pode tratar o histórico como
  imutável, e quem perde o título precisa ser avisado (PR-7) — descobrir por
  acaso que deixou de ser campeão é o pior resultado possível.

- **07/08 — QA:** plano em `docs/testes/CV-5-plano.md`, execução em
  `docs/testes/CV-5-execucao.md` (**10/10 ✅**). Um caso novo: erro de rede é
  distinto de "sem histórico" — é o terceiro lugar onde esse par de estados
  aparece, e aqui o engano é o mais caro dos três, porque a pessoa acha que perdeu
  os títulos dela.

- **07/08 — defeito de acessibilidade em `FE-2`, corrigido.** O destaque de título
  usava `Colors.amber.shade700`, que dá contraste **2.04** sobre a superfície —
  abaixo até do mínimo de 3.0 para ícone. O troféu quase desaparecia para quem tem
  baixa visão, justamente no item que a pessoa quer mostrar no grupo. Agora usa
  `CoresDoApp.campeao` (contraste 5.10), e o limite virou teste em
  `test/tema_test.dart`. O comportamento da task estava certo; o que faltava era
  medir o contraste — nenhum caso do plano de `CV-5` fazia isso.
