docs(release): record ask-module evidence-grading rollout

- CHANGELOG: 2026-08-05 entry with deploy evidence, verification
  levels and open items
- runbook: execution log entry + two new migrations in the sequence
- AGENTS.md: macOS GNU stat shim requirement for release scripts
This commit is contained in:
2026-08-05 01:35:34 +08:00
parent 08e1ad33b6
commit 8226bf1c27
3 changed files with 11 additions and 1 deletions
+1 -1
View File
@@ -46,7 +46,7 @@
- 只发布移动端静态资源时,用 `npm --prefix mobile-uni run build:h5` 后备份远端 `/opt/wygj/www/h5`,再 `rsync -az --delete mobile-uni/dist/build/h5/ YCWY:/opt/wygj/www/h5/`;前端静态修复不需要重启后端。 - 只发布移动端静态资源时,用 `npm --prefix mobile-uni run build:h5` 后备份远端 `/opt/wygj/www/h5`,再 `rsync -az --delete mobile-uni/dist/build/h5/ YCWY:/opt/wygj/www/h5/`;前端静态修复不需要重启后端。
- 原生 App 不复用 H5 静态发布流程;`npm --prefix mobile-uni run build:app` 仅生成 HBuilderX 出包资源,未提供法务 HTTPS 链接、签名或真机验收前不得称为已出包或上架。 - 原生 App 不复用 H5 静态发布流程;`npm --prefix mobile-uni run build:app` 仅生成 HBuilderX 出包资源,未提供法务 HTTPS 链接、签名或真机验收前不得称为已出包或上架。
- 定向后端发布只启用远端后端 + schema 的 `release-preflight`,不得因本轮未发布的管理端/H5 不匹配而制造假失败,也不得把结果称为完整包匹配;完整发布收口须同时启用远端静态、后端和 schema,只有三项都通过才可称当前本地构建已与线上完整包匹配。 - 定向后端发布只启用远端后端 + schema 的 `release-preflight`,不得因本轮未发布的管理端/H5 不匹配而制造假失败,也不得把结果称为完整包匹配;完整发布收口须同时启用远端静态、后端和 schema,只有三项都通过才可称当前本地构建已与线上完整包匹配。
- 定向后端发布先运行只读 `scripts/release-backend.sh plan`;`deploy`/`rollback` 必须获得独立明确授权并使用计划输出的完整哈希授权串。脚本目标固定为 `YCWY:/opt/wygj/app/ruoyi-admin.jar` 和 `wygj-aihr.service`,不得绕过备份、原子切换、发布后预检和失败恢复链路手工覆盖。 - 定向后端发布先运行只读 `scripts/release-backend.sh plan`;`deploy`/`rollback` 必须获得独立明确授权并使用计划输出的完整哈希授权串。脚本目标固定为 `YCWY:/opt/wygj/app/ruoyi-admin.jar` 和 `wygj-aihr.service`,不得绕过备份、原子切换、发布后预检和失败恢复链路手工覆盖。在 macOS 上运行发布/预检脚本需要 GNU stat(脚本内 `stat -c` 为 GNU 语法):安装 coreutils 后用 `PATH="<repo>/.tmp/gnu-bin:$PATH"` 垫片(`ln -sf $(brew --prefix)/bin/gstat .tmp/gnu-bin/stat`),远端 SSH 内命令不受影响。
- `aihr.practice.runtime-schema-bootstrap` / `AIHR_PRACTICE_RUNTIME_SCHEMA_BOOTSTRAP` 仅限本地开发逃生开关,Spring 默认关闭;生产请求只能校验表、列和关键索引,任何 DDL 都必须由正式 SQL 迁移完成,完整预检会拒绝开启该开关的服务。 - `aihr.practice.runtime-schema-bootstrap` / `AIHR_PRACTICE_RUNTIME_SCHEMA_BOOTSTRAP` 仅限本地开发逃生开关,Spring 默认关闭;生产请求只能校验表、列和关键索引,任何 DDL 都必须由正式 SQL 迁移完成,完整预检会拒绝开启该开关的服务。
## 当前业务边界 ## 当前业务边界
+1
View File
@@ -4,6 +4,7 @@
## Unreleased ## Unreleased
- **2026-08-05,问模块证据分级、澄清闭环与 ROUTE 出口已发布并完成真机验证**:员工问答从“正式源检索封锁 + 官腔拒答”改为四级证据仲裁(`FULL/PARTIAL/GUIDANCE/ROUTE`):`AihrEvidenceGradingService` 为唯一仲裁点,`GUIDANCE` 允许参考经验出流程答案但强制标注“非正式制度依据”,政策断言只允许 FORMAL 引用(policyClaims 后置校验 + 金额断言启发式兜底);程序性问题不再追问金额语义,挂起澄清随 30 分钟会话闭环(已回答/放弃/新话题,同一澄清最多问一轮);`ROUTE` 给出转人工/直通财务/查全网可执行出口,`aihr_knowledge_answer_feedback.fragment_id` 可空使零引用答案也能走“自动补 down 反馈 + 确认”的幂等转人工链。迁移 `aihr_20260804_pending_clarification_mysql8.sql`、`aihr_20260804_feedback_fragment_nullable_mysql8.sql` 及 `aihr_20260804_unify_all_collations_mysql8.sql` 已在生产执行并核验(执行前备份相关表至 `/opt/wygj/backups/pre-20260804-ask-refactor-20260805-005414`)。后端 JAR SHA-256 `f1fe73d8c499f75bcd44f52893033d21910fec6ba2745598874dd7d73f54735d` 经定向发布脚本备份、原子切换与发布后预检(schema `83/83`、collation `0/0`、模块哈希一致),回滚备份 `/opt/wygj/backups/backend-20260805005921-74d0cd2acc60`;移动 H5 已同步发布(远端备份 `/opt/wygj/backups/h5-pre-ask-refactor-20260805-010119`)。后端 `1014/1014` 测试、移动端 typecheck 与 H5/App 构建通过;vivo V2443A(Android 15)经 HBuilderX 5.23 标准基座完成固定码登录和“单笔500元采购报销”发问、追问放弃澄清、出口按钮组的真实链路验证。`@dcloudio/*` 编译器同步升级为 `3.0.0-alpha-5020320260803001`(对齐 HBuilderX-Alpha 5.23),版本号升至 `0.1.18 (118)`。标准基座验证不算签名包验收:`0.1.18` 云打包 APK、APK 门禁、真机正式验收和受控分发均未完成;非金额类政策断言的分级依赖模型诚实标注(观察项),空片段反馈并发双击可能产生冗余行(有幂等兜底),已点“有用”的答案上转人工会被 409 拒绝(前端待禁用)。
- **2026-08-04,受约束 Grounded Agent 与财务 RAG 证据门禁完成实现并受控发布**:新增 `ResolvedContext/SemanticQueryPlan/ExecutionContext/ToolCall/ToolResult/DocumentEvidence/VerifiedFact/DecisionResult/GroundedAnswer` 契约,接入 `MY_CURRENT_TASKS + KNOWLEDGE_SEARCH` 双工具、服务端授权参数注入、有界工具执行、候选调用去重、受控超时、证据槽位/来源权威/正文蕴含门禁、逐结论引用校验及结构化会话状态。财务金额覆盖 `¥500`、`五百块`、`不到500`、单笔/月累计与口径冲突;知识检索为不生成答案的授权证据工具,并将候选召回、rerank 和最终 evidence/display 截断分层。生产后端以 JAR SHA-256 `74d0cd2acc60ebf52f20eb8bee643f59395ba7cff3583076d671e57406f824ac` 发布,`wygj-aihr.service` 为 `active`,schema `83/83`,公开根站、租户列表和移动首页 HTTP 200;生产 `ACTIVE` 仅覆盖文本 `KNOWLEDGE_QA`/`LIVE_MY_WORK`,其余请求和不合格计划回退旧链路。30 条纯内存黄金场景、RAG/资料治理/Agent 新链路 166 项、旧 Planner/Orchestrator/会话兼容 45 项及 additive MySQL 8 迁移回归通过。认证态用户逐例问答、客户端状态 UI 全量验收、真实模型 + MySQL/Qdrant 的完整召回评测和 100–300 条人工黄金集仍待完成,不能据此宣称生产召回率达标。 - **2026-08-04,受约束 Grounded Agent 与财务 RAG 证据门禁完成实现并受控发布**:新增 `ResolvedContext/SemanticQueryPlan/ExecutionContext/ToolCall/ToolResult/DocumentEvidence/VerifiedFact/DecisionResult/GroundedAnswer` 契约,接入 `MY_CURRENT_TASKS + KNOWLEDGE_SEARCH` 双工具、服务端授权参数注入、有界工具执行、候选调用去重、受控超时、证据槽位/来源权威/正文蕴含门禁、逐结论引用校验及结构化会话状态。财务金额覆盖 `¥500`、`五百块`、`不到500`、单笔/月累计与口径冲突;知识检索为不生成答案的授权证据工具,并将候选召回、rerank 和最终 evidence/display 截断分层。生产后端以 JAR SHA-256 `74d0cd2acc60ebf52f20eb8bee643f59395ba7cff3583076d671e57406f824ac` 发布,`wygj-aihr.service` 为 `active`,schema `83/83`,公开根站、租户列表和移动首页 HTTP 200;生产 `ACTIVE` 仅覆盖文本 `KNOWLEDGE_QA`/`LIVE_MY_WORK`,其余请求和不合格计划回退旧链路。30 条纯内存黄金场景、RAG/资料治理/Agent 新链路 166 项、旧 Planner/Orchestrator/会话兼容 45 项及 additive MySQL 8 迁移回归通过。认证态用户逐例问答、客户端状态 UI 全量验收、真实模型 + MySQL/Qdrant 的完整召回评测和 100–300 条人工黄金集仍待完成,不能据此宣称生产召回率达标。
- **2026-08-02,功能复核清单首批增量已实现并完成本地验证,未部署**:当前工作树新增大喇叭 `ALL/TARGET_ONLY` 可见性、受控在线查看与动态水印、下载门禁和带原文依据的主题标签;问师傅未解决反馈确认转待审核问题;正式学习任务、审核题库随机组卷及考试关联;案例经验“候选→审核→发布→下线”;原生异常恢复回归和资料暂存盘容量健康门禁。管理端生产构建、移动端类型检查与 `216/216` 单测、后端 `838/838` 测试及迁移静态清单通过;`390×844` 已验证员工主要入口和登录门禁。Docker/MySQL 未运行,四个 `aihr_20260802_*` 迁移尚未执行,管理端认证业务、峰值压测、签名 APK、真机、生产发布和严格试点均未验收。 - **2026-08-02,功能复核清单首批增量已实现并完成本地验证,未部署**:当前工作树新增大喇叭 `ALL/TARGET_ONLY` 可见性、受控在线查看与动态水印、下载门禁和带原文依据的主题标签;问师傅未解决反馈确认转待审核问题;正式学习任务、审核题库随机组卷及考试关联;案例经验“候选→审核→发布→下线”;原生异常恢复回归和资料暂存盘容量健康门禁。管理端生产构建、移动端类型检查与 `216/216` 单测、后端 `838/838` 测试及迁移静态清单通过;`390×844` 已验证员工主要入口和登录门禁。Docker/MySQL 未运行,四个 `aihr_20260802_*` 迁移尚未执行,管理端认证业务、峰值压测、签名 APK、真机、生产发布和严格试点均未验收。
- **2026-07-31,8 月 1 日受控内部公测门禁收口为 Go**:最新后端 JAR SHA-256 `d5145194024ba3526a869e3270df6d71468931b96ba9aebb93121592e54012eb` 已上线,正式政策模式只允许当前有效、已批准、版本与原文件哈希完整且与问题领域相关的来源进入回答;没有相关制度时失败关闭,不再回退经验萃取或访谈材料。使用生产现有 APP 账号重跑 30 道策略题,11 题只引用已批准正式来源,分期缴费题返回 `NO_EVIDENCE`,其余冲突、无依据和越权题按边界返回,合计 `30/30`;证据不保存手机号、验证码、令牌、问题或答案正文。生产 5 个 `v1.1` 场景及独立审核链、五通道各 2 名有效处理人、本通道正例/跨通道拒绝/一次正式回复 `5/5`、五类负责人委托签认,以及 `0.1.17 (117)` 的 DCloud 测试签名受控分发例外均已回填。严格内容门禁和生产只读就绪门禁均通过;同时修复就绪脚本把含 `|` 的场景快照直接作为 SSH 参数导致远端误解析为管道的问题,改为 Base64 单参数传输。该 Go 仅适用于受控内部公测,不代表应用商店发布、企业正式签名或阶段一严格试点窗口通过。 - **2026-07-31,8 月 1 日受控内部公测门禁收口为 Go**:最新后端 JAR SHA-256 `d5145194024ba3526a869e3270df6d71468931b96ba9aebb93121592e54012eb` 已上线,正式政策模式只允许当前有效、已批准、版本与原文件哈希完整且与问题领域相关的来源进入回答;没有相关制度时失败关闭,不再回退经验萃取或访谈材料。使用生产现有 APP 账号重跑 30 道策略题,11 题只引用已批准正式来源,分期缴费题返回 `NO_EVIDENCE`,其余冲突、无依据和越权题按边界返回,合计 `30/30`;证据不保存手机号、验证码、令牌、问题或答案正文。生产 5 个 `v1.1` 场景及独立审核链、五通道各 2 名有效处理人、本通道正例/跨通道拒绝/一次正式回复 `5/5`、五类负责人委托签认,以及 `0.1.17 (117)` 的 DCloud 测试签名受控分发例外均已回填。严格内容门禁和生产只读就绪门禁均通过;同时修复就绪脚本把含 `|` 的场景快照直接作为 SSH 参数导致远端误解析为管道的问题,改为 Base64 单参数传输。该 Go 仅适用于受控内部公测,不代表应用商店发布、企业正式签名或阶段一严格试点窗口通过。
+9
View File
@@ -60,6 +60,13 @@
- 使用生产现有 APP 账号重新执行 30 题,得到 11 个正式有据回答和 19 个冲突/无依据/越权安全边界,合计 `30/30`,且不在证据中保存手机号、验证码、令牌、问题或答案正文; - 使用生产现有 APP 账号重新执行 30 题,得到 11 个正式有据回答和 19 个冲突/无依据/越权安全边界,合计 `30/30`,且不在证据中保存手机号、验证码、令牌、问题或答案正文;
- 场景 `5/5`、问题 `30/30`、五通道 `5/5`、负责人 `5/5` 和 DCloud 测试签名受控分发均已签认;`verify-aug1-formal-content.mjs --strict` 与 `verify-aug1-release-readiness.sh --execute` 通过。该结论仅为 2026-08-01 受控内部公测 Go,不替代严格试点窗口或对外正式发布。 - 场景 `5/5`、问题 `30/30`、五通道 `5/5`、负责人 `5/5` 和 DCloud 测试签名受控分发均已签认;`verify-aug1-formal-content.mjs --strict` 与 `verify-aug1-release-readiness.sh --execute` 通过。该结论仅为 2026-08-01 受控内部公测 Go,不替代严格试点窗口或对外正式发布。
2026-08-05 已完成问模块证据分级与澄清闭环的后端 + H5 定向发布:
- 执行 `aihr_20260804_pending_clarification_mysql8.sql` 与 `aihr_20260804_feedback_fragment_nullable_mysql8.sql`(执行前备份 `aihr_knowledge_conversation`、`aihr_knowledge_answer_feedback` 至 `/opt/wygj/backups/pre-20260804-ask-refactor-20260805-005414`),并补齐 `aihr_20260804_unify_all_collations_mysql8.sql` 使远端非规范排序规则列归零;两列结构已只读核验;
- 生产后端 JAR SHA-256 为 `f1fe73d8c499f75bcd44f52893033d21910fec6ba2745598874dd7d73f54735d`,回滚备份为 `/opt/wygj/backups/backend-20260805005921-74d0cd2acc60`;服务激活、三个公开入口、AIHR 模块匹配、schema `83/83` 与 collation `0/0` 均通过,运行时 schema bootstrap 保持关闭;
- 移动 H5 已同步发布(远端备份 `/opt/wygj/backups/h5-pre-ask-refactor-20260805-010119`);vivo V2443A(Android 15)经 HBuilderX 5.23 标准基座完成固定码登录与问模块 ROUTE 出口、澄清放弃闭环的真实链路验证;
- 本次只证明问模块分级仲裁、澄清闭环与无片段转人工链路的定向发布成功。`0.1.18` 云打包 APK、签名包真机验收、受控分发与严格试点仍须分别验收。
2026-07-20 增量把“项目服务记忆最小切片”扩展为工作助手确认式统一采集:显式“记一下”生成候选,用户确认后按 `PRIVATE/COMPANY` 写入 `aihr_assistant_capture`;个人记录仅本人可见,公司记录先保持 `PENDING`,正式接收端和回执尚未实现。旧 `aihr_service_memory/version` 继续兼容项目记录;同批会话式“工作上报”继续使用既有 `aihr_work_report`,并补 `request_key/request_hash` 和唯一索引。 2026-07-20 增量把“项目服务记忆最小切片”扩展为工作助手确认式统一采集:显式“记一下”生成候选,用户确认后按 `PRIVATE/COMPANY` 写入 `aihr_assistant_capture`;个人记录仅本人可见,公司记录先保持 `PENDING`,正式接收端和回执尚未实现。旧 `aihr_service_memory/version` 继续兼容项目记录;同批会话式“工作上报”继续使用既有 `aihr_work_report`,并补 `request_key/request_hash` 和唯一索引。
2026-07-21 已在生产发布项目化工作助手与今日工作成果提交 `4536d607`,并发布确认卡首屏修正 `11250811`: 2026-07-21 已在生产发布项目化工作助手与今日工作成果提交 `4536d607`,并发布确认卡首屏修正 `11250811`:
@@ -169,6 +176,8 @@ mysql --default-character-set=utf8mb4 "$DB_NAME" < backend/script/sql/update/aih
mysql --default-character-set=utf8mb4 "$DB_NAME" < backend/script/sql/update/aihr_20260814_knowledge_privacy_derivative_mysql8.sql mysql --default-character-set=utf8mb4 "$DB_NAME" < backend/script/sql/update/aihr_20260814_knowledge_privacy_derivative_mysql8.sql
mysql --default-character-set=utf8mb4 "$DB_NAME" < backend/script/sql/update/aihr_20260815_rag_candidate_trace_mysql8.sql mysql --default-character-set=utf8mb4 "$DB_NAME" < backend/script/sql/update/aihr_20260815_rag_candidate_trace_mysql8.sql
mysql --default-character-set=utf8mb4 "$DB_NAME" < backend/script/sql/update/aihr_20260804_query_result_observability_mysql8.sql mysql --default-character-set=utf8mb4 "$DB_NAME" < backend/script/sql/update/aihr_20260804_query_result_observability_mysql8.sql
mysql --default-character-set=utf8mb4 "$DB_NAME" < backend/script/sql/update/aihr_20260804_pending_clarification_mysql8.sql
mysql --default-character-set=utf8mb4 "$DB_NAME" < backend/script/sql/update/aihr_20260804_feedback_fragment_nullable_mysql8.sql
mysql --default-character-set=utf8mb4 "$DB_NAME" < backend/script/sql/update/aihr_20260815_knowledge_rollout_compat_mysql8.sql mysql --default-character-set=utf8mb4 "$DB_NAME" < backend/script/sql/update/aihr_20260815_knowledge_rollout_compat_mysql8.sql
mysql --default-character-set=utf8mb4 "$DB_NAME" < backend/script/sql/update/aihr_20260816_knowledge_version_pointers_mysql8.sql mysql --default-character-set=utf8mb4 "$DB_NAME" < backend/script/sql/update/aihr_20260816_knowledge_version_pointers_mysql8.sql
mysql --default-character-set=utf8mb4 "$DB_NAME" < backend/script/sql/update/aihr_20260817_knowledge_review_assistance_mysql8.sql mysql --default-character-set=utf8mb4 "$DB_NAME" < backend/script/sql/update/aihr_20260817_knowledge_review_assistance_mysql8.sql