// ===== mock.jsx ===== // Centralized mock data. Each report has different AIGC scores, paragraph // markings, model fingerprint, and rewrite suggestions, so report/:id can // switch between five distinct samples. const PARA_RISK = { SAFE: 'safe', MED: 'med', HIGH: 'high' }; const buildPara = (text, risk, score, reason) => ({ text, risk, score, reason }); // Re-used text fragments across samples — abridged for typography density. const FRAG = { intro_safe: '本研究关注的核心问题,源自笔者大三暑期在江苏某县级博物馆的田野调查。彼时,馆方正面临一个具体的两难——展柜更新的预算只够覆盖三分之一藏品。我反复重读了周建国(2019)对县域展陈的批评,发现既有文献几乎都将“资源不足”视作既定背景而非可分析变量。', intro_med: '近年来,随着数字化进程不断加快,传统文化产业面临着前所未有的机遇与挑战。综上所述,研究文化遗产数字化保护具有重要的理论意义与现实意义,对推动相关领域的发展具有积极作用。', intro_high: '在新时代的背景下,我们要充分认识到文化遗产保护的重要性。值得注意的是,文化遗产数字化保护是一项系统性工程,需要多方协同。综上所述,加强文化遗产数字化保护,对于传承中华优秀传统文化具有重要意义,能够有效推动文化事业的高质量发展。', method_safe: '具体方法上,我借鉴了 Smith(2021)的“低密度访谈 + 物件叙事”框架,但在第三阶段做了改造:把策展人请回展厅,让他们对照实物口述决策过程,而不是抽象回忆。两位馆员在 7 月 12 日那次复述中出现了明显分歧,这段分歧后来成为第四章的主线证据。', method_med: '本文采用文献研究法、案例分析法与访谈法相结合的研究方法。通过对多个典型案例的分析,可以发现,数字化保护呈现出明显的阶段性特征。具体而言,可以分为三个发展阶段。', method_high: '本研究采用了多种研究方法,主要包括文献研究法、案例分析法、比较研究法和访谈法。通过运用这些方法,能够全面而系统地对研究对象进行深入剖析。综合运用多种方法,有助于提升研究的科学性与可靠性。', finding_safe: '调研日志中有一条容易被忽略的细节:第三批藏品上架时,临时工把标签塑封膜贴反了,馆长当场决定改用裸露纸质标签。这个决定后来意外提升了观众停留时长 14%。这种"非设计性"的痕迹,恰是我想保留在论文里的。', finding_med: '研究表明,数字化技术的应用对于文化遗产保护具有显著的促进作用。从总体上看,这种作用主要体现在保存、展示和传播三个方面,并在不同层面发挥着积极影响。', finding_high: '基于以上分析,本文认为,文化遗产数字化保护工作要从多个维度同步推进,形成全方位、多层次、立体化的保护体系。要充分发挥政府、企业、社会等多方面的作用,构建协同推进的工作格局。', conclusion_med: '与已有研究相比,本文的结论部分一致,部分有所差异。差异的产生,可能与样本范围、调研时段以及测量口径的设定有关。后续研究可在这些方面继续拓展。', conclusion_high: '总而言之,文化遗产数字化保护是一项功在当代、利在千秋的伟大事业。我们要以更高的政治站位、更宽的国际视野、更实的工作举措,扎实推进文化遗产数字化保护工作,为建设社会主义文化强国贡献力量。', }; const R = PARA_RISK; // 5 sample reports across the risk spectrum. const REPORTS = [ { id: 'r-9482', title: '论数字化技术在县域博物馆展陈中的辅助作用', author: '张同学', submitted: '2026-05-22 14:08', words: 28560, durationSec: 23, aigc: 12, level: 'low', levelLabel: '低风险', levelDesc: '文本呈现明显的个人写作特征,AI 生成概率较低。可放心提交。', dims: { perplexity: 86, burstiness: 78, cliche: 22, regularity: 28, voice: 84 }, models: [ { name: 'ChatGPT (GPT-4)', match: 18 }, { name: 'Claude', match: 11 }, { name: 'DeepSeek', match: 14 }, { name: '文心一言', match: 9 }, { name: '通义千问', match: 7 }, { name: '豆包', match: 6 }, ], paragraphs: [ buildPara(FRAG.intro_safe, R.SAFE, 8, '叙事中包含具体时间、地点、人名与个人决策路径,特征极接近人类一手写作。'), buildPara(FRAG.method_safe, R.SAFE, 14, '方法描述带有反思与修正,并指出具体出现分歧的时点,具备非模板化特征。'), buildPara(FRAG.finding_safe, R.SAFE, 11, '田野细节难以由 LLM 凭空生成,包含可被外部验证的弱信号。'), buildPara('在写作策略上,我刻意避免使用"综上所述"这一收束句式,转而让每一节以一个待续问题结尾——这是导师在论文中期答辩上的建议。', R.SAFE, 9, '元写作反思 + 可追溯的导师建议,统计特征接近人类。'), buildPara('需要承认,本研究在样本量上的限制使其难以推广到地级以上博物馆,这一点会在第六章局限性部分展开。', R.SAFE, 16, '主动声明研究局限,符合人类研究者写作的"诚实信号"。'), buildPara(FRAG.method_med, R.MED, 52, '出现"综上所述"等高频套语,但语义衔接尚未脱离个人写作风格。'), ], suggestions: [ '第 6 段方法描述存在轻度套话化趋势,建议替换为具体方法选择的动机与权衡。', ], }, { id: 'r-1085', title: '文化遗产数字化保护与传承策略研究', author: '李同学', submitted: '2026-05-24 09:11', words: 32480, durationSec: 26, aigc: 67, level: 'mid-high', levelLabel: '中高风险', levelDesc: '检测发现明显 AI 生成特征,建议对标记段落进行人工改写后再次自查。', dims: { perplexity: 78, burstiness: 45, cliche: 82, regularity: 71, voice: 38 }, models: [ { name: 'ChatGPT (GPT-4)', match: 72 }, { name: 'Claude', match: 45 }, { name: 'DeepSeek', match: 68 }, { name: '文心一言', match: 31 }, { name: '通义千问', match: 28 }, { name: '豆包', match: 19 }, ], paragraphs: [ buildPara(FRAG.intro_high, R.HIGH, 86, '密集出现"在新时代背景下"、"值得注意的是"、"综上所述"等套话过渡,句长方差低于人类基线 38%。'), buildPara(FRAG.method_high, R.HIGH, 79, '方法陈述高度模板化,缺少对方法选择动机的个体性反思。'), buildPara('研究背景方面,国内外学者已就该议题进行了多角度、多层次的研究。这些研究为本文奠定了重要的理论基础,同时也指出了仍需深入探讨的空间。', R.MED, 58, '是文献综述常见模板,缺少具体引用与争议焦点。'), buildPara(FRAG.finding_high, R.HIGH, 82, '"多个维度同步推进"、"全方位、多层次、立体化"等四字结构密集出现,是典型 LLM 排比腔。'), buildPara(FRAG.method_med, R.MED, 51, '阶段划分缺乏具体节点与依据,呈现 AI 常见的"三段式概括"。'), buildPara('从田野调研的实际情况看,受访的 12 位策展人中,有 7 位明确提到"数字化预算被压缩在设备购置一项上",这与文献中 Wang & Zhao (2022) 的判断方向相反。', R.SAFE, 18, '具体样本数与外文引用对照,符合人类研究者写作模式。'), buildPara(FRAG.conclusion_med, R.MED, 49, '结论段尚有个体反思的痕迹,但论证连接词过于通用。'), buildPara(FRAG.conclusion_high, R.HIGH, 88, '结尾呈现典型的政治话语 + LLM 高频排比组合,是高强度 AI 生成信号。'), ], suggestions: [ '第 1、4、8 段密集出现"综上所述"、"值得注意的是"等通用过渡词,建议替换为更具体的论证连接。', '第 2 段方法陈述模板化,建议加入方法选择动机以及在你的研究里实际遇到的取舍。', '第 4 段排比结构过密,建议拆解为不同维度的具体分析,避免四字短语堆叠。', '第 8 段结尾政治表态色彩浓,建议改写为基于本研究证据的克制性总结。', '整体句长标准差仅 6.2(人类基线约 11–15),建议在长句中穿插更短的判断句。', ], }, { id: 'r-2173', title: '基于深度学习的电力负荷预测改进方法', author: '王同学', submitted: '2026-05-21 19:32', words: 41200, durationSec: 31, aigc: 38, level: 'mid', levelLabel: '中风险', levelDesc: '部分段落呈现可疑的 AI 生成痕迹,建议针对性核查并改写。', dims: { perplexity: 64, burstiness: 58, cliche: 55, regularity: 51, voice: 56 }, models: [ { name: 'ChatGPT (GPT-4)', match: 41 }, { name: 'Claude', match: 36 }, { name: 'DeepSeek', match: 52 }, { name: '文心一言', match: 24 }, { name: '通义千问', match: 22 }, { name: '豆包', match: 17 }, ], paragraphs: [ buildPara('本研究针对短期电力负荷预测中的尖峰漂移问题,提出了一种基于 LSTM-Attention 的改进结构,并在华东某区域负荷数据上进行了验证。', R.SAFE, 14, '问题与数据来源具体,方法描述精确。'), buildPara('近年来,随着新能源接入比例持续提升,电力系统的不确定性显著增强。综上所述,构建更鲁棒的负荷预测方法具有重要的工程价值。', R.MED, 56, '"综上所述"在引入段即出现,且陈述偏宏观,符合 AI 引言常见结构。'), buildPara('实验在 NVIDIA RTX 3090 上完成,使用 PyTorch 2.0;训练集与测试集按 4:1 切分,初始学习率 1e-3,Adam 优化器,batch size = 64。', R.SAFE, 11, '硬件、框架与超参数的同时披露,是人类工程实现的典型信号。'), buildPara('从总体上看,提出的模型在多个指标上均取得了较好的效果。具体而言,相较基线方法存在不同程度的提升,体现了方法的有效性。', R.HIGH, 76, '指标未具体披露但已下结论,是 LLM 常见的"概括性陈述"。'), buildPara('值得注意的是,在 2024 年 7 月 28 日的极端高温样本上,模型的 MAPE 从 4.7% 降至 3.1%,但在 8 月 4 日的负荷骤降事件上反而恶化。', R.SAFE, 19, '反例承认是反 AI 信号,"值得注意的是"为弱套话但语境匹配。'), buildPara('研究表明,所提出的方法对负荷峰值的预测精度有较为明显的提升,整体性能优于传统方法。', R.MED, 49, '陈述较模板化,缺少与具体基线的对比口径。'), buildPara('在工程落地层面,本方法已部署到某地市级调控中心的预测看板上试运行 28 天,运维同事反馈夜间预测稳定性提升明显,但凌晨 4 点附近仍存在偶发偏差。', R.SAFE, 13, '部署时长、反馈来源、偏差时点皆为具体细节。'), ], suggestions: [ '第 2 段在引言阶段即使用"综上所述",建议改写为基于具体研究空白的导入。', '第 4 段未披露具体指标与基线,建议补充 MAPE/RMSE 等数值与对照实验。', '第 6 段建议拆解为"对哪些指标的提升 / 对哪些指标无显著提升"两段,避免一锅烩式结论。', ], }, { id: 'r-4471', title: '社交媒体语境下青年消费者品牌忠诚度形成机制', author: '陈同学', submitted: '2026-05-23 22:46', words: 26840, durationSec: 22, aigc: 89, level: 'high', levelLabel: '高风险', levelDesc: '文本呈现强烈的 AI 生成统计特征,建议对全文进行系统性人工改写。', dims: { perplexity: 92, burstiness: 28, cliche: 91, regularity: 88, voice: 19 }, models: [ { name: 'ChatGPT (GPT-4)', match: 81 }, { name: 'Claude', match: 58 }, { name: 'DeepSeek', match: 73 }, { name: '文心一言', match: 64 }, { name: '通义千问', match: 49 }, { name: '豆包', match: 32 }, ], paragraphs: [ buildPara('在数字经济时代,社交媒体已成为影响青年消费者品牌认知与购买决策的重要渠道。综上所述,研究社交媒体语境下青年消费者品牌忠诚度的形成机制,具有重要的理论意义和现实意义。', R.HIGH, 92, '宏观铺陈 + "综上所述"出现在引言首段,是教科书级 LLM 引言。'), buildPara('值得注意的是,本研究将从多个维度对该问题进行深入剖析,构建系统化的理论分析框架,为后续研究提供有益参考。', R.HIGH, 89, '"值得注意的是"+"多个维度"+"系统化"+"有益参考"四个套话在一句话内出现。'), buildPara('本文采用文献研究法、问卷调查法、案例分析法相结合的研究方法,全方位、多层次地剖析青年消费者品牌忠诚度的形成机制。', R.HIGH, 84, '"全方位、多层次"是高识别度的 LLM 模板。'), buildPara('研究表明,社交媒体互动对品牌忠诚度具有显著的正向影响。具体而言,互动频率、互动质量与互动深度均发挥着积极的促进作用。', R.HIGH, 87, '三个并列短语结构相同,句长几乎一致,方差极低。'), buildPara('从总体上看,社交媒体语境下的青年消费者品牌忠诚度呈现出新的特征,主要体现在情感连接、认知认同和行为承诺三个方面。', R.HIGH, 85, '典型的"三段式"AI 总结结构。'), buildPara('问卷在长三角三所高校发放 412 份,有效回收 387 份,回收率 93.9%;样本中女生占 58.7%,大三大四占 71.2%。', R.SAFE, 16, '具体数据与抽样信息是少有的人类写作残留。'), buildPara('综合来看,本研究的结论对企业开展社交媒体营销具有一定的启示意义,能够为相关实践提供参考。', R.MED, 64, '结论模糊,"一定的"、"具有启示意义"是 LLM 弱化表述常见组合。'), buildPara(FRAG.conclusion_high, R.HIGH, 94, '结尾段是高浓度套话集合,与正文研究内容关联较弱。'), ], suggestions: [ '全文"综上所述 / 值得注意的是 / 从总体上看"高频出现,建议删除或替换为基于本研究证据的具体连接。', '建议在第 1、5 段加入研究问题的具体来源(如田野观察、行业事件),让引言具备研究者个人视角。', '第 3 段方法陈述模板化,建议改写为方法选择动机 + 实施过程中的取舍。', '第 4 段"互动频率/质量/深度"建议拆解为单独段落,分别展示不同效应量与可能的反例。', '第 8 段结尾段建议整体重写为基于本研究发现的克制性总结,避免高度政治化与排比化语言。', '整体句长标准差仅 4.1(人类基线 11–15),建议在长句中穿插短判断句以恢复节奏。', ], }, { id: 'r-6620', title: '宋代笔记小说中"市井"叙事的空间转喻', author: '周同学', submitted: '2026-05-20 11:04', words: 22300, durationSec: 19, aigc: 24, level: 'low', levelLabel: '低风险', levelDesc: '文本整体呈现人类写作特征,仅个别段落需要轻度改写。', dims: { perplexity: 81, burstiness: 73, cliche: 35, regularity: 41, voice: 76 }, models: [ { name: 'ChatGPT (GPT-4)', match: 26 }, { name: 'Claude', match: 19 }, { name: 'DeepSeek', match: 22 }, { name: '文心一言', match: 14 }, { name: '通义千问', match: 11 }, { name: '豆包', match: 9 }, ], paragraphs: [ buildPara('《东京梦华录》卷三关于"州桥夜市"的段落,常被引为宋代市井繁华的注脚。但若与同卷"潘楼东街巷"对读,可以发现孟元老在空间命名上的偏好——以"桥"作动词,以"巷"作名词。', R.SAFE, 10, '具体到卷次与条目,并提出可检验的语用观察。'), buildPara('本文不打算复述既有的"市民文学"框架,而是从一个更窄的切口进入:笔记小说中"市井"一词的位置——它出现在叙述视角的转折处的频率,是否高于在场景描写处。', R.SAFE, 8, '提出反主流的具体研究视角,呈现明显的论辩姿态。'), buildPara('在文本选择上,本研究排除了《青琐高议》中过于戏剧化的篇目,保留了 27 则以城市行人为视角的短章。这一筛选标准在导师与我之间经历了两轮讨论,详见附录二。', R.SAFE, 11, '筛选标准带有过程性反思,并指向具体附录证据。'), buildPara('需要承认,本文的解读在很大程度上依赖于个别词汇的统计偏好,因此对样本规模的扩大持开放态度。', R.SAFE, 15, '主动声明方法局限,是人类研究者的"诚实信号"。'), buildPara('从这些文本中可以观察到,"市井"出现的位置存在一定的规律性。综上所述,宋代笔记小说在空间叙述上已经具备了相当成熟的转喻意识。', R.MED, 54, '"综上所述"在小节结尾出现,但其前的论证仍属个体观察。'), buildPara('本研究存在以下局限:其一,未能涵盖南宋后期的全部笔记文献;其二,对"市井"一词的语义边界仍有讨论空间。', R.SAFE, 14, '具体到限制项目并编号,符合论文规范且非模板化。'), ], suggestions: [ '第 5 段使用了"综上所述",建议替换为更贴合论证的过渡,例如"这些线索共同指向…"。', ], }, ]; // Admin orders — covers all backend statuses const ORDER_STATUSES = { pending: { key: 'pending', label: '待支付', dotClass: 'bg-ink-400', badgeClass: 'bg-ink-100 text-ink-700' }, uploaded: { key: 'uploaded', label: '已上传待确认', dotClass: 'bg-warn-500', badgeClass: 'bg-warn-50 text-warn-600 ring-1 ring-warn-100' }, processing: { key: 'processing', label: 'LLM 处理中', dotClass: 'bg-brand-500',badgeClass: 'bg-brand-50 text-brand-600 ring-1 ring-brand-100' }, done: { key: 'done', label: '已完成', dotClass: 'bg-ok-500', badgeClass: 'bg-ok-50 text-ok-600 ring-1 ring-ok-100' }, refunded: { key: 'refunded', label: '已退款', dotClass: 'bg-bad-500', badgeClass: 'bg-bad-50 text-bad-600 ring-1 ring-bad-100' }, expired: { key: 'expired', label: '已过期', dotClass: 'bg-ink-300', badgeClass: 'bg-ink-100 text-ink-500' }, llm_failed: { key: 'llm_failed', label: 'LLM 失败', dotClass: 'bg-bad-600', badgeClass: 'bg-bad-50 text-bad-600 ring-1 ring-bad-100' }, }; const ORDERS = [ { id: '20260524-1085', uploadedAt: '2026-05-24 09:11', file: '文化遗产数字化保护与传承策略研究-终稿.docx', amount: 4.92, status: 'uploaded', reportId: 'r-1085' }, { id: '20260524-1086', uploadedAt: '2026-05-24 09:34', file: '基于深度学习的电力负荷预测-V3.docx', amount: 9.94, status: 'uploaded', reportId: 'r-2173' }, { id: '20260524-1083', uploadedAt: '2026-05-24 08:48', file: '社交媒体青年消费者品牌忠诚度.pdf', amount: 4.91, status: 'processing', reportId: 'r-4471' }, { id: '20260523-1077', uploadedAt: '2026-05-23 22:46', file: '宋代笔记小说市井叙事.docx', amount: 4.93, status: 'done', reportId: 'r-6620' }, { id: '20260523-1071', uploadedAt: '2026-05-23 16:02', file: '县域博物馆展陈研究-修订稿.docx', amount: 4.95, status: 'done', reportId: 'r-9482' }, { id: '20260524-1090', uploadedAt: '2026-05-24 11:07', file: '机械工程毕业论文-V2.docx', amount: 4.92, status: 'pending', reportId: null }, { id: '20260522-1058', uploadedAt: '2026-05-22 19:21', file: '英语语言学方向毕业论文.docx', amount: 9.97, status: 'done', reportId: 'r-9482' }, { id: '20260521-1042', uploadedAt: '2026-05-21 13:55', file: '会计学专业-审计实务.docx', amount: 4.94, status: 'refunded', reportId: null }, ]; const TESTIMONIALS = [ { quote: '答辩前一晚发现 AIGC 率 71%,惊出一身汗。按报告标红重写了 8 页,第二天压线过审。', name: '张同学', school: '南京某 985 · 文学院研究生', date: '2026.5', ago: '5 天前', }, { quote: '导师群里发通知说这届开始查 AI 率,全宿舍连夜来查。¥4.9 查了 4 遍才放心交,比知网省了 ¥300+。', name: '李同学', school: '上海某 211 · 管理学院本科', date: '2026.5', ago: '1 周前', }, { quote: '同学因为引言 AI 率太高被退稿一次,差点延毕。后来推荐我用墨鉴,标红的段落改了 3 处就过了。', name: '陈同学', school: '广州某重点高校 · 新传学院', date: '2026.4', ago: '2 周前', }, ]; const FAQ = [ { q: '检测结果是否准确?', a: '本平台基于困惑度、突发性、套话密度等多维度统计模型,提供参考性指标。结果用于自查与改进,最终学术鉴定以所在机构官方系统为准。' }, { q: '我的论文会被保存吗?', a: '检测完成后 24 小时内自动从服务器删除,不留底、不用于训练、不外传第三方。可在订单页手动一键删除。' }, { q: '检测结果会和知网 / 万方一致吗?', a: '检测引擎与算法不同。知网、万方主要做"重复率"检测,本平台聚焦"AI 生成概率"判定,二者维度不同,应视为相互独立的参考指标。' }, { q: '支持哪些文件格式?', a: '当前支持 .docx、.pdf、.txt,单文件不超过 10MB;预计稍后开放 .doc 与 LaTeX 源文件解析。' }, { q: '检测多久能拿到报告?', a: '常规情况下 30 秒以内出报告;当前队列繁忙时最多 5 分钟。期间可关闭页面,报告完成后会保留在订单中。' }, { q: '一次未通过可以重测吗?', a: '同一订单 30 天内可对同一文件无限次重新检测,结果保留所有历史版本,方便对照改写。' }, ]; const DIMENSIONS = [ { key: 'perplexity', label: '困惑度', en: 'Perplexity', desc: '评估文本对统计语言模型的可预测程度,AI 生成文本通常困惑度偏低。' }, { key: 'burstiness', label: '突发性', en: 'Burstiness', desc: '分析句长与复杂度方差,人类写作的"高低起伏"通常更明显。' }, { key: 'cliche', label: '套话密度', en: 'Boilerplate', desc: '检测"综上所述、值得注意的是、全方位多层次"等 AI 高频过渡词出现密度。' }, { key: 'regularity', label: '句式规律性', en: 'Regularity', desc: '评估段落结构与句法是否过于工整,识别 AI 模板化输出特征。' }, { key: 'voice', label: '论证个性', en: 'Voice', desc: '评估文本中个人观点、反例与具体细节的密度,人类写作通常此项较高。' }, ]; const STATS_HERO = [ { label: '累计检测论文', value: 2047, suffix: ' 篇' }, { label: 'AI 模型覆盖', value: 8, suffix: ' 大主流引擎' }, { label: '平均检测耗时', value: 27, suffix: ' 秒' }, { label: '段落级标注', value: 100, suffix: ' %' }, ]; // ----- New content for urgency / anxiety layer ----- const URGENCY_BANNERS = [ '本周累计完成检测:47 篇 · 平均耗时 27.3 秒', '近 30 天新增覆盖模型指纹:豆包 Pro / 文心 4.5 / Qwen 3', 'Q2 2026 中文学术写作 AIGC 趋势:平均检出率 41.3%', ]; const PRICE_COMPARE = [ { name: '知网 AIGC 检测', price: 80, desc: '官方查重附带 · 单次', ours: false }, { name: '万方智能查', price: 58, desc: '常见学校代理价 · 单次', ours: false }, { name: 'PaperYY AI', price: 30, desc: '主流第三方 · 单次', ours: false }, { name: '墨鉴 Mojian', price: 4.9, desc: '本平台 · 30 秒出报告', ours: true }, ]; // 30 entries for the live feed widget. Names are surname placeholders, no fabricated school+person combos. const LIVE_FEED = (() => { const surnames = ['张','李','王','陈','刘','杨','黄','赵','吴','周','徐','孙','马','朱','胡','郭','何','林','高','罗','郑','梁','谢','宋','唐','许','韩','冯','邓','曹']; const buckets = [ { ago: '刚刚', mins: 0 }, { ago: '1 分钟前', mins: 1 }, { ago: '3 分钟前', mins: 3 }, { ago: '4 分钟前', mins: 4 }, { ago: '6 分钟前', mins: 6 }, { ago: '8 分钟前', mins: 8 }, { ago: '11 分钟前', mins: 11 }, { ago: '14 分钟前', mins: 14 }, { ago: '17 分钟前', mins: 17 }, { ago: '22 分钟前', mins: 22 }, { ago: '27 分钟前', mins: 27 }, { ago: '33 分钟前', mins: 33 }, { ago: '41 分钟前', mins: 41 }, { ago: '52 分钟前', mins: 52 }, ]; // word counts vary across thesis lengths const wordSamples = [12480, 18320, 22300, 26840, 28560, 31240, 32480, 38020, 41200, 44680, 52400, 61800]; const aigcSamples = [ { aigc: 12, level: 'low' }, { aigc: 23, level: 'low' }, { aigc: 31, level: 'mid' }, { aigc: 38, level: 'mid' }, { aigc: 44, level: 'mid' }, { aigc: 56, level: 'mid' }, { aigc: 61, level: 'mid-high' }, { aigc: 67, level: 'mid-high' }, { aigc: 74, level: 'high' }, { aigc: 81, level: 'high' }, { aigc: 89, level: 'high' }, ]; const arr = []; let seed = 0x9a23f; const rng = () => { seed = (seed * 1103515245 + 12345) & 0x7fffffff; return seed / 0x7fffffff; }; for (let i = 0; i < 30; i++) { const b = buckets[i % buckets.length]; arr.push({ ago: b.ago, name: surnames[Math.floor(rng() * surnames.length)] + '同学', words: wordSamples[Math.floor(rng() * wordSamples.length)], ...aigcSamples[Math.floor(rng() * aigcSamples.length)], }); } return arr; })(); // ----- Detection principles (live demo on home) ----- const DETECTION_DEMO = { human: { text: '我反复重读了周建国(2019)的批评,发现既有文献几乎都将“资源不足”视作既定背景——但我在8 月那次访谈里听到的恰恰相反。两位馆员的复述出现了明显分歧,这段分歧后来成为第四章主线证据。', burstiness: 14.2, perplexity: 78, cliche: 8, verdict: '人类撰写', hints: [ { phrase: '周建国(2019)', tip: '具体引用 + 年份,可外部验证' }, { phrase: '8 月那次访谈里听到的恰恰相反', tip: '个体经验 + 反例,属于人类“诚实信号”' }, { phrase: '这段分歧后来成为第四章主线证据', tip: '可跟踪的事件链,LLM 难以凭空生成' }, ], }, ai: { text: '在新时代的背景下,我们要充分认识到文化遗产保护的重要性。值得注意的是,文化遗产数字化保护是一项系统性工程。综上所述,加强文化遗产数字化保护具有重要意义,能够有效推动文化事业的高质量发展。', burstiness: 4.1, perplexity: 31, cliche: 67, verdict: 'AI 生成', hints: [ { phrase: '在新时代的背景下', tip: '宏观铺陈型开场,LLM 引言模板' }, { phrase: '值得注意的是', tip: 'AI 高频过渡词 · 命中套话库' }, { phrase: '综上所述', tip: 'AI 高频过渡词 · 命中套话库' }, { phrase: '高质量发展', tip: '政策话语 + 四字短语模板' }, ], }, }; const PIPELINE_STEPS = [ { step: '01', title: '文本预处理', desc: '分词 · 段落切分 · 统计句长、标点、代词密度等基本指标。', meta: 'NLP 标准流程' }, { step: '02', title: '困惑度计算 (Perplexity)', desc: '用基础语言模型逐 token 计算条件概率。人类基线 65–95 / AI 基线 20–45。', meta: 'Mitchell et al. 2023' }, { step: '03', title: '突发性分析 (Burstiness)', desc: '计算句长分布的标准差与二阶波动。人类基线 11–15 / AI 基线 3–6。', meta: 'Gehrmann et al. 2019' }, { step: '04', title: '套话密度扫描', desc: '匹配 1,247 个 LLM 高频模板词与权重。每千字命中 > 12 → 中高风险。', meta: '中文语料适配' }, { step: '05', title: '模型指纹比对', desc: '与 8 大主流模型的输出特征做余弦相似度,返回 top-3 最可能来源。', meta: '指纹库 v1.4' }, { step: '06', title: '段落级风险评估', desc: '加权上述维度,输出每段 risk score 与改写建议。', meta: '输出 JSON 报告' }, ]; // Rewrite assist fake-door tiers const REWRITE_TIERS = [ { key: 'prompt', icon: 'FileText', badge: { label: 'FREE · 免费领取', tone: 'ok' }, title: 'Prompt 改写工具箱', desc: '针对 5 个检测维度,提供给 ChatGPT / Claude / 豆包 / 文心 等 AI 助手使用的改写 prompt 模板。包含:套话替换、句式打散、增加论证个性、降低规律性等。', tags: ['Prompt × 12 套', '适配主流 LLM'], cta: '立即免费领取', available: true, }, { key: 'chat', icon: 'MessageSquare', badge: { label: '即将上线', tone: 'ink' }, title: '在线对话改写', desc: '直接在网页对话框粘贴段落,AI 实时给出改写建议。可针对单个维度(如降低套话密度)定向调整,无需自己写 prompt。', tags: ['实时反馈', '可对比原文'], cta: '加入候补名单', available: false, }, { key: 'api', icon: 'Code', badge: { label: 'DEVELOPER · 申请预览', tone: 'brand' }, title: '写作时 API 接入', desc: '在 Cursor / Claude Code / 豆包桌面端等写作工具中调用墨鉴 API,输出在生成时即经过 AI 特征优化,无需事后改写。', tags: ['兼容主流 IDE', 'RESTful API'], cta: '申请 API 预览', available: false, }, { key: 'expert', icon: 'UserCheck', badge: { label: 'PREMIUM · 定制服务', tone: 'navy' }, title: '专家人工改写', desc: '资深学术编辑根据检测报告,对高风险段落进行 1:1 改写,保留原意但去除 AI 特征。 72 小时返稿,按字数计费。', tags: ['72h 返稿', '按字数计费'], cta: '了解定制服务', available: false, }, ]; window.MOCK = { REPORTS, REPORTS_BY_ID: Object.fromEntries(REPORTS.map(r => [r.id, r])), ORDERS, ORDER_STATUSES, TESTIMONIALS, FAQ, DIMENSIONS, STATS_HERO, PARA_RISK, URGENCY_BANNERS, PRICE_COMPARE, LIVE_FEED, DETECTION_DEMO, PIPELINE_STEPS, REWRITE_TIERS, };