|
|
|
## User Stories
|
|
|
|
|
|
|
|
As histórias de usuário formuladas foram organizadas em conjuntos denominados "épicos", com o propósito de simplificar a visualização das funcionalidades do aplicativo nas fases de conclusão, desenvolvimento ativo e planejamento. Cada épico abrange histórias de usuário convencionais ou histórias de administração.
|
|
|
|
|
|
|
|
Os épicos criados foram:
|
|
|
|
|
|
|
|
* Landing Page
|
|
|
|
* Informações
|
|
|
|
* Mapa Centros de Apoio
|
|
|
|
* Configurações
|
|
|
|
* Autenticação e Cadastro
|
|
|
|
* Fórum
|
|
|
|
* Admin: Controle de usuários e empresas
|
|
|
|
* Admin: Gerência do Fórum
|
|
|
|
|
|
|
|
### Landing Page
|
|
|
|
|
|
|
|
<details>
|
|
|
|
<summary>US01 – Acessar Landing Page </summary>
|
|
|
|
|
|
|
|
> **Como** usuário, **quero** acessar a página inicial (Landing Page), **para** visualizar os principais fluxos da aplicação.
|
|
|
|
|
|
|
|
**Critérios de aceite:**
|
|
|
|
1. Logo do projeto.
|
|
|
|
2. NavBar (Fóruns, informações, leis)
|
|
|
|
3. Instituições
|
|
|
|
4. Obs: Mapa de instituições ainda não será adicionado. Posteriormente será colocado na Landing Page.
|
|
|
|
</details>
|
|
|
|
|
|
|
|
### Informações
|
|
|
|
|
|
|
|
<details>
|
|
|
|
<summary>US02 – Tela de Leis</summary>
|
|
|
|
|
|
|
|
> **Como** usuário, **quero** sobre leis e direitos dos refugiados no Brasil,
|
|
|
|
**para** entender como funciona minha situação legal.
|
|
|
|
|
|
|
|
**Critérios de aceite:**
|
|
|
|
1. A tela deve ser responsiva para mobile e desktop.
|
|
|
|
</details>
|
|
|
|
<details>
|
|
|
|
<summary>US03 – Tela de Quem Somos</summary>
|
|
|
|
|
|
|
|
> **Como** usuário, **quero** acessar a seção "Quem Somos", **para** conhecer mais sobre a missão, visão e valores da empresa e entender melhor sua história.
|
|
|
|
|
|
|
|
**Critérios de aceite:**
|
|
|
|
1. A tela deve ser responsiva para mobile e desktop.
|
|
|
|
</details>
|
|
|
|
|
|
|
|
### Mapa Centros de Apoio
|
|
|
|
|
|
|
|
<details>
|
|
|
|
<summary>US04 – Mapa de Centros de Apoio</summary>
|
|
|
|
|
|
|
|
> **Como** usuário, **quero** … **para** …
|
|
|
|
|
|
|
|
|
|
|
|
**Critérios de aceite:**
|
|
|
|
1. A tela deve ser responsiva para mobile e desktop.
|
|
|
|
2. …
|
|
|
|
|
|
|
|
</details>
|
|
|
|
|
|
|
|
<details>
|
|
|
|
<summary>US05 – Cadastro de centros de apoio</summary>
|
|
|
|
|
|
|
|
> **Como** administrador, **quero** poder cadastrar, visualizar, atualizar e excluir centros de apoio, **para** gerenciar os centros disponíveis no sistema de forma eficiente.
|
|
|
|
|
|
|
|
|
|
|
|
**Critérios de aceite:**
|
|
|
|
|
|
|
|
#### Backend
|
|
|
|
1. O sistema deve permitir cadastrar um novo local com nome, latitude e longitude.
|
|
|
|
2. O sistema deve permitir buscar todos os locais cadastrados.
|
|
|
|
3. O sistema deve permitir buscar um local pelo ID.
|
|
|
|
4. O sistema deve permitir editar um local existente (atualizar nome, lat, long).
|
|
|
|
5. O sistema deve permitir excluir um local do banco de dados.
|
|
|
|
6. O backend deve retornar mensagens de erro adequadas caso os dados sejam inválidos ou o local não exista.
|
|
|
|
7. O CRUD deve ser exposto via API REST com endpoints bem definidos.
|
|
|
|
#### Frontend
|
|
|
|
|
|
|
|
</details>
|
|
|
|
|
|
|
|
### Configurações
|
|
|
|
|
|
|
|
<details>
|
|
|
|
<summary>US06 – Adicionar suporte a múltiplos idiomas</summary>
|
|
|
|
|
|
|
|
> **Como** usuário, **quero** … **para** …
|
|
|
|
|
|
|
|
**Critérios de aceite:**
|
|
|
|
1. A tela deve ser responsiva para mobile e desktop.
|
|
|
|
2. …
|
|
|
|
</details>
|
|
|
|
|
|
|
|
|
|
|
|
### Autenticação e Cadastro
|
|
|
|
|
|
|
|
<details>
|
|
|
|
<summary>US07 – Cadastro de conta</summary>
|
|
|
|
|
|
|
|
> **Como** usuário, **quero** me cadastrar na plataforma, **para** que eu possa visualizar comentários no fórum.
|
|
|
|
|
|
|
|
**Critérios de aceite:**
|
|
|
|
|
|
|
|
#### Backend
|
|
|
|
1. O usuário deve poder se cadastrar preenchendo nome, e-mail, senha, telefone, cidade e linguagem de preferência.
|
|
|
|
2. Validar tamanho mínimo da senha (8 caracteres)
|
|
|
|
3. O sistema deve validar se o e-mail já está cadastrado antes de criar a conta.
|
|
|
|
4. A senha deve ser hasheada antes de ser armazenada no banco.
|
|
|
|
#### Frontend
|
|
|
|
|
|
|
|
|
|
|
|
</details>
|
|
|
|
|
|
|
|
<details>
|
|
|
|
<summary>US08 – Login</summary>
|
|
|
|
|
|
|
|
> **Como** usuário ou administrador, **quero** realizar o login na aplicação fornecendo minhas credenciais (nome de usuário e senha), **para** que eu possa acessar minha conta de forma segura e personalizada, com um token de autenticação válido.
|
|
|
|
|
|
|
|
**Critérios de aceite:**
|
|
|
|
|
|
|
|
#### Backend
|
|
|
|
1. O backend deve validar se o (nome de usuário ou email) e a senha fornecidos estão corretos.
|
|
|
|
2. Se as credenciais estiverem corretas, o sistema deve gerar um token JWT (ou outro mecanismo de autenticação) e enviá-lo de volta para o cliente.
|
|
|
|
3. Se as credenciais estiverem incorretas, o sistema deve retornar um erro 401 (Não autorizado) com uma mensagem adequada, como "Credenciais inválidas".
|
|
|
|
4. O token gerado deve ter um tempo de expiração configurável (por exemplo, 1 hora).
|
|
|
|
5. O sistema deve verificar se o usuário está marcado como ativo no banco de dados. Se o usuário estiver inativo, o sistema deve retornar um erro 403 (Proibido) com uma mensagem apropriada, como "Usuário bloqueado".
|
|
|
|
6. Middleware de autenticação
|
|
|
|
7. O sistema deve retornar erros 400 (Bad Request) se o formato dos dados enviados na requisição de login for inválido, como campos obrigatórios ausentes (ex: usuário ou senha não informados).
|
|
|
|
8. O sistema deve usar algoritmos seguros para a validação de senhas (bcrypt).
|
|
|
|
9. O sistema deve retornar uma resposta clara e estruturada em caso de sucesso, contendo o token de autenticação e outros dados relevantes, como o nome do usuário e as permissões associadas.
|
|
|
|
#### Frontend
|
|
|
|
10. O formulário de login deve conter os campos de (nome de usuário ou email) e senha.
|
|
|
|
11. O botão de login deve estar desabilitado até que ambos os campos sejam preenchidos corretamente.
|
|
|
|
12. O campo de senha deve ser mascarado, de modo que o usuário não veja o valor digitado.
|
|
|
|
13. Se o usuário tentar submeter o formulário sem preencher os campos obrigatórios, uma mensagem de erro deve ser exibida, indicando que ambos os campos são necessários.
|
|
|
|
14. Após a validação das credenciais, se o login for bem-sucedido, o sistema deve redirecionar o usuário para a Landing Page.
|
|
|
|
15. (Toast) Se o login falhar (por exemplo, credenciais incorretas), o usuário deve ver uma mensagem de erro clara, como "Credenciais inválidas", sem revelar informações sensíveis.
|
|
|
|
16. Caso o backend retorne um erro (por exemplo, o servidor esteja offline ou não seja possível validar as credenciais), o frontend deve exibir uma mensagem genérica de erro, como "Erro ao tentar realizar login. Tente novamente mais tarde".
|
|
|
|
17. Durante o processo de login (enquanto o sistema está verificando as credenciais), o botão de login deve ser desabilitado, e um indicador de carregamento (spinner ou animação) deve ser mostrado para o usuário.
|
|
|
|
18. O frontend deve armazenar o token de autenticação (se o login for bem-sucedido) em um local seguro, como localStorage ou sessionStorage, para ser usado nas requisições subsequentes.
|
|
|
|
19. O token deve ser enviado no header Authorization das requisições posteriores para autenticar o usuário.
|
|
|
|
20. Deve existir um link ou botão na tela de login que redirecione o usuário para uma página de recuperação de senha, caso ele tenha esquecido suas credenciais.
|
|
|
|
21. O formulário de login deve ser acessível, incluindo etiquetas apropriadas para leitores de tela e navegação por teclado.
|
|
|
|
|
|
|
|
</details>
|
|
|
|
|
|
|
|
<details>
|
|
|
|
<summary>US09 – Logout</summary>
|
|
|
|
|
|
|
|
> **Como** usuário ou administrador logado, **quero** fazer fazer logout da minha conta, **para** que eu não esteja mais autenticado.
|
|
|
|
|
|
|
|
**Critérios de aceite:**
|
|
|
|
|
|
|
|
#### Backend
|
|
|
|
1. Quando o usuário fizer logout, o backend deve invalidar o token JWT ou qualquer outro mecanismo de autenticação utilizado.
|
|
|
|
2. O token inválido não deve ser aceito em requisições subsequentes.
|
|
|
|
3. O sistema deve retornar um status de sucesso (exemplo: 200 OK) ao concluir o logout corretamente, indicando que a sessão foi encerrada.
|
|
|
|
4. O backend deve garantir que a revogação do token ou qualquer outro mecanismo de logout seja feito de maneira segura, sem expor informações sensíveis.
|
|
|
|
5. Se houver algum erro ao processar o logout (por exemplo, se a sessão do usuário já tiver expirado), o sistema deve retornar um erro apropriado (exemplo: 401 Unauthorized) com uma mensagem como "Sessão expirada ou já encerrada".
|
|
|
|
#### Frontend
|
|
|
|
6. Deve existir um botão ou link visível na NavBar que, ao ser clicado, execute a ação de logout.
|
|
|
|
7. O botão de logout deve estar disponível apenas após o usuário estar autenticado.
|
|
|
|
8. Após o usuário realizar o logout, ele deve ser redirecionado para a tela de login ou para a Landing Page.
|
|
|
|
9. O redirecionamento deve ocorrer imediatamente após a resposta do backend indicando que o logout foi bem-sucedido.
|
|
|
|
10. O frontend deve limpar todos os dados de sessão armazenados no navegador (como tokens de autenticação, informações do usuário, etc.) após o logout.
|
|
|
|
11. O armazenamento local (como localStorage ou sessionStorage) deve ser limpo completamente.
|
|
|
|
12. Se ocorrer algum erro ao tentar fazer logout (por exemplo, se o servidor estiver indisponível), o sistema deve mostrar uma mensagem de erro genérica, como "Erro ao encerrar a sessão. Tente novamente mais tarde."
|
|
|
|
13. O botão de logout deve ser acessível, com um texto claro como "Sair" ou "Logout" e suporte a navegação por teclado e leitores de tela.
|
|
|
|
|
|
|
|
</details>
|
|
|
|
|
|
|
|
<details>
|
|
|
|
<summary>US10 – Edição do cadastro de usuário</summary>
|
|
|
|
|
|
|
|
> **Como** usuário, **quero** … **para** …
|
|
|
|
|
|
|
|
|
|
|
|
**Critérios de aceite:**
|
|
|
|
1. A tela deve ser responsiva para mobile e desktop.
|
|
|
|
2. …
|
|
|
|
|
|
|
|
</details>
|
|
|
|
|
|
|
|
<details>
|
|
|
|
<summary>US11 – Esqueci minha senha</summary>
|
|
|
|
|
|
|
|
> **Como** usuário, **quero** … **para** …
|
|
|
|
|
|
|
|
|
|
|
|
**Critérios de aceite:**
|
|
|
|
1. A tela deve ser responsiva para mobile e desktop.
|
|
|
|
2. …
|
|
|
|
|
|
|
|
</details>
|
|
|
|
|
|
|
|
### Fórum
|
|
|
|
|
|
|
|
<details>
|
|
|
|
<summary>US12 – Criação de fórum</summary>
|
|
|
|
|
|
|
|
> **Como** administrador, **quero** … **para** …
|
|
|
|
|
|
|
|
**Critérios de aceite:**
|
|
|
|
1. …
|
|
|
|
</details>
|
|
|
|
|
|
|
|
<details>
|
|
|
|
<summary>US13 – Criação de tópico</summary>
|
|
|
|
|
|
|
|
> **Como** administrador ou empresa verificada, **quero** … **para** …
|
|
|
|
|
|
|
|
**Critérios de aceite:**
|
|
|
|
1. …
|
|
|
|
</details>
|
|
|
|
|
|
|
|
<details>
|
|
|
|
<summary>US14 – Comentário</summary>
|
|
|
|
|
|
|
|
> **Como** administrador ou empresa verificada ou usuário, **quero** … **para** …
|
|
|
|
|
|
|
|
**Critérios de aceite:**
|
|
|
|
1. …
|
|
|
|
</details>
|
|
|
|
|
|
|
|
|
|
|
|
### Admin: Controle de usuários e empresas
|
|
|
|
|
|
|
|
<details>
|
|
|
|
<summary>US15 – Admin: controle de usuários</summary>
|
|
|
|
|
|
|
|
> **Como** administrador, **quero** … **para** …
|
|
|
|
|
|
|
|
**Critérios de aceite:**
|
|
|
|
1. …
|
|
|
|
</details>
|
|
|
|
|
|
|
|
<details>
|
|
|
|
<summary>US16 – Admin: controle de empresas</summary>
|
|
|
|
|
|
|
|
> **Como** administrador, **quero** … **para** …
|
|
|
|
|
|
|
|
**Critérios de aceite:**
|
|
|
|
1. …
|
|
|
|
</details>
|
|
|
|
|
|
|
|
<details>
|
|
|
|
<summary>US17 – Criação de empresa</summary>
|
|
|
|
|
|
|
|
> **Como** administrador, **quero** … **para** …
|
|
|
|
|
|
|
|
**Critérios de aceite:**
|
|
|
|
1. …
|
|
|
|
</details>
|
|
|
|
|
|
|
|
<details>
|
|
|
|
<summary>US18 – Bloquear/Desativar contar</summary>
|
|
|
|
|
|
|
|
> **Como** administrador, **quero** … **para** …
|
|
|
|
|
|
|
|
**Critérios de aceite:**
|
|
|
|
1. …
|
|
|
|
</details>
|
|
|
|
|
|
|
|
<details>
|
|
|
|
<summary>US19 – Edição do cadastro de empresa</summary>
|
|
|
|
|
|
|
|
> **Como** administrador, **quero** … **para** …
|
|
|
|
|
|
|
|
**Critérios de aceite:**
|
|
|
|
1. …
|
|
|
|
</details>
|
|
|
|
|
|
|
|
|
|
|
|
### Admin: Gerência do Fórum
|
|
|
|
|
|
|
|
|
|
|
|
<details>
|
|
|
|
<summary>US20 – Deleção de fórum</summary>
|
|
|
|
|
|
|
|
> **Como** administrador, **quero** … **para** …
|
|
|
|
|
|
|
|
**Critérios de aceite:**
|
|
|
|
1. …
|
|
|
|
</details>
|
|
|
|
|
|
|
|
<details>
|
|
|
|
<summary>US21 – Deleção de tópico</summary>
|
|
|
|
|
|
|
|
> **Como** administrador, **quero** … **para** …
|
|
|
|
|
|
|
|
**Critérios de aceite:**
|
|
|
|
1. …
|
|
|
|
</details>
|
|
|
|
|
|
|
|
|
|
|
|
<details>
|
|
|
|
<summary>US22 – Deleção de comentário</summary>
|
|
|
|
|
|
|
|
> **Como** administrador, **quero** … **para** …
|
|
|
|
|
|
|
|
**Critérios de aceite:**
|
|
|
|
1. …
|
|
|
|
</details>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## Sprints
|
|
|
|
|
|
|
|
Nesta seção, você encontrará as Histórias de Usuário de cada sprint, bem como o estado de aprovação de cada narrativa, tal como determinado pela parte interessada durante as revisões de sprint.
|
|
|
|
|
|
|
|
### Definição de pronto
|
|
|
|
|
|
|
|
* Código revisado e aprovado por ao menos dois AGES III/IV
|
|
|
|
* Sem erros no console ao executar o que foi desenvolvido
|
|
|
|
* Estar de acordo com os critérios de aceite da US relacionada
|
|
|
|
* Aceitação do cliente
|
|
|
|
|
|
|
|
### Escopo por Sprint
|
|
|
|
|
|
|
|
Nesta seção, estão dispostas as histórias de usuário por sprint, acompanhadas dos seus estados de aprovação e uma definição de critérios de conclusão para as histórias de usuário.
|
|
|
|
|
|
|
|
**Legenda para status de aceite**
|
|
|
|
|
|
|
|
* :white_check_mark: : US aceita
|
|
|
|
* :warning: : US parcialmente aceita, ou entregue com dívida técnica
|
|
|
|
* :x: : US não aceita
|
|
|
|
|
|
|
|
#### Sprint 1 | 19/03 a 09/04
|
|
|
|
| User Story | Descrição | Status |
|
|
|
|
|:--:|-----------|:------:|
|
|
|
|
| US01 | **Como** usuário, **quero** acessar a página inicial (Landing Page), **para** visualizar os principais fluxos da aplicação. ||
|
|
|
|
| US05 | **Como** administrador, **quero** poder cadastrar, visualizar, atualizar e excluir centros de apoio, **para** gerenciar os centros disponíveis no sistema de forma eficiente. ||
|
|
|
|
| US07 | **Como** usuário, **quero** me cadastrar na plataforma, **para** que eu possa visualizar comentários no fórum. ||
|
|
|
|
| NO-US | Componente de botão ||
|
|
|
|
| NO-US | Componente de input ||
|
|
|
|
| NO-US | NavBar ||
|
|
|
|
| NO-US | SVG Logo ||
|
|
|
|
|
|
|
|
#### Sprint 2 | 09/04 a 05/05
|
|
|
|
| User Story | Descrição | Status |
|
|
|
|
|:--:|-----------|:------:|
|
|
|
|
|
|
|
|
#### Sprint 3 | 05/05 a 26/05
|
|
|
|
| User Story | Descrição | Status |
|
|
|
|
|:--:|-----------|:------:|
|
|
|
|
|
|
|
|
#### Sprint 4 | 26/05 a 16/06
|
|
|
|
| User Story | Descrição | Status |
|
|
|
|
|:--:|-----------|:------:|
|
|
|
|
|