Arena Acadêmica, Agenda, Widgets & Assistente IA
🏆 Arena Acadêmica, Agenda, Widgets & Assistente IA
Section titled “🏆 Arena Acadêmica, Agenda, Widgets & Assistente IA”Este documento registra a especificação, arquitetura e integração dos módulos desenvolvidos para engajamento, organização da rotina e experiência do discente.
⏱️ 1. Speed Dial + Pomodoro Timer (FAB Global)
Section titled “⏱️ 1. Speed Dial + Pomodoro Timer (FAB Global)”O Speed Dial é um menu flutuante (Floating Action Button - FAB) localizado no canto inferior direito da interface em todas as telas autenticadas da aplicação (AppLayout).
Componentes e Capacidades
Section titled “Componentes e Capacidades”- Ações Rápidas:
- Registrar Memória (
/memories) - Nova Tarefa (
/hub-projetos) - Consultar Copiloto (
/assistant) - Abrir Agenda (
/timeline/calendario) - Timer Pomodoro (modal integrado)
- Registrar Memória (
- Pomodoro Timer:
- Ciclo clássico de 25 minutos de foco profundo com alerta visual e sonoro.
- Modos de pausa curta (5 min) e pausa longa (15 min).
- Controles de Iniciar, Pausar e Resetar com exibição circular animada.
- Respeita o estado recolhido/expandido da barra lateral de navegação.
📅 2. Agenda Acadêmica (/timeline/calendario e /agenda)
Section titled “📅 2. Agenda Acadêmica (/timeline/calendario e /agenda)”A Agenda Acadêmica oferece um ambiente centralizado para planejamento temporal de aulas, provas, reuniões e eventos.
📐 Contratos e Tipagem (packages/shared)
Section titled “📐 Contratos e Tipagem (packages/shared)”- Módulo:
src/modules/calendar/CalendarEventCategory:AULA,PROVA,REUNIAO,EVENTO,PESSOAL.calendarEventSchema: Modelagem de eventos com data (date), horário de início e término (startTime,endTime), localização e categoria.createCalendarEventSchema: Criação validada de compromissos.
🗄️ Modelo de Dados (Prisma)
Section titled “🗄️ Modelo de Dados (Prisma)”CalendarEvent: Entidade relacional indexada porstudentIdedate.
🔔 Consentimento e Lembretes Nativos (NotificationPermissionCard)
Section titled “🔔 Consentimento e Lembretes Nativos (NotificationPermissionCard)”- Card Explicativo Pré-Permissão: Em vez de disparar a janela intrusiva do navegador imediatamente na montagem da tela, o sistema exibe um card dedicado detalhando os benefícios dos lembretes (alertas automáticos de aulas, avaliações, prazos e editais, mesmo com o navegador em segundo plano).
- Ações: Botão “Permitir Notificações” (que aciona
Notification.requestPermission()) e opção “Agora não” que persiste a decisão no armazenamento local (localStorage).
🏆 3. Arena Acadêmica (/toolkit/arena-academica e /arena)
Section titled “🏆 3. Arena Acadêmica (/toolkit/arena-academica e /arena)”A Arena Acadêmica integra mecânicas de gamificação para incentivar a regularidade de estudos, participação em pesquisas e registro contínuo da trajetória.
📐 Contratos e Tipagem (packages/shared)
Section titled “📐 Contratos e Tipagem (packages/shared)”- Módulo:
src/modules/gamification/AchievementCategory:PESQUISA,EXTENSAO,DISCIPLINAS,FOCO,COMUNIDADE.achievementSchema: Conquistas desbloqueáveis com critério, pontuação e progresso incremental.weeklyChallengeSchema: Desafios sazonais de 7 dias com contagem regressiva e recompensas em pontos.
🗄️ Modelo de Dados (Prisma)
Section titled “🗄️ Modelo de Dados (Prisma)”Achievement&StudentAchievement: Catálogo de insígnias e relação de desbloqueio por estudante.WeeklyChallenge&ChallengeParticipation: Desafios rotativos e controle de participação discente.
🔌 Endpoints da API
Section titled “🔌 Endpoints da API”GET /api/gamification/achievements: Lista de conquistas do discente com cálculo de nível e pontos.GET /api/gamification/challenges: Desafio semanal ativo e metadados de adesão.POST /api/gamification/challenges/:id/join: Inscrição ativa no desafio da semana.
🏛️ Cabeçalho Fixo do Dashboard
Section titled “🏛️ Cabeçalho Fixo do Dashboard”- Saudação com Data Integrada: Posicionada diretamente no topo do cabeçalho da página (sem formato de card, sem caixas e sem poluição visual), contendo a data corrente formatada acima e a saudação temporal com o primeiro nome do estudante (
{getGreeting()}, {firstName}! 👋) alinhada com as ferramentas de personalização de layout (DashboardToolbar). Não exibe informações redundantes como curso, semestre ou universidade.
🧩 Grade Customizável de Widgets
Section titled “🧩 Grade Customizável de Widgets”Os cartões modulares da grade refletem as diferentes frentes da vida universitária:
SmartCapture: Captura rápida de pensamentos e aprendizados com salvamento imediato nas memórias e direcionamento ao Copiloto (desbloqueado via Memória Acadêmica).SemesterSummary: Semanas letivas, progresso temporal, disciplinas matriculadas e métricas semestrais (desbloqueado via Perfil Acadêmico).MetricsGrid: Métricas de editais, candidaturas, vivências e carga horária semanal (desbloqueado via Vivências & Projetos).Opportunities: Editais e bolsas com % de match para o perfil (desbloqueado via Scholarship Finder / Oportunidades).UpcomingCommitments: Card conectado ao calendário com próximas provas e entregas (desbloqueado via Agenda).CurrentGoals: Metas semestrais do perfil acadêmico com barra de progresso (desbloqueado via Roadmap & Metas).DevelopingCompetencies: Radar de competências técnicas, científicas e comportamentais (desbloqueado via Mapa de Competências).WellbeingWidget: Termômetro de rotina e bem-estar (desbloqueado via Arena Acadêmica).AgendaCalendarWidget: Mini-calendário mensal integrado (desbloqueado via Agenda).RecentMemories: Últimas reflexões e registros do diário (desbloqueado via Memória Acadêmica).Experiences: Vivências práticas, iniciação científica e extensão ativas (desbloqueado via Vivências & Projetos).RecentActivities: Feed de conquistas e marcos recentes (desbloqueado via Arena Acadêmica).
🔒 Bloqueio Inicial Total e Desbloqueio Progressivo de Widgets
Section titled “🔒 Bloqueio Inicial Total e Desbloqueio Progressivo de Widgets”- Mapeamento Central (
WIDGET_TOOL_ROUTES): Define a ferramenta de origem (hrefetoolName) e orientação de ação para cada um dos 12 widgets. - Estado Inicial (Novo Cadastro): Ao se cadastrar, todos os widgets da grade iniciam bloqueados, exibindo o ícone de cadeado e orientação clara da ação necessária com link direto para a respectiva tela.
- Mecanismo Duplo de Desbloqueio:
- Por Ação/Dados Reais: Se o estudante preencher o perfil acadêmico, registrar memórias, cadastrar vivências ou candidaturas, os respectivos widgets são desbloqueados automaticamente pelo sistema.
- Por Exploração/Navegação: A navegação até a ferramenta de origem aciona
unlockWidget()persistido notoolkitStore(Zustand com LocalStorage), notificando o discente via toast comemorativo.
🤖 5. Copiloto Acadêmico — UX e Contexto Melhorados (/assistant)
Section titled “🤖 5. Copiloto Acadêmico — UX e Contexto Melhorados (/assistant)”O assistente conversacional foi ampliado com recursos de context seeding, controle de tom, modo rail e navegação ágil no histórico:
Novas Capacidades
Section titled “Novas Capacidades”- Modo Rail / Ícones Colapsado:
- No estado retraído padrão (60px), os itens da barra lateral (botão de nova conversa, lista de chats e indicador de tokens) convertem-se automaticamente em ícones limpos e centralizados, eliminando cortes ou textos comprimidos.
- Ao passar o mouse (hover), a sidebar abre em sobreposição rápida; ao acionar a fixação (pin), a sidebar expande permanentemente para 290px e empurra a área principal do chat (
chatAreaPinned), garantindo que as mensagens e os controles superiores nunca fiquem sobrepostos. - Quando totalmente fechada, um botão de reabertura ágil fica acessível nos controles superiores da conversa.
- Context Seeding via URL (
?context=e?prompt=): Ao navegar a partir de cards do dashboard ou da Captura Inteligente, o assistente consome o parâmetro automaticamente e envia a consulta sem fricção. - 6 Prompts Sugeridos na Tela Inicial:
- “O que eu realizei neste semestre?” (Trajetória)
- “Quais competências estou desenvolvendo?” (Competências)
- “Em quais áreas estou mais ativo?” (Atividade)
- “O que eu deveria priorizar agora?” (Foco)
- “Estou pronto para iniciação científica?” (Pesquisa)
- “Resuma minha evolução acadêmica até aqui” (Trajetória)
- Seletor de Modo:
- 🪄 Explorar trajetória: Análise retrospectiva de vivências, certificações e histórico.
- 🎓 Planejar próximo passo: Foco propositivo em editais, disciplinas futuras e TCC.
- Seletor de Nível / Persona:
- Orientador: Postura estratégica, contextual e de longo prazo.
- Analista: Foco rigoroso em métricas, evidências e dados quantitativos.
- Mentor: Respostas práticas, diretas e acionáveis.
- Sidebar Deslizante com Busca Textual: Histórico de conversas com filtro instantâneo por título e alternância ágil de layout.
- Chips Rotativos de Perguntas: Sugestões dinâmicas de desdobramento posicionadas acima do campo de texto quando o chat está ativo.
- Renderização Rica de Markdown (GFM): Mensagens do Copiloto são processadas com parser GFM e estilização tipográfica modular (
.geminiText), convertendo negrito (**), itálico, listas numeradas e de marcadores, links com abertura segura em nova aba (target="_blank" rel="noopener noreferrer"), blocos de código com destaque e tabelas estruturadas, eliminando a exibição de caracteres puros de formatação.
🌟 6. Sistema Unificado de Destaques: Spotlight Banners
Section titled “🌟 6. Sistema Unificado de Destaques: Spotlight Banners”A área superior do Dashboard unificou os antigos cards empilhados (OnboardingResumeBanner e AiRecommendationCard) em um sistema integrado e padronizado: o DashboardSpotlight.
Componentes e Arquitetura
Section titled “Componentes e Arquitetura”SpotlightBanner(apps/frontend/src/components/common/spotlight-banner/):- Componente base com caixa de ícone estilizada (40x40px), título em destaque acompanhado de badge semântica (
amber,primary,purple,emerald), descrição concisa e cluster de ações (botão primário e secundário com integração ao Copiloto IA). - Suporte a paginação compacta (
X de Y) e navegação ágil com setas quando múltiplos destaques estão ativos.
- Componente base com caixa de ícone estilizada (40x40px), título em destaque acompanhado de badge semântica (
DashboardSpotlight(apps/frontend/src/components/dashboard/dashboard-spotlight/):- Orquestra os itens ativos da sessão do discente:
- Jornada Inicial (Onboarding): Retomada com recompensa de +15 Tokens de IA (alta prioridade enquanto pendente).
- Recomendações da IA: Oportunidades estratégicas (PIBITI/CNPq), auditoria de Lattes, planejamento de disciplinas no Roadmap Planner e divulgação de conquistas no LinkedIn Builder.
- Novidades & Avisos da Plataforma: Notícias sobre novas ferramentas no Toolkit e radar de editais.
- Orquestra os itens ativos da sessão do discente:
🧪 Testes Automatizados (Vitest)
Section titled “🧪 Testes Automatizados (Vitest)”Todos os módulos contam com cobertura de testes unitários e de componentes:
apps/frontend/tests/components/SpeedDial.spec.tsx(4 testes)apps/frontend/tests/components/DashboardWidgets.spec.tsx(6 testes)apps/frontend/tests/pages/Arena.spec.tsx(3 testes)apps/frontend/tests/pages/Assistant.spec.tsx(7 testes)apps/backend/tests/unit/calendar/calendar.service.spec.tsapps/backend/tests/unit/gamification/gamification.service.spec.ts