-- 查重任务表（Turnitin TCA / Crossref Similarity Check）
--
-- 一篇 article 可重复触发多次查重；同一 article 的最近一次显示在编辑详情页。
-- state 流转：0 待上传 → 1 上传中 → 2 比对中 → 3 完成 → 4 失败
-- 失败可重新触发，会创建新行（保留历史）
--
-- 报告永久保留：pdf_local_path 指向 runtime/plagiarism/ 下的本地 PDF；
-- view_only_url 是 Turnitin 临时签名（数小时过期），过期需重新生成

DROP TABLE IF EXISTS `t_plagiarism_check`;
CREATE TABLE `t_plagiarism_check` (
  `check_id`              INT NOT NULL AUTO_INCREMENT,
  `article_id`            INT NOT NULL DEFAULT 0           COMMENT '关联投稿 t_article.article_id',
  `journal_id`            INT NOT NULL DEFAULT 0           COMMENT '所属期刊（冗余便于按期刊统计）',
  `triggered_by`          INT NOT NULL DEFAULT 0           COMMENT '触发人 user_id（手工触发时编辑的 user_id）',
  `trigger_source`        VARCHAR(32) NOT NULL DEFAULT 'manual' COMMENT 'manual/auto_initial_review/...',
  `state`                 TINYINT NOT NULL DEFAULT 0       COMMENT '0待上传 1上传中 2比对中 3完成 4失败',

  -- Turnitin 端的实体 ID
  `tii_submission_id`     VARCHAR(64) NOT NULL DEFAULT ''  COMMENT 'Turnitin submission UUID',
  `tii_report_status`     VARCHAR(32) NOT NULL DEFAULT ''  COMMENT 'PROCESSING/COMPLETE/ERROR',

  -- 结果
  `similarity_score`      DECIMAL(5,2) NOT NULL DEFAULT 0  COMMENT '总相似度 %（如 12.34）',
  `view_only_url`         VARCHAR(1024) NOT NULL DEFAULT '' COMMENT '在线查看报告 URL（临时签名）',
  `view_only_url_expire`  INT NOT NULL DEFAULT 0           COMMENT '在线查看 URL 过期时间戳',
  `pdf_local_path`        VARCHAR(255) NOT NULL DEFAULT '' COMMENT '本地缓存的 PDF 报告相对路径',

  -- 文件元数据（上传时记录，便于追踪）
  `source_file_name`      VARCHAR(255) NOT NULL DEFAULT '' COMMENT '原始 PDF 文件名',
  `source_file_size`      INT NOT NULL DEFAULT 0           COMMENT '原始 PDF 字节数',

  -- 调试与重试
  `attempts`              INT NOT NULL DEFAULT 0           COMMENT '总轮询/重试次数',
  `error_msg`             VARCHAR(1024) NOT NULL DEFAULT '' COMMENT '失败原因',
  `raw_response`          MEDIUMTEXT                       COMMENT '最近一次 Turnitin API 原始返回（调试用）',

  `ctime`                 INT NOT NULL DEFAULT 0,
  `utime`                 INT NOT NULL DEFAULT 0,
  PRIMARY KEY (`check_id`),
  KEY `idx_article` (`article_id`, `state`),
  KEY `idx_state` (`state`),
  KEY `idx_tii_submission` (`tii_submission_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COMMENT='Turnitin 查重任务表';
