PRD-0001-perfil-usuario
Comportamento do produto
Section titled “Comportamento do produto”Acesso
Section titled “Acesso”- Gatilho: clique/toque no avatar do usuário no header da página Home (quando logado).
- Resultado: abre o ProfileDialog em modal, com o perfil já carregado (dados vindos do último carregamento do perfil na Home).
Estrutura da tela
Section titled “Estrutura da tela”- Título: “Perfil”.
- Navegação: três abas — Dados Pessoais, Perfil na EBD, Mensagens e Preferências.
- Rodapé: botão Salvar perfil (aplica à aba Dados Pessoais), botão Sair, e botão de fechar (X).
- Regra de reflexo em tela: conforme ADR-0021, toda ação que altere o perfil ou realize chamada ao backend deve refletir imediatamente na tela, sem fechar o diálogo.
Abas e funcionalidades
Section titled “Abas e funcionalidades”1. Dados Pessoais
Section titled “1. Dados Pessoais”- Objetivo: exibir e editar dados cadastrais e avatar.
- Conteúdo: avatar (preview circular, iniciais ou foto), nome completo, apelido, e-mail (somente leitura), telefone, dropdown de igreja.
- Avatar: alteração por URL (colar e salvar), galeria ou câmera; ao tocar no avatar abre visualizador para zoom/posição e confirmar; indicação quando há alteração não salva.
- Igreja: lista carregada do backend (publicChurchesHttp); troca de igreja pode exigir confirmação (impacto no perfil na EBD).
- Ação principal: Salvar perfil — persiste nome, apelido, telefone, igreja e avatar no backend (USER_PROFILE_UPDATE).
- Detalhe técnico: TDD — Tab Dados Pessoais.
2. Perfil na EBD
Section titled “2. Perfil na EBD”- Objetivo: gerenciar cargo ativo, solicitar novos cargos e (quando aplicável) aprovar/rejeitar solicitações pendentes.
- Conteúdo:
- Cargo atual de operação: texto + ChoiceChips com os cargos elegíveis; seleção única; ao mudar, pode exigir confirmação.
- Cargo desejado: dropdown com papéis que o usuário ainda não possui e ainda não solicitou (excluindo aprovados e pendentes); loading enquanto carrega.
- Solicitar aprovação de cargo: quando o cargo desejado exige aprovação — motivo (se obrigatório) e botão “Solicitar aprovação de cargo”; quando não exige — botão “Confirma o novo cargo”.
- Minhas solicitações e Aprovações pendentes exibidas em sub-abas (uma por vez): na sub-aba “Minhas solicitações” aparece a lista das próprias solicitações (com opção excluir); na sub-aba “Aprovações pendentes” aparece a lista de solicitações pendentes para o usuário aprovar (quando tem cargo com permissão), com botões Aprovar, Rejeitar, Excluir e confirmação quando aplicável.
- Quem aprova: usuários cujo papel (conforme backend) está no nível hierárquico superior ao cargo solicitado e com permissão de aprovar no catálogo (can_approve_roles). Detalhes e validações: TDD Perfil na EBD — Definições de aprovação.
- Ações: trocar cargo ativo (ChoiceChip ou “Confirma o novo cargo”), solicitar cargo, aprovar/rejeitar/excluir solicitações.
- Detalhe técnico: TDD — Tab Perfil na EBD, TDD API Gateway.
3. Mensagens e Preferências
Section titled “3. Mensagens e Preferências”- Objetivo: exibir mensagens do perfil e editar preferências de aparência.
- Sub-abas:
- Mensagens: lista de mensagens do perfil (destaques e demais agrupadas); sem ação de marcar como lida na UI atual.
- Preferências: skin do app (Default, Light, Dark, Sepia), botão Salvar preferências (USER_PREFERENCES_UPDATE).
- Detalhe técnico: TDD — Tab Mensagens e Preferências.
Ações globais do diálogo
Section titled “Ações globais do diálogo”- Salvar perfil: aplica alterações da aba Dados Pessoais.
- Sair: encerra a sessão (clear do perfil em memória + Firebase Auth signOut) e fecha o diálogo.
- Fechar (X): fecha o diálogo sem deslogar.
Critérios de aceite (resumo)
Section titled “Critérios de aceite (resumo)”- Usuário logado consegue abrir o perfil pelo avatar na Home e ver suas informações em três abas.
- Dados pessoais e avatar podem ser editados e salvos; a tela reflete o resultado da operação sem fechar o diálogo.
- Cargo ativo pode ser alterado; cargo desejado pode ser solicitado ou confirmado conforme regras do catálogo; solicitações pendentes podem ser aprovadas/rejeitadas por quem tem permissão.
- Preferências de skin podem ser alteradas e salvas; mensagens do perfil são exibidas.
- Botão Sair encerra a sessão e fecha o diálogo; botão Fechar apenas fecha o diálogo.
Referências
Section titled “Referências”| Tipo | Documento |
|---|---|
| BRD | (a criar se houver requisito de negócio explícito para “perfil único”) |
| ADR | ADR-0013 — Perfil de usuário e ciclo de vida, ADR-0021 — Reflexo em tela após ações, ADR-0009 — Princípios de interface |
| TDD | ProfileDialog README, TDD Dados Pessoais, TDD Perfil na EBD, TDD Mensagens e Preferências, TDD API Perfil |
| Código | frontend/lib/presentation/modules/profile_dialog/ |