Files
prop-ai-hr/CHANGELOG.md
T
admin bb8b2dde7e fix(exam): replace unfounded 4-char title rule with explicit validation messages
- 考试名称仅要求非空,移除无依据的至少 4 字限制;保留及格分 1-100、
  至少一题、总分 100、题干/选项/答案完整、至少一名员工的发布校验
- 发布坞展示具体校验失败原因,不再静默禁用按钮
- CHANGELOG/README 同步 2026-07-25 组织姓名定向补齐与生产复核记录
2026-07-25 18:15:32 +08:00

9.4 KiB
Raw Blame History

Changelog

本文件记录源码变更、生产发布与验证结果;每项明确标注完成层级。时间均为中国标准时间(CST,UTC+8)。

Unreleased

  • 暂无。

2026-07-25 15:40–16:15|组织姓名与考试发布修复

生产数据修复

  • 2026-07-25 15:40:在 /opt/wygj/backups/org-name-sync-20260725-1540/org-data.sql 备份生产组织数据;备份大小 711248 字节,SHA-256 为 9e298bf5e6ac88b6d0e105f510cad3fb9838ed1cf0324a23ee15453a54e3c9dd。
  • 2026-07-25 15:40–15:48:刷新开放组织目录并将租户 000000 绑定到集团根节点 G:1。仅按稳定 employee_id 精确匹配,补齐 aihr_org_snapshot.person_name 共 3417 行;未改手机号、项目、岗位和在职状态。
  • 2026-07-25 15:48:生产复核为组织快照 3417 行、在职 2938 人、在职有姓名 2938 人、手机号映射 3392 个。使用既有生产主管账号调用团队接口返回 2316 名成员,姓名完整 2316 名、编号兜底 0 名;账号、手机号、验证码和 Token 未写入仓库、截图或本记录。
  • 2026-07-25 15:48:未执行全量组织覆盖。只读预检发现上游 3424 名员工中 3398 个手机号已脱敏、存在 1 条重复项目成员关系,并且当前 employee_number 仅能匹配生产既有主体 7/3417,稳定 employee_id 可匹配 3417/3417。在身份字段契约和手机号通道修复前,禁止用 allowPartialReplace=true 绕过后执行覆盖同步。

考试发布修复

  • 2026-07-25 15:55:移除客户端“考试名称至少 4 个字”的无依据限制,改为仅要求名称非空;同时保留及格分 1–100、至少一道题、总分 100、题干/选项/答案完整和至少选择一名员工的发布校验。备份当时生产 H5 到 /opt/wygj/backups/h5-exam-title-20260725-1555/ 后完成首次静态发布。
  • 2026-07-25 16:09:复核发现 16:01 的后续 H5 发布重新带入旧 length>=4 校验;该次覆盖被识别为生产回退,未将 15:55 的短暂上线状态作为最终完成。
  • 2026-07-25 16:12:基于当前主线 75469b85 重新构建 H5,保留已发布的陪练“建议回复”功能并叠加考试修复;发布前备份到 /opt/wygj/backups/h5-exam-restore-20260725-1612/。生产入口更新为 /h5/assets/index-QQ2kC1xm.js,考试页资源为 /h5/assets/pages-supervisor-exams-edit.B-v9k7L-.js。

验证与边界

  • 2026-07-25 16:12:目标回归 5/5、vue-tsc --noEmit 和 npm --prefix mobile-uni run build:h5 通过;生产考试资源包含“请填写考试名称”和“发布前请至少选择 1 名员工”,不再包含旧 length>=4 校验。
  • 2026-07-25 16:14:在生产 H5 390×844 视口使用隔离浏览器会话和两名模拟员工完成无写入验收;考试名“测试”可通过名称校验,员工姓名正常显示,“发布给 2 人”按钮启用,未调用保存或发布接口。
  • 2026-07-25 16:15:本次结论为:姓名数据修复已生产验证,考试校验已实现、已本地验证、已重新部署并完成生产 H5 浏览器验证;未执行后端 JAR 发布、服务重启、schema 迁移或全量组织覆盖。对应两处考试源码改动仍在工作区,尚未提交。

2026-07-25 15:44–16:05|陪练建议回复

功能更新

  • 2026-07-25 15:44:45:完成常规陪练“建议回复”(提交 acd5fd3a)。“用这句话回复”改为由 LLM 根据当前会话、回合和老师傅提示生成一条员工可直接回复的新话术,不再复制指导语。
  • 2026-07-25 15:44:45:移动端将 LLM 生成结果只填入输入框,由员工修改后主动发送;生成期间禁用重复点击,接口失败时显示明确错误。
  • 2026-07-25 15:44:45:服务端在既有训练会话归属和身份校验内生成建议回复,不推进训练回合、不改写训练证据;普通训练回合继续保留模型失败时的 seed 降级。
  • 2026-07-25 15:44:45:训练 /turn 接口新增 suggestReply 请求参数和 suggestedReply 响应字段,并保留旧请求、旧响应构造方式兼容。

生产发布

  • 2026-07-25 15:52:03:备份生产后端 JAR 与完整移动端 H5,备份目录为 /opt/wygj/backups/practice-reply-20260725155203-acd5fd3a。
  • 2026-07-25 15:52:45:将提交 acd5fd3a 构建的后端 JAR 原子切换到 /opt/wygj/app/ruoyi-admin.jar;本次功能不涉及数据库结构变更。
  • 2026-07-25 15:53:16:重启 wygj-aihr.service;Spring Boot 于 15:53:35 完成启动。
  • 2026-07-25 16:01:13:将隔离工作树构建的移动端 H5 最终同步到 /opt/wygj/www/h5,生产入口固定为 /h5/assets/index-BDNPeJuO.js。
  • 2026-07-25 16:01–16:02:完整生产预检通过,确认管理端与移动端静态资源匹配、AIHR 后端模块匹配、schema 64/64、运行时 schema bootstrap 关闭。

线上验证

  • 2026-07-25 16:02–16:04:从生产组织快照只读选择手机号与外部 ID 双向唯一的在职保洁员工,先请求短信验证码再登录;账号值未写入终端输出、截图、报告或仓库。
  • 2026-07-25 16:04:03:在 390×844 视口走完场景启动、员工回复、老师傅提示和“用这句话回复”主路径;LLM 生成新的员工话术并填入输入框,没有自动发送,也没有复制老师傅提示,输入框和发送按钮显示完整。
  • 2026-07-25 16:04:发布后复核 wygj-aihr.service 为 active,自 15:52:00 起错误级别日志为 0,生产 H5 仍返回 /h5/assets/index-BDNPeJuO.js。

验收边界

  • 2026-07-25 16:04:本次结论为:已实现、已部署、已完成生产 H5 浏览器验证。
  • 2026-07-25 16:04:本次验证不替代 Android/iOS 真机验收,也不代表正式试点窗口、业务内容审核或严格试点指标已经通过。

2026-07-25 15:18–15:42|公司文件多岗位解读

功能更新

  • 2026-07-25 15:18:58:完成公司文件多岗位解读代码收口(提交 230dfb4d)。管理端上传文件并完成正文提炼后,异步生成有原文依据的岗位视角;单个视角包含岗位名称、解读内容、行动建议和原文短引用。
  • 2026-07-25 15:18:58:管理端增加解读状态展示,明确区分“正在生成、已完成、部分完成、生成失败”,并展示已经生成的岗位名称。解读失败不阻断文件摘要、原文件下载、消息发布或消息追问。
  • 2026-07-25 15:18:58:员工端消息详情增加“多岗位解读”。系统优先展示与认证员工岗位匹配的视角;员工可切换查看其他已生成视角,并展开对应的原文依据。
  • 2026-07-25 15:18:58:服务端重新校验租户、登录身份、在职身份、消息状态和附件归属。消息撤回后,员工列表、详情、原文件和后续追问均不再允许访问。

数据库更新

  • 2026-07-25 15:25–15:26:生产表 aihr_broadcast_attachment 新增 insight_status、insights_json、insight_version 三个字段,并新增 (insight_status, status, update_time) 异步队列索引。
  • 2026-07-25 15:25–15:26:迁移仅新增多岗位解读字段和队列索引,不回填历史文件、不修改既有文件 READY 状态,也不改变历史消息的发布或撤回状态。

生产发布

  • 2026-07-25 15:24:06:完成生产数据库、后端 JAR、管理端和移动端 H5 备份,备份目录为 /opt/wygj/backups/broadcast-insights-20260725152349。
  • 2026-07-25 15:26:32:部署新后端 JAR、管理端静态资源和移动端 H5。
  • 2026-07-25 15:26:33:wygj-aihr.service 重启并恢复为 active。
  • 2026-07-25 15:27–15:30:完整发布预检通过。管理端与移动端静态资源、生产后端 JAR 和 ruoyi-aihr 模块哈希均与本地构建一致;生产 schema 为 64/64,公司文件附件契约为 15/15。

线上验证

  • 2026-07-25 15:31:52:管理端上传生产验收 TXT 文件,文件提炼状态进入 READY。
  • 2026-07-25 15:32:15:多岗位解读生成完成,共生成“生活顾问/客服、人力、审计/风控、管理层”四个视角,结果状态为 READY,规则版本为 role-perspective-v1。
  • 2026-07-25 15:32:34:发布全员可见的生产验收消息。
  • 2026-07-25 15:38–15:39:使用生产数据库中的在职员工手机号完成员工端登录验证。在 390×844 视口下验证消息列表、消息详情、四视角切换、行动建议和原文依据展开,未发现横向溢出、内容遮挡或核心入口下沉。
  • 2026-07-25 15:39:33:通过员工端受控入口下载原文件,下载文件 SHA-256 与管理端上传文件完全一致。
  • 2026-07-25 15:40:04:验收完成后撤回测试消息并保留审计原因。
  • 2026-07-25 15:40:13–15:40:41:复核员工端列表不再展示该消息,原详情地址返回“消息不存在或已撤回”。
  • 2026-07-25 15:42:11:更新生产事实文档(提交 9a34a267),源码与发布记录已同步至远端 main。

验收边界

  • 2026-07-25 15:42:11:本次结论为:已实现、已部署、已完成生产 H5 浏览器验证。
  • 2026-07-25 15:42:11:本次验证不替代 Android/iOS 真机验收,也不代表正式试点窗口、业务内容审核或严格试点指标已经通过。
  • 2026-07-25 15:42:11:生产验收消息已经撤回;仅保留发布、阅读、下载和撤回审计记录。