-- ============================================================
-- 线上库 schema 补齐脚本（2026-08-31）
-- 背景：线上已部署新代码（含 question_count / practiceProgress 功能），
--       但线上库 schema 落后，缺列缺表导致多个接口 500。
-- 用法：先把本文件上传到服务器 /root/，然后执行：
--       docker exec -i mysql8 mysql -uuser -p'qPa5*gt8o.' zhijiayun_pharmacy < /root/fix-prod-schema.sql
-- 说明：
--   - 第 1 条 ALTER 若报 "Duplicate column name 'question_count'"，说明列已加过，
--     属正常现象，忽略即可（用 -f 或继续执行后续语句）。
--   - CREATE TABLE IF NOT EXISTS 可安全重复执行。
-- ============================================================

-- 1) 考试记录表：满分列（realExam/list、records、summary、recordDetail 等接口依赖）
ALTER TABLE t_quiz_user_exam_record
  ADD COLUMN question_count INT DEFAULT NULL COMMENT '试卷题目总数（满分）' AFTER wrong_count;

-- 2) 练习进度表（practiceProgress/listBySectionIds、save、get 接口依赖）
CREATE TABLE IF NOT EXISTS t_quiz_practice_progress (
  id bigint NOT NULL COMMENT '主键ID（雪花算法）',
  user_id bigint NOT NULL COMMENT '用户ID',
  subject_id bigint DEFAULT NULL COMMENT '科目ID',
  section_id bigint NOT NULL COMMENT '节ID',
  section_name varchar(200) DEFAULT NULL COMMENT '节名称',
  current_index int NOT NULL DEFAULT 0 COMMENT '当前题号(0基)',
  answered_count int NOT NULL DEFAULT 0 COMMENT '已答题数',
  answers text COMMENT '已选答案JSON {index:答案}',
  create_time datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  update_time datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  PRIMARY KEY (id),
  UNIQUE KEY uk_user_section (user_id, section_id),
  KEY idx_user_id (user_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='练习进度表';

-- 3) 回填存量考试记录的满分值
UPDATE t_quiz_user_exam_record r
SET r.question_count = (
  SELECT COUNT(*) FROM t_quiz_question q
  WHERE q.is_real = 1 AND q.year = r.year
    AND (r.subject_id IS NULL OR q.subject_id = r.subject_id)
)
WHERE r.question_count IS NULL;
