Pular para conteúdo

Diagnóstico de Sistema (Debug)

O módulo de Diagnóstico é o "kit de primeiros socorros" do MIDDAG. Ele fornece um painel técnico centralizado para verificar a saúde do plugin, a integridade do banco de dados e a compatibilidade do ambiente do servidor.

Ao contrário do Debugging padrão do Moodle (que exibe erros na tela para todos), esta ferramenta é uma área administrativa segura para inspeção profunda sem expor falhas aos alunos.


Funcionalidades Principais

O painel de diagnóstico executa uma bateria de testes automatizados toda vez que é acessado, cobrindo três áreas críticas:

1. Verificação de Ambiente (Environment Check)

Analisa se o servidor onde o Moodle está hospedado atende aos requisitos técnicos das extensões ativas. * Versão do PHP: Verifica compatibilidade mínima (ex: PHP 8.1+). * Extensões PHP: Alerta se bibliotecas necessárias (como soap, intl, gd) estão ausentes. * Permissões de Pasta: Garante que o plugin consegue escrever logs e arquivos temporários no moodledata.

2. Integridade de Banco de Dados (Schema Integrity)

O MIDDAG utiliza tabelas personalizadas otimizadas. Esta ferramenta verifica se: * Todas as tabelas necessárias existem. * As colunas possuem os tipos corretos (ex: BIGINT vs INT). * Os índices de performance estão criados. * Existem dados órfãos (ex: metadados sem item pai).

Correção Automática

Se o diagnóstico encontrar inconsistências no banco (ex: uma tabela faltando após uma migração falha), ele oferecerá um botão "Reparar Schema" para tentar corrigir a estrutura automaticamente.

3. Status das Extensões

Lista quais extensões estão carregadas na memória e se alguma falhou durante o processo de Boot. * Verde: Carregada e ativa. * Cinza: Desativada administrativamente. * Vermelho: Falha crítica (ex: erro de sintaxe ou dependência faltando). O erro detalhado é exibido apenas para o administrador.


Ferramentas de Manutenção

Além de exibir problemas, o módulo oferece ações para resolvê-los:

Limpeza de Cache (Purge Caches)

Botão dedicado para limpar apenas os caches do MIDDAG (definições de serviço, rotas e metadados), sem precisar limpar o cache global do Moodle (que afeta a performance de todo o site).

Teste de Conectividade

Para extensões que dependem de APIs externas (como BigQuery ou E-commerce), o diagnóstico permite enviar um "Ping" de teste para garantir que o firewall ou credenciais estão corretos.

Visualizador de Logs Internos

Acesso rápido aos logs gerados por debug::trace(). Útil para desenvolvedores entenderem o fluxo exato de uma operação que falhou, sem precisar de acesso SSH ao servidor.


Como Acessar

O painel de diagnóstico é restrito a usuários com a capability local/middag:manage.

  1. Acesse Administração do Site.
  2. Navegue até Plugins > Plugins Locais > MIDDAG.
  3. Clique na aba Diagnóstico e Saúde.

Guia de Solução de Problemas (Troubleshooting)

Use esta tabela para interpretar os alertas mais comuns do painel:

Alerta Significado Ação Recomendada
"Missing PHP Extension: intl" O servidor não consegue processar formatação de moedas/datas internacional. Solicite à hospedagem a instalação do php-intl.
"Database Drift Detected" A estrutura do banco está diferente do esperado pelo código. Clique em "Reparar Schema" ou rode o upgrade do plugin.
"Write Permission Denied" O plugin não consegue salvar arquivos temporários. Verifique as permissões da pasta moodledata/local/middag.
"Extension Boot Failure" Uma extensão específica quebrou. Desative a extensão problemática nas configurações para restaurar o sistema e verifique os logs.

Para Desenvolvedores

Se você está desenvolvendo uma extensão para o MIDDAG, pode integrar suas próprias verificações ao painel de diagnóstico.

Implemente a interface diagnostic_provider na sua extensão para adicionar checagens personalizadas (ex: verificar se uma API Key é válida).

// Exemplo conceitual
public function run_diagnostics(): array {
    if (!$this->api_is_reachable()) {
        return [result::ERROR, 'Não foi possível conectar à API de Pagamentos.'];
    }
    return [result::OK, 'API Conectada.'];
}