Auditoria e Logs (Logs)¶
O módulo de Auditoria do Core é um sistema de registro imutável projetado para garantir compliance, segurança e rastreabilidade total das operações realizadas na plataforma.
Enquanto os logs padrão do Moodle focam em "acessos" (quem viu a página X), os logs do MIDDAG focam em alterações de estado (quem mudou a nota de 5 para 10, quem alterou a data de matrícula).
Diferenciais do Sistema¶
1. Rastreamento de Mudanças (Diffing)¶
A maioria dos sistemas apenas registra "O usuário X editou o Curso Y". O MIDDAG registra:
"O usuário X editou o Curso Y. O campo Data de Início mudou de
01/01/2023para05/01/2023."
Isso é possível graças à arquitetura de Snapshots: antes de salvar qualquer alteração, o sistema compara a versão antiga do objeto com a nova e armazena apenas a diferença (Delta).
2. Contexto Rico¶
Cada registro de log armazena metadados contextuais para responder às perguntas: * Quem? (User ID, IP real, Sessão). * Onde? (Contexto do Moodle, URL, Curso). * Como? (Via Interface Web, via API, via Cron/Tarefa agendada, ou via Linha de Comando). * Por quê? (Mensagem de negócio associada à ação).
3. Imutabilidade¶
Os logs de auditoria são projetados para serem apenas leitura (Append-Only). Nem mesmo administradores podem excluir ou alterar um registro de log através da interface, garantindo que o histórico seja prova fiel das atividades.
O Que é Auditado?¶
O Core audita automaticamente ações críticas de todas as extensões ativas. Exemplos comuns incluem:
- Gestão de Usuários: Mudanças manuais de perfil, trocas de senha administrativa.
- Matrículas: Inscrições manuais, remoções, alterações de datas de vigência.
- Notas e Conclusão: Alterações manuais em notas, redefinição de progresso (via extensão Cleaner).
- Configurações: Mudanças nas configurações do plugin (ativar/desativar extensões).
- Integrações: Falhas de comunicação com APIs externas ou Webhooks.
Visualizando os Logs¶
Para acessar o relatório de auditoria:
- Acesse Administração do Site > Plugins > Plugins Locais > MIDDAG.
- Clique na aba Logs e Auditoria.
Filtros Disponíveis¶
O painel permite filtrar o histórico por: * Nível: Erro, Aviso, Informação, Sucesso. * Componente: Filtrar apenas logs de uma extensão específica (ex: filtrar só Ecommerce). * Usuário: Ver tudo que uma pessoa específica fez. * Item: Ver todo o histórico de um objeto específico (ex: "Histórico do Pedido #1234").
Níveis de Severidade¶
O sistema classifica os eventos para facilitar a triagem:
| Nível | Cor | Significado |
|---|---|---|
| Emergency / Critical | 🔴 Vermelho | Falha grave de sistema (banco corrompido, serviço fora do ar). Exige ação imediata da TI. |
| Error | 🟠 Laranja | Uma operação falhou (ex: erro no pagamento, falha no envio de e-mail). |
| Warning | 🟡 Amarelo | Operação completada, mas com ressalvas (ex: matrícula feita, mas e-mail não enviado). |
| Info | 🔵 Azul | Registro de atividade normal (ex: "Curso criado", "Aluno matriculado"). |
| Debug | ⚪ Cinza | Informação técnica detalhada (visível apenas se o modo Debug estiver ativo). |
Para Desenvolvedores¶
Se você está criando uma extensão, pode utilizar o serviço de logs para registrar ações de negócio.
Como registrar um log¶
Não use a tabela mdl_logstore padrão. Injete o audit_manager:
use local_middag\core\audit\audit_manager;
// Registrando uma ação simples
audit_manager::info(
component: 'aluno_transferido',
message: 'Aluno movido da Turma A para Turma B',
context: ['aluno_id' => 10, 'motivo' => 'Solicitação da secretaria']
);
// Registrando um erro
audit_manager::error(
component: 'integracao_falhou',
message: 'API externa retornou 500',
exception: $e // O sistema serializa o stack trace automaticamente
);
O audit_manager cuida automaticamente de capturar o usuário atual, o IP e o contexto da página.