feat: govern knowledge assets and source citations
This commit is contained in:
@@ -2,7 +2,7 @@
|
||||
|
||||
> 制定日期:2026-07-31
|
||||
>
|
||||
> 当前状态:阶段 0 基线冻结已完成;阶段 1—6 待实施
|
||||
> 当前状态:阶段 0 基线冻结已完成;阶段 1—5 已实现部分能力但尚未满足完整技术通过门禁;阶段 6 未开始
|
||||
>
|
||||
> 适用范围:`mobile-uni` 员工端“问 · 数字师傅”、`/api/aihr/agent/**`、知识检索与受控原始资料接口
|
||||
|
||||
@@ -99,11 +99,11 @@ output/citation-source-viewer/<run-id>/
|
||||
| 阶段 | 交付物 | 完成门禁 | 当前状态 |
|
||||
|---|---|---|---|
|
||||
| 0. 基线冻结 | 当前引用、资源、视频解析和权限链路事实 | 源码位置与缺口逐项复核 | 已完成 |
|
||||
| 1. 定位数据契约 | schema、结构化解析结果、写入和替换一致性 | 迁移幂等;六类样本定位记录正确 | 未开始 |
|
||||
| 2. 受控详情与媒体接口 | `detailRef`、详情解析、全文、图片和 Range 视频 | 正授权成功;跨租户/撤权/伪造全部拒绝 | 未开始 |
|
||||
| 3. 手机端引用详情 | 可点击引用、全文高亮、图片预览、视频定位 | 390×844 主路径实际点击;H5 与 App 测试通过 | 未开始 |
|
||||
| 4. 历史资料回填 | 安全回填、失败降级、进度报告 | 不改正式来源审批;成功/失败/降级数量可核对 | 未开始 |
|
||||
| 5. 集成、安全与性能 | 全链路矩阵、并发/Range/资源释放 | 零越权;定位误差和性能达到冻结阈值 | 未开始 |
|
||||
| 1. 定位数据契约 | schema、结构化解析结果、写入和替换一致性 | 迁移幂等;六类样本定位记录正确 | 实现中 |
|
||||
| 2. 受控详情与媒体接口 | `detailRef`、详情解析、全文、图片和 Range 视频 | 正授权成功;跨租户/撤权/伪造全部拒绝 | 实现中 |
|
||||
| 3. 手机端引用详情 | 可点击引用、全文高亮、图片预览、视频定位 | 390×844 主路径实际点击;H5 与 App 测试通过 | 实现中 |
|
||||
| 4. 历史资料回填 | 安全回填、失败降级、进度报告 | 不改正式来源审批;成功/失败/降级数量可核对 | 实现中 |
|
||||
| 5. 集成、安全与性能 | 全链路矩阵、并发/Range/资源释放 | 零越权;定位误差和性能达到冻结阈值 | 实现中 |
|
||||
| 6. 发布与真机收口 | schema、后端、H5/Android 发布与生产验证 | 独立授权发布;正式账号和签名 APK 真机证据 | 未开始 |
|
||||
|
||||
依赖顺序:
|
||||
@@ -262,14 +262,14 @@ mvn -f backend/pom.xml -pl ruoyi-modules/ruoyi-aihr -am `
|
||||
|
||||
| 字段 | 实际值 |
|
||||
|---|---|
|
||||
| 状态 | 待填写 |
|
||||
| commit | 待填写 |
|
||||
| JUnit | 待填写,例如 `18/18` |
|
||||
| 迁移幂等 | 待填写 |
|
||||
| 六类样本定位 | 待填写 |
|
||||
| 替换/失败清理 | 待填写 |
|
||||
| 证据目录 | 待填写 |
|
||||
| 遗留项 | 待填写 |
|
||||
| 状态 | 实现中 |
|
||||
| commit | 工作区未提交,当前 HEAD `cafb836` |
|
||||
| JUnit | 未运行:当前 PowerShell 未找到 `java`/`mvn` |
|
||||
| 迁移幂等 | 本地 locator 迁移与回填已执行;未完成两次正式迁移的 JUnit 证明 |
|
||||
| 六类样本定位 | 当前本地 seed 仅有 5 个文本附件、15 个 TEXT locator;PDF/DOCX/PPTX/XLSX/IMAGE/VIDEO 固定样本未完成 |
|
||||
| 替换/失败清理 | 代码路径已实现,未完成后端自动化复跑 |
|
||||
| 证据目录 | `output/citation-source-viewer/20260731-local/` |
|
||||
| 遗留项 | 缺少 Java/Maven 运行时及六类公开合成附件样本 |
|
||||
|
||||
---
|
||||
|
||||
@@ -366,15 +366,15 @@ GET /api/knowledge/citations/{detailRef}
|
||||
|
||||
| 字段 | 实际值 |
|
||||
|---|---|
|
||||
| 状态 | 待填写 |
|
||||
| commit | 待填写 |
|
||||
| JUnit | 待填写 |
|
||||
| 正授权 | 待填写 |
|
||||
| 越权矩阵 | 待填写,例如 `12/12 rejected` |
|
||||
| Range | 待填写,例如 `bytes=... -> 206` |
|
||||
| 日志敏感信息扫描 | 待填写 |
|
||||
| 证据目录 | 待填写 |
|
||||
| 遗留项 | 待填写 |
|
||||
| 状态 | 实现中 |
|
||||
| commit | 工作区未提交,当前 HEAD `cafb836` |
|
||||
| JUnit | 未运行:当前 PowerShell 未找到 `java`/`mvn` |
|
||||
| 正授权 | 未完成;本地 `aihr_knowledge_app` 为空,真实问答返回“当前登录端未启用知识问答应用” |
|
||||
| 越权矩阵 | 未完成;源码保留租户、应用、主体、来源治理复验,未形成后端运行证据 |
|
||||
| Range | 未完成后端运行验证;实现已加入 OSS/MinIO Range 链路 |
|
||||
| 日志敏感信息扫描 | 未完成后端运行日志扫描;未在移动端脱敏证据中写入手机号、令牌或 OSS 原址 |
|
||||
| 证据目录 | `output/citation-source-viewer/20260731-local/` |
|
||||
| 遗留项 | 需要 Java/Maven、真实 APP 应用绑定、带 `oss_id` 的授权附件及后端正反权限矩阵 |
|
||||
|
||||
---
|
||||
|
||||
@@ -451,15 +451,17 @@ npm --prefix mobile-uni run build:app
|
||||
|
||||
| 字段 | 实际值 |
|
||||
|---|---|
|
||||
| 状态 | 待填写 |
|
||||
| commit | 待填写 |
|
||||
| Node tests | 待填写 |
|
||||
| typecheck | 待填写 |
|
||||
| H5/App build | 待填写 |
|
||||
| 390×844 文本/图片/视频 | 待填写,例如 `3/3` |
|
||||
| 错误状态 | 待填写 |
|
||||
| 截图目录 | 待填写 |
|
||||
| 遗留项 | 待填写 |
|
||||
| 状态 | 实现中 |
|
||||
| commit | 工作区未提交,当前 HEAD `cafb836` |
|
||||
| Node tests | `node --test mobile-uni/tests/*.test.mjs`:`211/211` 通过;有既有 WebSocket 端口占用告警但无失败用例 |
|
||||
| typecheck | `npm --prefix mobile-uni run typecheck`:通过 |
|
||||
| H5/App build | `npm --prefix mobile-uni run build:h5` 与 `build:app`:均完成;仅有既有 Sass 弃用告警 |
|
||||
| 390×844 文本/图片/视频 | 真实引用 `0/3`:员工首页和问页面可加载,但本地应用未启用知识问答,未生成真实 citation;未伪造图片/视频 fixture |
|
||||
| 错误状态 | 详情页无引用参数正确显示不可查看状态;点击“返回问答”回到首页;问答业务错误明确显示应用未启用 |
|
||||
| 截图目录 | `output/citation-source-viewer/20260731-local/`,含首页、问答错误和详情不可查看截图 |
|
||||
| 遗留项 | 未完成真实文本高亮、图片缩放、视频定位;需配置本地 APP 绑定和受控附件后复核 |
|
||||
|
||||
本次浏览器复核(2026-07-31,指定在职测试账号切换后):通过内置 Browser 完成退出旧会话、重新获取验证码、登录和进入员工端“问”页面;固定制度问题返回真实回答并展开 `3` 条引用。当前 3 条引用均为旧知识片段,DOM 中 `.citation-action` 与“查看出处”入口均为 `0`,因此没有可安全构造的 `detailRef`,未伪造详情 URL。已保存脱敏页面证据:`output/citation-source-viewer/20260731-local/question-citations-expanded.png`。本次验证结论为“引用展示通过,出处详情被定位数据缺失阻断”,不计入文本/图片/视频 `3/3` 详情门禁。
|
||||
|
||||
---
|
||||
|
||||
@@ -532,15 +534,15 @@ qdrant_points_unchanged
|
||||
|
||||
| 字段 | 实际值 |
|
||||
|---|---|
|
||||
| 状态 | 待填写 |
|
||||
| commit | 待填写 |
|
||||
| 计划分母 | 待填写 |
|
||||
| exact/coarse/ambiguous/failed | 待填写 |
|
||||
| 抽检 | 待填写 |
|
||||
| 正式来源未变化 | 待填写 |
|
||||
| fragment/Qdrant 未变化 | 待填写 |
|
||||
| 证据目录 | 待填写 |
|
||||
| 遗留项 | 待填写 |
|
||||
| 状态 | 实现中 |
|
||||
| commit | 工作区未提交,当前 HEAD `cafb836` |
|
||||
| 计划分母 | `attachments_total=5`,`locators_before=15` |
|
||||
| exact/coarse/ambiguous/failed | `exact=15`,`coarse=0`,`ambiguous=0`,`failed=0`;`locators_created=0` |
|
||||
| 抽检 | 已核对本地 5 个 seed 附件及 15 条 locator;未覆盖计划要求的 PDF/PPT/图片/视频抽检样本 |
|
||||
| 正式来源未变化 | `formal_sources_unchanged=0`(本地无治理来源记录,未写入正式来源) |
|
||||
| fragment/Qdrant 未变化 | fragment 与 Qdrant 未变化(只回填 locator) |
|
||||
| 证据目录 | `output/citation-source-viewer/20260731-local/` |
|
||||
| 遗留项 | 需要公开合成六类样本及生产正式来源状态后再完成阶段门禁 |
|
||||
|
||||
---
|
||||
|
||||
@@ -585,18 +587,18 @@ qdrant_points_unchanged
|
||||
|
||||
| 字段 | 实际值 |
|
||||
|---|---|
|
||||
| 状态 | 待填写 |
|
||||
| commit | 待填写 |
|
||||
| 后端测试 | 待填写 |
|
||||
| 移动端测试 | 待填写 |
|
||||
| 越权矩阵 | 待填写 |
|
||||
| 定位误差 | 待填写 |
|
||||
| Range | 待填写 |
|
||||
| p50/p95 | 待填写 |
|
||||
| 资源泄漏循环 | 待填写 |
|
||||
| 敏感信息扫描 | 待填写 |
|
||||
| 证据目录 | 待填写 |
|
||||
| 遗留项 | 待填写 |
|
||||
| 状态 | 实现中 |
|
||||
| commit | 工作区未提交,当前 HEAD `cafb836` |
|
||||
| 后端测试 | 未运行:当前 PowerShell 未找到 `java`/`mvn` |
|
||||
| 移动端测试 | Node `211/211` 通过;typecheck、H5/App build 通过 |
|
||||
| 越权矩阵 | 未完成真实后端矩阵;仅完成源码级治理约束复核 |
|
||||
| 定位误差 | 未测量;无真实视频引用数据 |
|
||||
| Range | 未测量;无带 `oss_id` 的本地授权视频 fixture |
|
||||
| p50/p95 | 未测量 |
|
||||
| 资源泄漏循环 | Node 单元覆盖 Blob URL 释放,未完成 20 次真实页面循环 |
|
||||
| 敏感信息扫描 | 移动端截图/DOM 证据未包含手机号、验证码、令牌、票据或 OSS 原址;后端日志扫描未完成 |
|
||||
| 证据目录 | `output/citation-source-viewer/20260731-local/` |
|
||||
| 遗留项 | 后端运行时、正式/测试授权数据、Range 样本和性能基准均待补齐 |
|
||||
|
||||
---
|
||||
|
||||
@@ -659,21 +661,21 @@ Android 真机:
|
||||
|
||||
| 字段 | 实际值 |
|
||||
|---|---|
|
||||
| 状态 | 待填写 |
|
||||
| release commit | 待填写 |
|
||||
| schema 版本/迁移结果 | 待填写 |
|
||||
| 生产 JAR SHA-256 | 待填写 |
|
||||
| H5 构建与远端哈希 | 待填写 |
|
||||
| APK 版本/versionCode | 待填写 |
|
||||
| APK SHA-256/签名摘要 | 待填写 |
|
||||
| 生产正反权限 | 待填写 |
|
||||
| 真机型号/Android | 待填写 |
|
||||
| 文本/图片/视频 | 待填写,例如 `3/3` |
|
||||
| 视频定位误差 | 待填写 |
|
||||
| Crash/ANR | 待填写 |
|
||||
| 回滚物 | 待填写 |
|
||||
| 证据目录 | 待填写 |
|
||||
| 遗留项 | 待填写 |
|
||||
| 状态 | 未开始 |
|
||||
| release commit | 未发布;工作区未提交,当前 HEAD `cafb836` |
|
||||
| schema 版本/迁移结果 | 仅本地 Docker 数据库验证;未执行生产迁移 |
|
||||
| 生产 JAR SHA-256 | 未生成/未部署 |
|
||||
| H5 构建与远端哈希 | 本地 H5 构建完成;未生产发布、未计算远端哈希 |
|
||||
| APK 版本/versionCode | App-Plus 构建输入完成;未出包、未安装真机 |
|
||||
| APK SHA-256/签名摘要 | 未生成 |
|
||||
| 生产正反权限 | 未验证 |
|
||||
| 真机型号/Android | 未验证 |
|
||||
| 文本/图片/视频 | `0/3`,未进行正式账号真机验收 |
|
||||
| 视频定位误差 | 未测量 |
|
||||
| Crash/ANR | 未验证 |
|
||||
| 回滚物 | 未生成 |
|
||||
| 证据目录 | `output/citation-source-viewer/20260731-local/`(仅本地浏览器证据) |
|
||||
| 遗留项 | 未授权生产部署;未完成正式账号、Android 真机、签名 APK 和正式资源验收 |
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in New Issue
Block a user