Requisitos do Sistema - LucasXRosas/utfprarena GitHub Wiki
Este documento detalha as funcionalidades, restrições e regras técnicas que guiam o desenvolvimento do back-end do sistema.
1. Requisitos Funcionais (RF)
Os requisitos funcionais descrevem as ações que o sistema deve ser capaz de executar.
Módulo de Autenticação e Usuários
- RF001 - Autenticação e Login de Usuários: O sistema deve autenticar usuários (alunos, professores e gestores) por meio de e-mail e senha, emitindo um token JWT para controle de sessão.
- RF002 - Auto-registro de Clientes: O sistema deve permitir o cadastro de novos alunos mediante o fornecimento de Nome, E-mail, CPF, Telefone e Senha.
- RF003 - Restrição de Acesso por Perfil: Garantir que as funcionalidades do sistema sejam liberadas de acordo com o perfil do usuário, divididos em:
- Cliente: Visualizar horários, realizar agendamentos e efetuar pagamentos.
- Professor: Gerenciar suas turmas e visualizar os clientes vinculados às suas aulas.
- Gestor da Arena: Visualizar relatórios financeiros da cobrança autônoma e gerenciar o cadastro de professores.
- RF004 - Vínculo de Aluno e Professor: Permitir a associação de um cliente a um professor específico no momento da contratação de aulas ou planos de treinamento.
Módulo Financeiro
- RF005 - Emissão Automática de Mensalidades: Gerar automaticamente uma nova cobrança de fatura vinculada ao plano do aluno a cada ciclo recorrente de 30 dias.
- RF006 - Registro de Baixa de Pagamento: Habilitar a conciliação financeira alterando o status da fatura após baixa manual por administrador ou via confirmação automatizada integrada a meios de pagamento digitais externos (como PIX ou cartão).
- RF007 - Histórico Financeiro Individual: Disponibilizar ao aluno a consulta detalhada de suas parcelas e faturas com os respectivos status de pagamento.
Módulo de Controle de Acesso
- RF008 - Verificação Automática de Acesso: Validar o status cadastral e financeiro (Ativo/Bloqueado) de forma automatizada tanto nas barreiras de controle de ingresso físico na arena.
- RF009 - Bloqueio Automatizado por Inadimplência: Alterar o status do aluno para 'BLOQUEADO' caso as regras financeiras de corte sejam estouradas.
- RF010 - Reativação Automática de Cadastro: Restabelecer o status do aluno para 'ATIVO' imediatamente após a regularização das pendências totais.
2. Requisitos Não Funcionais (RNF)
Os requisitos não funcionais definem os critérios de qualidade, técnicos e de segurança do software.
- RNF001 - Segurança e Privacidade de Credenciais: Todas as senhas de usuários devem ser protegidas por algoritmos de descaracterização irreversível antes do armazenamento, garantindo que nenhum operador do sistema, administrador ou invasor tenha acesso às senhas originais dos alunos.
- RNF002 - Sessões Seguras e Independentes: O sistema deve validar a identidade do usuário a cada requisição de forma segura, sem armazenar dados voláteis no servidor, garantindo estabilidade nas conexões mesmo com múltiplos acessos simultâneos e aplicando tempo limite de inatividade por segurança.
- RNF003 - Processamento em Horário de Baixo Impacto: A rotina diária de verificação financeira e aplicação de bloqueios deve ser executada de forma automatizada fora do horário comercial (durante a madrugada), garantindo que o sistema funcione com velocidade máxima para os clientes durante o dia.
- RNF004 - Integridade e Confiabilidade dos Dados Financeiros: O armazenamento das informações deve seguir padrões rigorosos de transação bancária, garantindo que nenhuma falha de energia ou interrupção de rede salve dados pela metade, assegurando a exatidão dos históricos de pagamentos.
Requisitos Técnicos
Tabela de Componentes da Arquitetura
| Camada / Componente | Tecnologia Recomendada | Justificativa Arquitetural |
|---|---|---|
| Runtime & Framework | PHP 8.x | Proporciona tipagem estática rigorosa, recursos modernos da linguagem e ecossistema consolidado para entregas ágeis de APIs RESTful escaláveis. |
| Banco de Dados Relacional | MySQL 8.0 | SGBD relacional robusto com conformidade total às propriedades ACID (RNF004), garantindo atomicidade e consistência estrita em operações financeiras. |
| Gerenciador de BD (GUI) | Sequel Ace / DBeaver | Ferramenta de gerenciamento visual de banco de dados para a equipe de desenvolvimento (uso em ambiente de homologação/local). |
| Segurança & Autenticação | JWT (JSON Web Tokens) + Bcrypt | Autenticação stateless de alta performance para a API (RNF002) combinada com hashing salgado (salted hash) de senhas para proteção contra ataques de força bruta e tabelas rainbow (RNF001). |