-- =============================================================================
-- questions 与 questions_tem 除 id 外结构一致时：从 tem 插入 questions
--
-- 说明：
--   · id 不拷贝，由 questions 自增。
--   · question_code 在 questions 上唯一：下面用新码避免与已有行冲突。
--     若你确认 tem 的 question_code 与 questions 绝不重复，可把 SELECT 里第一列改成 t.question_code。
--   · 其余列与 tem 一一对应（结构完全一致时可直接照抄）。
--   · 去重：与业务一致，同 kp_code + stem 已在 questions 存在则跳过。
--
-- 执行前备份；建议先 START TRANSACTION，核对行数后再 COMMIT。
-- 需要 MySQL 8+（UUID()）。
-- =============================================================================

START TRANSACTION;

INSERT INTO `questions` (
    `question_code`,
    `kp_id`,
    `textbook_catalog_nodes_id`,
    `stem`,
    `options`,
    `answer`,
    `solution`,
    `difficulty`,
    `question_category`,
    `source`,
    `tags`,
    `question_type`,
    `source_file_id`,
    `source_paper_id`,
    `paper_part_id`,
    `textbook_id`,
    `meta`,
    `created_at`,
    `updated_at`,
    `audit_status`,
    `audit_reason`,
    `title_1`,
    `title_2`,
    `title_3`,
    `create_by`,
    `kp_code`,
    `kp_name`,
    `kp_reference`,
    `grade`,
    `step_num`,
    `solution_temp`,
    `solution_temp2`
)
SELECT
    CONCAT('QT', UPPER(SUBSTRING(REPLACE(UUID(), '-', ''), 1, 12))) AS `question_code`,
    t.`kp_id`,
    t.`textbook_catalog_nodes_id`,
    t.`stem`,
    t.`options`,
    t.`answer`,
    t.`solution`,
    t.`difficulty`,
    t.`question_category`,
    t.`source`,
    t.`tags`,
    t.`question_type`,
    t.`source_file_id`,
    t.`source_paper_id`,
    t.`paper_part_id`,
    t.`textbook_id`,
    t.`meta`,
    t.`created_at`,
    t.`updated_at`,
    t.`audit_status`,
    t.`audit_reason`,
    t.`title_1`,
    t.`title_2`,
    t.`title_3`,
    t.`create_by`,
    t.`kp_code`,
    t.`kp_name`,
    t.`kp_reference`,
    t.`grade`,
    t.`step_num`,
    t.`solution_temp`,
    t.`solution_temp2`
FROM `questions_tem` AS t
WHERE
    t.`kp_code` IS NOT NULL
    AND TRIM(t.`kp_code`) <> ''
    AND t.`stem` IS NOT NULL
    AND TRIM(t.`stem`) <> ''
    AND NOT EXISTS (
        SELECT 1
        FROM `questions` AS q
        WHERE q.`kp_code` = t.`kp_code`
          AND q.`stem` = t.`stem`
    );

COMMIT;

-- -----------------------------------------------------------------------------
-- 若两表列名/顺序有出入，可先查出 questions 除 id 外的列名再改 INSERT/SELECT：
-- SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS
-- WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'questions' AND COLUMN_NAME <> 'id'
-- ORDER BY ORDINAL_POSITION;
-- -----------------------------------------------------------------------------

-- 仅复制部分 tem 行：在 WHERE 末尾增加 AND t.id IN (1,2,3);
