Initial commit
This commit is contained in:
@@ -0,0 +1,162 @@
|
||||
# Auditoria de Seguranca - course-plat
|
||||
**Data:** 2026-05-18
|
||||
**Escopo:** Analise completa de autenticacao, autorizacao e vulnerabilidades de seguranca
|
||||
|
||||
---
|
||||
|
||||
## CRITICO (Exploracao Imediata Possivel)
|
||||
|
||||
### 1. Middleware de Protecao de Rotas INATIVO
|
||||
**Arquivo:** `src/proxy.js`
|
||||
|
||||
O middleware existe mas **nao ha `src/middleware.js`** no projeto. O Next.js so reconhece middleware nos caminhos padrao (`src/middleware.js` ou `middleware.js` na raiz). Toda a protecao de rotas por pagina esta desativada. Qualquer usuario pode acessar `/admin/dashboard` diretamente sem login.
|
||||
|
||||
### 2. `updateUserData` - Escalacao de Privilegio TOTAL (sem auth)
|
||||
**Arquivo:** `src/app/lib/users/updateUserAction.js:11`
|
||||
|
||||
- `"use server"` com ZERO verificacao de autenticacao
|
||||
- Qualquer cliente (nao autenticado) pode modificar qualquer usuario, incluindo alterar o campo `roles` para `["admin"]`
|
||||
- **Impacto:** Um atacante pode se conceder acesso admin completo
|
||||
|
||||
### 3. `examActions.js` - 18 funcoes SEM autenticacao
|
||||
**Arquivo:** `src/app/lib/actions/examActions.js` (1102 linhas)
|
||||
|
||||
| Funcao | Linha | Impacto |
|
||||
|--------|-------|---------|
|
||||
| `getExamTemplates` | 82 | Vazar todas as questoes + respostas corretas de provas |
|
||||
| `getExamTemplateById` | 104 | Ver gabarito completo de qualquer prova |
|
||||
| `updateExamTemplate` | 155 | Alterar respostas corretas de qualquer prova |
|
||||
| `deleteExamTemplate` | 184 | Deletar qualquer modelo de prova |
|
||||
| `duplicateExamTemplate` | 218 | Duplicar e ver conteudo de qualquer prova |
|
||||
| `getExamAssignments` | 256 | Ver todas as atribuicoes de prova |
|
||||
| `getExamAssignmentById` | ~298 | Ver detalhes completos de atribuicao |
|
||||
| `createExamAssignment` | ~330 | Criar atribuicoes para qualquer turma |
|
||||
| `updateExamAssignment` | ~350 | Modificar atribuicoes de prova |
|
||||
| `deleteExamAssignment` | ~370 | Deletar atribuicoes |
|
||||
| `archiveExamAssignment` | ~390 | Arquivar/desarquivar |
|
||||
| `getExamAttempts` | ~410 | Ver todas as respostas e notas de todos os alunos |
|
||||
| `getExamAttemptById` | ~430 | Ver detalhes de qualquer tentativa |
|
||||
| `createExamAttempt` | ~450 | Criar tentativas impersonando qualquer aluno |
|
||||
| `submitExamAttempt` | ~470 | Submeter respostas por qualquer tentativa |
|
||||
| `getExamStatistics` | ~500 | Ver estatisticas gerais |
|
||||
| `getStudentExamStatistics` | ~520 | Ver historico de qualquer aluno |
|
||||
| `getClasses` | ~540 | Listar todas as turmas |
|
||||
|
||||
### 4. Server Actions administrativas sem autenticacao
|
||||
|
||||
15 funcoes com `"use server"` e ZERO verificacao de login:
|
||||
|
||||
| Funcao | Arquivo | Impacto |
|
||||
|--------|---------|---------|
|
||||
| `updateUserData` | `users/updateUserAction.js` | Escalacao de privilegio para admin |
|
||||
| `saveUserData` | `users/createWardUserAction.js` | Criar contas de aluno sem auth |
|
||||
| `saveProductAction` | `products/actions.js` | Criar/modificar produtos e precos |
|
||||
| `deleteProductAction` | `products/actions.js` | Deletar qualquer produto |
|
||||
| `saveClassAction` | `classes/saveClassAction.js` | Criar/modificar turmas |
|
||||
| `toggleClassStatus` | `classes/toggleClassStatus.js` | Arquivar/ativar qualquer turma |
|
||||
| `deleteClass` | `classes/deleteClass.js` | Deletar qualquer turma |
|
||||
| `deleteClassTypeAction` | `classes/deleteClassType.js` | Deletar tipo de turma |
|
||||
| `saveClassLink` | `classes/saveClassLinkAction.js` | Alterar link de aula |
|
||||
| `saveClassTypeAction` | `classes/saveClassTypeAction.js` | Criar/modificar tipos de turma |
|
||||
| `saveCategoryAction` | `categories/saveCategoryAction.js` | Criar/modificar categorias |
|
||||
| `deleteCategory` | `categories/deleteCategory.js` | Deletar categorias |
|
||||
| `deleteFile` | `generalActions/deleteFile.js` | Deletar qualquer arquivo do DB e S3 |
|
||||
| `updateExamTemplate` | `examActions.js` | Alterar gabaritos de provas |
|
||||
| `submitExamAttempt` | `examActions.js` | Submeter respostas por qualquer tentativa |
|
||||
|
||||
---
|
||||
|
||||
## ALTO (Risco Significativo)
|
||||
|
||||
### 5. IDOR em `/api/orders/[id]`
|
||||
**Arquivo:** `src/app/api/orders/[id]/route.js`
|
||||
|
||||
Qualquer usuario autenticado pode ver qualquer pedido por ID, sem verificacao de propriedade.
|
||||
|
||||
### 6. Vazamento de Informacoes em `/api/health`
|
||||
**Arquivo:** `src/app/api/health/route.js` - Totalmente publico
|
||||
|
||||
Expoe: status do MongoDB, contagem de usuarios, tipo de storage, endpoint S3, bucket name, `NODE_ENV`, `NEXTAUTH_URL`.
|
||||
|
||||
### 7. Endpoint de Debug em Producao
|
||||
**Arquivo:** `src/app/api/debug-token/route.js`
|
||||
|
||||
Qualquer usuario autenticado pode ver sessao completa, roles e status admin.
|
||||
|
||||
### 8. Aulas sem verificacao de membros
|
||||
**Arquivo:** `src/app/api/classes/[id]/lessons/route.js` (GET)
|
||||
|
||||
Qualquer usuario autenticado pode ver aulas de qualquer turma, sem verificar se e membro.
|
||||
|
||||
### 9. Headers de Debug no Middleware
|
||||
**Arquivo:** `src/proxy.js:92-96`
|
||||
|
||||
Headers `x-debug-roles`, `x-debug-is-logged-in`, `x-debug-default-route` vazam informacoes de autenticacao em toda resposta.
|
||||
|
||||
---
|
||||
|
||||
## MEDIO
|
||||
|
||||
### 10. Ausencia de Headers de Seguranca
|
||||
**Arquivo:** `next.config.mjs`
|
||||
|
||||
Nenhum header de seguranca configurado:
|
||||
- Sem `Content-Security-Policy`
|
||||
- Sem `X-Frame-Options`
|
||||
- Sem `X-Content-Type-Options`
|
||||
- Sem `Strict-Transport-Security`
|
||||
- Sem `Referrer-Policy`
|
||||
|
||||
### 11. Vazamento de Erros Internos
|
||||
Multiplas funcoes retornam erros raw ao cliente: `Erro: ${err}`, `error.message` - podem vazar stack traces, detalhes de conexao DB, etc.
|
||||
|
||||
### 12. `console.log` com Dados Sensiveis
|
||||
`examActions.js` usa `console.log` para imprimir respostas de alunos e dados de questoes no log do servidor.
|
||||
|
||||
### 13. Upload de Arquivo sem Restricao de Entidade
|
||||
**Arquivo:** `src/app/lib/generalActions/saveFileAction.js`
|
||||
|
||||
Qualquer usuario autenticado pode vincular arquivos a qualquer entidade (qualquer turma, tipo de turma, etc.).
|
||||
|
||||
### 14. Limite de Upload Muito Alto
|
||||
**Arquivo:** `next.config.mjs:11`
|
||||
|
||||
`bodySizeLimit: '200mb'` permite uploads de ate 200MB, facilitando ataques de negacao de servico.
|
||||
|
||||
### 15. Recibos como Base64 no MongoDB
|
||||
`submitOrderPaymentAction` armazena recibos como data URI base64 diretamente no documento do banco, causando growth descontrolado do DB.
|
||||
|
||||
---
|
||||
|
||||
## Resumo Quantitativo
|
||||
|
||||
| Severidade | Quantidade | Descricao |
|
||||
|------------|------------|-----------|
|
||||
| CRITICO | 15 | Server actions sem autenticacao nenhuma |
|
||||
| ALTO | 12 | Autenticado mas sem verificacao de role/autorizacao |
|
||||
| MEDIO | 5 | Autenticado e com role mas outros problemas |
|
||||
| OK | 27 | Protegido corretamente com auth + autorizacao |
|
||||
| **Total de funcoes auditadas** | **68** | |
|
||||
|
||||
---
|
||||
|
||||
## Plano de Correcao (Prioridade Decrescente)
|
||||
|
||||
1. **Renomear `src/proxy.js` para `src/middleware.js`** - Ativa a protecao de rotas por pagina
|
||||
2. **Adicionar `auth()` + verificacao de role em TODAS as 15 server actions criticas** - Usar o padrao de `requireRole("admin")` ou `requireAuth()` do `authorization.js`
|
||||
3. **Refazer `examActions.js`** - Todas as funcoes precisam de auth. Leitura de templates nao deve retornar `isCorrect`. Considerar consolidar com `examFlowActions.js` (que ja tem seguranca correta)
|
||||
4. **Adicionar verificacao de propriedade em `/api/orders/[id]`**
|
||||
5. **Proteger `/api/health`** com autenticacao admin ou remover dados sensiveis
|
||||
6. **Remover `/api/debug-token`** em producao
|
||||
7. **Remover headers de debug** do middleware
|
||||
8. **Adicionar headers de seguranca** no `next.config.mjs`
|
||||
9. **Sanitizar mensagens de erro** antes de enviar ao cliente
|
||||
10. **Remover `console.log`** com dados sensiveis
|
||||
11. **Reduzir `bodySizeLimit`** para algo mais razoavel (ex: 10MB)
|
||||
12. **Adicionar verificacao de membership em GET lessons**
|
||||
|
||||
---
|
||||
|
||||
## Comparativo: examActions.js vs examFlowActions.js
|
||||
|
||||
`examFlowActions.js` demonstra **praticas de seguranca corretas** (auth + role + class membership checks em todas as 6 funcoes), enquanto `examActions.js` (21 funcoes) tem **quase nenhuma autenticacao ou autorizacao**. Sugere-se que `examFlowActions.js` foi escrito depois como substituicao mais segura, mas as funcoes inseguras em `examActions.js` nunca foram removidas ou protegidas.
|
||||
+240
@@ -0,0 +1,240 @@
|
||||
# Manual do Administrador
|
||||
|
||||
## Visão Geral
|
||||
|
||||
O painel de administrador permite gerenciar todos os aspectos da plataforma de cursos, incluindo usuários, turmas, provas, pagamentos e arquivos.
|
||||
|
||||
## Acesso
|
||||
|
||||
- **URL**: `/admin/dashboard`
|
||||
- **Role Necessária**: `admin`
|
||||
|
||||
---
|
||||
|
||||
## Funcionalidades
|
||||
|
||||
### 1. Dashboard Principal
|
||||
**Rota**: `/admin/dashboard`
|
||||
|
||||
Página inicial com cards de navegação para todas as funcionalidades administrativas.
|
||||
|
||||
---
|
||||
|
||||
### 2. Gerenciamento de Tipos de Turma
|
||||
**Rota**: `/admin/dashboard/classTypes`
|
||||
|
||||
#### Funcionalidades
|
||||
- Criar novos tipos de turma (ex: "Starters", "Movers")
|
||||
- Definir faixa etária
|
||||
- Definir preço mensal
|
||||
- Gerenciar arquivos por tipo de turma
|
||||
|
||||
#### Como Testar
|
||||
1. Acesse `/admin/dashboard/classTypes`
|
||||
2. Clique em "Novo Tipo de Turma"
|
||||
3. Preencha nome, idade mínima, idade máxima e preço
|
||||
4. Salve
|
||||
5. **Esperado**: Tipo de turma aparece na lista
|
||||
|
||||
#### Campos
|
||||
- `name`: Nome do tipo de turma
|
||||
- `minAge`: Idade mínima
|
||||
- `maxAge`: Idade máxima
|
||||
- `price`: Preço mensal
|
||||
|
||||
---
|
||||
|
||||
### 3. Gerenciamento de Turmas
|
||||
**Rota**: `/admin/dashboard/class`
|
||||
|
||||
#### Funcionalidades
|
||||
- Criar novas turmas
|
||||
- Atribuir professores
|
||||
- Definir horário e dias da semana
|
||||
- Ativar/desativar turmas
|
||||
- Gerenciar alunos matriculados
|
||||
- Upload de materiais
|
||||
|
||||
#### Como Testar
|
||||
1. Acesse `/admin/dashboard/class`
|
||||
2. Clique em "Nova Turma"
|
||||
3. Selecione o tipo de turma
|
||||
4. Adicione professores (multi-select)
|
||||
5. Defina os dias da semana
|
||||
6. Salve
|
||||
7. **Esperado**: Turma criada e visível na lista
|
||||
|
||||
#### Campos
|
||||
- `classType`: Tipo de turma (obrigatório)
|
||||
- `teachers`: Professores (pode ter vários)
|
||||
- `schedule`: Horário das aulas
|
||||
- `days`: Dias da semana
|
||||
- `active`: Status ativo/inativo
|
||||
|
||||
---
|
||||
|
||||
### 4. Gerenciamento de Usuários
|
||||
**Rota**: `/admin/dashboard/users`
|
||||
|
||||
#### Funcionalidades
|
||||
- Visualizar todos os usuários
|
||||
- Editar informações de usuários
|
||||
- Gerenciar roles (admin, teacher, student, parent)
|
||||
- Vincular responsáveis a estudantes
|
||||
- Excluir usuários
|
||||
|
||||
#### Como Testar
|
||||
1. Acesse `/admin/dashboard/users`
|
||||
2. Clique no ícone de editar em um usuário
|
||||
3. Altere as roles marcando/desmarcando checkboxes
|
||||
4. Para vincular responsável, selecione na lista
|
||||
5. Salve
|
||||
6. **Esperado**: Roles atualizadas, vínculos criados
|
||||
|
||||
#### Roles Disponíveis
|
||||
- `admin`: Acesso completo ao painel administrativo
|
||||
- `teacher`: Acesso a turmas atribuídas
|
||||
- `student`: Acesso a turmas matriculadas
|
||||
- `parent`: Acesso a dados dos filhos vinculados
|
||||
|
||||
---
|
||||
|
||||
### 5. Gerenciamento de Pagamentos
|
||||
**Rotas**:
|
||||
- `/admin/dashboard/payments` - Visão geral
|
||||
- `/admin/dashboard/payments/by-class` - Por turma
|
||||
|
||||
#### Funcionalidades
|
||||
- Criar obrigações de pagamento para alunos
|
||||
- Aprovar/rejeitar pagamentos
|
||||
- Visualizar comprovantes
|
||||
- Estatísticas de pagamentos
|
||||
|
||||
#### Como Testar - Criar Obrigação
|
||||
1. Acesse `/admin/dashboard/payments`
|
||||
2. Clique em "Nova Obrigação"
|
||||
3. Selecione o aluno
|
||||
4. Digite o valor e data de vencimento
|
||||
5. Salve
|
||||
6. **Esperado**: Obrigação aparece na lista do aluno
|
||||
|
||||
#### Como Testar - Aprovar Pagamento
|
||||
1. Na lista de pagamentos, encontre um pendente
|
||||
2. Clique para ver detalhes
|
||||
3. Visualize o comprovante
|
||||
4. Clique em "Aprovar" ou "Rejeitar"
|
||||
5. **Esperado**: Status atualizado
|
||||
|
||||
#### Status de Pagamento
|
||||
- `pending`: Aguardando aprovação
|
||||
- `verified`: Pagamento aprovado
|
||||
- `rejected`: Pagamento rejeitado
|
||||
|
||||
---
|
||||
|
||||
### 6. Provas e Tarefas
|
||||
**Rotas**:
|
||||
- `/admin/dashboard/exams` - Gerenciar provas
|
||||
- `/admin/dashboard/exam-templates` - Templates de prova
|
||||
- `/admin/dashboard/assignments` - Atribuir provas a turmas
|
||||
- `/admin/dashboard/statistics/exams` - Estatísticas
|
||||
|
||||
#### Funcionalidades
|
||||
- Criar templates de provas reutilizáveis
|
||||
- Adicionar perguntas (múltipla escolha, texto)
|
||||
- Atribuir provas a turmas
|
||||
- Definir data/hora de início e fim
|
||||
- Configurar tentativas permitidas
|
||||
- Ver resultados e estatísticas
|
||||
|
||||
#### Como Testar - Criar Template
|
||||
1. Acesse `/admin/dashboard/exam-templates`
|
||||
2. Clique em "Novo Template"
|
||||
3. Digite título e descrição
|
||||
4. Adicione perguntas:
|
||||
- Pergunta de múltipla escolha: adicione opções e marque a correta
|
||||
- Pergunta de texto: apenas o enunciado
|
||||
5. Salve
|
||||
6. **Esperado**: Template criado
|
||||
|
||||
#### Como Testar - Atribuir Prova
|
||||
1. Acesse `/admin/dashboard/assignments`
|
||||
2. Clique em "Nova Atribuição"
|
||||
3. Selecione o template
|
||||
4. Selecione a turma
|
||||
5. Defina data/hora início e fim
|
||||
6. Configure tentativas permitidas
|
||||
7. Salve
|
||||
8. **Esperado**: Prova aparece para os alunos da turma
|
||||
|
||||
---
|
||||
|
||||
### 7. Categorias de Arquivos
|
||||
**Rota**: `/admin/dashboard/categories`
|
||||
|
||||
#### Funcionalidades
|
||||
- Criar categorias para organizar arquivos
|
||||
- Ex: "Material de Aula", "Lição de Casa", "Provas Antigas"
|
||||
|
||||
#### Como Testar
|
||||
1. Acesse `/admin/dashboard/categories`
|
||||
2. Clique em "Nova Categoria"
|
||||
3. Digite o nome
|
||||
4. Salve
|
||||
5. **Esperado**: Categoria disponível ao fazer upload de arquivos
|
||||
|
||||
---
|
||||
|
||||
### 8. Gerenciamento de Arquivos
|
||||
**Rotas**:
|
||||
- `/admin/dashboard/files` - Lista de arquivos
|
||||
- `/admin/dashboard/files/add` - Upload de arquivo
|
||||
- `/admin/dashboard/files/[id]` - Editar arquivo
|
||||
|
||||
#### Funcionalidades
|
||||
- Fazer upload de arquivos
|
||||
- Associar a turmas ou tipos de turma
|
||||
- Categorizar arquivos
|
||||
- Gerenciar permissões
|
||||
|
||||
#### Como Testar
|
||||
1. Acesse `/admin/dashboard/files/add`
|
||||
2. Digite o nome do arquivo
|
||||
3. Selecione o arquivo no computador
|
||||
4. Selecione a categoria
|
||||
5. Associe a uma turma ou tipo de turma (opcional)
|
||||
6. Salve
|
||||
7. **Esperado**: Arquivo disponível para download na turma
|
||||
|
||||
---
|
||||
|
||||
## Checklist de Testes
|
||||
|
||||
- [ ] Criar tipo de turma
|
||||
- [ ] Criar turma com professores
|
||||
- [ ] Criar usuário com role student
|
||||
- [ ] Criar usuário com role teacher
|
||||
- [ ] Vincular responsável a estudante
|
||||
- [ ] Matricular estudante em turma
|
||||
- [ ] Criar obrigação de pagamento
|
||||
- [ ] Aprovar pagamento
|
||||
- [ ] Criar template de prova
|
||||
- [ ] Atribuir prova a turma
|
||||
- [ ] Fazer upload de material para turma
|
||||
|
||||
---
|
||||
|
||||
## Possíveis Problemas
|
||||
|
||||
### Usuário não acessa o admin
|
||||
- **Verifique**: O usuário tem a role `admin`?
|
||||
- **Solução**: Edite o usuário em `/admin/dashboard/users`
|
||||
|
||||
### Turma não aparece para o professor
|
||||
- **Verifique**: O professor está atribuído à turma?
|
||||
- **Solução**: Edite a turma em `/admin/dashboard/class`
|
||||
|
||||
### Aluno não vê a prova
|
||||
- **Verifique**: Data/hora da atribuição está correta?
|
||||
- **Verifique**: Aluno está matriculado na turma?
|
||||
- **Solução**: Verifique a atribuição em `/admin/dashboard/assignments`
|
||||
@@ -0,0 +1,100 @@
|
||||
# Teste Manual - Link da Aula (Professor, Estudante e Responsavel)
|
||||
|
||||
## Objetivo
|
||||
|
||||
Validar o fluxo completo de cadastro e visualizacao do campo **Link da Aula**:
|
||||
- Professor registra aula com link
|
||||
- Estudante visualiza e acessa o link no historico
|
||||
- Responsavel visualiza e acessa o link no historico do estudante
|
||||
|
||||
## Pre-requisitos
|
||||
|
||||
- Aplicacao rodando localmente (ex: `http://localhost:3000`)
|
||||
- 1 usuario com role `teacher`
|
||||
- 1 usuario com role `student` matriculado na mesma turma do professor
|
||||
- 1 usuario com role `guardian` vinculado ao estudante
|
||||
- ID de turma valido (exemplo: `/dashboard/teacher/class/<classId>`)
|
||||
- URL de teste para usar como link da aula (ex: `https://example.com/aula-01`)
|
||||
|
||||
## Cenário 1 - Professor registra aula com link
|
||||
|
||||
1. Fazer login como professor.
|
||||
2. Acessar a turma: `/dashboard/teacher/class/<classId>`.
|
||||
3. Clicar em **Registrar Aula**.
|
||||
4. Preencher os campos obrigatorios:
|
||||
- Data da aula
|
||||
- Topico/Assunto
|
||||
- Presenca (qualquer combinacao valida)
|
||||
5. Preencher **Link da Aula** com URL valida (ex: `https://example.com/aula-01`).
|
||||
6. Clicar em **Salvar**.
|
||||
7. Acessar **Historico** da turma: `/dashboard/teacher/class/<classId>/history`.
|
||||
|
||||
### Resultado esperado
|
||||
|
||||
- Aula criada com sucesso.
|
||||
- No card da aula no historico deve aparecer o botao/link **Abrir link da aula**.
|
||||
- Ao clicar, o link abre em nova aba.
|
||||
|
||||
## Cenário 2 - Professor edita aula e atualiza/remove link
|
||||
|
||||
1. No historico da turma, abrir a aula registrada.
|
||||
2. Editar a aula (fluxo de edicao ja existente).
|
||||
3. Alterar o valor de **Link da Aula** para outra URL valida.
|
||||
4. Salvar e validar no historico.
|
||||
5. Editar novamente e limpar o campo **Link da Aula**.
|
||||
6. Salvar.
|
||||
|
||||
### Resultado esperado
|
||||
|
||||
- Ao atualizar, o novo link passa a ser exibido no historico.
|
||||
- Ao remover (campo vazio), o botao/link **Abrir link da aula** nao deve mais aparecer.
|
||||
|
||||
## Cenário 3 - Estudante visualiza link no historico
|
||||
|
||||
1. Fazer logout do professor e login como estudante da mesma turma.
|
||||
2. Acessar: `/dashboard/student/class/<classId>/history`.
|
||||
3. Localizar a aula registrada no Cenario 1.
|
||||
4. Clicar em **Abrir link da aula**.
|
||||
|
||||
### Resultado esperado
|
||||
|
||||
- O link da aula aparece no card quando cadastrado pelo professor.
|
||||
- O clique abre a URL em nova aba.
|
||||
- Se o professor removeu o link (Cenario 2), o estudante nao deve ver o botao/link.
|
||||
|
||||
## Cenário 4 - Responsavel visualiza link no historico do estudante
|
||||
|
||||
1. Fazer logout do estudante e login como responsavel vinculado.
|
||||
2. Acessar estudante e turma:
|
||||
- `/dashboard/guardian/<studentId>/class/<classId>/history`
|
||||
3. Localizar a aula registrada.
|
||||
4. Clicar em **Abrir link da aula**.
|
||||
|
||||
### Resultado esperado
|
||||
|
||||
- O responsavel ve o mesmo link da aula registrado pelo professor.
|
||||
- O clique abre a URL em nova aba.
|
||||
- Se o link foi removido, o responsavel nao deve ver o botao/link.
|
||||
|
||||
## Cenário 5 - Validacao de URL invalida no formulario
|
||||
|
||||
1. Login como professor.
|
||||
2. Abrir **Registrar Aula**.
|
||||
3. Preencher `Link da Aula` com valor invalido (ex: `meu-link`).
|
||||
4. Tentar salvar.
|
||||
|
||||
### Resultado esperado
|
||||
|
||||
- O navegador deve bloquear o envio por ser `type="url"` (ou indicar formato invalido).
|
||||
- Aula nao deve ser salva ate corrigir para URL valida.
|
||||
|
||||
## Checklist rapido
|
||||
|
||||
- [ ] Professor consegue criar aula com link
|
||||
- [ ] Link aparece no historico do professor
|
||||
- [ ] Professor consegue atualizar link
|
||||
- [ ] Professor consegue remover link
|
||||
- [ ] Estudante visualiza link quando existir
|
||||
- [ ] Responsavel visualiza link quando existir
|
||||
- [ ] Link abre em nova aba para os 3 perfis
|
||||
- [ ] URL invalida nao permite envio do formulario
|
||||
+278
@@ -0,0 +1,278 @@
|
||||
# Manual do Responsável
|
||||
|
||||
## Visão Geral
|
||||
|
||||
O painel do responsável permite gerenciar os estudantes vinculados (filhos), acompanhar seu progresso, acessar materiais e gerenciar pagamentos.
|
||||
|
||||
## Acesso
|
||||
|
||||
- **URL**: `/dashboard/guardian`
|
||||
- **Role Necessária**: `parent` ou `guardian`
|
||||
|
||||
---
|
||||
|
||||
## Funcionalidades
|
||||
|
||||
### 1. Dashboard Principal
|
||||
**Rota**: `/dashboard/guardian`
|
||||
|
||||
Visão geral de todos os estudantes vinculados.
|
||||
|
||||
#### Informações Exibidas
|
||||
- Número total de estudantes
|
||||
- Turmas ativas
|
||||
- Total de turmas
|
||||
|
||||
#### Lista de Estudantes
|
||||
Cards com:
|
||||
- Nome do estudante
|
||||
- Nome de usuário
|
||||
- Número de turmas
|
||||
- Link para dashboard individual
|
||||
|
||||
#### Como Testar
|
||||
1. Faça login como responsável
|
||||
2. Acesse `/dashboard/guardian`
|
||||
3. **Esperado**: Ver todos os estudantes vinculados
|
||||
|
||||
---
|
||||
|
||||
### 2. Dashboard Individual do Estudante
|
||||
**Rota**: `/dashboard/guardian/[id]`
|
||||
|
||||
Página dedicada a um estudante específico.
|
||||
|
||||
#### Informações do Estudante
|
||||
- Nome completo
|
||||
- Nome de usuário
|
||||
- Email
|
||||
- Data de nascimento
|
||||
|
||||
#### Turmas Ativas
|
||||
Cards das turmas em que o estudante está matriculado:
|
||||
- Nome da turma
|
||||
- Professores
|
||||
- Horário
|
||||
- Status
|
||||
|
||||
#### Turmas Arquivadas
|
||||
Turmas inativas ou concluídas.
|
||||
|
||||
#### Como Testar
|
||||
1. No dashboard principal, clique em um estudante
|
||||
2. **Esperado**: Ver informações completas do estudante e suas turmas
|
||||
|
||||
---
|
||||
|
||||
### 3. Detalhes da Turma do Estudante
|
||||
**Rota**: `/dashboard/guardian/[id]/class/[classId]`
|
||||
|
||||
Visão detalhada de uma turma específica do estudante.
|
||||
|
||||
#### Informações da Turma
|
||||
- Nome
|
||||
- Professores
|
||||
- Horário e dias
|
||||
- Status
|
||||
|
||||
#### Estatísticas do Estudante
|
||||
- Taxa de presença (%)
|
||||
- Total de aulas
|
||||
- Presentes, atrasados, ausentes
|
||||
|
||||
#### Materiais Disponíveis
|
||||
Arquivos organizados por categoria para download.
|
||||
|
||||
#### Como Testar - Acessar Turma
|
||||
1. No dashboard do estudante, clique em uma turma
|
||||
2. **Esperado**: Ver detalhes da turma e materiais
|
||||
|
||||
#### Como Testar - Baixar Material
|
||||
1. Na seção "Materiais", clique em um arquivo
|
||||
2. **Esperado**: Download iniciado
|
||||
|
||||
---
|
||||
|
||||
### 4. Histórico de Aulas
|
||||
**Rota**: `/dashboard/guardian/[id]/class/[classId]/history`
|
||||
|
||||
Histórico de presença do estudante em uma turma.
|
||||
|
||||
#### Informações por Aula
|
||||
- Data
|
||||
- Conteúdo/tema
|
||||
- Professor
|
||||
- Status de presença do estudante
|
||||
|
||||
#### Status de Presença
|
||||
- `Presente`: Estudante presente
|
||||
- `Atrasado`: Estudante chegou atrasado
|
||||
- `Ausente`: Estudante faltou
|
||||
- `Justificado`: Falta justificada
|
||||
|
||||
#### Como Testar
|
||||
1. Acesse uma turma do estudante
|
||||
2. Clique em "Histórico"
|
||||
3. **Esperado**: Ver todas as aulas com presença do estudante
|
||||
|
||||
---
|
||||
|
||||
### 5. Registrar Novo Estudante
|
||||
**Rota**: `/dashboard/guardian/register-student`
|
||||
|
||||
Formulário para cadastrar um novo estudante vinculado ao responsável.
|
||||
|
||||
#### Campos Obrigatórios
|
||||
- Nome completo
|
||||
- Nome de usuário
|
||||
- Data de nascimento
|
||||
- Senha
|
||||
|
||||
#### Regras
|
||||
- Estudante deve ter menos de 18 anos
|
||||
- Senha deve ter no mínimo 8 caracteres
|
||||
- Estudante é automaticamente vinculado ao responsável
|
||||
|
||||
#### Como Testar
|
||||
1. Acesse `/dashboard/guardian`
|
||||
2. Clique em "Registrar Novo Estudante"
|
||||
3. Preencha todos os campos
|
||||
4. Clique em "Registrar"
|
||||
5. **Esperado**: Estudante criado e vinculado automaticamente
|
||||
|
||||
---
|
||||
|
||||
### 6. Gerenciamento de Pagamentos
|
||||
**Rota**: `/dashboard/guardian/payments`
|
||||
|
||||
Gerenciar pagamentos de todos os estudantes vinculados.
|
||||
|
||||
#### Funcionalidades
|
||||
- Ver obrigações de todos os estudantes
|
||||
- Filtrar por estudante específico
|
||||
- Registrar pagamentos
|
||||
- Fazer upload de comprovantes
|
||||
- Ver histórico completo
|
||||
- Visualizar comprovantes
|
||||
|
||||
#### Como Testar - Registrar Pagamento
|
||||
1. Acesse `/dashboard/guardian/payments`
|
||||
2. Na seção "Obrigações", encontre uma pendente
|
||||
3. Clique para registrar pagamento
|
||||
4. Preencha:
|
||||
- Valor (preenchido automaticamente da obrigação)
|
||||
- Data do pagamento
|
||||
- Método (PIX, transferência, dinheiro, cartão)
|
||||
- Nome do pagador (opcional)
|
||||
- Upload de comprovante (opcional)
|
||||
- Observações (opcional)
|
||||
5. Salve
|
||||
6. **Esperado**: Pagamento registrado com status "pendente"
|
||||
|
||||
#### Abas de Navegação
|
||||
- **Todos**: Ver pagamentos de todos os estudantes
|
||||
- **Por Estudante**: Filtrar por estudante específico
|
||||
|
||||
#### Status de Pagamento
|
||||
- `pending`: Aguardando aprovação
|
||||
- `verified`: Pagamento aprovado
|
||||
- `rejected`: Pagamento rejeitado
|
||||
|
||||
#### Métodos de Pagamento
|
||||
- `pix`: PIX
|
||||
- `transferência`: Transferência bancária
|
||||
- `dinheiro`: Dinheiro
|
||||
- `cartão_crédito`: Cartão de crédito
|
||||
- `cartão_débito`: Cartão de débito
|
||||
|
||||
---
|
||||
|
||||
### 7. Registro de Pagamento Específico
|
||||
**Rota**: `/dashboard/guardian/payments/register`
|
||||
|
||||
Formulário para registrar um pagamento a partir de uma obrigação específica.
|
||||
|
||||
#### Diferença para a Página Principal
|
||||
- Campo de valor já vem preenchido
|
||||
- Estudante e turma já estão selecionados
|
||||
- Fluxo mais rápido para pagamentos individuais
|
||||
|
||||
#### Como Testar
|
||||
1. A partir de uma obrigação, clique em registrar
|
||||
2. Preencha os campos restantes
|
||||
3. Salve
|
||||
4. **Esperado**: Pagamento registrado
|
||||
|
||||
---
|
||||
|
||||
## Fluxo de Uso Típico
|
||||
|
||||
### Acompanhamento Diário
|
||||
1. Acesse `/dashboard/guardian`
|
||||
2. Clique em um estudante
|
||||
3. Verifique as turmas e atividades recentes
|
||||
|
||||
### Acompanhamento de Pagamentos
|
||||
1. Acesse `/dashboard/guardian/payments`
|
||||
2. Verifique obrigações pendentes
|
||||
3. Registre os pagamentos feitos
|
||||
4. Aguarde aprovação
|
||||
|
||||
### Acompanhamento Acadêmico
|
||||
1. Acesse um estudante
|
||||
2. Entre em uma turma
|
||||
3. Baixe os materiais para acompanhar
|
||||
4. Verifique o histórico de presença
|
||||
|
||||
---
|
||||
|
||||
## Checklist de Testes
|
||||
|
||||
- [ ] Ver lista de estudantes vinculados
|
||||
- [ ] Acessar dashboard de um estudante
|
||||
- [ ] Ver turmas de um estudante
|
||||
- [ ] Acessar detalhes de uma turma
|
||||
- [ ] Baixar material da turma
|
||||
- [ ] Ver histórico de presença
|
||||
- [ ] Registrar novo estudante
|
||||
- [ ] Registrar pagamento para um estudante
|
||||
- [ ] Ver histórico de pagamentos
|
||||
|
||||
---
|
||||
|
||||
## Possíveis Problemas
|
||||
|
||||
### Não vejo um estudante
|
||||
- **Verifique**: O estudante está vinculado à sua conta?
|
||||
- **Solução**: Entre em contato com o admin
|
||||
|
||||
### Não consigo registrar estudante
|
||||
- **Verifique**: A data de nascimento indica menor de 18 anos?
|
||||
- **Solução**: Estudantes maiores de idade devem se cadastrar sozinhos
|
||||
|
||||
### Pagamento não é aprovado
|
||||
- **Verifique**: O comprovante foi anexado corretamente?
|
||||
- **Solução**: Entre em contato com o admin
|
||||
|
||||
### Não vejo todas as turmas do estudante
|
||||
- **Possível causa**: Algumas turmas podem estar arquivadas
|
||||
- **Solução**: Verifique na seção "Turmas Arquivadas"
|
||||
|
||||
---
|
||||
|
||||
## Relação Responsável-Estudante
|
||||
|
||||
### Como Funciona o Vínculo
|
||||
- Estudantes têm um campo `guardiansAccounts` com IDs dos responsáveis
|
||||
- Responsáveis têm um campo `wardAccounts` com IDs dos estudantes
|
||||
- A relação é bidirecional
|
||||
|
||||
### Criando Vínculo (Admin)
|
||||
1. Acesse `/admin/dashboard/users`
|
||||
2. Edite o estudante
|
||||
3. Selecione o responsável na lista
|
||||
4. Salve
|
||||
|
||||
### Criando Vínculo (Auto-registro)
|
||||
- Ao registrar um estudante pelo dashboard do responsável, o vínculo é automático
|
||||
- Isso só funciona para menores de 18 anos
|
||||
+248
@@ -0,0 +1,248 @@
|
||||
# Manual do Estudante
|
||||
|
||||
## Visão Geral
|
||||
|
||||
O painel do estudante permite visualizar turmas, acessar materiais, fazer provas, registrar presença e gerenciar pagamentos.
|
||||
|
||||
## Acesso
|
||||
|
||||
- **URL**: `/dashboard/student`
|
||||
- **Role Necessária**: `student`
|
||||
|
||||
---
|
||||
|
||||
## Funcionalidades
|
||||
|
||||
### 1. Dashboard Principal
|
||||
**Rota**: `/dashboard/student`
|
||||
|
||||
Lista de todas as turmas matriculadas com cards mostrando:
|
||||
- Nome da turma
|
||||
- Professores
|
||||
- Horário
|
||||
- Status
|
||||
|
||||
#### Como Testar
|
||||
1. Faça login como estudante
|
||||
2. Acesse `/dashboard/student`
|
||||
3. **Esperado**: Ver todas as turmas matriculadas
|
||||
|
||||
---
|
||||
|
||||
### 2. Detalhes da Turma
|
||||
**Rota**: `/dashboard/student/class/[id]`
|
||||
|
||||
Página principal de uma turma específica.
|
||||
|
||||
#### Informações Exibidas
|
||||
- Nome da turma
|
||||
- Professores
|
||||
- Horário e dias
|
||||
- Status
|
||||
|
||||
#### Estatísticas
|
||||
- Taxa de presença (%)
|
||||
- Total de aulas
|
||||
- Presentes, atrasados, ausentes
|
||||
|
||||
#### Materiais Disponíveis
|
||||
Arquivos organizados por categoria com opção de download.
|
||||
|
||||
#### Provas Disponíveis
|
||||
Lista de provas para fazer com:
|
||||
- Data limite
|
||||
- Tempo disponível
|
||||
- Botão para iniciar
|
||||
|
||||
#### Feed de Atividades Recentes
|
||||
Mostra as últimas atividades da turma.
|
||||
|
||||
#### Como Testar - Acessar Turma
|
||||
1. No dashboard, clique em uma turma
|
||||
2. **Esperado**: Ver detalhes completos da turma
|
||||
|
||||
#### Como Testar - Baixar Material
|
||||
1. Acesse uma turma
|
||||
2. Na seção "Materiais", clique em um arquivo
|
||||
3. **Esperado**: Download do arquivo iniciado
|
||||
|
||||
---
|
||||
|
||||
### 3. Histórico da Turma
|
||||
**Rota**: `/dashboard/student/class/[id]/history`
|
||||
|
||||
Lista de todas as aulas com:
|
||||
- Data
|
||||
- Conteúdo/tema
|
||||
- Professor
|
||||
- Status de presença do aluno
|
||||
|
||||
#### Status de Presença
|
||||
- `Presente`: Aluno presente
|
||||
- `Atrasado`: Aluno chegou atrasado
|
||||
- `Ausente`: Aluno faltou
|
||||
- `Justificado`: Falta justificada
|
||||
|
||||
#### Como Testar
|
||||
1. Acesse uma turma
|
||||
2. Clique em "Histórico"
|
||||
3. **Esperado**: Ver todas as aulas com sua presença
|
||||
|
||||
---
|
||||
|
||||
### 4. Fazendo Provas
|
||||
**Rota**: `/dashboard/student/assignments/[id]/take`
|
||||
|
||||
Interface para fazer provas online.
|
||||
|
||||
#### Funcionalidades
|
||||
- Timer com contagem regressiva
|
||||
- Perguntas de múltipla escolha e texto
|
||||
- Barra de progresso
|
||||
- Salvar automaticamente
|
||||
- Entender automaticamente ao acabar o tempo
|
||||
|
||||
#### Como Testar
|
||||
1. Acesse uma turma
|
||||
2. Na seção "Provas Disponíveis", clique em "Iniciar"
|
||||
3. Responda às perguntas
|
||||
4. Clique em "Entregar" ou aguarde o tempo acabar
|
||||
5. **Esperado**: Prova entregue, redirecionado para resultados
|
||||
|
||||
#### Importante
|
||||
- O timer não para se você sair da página
|
||||
- Após o tempo acabar, a prova é entregue automaticamente
|
||||
- Você pode ver suas respostas antes de entregar
|
||||
|
||||
---
|
||||
|
||||
### 5. Resultados de Provas
|
||||
**Rota**: `/dashboard/student/assignments/[id]/results`
|
||||
|
||||
Ver resultados das provas feitas.
|
||||
|
||||
#### Informações Exibidas
|
||||
- Nota final
|
||||
- Tempo gasto
|
||||
- Tentativas anteriores
|
||||
- Feedback por pergunta (se disponível)
|
||||
- Opção de tentar novamente (se permitido)
|
||||
|
||||
#### Como Testar
|
||||
1. Após fazer uma prova, você será redirecionado para resultados
|
||||
2. Ou acesse através da turma > Provas
|
||||
3. **Esperado**: Ver nota, respostas e feedback
|
||||
|
||||
---
|
||||
|
||||
### 6. Pagamentos
|
||||
**Rota**: `/dashboard/student/payments`
|
||||
|
||||
Gerenciar obrigações de pagamento e histórico.
|
||||
|
||||
#### Funcionalidades
|
||||
- Ver obrigações pendentes
|
||||
- Registrar novos pagamentos
|
||||
- Ver histórico de pagamentos
|
||||
- Fazer upload de comprovantes
|
||||
- Ver status (pendente, aprovado, rejeitado)
|
||||
|
||||
#### Como Testar - Registrar Pagamento
|
||||
1. Acesse `/dashboard/student/payments`
|
||||
2. Na seção "Obrigações", clique em uma pendente
|
||||
3. Preencha:
|
||||
- Data do pagamento
|
||||
- Método (PIX, transferência, dinheiro, cartão)
|
||||
- Nome do pagador (opcional)
|
||||
- Upload de comprovante (opcional)
|
||||
4. Salve
|
||||
5. **Esperado**: Pagamento registrado com status "pendente"
|
||||
|
||||
#### Métodos de Pagamento
|
||||
- `pix`: PIX
|
||||
- `transferência`: Transferência bancária
|
||||
- `dinheiro`: Dinheiro
|
||||
- `cartão_crédito`: Cartão de crédito
|
||||
- `cartão_débito`: Cartão de débito
|
||||
|
||||
#### Status
|
||||
- `pending`: Aguardando aprovação
|
||||
- `verified`: Pagamento aprovado
|
||||
- `rejected`: Pagamento rejeitado
|
||||
|
||||
---
|
||||
|
||||
### 7. Perfil
|
||||
**Rota**: `/profile`
|
||||
|
||||
Editar informações pessoais.
|
||||
|
||||
#### Informações Editáveis
|
||||
- Nome completo
|
||||
- Nome de usuário
|
||||
- Email
|
||||
- Data de nascimento
|
||||
|
||||
#### Informações Somente Leitura
|
||||
- Roles (funções)
|
||||
- Responsáveis (se menor de idade)
|
||||
- Estudantes sob responsabilidade (se responsável)
|
||||
|
||||
#### Como Testar
|
||||
1. Acesse `/profile`
|
||||
2. Altere qualquer campo permitido
|
||||
3. Clique em "Salvar Alterações"
|
||||
4. **Esperado**: Dados atualizados, mensagem de sucesso
|
||||
|
||||
#### Restrições para Menores de Idade
|
||||
- Estudantes menores de 18 não podem remover responsáveis existentes
|
||||
- Podem apenas ver quais responsáveis estão vinculados
|
||||
|
||||
---
|
||||
|
||||
## Fluxo de Uso Típico
|
||||
|
||||
### Dia a Dia
|
||||
1. **Antes da aula**: Acesse a turma e baixe o material
|
||||
2. **Durante o curso**: Faça as provas disponíveis antes da data limite
|
||||
3. **Após provas**: Acompanhe seus resultados
|
||||
|
||||
### Mensalmente
|
||||
1. Acesse `/dashboard/student/payments`
|
||||
2. Verifique obrigações pendentes
|
||||
3. Registre os pagamentos feitos
|
||||
4. Aguarde aprovação
|
||||
|
||||
---
|
||||
|
||||
## Checklist de Testes
|
||||
|
||||
- [ ] Ver lista de turmas matriculadas
|
||||
- [ ] Acessar detalhes de uma turma
|
||||
- [ ] Baixar material da turma
|
||||
- [ ] Ver histórico de presença
|
||||
- [ ] Fazer uma prova
|
||||
- [ ] Ver resultados de prova
|
||||
- [ ] Registrar um pagamento
|
||||
- [ ] Editar perfil
|
||||
|
||||
---
|
||||
|
||||
## Possíveis Problemas
|
||||
|
||||
### Não vejo uma turma
|
||||
- **Verifique**: Você está matriculado nessa turma?
|
||||
- **Solução**: Entre em contato com o admin
|
||||
|
||||
### Prova não aparece
|
||||
- **Verifique**: A data/hora da prova está dentro do período?
|
||||
- **Verifique**: Você já tentou o número máximo de vezes?
|
||||
- **Solução**: Verifique com o professor
|
||||
|
||||
### Pagamento não é aprovado
|
||||
- **Verifique**: O comprovante foi anexado corretamente?
|
||||
- **Solução**: Entre em contato com o admin
|
||||
|
||||
### Não consigo editar responsável
|
||||
- **Possível causa**: Você tem 18 anos ou mais
|
||||
- **Solução**: Adultos não podem ter novos responsáveis, apenas remover existentes
|
||||
+187
@@ -0,0 +1,187 @@
|
||||
# Manual do Professor
|
||||
|
||||
## Visão Geral
|
||||
|
||||
O painel do professor permite gerenciar turmas, fazer upload de materiais, registrar presença e criar/corrigir provas.
|
||||
|
||||
## Acesso
|
||||
|
||||
- **URL**: `/dashboard/teacher`
|
||||
- **Role Necessária**: `teacher`
|
||||
|
||||
---
|
||||
|
||||
## Funcionalidades
|
||||
|
||||
### 1. Dashboard Principal
|
||||
**Rota**: `/dashboard/teacher`
|
||||
|
||||
Lista de todas as turmas atribuídas ao professor com cards mostrando:
|
||||
- Nome da turma
|
||||
- Número de alunos
|
||||
- Horário
|
||||
|
||||
#### Como Testar
|
||||
1. Faça login como professor
|
||||
2. Acesse `/dashboard/teacher`
|
||||
3. **Esperado**: Ver todas as turmas atribuídas
|
||||
|
||||
---
|
||||
|
||||
### 2. Detalhes da Turma
|
||||
**Rota**: `/dashboard/teacher/class/[id]`
|
||||
|
||||
Página principal de gerenciamento de uma turma específica.
|
||||
|
||||
#### Informações Exibidas
|
||||
- Nome da turma
|
||||
- Professores atribuídos
|
||||
- Horário e dias
|
||||
- Status (ativo/inativo)
|
||||
- Estatísticas: número de alunos, taxa de presença, média das notas
|
||||
|
||||
#### Lista de Alunos
|
||||
Tabela com:
|
||||
- Nome do aluno
|
||||
- Taxa de presença
|
||||
- Média das provas
|
||||
- Status
|
||||
|
||||
#### Ações Disponíveis
|
||||
- **Upload de Materiais**: Adicionar arquivos para a turma
|
||||
- **Registrar Aula**: Registrar presença e conteúdo da aula
|
||||
- **Ver Histórico**: Ver todas as aulas anteriores
|
||||
- **Copiar Link**: Copiar link da aula virtual
|
||||
|
||||
#### Como Testar - Upload de Material
|
||||
1. Acesse uma turma
|
||||
2. Clique em "Upload de Materiais"
|
||||
3. Digite o nome do arquivo
|
||||
4. Selecione o arquivo no computador
|
||||
5. Selecione a categoria
|
||||
6. Salve
|
||||
7. **Esperado**: Arquivo aparece na seção de materiais
|
||||
|
||||
#### Como Testar - Registrar Aula
|
||||
1. Acesse uma turma
|
||||
2. Clique em "Registrar Aula"
|
||||
3. Digite o tema/conteúdo da aula
|
||||
4. Selecione a data
|
||||
5. Marque a presença dos alunos (Presente, Atrasado, Ausente, Justificado)
|
||||
6. Salve
|
||||
7. **Esperado**: Aula registrada no histórico
|
||||
|
||||
---
|
||||
|
||||
### 3. Histórico da Turma
|
||||
**Rota**: `/dashboard/teacher/class/[id]/history`
|
||||
|
||||
Lista de todas as aulas registradas com:
|
||||
- Data da aula
|
||||
- Conteúdo/tema
|
||||
- Professor que registrou
|
||||
- Resumo de presença
|
||||
|
||||
#### Como Testar
|
||||
1. Acesse uma turma
|
||||
2. Clique em "Ver Histórico"
|
||||
3. **Esperado**: Ver todas as aulas com presença registrada
|
||||
|
||||
---
|
||||
|
||||
### 4. Templates de Provas
|
||||
**Rota**: `/dashboard/teacher/exam-templates`
|
||||
|
||||
Gerenciar templates de provas reutilizáveis.
|
||||
|
||||
#### Funcionalidades
|
||||
- Criar novo template
|
||||
- Editar templates existentes
|
||||
- Adicionar perguntas (múltipla escolha ou texto)
|
||||
- Definir como público ou privado
|
||||
|
||||
#### Como Testar - Criar Template
|
||||
1. Acesse `/dashboard/teacher/exam-templates`
|
||||
2. Clique em "Novo Template"
|
||||
3. Digite título e descrição
|
||||
4. Clique em "Adicionar Pergunta"
|
||||
5. Selecione o tipo:
|
||||
- **Múltipla Escolha**: Digite a pergunta, adicione opções, marque a correta
|
||||
- **Texto**: Digite apenas a pergunta
|
||||
6. Salve
|
||||
7. **Esperado**: Template criado e disponível para atribuir
|
||||
|
||||
---
|
||||
|
||||
### 5. Resultados de Provas
|
||||
**Rota**: `/dashboard/teacher/assignments/[id]/results`
|
||||
|
||||
Ver e corrigir provas dos alunos.
|
||||
|
||||
#### Funcionalidades
|
||||
- Ver tentativas dos alunos
|
||||
- Corrigir provas manualmente
|
||||
- Ver notas automáticas (para múltipla escolha)
|
||||
- Acompanhar status de correção
|
||||
|
||||
#### Status de Correção
|
||||
- `pending`: Aguardando correção
|
||||
- `auto-graded`: Corrigido automaticamente
|
||||
- `partially-graded`: Parcialmente corrigido
|
||||
- `fully-graded`: Totalmente corrigido
|
||||
|
||||
#### Como Testar
|
||||
1. Acesse os resultados de uma atribuição
|
||||
2. Clique em uma tentativa de aluno
|
||||
3. Para perguntas de texto, digite a nota e comentários
|
||||
4. Salve
|
||||
5. **Esperado**: Nota atribuída, status atualizado
|
||||
|
||||
---
|
||||
|
||||
## Fluxo de Trabalho Típico
|
||||
|
||||
### Preparar uma Turma
|
||||
1. Acesse a turma
|
||||
2. Faça upload dos materiais da primeira aula
|
||||
3. Verifique a lista de alunos
|
||||
|
||||
### Durante o Curso
|
||||
1. **Antes de cada aula**: Faça upload do material
|
||||
2. **Após cada aula**: Registre a presença e o conteúdo
|
||||
3. **Periodicamente**: Crie e atribua provas
|
||||
|
||||
### Criar uma Prova
|
||||
1. Crie o template em `/dashboard/teacher/exam-templates`
|
||||
2. Atribua à turma (isso pode precisar de intervenção do admin)
|
||||
3. Acompanhe os resultados em `/dashboard/teacher/assignments/[id]/results`
|
||||
|
||||
---
|
||||
|
||||
## Checklist de Testes
|
||||
|
||||
- [ ] Ver lista de turmas atribuídas
|
||||
- [ ] Acessar detalhes de uma turma
|
||||
- [ ] Fazer upload de material
|
||||
- [ ] Registrar uma aula com presença
|
||||
- [ ] Ver histórico de aulas
|
||||
- [ ] Criar template de prova
|
||||
- [ ] Ver resultados de prova
|
||||
- [ ] Corrigir prova manualmente
|
||||
|
||||
---
|
||||
|
||||
## Possíveis Problemas
|
||||
|
||||
### Não consigo ver uma turma
|
||||
- **Verifique**: Você está atribuído a essa turma?
|
||||
- **Solução**: Entre em contato com o admin
|
||||
|
||||
### Não consigo atribuir prova à turma
|
||||
- **Possível causa**: Essa funcionalidade pode estar apenas no admin
|
||||
- **Solução**: Peça ao admin para atribuir a prova
|
||||
|
||||
### Material não aparece para os alunos
|
||||
- **Verifique**: O upload foi concluído com sucesso?
|
||||
- **Verifique**: A turma está correta?
|
||||
- **Solução**: Tente fazer upload novamente
|
||||
Reference in New Issue
Block a user