📄 Documento de Execução — Card 7i: [M1.5] Desafios Pedagógicos
🎯 1. O que foi implementado
Painel do Professor /professor/desafios
- Lista de desafios (ativos e encerrados) com contador de participações
- Criar novo desafio: título, tema, descrição, instruções, prazo, curso (opcional)
- Ativar/desativar desafio (botão toggle)
- RBAC: professor só vê/edita desafios da própria filial
Detalhe do Desafio /aluno/galeria/desafios/[id]
- Descrição completa + instruções + prazo
- Botão "Participar do desafio" → formulário de upload (título + imagem + descrição)
- Cria GalleryPost vinculado ao challengeId, status=PENDING
- Grid de participações (posts PUBLISHED vinculados ao desafio)
- Cada participação: imagem, título, autor, curtidas, selo "Corrigido"
Aba Desafios na galeria
- Cards agora são clicáveis → levam para a página de detalhe
- Mostra "Ver participações →"
Procedures criadas
professor.challenges.list — lista desafios da filial (includeInactive opcional)
professor.challenges.create — cria novo desafio (RBAC: branchId do user)
professor.challenges.update — edita desafio (RBAC: mesma filial)
professor.challenges.toggleActive — ativa/desativa (RBAC: mesma filial)
student.gallery.challengeDetail — detalhe + participações PUBLISHED
student.gallery.participateChallenge — cria post vinculado ao desafio (RBAC: filial + ativo)
Novo router professor.ts
- Criado do zero (primeiro router do PROFESSOR)
- Adicionado ao
router.ts como professor: professorRouter
✅ Critérios de aceite
| # |
Critério |
Status |
| 1 |
Painel professor para criar/editar desafios |
✅ |
| 2 |
Lista de desafios ativos para alunos |
✅ |
| 3 |
Página de detalhe + participações |
✅ |
| 4 |
Botão Participar (enviar trabalho vinculado) |
✅ |
| 5 |
Ativar/desativar desafio |
✅ |
| 6 |
RBAC (professor só na própria filial) |
✅ |
| 7 |
Build + deploy DEV |
✅ |
📁 2. Arquivos criados/modificados
Criados
| Arquivo |
Função |
src/server/trpc/routers/professor.ts |
Router professor (challenges CRUD) |
src/app/(dashboard)/professor/desafios/page.tsx |
Painel professor (lista + criar + toggle) |
src/app/(dashboard)/aluno/galeria/desafios/[id]/page.tsx |
Detalhe + participar + participações |
Modificados
| Arquivo |
Mudança |
src/server/trpc/router.ts |
+professorRouter |
src/server/trpc/routers/student.ts |
gallery +challengeDetail +participateChallenge |
src/app/(dashboard)/aluno/galeria/page.tsx |
aba Desafios cards clicáveis |
🎯 3. Próximo card
Card 7j — Salvar Referência (bookmark) — botão Salvar nos posts + página Minhas Referências.