Logotipo Hedhog

Receba novidades do Hedhog no seu e-mail

Novos lançamentos, receitas e breaking changes — sem spam.

Submódulo LMS

class-groups

Turmas conduzidas por instrutor com sessões de calendário (incluindo recorrência), matrícula de alunos, controle de presença e materiais de turma.

Caminho de origem: libraries/lms/src/class-group

Arquivo do módulo: class-group.module.ts

Introdução

O submódulo Class Groups modela ofertas agendadas de um curso conduzidas por instrutor — distintas do conteúdo de curso sob demanda gerenciado pelo submódulo Courses. Uma turma vincula um curso a um modo de entrega (presencial, online ou híbrido), a um intervalo de datas, a um instrutor opcional e a uma capacidade, e torna-se a unidade na qual os alunos de fato se matriculam e participam.

A matrícula suporta dois caminhos: vincular uma pessoa existente (`POST /lms/classes/:id/students`) ou criar um registro de pessoa totalmente novo e matriculá-la na mesma chamada (`POST /lms/classes/:id/students/create`), que é o caminho comum para registros presenciais ou por telefone em que a pessoa não tem registro prévio no CRM. O `GET /lms/classes/:id/people/search` alimenta a UI do seletor de matrícula, buscando no diretório mais amplo de pessoas por candidatos à matrícula.

As sessões de calendário são as ocorrências reais de encontro de uma turma. Uma sessão pode ser criada de forma avulsa ou gerada como uma série recorrente via um bloco `recurrence` (frequência diária/semanal/mensal/anual, intervalo, data-limite e seleção de dia da semana para padrões semanais) — tanto no momento da criação da turma (`sessionTemplate`) quanto ao adicionar sessões diretamente. Atualizações e exclusões aceitam um `scope` de `single` ou `series`, permitindo que um editor altere apenas uma ocorrência ou todo o padrão recorrente; a exclusão valida isso via um parâmetro de query, enquanto a atualização valida como um campo de body, uma inconsistência que vale conhecer. A presença é registrada por sessão como um array de substituição completa de entradas `{studentId, present, justification?}`, em vez de alternâncias incrementais, simplificando a lógica de salvamento de uma UI de registro de presença.

Materiais (arquivos ou links externos) podem ser anexados à turma como um todo ou com escopo em uma sessão específica, permitindo que um instrutor compartilhe apostilas específicas de sessão junto com materiais gerais do curso. Note que um `UpdateMaterialDto` existe no código-fonte, mas não tem rota de controller correspondente — materiais podem ser criados e excluídos, mas não editados no lugar hoje.

Endpoints HTTP

22 endpoints

Lista de turmas paginada e filtrável.

Query
page, pageSize, search, status, deliveryMode, courseId

Estatísticas agregadas de turmas.

Detalhes completos da turma.

Params
id (int)

Cria uma turma, opcionalmente gerando uma série de sessões recorrentes a partir de sessionTemplate.

Body

FieldTypeRequiredNotes
codestringyesUnique, max 50 chars
courseIdnumberyes
titlestringyesMax 255 chars
deliveryMode'presential' | 'online' | 'hybrid'yes
startDatestring (ISO8601)yes
instructorIdnumberno
descriptionstringno
status'open' | 'ongoing' | 'completed' | 'cancelled'no
endDatestring (ISO8601)no
startTimestring (HH:MM)no
endTimestring (HH:MM)no
weekDaysstringno
capacitynumbernoMin 1
locationstringno
virtualRoomUrlstringnoMax 500 chars
sessionTemplateClassGroupSessionTemplateDtono{ title, description?, location?, meetingUrl?, color?, recurrence? }

Atualiza os campos da turma (todos opcionais).

Params
id (int)

Exclui uma turma.

Params
id (int)

Lista os alunos matriculados.

Params
id (int)
Query
search

Matricula uma pessoa existente.

Params
id (int)

Body

FieldTypeRequiredNotes
personIdnumberyes

Cria uma nova pessoa e a matricula em uma única chamada.

Params
id (int)

Body

FieldTypeRequiredNotes
namestringyesMax 255 chars
emailstringnoMax 255 chars
phonestringnoMax 50 chars

Perfil/progresso de matrícula do aluno dentro da turma.

Params
id, personId (int)

Atualiza nome/e-mail/telefone do aluno.

Params
id, personId (int)

Remove a matrícula do aluno.

Params
id, personId (int)

Lista as sessões de calendário.

Params
id (int)

Adiciona uma sessão, opcionalmente expandindo em uma série recorrente.

Params
id (int)

Body

FieldTypeRequiredNotes
titlestringyesMax 255 chars
sessionDatestring (ISO8601)yes
startTimestring (HH:MM)yes
endTimestring (HH:MM)yes
descriptionstringno
locationstringno
meetingUrlstringnoMax 500 chars
colorstring (#RRGGBB)no
status'scheduled' | 'completed' | 'cancelled'no
instructorIdnumberno
recurrenceSessionRecurrenceDtono{ frequency, interval?, until, daysOfWeek? }

Atualiza uma sessão.

Params
id, sessionId (int)

Body

FieldTypeRequiredNotes
applyScope'single' | 'series'noWhether the update applies to this occurrence or the whole recurring series

Exclui uma sessão; scope=series remove todas as recorrências.

Params
id, sessionId (int)
Query
scope (single | series)

Registros de presença de uma sessão.

Params
id, sessionId (int)

Salva/sobrescreve a presença de uma sessão.

Params
id, sessionId (int)

Body

FieldTypeRequiredNotes
attendanceAttendanceEntryDto[]yes{ studentId, present, justification? }[]

Lista materiais, opcionalmente filtrados para uma sessão.

Params
id (int)
Query
sessionId?

Cria um material (arquivo ou link externo).

Params
id (int)

Body

FieldTypeRequiredNotes
titlestringyesMax 255 chars
materialType'file' | 'link'yes
descriptionstringno
fileIdnumbernoRequired when materialType=file
urlstringnoRequired when materialType=link, max 500 chars
sessionIdnumberno
sortOrdernumberno

Exclui um material.

Params
id, materialId (int)

Ferramentas MCP

Ferramentas nomeadas que podem ser chamadas por modelos de IA através do Model Context Protocol (MCP).

  • lms.classes.list

    Lista turmas com paginação e filtros opcionais

  • lms.classes.stats

    Retorna estatísticas resumidas de turmas

  • lms.classes.get

    Retorna uma única turma por ID com detalhes completos

  • lms.classes.create

    Cria uma nova turma

  • lms.classes.update

    Atualiza uma turma existente

  • lms.classes.delete

    Remove uma turma por ID

  • lms.classes.people-search

    Busca pessoas que podem ser adicionadas a uma turma como alunos

  • lms.classes.students.list

    Lista alunos matriculados em uma turma

  • lms.classes.students.enroll

    Matricula uma pessoa existente como aluno em uma turma

  • lms.classes.students.enroll-new

    Cria uma nova pessoa e a matricula imediatamente em uma turma

  • lms.classes.students.get

    Retorna o perfil e o progresso de um aluno específico em uma turma

  • lms.classes.students.update

    Atualiza os dados de perfil de um aluno dentro de uma turma

  • lms.classes.students.remove

    Remove um aluno de uma turma

  • lms.classes.sessions.list

    Lista todas as sessões agendadas para uma turma

  • lms.classes.sessions.create

    Cria uma nova sessão para uma turma, com recorrência opcional

  • lms.classes.sessions.update

    Atualiza uma sessão em uma turma

  • lms.classes.sessions.delete

    Exclui uma sessão; use scope=series para excluir uma série recorrente inteira

  • lms.classes.sessions.attendance.get

    Retorna a lista de presença de uma sessão específica

  • lms.classes.sessions.attendance.save

    Salva os registros de presença de uma sessão

  • lms.classes.materials.list

    Lista materiais de uma turma, opcionalmente filtrados por sessão

  • lms.classes.materials.create

    Cria um novo material (arquivo ou link) para uma turma

  • lms.classes.materials.delete

    Exclui um material de uma turma