Este documento serve como um backlog de desenvolvimento, listando tarefas pendentes, correções, melhorias e vulnerabilidades de segurança identificadas durante a análise do código em 2025-06-30.
-
[ALTO]Chave do Banco de Dados Hardcoded- Local:
lib/mongodb.tsescripts/seed.ts. - Descrição: A string de conexão do MongoDB, que inclui as credenciais, estava diretamente no código. Isso foi corrigido movendo a
MONGODB_URIpara variáveis de ambiente (.env.local) e acessando-a viaprocess.env.MONGODB_URI. - Status: RESOLVIDO.
- Local:
-
[MÉDIO]Listagem de CPFs na Aba Errada do Painel de Admin- Local:
app/admin/page.tsx. - Descrição: A lista de CPFs autorizados (
AuthorizedCpfList) estava sendo exibida na aba "Jogadores". Corrigido movendo a renderização do componente<AuthorizedCpfList />para dentro doTabsContentcomvalue="cpfs". - Status: RESOLVIDO.
- Local:
-
[BAIXO]Links de Redes Sociais Quebrados- Local:
app/login/page.tsx. - Descrição: Os ícones de Facebook, Twitter e Instagram na página de login eram links que apontavam para
"#". Corrigido removendo os links quebrados. - Status: RESOLVIDO.
- Local:
-
[MÉDIO]Redirecionamento Incorreto Após Login- Local:
app/login/actions.ts - Descrição: Após um login bem-sucedido, o sistema não estava redirecionando o usuário corretamente. Corrigido utilizando
permanentRedirectdo Next.js. - Status: RESOLVIDO.
- Local:
-
[MÉDIO]Validação de CPF- Local:
lib/utils.ts,app/cadastro/actions.ts,app/login/actions.ts. - Descrição: A validação de CPF foi aprimorada com uma função utilitária em
lib/utils.tsque valida o CPF matematicamente (usando os dígitos verificadores). - Status: RESOLVIDO.
- Local:
-
[MÉDIO]Política de Remoção de Autorização de CPF- Local:
app/admin/actions.ts(removeAuthorizedCpfAction). - Descrição: A lógica foi implementada para inativar o jogador (definindo
isAuthorizedcomofalseestatuscomoinativo) em vez de simplesmente remover o registro, se o jogador já estiver cadastrado. - Status: RESOLVIDO.
- Local:
-
[BAIXO]Refatorar Uso deuseToast- Local:
components/ui/use-toast.tsehooks/use-toast.ts. - Descrição: A duplicata de
useToastemhooks/use-toast.tsfoi removida, garantindo que todas as chamadas utilizem a implementação padrão. - Status: RESOLVIDO.
- Local:
-
[BAIXO]Alterar Nome do Banco de Dados Padrão- Local:
lib/mongodb.ts. - Descrição: A lógica de conexão em
lib/mongodb.tsfoi modificada para permitir a configuração do nome do banco de dados via variável de ambienteDB_NAME. - Status: RESOLVIDO.
- Local:
-
[BAIXO]Tratamento de Erros e Logging- Local: Projeto inteiro.
- Descrição: O projeto já utiliza
logger.errorpara tratamento de erros, garantindo um logging mais robusto. - Status: RESOLVIDO.
-
[BAIXO]Dashboard do Jogador- Local:
app/dashboard/page.tsxeapp/jogadores/[cpf]/page.tsx. - Descrição: Adicionadas estruturas básicas de placeholder para exibição de estatísticas e histórico de pagamentos nas páginas de dashboard e perfil do jogador.
- Status: RESOLVIDO (com placeholders, aguardando implementação de dados reais).
- Local:
-
[BAIXO]Tipagem e Validação de Dados em Actions- Local:
app/admin/actions.tse outras actions. - Descrição: Substituído o uso de
anypor tipos específicos ou schemas Zod para garantir a segurança e integridade dos dados emapp/admin/actions.ts. - Status: RESOLVIDO.
- Local:
-
[BAIXO]Otimização de UI/UX para Server Actions- Local: Componentes que interagem com Server Actions (formulários, botões de ação).
- Descrição: Implementados estados de carregamento (loading states) utilizando
useFormStatusemAddAuthorizedCpfFormeConfigMensalidadeForm. - Status: RESOLVIDO.
-
[MÉDIO]Aplicar Máscaras de Input para CPF e Telefone- Local: Componentes de formulário, como
components/registration-stepper.tsx. - Descrição: Os campos de CPF e telefone no formulário de cadastro aceitam texto livre, o que pode levar a erros de formatação. A experiência do usuário seria melhorada com a aplicação de máscaras de input (ex:
999.999.999-99para CPF e(99) 99999-9999para telefone). - Correção Sugerida: Utilizar uma biblioteca de máscaras como
react-input-maskou similar para formatar os campos de CPF e telefone em tempo real, garantindo que os dados sejam inseridos no formato correto. - Status: RESOLVIDO.
- Local: Componentes de formulário, como
-
[MÉDIO]Filtragem e Paginação de Logs- Local:
app/admin/page.tsx,app/admin/actions.ts,components/logs-table.tsx. - Descrição: Implementada a UI para filtros e paginação em
app/admin/page.tsx, atualizadaapp/admin/actions.tspara processar filtros e paginação, e adaptadacomponents/logs-table.tsxpara utilizar esses recursos. - Status: RESOLVIDO.
- Local:
Estas são as prioridades máximas e devem ser corrigidas imediatamente.
-
[CRÍTICO]Permissão de Autoatribuição de Perfil de Administrador no Cadastro- Descrição: Necessário criar um arquivo único de roles para substituir implementações hardcoded de
player.rolee corrigir a falha crítica de autoatribuição de perfil de administrador. As roles sãoadmin,jogador,arbitro,comissao. - Status: PENDENTE.
- Descrição: Necessário criar um arquivo único de roles para substituir implementações hardcoded de
-
[CRÍTICO]Build Ignorando Erros de TypeScript e ESLint- Local:
next.config.mjs. - Descrição: As configurações
eslint: { ignoreDuringBuilds: true }etypescript: { ignoreBuildErrors: true }estão ativadas. Isso permite que o projeto seja compilado e implantado mesmo que contenha erros de tipo ou não siga as regras de linting, o que pode levar a bugs e vulnerabilidades em produção. - Componentes a serem alterados:
next.config.mjs, e todos os arquivos.tse.tsxque atualmente possuem erros de TypeScript ou ESLint que precisam ser corrigidos. - Correção Sugerida: Remover essas duas configurações e corrigir todos os erros de TypeScript e ESLint para garantir a qualidade e a segurança do código.
- Status: PENDENTE.
- Local:
-
[ALTO]Reconciliação de Pagamentos PIX- Descrição: O sistema gera o PIX, mas não há um mecanismo para verificar se o pagamento foi efetuado. É necessário criar um webhook ou um processo para consultar o status da transação e atualizar o modelo
SubscriptionePlayerquando um pagamento for confirmado. - Componentes a serem alterados:
models/subscription-model.ts,models/player-model.ts,app/api/pix-webhook/route.ts(novo arquivo para webhook),app/jogadores/actions.ts(para atualizar status do jogador),components/pix-payment-card.tsx(para exibir status de pagamento), e possivelmente novos componentes emcomponents/para o painel administrativo. - Status: PENDENTE.
- Descrição: O sistema gera o PIX, mas não há um mecanismo para verificar se o pagamento foi efetuado. É necessário criar um webhook ou um processo para consultar o status da transação e atualizar o modelo
-
[ALTO]Gerenciamento de Jogadores no Painel de Admin- Local:
app/admin/page.tsxeapp/admin/actions.ts. - Descrição: A aba "Jogadores" e suas actions (
editPlayerInfoAction,togglePlayerStatusAction, etc.) são placeholders. É preciso implementar a UI e a lógica para:- Listar todos os jogadores com busca, filtro e paginação.
- Visualizar e editar dados de um jogador (nome, apelido, nascimento, email, telefone, posição, número da camisa).
- Ativar/Inativar um jogador.
- Adicionar/editar estatísticas de jogadores (gols, assistências, cartões).
- Alterar o perfil (role) de um jogador.
- Componentes a serem alterados:
app/admin/page.tsx,app/admin/actions.ts,models/player-model.ts, e novos componentes emcomponents/para formulários de edição e tabelas de jogadores. - Status: PENDENTE.
- Local:
-
[MÉDIO]Gerenciamento de Despesas no Painel de Admin- Local:
app/admin/page.tsxeapp/admin/actions.ts. - Descrição: A aba "Despesas" é um placeholder. É preciso implementar o formulário, a tabela e a lógica para registrar e visualizar as despesas da comissão.
- Criar um novo modelo
ExpenseModel(descrição, valor, data, categoria, registrado por). - Formulário para adicionar novas despesas.
- Tabela para listar despesas com busca, filtro e paginação.
- Funcionalidade para editar e deletar despesas.
- Relatórios básicos de despesas por categoria ou período.
- Criar um novo modelo
- Componentes a serem alterados:
app/admin/page.tsx,app/admin/actions.ts, e novos componentes emcomponents/para o formulário e tabela de despesas. - Status: PENDENTE.
- Local:
-
[MÉDIO]Página de Transparência- Local:
app/transparencia/page.tsx. - Descrição: A página existe, mas não exibe dados. É preciso implementar a lógica para buscar e exibir relatórios financeiros, como total de mensalidades arrecadadas vs. despesas.
- Componentes a serem alterados:
app/transparencia/page.tsx, e possivelmente novos componentes emcomponents/para exibição de relatórios e gráficos. - Status: PENDENTE.
- Local:
[ALTO]Centralização e Padronização de Interfaces (Types)- Local: Projeto inteiro.
- Descrição: Atualmente, as interfaces e tipos TypeScript estão espalhados por diversos arquivos (models, componentes, actions, etc.). Isso pode levar a duplicação, inconsistências e dificuldade de manutenção.
- Componentes a serem alterados: Todos os arquivos
.tse.tsxque definam interfaces ou tipos. Será criada uma nova pastatypes/na raiz do projeto para centralizar todas as definições. - Correção Sugerida: Criar uma pasta
types/na raiz do projeto. Mover todas as interfaces e tipos para arquivos.tsdentro desta pasta, organizando-os logicamente (ex:types/player.ts,types/auth.ts). Revisar todos os arquivos que utilizam essas interfaces para importar as definições centralizadas. Identificar e corrigir interfaces duplicadas ou conflitantes. - Lista de Componentes/Arquivos com Interfaces/Tipos a serem revisados:
models/*.ts(todos os modelos definem interfaces para os documentos MongoDB:IConfig,ILog,IPlayer,ISubscription)lib/auth.ts(defineSessionDatainterface)app/**/*.ts(actions, pages, etc., podem conter tipos inferidos ou inline que precisarão ser extraídos)components/**/*.tsx(componentes podem conter tipos inferidos ou inline para props que precisarão ser extraídos)lib/utils.ts(contémClassValuedoclsx, mas não define interfaces próprias; pode conter tipos utilitários a serem extraídos)hooks/*.ts(hooks podem conter tipos inferidos ou inline que precisarão ser extraídos)
- Status: PENDENTE.