Regras de Negócio - LucasXRosas/utfprarena GitHub Wiki
Aqui está o documento atualizado com as suas novas regras. As alterações foram feitas para refletir a régua de notificações a cada 7 dias e o bloqueio automático após 30 dias de atraso (1 mês de inadimplência em uma fatura), mantendo a coerência na reativação e nas permissões do sistema.
Regras de Negócio
Esta página detalha a lógica financeira do sistema, especificando as regras que o back-end deve seguir para automatizar a cobrança, o bloqueio por inadimplência e a reativação de contas.
1. Ciclo de Vida da Mensalidade
A gestão financeira de cada aluno obedece ao fluxo padrão abaixo:
- Geração: A cada 30 dias, o sistema gera uma nova fatura vinculada ao plano do aluno com o status
PENDENTE. - Vencimento: Toda fatura possui uma
due_date(data de vencimento). Caso a data atual ultrapasse a data de vencimento e o status continuePENDENTE, a fatura é considerada em atraso. - Liquidação: Quando o pagamento é confirmado, o status muda para
PAGAe o campopaid_atarmazena o momento exato da baixa.
2. Lógica de Bloqueio Automático (RN001)
A suspensão temporária do direito de uso da arena (acesso às quadras e reservas) ocorre de forma automatizada assim que o aluno atingir 30 dias consecutivos de atraso (1 mês) em pelo menos uma fatura pendente.
Critério Técnico para Bloqueio
Para que o gatilho de bloqueio seja disparado, a rotina diária do sistema (Cron Job) deve identificar que o aluno cumpre o seguinte requisito no banco de dados:
- Possuir pelo menos 1 fatura com
status = 'PENDENTE'. - A referida fatura deve estar com a
due_datehá 30 dias ou mais em relação à data atual (current_date >= due_date + 30 dias).
Exemplo Prático
- Fatura: Venceu em 10/05 (
due_date = 10/05) com statusPENDENTE. - Cenário: Em 09/06 (29 dias de atraso), o status permanece ativo. Em 10/06 (30 dias de atraso), o sistema dispara o gatilho e altera o status do usuário automaticamente para
BLOQUEADO.
3. Régua de Cobrança e Notificações Preventivas (RN002)
Durante o período de tolerância de 30 dias, o sistema dispara notificações automáticas a cada 7 dias a partir do vencimento para incentivar a regularização antes do bloqueio definitivo:
- No dia do vencimento (Dia 0): Envio de lembrete de cobrança preventiva no dia do vencimento.
- Após 7 dias de atraso (Aviso 1): Envio do primeiro aviso formal de pendência financeira.
- Após 14 dias de atraso (Aviso 2): Envio do segundo aviso, alertando sobre o meio do prazo de tolerância.
- Após 21 dias de atraso (Aviso 3): Envio do último alerta preventivo, informando que o bloqueio automático ocorrerá em 9 dias caso o débito não seja regularizado.
- Após 30 dias de atraso (Notificação de Bloqueio): Envio de notificação informando que o acesso à arena foi suspenso/bloqueado devido ao atraso superior a 1 mês.
4. Lógica de Reativação Automática / Desbloqueio Dinâmico (RN003)
A reativação da conta e a liberação imediata do acesso do aluno ocorrem de forma automatizada assim que o aluno quitar a(s) fatura(s) que possui(em) mais de 30 dias de atraso.
O aluno não precisa necessariamente quitar todo o histórico de dívidas se houver outras faturas mais recentes dentro do prazo de tolerância (com menos de 30 dias de atraso). Basta eliminar a pendência que gerou a restrição para sair da zona de bloqueio.
Exemplo Prático
- O aluno possui 1 fatura atrasada há 35 dias e 1 fatura atrasada há 5 dias (Status:
BLOQUEADO). - O aluno realiza o pagamento apenas da fatura de 35 dias.
- A fatura restante possui apenas 5 dias de atraso (dentro do prazo tolerado de 30 dias).
- O sistema identifica que não há mais nenhuma fatura com $\ge 30$ dias de atraso e altera o status do usuário de volta para
ATIVOinstantaneamente.
5. Impacto do Status BLOQUEADO no Sistema
O status do usuário afeta diretamente as permissões do back-end através dos Middlewares de Autenticação:
- Bloqueio no Login (Opcional): Ao tentar autenticar, o sistema pode retornar o token JWT normalmente, mas deve incluir a flag
status: 'BLOQUEADO'para que o front-end exiba um aviso financeiro na tela. - Bloqueio de Ações Básicas (Obrigatório): Qualquer rota de agendamento de quadras, check-in ou inscrição em campeonatos (Ex:
POST /reservas,POST /checkin) deve validar o status no banco de dados e recusar a operação caso o retorno sejaBLOQUEADO.