-- 查重任务表(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 查重任务表';