# 历史资料作为第二路选题水源 · V0.14

2026-10-23。外部新信息与历史积累并行供给选题库；两路都须经过理解与闸门，选题库不接收原始资料的无差别灌入。

## 入口与操作
左侧“历史资料库”。导入TXT正文、每行一条的标题清单，或JSON文章数组（title、body、origin、date）。粘贴一批1—20条、单篇正文最多10万字符；数据库可先导出这些格式，当前没有直接连接SQL数据库、PDF/Word解析或OCR。

导入前确认有权使用、已脱敏并允许当前账号保存/云同步。导入只保存原文、来源、日期与类型，按同类型正文的空白归一化SHA-256去重，不调用AI、不产生选题。原文在资料库保留；来源不全如实记未知。仅标题单独分类，不能自动补出旧文章内容，也不能登记为已确认专业正文。

点击“批量解读”前确认允许发送本轮资料到系统设置中已选模型；每轮自动取最多5份待解读资料、逐份一次模型请求，使用现有Key配置。关闭页面不会继续后台执行。默认只生成解读与候选提案；没有适合的提案可以返回空，不凑数。请求失败保留原资料、记录原因，不自动重试。导入与解读是两个动作。

## 中间的净化与整理
每份资料输出摘要、核心问题、主题标签和最多3个候选选题。每个候选包含问题、角度、纳入理由、建议（保留/人工确认/搁置）、相关性、不确定性、时效事实疑点和原文摘录。摘录必须出现在实际发送的输入中；字面匹配不等于观点正确或已核实。

一篇超过12000字时仅发送前12000字符，明确标为excerpt_only，不能称已阅读全文或自动放行。只有标题标title_only；给定正文标given_text_only，不声称核实了文章在外部网站的原始出处。旧新闻、研究统计、医学结论或服务安排不能仅凭旧文章判定今天依然有效。

## 闸门
默认人工闸门：解读后不写入选题库，创作者选择“人工确认纳入”或“搁置此选题”，也可搁置整份资料。人工纳入敏感提案只进入灵感池需专业确认区，须沿既有角度确认流程才能进生产。

可明确授权本轮自动纳入，但仅限：完整给定正文、普通非敏感、贴合方向、模型建议保留、无不确定性、非时效内容、无待核事实。任一不满足就留在历史资料页等待人工处理；仅标题、截取、敏感与过期资料不自动放行。资格由客户端判断并在服务端再次校验字段与敏感词；这不是独立事实核验器，模型仍可能判断有误，授权自动模式是有限编辑授权而非专业审核。

单份提案使用固定UUID写入/api/inspiration的archive_topic动作，写后回读确认再标“已转入”。网络失败后复用原UUID，避免同一提案重复插入。原资料重复导入可去重；不同资料提炼出的相似角度当前没有语义级全库去重。选题保存archiveRef（资料ID/版本/指纹/输入范围）及archiveGate（人工或授权自动），显示历史来源，不伪称外部来源已核实。

## 存储与衔接
历史资料作为带archive元数据的materials记录保存，独立页面展示，共用现有账号云同步、备份及恢复。状态默认pending，不自动登记专业确认。模型解读及旧解读历史、决策、异常和授权时间保留在资料记录。修改/停用资料后当前解读失效，须重做解读才能再转提案。搁置不删除原文；恢复可继续。已进入选题库的方向保留当时来源版本，不会因为后来搁置原资料而自动删除；已经发布的内容也不自动撤回。

进入选题库后仍沿“灵感理解 → 独立构思 → 生成与润色 → 编辑检查 → 专业审核”的同一生产链路。选题只是方向；需要专业结论时可补已确认素材。此模块不自动写文章、专业审核、发布，也没有服务器定时消化全库。

## 验证与接手
archive.js：格式解析、授权门禁、内容去重、解读提示、响应验证、当前版本与自动闸门；archive-ui.js：批量任务、可见进度、人工选择、写入回读、错误留痕；server/archive-topic.mjs：服务端闸门；inspiration-core.mjs：选题落库和稳定重试。ai.js新增interpret方法复用已配置供应商。

archive.cjs验证标题/文章导入、去重、范围、敏感与时效闸门、引用及云端结构；archive-topics.mjs真实SQLite验证落库回读、重试、自动限制和人工敏感提案进review；archive-ui.cjs运行实际页面脚本完成导入→模拟模型批解读→仅合格项自动入库→标题人工选择→敏感搁置→重载。既有素材、内容生产与质检回归通过。所有模型响应和历史资料均为隔离测试，不消耗真实供应商用量、不写入用户真实资料。

尚待实际验收：用户真实历史资料、真实模型提炼质量、跨设备历史库同步和原生浏览器操作。前次原生预览环境连接拒绝，本轮不把DOM脚本测试当作原生浏览器验收。


## V0.14.1 文件夹与多文件导入（2026-10-23）
历史资料库顶部可拖入文件夹（递归子目录）、多个文件，或点击“选择文件夹”“多选文件”。先显示相对路径与扫描清单，不读取模型、不直接生成选题；确认本批使用授权与脱敏后，点击“批量导入清单中的文件”。清空清单不删除已入库资料，也不修改电脑上的文件。

支持TXT、MD/Markdown、JSON数组与CSV。TXT/MD默认一文件一篇正文，首个非空行作初始资料名；若勾选标题清单则每个非空行一条，仅标题入库。JSON字段沿用title/body/origin/date，CSV需要title或标题列，可选body/正文/内容、origin/来源、date/日期列。CSV支持带引号的多行正文。单文件可含1—2000条，内部按20条验证；粘贴入口仍限制每批20条。

文件内容保留相对路径、行序及编码记录。按内容指纹去重，不按文件名判断；同文换文件夹不会重复入库。不支持的Word、PDF、图片、压缩包会列出跳过原因，当前没有解析或OCR。支持UTF-8、带BOM的UTF-16，UTF-8失败时兼容尝试GB18030并标记需核对。

限制：清单最多2000文件、目录最多30层、单文件2MB，每次扫描可读文件合计30MB。账号已有资料与本批合并后最多2000份，并预检本地同步快照3.6MiB（服务端上限4MiB）。超过容量会明确拒绝该文件，不作全部成功提示；其余文件继续处理。导入逐文件保存，并沿用账号云同步状态；“已导入”不代表服务器已确认同步，须查看工作台同步状态。跨设备不会共享尚未导入的本机文件清单。

新增archive-files.js负责同步捕获拖拽目录句柄、循环读取所有目录批次、解码和格式适配；archive-files-ui.js负责文件清单、进度、授权、逐文件失败与结果统计。与旧批量解读任务互斥。扫描或导入期间保持页面打开，不是后台无人值守文件监控。

验证：archive-files.cjs覆盖超过100个目录条目、子目录、CSV多行、超过20条JSON/标题、UTF-16、大小及格式跳过；archive-files-ui.cjs运行实际页面drop事件、嵌套目录清单、授权、批量保存、路径追溯、重复跳过与清单清除。旧历史解读、专业素材、内容生产UI回归通过。测试使用隔离虚构文件，无真实模型调用或用户业务数据读取。原生浏览器预览基础设施仍不可用，Windows资源管理器实际拖拽与文件夹选择尚待实机验证。

实现参考：MDN DataTransferItem.webkitGetAsEntry 与 FileSystemDirectoryReader.readEntries；Chromium目录每批可能只返回100项，必须循环读到空批次。https://developer.mozilla.org/en-US/docs/Web/API/DataTransferItem/webkitGetAsEntry ，https://developer.mozilla.org/en-US/docs/Web/API/FileSystemDirectoryReader/readEntries 。
