Feature: Gestão de Atividades
Introdução ao documento
Este documento cobre a visão do facilitador para acompanhar, baixar, marcar e avaliar atividades da turma, incluindo modo de recuperação e templates por atividade. Evidências: 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.
Versionamento
- Documento criado em
2026-03-20. - Revisar quando mudarem
ActivityManagement,ActivityEvaluationSlider, hooks de submissão ou/api/activity-templatee/api/submissions/*. Evidências:src/components/ActivityManagement/ActivityManagement.component.tsx:100-359,src/components/ActivityEvaluationSlider/ActivityEvaluationSlider.component.tsx:82-223,src/app/api/activity-template/route.ts:3-200.
Referencial teórico
O fluxo foi derivado das páginas de gestão, do componente ActivityManagement, da avaliação individual e do BFF de submissões. Evidências: src/app/(protected-routes)/gestao-de-atividades/page.tsx:17-40, src/app/(protected-routes)/gestao-de-atividades/[id]/page.tsx:61-145, src/app/services/bff/SubmissionService.ts:17-197.
Visão geral
- A página principal mostra a turma corrente e abre a tela de gestão com filtros, resumo e ações. Evidências:
src/app/(protected-routes)/gestao-de-atividades/page.tsx:19-40. - A página
/gestao-de-atividades/[id]foca na avaliação individual de um participante e usasessionStoragepara recuperar contexto. Evidências:src/app/(protected-routes)/gestao-de-atividades/[id]/page.tsx:44-59,src/app/(protected-routes)/gestao-de-atividades/[id]/page.tsx:101-145. - A gestão suporta download de lote, atualização para plataforma externa e upload/remoção de templates por atividade. Evidências:
src/components/ActivityManagement/ActivityManagement.component.tsx:179-208,src/components/ActivityManagement/ActivityManagement.component.tsx:248-289.
Atores
- Facilitador/supervisor gerindo e avaliando atividades. Evidências:
src/app/(protected-routes)/gestao-de-atividades/page.tsx:11-45. - Participante avaliado, identificado por
selectedParticipant. Evidências:src/app/(protected-routes)/gestao-de-atividades/[id]/page.tsx:35-43,src/app/(protected-routes)/gestao-de-atividades/[id]/page.tsx:94-145. - Serviço externo de submissões/templates. Evidências:
src/app/services/bff/SubmissionService.ts:17-197,src/hooks/useActivityTemplates.ts:34-118.
Pré-condições
- Sessão válida na página protegida. Evidências:
src/app/(protected-routes)/gestao-de-atividades/page.tsx:11-15. classIdeclassesDatacarregados no contexto. Evidências:src/components/ActivityManagement/ActivityManagement.component.tsx:122-142.- Para avaliação individual,
selectedParticipanteselectedActivitydevem existir emsessionStorage. Evidências:src/app/(protected-routes)/gestao-de-atividades/[id]/page.tsx:44-59,src/app/(protected-routes)/gestao-de-atividades/[id]/page.tsx:94-99.
Fluxo principal
- O facilitador entra em
/gestao-de-atividades; a tela renderiza troca de turma eActivityManagement. Evidências:src/app/(protected-routes)/gestao-de-atividades/page.tsx:17-40. - O hook de submissões carrega a turma e seus estudantes/atividades. Evidências:
src/components/ActivityManagement/ActivityManagement.component.tsx:124-138. - O usuário pode filtrar participantes, baixar atividades recebidas, marcar envio externo ou abrir a avaliação individual. Evidências:
src/components/ActivityManagement/ActivityManagement.component.tsx:179-208,src/components/ActivityManagement/ActivityManagement.component.tsx:227-246,src/components/ActivityManagement/ActivityManagement.component.tsx:315-359. - Ao abrir a avaliação individual, a página recupera o participante do
sessionStoragee busca todas as submissões do participante para montar o slider. Evidências:src/app/(protected-routes)/gestao-de-atividades/[id]/page.tsx:44-59,src/app/(protected-routes)/gestao-de-atividades/[id]/page.tsx:61-85.
Fluxos alternativos
- Se
classIdouclassesDatanão estiverem prontos, a tela fica emLoader. Evidências:src/components/ActivityManagement/ActivityManagement.component.tsx:140-142. - Em modo de recuperação, o label da atividade usa
collective_meetingsem vez denª atividade. Evidências:src/components/ActivityManagement/ActivityManagement.component.tsx:144-158. - Se a turma individual não puder ser carregada na avaliação,
ActivityEvaluationSlidermostraNotifyModal. Evidências:src/components/ActivityEvaluationSlider/ActivityEvaluationSlider.component.tsx:126-140.
Regras de negócio
- Os status canônicos de atividade observados são
avaliada,recebida,não recebidaeenviada por outra plataforma. Evidências:src/components/ActivityManagement/ActivityManagement.component.tsx:34-38. - O modo de recuperação é ativado quando
enable_strategic_activitiesestá desligado eis_recovery_enabledestá ligado. Evidências:src/components/ActivityManagement/ActivityManagement.component.tsx:145-148. - Downloads em lote só aparecem quando a data atual está dentro do limite de edição da turma. Evidências:
src/components/ActivityManagement/ActivityManagement.component.tsx:315-321. - Upload de template exige
course_id,activity_id,cycle_id,class_ide arquivo. Evidências:src/components/ActivityManagement/ActivityManagement.component.tsx:248-265,src/app/api/activity-template/route.ts:22-32. - A soma de atividades avaliáveis na tela individual considera tanto configuração da turma quanto o maior
activity_idencontrado nas submissões. Evidências:src/app/(protected-routes)/gestao-de-atividades/[id]/page.tsx:69-84.
Estados possíveis
recebida,avaliada,nao_recebida,externa: estados observados na grade da gestão. Evidências:src/components/ActivityManagement/ActivityManagement.component.tsx:34-38.loading: carregamento da turma ou da avaliação individual. Evidências:src/components/ActivityManagement/ActivityManagement.component.tsx:140-142,src/components/ActivityEvaluationSlider/ActivityEvaluationSlider.component.tsx:126-128.sem_participante_selecionado: página individual mantémLoader. Evidências:src/app/(protected-routes)/gestao-de-atividades/[id]/page.tsx:94-99.
Endpoints envolvidos
- Ver OpenAPI:
GET /api/submissions,GET /api/submissions/status-sumary,GET /api/submissions/download,GET /api/submissions/class/{id},PUT /api/submissions/{id},DELETE /api/submissions/{id},GET /api/activity-template,POST /api/activity-template,DELETE /api/activity-template.
Evidências: src/app/services/bff/SubmissionService.ts:17-197, src/hooks/useActivityTemplates.ts:34-118, src/app/api/submissions/status-sumary/route.ts:6-49.
Dados impactados
- Ver model.md:
Submission,ActivityTemplate,Class,Studente estados de atividade. - A navegação para avaliação individual também grava
selectedParticipanteselectedActivityemsessionStorage. Evidências:src/components/ActivityManagement/ActivityManagement.component.tsx:235-245.
Pendências
- O contrato da utilidade
updateActivityToExternalUtilnão está documentado fora do código. - A feature de avaliação depende de
ActivityEvaluation.component, mas parte do comportamento de score/comentário está fora dos arquivos inspecionados neste inventário.