You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Sistema de Gamificação (XP e Streaks): Implementado um motor de recompensas onde o utilizador ganha XP ao concluir leituras de código, ler deep dives e passar em simulados. Inclui multiplicadores de XP para streaks (dias consecutivos) e uma chama animada interativa no cabeçalho (Session Nav) com o progresso em tempo real e tooltip detalhado.
Desafio Diário (Daily Challenge): Adicionado um banner de destaque no topo do catálogo de problemas (/problems). O sistema escolhe deterministicamente um desafio igual para todos os utilizadores diariamente, oferecendo bónus (+50 XP) para quem o completar em 24 horas, protegendo a sua streak.
Fila de Repetição Espaçada (Review Queue): Novo painel introduzido no Perfil do Utilizador (/profile) que utiliza algoritmos de repetição baseados no tempo (1d, 3d, 7d, 14d, 30d) para sugerir a revisão de problemas já completados. Consolida o conhecimento algorítmico e incentiva a prática diária.
Leaderboard Global e Social: Criação de uma página dedicada de Ranking (/leaderboard) onde os programadores podem comparar o seu XP e nível (Rookie a Master). Permite alternar entre o ranking "Global" (toda a comunidade) e "Seguidos" (apenas amigos e conexões do utilizador), utilizando ícones premium para o Top 3.
🛠️ Melhorias Técnicas
Sincronização Contínua de Progresso (Background Sync): O componente ProgressSyncOnLogin foi reescrito. Agora, além de sincronizar no login, ele escuta reativamente o evento algoria-progress e utiliza debouncing (espera de 5 segundos) para enviar discretamente atualizações de XP e Streaks para a base de dados Postgres, garantindo que o ranking está sempre atualizado sem request storms.
Performance com Extração JSONB: A rota da API do Leaderboard foi desenhada de forma altamente otimizada, utilizando queries SQL nativas do Postgres e o operador ->> do JSONB para extrair, converter para inteiro e ordenar o XP diretamente na query, evitando gargalos de processamento de memória no Node.js.