---
title: Portal de conhecimento
slug: portal-de-conhecimento
docTags: 
createdAt: 2026-08-14T12:46:21.108Z
---

O treinamento presencial — curso, turma, instrutor, presença — está na página [Treinamento e desenvolvimento](docId\:l_tQrAZuK18Nvhj7OCUT9). Esta página trata do **conteúdo digital**: o material que a pessoa consome sozinha, na tela.

## Biblioteca de aprendizagem

***

**Menu:** Biblioteca de aprendizagem · **Rota:** /learning-contents

### O que a tela guarda — e o que ela não guarda

A biblioteca guarda o **registro** do material, não o material. É a decisão que define esta parte do produto:

- o **vídeo** continua hospedado onde já está, e aqui fica só o endereço dele;
- o **pacote de e-learning** é importado num formato de mercado, sem editor próprio;
- a **ferramenta de autoria** é de terceiro e abre de dentro do portal.

Construir reprodutor, editor e hospedagem de vídeo seria reconstruir uma indústria inteira. O que a organização ganha aqui é parar de distribuir material por link solto em e-mail.

### Cadastrar um conteúdo

1. Abra **Biblioteca de aprendizagem** no menu.
2. Clique em **Novo conteúdo** e dê um **nome**.
3. Escolha o **tipo**. **O formulário muda com ele** — cada tipo pede coisas diferentes\:TipoO que a tela pede**Arquivo nosso**o identificador do anexo enviado**Pacote de e-learning**o anexo do pacote e a **edição** (SCORM 2004 4ª edição ou SCORM 1.2)**Ferramenta externa**endereço, identificador de cliente e identificador de implantação**Questionário**o **banco de questões** que ele apresenta**Vídeo hospedado fora**apenas o endereço
4. Escolha o **curso**, ou deixe em **Biblioteca compartilhada** (veja a armadilha abaixo).
5. Declare o **idioma do conteúdo** e, se souber, a **duração** estimada em minutos.
6. Salve.

### Armadilhas

**O campo de curso vazio não é esquecimento.** Um material pertence a **no máximo um curso**. Material que serve a vários — o vídeo de integração, por exemplo — é guardado **sem curso**, na biblioteca compartilhada, e alcançado pelas trilhas. Se você o amarrar a um curso, os outros cursos precisarão de uma cópia, e as cópias vão divergir.

**A ferramenta externa exige os três campos.** Endereço, identificador de cliente e identificador de implantação. Faltando qualquer um, quem recusa o acesso é a **ferramenta do outro lado**, longe desta tela, com uma mensagem que ninguém aqui consegue interpretar. Por isso o sistema recusa antes, nomeando o campo que falta.

**Trocar o tipo de um conteúdo já cadastrado apaga o que o novo tipo não usa.** Um material trocado de ferramenta externa para vídeo perde o endereço da ferramenta — e passa a parecer correto sem abrir. A tela avisa antes de salvar.

**O questionário não tem banco próprio.** Ele aponta para o **mesmo** banco de questões que o teste de conhecimento de turma usa (página [Treinamento e desenvolvimento](docId\:l_tQrAZuK18Nvhj7OCUT9)). Questionário de trilha e teste de turma são o mesmo artefato em contextos diferentes — um segundo banco seria um segundo lugar para a mesma pergunta divergir da própria resposta.

**O arquivo de abertura do pacote não é digitado.** Ele é lido do manifesto do pacote na importação, e por isso aparece bloqueado.

### Aposentar, não apagar

Não existe excluir. Um material é **aposentado**: sai das opções de montagem de trilha e continua nomeável por tudo que já o usou. Apagar a linha deixaria o treinamento concluído de alguém apontando para um material que ninguém consegue nomear.

### Histórico

Cada conteúdo tem **Histórico deste conteúdo**, com o antes e o depois de cada alteração. É onde se responde *quem trocou o endereço do vídeo de integração, e quando* — pergunta que aparece quando o material é de consumo obrigatório.

### Quem pode o quê

Ler a biblioteca acompanha a leitura do cadastro geral, porque quem planeja o desenvolvimento da equipe precisa consultar o que existe antes de pedir. **Cadastrar e alterar** exige a mesma autoridade do catálogo de treinamentos: dizer de que material a organização ensina é o mesmo ato editorial que dizer o que ela ensina e quem entrega.

## Como se entra no portal de conhecimento

***

**Não existe login do portal de conhecimento.** Isso é a resposta, não uma pendência.

Quem entra no ERP entra pelo **provedor de identidade da organização** — o mesmo diretório que governa os outros sistemas. Chegando aqui, a pessoa já está identificada, e todas as telas de aprendizagem (biblioteca, trilhas, matrículas, certificados, evidência, pontuação, assistente) usam essa mesma identidade.

**O que a organização ganha com isso:**

- **uma senha a menos por pessoa.** Um LMS com senha própria significa uma senha esquecida a mais por colaborador, e um lugar a mais de onde ela vaza;
- **desligou no diretório, desligou aqui.** Não existe "conta de treinamento" sobrevivendo ao desligamento, porque não existe conta separada para sobreviver;
- **auditoria com um nome só.** O ator na trilha de auditoria é a mesma pessoa do diretório.

### O que ainda é decidido dentro do ERP

O diretório diz **quem é** a pessoa. Ele não diz **o que ela pode fazer** — essa parte é do ERP, e fica em **Alçada** (/authorization-rules), regra por operação e por cargo. É por isso que dois colaboradores autenticados do mesmo jeito veem coisas diferentes: quem monta a trilha precisa da autoridade do catálogo de treinamentos; quem só faz o treinamento não precisa de autoridade nenhuma — basta estar matriculado.

### Armadilhas

**"Sair" encerra a sua sessão no ERP, não no provedor.** O botão invalida o seu acesso aqui e **inutiliza o token**, mesmo antes de ele vencer sozinho — largar só o cookie deixaria uma chave ainda válida circulando. Encerrar a sessão **no provedor de identidade** é feito pelo portal por onde você entrou, que é quem é dono do login. Em máquina compartilhada, saia também por lá.

**Sem autoridade não é o mesmo que sem login.** Uma tela que responde *"Você não tem autorização para esta operação"* está reconhecendo você — o que falta é regra de alçada, e quem resolve é o administrador em **Alçada**, não o diretório.

## Validar um pacote de e-learning

***

**Onde:** dentro do conteúdo, no bloco **Pacote SCORM** — só aparece quando o tipo é **Pacote de e-learning**.

O pacote é um .zip que a ferramenta de autoria do fornecedor gerou. Antes de ele valer como material de trilha, o sistema o **lê inteiro** e responde se serve.

### Como validar

1. Anexe o .zip ao conteúdo (campo do anexo, no bloco de cima).
2. No bloco **Pacote SCORM**, clique em **Validar pacote**.
3. Se o pacote servir, a tela mostra o **arquivo de abertura** — que nunca é digitado, é lido do manifesto — e **corrige a edição** para a que o pacote declara.

**A edição que você escolheu no cadastro é um palpite até aqui.** O cadastro pede a edição porque naquele momento ninguém leu o pacote ainda. A validação lê, e se você tiver escolhido errado ela **troca sem perguntar** — o manifesto é a fonte, não o formulário. Verificado: um pacote cadastrado à mão como *SCORM 1.2* passou a *SCORM 2004 4ª edição* depois de validado.

### Cada recusa diz o que está errado

Isto é o que mais economiza tempo aqui. "Pacote inválido" manda o analista de volta ao fornecedor sem nada nas mãos; cada recusa abaixo é um problema diferente, com um conserto diferente:

| A tela diz                                 | O que aconteceu                                                                | O que fazer                                                           |
| ------------------------------------------ | ------------------------------------------------------------------------------ | --------------------------------------------------------------------- |
| **não é um pacote compactado**             | o arquivo enviado não é um .zip — geralmente um PDF ou o vídeo                 | envie o .zip que a ferramenta de autoria gerou                        |
| **não traz o imsmanifest.xml**             | é um .zip, mas não é um pacote SCORM — é comum alguém compactar a pasta errada | compacte a pasta que **contém** o manifesto, não a pasta acima dela   |
| **não declara nenhum arquivo para abrir**  | o manifesto existe mas não aponta nenhuma tela                                 | o pacote saiu incompleto da autoria; peça outro                       |
| **traz um caminho que sai de dentro dele** | o pacote tenta gravar fora da própria pasta                                    | **não use este pacote** e avise a segurança — veja a armadilha abaixo |

### Armadilhas

**Nada é gravado antes de o pacote passar.** Um pacote inválido que ficasse registrado diria ao analista que o curso está publicado, e quem descobriria o problema seria a pessoa que fosse fazer o treinamento. Por isso o registro do arquivo de abertura só acontece depois da leitura completa.

**O pacote recusado por caminho perigoso é recusado INTEIRO, não limpo.** Um arquivo chamado ../ dentro de um pacote é tentativa, não erro de digitação — o resto daquele pacote não merece confiança. A tela não oferece "importar mesmo assim".

**A prévia mostra o curso rodando, não uma amostra dele.** As imagens, folhas de estilo e scripts que o pacote carrega **viajam dentro da própria página** — inclusive os que ele monta enquanto roda, que é como as ferramentas de autoria (Storyline, Rise, Captivate) geram quase todo endereço. O servidor embute tudo antes de mandar, porque a moldura é isolada e, sozinha, não conseguiria buscar arquivo nenhum.

**E o pacote encontra a API do SCORM.** Isso não é detalhe: um pacote que não acha a API não desenha errado — ele **se recusa a abrir**, e o aluno recebe "LMS not found". Quando o pacote reporta conclusão ou nota, a tela mostra o que ele disse, logo abaixo da moldura.

| Quando                              | O que acontece                                         | O que fazer                                                           |
| ----------------------------------- | ------------------------------------------------------ | --------------------------------------------------------------------- |
| o pacote montado passa de **24 MB** | a prévia é **recusada por inteiro**, com essa mensagem | o pacote continua válido e matriculável — é a prévia que não o mostra |

**A conclusão ainda é registrada por quem administra a trilha.** O pacote informa que terminou e a tela mostra esse relato, mas quem grava o progresso do aluno é a tela de acompanhamento da trilha. Isso é escolha, não esquecimento: a prévia é do catálogo, e ali não existe matrícula de ninguém para gravar contra. Quem está na trilha marca o passo como concluído do mesmo jeito que marca um vídeo — e **o progresso vale igual**; só não é automático.

### Por que o conteúdo abre numa moldura isolada

O pacote é HTML e JavaScript que **outra empresa escreveu**, aberto na tela de alguém que está logado no ERP. A moldura onde ele roda é isolada de propósito: o conteúdo **não consegue** ler a sua sessão, os seus dados nem esta página, e qualquer chamada que ele faça ao sistema chega sem identidade nenhuma.

Isso é o que permite aceitar material de fornecedor sem que aceitar material de fornecedor signifique dar a ele as chaves do sistema.

## Abrir uma ferramenta de fora (LTI 1.3)

***

**Menu:** Ferramentas externas · **Rota:** /lti-tools

Quando o curso não é um arquivo nosso mas uma **ferramenta de terceiro** — uma ferramenta de autoria, um curso de fornecedor —, o colaborador abre essa ferramenta de dentro do portal e chega lá **já identificado**, sem uma segunda senha.

### Cadastrar a ferramenta

1. Abra **Ferramentas externas** e clique em **Cadastrar ferramenta**.
2. Dê um **nome** e um **identificador de cliente** — este último é o nome pelo qual a ferramenta vai conhecer este ERP. **Ele não muda depois.**
3. Informe os **dois endereços da ferramenta**: onde o acesso começa (*login*) e para onde a resposta volta (*retorno*). Os dois vêm da documentação da ferramenta.
4. Informe também o endereço das **chaves públicas dela**, se souber. Não é usado para abrir o curso; é o que vai permitir ela devolver nota mais adiante.
5. Salve. O sistema gera **um par de chaves só desta ferramenta**.
6. Ligue o conteúdo à ferramenta: em **Biblioteca de aprendizagem**, tipo **Ferramenta externa**, com o mesmo identificador de cliente.

### A metade que acontece do outro lado

**É aqui que a maioria das tentativas para.** Cadastrar só metade não dá erro nenhum nesta tela — o lançamento é que falha, no fornecedor, com uma mensagem que ninguém aqui consegue interpretar.

No bloco **O que configurar na ferramenta** ficam as duas coisas que você precisa **copiar** para a tela da própria ferramenta:

- o **identificador da chave**;
- a **nossa chave pública**.

Só isso permite a ferramenta conferir que o acesso veio mesmo desta organização.

### Armadilhas

**A chave privada não está nesta tela, e não está em nenhuma.** O que aparece é a metade pública. A metade privada é o que prova que somos nós — quem a tivesse poderia se passar por qualquer pessoa desta organização diante de qualquer ferramenta contratada.

**Trocar a chave interrompe todos os acessos àquela ferramenta** até a chave nova ser colada do outro lado. É ato para quando a antiga puder ter sido exposta, nunca rotina — e por isso é botão separado do **Salvar**.

**O endereço de retorno é conferido, não aceito.** Se a ferramenta pedir um endereço diferente do cadastrado, o acesso é **recusado**. Sem essa conferência, bastaria alguém pedir a entrega em outro endereço para receber uma afirmação assinada por nós sobre uma pessoa real.

**Cada acesso vale uma vez e por poucos minutos.** Recarregar a página no meio do caminho ou voltar pelo histórico do navegador produz *"este lançamento já foi usado"* — abra o curso de novo pela trilha. É de propósito: um acesso que pudesse ser repetido seria um jeito de entrar como outra pessoa.

**O que sai desta organização:** um **identificador** da pessoa e o curso que está sendo aberto. **Não** vão o nome, o e-mail, o cargo nem a avaliação de desempenho. Uma ferramenta que cumprimenta pelo nome vai cumprimentar por um código — o preço, dito, de não mandar dado pessoal para fora.

**O conteúdo criado lá não volta sozinho.** Você abre a ferramenta de autoria daqui e cria o material lá; **cadastrar o resultado na biblioteca ainda é passo manual**. O padrão prevê a volta automática (*Deep Linking*) e ela não está implementada.

### Escolher o material dentro da ferramenta

Em vez de criar o material lá e **copiar o endereço à mão** para cá, abra a ferramenta pelo botão **Escolher material na ferramenta**, escolha ou crie o que quiser, e confirme. O que você selecionou volta **cadastrado na biblioteca**, apontando para a ferramenta certa.

**Pré-requisito:** a ferramenta precisa ter o endereço das **chaves públicas dela** preenchido no cadastro. É por ali que o sistema confere que a resposta veio mesmo dela — sem isso, a tela diz exatamente qual campo falta.

### Armadilhas

**A resposta da ferramenta é conferida antes de qualquer coisa ser gravada.** A resposta diz "cadastre este curso, neste endereço". Aceitar sem conferir a assinatura permitiria que qualquer um colocasse um endereço à escolha dele na biblioteca de um órgão público, para ser aberto por todo mundo que é obrigado a treinar. Assinatura que não confere → **nada é cadastrado**, e a tela diz isso.

**Cada escolha vale uma vez e por poucos minutos.** Recarregar a página de retorno ou voltar pelo histórico não cadastra de novo — cadastrar o mesmo material duas vezes é o jeito mais barato de encher a biblioteca de duplicata que ninguém escolheu.

**Voltar sem escolher nada é dito.** A tela avisa que nada foi selecionado, em vez de responder um sucesso silencioso que deixa você procurando o material que nunca chegou.

**Item sem endereço é recusado.** Material que não abre nada é curso quebrado com cara de publicado.

### A nota volta da ferramenta

Quando a pessoa termina o curso **na ferramenta**, a ferramenta avisa o ERP, e o passo da trilha fecha sozinho — sem ninguém marcar à mão.

**Como habilitar:** emita uma **chave de integração** para a ferramenta (em **Administração → Chaves de aplicação**) com a autoridade **Informar resultado de aprendizagem**, e configure essa chave do lado dela. O endereço para onde ela envia a nota **já vai dentro do próprio acesso** — a ferramenta o encontra sozinha, você não precisa copiar.

### Armadilhas

**Só a autoridade de informar resultado, nunca a do catálogo.** A chave que a ferramenta recebe autoriza **informar nota** e nada mais. Se ela recebesse a autoridade do catálogo, um servidor de terceiro poderia reescrever o que a organização ensina.

**Nota abaixo da média deixa o passo ABERTO.** Ela é registrada como reprovação — com nota e data — e a pessoa pode tentar de novo. Nada é apagado: apagar a tentativa faria a trilha mentir sobre o que aconteceu.

**Nota fora da escala é recusada, não aparada.** Ferramenta que devolve 120 de 100 tem defeito, e aparar para 100 esconderia esse defeito dentro do histórico de treinamento de alguém, onde ele passa a parecer fato.

**A escala da ferramenta não importa.** 8 de 10 e 80 de 100 valem a mesma coisa aqui — a conversão é feita no ERP, então duas ferramentas com escalas diferentes não produzem resultados diferentes para o mesmo desempenho.

**Curso aberto fora de uma trilha não recebe nota de volta**, e isso é de propósito: sem matrícula não há passo para a nota fechar. O acesso simplesmente não leva endereço de retorno — publicar um endereço sem destino faria a ferramenta reportar com sucesso para lugar nenhum.

**Isto não é o padrão AGS completo.** O endereço vai no formato do padrão, mas a autenticação é a chave de integração deste ERP, não o fluxo OAuth2 que o padrão descreve. Na prática: funciona com a ferramenta que a organização **configura**, e uma ferramenta de prateleira não vai encontrar sozinha o caminho de autenticação. A troca para o padrão completo, se um dia for contratada uma ferramenta que exija, é mudança de autenticação — não redesenho.

## Trilhas de aprendizagem

***

**Menu:** Trilhas de aprendizagem · **Rota:** /learning-tracks

Uma trilha é uma sequência de material com um **alcance**: quem tem de fazer, e em que ordem.

### Escolha o alcance antes de tudo

| Alcança por            | Quem entra                                                         |
| ---------------------- | ------------------------------------------------------------------ |
| **Uma competência**    | quem ocupa **qualquer** posto cujo perfil exija aquela competência |
| **Um posto**           | quem ocupa aquele posto                                            |
| **Uma unidade**        | quem está lotado nela                                              |
| **Todos em atividade** | toda a organização — a trilha de integração obrigatória            |

**Prefira competência, e o motivo não é arrumação.** Posto e cargo são a mesma coisa neste sistema. Uma trilha digitada por posto tem de ser digitada uma vez por cadeira, e na primeira atualização algumas cópias são alteradas e outras não — ninguém percebe, porque **trilha desatualizada é idêntica a trilha atual**. Dizendo qual competência a trilha desenvolve, são os perfis de posto que decidem quem precisa dela, inclusive postos criados no ano que vem, **sem ninguém editar a trilha**.

### Montar a trilha

1. Abra **Trilhas de aprendizagem**, clique em **Nova trilha** e informe código e nome.
2. Escolha **alcança por** e, conforme o caso, o alvo.
3. Salve e abra a trilha.
4. Em **Passos, em ordem**, acrescente cada passo: material digital da biblioteca **ou** turma presencial do catálogo de treinamentos. Os dois convivem na mesma sequência — uma trilha de integração costuma ter os dois.
5. Marque se o passo é **obrigatório** e, se for o caso, de qual passo ele **vem depois**.
6. Use as setas para reordenar. A numeração é reescrita pelo sistema e nunca fica com buraco.

### Ler o cartão "Quem isto alcança"

Ele mostra três números juntos, de propósito:

- **Alcança hoje** — quantas pessoas a trilha atinge agora;
- **Passos** — quantos passos ela tem;
- **Medido em** — o dia da medição.

**Alcance zero não é necessariamente erro.** É legítimo quando nenhum posto ocupado exige aquela competência ainda — e é também exatamente o que parece um alvo apontando para a coisa errada. Confira o alvo antes de concluir. **Trilha sem passos alcança gente e não ensina nada**, por isso os dois números ficam lado a lado. E o **dia** importa: o alcance muda a cada transferência e a cada perfil de posto editado, então um número anotado semana passada não se compara com o de hoje sem saber a data.

### Armadilhas

**Pré-requisito circular é recusado na hora de salvar.** Se A espera por B, B por C e C por A, ninguém consegue começar a trilha — e descobrir isso quando um colaborador trava significaria que a trilha já foi publicada para todo mundo que ela alcança. A recusa nomeia o passo que fecha o ciclo.

**Um passo só pode esperar por outro passo da mesma trilha.** Apontar para outra trilha deixaria o bloqueio invisível nesta tela.

**Não se remove um passo do qual outro depende.** Apagar a dependência em silêncio descartaria uma regra que alguém escreveu; mantê-la deixaria um passo esperando algo que não existe mais. Ajuste o dependente primeiro.

### Histórico

**Histórico desta trilha** guarda o antes e o depois de cada alteração — inclusive de alargamentos de alcance, que é o que um auditor pergunta depois que alguém deixou de ser treinado.

## Matrícula automática

***

**Menu:** Matrícula automática · **Rota:** /learning-enrollments

Uma **regra permanente** matricula quem a **trilha dela** alcança, e reaplica **toda noite**. Assim, quem é admitido ou transferido no mês que vem entra sozinho, sem ninguém lembrar de fazer isso.

### A regra não escolhe o público

Quem decide para quem a trilha é já é a própria trilha. A regra só acrescenta duas coisas que o alcance não sabe dizer: **quando vence** e **se está ligada**. Uma segunda resposta sobre público seria mais uma coisa para discordar — e a discordância não apareceria em lugar nenhum.

### Criar e rodar

1. Abra **Matrícula automática** e clique em **Nova regra**.
2. Escolha a **trilha** e, se houver, o **prazo em dias** a partir da matrícula.
3. Salve. A regra passa a rodar toda noite.
4. **Rodar agora** aplica na hora, e devolve o relatório.

**Rodar duas vezes é seguro, e dá para ver.** A segunda execução relata as mesmas pessoas como *já matriculadas* e não cria nada. É essa propriedade que permite a varredura noturna existir.

### Ler o relatório da execução — o quarto número é o que importa

O aviso traz quatro números: **alcançados**, **matriculados**, **já matriculados** e **não avisados**.

**Avisar alguém exige que a pessoa tenha login**, e esse vínculo é opcional neste produto. Então uma execução pode matricular quarenta pessoas e **não conseguir avisar a maioria**. Elas passam a carregar um prazo que ninguém comunicou — e é por isso que o número aparece no mesmo aviso do sucesso, e não num log. **É sobre esse número que se age**: ou se vincula o login das pessoas, ou se avisa por fora.

### Armadilhas

**Prazo vazio é permitido e tem custo.** A regra matricula perfeitamente e **nunca lembra ninguém**. Certo para material opcional; silencioso para material obrigatório.

**Não se cria regra para trilha sem passos.** Prazo sobre material que não existe é obrigação que ninguém consegue cumprir — o sistema recusa nomeando a trilha.

**Uma regra por trilha.** Duas dariam dois prazos e dois lembretes para a mesma obrigação.

### Lembretes

Quem tem prazo se aproximando recebe aviso; quem passou do prazo recebe aviso de atraso e a matrícula passa a **Vencida** — reportada, nunca apagada, porque *quem era obrigado e não fez* é o que uma auditoria pergunta.

### Histórico

Na tela da **trilha** há dois históricos ligados a isto: **da regra de matrícula** (quem criou, quem pausou) e **das execuções** (o que cada rodada fez, incluindo quantos não puderam ser avisados). Ficam ali porque é a trilha que se abre para perguntar isso.

## Progresso de quem está matriculado

***

**Menu:** Trilhas de aprendizagem · **Rota:** /learning-tracks/\{id} — bloco **Progresso de quem está matriculado**

Fica na tela da **trilha**, logo abaixo dos passos, porque é a mesma sequência lida do outro lado: os passos dizem o que a trilha exige, e este bloco diz quem já cumpriu.

### Registrar

1. Abra a trilha e desça até **Progresso de quem está matriculado**.
2. Escolha a **pessoa matriculada**. A lista mostra **todos os passos da trilha**, não só os que ela tocou — um passo nunca iniciado aparece como **Não iniciado**, e é justamente esse que responde *o que falta*.
3. Em cada passo, use **Em andamento**, **Concluir** ou **Abaixo do mínimo**.

### A conclusão é apurada, nunca digitada

Não existe um campo "concluída" na matrícula. **A trilha está concluída quando todo passo obrigatório está concluído** — apurado dos passos a cada registro.

Isso tem uma consequência que surpreende e é correta: **acrescentar um passo obrigatório à trilha devolve para "em andamento" quem já a tinha concluído**. É reportado, não escondido. O certificado que a pessoa já tem **não é cassado** — ele registrou algo que era verdade quando foi emitido.

O contrário disso — um status digitado — continuaria dizendo "concluída" enquanto a trilha mudava embaixo, e a pessoa apareceria certificada num curso que não terminou, com a tela concordando consigo mesma.

### Armadilhas

**Passo opcional não segura a conclusão.** Ele conta para a pessoa e não conta para a obrigação.

**Trilha sem passo obrigatório nunca conclui.** Certificar alguém por uma trilha que não exige nada seria um documento que não atesta nada, então ela fica em andamento — não conclui sozinha.

**O pré-requisito barra de verdade.** Registrar um passo cujo pré-requisito não está concluído é recusado, e a recusa **diz a posição do passo que falta** — que é o número que a pessoa vê na tela dela.

**Matrícula cancelada não recebe progresso.**

## Certificados

***

**Menu:** Certificados · **Rota:** /certificates

O certificado sai de **concluir uma trilha** — todos os passos obrigatórios. **Não existe botão de emitir nesta tela**, de propósito: um botão aqui deixaria certificar alguém que não fez o trabalho, e o histórico mostraria o certificado sem conclusão nenhuma atrás dele.

### Conferir um certificado

1. Abra **Certificados**.
2. Digite o **número de série** impresso no documento e clique em **Conferir**.

**"Cassado" e "não encontrado" são respostas opostas, e a tela as separa.** *Cassado* quer dizer que o certificado foi real e foi retirado — numa data, por um motivo, ambos exibidos. *Não encontrado* quer dizer que aquele número de série **nunca existiu**, que é a cara de uma falsificação. Ler um como o outro é o erro caro desta tela.

O número de série não tem ano nem código de curso, e não usa **I**, **O**, **0** nem **1** — ele é lido em voz alta de um papel e digitado por outra pessoa.

### Validade — hoje sempre vazia, e a tela diz por quê

Nenhum certificado carrega validade hoje. A validade viria da **certificação que a trilha concede**, e a trilha ainda não registra qual é. Em vez de deixar em branco (que se lê como "não vence"), a tela escreve o motivo.

**Inventar uma validade seria pior que não ter nenhuma:** alguém é afastado de uma tarefa com base numa data de expiração.

### Cassar

Na tela do certificado, **Cassar** exige **motivo**. Ele fica no documento: quem conferir o número de série depois é avisado de que foi cassado, e a primeira coisa que pergunta é por quê.

**Cassado, nunca apagado.** A linha continua respondendo "existiu e foi cassado nesta data". Apagar responderia "nunca existiu" — que é falso e, pior, não confere com o papel que a pessoa tem na mão.

### Modelos de certificado

O modelo guarda **logotipo**, **assinatura** e **quem assina**. **Exatamente um é o padrão por vez** — o sistema rebaixa o anterior quando você promove outro. Dois padrões fariam a identidade visual do certificado depender de qual linha a consulta leu primeiro, e ninguém descobriria até duas pessoas imprimirem o mesmo curso com papéis diferentes.

O primeiro modelo salvo **vira padrão sozinho**, para que nenhum certificado saia sem identidade visual nenhuma.

**Diagramar o certificado visualmente ainda não existe.** Todo modelo imprime no mesmo layout — criar um segundo troca a assinatura, não o desenho.

### Histórico

Na tela do certificado há o histórico **do documento** — emitido quando, cassado por quem. Ele é a evidência por trás do número de série: quem apresenta o papel está pedindo para ser acreditado, e é esse histórico que responde a um questionamento. Na tela de certificados, clicar no nome de um **modelo** abre o histórico dele — quem trocou o signatário é uma pergunta sobre documentos que já estão na mão das pessoas.

## Evidência de treinamento

***

**Menu:** Evidência de treinamento · **Rota:** /learning-evidence

Responde a uma pergunta só, e é a que uma auditoria faz: **o que foi estudado neste período?**

### A tela sempre diz quantos registros examinou

Escolha **De** e **Até** e clique em **Examinar**. O aviso no topo do resultado traz o número de registros encontrados — **inclusive quando é zero**.

Isso não é enfeite. *"Nada foi estudado"* e *"a consulta não rodou"* são idênticos numa tabela vazia, e só um dos dois é um achado. Por isso o zero aqui vem escrito por extenso: *examinei o período inteiro e não encontrei nenhum registro*.

### O que a tela mostra

- **Pessoas que estudaram** — quantas pessoas distintas fizeram alguma coisa no período.
- **Horas registradas** — ver a armadilha abaixo.
- **Trilhas concluídas** — quantas conclusões de trilha aconteceram.
- **Por o que aconteceu** e **por de onde veio** — a contagem por tipo de evento e por origem (registrado aqui, pacote SCORM, ferramenta externa, turma presencial).
- **Trilhas concluídas no período**, com quantas pessoas concluíram cada uma.

### Os painéis NÃO ficam aqui

Taxa de conclusão, engajamento e horas são **métricas do catálogo de indicadores da organização**. Crie um indicador sobre elas e ganhe **meta, histórico e farol**, ao lado de todos os outros indicadores do órgão — inclusive compondo **fórmula própria** com métricas de outras áreas, que é como se monta um KPI personalizado.

Um segundo painel nesta tela seria um segundo lugar para o mesmo número discordar de si mesmo.

### Armadilhas

**Horas são o que foi REGISTRADO, não o tempo gasto.** Um passo cujo reprodutor não informou duração contribui com **nada** em vez de uma estimativa — porque uma hora chutada fica indistinguível de uma hora medida assim que entra na coluna, e este número acaba numa defesa de orçamento. O que a tela mostra é um **piso**.

**Conclusão de trilha é diferente de passo concluído.** Alguém pode ter estudado bastante e não ter concluído trilha nenhuma: concluir uma trilha é terminar **todos** os passos obrigatórios dela.

**Um período sem conclusão não é um período sem estudo.** As duas contagens estão na tela lado a lado justamente por isso.

### Quem aparece com nome

O relatório do período **não nomeia ninguém**, de propósito: o que uma pessoa estudou, quando e quanto tempo levou é comportamento individual.

Ver **quem** concluiu uma trilha é um clique a mais no nome da trilha — e exige a alçada do **catálogo de treinamento**, que é mais estreita que a alçada de ler o cadastro. Quem não a tem enxerga as contagens e lê, na própria tela, que os nomes foram omitidos e por quê.

### Quanto tempo o registro dura

Todo evento de aprendizagem é guardado. Uma varredura noturna remove, depois de **dois anos**, apenas os eventos de **início** — que é onde está o volume, um por vídeo aberto. **Conclusão, aprovação, reprovação e comparecimento nunca são removidos**: é neles que está o valor de prova, e uma regra que apagasse por idade acabaria apagando justamente a evidência de que o treinamento obrigatório aconteceu.

## Pontos, selos e ranking

***

**Menu:** Pontos e selos · **Rota:** /gamification — e a área do colaborador em **Meus treinamentos** (/my-trainings)

Trilha obrigatória se cumpre por dever. O que faz alguém fazer a trilha opcional é outra coisa: reconhecimento, progresso visível, um pouco de disputa saudável.

### Nada pontua enquanto não houver regra

Essa é a primeira coisa a saber. Em **O que vale quanto**, diga quantos pontos vale **concluir um passo** e quantos vale **concluir a trilha inteira**. Enquanto a lista estiver vazia, a gamificação inteira está silenciosamente desligada — as pessoas concluem trilhas e não ganham nada.

Pontos precisam ser **maiores que zero**: regra que vale nada não faz nada e parece que faz.

**Iniciar um passo não pontua**, de propósito. Ponto por abrir vídeo premiaria clique, e o ranking classificaria quem clicou mais.

### Selos

Um selo tem **código**, **nome**, uma **condição** (trilhas concluídas ou pontos acumulados) e um **limite**.

**O código é a identidade, e não muda.** Renomear o selo é seguro — quem já o tem continua tendo. Trocar o código o tiraria de todo mundo que o ganhou, porque é o código que fica gravado no que foi concedido.

**Selo criado depois é concedido a quem já passou do limite.** Ninguém precisa ganhar de novo.

### O ranking — três estados, e o do meio é o motivo de não ser um liga-desliga

| Configuração                      | O que a pessoa vê                                                           |
| --------------------------------- | --------------------------------------------------------------------------- |
| **Não mostrar ranking**           | só os próprios pontos e selos; **nenhuma** comparação                       |
| **Só a minha posição** *(padrão)* | a própria colocação e quantas pessoas estão na disputa, **sem nome nenhum** |
| **Ranking completo**              | a classificação com os colegas, em ordem                                    |

Ranking **expõe o desempenho individual de um servidor com nome**. O que motiva alguns constrange outros. *"Só a minha posição"* atende o requisito com o mínimo disso, e é por isso que é o padrão — escolher o ranking completo é um ato deliberado, e a tela avisa o que ele mostra antes.

**Desligar é imediato e completo.** Não existe ranking guardado atrás da configuração: ele é calculado na hora em que alguém pede. Com ele desligado, o sistema **recusa** o ranking em vez de responder lista vazia — lista vazia se leria como *"ninguém pontuou"*, o que é falso.

**Em "só a minha posição", as outras pontuações não chegam ao navegador.** Não estão escondidas na tela: o servidor não as envia. Esconder na tela ainda mandaria a pontuação de todo mundo em ordem, e quem lê uma resposta de rede recolocaria os nomes.

### Conceder pontos é uma decisão separada de comparar

**Conceder pontos e selos** pode ser desligado sem apagar nada do que as pessoas já ganharam — útil enquanto as regras estão sendo reescritas.

### Ponto não é nota de desempenho

Nada disto é lido pela avaliação de desempenho, **de propósito**. Um estímulo que vira critério deixa de ser estímulo e passa a ser uma medida que as pessoas otimizam.

### O que o colaborador vê

Em **Meus treinamentos**, o bloco **Meus pontos e selos** mostra o total, os selos, a posição (quando a organização mostra) e o histórico de como chegou lá — cada linha dizendo por qual conquista os pontos vieram.

## Layout do certificado

***

**Menu:** Certificados · **Rota:** /certificates — bloco **Layout do certificado**, do modelo escolhido na tabela

Escolha um modelo na tabela **Modelos de certificado** e o bloco de layout aparece abaixo.

### Áreas fixas, não arrastar e soltar

Os elementos são colocados em **áreas** — cabeçalho, título, corpo e as três posições de rodapé —, e não posicionados livremente com o mouse.

Isso é uma escolha, não uma limitação de pressa: posicionamento livre exige uma prévia fiel, e a prévia fiel é a parte difícil. **Dois desenhadores divergem**, e a divergência só aparece num documento que já foi entregue a alguém — o analista aprovou uma prévia e o impresso saiu diferente, e ninguém sabe dizer desde quando. Com áreas fixas, a prévia é desenhada **pelo mesmo código do servidor** que imprime o certificado emitido. Ela não pode mentir.

### Dois elementos não podem faltar

**Nome de quem concluiu** e **nome do curso**. Sem o primeiro o documento não identifica ninguém; sem o segundo não atesta nada. O sistema recusa o layout **dizendo qual está faltando** — um certificado que parece pronto e não prova nada é pior que um que não salvou.

Também é recusado o **mesmo elemento duas vezes** (sairia impresso duas vezes) e a **linha livre sem texto**.

### O layout é salvo inteiro

*"O nome está no certificado?"* é uma pergunta sobre o layout, não sobre uma linha. Por isso ele é gravado de uma vez — salvar elemento por elemento deixaria uma janela em que um certificado poderia ser emitido sem nome.

### Prévia com dados fictícios

A prévia usa **Maria da Silva** e um curso de exemplo. Nenhum certificado real de alguém é usado para experimentar um layout.

### Sem layout, ainda sai documento

Um modelo sem layout imprime num formato simples com **nome, curso e número de série**. A alternativa seria página em branco para uma conclusão que de fato aconteceu.

### Certificado cassado imprime a cassação na cara dele

Na tela do certificado, o bloco **O certificado como ele é impresso** mostra o documento. Se ele foi cassado, o motivo aparece **no próprio documento** — um cassado que imprimisse igual a um válido seria uma falsificação produzida pelo próprio sistema.

## O mesmo curso em vários idiomas

***

**Menu:** Biblioteca de aprendizagem · **Rota:** /learning-contents/\{id} — bloco **Versões em outros idiomas**

### O sistema NÃO traduz

Ele mantém conectadas as versões que a **sua organização produziu**. Prometer tradução automática seria prometer qualidade sobre a qual ninguém tem controle, em material usado para **certificar pessoas** — e palavra errada em curso de segurança não é erro de digitação.

### Vincular é decisão de uma pessoa

1. Cadastre o material na outra língua, **com o idioma declarado**.
2. Abra esse material e, em **É versão de**, escolha o material original.
3. **Vincular**.

O vínculo nunca é adivinhado. Um vínculo errado faz um curso contar como **outro** no histórico de alguém — e o histórico é o que uma auditoria lê.

**Desvincular existe** e é importante: sem ele um vínculo errado seria permanente, e o único remédio seria apagar material para o qual o histórico de alguém aponta.

### Recusas que você vai encontrar

**Versão sem idioma declarado é recusada** — sem idioma ela nunca poderia ser escolhida para ninguém, e ficaria no grupo parecendo cobertura que não existe.

**Dois materiais no mesmo idioma dentro do mesmo grupo** são recusados: a escolha passaria a depender de qual linha foi lida primeiro.

### Quem não tem versão no idioma dele é AVISADO

Se alguém usa o sistema em espanhol e o curso só existe em português, recebe a versão padrão **e é informado de que não há versão no idioma dele**. Substituir em silêncio é como alguém assiste a um curso numa língua que não lê enquanto o sistema registra como feito.

### Conclusão conta uma vez só

Concluir **qualquer** versão conta como concluir o curso. Um passo da trilha é **um** passo, qualquer que seja a versão assistida — ninguém precisa fazer o mesmo curso duas vezes para cumprir uma obrigação.

## Plataforma de IA

***

**Menu:** Plataforma de IA · **Rota:** /ai-provider

Aqui a organização instala o token da plataforma de IA que **contrata**, escolhe o modelo e decide se o conteúdo pode sair.

### O produto não faz inferência nenhuma

Ele monta a pergunta e o contexto da trilha e **pergunta à sua plataforma**. Qualidade, custo e tratamento de dados são daquela plataforma, sob o contrato que a sua organização tem com ela.

### O token entra e nunca mais volta

Depois de instalado, o token **nunca é exibido de novo** — nem para quem o instalou. A tela mostra apenas os **quatro últimos caracteres**, que servem para reconhecer qual chave está instalada e não servem para mais nada.

**Deixe o campo vazio para manter o token instalado.** Como a tela nunca recebe a chave, ela não tem como devolvê-la; vazio significa "não mexa". Se significasse "apagar", toda edição do modelo desinstalaria a credencial em silêncio, e o assistente pararia de responder por um motivo que ninguém ligaria à edição.

Para remover de fato, use **Remover o token** — e note que isso também **desliga** o assistente, porque sem chave ele falharia na primeira pergunta.

O token é guardado **cifrado**, nunca aparece em log e **nunca entra no snapshot da trilha de auditoria**: o que a trilha guarda é quem mexeu, qual plataforma, qual modelo e os quatro caracteres visíveis.

### A lista de modelos vem da plataforma, não do nosso código

Assim, um modelo novo aparece aqui **sem versão nova do sistema** — e um modelo aposentado some. Quando a lista não pode ser lida (sem token, sem rede, token recusado), a tela **diz o motivo** e deixa você digitar o identificador à mão. Uma combo vazia se leria como *"esta plataforma não tem modelos"*, o que nunca é verdade.

### O conteúdo saindo da organização é uma decisão, com nome

Quando alguém pergunta ao assistente, **o material da trilha e a pergunta que a pessoa digitou são enviados para fora desta organização**, para a plataforma de IA.

Isso precisa ser **aceito por alguém, com nome**, num controle próprio — separado do formulário que troca o modelo, para não ser algo que se concorda enquanto se faz outra coisa. O nome e a data ficam registrados e vão para a trilha de auditoria.

**Enquanto não for aceito, nada é enviado** e o assistente simplesmente se declara indisponível. A aceitação é o que **abre** a chamada, não um aviso ao lado dela. Ela pode ser **retirada** a qualquer momento.

### Por que o assistente não está respondendo

O aviso no topo diz **qual** das condições falta, e não apenas que está indisponível:

| Motivo                              | O que fazer                                |
| ----------------------------------- | ------------------------------------------ |
| nenhuma plataforma configurada      | preencher e salvar                         |
| nenhum token instalado              | instalar o token                           |
| nenhum modelo escolhido             | escolher ou digitar o modelo               |
| o assistente está desligado         | ligar em **Assistente ligado**             |
| ninguém aceitou que o conteúdo saia | aceitar, com nome, no bloco de privacidade |

### Uma configuração de IA para o produto inteiro

**Esta tela governa toda funcionalidade de IA do sistema, não só o assistente de treinamento.** Até 2026-08-11 havia duas configurações que não se conheciam: a das despesas, num arquivo que o time de infraestrutura editava, e esta, que o cliente preenche. Dava para a organização contratar uma plataforma numa e ter a outra chamando outra — ou nenhuma.

**Escolha a plataforma na combo:** *Anthropic (Claude)*, *OpenAI* ou *Ollama (na rede da organização)*. A lista de **modelos** é lida da plataforma escolhida, com o token da própria organização — cada uma responde essa pergunta de um jeito, e o sistema sabe falar com as três.

**O Ollama não pede token**, e essa é a diferença que importa para quem tem exigência de dado não sair: ele roda na rede da própria organização, então nada trafega para fora. As outras duas são hospedadas, e por isso exigem o aceite nominal descrito acima.

**Se a organização não preencher esta tela**, o sistema ainda respeita o que estiver no arquivo de configuração da instalação — é o que mantém funcionando quem já tinha modelo ligado por lá. Assim que alguém preenche aqui, **o que vale é esta tela**.

## O assistente

***

**Menu:** Meus treinamentos · **Rota:** /my-trainings — bloco **Assistente**

Escolha **sobre qual trilha**, digite a pergunta e clique em **Perguntar**. O assistente responde sobre **aquela trilha** e o que fazer nela em seguida — ele não é um chat de propósito geral dentro do sistema.

### Indisponível diz o motivo, e a trilha continua servindo

Se a organização não contratou plataforma, não instalou o token, não escolheu o modelo, desligou o assistente ou **não aceitou que o conteúdo saia**, o bloco diz **qual** dessas coisas falta e aponta de volta para a trilha: *"siga os passos em ordem, de onde você parou"*.

Isso é de propósito. Uma caixa que abre e não responde é pior que caixa nenhuma — a pessoa espera, tenta de novo e conclui que o sistema está quebrado.

### O que sai da organização é dito em toda resposta

Vão para a plataforma de IA: **o nome da trilha**, **quais passos ela tem e onde você está neles** e **a pergunta que você digitou**. Isso aparece embaixo de cada resposta — não é um aviso mostrado uma vez no começo.

**O que NÃO vai:** o seu nome, o seu cargo e a sua avaliação de desempenho. O assistente responde "o que eu faço nesta trilha", e qualquer coisa além disso seria dado pessoal saindo sem finalidade.

### Nada do que você perguntar fica guardado

Nem a pergunta nem a resposta são armazenadas. Um registro pesquisável do que cada pessoa não entendeu seria um problema de privacidade maior que a própria consulta.

**O custo disso está dito:** a organização não consegue reconstruir depois o que foi enviado. O que fica auditável é a **configuração** — quem instalou o token e quem aceitou que o conteúdo saia.

### Só a sua trilha

Você só pode perguntar sobre matrícula **sua**. Uma matrícula de outra pessoa responde *não encontrada* — e não *sem permissão*, porque dizer "sem permissão" já confirmaria que ela existe.
