A aplicação de "Gestão de Salão" está sendo desenvolvida para melhorar a experiência de clientes e donos de salões de beleza, oferecendo uma plataforma digital centralizada que facilita o acesso a serviços de beleza. O sistema visa atender a um público diversificado e proporcionar maior conveniência no processo de agendamento, busca por promoções e interação com os salões. Além disso, o projeto busca otimizar os processos internos dos estabelecimentos, oferecendo ferramentas que facilitam o controle de agendas e o relacionamento com os clientes. Com essa abordagem, o "Gestão de Salão" pretende criar uma solução escalável, integrada e eficiente tanto para usuários quanto para salões.
Objetivo: Fornecer funcionalidades que aprimorem a interação dos usuario com os salões. Destinada tanto para usuários finais quanto para integração com outros sistemas de parceiros. Recursos Esperados:
- Inclusão de clientes: Possibilitar a inclusão de novos clientes no banco de dados.
- Busca por usuário de clientes: Possibilita localizar o cadastro de clientes no banco de dados.
- Atualização de cadastros: Permite a atualização de informações dos clientes, como endereço, telefone, e-mail, etc.
- Exclusão de clientes: Permitir a exclusão de registros de clientes do sistema.
Objetivo: Facilitar a marcação de horários com agilidade diretamente pelo aplicativo. Recursos Esperados:
- Realização de agendamento: Possibilita que o usuário, salão ou profissionais realize agendamento de serviços em salões.
- Atualização de agendamento: Permite que o salão ou profissionais modifique o agendamento.
- Exclusão de agendamentos: Permite que o usuário, salão ou profissionais cancele um agendamento.
- Serviços oferecidos nesta API: 1 Retornar todos os agendamentos apenas para usuários com papel de administrador; 2 Criar novos agendamentos(todos os perfis); 3 Retornar um agendamento especificos pelo seu Id(Adminsitrador e profissional); 4 Atualizar um agendamento existente(Administrador e profissional); 5 Deletar um agendamento(Administrador e profissional); 6 Retornar um agendamento de um usuário(todos os perfis); 7 Retornar um agendamento de um profissional(Agendamento do proprio profissional/Admnistrador e profissional); 8 Atualizar o status de um agendamento(Administrador e profissional); 9 Cancelar um agendamento(todos os perfis) 10 Recuperar agendamento de um data especifica(Administrador e profissional); 11 Recuperar agendamentos dentro de um intervalo de datas(Administrador e profissional);
Objetivo: Gerenciar o catálogo de serviços oferecidos pelos salões de beleza e facilitar o acesso dos clientes a esses serviços. Destinada a donos de salão para gestão interna e clientes que utilizam a plataforma para buscar e agendar serviços. Recursos Esperados:
- Cadastro de serviços: Permitir que os salões adicionem e atualizem os serviços oferecidos, incluindo preços e tempo estimado de execução.
- Consulta de serviços: Disponibilizar aos clientes uma lista detalhada de serviços oferecidos por cada salão, com filtros por tipo de serviço (corte de cabelo, manicure, tratamentos estéticos, etc.).
- Atualização de portfólio: Permitir que os salões modifiquem o portfólio de serviços, incluindo novas opções ou ajustando as existentes.
- Exclusão de serviços: Permitir que os donos de salão removam serviços que não são mais oferecidos.
- Retornar serviços pelo Id de um profissional.
Objetivo: Gerenciar o carrinho de compras dos usuários, permitindo a seleção e gerenciamento de serviços antes da finalização do agendamento. Destinada a clientes que utilizam a plataforma para escolher serviços e realizar agendamentos. Recursos Esperados:
- Adicionar serviço ao carrinho: Permitir que os clientes adicionem serviços ao carrinho enquanto navegam pelo catálogo. Cada serviço selecionado será incluído com detalhes como nome, preço e duração.
- Atualizar itens do carrinho: Oferecer aos clientes a capacidade de modificar os serviços selecionados, como alterar a quantidade (para produtos, se aplicável) ou mudar a data/horário do serviço.
- Remover serviço do carrinho: Permitir a exclusão de um serviço do carrinho de compras, ajustando o total conforme necessário.
- Visualizar carrinho: Disponibilizar uma visão geral do carrinho, incluindo a lista de serviços selecionados, preços totais e possíveis promoções aplicáveis.
- Limpar carrinho: Prover uma opção para que o cliente possa esvaziar completamente o carrinho, removendo todos os itens selecionados de uma vez.
Para o projeto Gestao de Salão, utilizamos uma arquitetura de microserviços. Cada API segue um padrão REST(Representational State Transfer), onde cada recurso é representado por um endpoint específico. Os componentes principais incluem:
- Controladores: Responsáveis por receber as requisições HTTP, processá-las e encaminhá-las para os serviços apropriados.
- Serviços: Lógica de negócios que manipula as operações CRUD e outras funcionalidades da aplicação.
- Modelo de Dados: Representação das entidades principais do sistema, como usuários, agendamentos, serviços e carrinho.
- Repositórios: conexão com o camada de banco de dados.
Segue abaixo a representação do modelo ER e as interações da API.
Fluxo de uma requisição típica (exemplo de agendamento de serviço):
- Etapa 1: O cliente faz login pelo aplicativo ou web e envia uma requisição de autenticação ao API Gateway.
- Etapa 2: O API Gateway valida o token de autenticação com o serviço de autenticação e retorna um token JWT.
- Etapa 3: O cliente seleciona um salão e um serviço, adiciona-o ao carrinho através da API de Carrinho.
- Etapa 4: O cliente confirma o agendamento através da API de Agendamento, que cria a reserva no banco de dados.
- Etapa 5: O carrinho de compras recebe o agendamento e espera o pagamento no próprio salão para dar baixa.
ID | Descrição do Requisito | Tipo | Prioridade | Responsável |
---|---|---|---|---|
RF-001 | O sistema deve permitir gestão de usuário. | USUÁRIO | ALTA | Everton De Souza github-repo-link |
RF-002 | O sistema deve permitir gestão de agenda. | AGENDA | ALTA | Sara Vidal github-repo-agendamentos and github-repo-api-gateway |
RF-003 | O sitema deve permitir gestão de serviços | SERVIÇOS | BAIXA | Roberto Santos github-repo-link |
RF-004 | O sistema deve possuir gestão de carrinho | PAGAMENTO | ALTA | Lucas Nascimento e Sarah Moura github-repo-link |
RF-005 | O sistema deve possuir sistema de notificação | MENSAGEM | BAIXA | Patrick Magalhães |
ID | Categoria | Descrição | Prioridade |
---|---|---|---|
RNF-01 | Desempenho | Tempo de Resposta: A aplicação deve carregar as principais funcionalidades, como login e seleção de serviços, em até 1 segundo, idealmente medido em milissegundos. | Alta |
RNF-02 | Desempenho | Escalabilidade: O sistema deve suportar entre 20 a 100 acessos simultâneos sem perda significativa de desempenho. | Média |
RNF-03 | Desempenho | Capacidade de Processamento: A aplicação deve processar múltiplas requisições simultâneas, especialmente durante horários de pico, sem afetar a performance. | Alta |
RNF-04 | Usabilidade | Interface Amigável: A interface deve ser intuitiva e otimizada para dispositivos móveis e navegadores web, facilitando a navegação entre páginas de cadastro, escolha de serviços e agendamento. | Alta |
RNF-05 | Usabilidade | Compatibilidade: A aplicação deve ser responsiva e garantir uma excelente experiência em dispositivos móveis (Android e iOS) e em navegadores web modernos. | Alta |
RNF-06 | Usabilidade | Documentação Básica: Incluir uma breve documentação ou tutorial que ajude os usuários a entender como usar a aplicação. | Média |
RNF-07 | Segurança | Autenticação: Implementar autenticação básica para garantir que apenas pessoas autorizadas possam acessar ou modificar informações. | Alta |
RNF-08 | Segurança | Hashing Simples: Implementar hashing para senhas utilizando um algoritmo de pelo menos 256 bits para garantir a segurança. | Alta |
RNF-09 | Segurança | Proteção de Dados Pessoais: Armazenar dados pessoais dos usuários de forma segura, utilizando o hashing de senhas especificado acima. | Alta |
RNF-10 | Confiabilidade | Backup Semanal: Realizar backups semanais dos dados críticos, com automatização para garantir a segurança e recuperação dos dados. | Média |
RNF-11 | Confiabilidade | Estabilidade Básica: A aplicação deve funcionar de forma estável durante as demonstrações e testes, sem quedas frequentes. | Alta |
RNF-12 | Maneabilidade | Código Limpo e Bem Comentado: Garantir um código organizado e comentado facilita a manutenção e a compreensão por outros desenvolvedores. | Baixa |
RNF-13 | Portabilidade | Compatibilidade com Sistemas Operacionais e Navegadores: A aplicação deve ser compatível com dispositivos móveis rodando Android e iOS e com navegadores web modernos. |
A ideia é desenvolver uma api REST utilizando a linguagem C#(contudo poderá haver uma alteraçao conforme a necessidade e demanda dos integrantes do grupo) e o framework Asp.net core. Para armazenamento foi utilizado o banco de dados relacional SqlServer. Lista das tecnologias:
Tecnologia | Aplicação |
---|---|
C# | Implementação do Backend |
Asp.net core | Framework |
SqlServer | Banco de Dados |
Autenticação | JWT |
....... | Deploy da web api |
Retornar todos os agendamentos do salão de beleza. Apenas usuários com papel de Aministrador podem acessar.
Cria um novo agendamento. Administradores, profissionais e usuários podem criar agendamentos.
Atualiza um agendamento existente pelo seu Id.
Deleta um agendamento pelo seu Id.
Para garantir os requisitos de confidenciabilidade e integridade da api, foi utilizado o JWT, que é um token criptografado de autenticação, com declarações sobre um usuário e uma chave, além dos recursos de autorização do framework asp.net core para restringir o acesso a determinadas funcionalidades da api e recursos anti-fraude.
[Instruções para implantar a aplicação distribuída em um ambiente de produção.]
- Defina os requisitos de hardware e software necessários para implantar a aplicação em um ambiente de produção.
- Escolha uma plataforma de hospedagem adequada, como um provedor de nuvem ou um servidor dedicado.
- Configure o ambiente de implantação, incluindo a instalação de dependências e configuração de variáveis de ambiente.
- Faça o deploy da aplicação no ambiente escolhido, seguindo as instruções específicas da plataforma de hospedagem.
- Realize testes para garantir que a aplicação esteja funcionando corretamente no ambiente de produção.
Caso de Test: colocar aqui Evidencia de teste colocar auqi
Para abranger todos os requisitos, tanto funcionais quanto não funcionais, foram conduzidos testes manuais utilizando a ferramenta Postman, conforme imagem a seguir.
Evidência de testes na API da criação de salões e financeiro. Realizamos os testes manuais na aplicação com a ferramenta Insomnia. Os casos testados foram: busca(get), busca por Id(getById), criação(create), atualização(update) e delete.
- Alguns tópicos do seguinte site: https://medium.com/beelabacademy, como Domain Driven Design, Implementando na prática Rest API com conceitos de DDD + .NET CORE + SQL no Docker + IoC entre outros.
- https://github.com/KleberSouza/mf-apis-web-services-fuel-manager/tree/master