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
| Field | Type | Required | Notes |
|---|---|---|---|
| code | string | yes | Unique, max 50 chars |
| courseId | number | yes | — |
| title | string | yes | Max 255 chars |
| deliveryMode | 'presential' | 'online' | 'hybrid' | yes | — |
| startDate | string (ISO8601) | yes | — |
| instructorId | number | no | — |
| description | string | no | — |
| status | 'open' | 'ongoing' | 'completed' | 'cancelled' | no | — |
| endDate | string (ISO8601) | no | — |
| startTime | string (HH:MM) | no | — |
| endTime | string (HH:MM) | no | — |
| weekDays | string | no | — |
| capacity | number | no | Min 1 |
| location | string | no | — |
| virtualRoomUrl | string | no | Max 500 chars |
| sessionTemplate | ClassGroupSessionTemplateDto | no | { title, description?, location?, meetingUrl?, color?, recurrence? } |
Atualiza os campos da turma (todos opcionais).
- Params
- id (int)
Exclui uma turma.
- Params
- id (int)
Busca pessoas elegíveis para se matricular como alunos.
- Params
- id (int)
- Query
- q
Lista os alunos matriculados.
- Params
- id (int)
- Query
- search
Matricula uma pessoa existente.
- Params
- id (int)
Body
| Field | Type | Required | Notes |
|---|---|---|---|
| personId | number | yes | — |
Cria uma nova pessoa e a matricula em uma única chamada.
- Params
- id (int)
Body
| Field | Type | Required | Notes |
|---|---|---|---|
| name | string | yes | Max 255 chars |
| string | no | Max 255 chars | |
| phone | string | no | Max 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
| Field | Type | Required | Notes |
|---|---|---|---|
| title | string | yes | Max 255 chars |
| sessionDate | string (ISO8601) | yes | — |
| startTime | string (HH:MM) | yes | — |
| endTime | string (HH:MM) | yes | — |
| description | string | no | — |
| location | string | no | — |
| meetingUrl | string | no | Max 500 chars |
| color | string (#RRGGBB) | no | — |
| status | 'scheduled' | 'completed' | 'cancelled' | no | — |
| instructorId | number | no | — |
| recurrence | SessionRecurrenceDto | no | { frequency, interval?, until, daysOfWeek? } |
Atualiza uma sessão.
- Params
- id, sessionId (int)
Body
| Field | Type | Required | Notes |
|---|---|---|---|
| applyScope | 'single' | 'series' | no | Whether 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
| Field | Type | Required | Notes |
|---|---|---|---|
| attendance | AttendanceEntryDto[] | 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
| Field | Type | Required | Notes |
|---|---|---|---|
| title | string | yes | Max 255 chars |
| materialType | 'file' | 'link' | yes | — |
| description | string | no | — |
| fileId | number | no | Required when materialType=file |
| url | string | no | Required when materialType=link, max 500 chars |
| sessionId | number | no | — |
| sortOrder | number | no | — |
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.listLista turmas com paginação e filtros opcionais
lms.classes.statsRetorna estatísticas resumidas de turmas
lms.classes.getRetorna uma única turma por ID com detalhes completos
lms.classes.createCria uma nova turma
lms.classes.updateAtualiza uma turma existente
lms.classes.deleteRemove uma turma por ID
lms.classes.people-searchBusca pessoas que podem ser adicionadas a uma turma como alunos
lms.classes.students.listLista alunos matriculados em uma turma
lms.classes.students.enrollMatricula uma pessoa existente como aluno em uma turma
lms.classes.students.enroll-newCria uma nova pessoa e a matricula imediatamente em uma turma
lms.classes.students.getRetorna o perfil e o progresso de um aluno específico em uma turma
lms.classes.students.updateAtualiza os dados de perfil de um aluno dentro de uma turma
lms.classes.students.removeRemove um aluno de uma turma
lms.classes.sessions.listLista todas as sessões agendadas para uma turma
lms.classes.sessions.createCria uma nova sessão para uma turma, com recorrência opcional
lms.classes.sessions.updateAtualiza uma sessão em uma turma
lms.classes.sessions.deleteExclui uma sessão; use scope=series para excluir uma série recorrente inteira
lms.classes.sessions.attendance.getRetorna a lista de presença de uma sessão específica
lms.classes.sessions.attendance.saveSalva os registros de presença de uma sessão
lms.classes.materials.listLista materiais de uma turma, opcionalmente filtrados por sessão
lms.classes.materials.createCria um novo material (arquivo ou link) para uma turma
lms.classes.materials.deleteExclui um material de uma turma