Logotipo Hedhog

Receba novidades do Hedhog no seu e-mail

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

Submódulo LMS

enterprise

Contas corporativas multi-tenant que licenciam cursos e turmas para uma organização, além de quatro portais de treinamento com escopo por role (admin, instrutor, viewer, aluno) para a própria equipe dessa organização.

Caminho de origem: libraries/lms/src/enterprise

Arquivo do módulo: enterprise.module.ts, enterprise/training/enterprise-training.module.ts

Introdução

O submódulo Enterprise transforma o LMS em um produto B2B: uma enterprise é uma organização licenciada (opcionalmente vinculada a uma person/empresa do CRM) que recebe sua própria fatia de cursos, turmas, usuários e alunos, limitada por um limite de licenças. O `EnterpriseController` é a superfície de admin da plataforma para gerenciar essas contas — criar enterprises, vincular/desvincular cursos e turmas a elas, adicionar usuários corporativos com uma role (hr_manager, enterprise_admin, viewer) e gerenciar a lista de alunos corporativos. Adicionar um usuário concede automaticamente a role global correspondente da plataforma (`lms-enterprise-admin` para hr_manager/enterprise_admin) mais `lms-training-access`; remover o último vínculo corporativo de um usuário revoga esse acesso novamente. Vincular uma turma a uma enterprise faz o backfill de quaisquer alunos já matriculados em `enterprise_student` e registra um evento de licença "assigned", mantendo o consumo de licenças preciso mesmo quando a matrícula aconteceu antes de o vínculo corporativo existir. Três endpoints públicos e não autenticados fazem streaming de imagens de logo e banner de curso/turma para uso em cabeçalhos de portal com marca corporativa.

Os outros quatro controllers sob `enterprise/training/` são os portais que os membros corporativos de fato usam no dia a dia, todos reutilizando os dados do submódulo Enterprise em vez de duplicá-los. O `TrainingAdminController` (restrito por role, `/lms/enterprise/training/admin`) é o mais completo: dashboards, navegação de cursos/turmas, uma superfície de gerenciamento de licenças (atribuir/revogar, listar com filtros de departamento/status), gerenciamento de alunos e usuários administradores com escopo na enterprise, e endpoints de relatórios com nomes em português (`relatorios`, `avaliacoes`) para relatórios e avaliações. O `TrainingInstructorController` dá a um instrutor vinculado à enterprise seu próprio dashboard, suas turmas atribuídas, gerenciamento de presença e materiais (incluindo upload de arquivo) e relatórios. O `TrainingViewerController` é somente leitura e, notavelmente, reutiliza o `TrainingAdminService` diretamente, em vez de ter seu próprio serviço — não há lógica de negócio dedicada de viewer, apenas uma superfície de controller somente leitura mais restrita sobre os mesmos dados. O `TrainingStudentController` é o portal voltado ao membro corporativo, decorado com `@NoRole()` (qualquer usuário autenticado, e não uma role específica) em vez de `@Role()` como os outros três, refletindo que qualquer usuário da plataforma pode ser um aluno corporativo sem precisar de uma concessão de role no nível da plataforma.

Um ponto que vale destacar para consumidores da API: a maioria dos endpoints de admin/instrutor aceita um parâmetro de query opcional `enterpriseId` para restringir a visão de um admin multi-enterprise, mas os controllers de viewer e student em geral o omitem (contando com o escopo implícito a partir do próprio vínculo corporativo do usuário autenticado) — exceto o endpoint de class-groups do `TrainingViewerController`, que inconsistentemente ainda o aceita. Vários endpoints de escrita de admin/instrutor (atribuir licença, adicionar admin, submeter presença) recebem formatos de body inline em vez de DTOs, portanto não têm validação em tempo de execução com class-validator.

Endpoints HTTP

84 endpoints

Faz streaming da imagem de banner do curso vinculado a uma turma.

Params
classId (int)

Lista paginada de enterprises com CRM/avatar e contagens de recursos vinculados.

Query
page, pageSize, search, status, crmPersonId

Cria uma enterprise; 409 em caso de slug duplicado.

Body

FieldTypeRequiredNotes
namestringyesMax 255 chars
slugstringno
status'active' | 'trial' | 'inactive' | 'suspended'no
crm_person_idnumber | nullno
portal_enabledbooleanno
license_limitnumber | nullno
notesstringno

Contagens agregadas: total, ativas, trial, com portal habilitado.

Persons distintas do CRM vinculadas a qualquer enterprise, para a UI do seletor.

Perfis de portal corporativo disponíveis para o usuário atual (ativa automaticamente vínculos pendentes); vazio se não autenticado.

KPIs, uso de licenças, linha do tempo de licenças de 12 meses e feed de atividades recentes.

Params
id (int)

Enterprise única com detalhes de CRM/empresa e contagens de detalhamento por role.

Params
id (int)

Atualiza os campos da enterprise.

Params
id (int)

Exclui a enterprise.

Params
id (int)

Usuários corporativos paginados com e-mail/último login.

Params
id (int)
Query
page, pageSize, search, status, role

Adiciona um usuário à enterprise; concede automaticamente a role global correspondente mais lms-training-access.

Params
id (int)

Body

FieldTypeRequiredNotes
user_idnumberyes
role'hr_manager' | 'enterprise_admin' | 'viewer'yes
person_idnumber | nullno
status'active' | 'inactive' | 'pending'no

Atualiza role/status; reaplica o mapeamento de role global se a role mudou.

Params
id, userId (int)

Body

FieldTypeRequiredNotes
role'hr_manager' | 'enterprise_admin' | 'viewer'no
status'active' | 'inactive' | 'pending'no

Remove o vínculo; revoga lms-training-access se nenhum outro vínculo corporativo permanecer.

Params
id, userId (int)

Cursos vinculados à enterprise.

Params
id (int)
Query
page, pageSize, search, status

Vincula um curso à enterprise; 409 se já vinculado.

Params
id (int)

Body

FieldTypeRequiredNotes
course_idnumberyes
contracted_atstring | nullno

Desvincula um curso.

Params
id, courseId (int)

Turmas vinculadas à enterprise.

Params
id (int)
Query
page, pageSize, search, status

Vincula uma turma; faz backfill de alunos já matriculados em enterprise_student e registra um evento de licença.

Params
id (int)

Body

FieldTypeRequiredNotes
course_class_group_idnumberyes

Desvincula uma turma.

Params
id, classGroupId (int)

Alunos corporativos com contato de e-mail primário.

Params
id (int)
Query
page, pageSize, search, status

Adiciona um aluno; registra um evento de licença "assigned".

Params
id (int)

Body

FieldTypeRequiredNotes
person_idnumberyes
status'active' | 'inactive' | 'pending'no

Atualiza o status; registra um evento de licença "status_changed" se houve mudança.

Params
id, personId (int)

Body

FieldTypeRequiredNotes
status'active' | 'inactive' | 'pending'no

Remove um aluno; registra um evento de licença "revoked".

Params
id, personId (int)

Resumo do dashboard do admin de treinamento.

Query
enterpriseId?

Agregados de estatísticas de conclusão de cursos.

Query
enterpriseId?

Lista paginada de cursos.

Query
enterpriseId?, page, pageSize, search, level, category

Detalhe do curso (visão de admin).

Params
courseId (int)
Query
enterpriseId?

Lista paginada de turmas.

Query
enterpriseId?, page, pageSize, search, status, deliveryMode, instructorId?

Detalhe da turma.

Params
id (int)

Alunos de uma turma.

Params
id (int)
Query
page, pageSize, search, status

Sessões de uma turma.

Params
id (int)

Materiais de uma turma.

Params
id (int)

Disponibilidade de licenças para a(s) enterprise(s) do admin.

Lista paginada de licenças (alunos).

Query
page, pageSize, search, status, department

Atribui uma licença — cria/vincula um registro de aluno.

Body

FieldTypeRequiredNotes
namestringyes
emailstringno
departmentstringno

Revoga uma licença de uma pessoa.

Params
personId (int)

Alunos elegíveis para se matricular em uma turma.

Params
id (int)
Query
search?

Matricula um aluno existente.

Params
id (int)

Body

FieldTypeRequiredNotes
personIdnumberyes

Cria um novo aluno e o matricula.

Params
id (int)

Body

FieldTypeRequiredNotes
namestringyes
emailstringno
departmentstringno

Estatísticas de alunos.

Query
enterpriseId?

Lista paginada de alunos.

Query
enterpriseId?, page, pageSize, search, status

Detalhe de perfil/progresso do aluno.

Params
personId (int)
Query
enterpriseId?

Estatísticas de usuários administradores.

Query
enterpriseId?

Lista paginada de administradores.

Query
enterpriseId?, page, pageSize, search, role

Adiciona um usuário administrador à enterprise.

Body

FieldTypeRequiredNotes
namestringyes
emailstringno
departmentstringno
rolestringno

Atualiza a role de um administrador.

Params
id (int)

Body

FieldTypeRequiredNotes
rolestringyes

Remove um administrador.

Params
id (int)

Relatórios do admin de treinamento.

Query
enterpriseId?, dateFrom?, dateTo?

Estatísticas de avaliações.

Query
enterpriseId?

Lista paginada de turmas com dados de avaliação.

Query
enterpriseId?, page, pageSize, search

Detalhe da avaliação de uma turma.

Params
classGroupId (int)
Query
enterpriseId?

Resumo do dashboard do instrutor.

Query
enterpriseId?

As turmas atribuídas ao instrutor.

Query
enterpriseId?, search, status, deliveryMode

Relatórios do instrutor.

Query
enterpriseId?, dateFrom?, dateTo?

Dados de avaliação de uma turma.

Params
id (int)

Detalhe da turma.

Params
id (int)

Alunos da turma.

Params
id (int)
Query
page, pageSize, search, status

Lista de sessões.

Params
id (int)

Resumo completo de presença da turma.

Params
id (int)

Lista de materiais.

Params
id (int)

URL de download de um material.

Params
id, materialId (int)

Faz upload de um novo arquivo de material para a turma.

Params
id (int)

Body

FieldTypeRequiredNotes
fileFileyesmultipart/form-data

Exclui um material.

Params
id, materialId (int)

Submete a presença de uma sessão específica.

Params
id, sessionId (int)

Body

FieldTypeRequiredNotes
records{ studentId: number; present: boolean }[]yes

Dashboard do viewer (delega ao serviço de admin, somente leitura).

Estatísticas de cursos.

Lista de cursos.

Query
page, pageSize, search, level, category

Detalhe do curso.

Params
courseId (int)

Lista de turmas.

Query
enterpriseId?, search, status, deliveryMode

Detalhe da turma.

Params
id (int)

Alunos.

Params
id (int)
Query
page, pageSize, search, status

Sessões.

Params
id (int)

Materiais.

Params
id (int)

Estatísticas de alunos.

Lista paginada de alunos.

Query
page, pageSize, search, status

Detalhe do aluno.

Params
personId (int)

Turmas em que o aluno está matriculado.

Query
enterpriseId?, search, status, deliveryMode

Detalhe da turma.

Params
id (int)

Sessões.

Params
id (int)

Materiais disponíveis para o aluno.

Params
id (int)

Os formulários de avaliação pendentes/enviados do aluno para esta turma.

Params
id (int)

Ferramentas MCP

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

  • lms.enterprise.list

    Lista enterprises com paginação e filtros opcionais

  • lms.enterprise.stats

    Retorna estatísticas agregadas de enterprises

  • lms.enterprise.crm-options

    Retorna opções de person do CRM disponíveis para vínculo com enterprise

  • lms.enterprise.get

    Retorna uma única enterprise por ID

  • lms.enterprise.overview

    Retorna um resumo de visão geral de uma enterprise (usuários, cursos, turmas, alunos, licenças)

  • lms.enterprise.create

    Cria uma nova enterprise

  • lms.enterprise.update

    Atualiza uma enterprise existente

  • lms.enterprise.delete

    Exclui uma enterprise por ID

  • lms.enterprise.users.list

    Lista usuários pertencentes a uma enterprise

  • lms.enterprise.users.add

    Adiciona um usuário a uma enterprise

  • lms.enterprise.users.update

    Atualiza um usuário dentro de uma enterprise (por exemplo, alterar a role)

  • lms.enterprise.users.remove

    Remove um usuário de uma enterprise

  • lms.enterprise.courses.list

    Lista cursos atribuídos a uma enterprise

  • lms.enterprise.courses.add

    Atribui um curso a uma enterprise

  • lms.enterprise.courses.remove

    Remove um curso de uma enterprise

  • lms.enterprise.classes.list

    Lista turmas atribuídas a uma enterprise

  • lms.enterprise.classes.add

    Atribui uma turma a uma enterprise

  • lms.enterprise.classes.remove

    Remove uma turma de uma enterprise

  • lms.enterprise.students.list

    Lista alunos pertencentes a uma enterprise

  • lms.enterprise.students.add

    Adiciona um aluno a uma enterprise

  • lms.enterprise.students.update

    Atualiza os dados de um aluno dentro de uma enterprise

  • lms.enterprise.students.remove

    Remove um aluno de uma enterprise

  • lms.training-admin.dashboard

    Retorna o resumo do dashboard do admin de treinamento para o usuário autenticado

  • lms.training-admin.courses.list

    Lista cursos visíveis ao admin de treinamento autenticado

  • lms.training-admin.courses.stats

    Retorna estatísticas de cursos para o admin de treinamento autenticado

  • lms.training-admin.courses.get

    Retorna os detalhes de um curso específico para o admin de treinamento

  • lms.training-admin.class-groups.list

    Lista turmas visíveis ao admin de treinamento autenticado

  • lms.training-admin.class-groups.get

    Retorna os detalhes de uma turma específica para o admin de treinamento

  • lms.training-admin.class-groups.students

    Lista alunos de uma turma para o admin de treinamento

  • lms.training-admin.class-groups.sessions

    Lista sessões de uma turma (visão do admin de treinamento)

  • lms.training-admin.class-groups.materials

    Lista materiais de uma turma (visão do admin de treinamento)

  • lms.training-admin.class-groups.enrollable-students

    Lista alunos que podem ser matriculados em uma turma

  • lms.training-admin.class-groups.enroll

    Matricula um aluno existente em uma turma

  • lms.training-admin.class-groups.enroll-new

    Cria um novo aluno e o matricula em uma turma

  • lms.training-admin.license-info

    Retorna informações de disponibilidade de licenças para o admin de treinamento autenticado

  • lms.training-admin.licenses.list

    Lista licenças gerenciadas pelo admin de treinamento autenticado

  • lms.training-admin.licenses.assign

    Atribui uma licença a um usuário

  • lms.training-admin.licenses.revoke

    Revoga uma licença de um usuário

  • lms.training-admin.students.list

    Lista alunos visíveis ao admin de treinamento autenticado

  • lms.training-admin.students.stats

    Retorna estatísticas de alunos para o admin de treinamento autenticado

  • lms.training-admin.students.get

    Retorna o perfil e o progresso de um aluno específico

  • lms.training-admin.admins.list

    Lista administradores da enterprise

  • lms.training-admin.admins.stats

    Retorna estatísticas de administradores da enterprise

  • lms.training-admin.admins.add

    Adiciona um novo administrador à enterprise

  • lms.training-admin.admins.update-role

    Atualiza a role de um administrador dentro da enterprise

  • lms.training-admin.admins.remove

    Remove um administrador da enterprise

  • lms.training-admin.reports

    Retorna os relatórios de admin da enterprise

  • lms.training-admin.evaluations.stats

    Retorna estatísticas de avaliações da enterprise

  • lms.training-admin.evaluations.list

    Lista turmas com dados de avaliação

  • lms.training-admin.evaluations.get

    Retorna os detalhes de avaliação de uma turma específica

  • lms.training-instructor.dashboard

    Retorna o resumo do dashboard de treinamento para o instrutor autenticado

  • lms.training-instructor.class-groups.list

    Lista turmas atribuídas ao instrutor autenticado

  • lms.training-instructor.class-groups.get

    Retorna os detalhes de uma turma específica para o instrutor autenticado

  • lms.training-instructor.class-groups.students

    Lista alunos de uma turma (visão do instrutor)

  • lms.training-instructor.class-groups.sessions

    Lista sessões de uma turma (visão do instrutor)

  • lms.training-instructor.class-groups.attendance.get

    Retorna o resumo completo de presença de uma turma

  • lms.training-instructor.class-groups.attendance.submit

    Submete os registros de presença de uma sessão específica

  • lms.training-instructor.class-groups.materials.list

    Lista materiais de uma turma (visão do instrutor)

  • lms.training-instructor.class-groups.materials.delete

    Exclui um material de uma turma

  • lms.training-instructor.class-groups.evaluations

    Retorna os dados de avaliação de uma turma (visão do instrutor)

  • lms.training-instructor.reports

    Retorna os relatórios do instrutor autenticado

  • lms.training-student.dashboard

    Retorna o resumo do dashboard de treinamento para o aluno autenticado

  • lms.training-student.class-groups.list

    Lista turmas nas quais o aluno autenticado está matriculado

  • lms.training-student.class-groups.get

    Retorna os detalhes de uma turma específica para o aluno autenticado

  • lms.training-student.class-groups.sessions

    Lista sessões de uma turma (visão do aluno)

  • lms.training-student.class-groups.materials

    Lista materiais de uma turma (visão do aluno)

  • lms.training-student.class-groups.my-evaluations

    Retorna as avaliações enviadas pelo aluno autenticado para uma turma

  • lms.training-student.streak.get

    Retorna os dados de sequência de aprendizado do aluno autenticado

  • lms.training-student.streak.register-activity

    Registra uma atividade de aprendizado para a sequência do aluno autenticado