Logotipo Hedhog

Receba novidades do Hedhog no seu e-mail

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

Submódulo LMS

platforma

O portal de LMS voltado ao aluno — catálogo de cursos e player, streaming de vídeo/HLS/legendas via tokens assinados, notificações de aula (com um stream SSE), sequência de aprendizado, avaliações de aula, self-service de carteira BitCode, heartbeats de tempo assistido, dashboards de desempenho e gerenciamento de perfil.

Caminho de origem: libraries/lms/src/platforma

Arquivo do módulo: (none — registered directly in lms.module.ts)

Introdução

A Platforma (a palavra portuguesa para "plataforma" — note que a classe do controller é literalmente `PlataformaController`, enquanto cada arquivo, serviço e o prefixo de rota `/lms/platforma` usam a grafia em inglês, uma inconsistência de nomenclatura pré-existente na base de código) é estruturalmente única entre os submódulos do LMS: ela não tem um `*.module.ts` dedicado. O `PlataformaController` e todos os seus cinco serviços de apoio (`PlatformaService`, `PlatformaVideoService`, `PlatformaHeartbeatService`, `PlatformaPerformanceService`, `PlatformaSearchService`) mais dois handlers de fila/evento são registrados diretamente no `LmsModule` raiz, em vez de cada submódulo ter seu próprio arquivo de módulo, como em todo o resto desta library.

O controller é decorado com `@NoRole()` em vez de `@Role()` — qualquer usuário autenticado pode chamá-lo, sem exigir uma role específica de plataforma — exceto por um grupo de rotas de streaming (`/video/:token`, `/hls/:token/...`, `/subtitles/:token/captions.vtt`) que são `@Public()`: o modelo de segurança para a entrega de vídeo é o próprio token assinado e com tempo limitado, e não uma verificação de sessão, já que um player de vídeo ou uma tag `<video>` não pode anexar um header Authorization a uma requisição de manifesto/segmento. Os tokens são cunhados pelos endpoints `@NoRole()` (`video-token`, `hls-token`, `subtitles-token`) e então entregues aos endpoints públicos de streaming.

Além do vídeo, a Platforma agrega vários outros submódulos por trás de uma superfície amigável ao aluno: notificações (listar/contagem de não lidas/marcar como lida/excluir, mais um endpoint SSE `GET /notifications/stream` para push ao vivo), a sequência de aprendizado e o registro de suas atividades, a submissão de avaliação de aula (delegando a `EvaluationService.getCourseLessonTopics`/`getMyLessonRatings`/`submitLessonRatings`, que não são de outra forma expostos pelo próprio controller do submódulo Evaluations), uma visão self-service da carteira BitCode e um endpoint de transação, uma busca entre entidades por cursos/trilhas/exames/turmas/instrutores, e um endpoint de heartbeat de tempo assistido que enfileira jobs assíncronos (ip/user-agent/posição/sessão) consumidos pelo `LessonHeartbeatHandler` para alimentar analytics de engajamento e o dashboard de desempenho. Dois endpoints (submissão de avaliação de aula e registro de atividade de sequência) aceitam formatos de body inline sem nenhum DTO com class-validator por trás.

Endpoints HTTP

32 endpoints

Dashboard do aluno (alias de home).

Dashboard de aprendizado do aluno.

Navega pelos cursos publicados.

Query
page, pageSize, search, category, sort

Obtém um curso publicado por slug.

Params
slug (string)

Detalhe da aula.

Params
lessonId (int)

Emite um token assinado para reprodução progressiva de vídeo.

Params
lessonId (int)
Query
quality?

Emite um token assinado para streaming HLS.

Params
lessonId (int)

Faz streaming dos bytes do vídeo progressivo; o token assinado é a única autenticação.

Params
token (string)

Serve o manifesto master HLS.

Params
token (string)

Serve uma playlist de variante HLS.

Params
token (string), variant (string)

Serve um segmento de mídia HLS individual.

Params
token, variant, segment (string)

Emite um token assinado para legendas, se existirem segmentos de transcrição.

Params
lessonId (int)

Tópicos de nota de avaliação configurados para a aula.

Params
lessonId (int)

As notas existentes do chamador para a aula.

Params
lessonId (int)

Submete ou atualiza as notas de aula do chamador.

Params
lessonId (int)

Body

FieldTypeRequiredNotes
ratings{ topicId, score, comment? }[]yesPlain inline type, not a validated DTO

Serve um arquivo de legendas VTT por token.

Params
token (string)

Lista as notificações do chamador.

Query
page, pageSize, search, sortField, sortOrder

Contagem de notificações não lidas.

Marca todas as notificações como lidas.

Marca uma notificação como lida.

Params
id (int)

Stream SSE para entrega de notificações em tempo real.

Exclui uma notificação.

Params
id (int)

Exclui todas as notificações do chamador.

Os dados de sequência de aprendizado do chamador.

Query
days?

Registra uma atividade que dispara a sequência.

Body

FieldTypeRequiredNotes
activityTypestringnoPlain inline type, not a validated DTO
sourcestringno
activityDateKeystringno

A própria carteira BitCode do chamador.

Cria uma transação na própria carteira do chamador.

Body

FieldTypeRequiredNotes
type'credit' | 'debit'no
amountnumberyesMin 1
descriptionstringnoMax 2000 chars
sourcestringnoMax 200 chars

KPIs agregados, gráfico de horas de estudo, desempenho por área, distribuição de acurácia e ranking.

Query
period? (default '30d')

Enfileira um job de heartbeat de tempo assistido de aula para rastreamento assíncrono de engajamento.

Body

FieldTypeRequiredNotes
lessonIdnumberyes
positionSecondsnumberyesMin 0
sessionIdstringno
screenWidthnumberno1–10000
screenHeightnumberno1–10000
isTouchbooleanno

Dados combinados de perfil de usuário + person.

Atualiza o nome do chamador e/ou os campos de perfil de person em uma única transação.

Body

FieldTypeRequiredNotes
namestringno
cpfstringno
dobstringno
genderstringno
countrystringno
citystringno
statestringno
neighborhoodstringno
streetstringno
numberstringno
complementstringno
zipstringno
phonestringno
professionstringno

Ferramentas MCP

Nenhuma ferramenta MCP mapeada para este submódulo.