# PRD — Identificação e acesso

**Dono:** Igor · **Status:** rascunho · **Data:** 03/08/2026
**Origem:** lacuna encontrada ao escrever as stories dos 4 primeiros épicos

---

## 1. Problema

Nenhum dos quatro épicos originais definiu **quem é a pessoa**. Isso não é
um detalhe de infraestrutura: três coisas do produto dependem de identidade
estável.

- **O palpite precisa de dono.** Sem identidade, não há como dizer que o
  palpite é meu — e todo o sigilo (PP-7) e a auditoria de prazo (PP-2)
  perdem sentido.
- **O convite precisa saber quem entrou.** CC-5 leva a pessoa para dentro do
  bolão; sem identificação, "entrar" não significa nada.
- **O histórico precisa de dono estável.** Título de temporada passada (`CV-5`)
  e participação em vários bolões só existem se a mesma pessoa for reconhecida
  entre sessões e entre temporadas.

Hoje, no WhatsApp, a identidade é o nome da pessoa no grupo — e é isso que
faz "eu mandei sim" ser indiscutível apenas com base em memória.

## 2. Objetivo e métrica de sucesso

_Métricas propostas, a validar com o dono._

- **Zero palpite sem dono identificado.**
- **Do link de convite ao primeiro palpite sem barreira de cadastro longa** —
  cada passo a mais é participante que não entra.
- **Zero participante duplicado** por ter entrado duas vezes no mesmo bolão.

## 3. Personas afetadas

| Persona           | O que muda                                                          |
| ----------------- | ------------------------------------------------------------------- |
| **Administrador** | Consegue saber quem entrou, quem palpitou e quem é quem no ranking  |
| **Casual**        | Precisa criar conta antes de palpitar — é a barreira mais perigosa   |
| **Competitivo**   | Tem identidade estável entre temporadas, e por isso acumula histórico |

**Onde as personas discordam, e quem ganha:**

- **Segurança da conta × pressa do casual.** O competitivo quer que ninguém
  possa palpitar no lugar dele; o casual não quer preencher formulário 5
  minutos antes do apito. **Ganha o competitivo na exigência de conta, e o
  casual no tamanho do fluxo:** cadastro por e-mail é obrigatório, mas com o
  mínimo de campos possível, e o convite (CC-5) leva direto ao cadastro e
  depois ao bolão, sem passo intermediário.

## 4. Escopo

- Cadastro com e-mail e senha
- Login com e-mail e senha
- ~~Recuperação de acesso por e-mail~~ — **fora desta versão**: não haverá
  serviço de e-mail (decidido 03/08)
- Nome de exibição do participante — **criado em `AC-1`**; a exibição dele no
  ranking e na lista de participantes é responsabilidade de `PR-3` e `CC-7`,
  não deste épico
- Sessão persistente no device, para não pedir login a cada palpite
- Logout
- Vínculo entre a conta e a entrada no bolão pelo convite (CC-5)

## 5. Fora de escopo

- Login social (Google, Apple, Facebook) — pode entrar depois sem quebrar o
  modelo de conta por e-mail
- Login por telefone ou SMS
- Autenticação em dois fatores
- Trocar o e-mail da conta
- Excluir a conta e os dados (**ver risco na seção 9**)
- Perfil com foto, time do coração ou estatística pessoal

## 6. Regras de domínio decididas

| Regra                          | Decisão                                                                                                                                          | Status                   |
| ------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------ |
| Identificação                  | **Cadastro e login por e-mail e senha.** E-mail é o identificador único da conta                                                                  | decidido                 |
| Recuperação de acesso          | **Não existe nesta versão** (decidido 03/08: sem serviço de e-mail). Sem login social e sem telefone, **esquecer a senha significa perder a conta, os bolões e o histórico definitivamente**. Reverte a regra anterior | decidido                 |
| Reentrada de quem saiu         | **Não há reentrada: sair do bolão é definitivo** (decidido 03/08, reverte a decisão anterior de recuperar pontos pela mesma conta). A conta continua servindo para outros bolões e para o histórico | decidido                 |
| Nome de exibição               | Definido pelo participante. **Não precisa ser único** — nem entre bolões, nem dentro do mesmo bolão (confirmado 03/08)                              | decidido                 |
| Sessão                         | Persistente no device até logout explícito, para não pedir login antes de palpitar com o prazo estourando                                          | proposta a validar — Igor |
| Sigilo dos palpites            | não se aplica — épico _Palpite e prazo_. Consequência aqui: identidade não pode ser usada para inferir palpite alheio                               | não se aplica            |
| Prazo, pontuação, desempate    | não se aplica — épicos _Palpite e prazo_ e _Pontuação e ranking_                                                                                   | não se aplica            |
| Jogo adiado / cancelado / W.O. | não se aplica                                                                                                                                    | não se aplica            |
| Placar corrigido               | não se aplica                                                                                                                                    | não se aplica            |
| Entrada no meio                | não se aplica — épico _Criação e convite_                                                                                                         | não se aplica            |
| Palpite não enviado            | não se aplica                                                                                                                                    | não se aplica            |
| Dinheiro                       | **não se aplica — sem dinheiro nesta versão.** Isso reduz o risco desta conta: ela não dá acesso a valor financeiro                                | não se aplica            |

## 7. Fluxo principal

1. Recebo o link do convite no grupo e abro.
2. Como ainda não tenho conta, faço o cadastro com e-mail, senha e o nome
   que vai aparecer no ranking.
3. Logo depois do cadastro eu caio **no bolão do convite**, não numa tela
   inicial genérica.
4. Nas próximas vezes eu abro o app e já estou dentro, sem login.

⚠️ **Não há passo 5.** Esqueci a senha, perdi a conta — não existe recuperação
nesta versão (seção 6). É por isso que a sessão persistente do passo 4 deixa de
ser conveniência e passa a ser a única proteção prática do participante.

## 8. Requisitos não funcionais

- **O cadastro está no caminho crítico do convite.** Cada campo a mais é
  gente que não entra — e o casual costuma chegar com o prazo estourando.
- **Senha nunca armazenada de forma recuperável**, e nunca registrada em log.
- **Sessão precisa sobreviver ao app fechado**, senão o participante encontra
  uma tela de login justamente quando corre para palpitar.
- **Cadastro tem que funcionar com conexão ruim** — mesma realidade de PP-4.
- **A sessão persistente virou crítica, não conveniência.** Sem recuperação de
  senha, a sessão salva no device é o que impede a pessoa de perder o acesso na
  prática. Sessão que cai sozinha passa a ter custo de conta perdida — o que
  torna `AC-3` a story mais sensível deste épico.

## 9. Riscos e dependências

- **Bloqueia CC-5 e PP-1**, que são as posições #4 e #5 do backlog. É o
  gargalo do começo do desenvolvimento.
- 🔴 **Não há caminho de volta.** Sem serviço de e-mail, sem login social e sem
  telefone, **quem esquece a senha perde a conta em definitivo** — com os
  bolões e o histórico de títulos. E como sair de um bolão também é definitivo
  (`CV-4`), nem reentrar resolve. É o maior buraco funcional desta versão, e é
  decisão consciente de custo, não esquecimento.
  **Saída sem custo, se quiser fechar isso depois:** login com Google é
  gratuito e resolveria os dois problemas de uma vez — autenticação e
  recuperação — sem contratar serviço de e-mail.
- ~~Depende de um serviço de envio de e-mail~~ — **não haverá** nesta versão
  (03/08). O cadastro não precisa dele porque a confirmação deixou de ser
  obrigatória; a recuperação simplesmente não existe.
- **Excluir conta está fora de escopo, mas é obrigação legal (LGPD).** Deixar
  para depois é decisão consciente, não esquecimento — e precisa ser
  resolvido antes de o app ir para as lojas.
- Nome de exibição livre permite dois participantes com o mesmo nome no
  mesmo bolão, o que confunde o ranking.

## 10. Perguntas abertas

_Nenhuma pergunta aberta neste épico._

**Respondidas em 03/08/2026:**

- **Confirmação de e-mail: não é obrigatória.** A conta funciona no ato do
  cadastro e o convidado palpita na mesma rodada em que foi chamado. Mantém o
  caminho do convite curto, que era o objetivo da seção 2.
- **Nome de exibição: não precisa ser único**, nem entre bolões nem dentro do
  mesmo bolão. ⚠️ Dois participantes homônimos no mesmo ranking são possíveis —
  aceito.
- **Serviço de e-mail: não haverá nesta versão.** Ver a consequência na
  seção 6 e o risco na seção 9. **Cancela a story `AC-4`.**
- **Excluir conta (LGPD): antes de publicar**, não nesta versão. Fica como
  porteiro de publicação nas lojas, não de desenvolvimento.

## 11. Stories derivadas

Os Given/When/Then vivem no cartão de cada story (`docs/stories/`), não aqui.

- [ ] `AC-1` Cadastro com e-mail, senha e nome de exibição
- [ ] `AC-2` Login com e-mail e senha
- [ ] `AC-3` Sessão persistente e logout
- ~~`AC-4` Recuperação de acesso por e-mail~~ — **cancelada em 03/08**: sem
  serviço de e-mail nesta versão

---

## Bloqueios

**Uma pergunta bloqueia a story de cadastro:** se a confirmação de e-mail é
obrigatória antes do primeiro palpite. Se for, ela entra no caminho crítico
do convite e o casual pode não conseguir palpitar na rodada em que foi
convidado — o que contraria o objetivo da seção 2.

As outras três stories (login, sessão, recuperação) podem ser escritas já.
