Skip to content

Extensões do Esquema de Base de Dados

O plugin GamiBot estende a base de dados Moodle com tabelas personalizadas para rastrear quizzes, histórico de chat e logs de ingestão.


Visão Geral

TabelaPropósito
local_gamibot_quizzesArmazenar metadados de quiz e desempenho do aluno
local_gamibot_chatArmazenar histórico de chat para continuidade
local_gamibot_ingestion_logRastrear estado de ingestão de materiais

Tabela de Metadados de Quiz

Armazena quizzes gerados e desempenho dos alunos:

sql
CREATE TABLE IF NOT EXISTS {local_gamibot_quizzes} (
    id BIGINT PRIMARY KEY AUTO_INCREMENT,
    course_id BIGINT NOT NULL,
    student_id BIGINT NOT NULL,
    quiz_id VARCHAR(36) NOT NULL UNIQUE,
    topic VARCHAR(255),
    num_questions INT,
    score FLOAT,
    created_at TIMESTAMP,
    answered_at TIMESTAMP,
    FOREIGN KEY (course_id) REFERENCES {course}(id),
    FOREIGN KEY (student_id) REFERENCES {user}(id)
);

Campos

CampoTipoDescrição
idBIGINTChave primária
course_idBIGINTReferência ao curso Moodle
student_idBIGINTReferência ao utilizador Moodle
quiz_idVARCHAR(36)Identificador único do quiz (UUID)
topicVARCHAR(255)Tópico do quiz
num_questionsINTNúmero de perguntas
scoreFLOATPontuação final (0.0 - 1.0)
created_atTIMESTAMPHora de criação do quiz
answered_atTIMESTAMPHora de conclusão do quiz

Tabela de Histórico de Chat

Armazena histórico de conversação para continuidade de contexto:

sql
CREATE TABLE IF NOT EXISTS {local_gamibot_chat} (
    id BIGINT PRIMARY KEY AUTO_INCREMENT,
    course_id BIGINT NOT NULL,
    user_id BIGINT NOT NULL,
    session_id VARCHAR(36),
    message_type ENUM('student_query', 'agent_response', 'system_notification'),
    content LONGTEXT,
    created_at TIMESTAMP,
    FOREIGN KEY (course_id) REFERENCES {course}(id),
    FOREIGN KEY (user_id) REFERENCES {user}(id)
);

Tipos de Mensagem

TipoDescrição
student_queryPergunta do aluno
agent_responseResposta do agente IA
system_notificationMensagens do sistema (erros, confirmações)

Tabela de Log de Ingestão

Rastreia o estado da ingestão de materiais:

sql
CREATE TABLE IF NOT EXISTS {local_gamibot_ingestion_log} (
    id BIGINT PRIMARY KEY AUTO_INCREMENT,
    course_id BIGINT NOT NULL,
    file_url VARCHAR(500),
    filename VARCHAR(255),
    file_type VARCHAR(10),
    status ENUM('success', 'failed', 'pending'),
    chunks_created INT,
    error_message TEXT,
    created_at TIMESTAMP,
    FOREIGN KEY (course_id) REFERENCES {course}(id)
);

Valores de Estado

EstadoDescrição
pendingEm fila para processamento
successIngerido com sucesso
failedIngestão falhou

Índices

Para desempenho ótimo de consultas:

sql
-- Consultas de quiz por aluno
CREATE INDEX idx_quizzes_student ON {local_gamibot_quizzes} (student_id, course_id);

-- Consultas de chat por sessão
CREATE INDEX idx_chat_session ON {local_gamibot_chat} (session_id, created_at);

-- Consultas de estado de ingestão
CREATE INDEX idx_ingestion_status ON {local_gamibot_ingestion_log} (course_id, status);

Próximos Passos

Released under the MIT License.