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 logo do curso vinculado (não autenticado, para a marca do portal).
- Params
- courseId (int)
Faz streaming do logo 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
| Field | Type | Required | Notes |
|---|---|---|---|
| name | string | yes | Max 255 chars |
| slug | string | no | — |
| status | 'active' | 'trial' | 'inactive' | 'suspended' | no | — |
| crm_person_id | number | null | no | — |
| portal_enabled | boolean | no | — |
| license_limit | number | null | no | — |
| notes | string | no | — |
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
| Field | Type | Required | Notes |
|---|---|---|---|
| user_id | number | yes | — |
| role | 'hr_manager' | 'enterprise_admin' | 'viewer' | yes | — |
| person_id | number | null | no | — |
| status | 'active' | 'inactive' | 'pending' | no | — |
Atualiza role/status; reaplica o mapeamento de role global se a role mudou.
- Params
- id, userId (int)
Body
| Field | Type | Required | Notes |
|---|---|---|---|
| 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
| Field | Type | Required | Notes |
|---|---|---|---|
| course_id | number | yes | — |
| contracted_at | string | null | no | — |
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
| Field | Type | Required | Notes |
|---|---|---|---|
| course_class_group_id | number | yes | — |
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
| Field | Type | Required | Notes |
|---|---|---|---|
| person_id | number | yes | — |
| 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
| Field | Type | Required | Notes |
|---|---|---|---|
| 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
| Field | Type | Required | Notes |
|---|---|---|---|
| name | string | yes | — |
| string | no | — | |
| department | string | no | — |
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
| Field | Type | Required | Notes |
|---|---|---|---|
| personId | number | yes | — |
Cria um novo aluno e o matricula.
- Params
- id (int)
Body
| Field | Type | Required | Notes |
|---|---|---|---|
| name | string | yes | — |
| string | no | — | |
| department | string | no | — |
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
| Field | Type | Required | Notes |
|---|---|---|---|
| name | string | yes | — |
| string | no | — | |
| department | string | no | — |
| role | string | no | — |
Atualiza a role de um administrador.
- Params
- id (int)
Body
| Field | Type | Required | Notes |
|---|---|---|---|
| role | string | yes | — |
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
| Field | Type | Required | Notes |
|---|---|---|---|
| file | File | yes | multipart/form-data |
Exclui um material.
- Params
- id, materialId (int)
Submete a presença de uma sessão específica.
- Params
- id, sessionId (int)
Body
| Field | Type | Required | Notes |
|---|---|---|---|
| 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.listLista enterprises com paginação e filtros opcionais
lms.enterprise.statsRetorna estatísticas agregadas de enterprises
lms.enterprise.crm-optionsRetorna opções de person do CRM disponíveis para vínculo com enterprise
lms.enterprise.getRetorna uma única enterprise por ID
lms.enterprise.overviewRetorna um resumo de visão geral de uma enterprise (usuários, cursos, turmas, alunos, licenças)
lms.enterprise.createCria uma nova enterprise
lms.enterprise.updateAtualiza uma enterprise existente
lms.enterprise.deleteExclui uma enterprise por ID
lms.enterprise.users.listLista usuários pertencentes a uma enterprise
lms.enterprise.users.addAdiciona um usuário a uma enterprise
lms.enterprise.users.updateAtualiza um usuário dentro de uma enterprise (por exemplo, alterar a role)
lms.enterprise.users.removeRemove um usuário de uma enterprise
lms.enterprise.courses.listLista cursos atribuídos a uma enterprise
lms.enterprise.courses.addAtribui um curso a uma enterprise
lms.enterprise.courses.removeRemove um curso de uma enterprise
lms.enterprise.classes.listLista turmas atribuídas a uma enterprise
lms.enterprise.classes.addAtribui uma turma a uma enterprise
lms.enterprise.classes.removeRemove uma turma de uma enterprise
lms.enterprise.students.listLista alunos pertencentes a uma enterprise
lms.enterprise.students.addAdiciona um aluno a uma enterprise
lms.enterprise.students.updateAtualiza os dados de um aluno dentro de uma enterprise
lms.enterprise.students.removeRemove um aluno de uma enterprise
lms.training-admin.dashboardRetorna o resumo do dashboard do admin de treinamento para o usuário autenticado
lms.training-admin.courses.listLista cursos visíveis ao admin de treinamento autenticado
lms.training-admin.courses.statsRetorna estatísticas de cursos para o admin de treinamento autenticado
lms.training-admin.courses.getRetorna os detalhes de um curso específico para o admin de treinamento
lms.training-admin.class-groups.listLista turmas visíveis ao admin de treinamento autenticado
lms.training-admin.class-groups.getRetorna os detalhes de uma turma específica para o admin de treinamento
lms.training-admin.class-groups.studentsLista alunos de uma turma para o admin de treinamento
lms.training-admin.class-groups.sessionsLista sessões de uma turma (visão do admin de treinamento)
lms.training-admin.class-groups.materialsLista materiais de uma turma (visão do admin de treinamento)
lms.training-admin.class-groups.enrollable-studentsLista alunos que podem ser matriculados em uma turma
lms.training-admin.class-groups.enrollMatricula um aluno existente em uma turma
lms.training-admin.class-groups.enroll-newCria um novo aluno e o matricula em uma turma
lms.training-admin.license-infoRetorna informações de disponibilidade de licenças para o admin de treinamento autenticado
lms.training-admin.licenses.listLista licenças gerenciadas pelo admin de treinamento autenticado
lms.training-admin.licenses.assignAtribui uma licença a um usuário
lms.training-admin.licenses.revokeRevoga uma licença de um usuário
lms.training-admin.students.listLista alunos visíveis ao admin de treinamento autenticado
lms.training-admin.students.statsRetorna estatísticas de alunos para o admin de treinamento autenticado
lms.training-admin.students.getRetorna o perfil e o progresso de um aluno específico
lms.training-admin.admins.listLista administradores da enterprise
lms.training-admin.admins.statsRetorna estatísticas de administradores da enterprise
lms.training-admin.admins.addAdiciona um novo administrador à enterprise
lms.training-admin.admins.update-roleAtualiza a role de um administrador dentro da enterprise
lms.training-admin.admins.removeRemove um administrador da enterprise
lms.training-admin.reportsRetorna os relatórios de admin da enterprise
lms.training-admin.evaluations.statsRetorna estatísticas de avaliações da enterprise
lms.training-admin.evaluations.listLista turmas com dados de avaliação
lms.training-admin.evaluations.getRetorna os detalhes de avaliação de uma turma específica
lms.training-instructor.dashboardRetorna o resumo do dashboard de treinamento para o instrutor autenticado
lms.training-instructor.class-groups.listLista turmas atribuídas ao instrutor autenticado
lms.training-instructor.class-groups.getRetorna os detalhes de uma turma específica para o instrutor autenticado
lms.training-instructor.class-groups.studentsLista alunos de uma turma (visão do instrutor)
lms.training-instructor.class-groups.sessionsLista sessões de uma turma (visão do instrutor)
lms.training-instructor.class-groups.attendance.getRetorna o resumo completo de presença de uma turma
lms.training-instructor.class-groups.attendance.submitSubmete os registros de presença de uma sessão específica
lms.training-instructor.class-groups.materials.listLista materiais de uma turma (visão do instrutor)
lms.training-instructor.class-groups.materials.deleteExclui um material de uma turma
lms.training-instructor.class-groups.evaluationsRetorna os dados de avaliação de uma turma (visão do instrutor)
lms.training-instructor.reportsRetorna os relatórios do instrutor autenticado
lms.training-student.dashboardRetorna o resumo do dashboard de treinamento para o aluno autenticado
lms.training-student.class-groups.listLista turmas nas quais o aluno autenticado está matriculado
lms.training-student.class-groups.getRetorna os detalhes de uma turma específica para o aluno autenticado
lms.training-student.class-groups.sessionsLista sessões de uma turma (visão do aluno)
lms.training-student.class-groups.materialsLista materiais de uma turma (visão do aluno)
lms.training-student.class-groups.my-evaluationsRetorna as avaliações enviadas pelo aluno autenticado para uma turma
lms.training-student.streak.getRetorna os dados de sequência de aprendizado do aluno autenticado
lms.training-student.streak.register-activityRegistra uma atividade de aprendizado para a sequência do aluno autenticado