Mapa de Features
Introdução ao documento
Este índice consolida as features centrais documentadas a partir das rotas do App Router, componentes de domínio e handlers BFF observados no repositório. O objetivo é apontar a cobertura atual e a fonte primária de cada fluxo funcional. Evidências: src/app/page.tsx:8-27, src/app/(protected-routes)/layout.tsx:21-74, src/app/(protected-routes)/home/page.tsx:18-67, src/app/(protected-routes)/quiz/page.tsx:21-231.
Versionamento
- Índice atualizado em
2026-03-20. - Revisar quando surgirem novas rotas funcionais em
src/app/(protected-routes)ousrc/app/(public-routes). Evidências:src/app/(protected-routes)/home/page.tsx:18-67,src/app/(public-routes)/[slug]/page.tsx:7-52.
Referencial teórico
O inventário abaixo foi derivado de fluxo de página, contexto de sessão, BFF local e componentes de negócio reutilizados. Evidências: src/app/page.tsx:1-27, src/app/(protected-routes)/layout.tsx:21-74, src/app/services/bff/ClassService.ts:24-129, src/app/services/bff/ScheduleService.ts:14-80, src/app/services/bff/SubmissionService.ts:17-197.
Cobertura priorizada
| Feature | Documento | Escopo principal | Evidências principais |
|---|---|---|---|
| Autenticação e acesso | autenticacao-e-acesso.md | login por CPF, sessão NextAuth e redirecionamento inicial | src/app/page.tsx:8-27, src/components/Login/Login.component.tsx:100-122, src/utils/authOptions.ts:20-92 |
| Conteúdo público por slug | conteudo-publico-por-slug.md | landing/login contextual por curso e host | src/app/(public-routes)/[slug]/page.tsx:7-52 |
| Home | home.md | hub inicial para participante e facilitador | src/app/(protected-routes)/home/page.tsx:18-67, src/components/Home/HomeAluno.component.tsx:127-224, src/components/Home/HomeFacilitador.component.tsx:83-163 |
| Agenda | agenda.md | calendário de agenda e bloqueios/mentorias | src/app/(protected-routes)/agenda/page.tsx:131-155, src/app/providers/ScheduleProvider.tsx:67-209, src/components/Schedule/Schedule.component.tsx:84-167 |
| Agendamento | agendamento.md | escolha de data/horário/perguntas e criação de mentoria | src/app/(protected-routes)/agendar/[id]/page.tsx:18-79, src/components/Consultorias/Consultorias.component.tsx:123-259, src/components/AppointmentModal/AppointmentModal.component.tsx:78-137 |
| Atendimento | atendimento.md | chat Blip e solicitação/cancelamento de matrícula | src/app/(protected-routes)/atendimento/page.tsx:12-88, src/components/AttendanceButton/AttendanceButton.component.tsx:56-109, src/app/api/enroll/cancel/[enroll_id]/route.ts:6-65 |
| Sala de reunião | sala-de-reuniao.md | reunião coletiva, grupo e presença automática | src/app/(protected-routes)/sala-de-reuniao/[slug]/page.tsx:13-45, src/app/(protected-routes)/grupo/[slug]/page.tsx:15-44, src/components/MeetingRoom/MeetingRoom.component.tsx:131-289 |
| Consultoria | consultoria.md | entrada e execução de sala 1:1 | src/app/(protected-routes)/consultoria/page.tsx:8-18, src/app/(protected-routes)/consultoria/[slug]/page.tsx:15-44, src/components/MeetRoom/MeetRoom.component.tsx:96-139 |
| Atividades estratégicas | atividades-estrategicas.md | envio de atividade, modo recuperação e templates | src/app/(protected-routes)/atividades-estrategicas/page.tsx:15-37, src/components/StrategicActivitiesSlider/StrategicActivitiesSlider.component.tsx:81-223, src/components/EnvioDeAtividades/components/Upload.component.tsx:136-232 |
| Gestão de atividades | gestao-de-atividades.md | visão do facilitador, avaliação, templates e download | src/app/(protected-routes)/gestao-de-atividades/page.tsx:11-45, src/app/(protected-routes)/gestao-de-atividades/[id]/page.tsx:61-145, src/components/ActivityManagement/ActivityManagement.component.tsx:100-359 |
| Participação | participacao.md | presença, status de matrícula e navegação como participante | src/app/(protected-routes)/participacao/[id]/page.tsx:16-57, src/components/Participacao/Participacao.component.tsx:43-109, src/components/ParticipacaoTable/ParticipacaoTable.component.tsx:148-205 |
| Quiz | quiz.md | carregamento por slug, resposta, feedback e conclusão | src/app/(protected-routes)/quiz/page.tsx:21-231, src/components/Quiz/QuizBackend.component.tsx:33-335, src/services/quizApi.ts:130-242 |
| Troca de turma | troca-de-turma.md | seleção de ciclo e turma ativa | src/app/(protected-routes)/trocar-turma/page.tsx:9-55, src/components/ChangeCycle/ChangeCycle.component.tsx:109-202 |
Observações de escopo
- A rota
/grupo/[slug]foi tratada como fluxo especializado da feature de sala de reunião, porque reaproveitaMeetingRoome o mesmo contrato de credenciais Jitsi. Evidências:src/app/(protected-routes)/grupo/[slug]/page.tsx:15-44,src/components/MeetingRoom/MeetingRoom.component.tsx:90-289. - O fluxo de recuperação de encontro foi distribuído entre
home,sala-de-reuniaoeatividades-estrategicas, porque o código o orquestra emMeetingRecoverCard,StatusServicee query params da página de atividades. Evidências:src/components/Home/HomeAluno.component.tsx:188-223,src/components/MeetingRecoverCard/MeetingRecoverCard.tsx:56-207,src/app/(protected-routes)/atividades-estrategicas/page.tsx:24-36.
Pendências
- Confirmar se
grupo/[slug]deve ganhar documento próprio ou continuar como subfluxo de sala de reunião. - Confirmar se a página pública por
slugé considerada feature central de produto ou apenas variante de entrada. - O índice cobre as features priorizadas observadas no código, mas não atribui ownership nem criticidade operacional, porque essa informação não aparece no repositório.