34 lines
1.7 KiB
SQL
34 lines
1.7 KiB
SQL
-- Apply after database_schema.sql. Rollback: disable the new endpoints, preserve
|
|
-- attempt rows for audit, then remove the column/table only after export.
|
|
ALTER TABLE student_error_notebook
|
|
ADD COLUMN retention_due_at TIMESTAMP NULL DEFAULT NULL AFTER mastered_at;
|
|
|
|
-- Existing question rows remain draft. A reviewer must approve each question
|
|
-- against the named lesson and record its source before it may prove remediation.
|
|
ALTER TABLE questions
|
|
ADD COLUMN remediation_review_status ENUM('draft','approved','rejected') NOT NULL DEFAULT 'draft',
|
|
ADD COLUMN remediation_reviewed_by BIGINT UNSIGNED NULL,
|
|
ADD COLUMN remediation_reviewed_at TIMESTAMP NULL DEFAULT NULL,
|
|
ADD COLUMN remediation_source_reference VARCHAR(700) NULL;
|
|
|
|
CREATE TABLE IF NOT EXISTS error_notebook_quiz_attempts (
|
|
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
|
|
uuid CHAR(36) NOT NULL,
|
|
error_id BIGINT UNSIGNED NOT NULL,
|
|
student_id BIGINT UNSIGNED NOT NULL,
|
|
phase ENUM('initial','retention') NOT NULL,
|
|
question_ids_json JSON NOT NULL,
|
|
answer_key_json JSON NOT NULL,
|
|
status ENUM('open','passed','failed') NOT NULL DEFAULT 'open',
|
|
answers_sha256 CHAR(64) NULL,
|
|
correct_count TINYINT UNSIGNED NULL,
|
|
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
expires_at TIMESTAMP NOT NULL,
|
|
submitted_at TIMESTAMP NULL DEFAULT NULL,
|
|
PRIMARY KEY (id),
|
|
UNIQUE KEY uq_error_quiz_uuid (uuid),
|
|
KEY idx_error_quiz_student (student_id,error_id,status),
|
|
CONSTRAINT fk_error_quiz_error FOREIGN KEY (error_id) REFERENCES student_error_notebook(id) ON DELETE RESTRICT,
|
|
CONSTRAINT fk_error_quiz_student FOREIGN KEY (student_id) REFERENCES students(id) ON DELETE RESTRICT
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|