- 日期:2026-09-05
- 基线:
b263baff0662158259b0cb3b6e8b8d9458d5f2e8;本项独立交付时,第 3 项已完成并保留在同一主工作区 - 范围:路线图第 4 项;ADR 0068
- 数据:仅合成内容、临时数据库和浏览器接口替身;没有读取所有者资料或调用真实 Provider
以下为该项独立交付记录;最新修复和完整集成验证见第 3–5 项联合审查。
从“知识 → 来源复核”进入,默认显示公开范围的待处理关系。 可筛选尚未核对、需要复核、已核对当前版本或全部可见关系;每批 20 条,有上一批和下一批。 列表保留自动、用户或 AI 来源标记,选中项显示关系方向、当前两端条目和原文入口。
分别查看两端精确来源,选择本次核验状态,填写最多 500 个字符的维护说明,再点“保存并继续”。 成功后重新读取并移至下一项,跨批继续使用当前筛选范围。版本冲突会保留失败提示,要求重新读取后核对。 筛选或隐私范围变化立即清除旧详情和来源,迟到的读取、保存或来源响应不能把旧内容带回页面。
“已核对来源”只记录用户检查过当前两端版本,不表示客观事实已被证明。 任一条目后来修订,即使只改标签或评分,原核验记录也会显示“需要复核”;显示上次记录版本和当前版本供判断。 旧核验没有版本信息时保留原状态和说明,按“需要复核”展示,不猜测历史核验对象。 隐藏关系不出现在复核列表;返回图谱后可以使用原有显式恢复操作。
迁移 000031 在现有关系 override 表增加两个可空正整数:
graph_reviewed_entry_low_revision 和 graph_reviewed_entry_high_revision。
它们要么同时为空,要么同时有效;没有历史回填或新增表。
| 入口 | 职责 |
|---|---|
POST /api/v1/knowledge-graph/source-reviews |
按筛选、隐私和游标读取有界关系列表 |
PUT /api/v1/knowledge-graph/edges/:entryId/:relatedEntryId/source-review |
校验显示版本,只更新核验状态和维护说明 |
列表接受 filter、privacyScope、limit 和可选 after。默认 pending/public/20,最多 50。
privacyScope 为 public/include_private/private_only,最后一种要求两端均为隐私条目。
游标绑定筛选和隐私范围,并按规范排序的 Entry 身份对前进。
SQL 在计数和分页前排除隐私不可见、退役、隐藏和无当前关系的记录,仅装载当前批及一个前瞻关系的端点正文。
写入接受 expectedRevision、includePrivate、expectedEntryRevisions、verificationStatus 和 note。
expectedEntryRevisions 包含按规范身份顺序显示的 entryLowRevision/entryHighRevision。
服务先检查当前可见关系,再在同一工作区锁内重新检查端点结构、隐私、版本、关系可见性及 override 版本。
旧请求不会覆盖新修订,不会借复核恢复隐藏边。写入保留名称、关系语义、方向、AI/用户/计算来源及人工调整。
普通图谱编辑在记录来源核验时也发送两端版本;隐藏和恢复保留绑定。 计算投影重建不修改 override。结构重组产生的新关系保留说明与原状态,但不继承不同 Entry 身份的核验版本。
Association Bundle v5 保存两个字段;v1–v4 升级时补空,工作区传输仍为 66 张表。
本轮没有新增依赖、Provider、自动事实判断、网络核验、隐式历史或旧 M1C Knowledge 运行时。
应用数据库须通过既有迁移入口应用 000031 后使用新接口;本轮只迁移一次性合成数据库,没有升级正在运行的用户实例。
以下在 2026-09-05 的最终代码上通过:
| 检查 | 结果 |
|---|---|
corepack pnpm run verify |
格式、Lint、类型检查、169 个文件 / 1,047 项单元测试、4 项 HTTP 集成测试、构建全部通过 |
| 制品与部署源码边界 | 1,167 个候选制品文件检查通过,部署源码检查通过 |
corepack pnpm run test:e2e |
24 项真实 Chrome 回归通过,包含 3 项新增来源复核场景 |
| 来源复核浏览器边界 | 双端原文与焦点返回、旧无绑定核验、端点冲突重读、保存并跨批继续、空态、超长说明、隐私迟到响应均通过 |
| 像素与可访问性 | 五种宽度、桌面/手机截图复核、键盘、减少动态效果、强制颜色、独立标题 ID;捕获的来源复核页面运行异常为 0 |
构建保留现有单包体积提示(主 JS 约 559 kB,gzip 约 151 kB),不影响构建或本次流程;没有以调整告警阈值掩盖提示。浏览器使用合成 HTTP 响应,HTTP 路由与实际 PostgreSQL 另行验证。
PostgreSQL 命令:corepack pnpm run performance:m2-p0d --smoke。
使用一次性 PostgreSQL 18.6,4 个合成 Snapshot、32 个初始 Entry,31 个迁移应用和重复执行 noop 通过。
三组数据变更阶段覆盖 3 个隐私范围、5 个核验筛选,共 978 次完整分页对象比较,无截断范围。
每页限制 3 对时,实际装载的 Entry 正文最多 8 条(本批加一个前瞻关系),没有把此数字当作数据库扫描量。
真实工作区锁下的并发端点变更、override 冲突、隐藏边拒绝复核、隐私和退役过滤、重建保留决定均通过。
结构替换后的新关系具有原说明和存储状态,但没有旧版本绑定,读取显示需要复核。
数据库导出包含精确核验版本,Association v5 codec 往返相等;旧 v4 核验补空、v1–v3 升级和无效绑定拒绝由单元测试覆盖。
完整个人数据包的跨数据库恢复和所有者资料验收需另行执行。
一次性容器和外部临时数据已清理。
- 组件范围:知识页次级入口、来源复核列表/编辑器,以及复用的只读 Entry 来源详情。
- 视觉家族:
struinfo-industrial,深度complex / 3,沿用现有暗色主题、原生控件和--si-*token。 - 仅合成数据和 API 响应;不添加运行中的自动核验、网络搜索或未安装模块。
- 触及 Web 工作区、API 接线与局部样式;没有修改依赖锁、个人配置或设计资产。
- 浏览器执行已完成聚焦验证,覆盖 320 / 390 / 768 / 1024 / 1440 CSS 像素、键盘、减少动态效果和强制颜色。
实际像素检查修正了复用详情的过大标题和原文按钮换行,来源标题改用独立可访问身份与正确标题层级。 窄屏改为单列,长维护列表使用有限高度,使证据和保存操作保持可达。 隐私切换会清除来源栏;来源关闭后恢复原按钮焦点。超长说明在提交前提示并禁止保存。
| 复核维度 | 结论 |
|---|---|
| 操作清晰 | 从列表逐条核对双端来源,状态/说明保存后继续,冲突有重新读取入口 |
| 实现质量 | 控件可由键盘操作,两端标题 ID 不重复,五种宽度没有横向溢出 |
| 信息可信 | 区分原状态、当前有效状态与已核对版本,保留 AI/用户/计算来源,不把核验说成事实证明 |
最终设计复核:通过,未发现阻断本次来源复核流程的遗留问题。文档链接与 git diff --check 通过。
本轮保留第 3 项改动,没有提交、推送、发布或部署。