Files
prop-ai-hr/docs/BRD_IMPLEMENTATION_AUDIT.md
T

137 KiB
Raw Blame History

BRD 功能审查与未完成项记录

  • 2026-07-15 严格试点门禁可读性补强:scripts/demo-check.sh 新增 catalog_schema=3/3,严格模式在场景/Rubric 三张基础表缺失时明确失败,而不是只输出空的场景统计;临时库回归覆盖缺少 Rubric 表的 catalog_schema=1/3 状态。该修复不改变生产数据和业务门槛,仅让生产迁移缺口可被明确识别。

  • 2026-07-15 严格试点门禁补强:scripts/demo-check.sh 原先只检查 SOP 评审的 prompt_version 字段,未检查 6 个内置 Prompt 是否实际落库;现新增 prompt_templates=6/6 查询和 strict 失败条件,并在 scripts/tests/demo-check-pilot-gates.test.sh 的临时库加入 6 个模板回归。该修复能阻止“schema 已迁移但 Prompt 内容为 0”的生产状态被误判为可验收;未修改生产数据。

  • 2026-07-15 线上只读复核续查:生产根站、/h5/、租户接口和员工首页 API 仍返回 200,wygj-aihr.service 为 active,服务自 2026-07-14 22:13:55 CST 起运行;线上管理端仍加载 assets/index-B9T505HT.js,H5 仍加载 assets/index-CDn6TrX8.js,与当前仓库可发布构建未做版本匹配。生产数据库仍缺 aihr_practice_scenario、aihr_practice_rubric、aihr_practice_rubric_dimension;aihr_prompt_template 内置模板 0、校准 0、已评审 SOP 0、训练音频 0;aihr_org_snapshot 实际状态值为 employment_status='active',active 22 条但手机号映射 0。生产 aihr_practice_session、aihr_practice_assignment、SOP 评审、案例和入职日期字段仍未完整迁移。本轮仅做 GET/SSH/MySQL 只读检查,未执行静态同步、版本化迁移、后端重启或业务写入;下一步仍需正式发布窗口、备份/回滚责任和组织同步凭据。

  • 2026-07-15 迁移合同回归:scripts/tests/aihr-practice-brd-scenarios.test.sh、scripts/tests/aihr-knowledge-brd-sop.test.sh 均通过幂等执行验证,scripts/tests/pilot-export-contract.test.mjs 通过 5/5;当前仓库的场景、住宅 SOP 和正式 CSV 导出合同可重复验证。该结果不替代生产迁移执行,也不把开发/本地样本算作正式试点数据。

  • 2026-07-15 生产数据库只读复核:通过远端 /opt/wygj/config/wygj.env 的数据库连接执行只读 information_schema/计数查询,确认 aihr_practice_scenario、aihr_practice_rubric、aihr_practice_rubric_dimension 仍不存在;生产 aihr_practice_session 证据字段为 5/8、aihr_practice_assignment 为 4/6、SOP 评审主体/版本字段为 1/3、案例媒体/学习字段为 0/4、组织 hire_date 为 0/1;内置 Prompt 0、校准记录 0、已评审 SOP 0、训练音频 0、active 组织 22 且手机号映射 0。根站、H5、租户接口和员工首页 API 仍正常;本轮仅读生产数据,未执行迁移、静态同步、后端重启或业务写入。代码与版本化迁移已在仓库,当前阻塞是正式发布窗口、备份/回滚责任和组织同步凭据。

  • 2026-07-15 审计记录校正:此前 2026-07-14 的一条历史记录误写为 aihr_practice_audio、aihr_practice_calibration 尚无版本化迁移;当前仓库实际已有 backend/script/sql/update/aihr_20260714_practice_evidence_mysql8.sql,覆盖 aihr_practice_audio、aihr_practice_audio_upload、aihr_practice_calibration,并已纳入生产迁移 runbook 与幂等 schema 测试。当前未完成项仅剩生产迁移执行证据、备份/回滚负责人和真实音频对象抽查,不再重复新增迁移脚本。

  • 2026-07-15 当前 HEAD 回归复核:mvn -f backend/pom.xml -pl ruoyi-modules/ruoyi-aihr -DskipTests=false test 通过,AIHR 测试 130/130;scripts/tests/demo-check-pilot-gates.test.sh 与 scripts/tests/aihr-schema-migrations.test.sh 均通过。该结果证明当前代码回归稳定,不改变正式试点样本、生产迁移和线上发布仍未完成的结论。

  • 2026-07-15 当前提交发布前复核:基于 HEAD=e37590dd 在隔离干净 worktree 重新构建管理端、mobile-uni H5 和 ruoyi-admin 后端,三项构建均成功;只读 release-preflight.sh 确认当前 worktree clean、租户列表和员工首页 API 均返回业务 200,但线上管理端仍为 assets/index-B9T505HT.js(SHA-256 66a827a7b3e5d794ae9da54c6e2276080995614fa52f54d49f746087663f8c94),当前提交本地产物为 assets/index-C20ZRMal.js(SHA-256 7ea5a989d67464af32b55ea4fc65e4ce5f0ca761d597fea40b4a8c13f3612b80);线上 H5 仍为 assets/index-CDn6TrX8.js(SHA-256 eecb4820f3887aceb952efe3e6f2210bab325be8b03f2813e6ec304c68b26f08),当前提交本地产物为 assets/index-DDEtOdio.js(SHA-256 f7f042f967eefc6b8d5963ae97a99f589f1c9b5d4084b0b7cb7ff9f32988d541)。预检因此在远端静态资源匹配处失败;本轮未执行静态资源同步、版本化迁移、后端重启或业务数据写入。当前应视为“代码可发布、线上未追平”,不是“已发布”。

  • 2026-07-14 当前严格门禁复核:使用 AIHR_PILOT_START_DATE=2026-07-07 AIHR_PILOT_END_DATE=2026-07-14 AIHR_PILOT_STRICT=true ./scripts/demo-check.sh 时,在正式数据门禁前因本地管理端未启动返回 frontend returned HTTP 404,因此本轮不宣称 strict 通过;开发库只读计数为启用场景 13、在职组织 3001、校准 20、SOP 评审 129,均不作为正式试点证据。

  • 2026-07-14 当前发布证据复核:基于 HEAD=48f4de03 在隔离干净 worktree 执行远端只读预检;管理端/H5 主资源与线上一致,租户列表和员工首页 API 业务码均为 200,wygj-aihr.service 为 active。外层 ruoyi-admin.jar SHA-256 因 ZIP 打包元数据与线上不同,但 ruoyi-aihr-5.6.2.jar 归一化内容 SHA-256 为本地/线上同值 b57c06ec6da4dd0e5eef16fb96c23881b2f1f253f461eb58ec3158122f76b543;本轮仅修发布预检与文档,未重新发布业务包。

  • 2026-07-14 BRD G3 训练音频生命周期修复:陪练回合和每日三题此前接受客户端直接提交的 audioOssId,服务端只在下载时按训练记录判断归属,存在把其他对象绑定到当前训练/作业的风险;现要求移动端提交的 OSS 对象必须由当前 APP 用户创建,且每日三题音频下载授权同时覆盖 aihr_practice_assignment.answer_audio_oss_id。ASR 成功上传后先写 aihr_practice_audio_upload 暂存记录,训练/作业绑定后转为 bound,超过两小时且没有业务引用的暂存对象由定时清理删除;清理失败保留暂存记录重试。正式环境仍需用真实 ASR 和 MinIO 对象抽查清理结果。

  • 2026-07-14 BRD G3 SOP 附件绑定补偿:同步/待处理图片文档此前在 sys_oss 上传成功后再写 aihr_knowledge_attach,附件写入失败时可能留下无业务引用对象;现仅对“附件尚未成功绑定”的异常路径做 OSS 补偿删除,解析失败后已存在的失败/待处理附件仍保留用于重试,不改变现有文档处理状态机。

  • 2026-07-14 BRD G3 OSS 生命周期补偿:候选资料和案例音频此前先写 sys_oss、再写业务记录,业务数据库写入失败时可能留下没有业务引用的对象;现对“本次上传新建且尚未绑定”的 oss_id 增加失败补偿删除,案例同时移除内存态,补充两条回归测试和 demo-check marker。该修复不触碰已有业务资源;SOP 分片/ASR 等复杂异步链路仍需按各自状态机单独核查,不能用本次补偿覆盖全部媒体生命周期。

  • 2026-07-14 BRD G3 文件名边界复核:候选资料、案例音频、同步 SOP 文档和 ASR 音频此前虽然分别校验或清理文件名,但仍有路径把原始 MultipartFile 直接交给 sys_oss,清理后的名字没有贯通到 OSS 元数据;现新增共用 AihrMultipartFiles 包装器,四条链路均以清理后的文件名上传/外发,并补单测与 demo-check marker。该修复不改变文件类型、大小、权限和业务状态,仍需正式环境抽查 OSS 原始文件名与下载响应头。

  • 2026-07-14 BRD 4.6 案例媒体 schema 迁移:案例服务此前依靠 reset DDL 和运行时懒迁移提供 media_oss_id/media_url,旧库和生产库缺少显式版本化迁移;现新增可重复执行的 aihr_20260714_case_media_mysql8.sql,并在 schema 回归测试中覆盖“无表先跳过、旧表补列、重复执行不重复加列”。这只解决结构发布一致性,不增加案例业务数据,也不替代正式预渲染视频样片、学习点和主管点评输入。

  • 2026-07-14 BRD 4.6 案例媒体严格门禁:正式预检现在同时检查 aihr_case_record.media_oss_id 与 media_url 两列,避免案例音频回放依赖首次请求触发运行时懒迁移;该检查只判断 schema,不把已有音频或案例数量误判为正式案例学习资产。

  • 2026-07-14 23:14 生产 schema 只读复核:生产 aihr_case_record 已存在,但 media_oss_id/media_url 为 0/2;本地提交 94f48f4c 的版本化迁移尚未在线上执行。当前只记录差异,不在没有发布窗口确认时直接修改生产数据库。

  • 2026-07-14 23:16 生产训练 schema 只读复核:生产缺少 aihr_practice_session 的 dim_task_completion/dim_response_timeliness/response_latency_ms、aihr_practice_assignment 的 score/score_mode、SOP 评审的 prompt_version/requester_ext_party_id 和组织快照 hire_date;对应版本化迁移已存在,但尚未在线上执行。严格门禁现增加会话与每日题字段计数,避免发布后依赖运行时懒迁移。

  • 2026-07-14 23:18 生产 Prompt 内容只读复核:生产 aihr_prompt_template 表存在但内置模板数量为 0;现新增 aihr_20260714_prompt_template_seed_mysql8.sql,按唯一键幂等补齐 6 个内置模板,不覆盖同 code/output_format/version 的自定义模板。未写入生产数据。

  • 2026-07-14 23:25 生产迁移顺序固化:新增 docs/BRD_PRODUCTION_MIGRATION_RUNBOOK.md,明确场景/Rubric 基础表、场景与 SOP/Prompt 内置内容、音频/案例媒体、五维与字段迁移的执行顺序,并提供迁移后只读 schema/模板核验 SQL;未执行生产写入,也不把 seed/schema 完成等同于正式试点通过。

  • 2026-07-14 案例学习闭环补齐:案例整理结果现在从真实摘要提取并持久化 learning_points,主管可通过 /api/knowledge/case/records/{caseId}/review 提交脱敏点评,管理端和员工端详情可查看;新增 aihr_20260714_case_learning_mysql8.sql,未新增视频占位资源,也未修改生产数据。

  • 2026-07-14 BRD G3 案例学习字段脱敏门禁补强:严格预检原先只扫描案例标题、转写和摘要,可能漏掉新增 learning_points 或 supervisor_comment 中的手机号、邮箱、房号;现统一纳入同一已知 PII 扫描,并用门禁测试分别注入学习点和主管点评验证 case_unmasked 会失败。

  • 2026-07-14 23:44 线上只读发布复核:生产根站、/h5/、租户列表和员工首页 API 均返回 200,wygj-aihr.service 为 active;线上管理端资源 assets/index-B9T505HT.js SHA-256 为 66a827a7b3e5d794ae9da54c6e2276080995614fa52f54d49f746087663f8c94,H5 资源 assets/index-CDn6TrX8.js SHA-256 为 eecb4820f3887aceb952efe3e6f2210bab325be8b03f2813e6ec304c68b26f08,当前 HEAD=0bfaee7d 本地产物分别为 assets/index-C20ZRMal.js(7ea5a989d67464af32b55ea4fc65e4ce5f0ca761d597fea40b4a8c13f3612b80)、assets/index-Zx4zkWxo.js(8ef22016ce8587e0264fc53ee100f0e4bfa2f17ea66d7b72fd90c972d4d0a0e9),后端当前构建 SHA-256 为 9598b98f340bcac3e7400f695c7ed5de5a9a62e081c19824b9b6839822e2d4f1,均未与线上对齐;本轮只读核对,未执行生产静态同步、迁移、后端重启或业务数据写入。

更新时间:2026-07-14

  • 2026-07-14 22:16 BRD 生产发布完成:基于 HEAD=ee261568 在隔离干净 worktree 重新构建并发布管理端、mobile-uni H5 和 ruoyi-admin 后端;远端备份为 /opt/wygj/backups/release-20260714221321。发布后远端资源已与本地产物一致:管理端 assets/index-B9T505HT.js(SHA-256 66a827a7b3e5d794ae9da54c6e2276080995614fa52f54d49f746087663f8c94)、H5 assets/index-CDn6TrX8.js(SHA-256 eecb4820f3887aceb952efe3e6f2210bab325be8b03f2813e6ec304c68b26f08)、后端 /opt/wygj/app/ruoyi-admin.jar(SHA-256 e2941cf1e2a31e22c979cea77a12b2e6ef2e5430409398dbde0918a1ab00f437);wygj-aihr.service 重启后为 active,根站、/h5/、租户列表和员工首页 API 均返回 200,发布后 RELEASE_VERIFY_REMOTE_MATCH=true 预检通过。Chrome 匿名打开 H5 后标题为“今日”、员工端四个 tab 和最新主 JS 均正常加载;生产 13900001111 + 123456 登录被服务端按生产验证码策略拒绝,随后验证码发送触发号码天级限流,因此本轮未完成认证态浏览器回归,也未把匿名渲染当作登录/主管权限验收。未写入业务数据;正式主管组织映射、真实试点数据和认证态回归仍未完成。
  • 2026-07-14 BRD 发布预检后端证据补强:release-preflight.sh 新增可选 RELEASE_VERIFY_REMOTE_BACKEND=true,通过 SSH 比对远端 ruoyi-admin.jar SHA-256;该开关未同时启用远端资源比对时现在直接失败,不再静默跳过。远端只读业务检查同时覆盖租户列表和移动端员工首页;默认发布路径仍为 /opt/wygj/app/ruoyi-admin.jar,可用 RELEASE_REMOTE_BACKEND_PATH 覆盖。本轮未重新发布业务包。
  • 2026-07-14 BRD 发布预检后端 hash 误报修复:外层 Spring Boot jar 的 ZIP 元数据会因构建时间变化而不同,预检现保留整包 SHA-256 作为证据,同时比较 ruoyi-aihr 嵌套模块的归一化内容 SHA-256;远端模块内容一致才判定后端匹配,并继续拒绝不安全的远端路径。本轮未重新发布业务包。
  • 2026-07-14 BRD 验收脚本执行一致性修复:scripts/tests/pilot-export-contract.test.mjs 新增 Node shebang 并恢复可执行权限,直接运行与 node 运行结果一致,5/5 通过;同时保留 release-preflight.sh 的后端 hash 配置误用门禁。该批次只修工具与证据链,不改业务数据或生产包。
  • 2026-07-14 22:03 BRD 发布证据复核:基于当前 HEAD=ab10e565 重新构建管理端、mobile-uni H5 和 ruoyi-admin 后端产物均成功;本地产物为管理端 assets/index-B9T505HT.js(SHA-256 66a827a7b3e5d794ae9da54c6e2276080995614fa52f54d49f746087663f8c94)、H5 assets/index-CDn6TrX8.js(SHA-256 eecb4820f3887aceb952efe3e6f2210bab325be8b03f2813e6ec304c68b26f08),后端 jar SHA-256 bdbd50be0b5e6aaa05504726fee7016a712c3138494ac84c4d4dfbe669aa6379;线上仍加载管理端 assets/index-CJZ3Ax3Z.js(SHA-256 8b9278a26ccb760abce489b12a20b221748c64d4c4153613d2511777bb9677bc)与 H5 assets/index-D4-NrEpb.js(SHA-256 ab15bfd17cabe58e2f34b0ac61ee198a837128ed85dc6bb0ddf77bc3e22dcd9c),当前分支修复尚未发布。RELEASE_VERIFY_REMOTE_MATCH=true ./scripts/release-preflight.sh 在工作区卫生检查阶段因两份用户未提交 Figma 文档停止;本轮未执行生产静态同步、后端重启或业务数据写入。
  • 2026-07-14 21:28 BRD 发布只读复核:生产根站、/h5/ 和 /prod-api/auth/tenant/list 均返回 200;线上管理端仍加载 assets/index-CJZ3Ax3Z.js(SHA-256 8b9278a26ccb760abce489b12a20b221748c64d4c4153613d2511777bb9677bc),H5 仍加载 assets/index-D4-NrEpb.js(SHA-256 ab15bfd17cabe58e2f34b0ac61ee198a837128ed85dc6bb0ddf77bc3e22dcd9c)。本地最新提交 d2b0035e 的租户隔离修复尚未发布;本轮仅做 GET/hash 核验,未执行生产静态同步、后端重启或业务数据写入。
  • 2026-07-14 BRD G3 多租户动态上下文修复:候选资料、案例、仪表盘、面试、组织同步和陪练服务此前从 LoginHelper 读取租户,后台 TenantHelper.dynamic(...) 场景可能回退到 000000;现统一改用 TenantHelper.getTenantId(),保留案例服务的 LoginHelper 仅用于当前操作人身份,并新增源码契约测试与 demo-check marker。未修改业务数据;正式多租户环境仍需跨租户 HTTP 回归。
  • 2026-07-14 Figma/BRD 对账口径修正:FIGMA_IMPLEMENTATION_MATRIX.md 的 M2 总结此前仍把问答反馈写成视觉缺口;当前员工端问答反馈、状态提示和后端记录已在位,剩余仅为 Figma 画板中的收藏持久化契约与完整视觉状态复核,不把开放问题榜纳入本期。
  • 2026-07-14 最新线上只读资源复核:生产根站、/h5/ 和 /prod-api/auth/tenant/list 均返回 200;线上管理端仍加载 assets/index-CJZ3Ax3Z.js(SHA-256 8b9278a26ccb760abce489b12a20b221748c64d4c4153613d2511777bb9677bc),H5 仍加载 assets/index-D4-NrEpb.js(SHA-256 ab15bfd17cabe58e2f34b0ac61ee198a837128ed85dc6bb0ddf77bc3e22dcd9c);当前提交 0de9704e 重建后的本地资源为管理端 assets/index-B9T505HT.js(SHA-256 66a827a7b3e5d794ae9da54c6e2276080995614fa52f54d49f746087663f8c94)和 H5 assets/index-CDn6TrX8.js(SHA-256 eecb4820f3887aceb952efe3e6f2210bab325be8b03f2813e6ec304c68b26f08),两端仍未发布。本轮仅做 GET/hash 核验,未执行生产静态同步、后端重启或业务数据写入。
  • 2026-07-14 BRD 5.4/G3 组织同步写入保护:POST /api/aihr/org/sync 现在要求请求显式传 dryRun=true 或 dryRun=false,省略请求体或传 null 会在外部拉取前直接拒绝,避免空请求因 replaceExisting=true 默认值意外写入组织快照;补充服务单测、demo-check marker 和 API 对接说明,未修改线上组织数据。
  • 2026-07-14 BRD 5.4/G3 组织同步 HTTP 入参边界补强:组织同步控制器现在要求请求体必须存在,空 POST 在 HTTP 层直接按请求错误处理;服务层继续要求 dryRun 显式传 true/false,避免把空请求误判为写入操作。补充 demo-check marker,未修改数据库或线上组织数据。
  • 2026-07-14 BRD 严格门禁真实窗口复核:AIHR_PILOT_START_DATE=2026-07-07 AIHR_PILOT_END_DATE=2026-07-11 AIHR_PILOT_STRICT=true ./scripts/demo-check.sh 已通过源码、页面壳、租户和验证码检查,正式数据门禁实际失败为 service_promotion=0、daily_service=0、住宅 SOP 3/5、案例 2/20、在职手机号映射 1/3001、入职日期 0/3001、满足十次训练 0/52、校准 0/20、SOP 可用 0/0、满意度响应 0;未写入业务数据,不能用本地演示样本伪造通过。
  • 2026-07-14 BRD 验收脚本 marker 第三处同步:员工画像页当前使用“AI训练综合分仅作训练参考”,严格预检仍检查已废弃的“AI评分仅作训练参考”;现同步为当前文案,保留 AI 不直接等同绩效的风险提示。
  • 2026-07-14 BRD 验收脚本 marker 再同步:严格预检继续发现成长激励页已将“当前运营口径(只读)”改为“学分规则(待 HR 配置)/规划参考,当前不生效”,脚本现检查当前真实文案,仍保留“规则未配置、不生效”的业务边界。
  • 2026-07-14 BRD 验收脚本 marker 同步:严格预检发现候选人进度页已将真实数据加载函数调整为 loadPage,脚本仍检查已删除的 buildCandidateFlow,导致业务接口检查尚未开始就失败;现只同步 marker 到当前真实加载入口,不改变候选人业务逻辑。
  • 2026-07-14 BRD 4.2/4.7 用户端岗位显示一致性补齐:员工“问师傅”页此前请求已按当前岗位检索,但页头仍固定显示“管家(生活顾问)”;现复用认证岗位状态展示岗位标签,并在页面恢复时同步更新。未新增岗位-SOP资格判断;mobile-uni 用户端单测增至 56/56,正式岗位适用范围仍需组织/HR数据确认。
  • 2026-07-14 BRD 4.2/5.4 最新提交复核:功能提交 857092c2 已包含员工练习页岗位显示与当前认证岗位状态对齐;本地管理端主资源 assets/index-B9T505HT.js(SHA-256 66a827a7b3e5d794ae9da54c6e2276080995614fa52f54d49f746087663f8c94)、mobile-uni H5 主资源 assets/index-D4A_v1LP.js(SHA-256 d3642eb8ec15c6af31636be121053b24a52a782b16572b37950a321c909ec032)和后端 jar(SHA-256 e2dcfe01b3c6067a4600322e97b98bd97a84dbaa92a3788563dd9142a6d652b4)已重新构建。线上仍加载旧管理端/H5资源,本轮只读复核未发布;release-preflight.sh 仅因 docs/FIGMA_DESIGN_INVENTORY.md、docs/FIGMA_DESIGN_SYSTEM_GUIDE.md 两份既有未提交文件停止,未执行生产写入。
  • 2026-07-14 BRD 4.2/5.4 用户端岗位显示对齐:员工练习页此前虽按当前岗位请求训练数据,副标题却固定显示“生活顾问”,正式岗位映射存在时会造成界面与请求口径不一致;现复用 getSelectedPosition(),并在岗位同步后刷新显示,未新增资格判断或改变生活顾问演示回退。mobile-uni 用户端源码回归已增至 55 项通过,正式岗位与岗位-SOP资格规则仍需组织/HR数据后再实现。
  • 2026-07-14 20:33 BRD/发布只读复核:当前 HEAD=a7938a77;管理端、mobile-uni H5 和后端 jar 已重新构建,产物时间晚于当前提交。当前本地管理端主资源 assets/index-B9T505HT.js(SHA-256 66a827a7b3e5d794ae9da54c6e2276080995614fa52f54d49f746087663f8c94)、H5 主资源 assets/index-CfObC14z.js(SHA-256 e0d4a8e52c2827421fefb53a269c31c6062b0128fda62d3b00275b7bc4c53c47)、后端 jar(SHA-256 f6b76c54061a05bff70d54754867c448e6cfdb4e42120acb7c2103b4e52fa983)均可用于发布。线上仍加载管理端 assets/index-CJZ3Ax3Z.js(SHA-256 8b9278a26ccb760abce489b12a20b221748c64d4c4153613d2511777bb9677bc)和 H5 assets/index-D4-NrEpb.js(SHA-256 ab15bfd17cabe58e2f34b0ac61ee198a837128ed85dc6bb0ddf77bc3e22dcd9c);release-preflight.sh 已通过产物新鲜度检查,但因两份用户未提交 Figma 文档阻断,未执行生产静态同步、后端重启或业务数据写入。
  • 2026-07-14 最新线上只读复核:生产根站、/h5/ 和 /prod-api/auth/tenant/list 均返回 200;线上管理端仍加载 assets/index-CJZ3Ax3Z.js,H5 仍加载 assets/index-D4-NrEpb.js。当前 HEAD=81060fba 的本地产物分别为 assets/index-B9T505HT.js(SHA-256 66a827a7b3e5d794ae9da54c6e2276080995614fa52f54d49f746087663f8c94)和 assets/index-C1WoTt0t.js(SHA-256 bfb07609acecde3678ed18bf48ce022f36596c6b946e076436fe242cf3e15675),当前提交尚未发布;发布预检仍因两份既有未提交 Figma 文档停止,本轮未执行生产静态资源同步、后端重启或业务数据写入。
  • 2026-07-14 BRD G3/G6 视觉外发闸门修复:资料处理的图片 OCR/视频关键帧视觉调用此前直接查询启用模型,可能绕过 AIHR_AI_RUNTIME_ENABLED/AIHR_AI_CHAT_ENABLED 成本开关并向外部供应商发送原始图片;现复用 AihrModelSeedService.visionAllowed() 在共用 visionRuntime() 入口拦截,关闭时按既有“待处理/文本降级”语义,不新增配置。补充源码契约测试、demo-check marker、运行说明和演示验收说明;未改变已配置视觉模型的正常处理路径。
  • 2026-07-14 BRD G3/G6 语音响应边界收紧:TTS 成功写入 sys_oss 后原先仍在 JSON 中重复携带完整 base64 音频,增加浏览器缓存、日志和响应体暴露面;当前 mobile-uni 与管理端没有消费 inlineAudioUrl,现改为成功只返回 OSS audioUrl/ossId,仅在 OSS 上传失败时保留内联 data URL 降级。ASR 已成功转写但 OSS 上传失败时,现保留 transcript 并明确无音频地址,不再把可用文字结果整体打成 500。补充源码契约测试、demo-check marker 和 API 对接说明;未改变音频回放授权与 OSS 留存策略。
  • 2026-07-14 BRD G3/G6 生产验证码安全边界修复:CaptchaController 原先允许通过 aihr.sms.demo-fixed-code-enabled=true 在 prod profile 放行固定短信验证码,和项目要求的“生产代码级禁用”冲突;现仅允许非 prod profile 使用 aihr.sms.dev-fixed-code,删除生产覆盖开关,并新增源码契约回归与 demo-check marker。未修改线上配置或生产数据。
  • 2026-07-14 本地验证环境一致性修复:项目 Docker 编排使用 MySQL 13306、Redis 16379,但 application-dev.yml 原先仍默认连接 3306/6379,导致 admin Spring 全量测试误连其他本机容器;现 dev 数据源改为 AIHR_MYSQL_*、AIHR_REDIS_* 可覆盖配置,默认与本项目编排一致,生产配置不变。ruoyi-admin 全量测试已通过。
  • 2026-07-14 BRD 5.4/G3 线上岗位身份映射修复:生产关闭组织姓名/部门展示时,orgSnapshotWhere 原先也排除了 person_phone,认证 APP 用户的手机号查询可能返回空结果并错误降级为员工/手动选岗;现隐藏展示字段模式仍允许按手机号过滤,但不返回手机号或姓名部门。新增回归测试与 demo-check marker;线上需重新发布后再用正式组织映射数据验证。
  • 2026-07-14 BRD 5.4/G3 主管团队隐私与稳定身份修复:组织快照存在且默认关闭展示字段时,主管团队成员、训练记录、派发任务和待复盘接口不再把手机号作为 ext_party_id 或姓名返回;历史按手机号落库的训练/派发记录会通过 aihr_org_snapshot 映射回稳定外部主体 ID,项目筛选也同时覆盖手机号存量记录;无项目范围的后台团队读取改为只读 active 组织快照,不再从训练表泄露姓名/手机号。新增 46 条服务回归测试覆盖稳定身份、隐藏显示字段、跨项目范围和手机号存量过滤;生产正式组织快照仍需上线后复核。
  • 2026-07-14 BRD 5.4/G3 管理驾驶舱训练记录隐私修复:AihrDashboardService 的最近训练记录默认不再直接返回历史 trainee_name,只有显式开启 aihr.org-sync.store-display-fields 才展示名称;补充源码契约回归与 demo-check marker。该修复仅收紧响应展示,正式组织主体与姓名展示方案仍需生产数据和合规口径确认。

1. 审查口径

本记录以 物业AI人力资源系统业务需求文档BRD.md 为业务事实源,以 FIGMA_IMPLEMENTATION_MATRIX.md 判断页面与视觉落地,以 API_INTEGRATION.md 和真实接口/浏览器结果判断运行闭环。

Figma 的 [x] 只表示画板对应页面已实现,不代表正式试点数据、组织权限或线上生产验收已经完成。BRD 的“阶段二个人 AI 助理”和三期运营页面不纳入当前一期修复范围。

2. 已确认完成的当前基线

领域 当前证据 结论
员工端今日/练/问/我 mobile-uni/src/pages/user/*;员工首页、训练前预习、独立练习路由已实现 2026-07-14 已同步线上 H5;线上主 JS 与本地构建 SHA-256 一致,学习页已显示错题本和原因筛选,后续只做发布后回归
主管工作台/复盘/派发 mobile-uni/src/pages/supervisor/*;线上工作台已完成视觉回归 页面主链路已在位;正式主管身份仍依赖组织数据
训练音频对象权限 AihrMobileController、AihrPracticeSeedService;GET /api/aihr/mobile/oss/{ossId} 已按员工本人、主管项目范围和系统用户区分音频读取权限;本地真实 HTTP 验证:归属员工 200,其他员工 403;生产正式主管范围仍需组织同步数据支撑
候选人面试与 HR 复核 mobile-uni/src/pages/candidate/*、frontend/src/views/recruit/interview.vue、AihrInterviewController 候选人资料移动端上传/列表只接受 APP 候选人本人身份,HR 通过独立审核接口处理;AI 面试结果现已持久化 待复核/已复核、AI 分、人工复核分、最终采用分、复核人、意见和时间,管理端可提交人工复核;正式试点仍需抽查复核证据
SOP/RAG/资料处理 frontend/src/views/knowledge/*、backend/.../AihrSopSeedService.java 搜索、引用、反馈、异步处理和评审入口已在位
对练/每日题/主管带教 backend/.../AihrPracticeSeedService.java、mobile-uni/src/pages/user/practice 每日三题现支持文字或录音转写,语音 audioUrl/ossId 随作业提交并持久化;普通陪练、即时反馈、低分再练、错题归因和主管带教已在位,正式窗口仍需验证真实音频与低分样本
案例上传/整理/筛选 backend/.../AihrCaseService.java、mobile-uni/src/pages/user/cases、frontend/src/views/knowledge/cases.vue 上传与整理已在位,案例状态在内存缺失时可从 aihr_case_record 回读恢复;APP 用户的读取按项目范围校验,写入接口已增加“主管/项目经理/系统用户”门禁,普通员工不能提交、整理或入库案例;原始音频现在上传到 sys_oss 并在 aihr_case_record.media_oss_id/media_url 留痕,员工端和管理端详情均可回放;案例整理摘要现在持久化真实提取的 learning_points,主管点评通过受保护接口脱敏后持久化并在两端详情展示;本轮补上管理端上传的项目选择与后端无项目拒绝,避免案例落成员工不可见的无范围记录;当前仍没有正式预渲染视频样片或相关训练场景契约,不能用音频回放冒充完整案例视频学习闭环

3. 未完成项与优先级

P0:必须先解决,否则不能称为正式试点完成

缺口 BRD依据 当前事实 下一步
正式主管身份、项目范围和数据权限 5.4、L1-B、G3 代码已有 aihr_org_snapshot、岗位/项目过滤和主管接口;生产快照当前为 22 条 active、2 个项目,但手机号关联为 0/22;生产环境当前未配置 AIHR_ORG_SYNC_* 组织同步凭据;移动端角色查询失败已改为安全降级员工端,员工登录/路由现在通过认证的 /api/aihr/mobile/me 刷新官方岗位,只有组织未映射时才保留本地演示岗位回退;线上视觉测试不能替代真实主管身份验证;组织覆盖写入现在会拒绝被跳过、手机号不完整、脱敏手机号或疑似乱码的快照,除非显式传 allowPartialReplace=true;重复 ext_party_id 无论是否允许部分覆盖都直接拒绝,避免唯一键折叠不同员工身份 由业务/运维提供正式组织接口配置后先做 dry-run,核对项目、岗位、ext_party_id、手机号;补齐手机号映射并确认主管身份后,才执行正式同步和主管数据权限验收
组织快照姓名/部门存储边界 BRD 5.4、TechSpec 3.1 BRD 要求本地只存外部 party_id,当前快照历史表仍有姓名/部门字段;已增加生产默认关闭的 store-display-fields,新同步和快照 API 可不再写/返姓名部门,但旧行尚未清理,且 person_phone 仍用于身份映射 由业务/法务/安全确定最小字段清单和保留期;完成历史数据清理、生产迁移和管理端只读展示方案后,才能关闭该 P0
G5 情绪疏导树洞隐私边界 BRD 12.1、附录 A 第三层 当前仓库没有树洞入口、独立存储、留痕策略、训练集排除机制或删除/审计合同;历史一期方案明确将“情绪疏导树洞”列为一期不做。现有陪练中的情绪识别、纠偏和反馈属于训练证据,不能冒充“不留痕树洞” 在进入正式生产前由业务、法务和安全共同确认是否纳入当前阶段;若纳入,必须单独定义匿名/身份边界、零落库与日志脱敏、模型供应商留存、删除证明和误伤升级路径;在决策和合同未明确前保持未实现,不用陪练情绪数据承接树洞诉求
外部 AI 的 PII 出境与留存 4.3.2、4.3.3、G3、G6 对练、面试、SOP、Embedding、Rerank、TTS 的文本请求已统一做最小脱敏;ASR 仍发送音频本体,视觉 OCR/视频关键帧仍发送图片本体,当前没有供应商不留存、删除证明或本地语音/视觉模型证据;视频失败日志已遮蔽文件名中的已知 PII 正式试点前由业务、法务和安全确认供应商留存/训练/跨境条款,或切换本地模型;补音频、图片的审计与删除证据后,才能把 G3/G6 判为通过
LLM/ASR/TTS 调用成本计量与自动降级 6.3、12.1、G6、TechSpec 3.8 已有 AIHR_AI_RUNTIME_ENABLED、AIHR_AI_CHAT_ENABLED、AIHR_AI_SPEECH_ENABLED 手动断路器;当前没有 llm_call_log,也没有按模块、模型、token、延迟和费用的持久化月度计量,不能把手动开关宣称为成本闸门已完成 先由供应商/财务确认 token 计费字段、单价、月度上限和告警阈值,再新增租户范围的调用日志与自动降级;在计费契约明确前保持手动断路器,不硬编码价格或用日志估算正式成本
管理端/后端生产发布证据 6.3、12.1、L1-C 生产 wygj-aihr.service active,根站、租户列表和员工首页 API 返回 200;但线上仍是管理端 index-B9T505HT.js、H5 index-CDn6TrX8.js,当前分支最新提交的本地构建资源和后端包均未与线上对齐,本轮没有执行发布;生产验证码拒绝开发固定码 123456,认证态回归仍未完成 先在发布窗口执行备份、版本化迁移、静态资源/后端同步和回滚验证;随后用正式 OTP/测试账号完成员工、主管、管理端认证态回归,不能把线上 HTTP 200 或旧包 active 等同于当前提交已发布
M5 正式试点证据 L1-B/C/D、G1/G3/G4 已补员工训练后 1–5 分满意度和可选意见采集,意见脱敏后写入 aihr_practice_session,CSV/严格门禁可读满意度响应数与平均分;但本地样本不能代表正式窗口,仍不能用 seed/烟测数据替代,尚无法证明“满意度 ≥4/5” 固定 1–2 个住宅项目和窗口,按唯一在职身份采集训练、人工校准、SOP 评审、完训率和满意度;严格门禁要求满意度有真实响应且平均分 ≥4.0/5
AI 分数与人工复核边界 4.1、4.5、G1/G2 面试和对练已有人工复核/校准入口;正式试点 CSV 已补明细级 AI 分、人工校准分、校准人、校准时间和最终采用分;管理端与员工端均已显示“AI 仅作辅助参考、人可复核/否决、不直接决定绩效或晋升”;正式试点仍需用真实窗口验证人工可否决证据 在正式试点报告中抽查校准记录与最终采用值,确认人工分可覆盖 AI 建议且不直接挂钩绩效/晋升

P1:一期 BRD 功能仍未形成完整业务闭环

缺口 BRD依据 当前事实 建议实现顺序
岗位-SOP匹配与上岗资格 gating 3.1、4.2、TechSpec P1 已补 GET /api/knowledge/position-sop 和员工学习页状态提示:一期只确认生活顾问内置学习导航;尚无 sop_applicability、onboard_task、qualification_gate 正式数据闭环,不能作为上岗资格判断 先接正式岗位/项目与 SOP 适用范围数据,再补培训任务状态;资格 gating 必须由 HR 明确规则和证据来源后实现
BRD 全覆盖训练场景 3.1、4.3.4 仓库已补 service-promotion-needs、daily-service-followup 两条生活顾问场景及住宅 SOP 迁移,严格门禁也检查两类核心流程;生产当前仍未迁移场景/Rubric 表和补充内容,且两类成功条件、价格/取消规则、回访口径仍需内容负责人确认 先在发布窗口执行场景、Rubric、SOP 迁移,再由内容负责人确认正式成功条件、合规边界和 SOP 版本;不把仓库 seed 或本地样本直接算作正式验收素材
认证等级与激励规则可配置 4.5、10.2-A、TechSpec M6 成长激励页已有初/中/高级证据包和学分口径展示,但规则仍是前端硬编码;原“排行榜”开关无实际业务作用,已移除并明确标记只读;尚无 cert_rule/incentive_rule 的持久化、版本、角色权限和生效记录 先由 HR 确认学分来源、分值、防刷和初/中/高级条件,再设计规则表与管理员 CRUD;在规则契约明确前,不把静态展示称为可配置
智能错题本 3.1、4.4、TechSpec P1 已补员工本人错题本和主管 /api/aihr/mobile/practice/team 内的 mistakes 聚合:按当前项目权限统计场景、归因、次数、影响人数、平均分和最近发生时间;员工端可跳转待训练 retry assignment,retry 已完成时改为显示“已完成”,不再重复引导进入已完成任务;不新增独立错题事实表 继续用正式组织快照和试点窗口验证主管只看到本项目数据;后续可在真实错题量上来后补趋势/导出,不把本地演示样本当正式指标
案例学习/视频详情 3.1、4.6、矩阵第35行 AihrCaseService 已能从 aihr_case_record 恢复转写案例,且新增按项目范围校验的 GET /api/knowledge/case/records/{caseId};原始音频已写入 sys_oss 并在详情回放,学习点已从真实摘要提取持久化,主管点评已有脱敏写入与两端展示;仍缺预渲染视频样片和相关训练场景契约 由业务提供一期样片或正式视频媒体 URL,并确定相关训练场景字段;当前不把原始音频回放冒充视频学习详情
案例库质量与数量 L1-B、4.6/4.7 上传/整理/筛选路径已有;“至少20条脱敏案例”和每周每项目一条需要正式数据证明,当前也没有可用于一期样片验收的真实视频资产 先按项目窗口采集并脱敏检查,再补案例统计/学习详情导出;不使用空壳视频或演示 seed 冒充
RAG 可用率与知识治理 4.7、L1-C、G3 搜索、引用、反馈、知识缺口和人工评审入口已有;员工反馈保存同一次搜索的 reviewId,SOP 评审记录和搜索响应现在保留答案生成 promptVersion;知识库上传、导入、向量重建、评审队列和模型配置管理接口已收紧为 superadmin/hr_operator;住宅核心流程覆盖率与可用率仍需正式评审数据,不能宣称完成逐问答全链路追溯 后续由业务确认模型/检索批次的正式版本口径,再补检索批次与模型版本;当前先用 reviewId + promptVersion + query + fragment 做可追溯统计,不伪造正式可用率
方言语音与多模态训练验收 4.3.2、4.3.3、L1-C ASR/TTS、音频 OSS 留痕和文本降级链路已有;但当前没有四川话/粤语等方言供应商配置、样本集和准确率/响应时延证据,也没有把图像/视频训练输入纳入一期验收口径 先确定一期方言厂商和可接受指标,用真实短音频做至少一条方言路径回归;图像/视频输入另按场景与合规边界评审,不用通用文本链路冒充完成

2026-07-14 增量:BRD 内容数量门槛

  • scripts/demo-check.sh 的严格模式现在额外检查已解析的住宅 SOP 文档数量 >=5(aihr_knowledge_attach.type='sop' AND status=2)、已入库案例数量 >=20(aihr_case_record.status='已入库')和案例文本中已知手机号/邮箱/房号模式为 0。
  • 这些查询只证明数量和已知模式脱敏,不证明 5 个核心流程覆盖、姓名等未结构化 PII、每周每项目产出或视频学习内容;这些仍需业务内容复核和正式窗口数据。
  • scripts/tests/demo-check-pilot-gates.test.sh 已补充跨租户、错误状态和非 SOP 文档样本,防止严格门禁用错误数据刷过。

2026-07-14 候选资料上传边界复核

  • 发现移动端候选资料选择器虽然只显示 PDF/Word/JPG/PNG/WebP,后端此前只校验 20MB,直接构造 multipart 请求仍可把任意扩展名文件写入 sys_oss。
  • 已在 AihrCandidateMaterialService 增加服务端同源扩展名白名单,并清理文件名中的路径分隔符和控制字符;补充单测和 demo-check marker。该修复只收紧上传边界,不改变候选人本人绑定、HR 审核三态或现有资料表结构。
  • RAG 评审追溯同时补上空问题门禁:空查询仍返回明确的无结果响应,但不再写入 aihr_sop_answer_review,避免误点击污染正式 SOP 可用率分母;已有 verify_demo_questions 演示来源跳过规则保持不变。
  • 案例语音上传也补上服务端扩展名白名单(MP3/WAV/M4A/WebM/OGG/AAC/FLAC)和文件名清理,避免只依赖管理端/移动端的 accept 属性;该修复不改变 ASR、OSS 留痕或项目权限链路。

2026-07-14 增量:BRD 核心流程覆盖无法判定

  • BRD 4.3.4 要求投诉处理、费用催缴、服务推介/增值、日常服务与突发应急等一期训练覆盖;TechSpec 只给出 投诉/催费/推介/应急 的场景类型示例,当前没有双方确认的核心流程编码表。
  • 当前生活顾问启用场景只有 4 类:投诉处理、催费/停车费、报修跟进、突发求助;其中缺少明确的服务推介/增值与日常服务内容,不能用“场景总数 12”替代覆盖证明。
  • 当前 aihr_knowledge_attach 只有文档名称、类型、状态和备注,没有 core_flow_code 或岗位/项目适用范围字段;本地已解析住宅 SOP 文档只有 3 个,也不能从文件名猜出 BRD 要求的 5 个核心流程。
  • 因此严格门禁暂时只检查 SOP 数量,不把文件名或 scenario_type 自行映射成正式流程;下一步需要内容负责人确认 5 个流程编码、每个流程的 SOP 文档和成功条件,再补数据字段、管理入口和覆盖率门禁。

2026-07-14 增量:用户端真实数据边界复核

  • 对 mobile-uni 员工端今日、学习中心、练习和问师傅页面做了接口失败、真实空列表和路由状态复核:接口失败时会清空对应私有数据并提示错误,真实空列表保持为空,没有把静态任务、训练记录或知识答案伪装成业务数据;练习页的投诉场景仅作为初始选择,不作为已完成记录或正式试点数据。
  • npm --prefix mobile-uni run typecheck、npm --prefix mobile-uni run test:unit(49/49)和 npm --prefix mobile-uni run build:h5 通过;仅有 Sass 弃用提示和测试环境 WebSocket 端口占用警告,不影响退出码。
  • 本轮没有发现适合在用户端继续扩展的明确安全缺口,暂不新增代码;正式未完成项仍集中在组织身份、核心流程内容、外部 AI 留存/成本、正式试点数据和发布同步。

2026-07-14 增量:线上资源与发布边界复核

  • 生产根站、/h5/ 和租户接口均返回 200,但线上仍加载管理端 assets/index-CJZ3Ax3Z.js(SHA-256 8b9278a26ccb760abce489b12a20b221748c64d4c4153613d2511777bb9677bc)与 H5 assets/index-D4-NrEpb.js(SHA-256 ab15bfd17cabe58e2f34b0ac61ee198a837128ed85dc6bb0ddf77bc3e22dcd9c)。当前 0f663546 本地产物为管理端 assets/index-CBwlIDYP.js(SHA-256 5ebd0ab763871b8110c01d4b7556158d14c94c0d02438fa8bfad05a5cba9e1da)与 H5 assets/index-Byx3WtY1.js(SHA-256 1d2a9d8f947e8a198c31f15a5cf4b66ba4220b1f549c4376c72cc1da56b1d7eb),当前修复尚未与线上资源对齐。
  • scripts/release-preflight.sh 的只读比对仍受两份既有未提交 Figma 文档阻断;本轮未执行生产静态资源同步、后端重启或业务数据写入,不把线上 200 认定为当前分支已发布。

2026-07-14 增量:正式试点导出契约复核

  • GET /api/train/practice/export 已强制要求 startDate/endDate,服务层拒绝缺失日期和反向日期;CSV 契约测试 5/5、严格门禁 SQL 测试和 bash -n scripts/demo-check.sh 通过,训练/校准统计使用同一租户、日期窗口、在职组织身份和原始分子,不用四舍五入后的比率反推门禁。
  • 正式数据证据仍未完成:aihr_sop_answer_review 已通过 requester_ext_party_id 保存认证 APP 用户的提问员工主体,并由严格门禁要求该主体命中当前租户在职组织快照;当前缺的是正式窗口内真实员工提问与人工评审样本,不能用字段存在或管理员烟测冒充 M5 可用率。
  • 管理端三角色对练页的“导出试点 CSV”已提供日期范围选择;日期不完整或反向时按钮不可用,点击后把合法 startDate/endDate 传入后端。frontend/src/views/train/pilot-export.test.ts 已覆盖空值、非法日期、反向日期和合法窗口,当前无需再补页面逻辑。

P2/P3:明确暂缓,不应混入当前修复

  • 个人 AI 助理、个人资料库、网页抓取、引用问答、PPT 生成:BRD 4.8,阶段二。
  • 开放问题榜、积分/排行榜/荣誉墙、完整七维偏好、独立 AI 教练编排:阶段二/三或后续运营范围。
  • 师徒关系、拜师池、认证和带徒福利:业务已取消,继续保持不实现。

4. 首批执行顺序

  1. 先完成正式组织快照 dry-run 与项目范围核对;不修改正式数据,不用手机号猜角色。
  2. 在本地/测试环境实现“错题本只读聚合”,复用现有训练记录和 retry assignment,补 API、员工入口和主管查看边界。
  3. 已先补岗位学习适配摘要,但它只负责把一期生活顾问导航状态说清楚;下一步接正式岗位/项目/SOP 适用范围,再实现培训任务状态;资格 gating 放在有真实资格规则后接入,避免先做一个无法运营的开关。
  4. 在业务提供一期视频样片及字段口径后,继续扩案例详情数据契约;当前原始音频回放已完成,但不替代视频、学习点和主管点评。
  5. 用正式试点窗口跑 BRD L1/M5,而不是继续增加视觉页面。

2026-07-14 增量:组织快照异常统计修复

  • 发现 AihrOrgSyncService.snapshot() 的疑似乱码统计把问号写成 like '%?%',问号位于 SQL 字符串字面量内,未形成有效的参数或字符匹配,导致管理端组织快照的异常计数可能恒为 0。
  • 已改为 MySQL instr(coalesce(field, ''), '?') > 0,继续沿用当前租户和筛选条件,并补回归测试与 demo-check marker;本地 ry-vue 直接查询得到 3473 条快照、8 条疑似异常文本,与修复后的统计口径一致。
  • 该修复只恢复异常计数的真实性,不代表外部组织快照已经具备完整手机号映射;正式主管身份和项目范围仍需真实组织同步数据。

5. 每批完成定义

  • 有明确 BRD 条款、代码路径和数据证据。
  • 读写权限按员工本人、主管项目范围、HR/运营角色区分。
  • 真实接口或浏览器验证通过;不能验证的外部数据依赖必须标明。
  • 不用 seed、烟测样本或固定演示账号冒充正式试点达标。
  • 发布前同步矩阵、API 文档、验收脚本和本记录。

6. 本轮线上核对记录(2026-07-14)

  • 线上入口 https://peilian.njzhmj.top/h5/ 返回 HTTP 200;本轮管理端发布后根站点 https://peilian.njzhmj.top/ 也返回 HTTP 200,生产 HTML 的 Last-Modified 为 2026-07-13 19:53:16 GMT。
  • 发布前线上 HTML 引用 index-DSualpPE.js;同步后已改为 index-DJfe2tlN.js,主 JS SHA-256 均为 56afec70ae0f404a3e4a2520b604ea797dc7c1f2a16ce558e6652cea246b45a9。
  • 使用本地数据库已有手机号和 dev 固定验证码登录线上 H5,岗位确认、员工首页和 /pages/user/practice/index 均可打开;这证明线上登录/基础路由可用,不证明线上包已追平当前代码。
  • 发布后真实浏览器登录并打开 /pages/user/learning/index,页面已出现“错题本”“全部/红线话术/情绪承接/流程合规/综合得分不足”;打开 /pages/user/practice/index 可见训练前预习、最近练过和每日三题。
  • 本次远端备份为 /opt/wygj/backups/h5-20260714034906(H5)和 /opt/wygj/backups/release-20260714035418(管理端 index/assets 与后端 jar);静态包、后端服务和 H5 资源均已发布,后续发布仍必须保留备份、资源哈希和浏览器回归三项证据。
  • 发布后 hash 证据:管理端主 JS index-CVcvQ1KE.js 为 a49ad7d3009ea64f37922cc042f09c1930557052e4fe20c11f8083222e0e4531,后端 ruoyi-admin.jar 为 3998f075a06f3a8014c270f66ad777606c7a04117233b7258e3326dbe516e211,H5 主 JS 仍为 56afec70ae0f404a3e4a2520b604ea797dc7c1f2a16ce558e6652cea246b45a9;线上 wygj-aihr.service 为 active,/prod-api/auth/tenant/list 与 /prod-api/api/aihr/mobile/home/user 返回 200。
  • 生产浏览器回归:管理员可登录首页和 /system/model;页面可见“提示词模板”列表、新增模板入口和启停控件,说明本轮管理端 UI 已加载。当前验证使用生产 admin 测试账号和 Redis 验证码,不在文档记录账号或个人数据。
  • 2026-07-14 04:05 后续发布:移动端满意度采集、CSV 指标和后端接口已同步到生产;备份为 /opt/wygj/backups/release-20260714040515,H5 主 JS index-5mNjsnek.js 本地与线上 SHA-256 均为 5c5af11be7b2b3ef7ceafd5b820fdd3e1326fcfc612b89c69b00dfe06635573c,后端 jar SHA-256 为 aa0bd917a2ab94ffd740ac709af2c59dd5bed6c8db995fa9aa1e80bcc4662c07;生产浏览器实际完成训练、提交 1–5 分满意度并收到成功提示,随后已清理临时训练和派发数据。
  • 2026-07-14 04:18 后续发布:SOP 反馈追溯已同步到生产;备份为 /opt/wygj/backups/release-20260714041836,H5 主 JS index-Dh7w59t7.js 本地与线上 SHA-256 均为 0fce49deff7f95b3816cd97cf7b5f1733f31b2815162d141c27be9d1257a1f58,后端 jar SHA-256 为 18f4643f401aafeab3ee896d7d6341733f31b2815162d141c27be9d1257a1f58;生产 API smoke 已验证搜索 reviewId、反馈写入 review_id,并清理 smoke 记录。
  • 2026-07-14 后续审查:移动端 /me 在同一手机号对应多条 active 组织记录时优先识别“主管/项目经理”,避免按首条一线记录误判员工端;正式试点满意度统计改为复用安全 org_identity,冲突或无法唯一映射的组织身份不计入满意度分母;模型配置、提示词模板列表/写入、知识库管理/评审和后台案例标注写接口均已补 HR/管理员角色门禁;脚本行为测试已覆盖该边界,但这仍属于数据口径与权限加固,不替代正式组织同步和试点证据。
  • 2026-07-14 线上只读复核:生产根站点与 /h5/ 均返回 HTTP 200,线上 H5 入口仍加载 index-Dh7w59t7.js;/prod-api/api/aihr/mobile/home/user 返回业务 code=200。本次未发布、未修改生产数据;该结果只证明公开入口和员工首页 API 可用,不替代正式登录、主管身份和试点验收。
  • 本次线上核对发现 schema 漂移:生产库已存在 aihr_practice_session.satisfaction_score、satisfaction_comment,但尚未显式创建 aihr_practice_audio。当前代码仍有运行时懒建表兜底,满意度链路不受影响;正式音频留痕试点前必须执行并核验显式迁移,不能依赖首次请求触发;严格预检已增加该表存在性检查。
  • 2026-07-14 后续 BRD 审查:组织与权限 页已确认具备组织快照、dry-run、写入确认和 HR/管理员角色门禁;本轮修正写入模式按钮文案,并避免取消确认时误报“同步接口不可用”。岗位-SOP 页面继续明确显示“当前摘要不代表正式上岗资格”,在正式 sop_applicability、培训任务和资格规则未由 HR 确认前,不扩展为伪资格 gating。
  • 2026-07-14 权限审查:候选人面试、案例处理、ASR/TTS、SOP 搜索/反馈/总结卡、候选人资料接口均补控制器级登录门禁;匿名首页与 position-sop 导航摘要仍保持公开只读,写入、模型调用和候选人私有记录不再依赖业务层“失败返回”兜底。
  • 2026-07-14 案例详情审查:管理端案例详情已同步展示 mediaUrl 原始音频播放器,与员工端音频回放保持一致;当前仍没有正式预渲染视频样片、学习点、主管点评和相关训练场景字段,因此不把音频回放计为完整视频学习闭环。
  • 2026-07-14 BRD 深度复核:重新按“业务条款→源码路径→数据证据”核对岗位-SOP、训练/错题本、案例详情、RAG、候选人面试、组织权限和成长证据,补发现首批场景尚未覆盖 BRD 明列的服务推介/增值与日常服务内容;mobile-uni H5 构建、类型检查与 49 个用户侧单测通过,AIHR 案例/对练定向测试 31 个通过。剩余 P0/P1 仍是正式组织映射、住宅项目试点数据、补齐场景内容、方言供应商与样本、预渲染视频资产、HR 规则契约等输入,不能用继续扩页面或未经确认的 seed 话术替代。
  • 2026-07-14 候选人入职链路补齐:管理端候选人面试页新增 HR/管理员将本地候选人 ID 关联至当前租户已同步在职 ext_party_id 的入口,后端以独立关系表保存租户、主体 ID、状态和操作审计,不复制组织姓名/部门;关联目标必须存在于当前租户在职组织快照,重复同主体幂等,候选人更换主体或同一主体被其他候选人占用均拒绝,并由唯一约束兜底。正式组织同步和真实入职数据仍需试点验证。
  • 2026-07-14 线上资源只读核对:生产管理端当前加载 /assets/index-CVcvQ1KE.js,可检出提示词模板标记但检不出本分支新增的 case-audio 管理端播放器标记;因此 6292e741 的管理端案例音频回放尚未发布,不能把本地源码状态当作线上状态。发布前需按现有备份、资源哈希和浏览器回归流程执行。
  • 2026-07-14 发布差异取证:当前分支生产构建管理端主 JS frontend/dist/assets/index-CJZ3Ax3Z.js SHA-256 为 8b9278a26ccb760abce489b12a20b221748c64d4c4153613d2511777bb9677bc,后端 backend/ruoyi-admin/target/ruoyi-admin.jar 为 2817e0b30a4a0bc52cd5d88a8dd68c52981698185fb5320c24fa2743ab17ccf7;生产仍加载 index-CVcvQ1KE.js,远端 jar SHA-256 为 18f4643f401aafeab3ee896d7d6341736d5d7ee2343fee0fa86992c5797adcb9。本轮只读核对,未执行远端写入。
  • 2026-07-14 06:07 发布完成:备份目录为 /opt/wygj/backups/release-20260714060705;管理端、mobile-uni H5 和后端 jar 均已同步,线上管理端加载 index-CJZ3Ax3Z.js,H5 加载 index-D4-NrEpb.js,H5 主 JS SHA-256 为 ab15bfd17cabe58e2f34b0ac61ee198a837128ed85dc6bb0ddf77bc3e22dcd9c,后端 jar SHA-256 为 2817e0b30a4a0bc52cd5d88a8dd68c52981698185fb5320c24fa2743ab17ccf7;wygj-aihr.service active,生产根站点、/h5/、/prod-api/auth/tenant/list 和员工首页 API 均返回 200,线上管理端资源可检出 case-audio。重启瞬间的短暂 502 在服务启动完成后恢复,未形成持续故障;Chrome headless 已确认管理端标题、H5 标题和员工首页真实渲染。
  • 2026-07-14 生产数据核验限制:通过 SSH 尝试使用默认 root/root 连接生产 ry-vue 被拒绝;本轮不读取、不修改生产业务数据,也不把本地计数或旧快照冒充当前正式组织/M5 证据。后续需运维提供只读数据库凭据或正式导出文件,核验 aihr_org_snapshot、aihr_practice_audio、校准、SOP 评审和满意度数据。
  • 2026-07-14 生产 schema 修复:使用生产 /opt/wygj/config/wygj.env 中的数据库连接配置核对后,按仓库现有 aihr_practice_mysql8.sql/运行时建表定义执行 CREATE TABLE IF NOT EXISTS,补齐缺失的 aihr_practice_audio(9 列)和 aihr_practice_calibration(11 列);未写入任何业务行、未新增自定义字段。复核结果为 org_active=22、org_phone_linked=0、calibration=0、sop_review=13、audio=0,租户接口仍返回 200。该操作只解除 schema 漂移阻塞,不代表正式组织映射或 M5 试点完成。
  • 2026-07-14 候选人关联发布边界核对:生产根站点与 /h5/ 返回 200,wygj-aihr.service active,线上后端仍为上一版 jar;远端管理端主 JS 未包含本批 入职主体关联/candidate-links,本批源码已提交但尚未发布。后续发布需按现有备份、静态资源同步、后端重启和浏览器回归流程执行。
  • 2026-07-14 门禁合同复核:scripts/tests/demo-check-pilot-gates.test.sh 通过,确认严格预检覆盖批次日期、唯一在职身份、1–2 个项目、每人至少 10 次训练、80% 完训、20 条校准、AI/人工分档一致率、SOP 可用率、满意度和音频/RAG schema;scripts/tests/pilot-export-contract.test.mjs 5/5 通过,AIHR 案例/对练定向测试 31/31 通过,mobile-uni 类型检查与 49 个单测通过。当前没有新增可安全实现的门禁缺口,剩余阻塞仍是正式组织映射、正式试点数据、视频样片和方言样本等外部输入。
  • 2026-07-14 租户边界复核:AI 面试结果、候选人入职主体关联、候选人补充资料、模型配置和案例记录的查询、写入、组织身份解析均改为使用当前登录租户;无登录上下文时仅保留本地开发默认租户 000000 回退。该修复已覆盖案例服务的列表、详情、项目范围、贡献者校验、保存和持久化回读路径,仍需在正式多租户环境做隔离回归。
  • 2026-07-14 仪表盘租户边界复核:管理端首页的面试、训练、知识库、案例、候选资料、组织和模型统计改为按当前登录租户查询;组织同步写入和组织快照查询也改为当前登录租户;无登录上下文时保留本地开发默认租户回退。尚未把批量知识处理队列和完整 SOP 服务的全部租户调用统一替换,后续继续按数据敏感度分批审查。
  • 2026-07-14 SOP/RAG 租户边界复核:知识库搜索、知识缺口、SOP 问答评审、答案反馈、异步导入任务、文档/片段/向量写入及 Qdrant tenant filter 改为当前登录租户;无登录上下文时回退本地开发租户 000000。定向 AIHR 测试 48/48 通过;正式多租户检索隔离仍需在测试环境做跨租户回归,批量上传队列仍待单独审查。
  • 2026-07-14 剩余固定租户审查:AihrPracticeSeedService 仍有 79 处运行时 TENANT_ID,覆盖场景、训练记录、派题、复盘、导出和 Prompt 管理;这些路径可按同步请求上下文分批迁移。AihrUploadQueueService 仍有 19 处固定租户引用,但其后台 worker 会脱离登录线程并调用 SOP 加工,不能机械替换为 LoginHelper;下一步需让队列条目携带租户、worker 按条目租户加工,并补跨租户领取/隔离测试。
  • 2026-07-14 训练租户边界修复:AihrPracticeSeedService 的场景、训练记录、派题、复盘、导出、Prompt、标注和音频明细运行时查询/写入统一使用当前登录租户;无登录上下文回退本地开发租户 000000。定向 AIHR 测试 48/48、管理端完整打包均通过。AihrUploadQueueService 仍保留固定租户,原因是后台 worker 需要下一批显式携带条目租户后再调用 SOP 加工,避免机械替换造成跨租户队列停摆。
  • 2026-07-14 异步上传队列租户边界修复:请求入队、查询和重试按当前登录租户;后台领取按队列条目租户跨租户扫描,文件加工通过 TenantHelper.dynamic 进入对应租户,ZIP 子条目、失败回写和卡死清扫均沿用条目租户;新增队列结构回归测试。AIHR 全量测试 50/50、ruoyi-admin 跳测试打包通过;正式多租户文件上传、向量写入和跨租户隔离仍需测试环境回归。
  • 2026-07-14 目录导入异步任务租户边界修复:startLocalImportTask 捕获当前租户,并用 TenantHelper.dynamic 包住整个后台导入 worker,任务进度、取消状态、OSS/片段/向量写入不再因脱离登录线程回退到 000000;新增异步上下文回归测试。正式多租户目录导入仍需测试环境验证。
  • 2026-07-14 线上只读复核:生产根站点、/h5/、租户列表和员工首页 API 均返回 200;线上仍加载管理端 index-CJZ3Ax3Z.js 与 H5 index-D4-NrEpb.js,本地最新租户边界修复提交 6ec17726、c95cb1ff 尚未发布。本次未修改生产环境,发布前需先做测试环境跨租户上传/目录导入回归。
  • 2026-07-14 异步队列清扫修复:上传队列 worker 的卡死任务清扫改为跨租户扫描,避免无登录线程回退到 000000 后只清理默认租户;实际加工、失败回写和 SOP 处理仍按队列条目租户隔离。AihrUploadQueueServiceTest 与 AIHR 全量测试 51/51 通过;双租户上传/目录导入仍需测试环境回归。
  • 2026-07-14 移动端短信登录租户修复:手机号查询补充 tenant_id 条件,避免同一手机号在不同租户登录时复用其他租户的 sys_user;新增认证策略边界回归测试。正式多租户登录仍需用测试租户账号做 HTTP 回归。
  • 2026-07-14 测试租户 HTTP 回归:在本地临时建立 codex-a/codex-b 两个租户,用同一手机号分别登录并授予各自 superadmin 测试角色;两租户分别调用异步上传和目录导入接口。A 查询不到 B 的上传批次/导入任务,B 也查询不到 A;两个目录导入任务均完成 1/1。后台 worker 的队列加工、目录导入、任务进度和查询均保持租户隔离。测试产生的租户、用户、角色、知识库行和临时文件已清理为 0。该证据只覆盖本地测试环境,不替代正式组织同步和生产多租户验收。
  • 2026-07-14 上传队列上下文收口:AihrUploadQueueService 的同步请求租户读取改为 TenantHelper.getTenantId(),动态租户上下文优先于登录态,避免重试/嵌套任务回退到错误租户;AihrUploadQueueServiceTest 已补对应源码契约断言。AIHR 定向测试与模块编译通过。
  • 2026-07-14 发布前检查补齐:新增只读 scripts/release-preflight.sh,统一核验当前 commit、管理端/H5/后端产物存在性、入口 JS 和 SHA-256;传入 RELEASE_REMOTE_URL 时只做公开根站点与租户列表 HTTP 检查,不执行 SSH、rsync、服务重启或生产写入。docs/DEV_SETUP.md 已同步发布证据与回滚留痕要求。
  • 2026-07-14 当前状态复核:本地 ry-vue 组织快照有 3001 条 active 记录,但手机号可映射仅 1 条、项目 41 个,不能作为正式 1–2 项目试点身份数据;线上根站、/h5/ 和租户接口均返回 200,但线上管理端仍加载 index-CJZ3Ax3Z.js,本地现有构建产物为 index-Cz1rtpOj.js,且发布预检被两份已有未提交 Figma 文档阻断,因此未把最新本地提交宣称为已发布。
  • 2026-07-14 BRD 公开导航回归:GET /api/knowledge/position-sop 明确是一期生活顾问学习导航摘要,不返回个人或项目私有数据;控制器补 @SaIgnore 后匿名请求返回 200,而同一控制器的 POST /api/knowledge/search 仍返回业务 401,保持“公开只读导航、登录后查询与反馈”的边界。同步完成跨租户异步上传成功路径回归:codex-a/codex-b 各上传独立文件并加工为 status=2,互查批次均为空;临时租户、用户、队列、知识库、OSS 与暂存文件已清理。
  • 2026-07-14 BRD G3 仪表盘权限收口:/api/aihr/dashboard/overview 返回组织、训练、知识库、案例和候选资料统计,控制器新增显式 @SaCheckLogin;匿名请求业务返回 401,同时保留服务层按当前租户过滤。后续正式主管可见范围仍需组织快照和项目权限数据支撑。
  • 2026-07-14 BRD G3 主管接口权限复核:移动端主管/团队/预警/派题/复盘接口对后台系统用户现在要求 superadmin 或 hr_operator 角色;APP 用户仍要求组织快照中的主管/项目经理身份。新增源码契约测试与 demo-check marker,避免普通后台账号越权读取团队训练数据或创建派题。
  • 2026-07-14 BRD G1 评级语义复核:管理端、员工端和证据包文案已将“当前等级/AI等级”明确为“训练画像参考等级”,并标注需 HR/主管人工复核;AI 结果仍只作训练与晋升证据参考,不直接生成正式晋升结论。
  • 2026-07-14 BRD G5 边界复核:BRD 将“情绪疏导树洞”列为生产前隐私闸门,但一期历史方案又明确标注为一期不做;当前代码没有树洞入口、独立数据隔离或“不留痕/不进训练集”证明。该项不能用陪练情绪识别、红线纠偏或满意度意见替代,后续需业务/法务/安全先确认是否纳入当前阶段,再决定设计与实现。
  • 2026-07-14 只读发布前复核:生产根站点、/h5/、租户列表和员工首页 API 均返回 200;当前本地提交 8105413d 的管理端主资源 index-BWnisJoz.js 与后端 jar 尚未与生产资源/hash 对齐,H5 仍与生产 index-D4-NrEpb.js 一致。本轮未发布、未修改生产数据;后续若发布管理端 OCR 状态修正或后端批次,必须重新执行备份、资源 hash、服务状态和浏览器回归。
  • 2026-07-14 线上资源复核更新:生产管理端仍加载 index-CJZ3Ax3Z.js(SHA-256 8b9278a26ccb760abce489b12a20b221748c64d4c4153613d2511777bb9677bc),当前本地管理端构建加载 index-CIgkCgjC.js(SHA-256 f0e9bca71dc2ee484745f0d4058079c54f493cf0be51bfe279f1da64dd62dcfd);两者不一致。生产主资源已包含既有“提示词模板”能力,但不能据此证明本地最新成长激励/资料处理修复已上线。
  • 2026-07-14 09:29 只读发布核对:生产根站点、/h5/ 和 /prod-api/auth/tenant/list 均返回 200;生产仍加载管理端 index-CJZ3Ax3Z.js(SHA-256 8b9278a26ccb760abce489b12a20b221748c64d4c4153613d2511777bb9677bc)与 H5 index-D4-NrEpb.js(SHA-256 ab15bfd17cabe58e2f34b0ac61ee198a837128ed85dc6bb0ddf77bc3e22dcd9c),当前提交 896495dd 的本地构建为管理端 index-DF7MSq-V.js(SHA-256 96969b2ae71192cb08b3b2f14edb84355dce6b00679f8237d508ab392c97d7d9) 与 H5 index-CVrAL1eh.js(SHA-256 4e416176e5b390d1a1a174375d1da820b317b017c00fd0549ffae3f0da77d06d),本轮候选资料、案例音频和 RAG 评审修复尚未发布;本次未执行远端写入。
  • 2026-07-14 07:30 只读发布预检:当前本地提交 9832caa4 的管理端构建加载 index-Cz1rtpOj.js(SHA-256 558392609617377b8327918c411887fc6766d1e545e0a703e2fc3dbaaa1d1a66),生产仍加载 index-CJZ3Ax3Z.js(SHA-256 8b9278a26ccb760abce489b12a20b221748c64d4c4153613d2511777bb9677bc);生产根站点和租户接口均返回 200。本次只读核对,未发布;最新主管权限与评级语义修复尚未在线上生效。
  • 2026-07-14 BRD G3/G6 外发文本复核:发现对练、面试调用的共享 LLM 边界和 SOP 总结卡独立直连路径此前把原始文本直接放进外部模型请求;新增 AihrSensitiveText,在模型请求体写出前统一遮蔽手机号、邮箱、房号和带称谓姓名,结构化候选人姓名改为匿名角色,TTS 文本也走同一规则,并补源码契约/规则测试。案例转写入库前已有文本脱敏,但 ASR 接收的是音频本体、视觉 OCR 接收的是图片本体,无法在本地转写/识别前可靠遮蔽语音或图片中的 PII;正式试点仍需供应商不留存/合规合同或本地语音/视觉模型、审计与删除证明,不能把文本脱敏说成完整 G3/G6 通过。
  • 2026-07-14 BRD G3 训练接口权限复核:发现三角色对练控制器缺少类级登录门禁,匿名请求理论上可伪造 extPartyId 创建训练会话;已为 AihrPracticeController 增加 @SaCheckLogin,并补源码契约测试与 demo-check marker。管理员和员工端既有登录链路不变,场景读取、训练创建、回合提交和完成记录统一要求登录;本地真实 HTTP 对匿名 /api/train/practice/start 验证为业务 401。
  • 2026-07-14 外部错误信息复核:ASR、TTS、LLM、组织同步和视频处理路径已不再把外部响应体、ffmpeg 输出或视频识别异常原文写入日志/业务异常;新增的隐藏响应体与视频错误契约测试通过。该修复只收紧错误暴露,不改变模型失败后的 seed/文本降级链路;ASR 原始音频与视觉图片出境的供应商留存和删除证明仍未解决。
  • 2026-07-14 只读发布预检:当前分支 37b8ed97 工作区干净,管理端本地构建资源为 index-Cz1rtpOj.js,生产仍加载 index-CJZ3Ax3Z.js;mobile-uni 本地与生产仍为 index-D4-NrEpb.js。生产根站点与租户接口均返回 200。本轮新增后端登录/错误信息修复尚未发布,未执行生产写入或重启。
  • 2026-07-14 G3 错误暴露复核:继续扫描 AIHR 后端后,补齐 ASR/TTS 调用、TTS 临时文件、模型回退、面试/对练解析、案例上传/摘要、组织同步、目录导入、RAG 重排/总结卡和异步上传队列的原始 Exception.getMessage() 日志或状态回传;统一改为固定错误提示,保留原有 seed/文本降级和重试行为。AIHR 全量测试 55/55、bash -n scripts/demo-check.sh、git diff --check 通过;当前未发现同类日志/任务状态暴露点。该修复已提交为 c16dc0e2,尚未发布生产。
  • 2026-07-14 G3 复核补充:异步上传入队的暂存文件写入异常也改为固定提示“暂存文件写入失败,请重试或联系管理员”,不再把本地 IOException 原文返回给前端;AIHR 全量测试仍为 55/55,修复提交为 7f519dd8,尚未发布生产。
  • 2026-07-14 G3 认证边界复核:AihrMobileController 增加类级 @SaCheckLogin,仅保留 /home/{role} 方法级 @SaIgnore 作为公开只读入口;新增源码契约 marker,避免后续移动端新增接口意外匿名开放。AIHR 全量测试 55/55、脚本语法和空白检查通过,修复提交为 343213cf,尚未发布生产。
  • 2026-07-14 只读发布预检:当前提交 596d204d 工作区干净,release-preflight.sh 通过;生产根站点与租户接口均返回 200。生产管理端仍加载 index-CJZ3Ax3Z.js,本地构建资源为 index-Cz1rtpOj.js;H5 生产与本地均为 index-D4-NrEpb.js。本轮后端认证与错误信息修复未发布,未执行生产写入或重启。
  • 2026-07-14 G3 面试数据权限复核:发现 /api/recruit/interview/records 对普通后台登录用户只要求登录,可能读取当前租户全部候选人面试记录;现改为后台系统用户必须具备 superadmin 或 hr_operator,APP 候选人仍强制绑定本人手机号查询。新增源码契约测试,AIHR 全量测试 56/56、脚本语法和空白检查通过,修复提交为 13e5545c,尚未发布生产。
  • 2026-07-14 G3 案例写入权限复核:发现案例上传、整理和标注入口对任意已登录后台系统用户放行,与 BRD 的 HR/主管/项目负责人边界不一致;现收紧为 superadmin/hr_operator,APP 用户继续通过组织快照中的主管/项目经理身份校验。新增源码契约测试,AIHR 全量测试 57/57、脚本语法和空白检查通过,修复提交为 a728904a,尚未发布生产。
  • 2026-07-14 G3 案例读取权限复核:发现案例列表和详情对任意已登录后台系统用户返回当前租户数据,存在普通后台账号横向读取案例资产的风险;现收紧为 superadmin/hr_operator,APP 用户保留登录后的项目范围读取。新增源码契约测试,AIHR 全量测试 57/57、脚本语法和空白检查通过,修复提交为 b0d24970,尚未发布生产。
  • 2026-07-14 G3 驾驶舱权限复核:发现管理驾驶舱只要求登录,APP 用户或普通后台账号理论上可读取当前租户的组织、训练、知识库、案例和候选人汇总;现收紧为 superadmin/hr_operator,主管团队数据继续走移动端项目范围接口。新增源码契约测试,AIHR 全量测试 58/58、脚本语法和空白检查通过,修复提交为 7522794d,尚未发布生产。
  • 2026-07-14 后续 BRD P1 复核:认证/晋升规则、岗位-SOP 资格 gating、方言样本、正式案例视频样片与组织项目范围仍依赖 HR/运维输入;当前不继续用硬编码、演示 seed 或新增页面伪造完成,下一批优先接正式规则与试点数据后再实现。
  • 2026-07-14 BRD 4.5.1 五维能力画像对齐:员工端与管理端画像现在统一返回“任务完成度、话术规范性、情绪管理能力、响应时效、增值转化潜力”五项;话术规范性由现有合规+沟通陪练分数作为训练代理,情绪和增值转化分别由陪练情绪/营销分代理。任务完成度当前以 SOP 执行/问题推进代理,响应时效在有陪练回合耗时证据时按代理分返回,正式工单闭环率、首解率、首响时长和处理周期仍显示待采集,不把代理指标伪装成 BRD 正式绩效指标。
  • 2026-07-14 BRD 五维画像展示语义收紧:员工端、管理端和证据包导出将平均对练分称为“训练综合分”,缺失的五维指标统一显示“待采集”,不再把空值导出为 null 或把训练综合分称为正式绩效总分。
  • 2026-07-14 BRD 动态难度复核:场景表已有 difficulty 字段,但开始训练仍按用户/主管传入的场景直接启动,没有基于连续高分自动升级复合高压场景的规则、候选场景映射、人工关闭开关或升级证据。该项需要 HR 确认连续高分阈值、升级范围和降级条件后再实现,当前不以固定阈值直接改变员工训练难度。
  • 2026-07-14 线上资源复核:生产根站、/h5/ 和租户接口均返回 200;生产管理端仍加载 index-CJZ3Ax3Z.js(SHA-256 8b9278a26ccb760abce489b12a20b221748c64d4c4153613d2511777bb9677bc),当前本地构建为 index-DF7MSq-V.js(SHA-256 96969b2ae71192cb08b3b2f14edb84355dce6b00679f8237d508ab392c97d7d9),管理端五维画像修复尚未发布;mobile-uni 线上与本地均为 index-D4-NrEpb.js 且 hash 一致。发布预检仍因两个既有 Figma 文档未提交而阻断,本轮未执行生产写入或重启。
  • 2026-07-14 只读发布预检:当前提交 07557656 工作区干净,本地管理端、mobile-uni H5 与后端 jar 均有产物;生产根站点与租户接口返回 200。本轮权限修复尚未执行生产同步、服务重启或业务数据写入,不能把本地提交视为线上已生效。
  • 2026-07-14 AI 面试人工复核闭环:aihr_interview_result 现在持久化 AI 分、人工复核分、最终采用分、复核状态、复核人、意见和时间;HR/管理员可通过 /api/recruit/interview/records/{sessionId}/review 复核,候选人端无该角色权限。finish 响应同步返回真实 sessionId,便于后续复核定位。AIHR 全量测试 65/65、真实本地 HTTP 烟测和旧库懒迁移验证通过;正式试点仍需抽查人工复核证据,生产尚未发布。
  • 2026-07-14 线上资源只读核对:生产根站、/h5/ 和 /prod-api/auth/tenant/list 均返回 200;生产管理端仍加载 index-CJZ3Ax3Z.js,本地当前管理端构建为 index-D4ywKu9Y.js。本次只读检查,未执行生产写入、静态资源同步或后端重启,因此不能把本地人工复核修复宣称为线上已生效。
  • 2026-07-14 BRD G3 面试会话归属复核:发现候选人端 answer/finish 原先只按客户端提交的 sessionId 查内存会话,未知会话还会自动创建并落库;现由控制器把当前 APP 手机号传入服务,APP 请求必须匹配启动会话的候选人 ID,外部会话和未知会话统一拒绝;后台系统调用保留原有兼容行为。新增越权/未知会话回归测试与 demo-check marker,未修改生产环境。
  • 2026-07-14 BRD G3 对练会话归属复核:发现三角色对练的 start 虽已绑定 APP 手机号,但 turn/finish 原先可用任意会话 ID继续提交,未知会话还会回退场景并落成训练记录;现由控制器把当前 APP 手机号传入服务,移动端回合与完成操作必须匹配启动会话的 ext_party_id,外部/未知会话统一拒绝;后台管理端调用保留原有演示兼容行为。新增越权/未知会话回归测试与 demo-check marker,未修改生产环境。
  • 2026-07-14 BRD G3 主管身份多记录复核:同一手机号可能对应多条在职组织记录,主管身份检查和团队范围解析现从全部匹配记录中选择“主管/项目经理”,不再因第一条记录是一线岗位而误拒主管或选错项目范围;新增多岗位手机号回归测试,未修改生产环境。
  • 2026-07-14 BRD G3 移动端角色降级复核:/api/aihr/mobile/me 组织快照查询异常时原先会直接返回 500,与“组织身份不可用时安全降级员工端”的口径不一致;现捕获组织查询运行时异常并返回员工端默认身份,同时仅记录固定错误提示,不泄露外部/数据库错误详情;新增源码契约 marker,未修改生产环境。
  • 2026-07-14 BRD G3 移动端公开首页复核:/api/aihr/mobile/home/{role} 保留未登录首屏能力,但匿名请求此前会读取员工训练统计和主管团队完训/低分/待复盘数据;现改为匿名只返回无租户业务统计的静态 seed,已登录 mobile-uni 自动携带 Authorization/clientid 后,员工只读取本人统计、主管只读取组织快照解析出的项目范围统计,普通员工请求主管角色直接拒绝;已补 service、controller、前端请求、源码契约和真实 HTTP 回归测试;未修改生产环境。
  • 2026-07-14 BRD G3 公开入口扫描:AIHR 当前仅保留公开的移动端静态首页和岗位-SOP 导航两个 @SaIgnore 入口;训练、上传、搜索、复盘、模型、组织同步等控制器均有登录或角色门禁,未发现新的匿名写入或业务数据公开入口;未修改生产环境。
  • 2026-07-14 BRD G3 项目范围复核:发现主管身份和团队范围查询仍使用 LIMIT 1,同一手机号关联多个在职项目时可能只取首个项目,导致主管团队数据漏项;现改为收集全部主管/项目经理项目编码并合并其在职成员与手机号范围,保留一线员工仅查看本人数据的降级边界。新增多项目范围回归测试;AIHR 全量测试 70/70 通过,未修改生产环境。
  • 2026-07-14 发布差异复核:本地最新提交 2f36476e 已包含主管多项目范围修复,但 release-preflight.sh 因两份既有未提交 Figma 文档阻断;生产根站和 /h5/ 均返回 200,生产管理端仍加载旧资源 index-CJZ3Ax3Z.js。本轮未执行生产写入、静态资源同步或服务重启,不能把本地权限修复视为线上已生效。
  • 2026-07-14 BRD 4.4 每日三题口径复核:当前 ensureDailyDrills 以“移动端训练记录少于 3 次”作为新员工近似条件;aihr_org_snapshot 只有快照日期,没有入职/任职起始日期,因此不能证明“入职 3 个月内”,也不能用账号创建时间替代。当前保留该近似仅用于 Demo;正式试点需由组织同步提供并确认 hire_date/entry_date 字段后,再把每日派题资格改为真实任职日期判断。
  • 2026-07-14 BRD G3 移动首页权限复核:发现公开首页方法对已登录 SYS 用户仍可能调用全局统计分支;现要求只有 APP 用户且身份非空才读取员工/主管动态数据,后台系统用户和异常身份统一返回无业务统计的公开 seed。AIHR 全量测试 70/70 通过,未修改生产环境。
  • 2026-07-14 BRD G3 音频读取权限复核:发现移动端音频下载接口对已登录 SYS 用户未校验角色,普通后台账号理论上可枚举 ossId 读取训练录音;现复用 superadmin/hr_operator 门禁,APP 用户继续按本人/主管项目范围校验,其他身份返回 403。AIHR 全量测试 70/70 通过,未修改生产环境。
  • 2026-07-14 BRD 4.4 每日三题资格补强:每日派题现在在组织快照存在 hire_date 列时按“入职日期至今不超过 3 个月”判断,边界按自然月且包含当天;旧 Demo 快照没有该列时继续使用“移动端训练记录少于 3 次”的兼容回退。正式试点仍需在外部组织同步落地并校验 hire_date,不能把回退口径当成正式新员工资格。
  • 2026-07-14 BRD 4.4 每日三题提交幂等复核:前端虽已禁用已完成题,后端原先仍允许重复 POST 覆盖答案、反馈和音频证据;现要求查询和更新均只接受“当天、本人、status='待训练'”的记录,并校验更新行数,已完成或历史日期记录保留原始证据,重复或并发请求按“不存在或已完成”处理。
  • 2026-07-14 BRD 4.4 派发任务启动复核:移动端带 assignmentId 开始训练时,后端现校验任务属于当前员工、来源不是每日题、状态仍为“待训练”,并校验请求场景与派发场景一致;自由选场景请求不受影响,避免客户端改写 scenarioId 后错误完成主管派发任务。
  • 2026-07-14 BRD 4.4 派发任务完成归属复核:训练结束时原先再次信任客户端 finish.assignmentId,可能把员工名下另一条待训任务误标为完成;现只使用开始会话中服务端绑定的 ActiveSession.assignmentId 更新任务,客户端不能替换完成对象。
  • 2026-07-14 BRD G3 候选资料审核状态复核:候选人资料审核接口此前在空请求体时默认写回“待审核”,可能覆盖已有“已通过/已驳回”状态;现要求审核动作显式提交三态之一,空值和未知状态直接拒绝,避免后台误操作回退审核结论。
  • 2026-07-14 BRD 案例署名复核:案例库已有负责人字段,但此前上传、整理和入库记录都硬编码为“培训组”,无法追溯案例贡献者;现复用既有 owner 字段保存首次上传身份,整理和入库阶段保留原署名,手机号身份仅显示员工末四位,避免把原始手机号写入案例展示。
  • 2026-07-14 BRD 候选人关联完整性复核:候选人—员工关联接口此前只校验员工主体在职,允许给不存在的任意 candidateId 建立入职关联;现要求候选人必须来自内置候选档案、活动面试会话或当前租户已持久化面试记录,保留已有幂等关联和历史数据兼容。
  • 2026-07-14 BRD SOP 审核留痕复核:SOP 问答评审接口此前接受请求体中的 reviewer 并直接入库,登录用户可伪造审核人;现由控制器从当前登录用户传入服务端操作人,请求体仅保留评审结论和备注,保留旧服务调用的默认“人工评审”兼容。
  • 2026-07-14 BRD 知识答案反馈复核:原先只更新 review_status,没有复核人和复核时间;现由服务端记录登录操作人到 reviewer/reviewed_time,管理端待复核表同步展示留痕。
  • 2026-07-14 BRD 知识反馈归属复核:答案反馈原先信任客户端传入的片段 ID,未校验知识片段是否属于当前租户;现入库前按当前租户校验片段归属并限制单次最多 20 个片段。
  • 2026-07-14 BRD 知识反馈关联复核:答案反馈原先直接接受客户端传入的 reviewId;现仅保留当前租户存在的 SOP 评审关联,非法或跨租户 ID 归一为空。
  • 2026-07-14 BRD 候选资料审核留痕:候选资料审核此前只有状态三态,没有审核人和审核时间;现由服务端从当前 HR 登录态写入 reviewer/reviewed_time,管理端审核表同步展示。
  • 2026-07-14 BRD 试点门禁租户参数化:严格试点预检此前将 M5 查询固定到 tenant_id='000000',正式试点切换租户时会统计错误;现支持经过字符白名单校验的 AIHR_PILOT_TENANT_ID,默认仍为本地开发租户,试点命令和文档已同步。
  • 2026-07-14 BRD SOP 人工评审结论完整性:POST /api/knowledge/reviews/{id} 现在要求明确提交 usable=true/false,空请求或缺少结论会拒绝,不再把未作答误记为“不可用”;reviewer 仍由当前登录操作人写入。已补服务层回归测试与 demo-check marker,但这只修正评审数据完整性,不代表住宅 SOP 可用率已达到正式试点门槛。
  • 2026-07-14 线上只读核对:生产根站点、/h5/ 和 /prod-api/auth/tenant/list 均返回 200,当前线上仍加载管理端 index-CJZ3Ax3Z.js 与 H5 index-D4-NrEpb.js;本地 8fcc58fe 的 SOP 评审结论校验尚未发布。release-preflight.sh 仍因两份既有 Figma 文档未提交而阻断,本轮未执行生产写入、静态资源同步或后端重启。
  • 2026-07-14 BRD 4.6 案例发布状态复核:员工端案例列表和详情原先只按租户/项目范围读取,未限制案例状态,理论上可能看到仍处于“已转写/已整理”的管理流程半成品;现对 APP 项目范围读取增加 status='已入库',管理端 HR/管理员仍可查看全部状态以继续处理。新增案例服务回归测试,AIHR 全量测试 81/81 通过;视频样片、学习点和主管点评仍需正式业务输入。
  • 2026-07-14 BRD 案例提交能力边界复核:移动端案例页原先对所有登录员工展示“提交素材”表单,但后端仅允许主管/项目负责人提交,普通员工点击后才得到权限错误;现新增只读 GET /api/knowledge/case/capabilities,复用服务端唯一贡献者判定,员工端仅在 canSubmit=true 时展示提交入口,其他员工显示案例学习说明。后端权限仍保留为最终防线。
  • 2026-07-14 线上只读发布差异:生产根站和 /h5/ 返回 200,生产仍加载 H5 assets/index-D4-NrEpb.js;本地 b8be1bb6 构建已生成 mobile-uni/dist/build/h5/assets/index-u8NWYNWX.js,案例状态过滤和提交能力入口尚未发布。本轮未执行生产静态资源同步、后端重启或业务数据写入。
  • 2026-07-14 BRD 4.7 SOP 指标口径复核:正式试点的 SOP 可用率与待评审数现只统计评审表中 category='sop' 或名称包含 SOP 的记录,并继续按租户和试点日期窗口过滤;培训类或其他知识问答不会混入正式 SOP 分母。后端导出、严格预检和单测夹具已统一该条件;岗位与住宅项目的正式适用性仍需组织/HR 规则输入,不能仅靠分类字符串替代。
  • 2026-07-14 BRD 4.4 每日三题结果留痕补强:每日三题提交返回的分数此前只存在响应内,刷新任务列表后无法恢复数值分数;现新增 aihr_practice_assignment.score,提交、查询、员工学习页均保留“得分 + 反馈”。当前得分仍来自可解释关键词规则兜底,不把它宣称为语义级 AI 评分;后续若启用模型评估,需单独补评分模式、成本闸门和人工抽检证据。
  • 2026-07-14 BRD 4.4 每日一练评分能力复核:当前 scoreDailyDrill 使用参考答案关键词命中和长度规则即时反馈,属于可解释的规则兜底,不等同于 BRD 所称的语义级“AI 秒评”;正式升级前需确认模型、成本闸门、评分维度和人工抽检样本,当前不把规则分数宣称为 AI 评测结果。
  • 2026-07-14 BRD G6 成本计量复核:模型调用已有手动运行断路器,但当前没有 llm_call_log 或等价的租户级 token、延迟、费用持久化;由于供应商计费字段、单价和月度阈值尚未确认,本轮不新增价格硬编码或生产数据表,先把该项保留为生产前闸门。
  • 2026-07-14 TechSpec 3.8 调用反馈补强:模型测试接口成功调用时现在返回供应商 prompt_tokens/completion_tokens/total_tokens 和本次 latencyMs;未配置、成本断路器或调用失败仍返回空 usage,不伪造 token 或费用。该反馈可作为后续 llm_call_log 的输入,但不等于已完成月度成本计量和自动阈值降级。
  • 2026-07-14 线上只读发布差异复核:生产根站点、/h5/、/prod-api/auth/tenant/list 和 /prod-api/api/aihr/mobile/home/user 均返回 200;生产管理端仍加载 index-CJZ3Ax3Z.js(SHA-256 8b9278a26ccb760abce489b12a20b221748c64d4c4153613d2511777bb9677bc),H5 仍加载 index-D4-NrEpb.js(SHA-256 ab15bfd17cabe58e2f34b0ac61ee198a837128ed85dc6bb0ddf77bc3e22dcd9c),当前本地构建为管理端 index-BM4_rycA.js(SHA-256 f5a0fa82a20bb242ebad85f72dca6330faa7d0d51435876210528e84053a2e93)和 H5 index-Byx3WtY1.js(SHA-256 1d2a9d8f947e8a198c31f15a5cf4b66ba4220b1f549c4376c72cc1da56b1d7eb)。本轮未执行生产同步、重启或数据写入,不能把本地 BRD 修复宣称为线上已生效。
  • 2026-07-14 发布预检补强:scripts/release-preflight.sh 新增可选 RELEASE_VERIFY_REMOTE_MATCH=true,发布后可从线上 HTML 解析管理端/H5 主 JS 并与本地产物 SHA-256 对比;默认不开启,不影响发布前检查。当前只读核验仍显示两端 hash 不一致,尚未执行生产同步。
  • 2026-07-14 异步上传队列租户审计校正:此前“队列仍使用固定租户、待按条目租户改造”的记录已被后续实现覆盖。当前入队、列表、详情和重试按请求租户隔离;worker 领取时读取并 CAS 校验行内 tenant_id,加工通过 TenantHelper.dynamic(tenantId, ...) 进入条目租户,成功/失败回写、ZIP 子条目和卡死清扫均沿用条目租户;AihrUploadQueueServiceTest 已覆盖这些源码契约。000000 仅保留为无登录本地开发回退。结论:当前未发现队列跨租户处理缺口,正式多租户仍需测试环境持续回归。
  • 2026-07-14 BRD schema 状态校正:早期记录中的 aihr_practice_audio 缺失已由后续生产 schema 修复覆盖;当前仓库 reset SQL、运行时建表定义和生产核验记录均包含该表,严格预检继续保留显式存在性检查。后续若正式试点启用音频留痕,仍需抽查真实音频行和 OSS 对象权限,不把“表存在”当成音频链路验收完成。
  • 2026-07-14 最新线上资源复核:生产根站与 /h5/ 均返回 200,线上管理端 index-CJZ3Ax3Z.js SHA-256 为 8b9278a26ccb760abce489b12a20b221748c64d4c4153613d2511777bb9677bc,H5 index-D4-NrEpb.js SHA-256 为 ab15bfd17cabe58e2f34b0ac61ee198a837128ed85dc6bb0ddf77bc3e22dcd9c;当前 HEAD 1757dcb8 重建后的本地入口分别为 index-v0LFXtVo.js SHA-256 0fc78c86e734be76aeb8ae03a551f98df9f689db5352a92af77c781c70efccde、index-Byx3WtY1.js SHA-256 1d2a9d8f947e8a198c31f15a5cf4b66ba4220b1f549c4376c72cc1da56b1d7eb。两端仍未发布,本轮只读核验,无静态资源同步、后端重启或业务数据写入。
  • 2026-07-14 生产迁移资产复核:aihr_practice_audio、aihr_practice_calibration 已存在于 reset SQL 和运行时懒建表定义,但 backend/script/sql/update/ 尚无对应版本化生产迁移脚本;生产 schema 曾通过人工 CREATE TABLE IF NOT EXISTS 修复。当前不把 reset SQL 或懒建表当正式发布迁移,待 DBA/运维确认迁移归属和执行窗口后,再补经审阅的幂等脚本并做回滚/结构核验。
  • 2026-07-14 BRD 用户端入口复核:员工端“问师傅/练/学习中心/案例学习”均已有真实页面和业务路径;“工作上报”进入明确的建设中页,但该能力属于阶段二信息直达或阶段三北森/报事集成范围,不属于一期陪练缺口。当前不把建设中入口改成空壳功能,待对应阶段专项计划和接口契约确定后再实现。
  • 2026-07-14 BRD G3/G6 异步模型租户上下文复核:AihrModelSeedService 原先用 LoginHelper.getTenantId() 解析模型配置,异步上传队列、目录导入等 worker 虽已用 TenantHelper.dynamic(tenantId, ...),进入模型/语音/RAG调用后仍可能因无登录态回退 000000;现统一改用动态租户优先的 TenantHelper.getTenantId(),普通请求仍回退登录租户,补源码契约测试。覆盖模型配置、对练/面试、语音、SOP 向量/重排/视觉和异步资料加工的共享边界;未修改数据库或生产环境。
  • 2026-07-14 测试门禁复核:父 POM 默认 skipTests=true,普通 mvn ... test 只完成编译;改用 -DskipTests=false 真跑 AIHR 测试时发现 AihrSensitiveTextTest 仍检查已移出 AihrModelSeedService 的 latencyMs 字符串,已按当前 ModelUsage + Duration 实现修正断言。后续 AIHR 测试命令必须显式关闭跳测,避免把编译成功误判为测试通过。
  • 2026-07-14 最新线上只读复核:生产根站与 /h5/ 返回 200,线上管理端仍加载 index-CJZ3Ax3Z.js(SHA-256 8b9278a26ccb760abce489b12a20b221748c64d4c4153613d2511777bb9677bc),H5 仍加载 index-D4-NrEpb.js(SHA-256 ab15bfd17cabe58e2f34b0ac61ee198a837128ed85dc6bb0ddf77bc3e22dcd9c);当前分支 b32be4a3 工作区本地构建仍为管理端 index-v0LFXtVo.js、H5 index-Byx3WtY1.js,两端资源未对齐。本轮只读核验,未执行生产静态同步、后端重启或业务数据写入。
  • 2026-07-14 BRD 5.4 主数据边界复核:发现 aihr_org_snapshot 及 AihrOrgSyncService 当前仍持久化并通过管理端组织快照返回 project_name/dept_name/person_name,同时保留 person_phone 做移动端身份映射;这与 BRD“本地只存外部 party_id,绝不复制姓名/部门”的硬约束不一致。TechSpec 3.1 又把 sync_person.name/phone 列为外部同步快照字段,项目现有 Demo/管理端也依赖姓名、部门和项目展示,因此不能直接删列或清空生产数据,否则会破坏组织筛选、主管范围展示和训练记录标签。该项暂列 P0 合规缺口:正式组织同步前必须由业务/法务/安全确认“生产只存 ID 与必要映射”还是允许受控显示缓存,并给出迁移、脱敏和管理端展示方案;在决策完成前不执行正式覆盖同步,也不把当前组织快照称为符合 BRD 5.4。
  • 2026-07-14 BRD 用户端权限路由复核:后端已对主管接口做身份与项目范围校验,但登录后普通员工请求主管深链时此前仍会先进入主管页面,再由接口返回无权限空态;现将 mobile-uni 的员工角色路由显式收口到员工首页,并补用户端源码回归断言与 demo-check marker。该修复只改善路由边界,不替代正式组织岗位映射;线上仍需用正式组织身份验证主管角色。
  • 2026-07-14 BRD 5.4 渐进缓解:增加 aihr.org-sync.store-display-fields 开关,生产配置默认 false,开发配置显式 true;关闭时组织同步不再写入姓名/部门,组织快照接口也不返回历史姓名/部门,关键词搜索同步收窄为外部主体、项目和岗位字段,管理端人员列回退显示 ext_party_id。该修复降低新同步和 API 暴露风险,但不等于完成数据模型迁移:历史生产行仍可能保留旧显示字段,person_phone 仍是身份映射必要字段,正式上线前仍需 DBA/法务确认清理、保留期和最小字段方案。
  • 2026-07-14 BRD 5.4 前端回退复核:生产关闭组织显示字段后,成长激励页人员选择器原先仍直接渲染 personName,会出现“空姓名 / 岗位”;现统一回退为 personName || extPartyId,与组织权限页、主管复盘页保持一致,并加入 demo-check 防回归标记。该修复只保证最小身份展示,不改变 BRD 5.4 的历史数据迁移和正式组织同步结论。
  • 2026-07-14 BRD 4.5 认证规则复核:成长激励页、证据包和后端画像均明确“训练画像参考等级/需 HR 或主管复核”,学分规则显示“待 HR 配置、当前不生效”;后端初/中/高级阈值仅用于训练证据展示,未作为正式资格、晋升或绩效结论。当前无需再加一套伪配置页面,待 HR 明确 cert_rule/incentive_rule 的来源、版本、生效时间、防刷和人工审批后再实现持久化规则。
  • 2026-07-14 BRD 4.7/10.2 内容指标语义复核:管理驾驶舱原先把“已处理 SOP 文档数”直接标成“B1 目标 >=5 流程”,可能把文档数量误判为核心流程覆盖;现改为“SOP文档 / 核心流程覆盖待内容确认”,并保持提醒态。待内容负责人确认 5 个核心流程编码和适用范围后,再增加正式覆盖率统计。
  • 2026-07-14 BRD L1-D 组织人数口径复核:管理驾驶舱原先把当前租户 aihr_org_snapshot 的 active 人数直接标成“试点人数”,但该数量不代表正式窗口内有唯一在职身份、手机号映射和训练参与记录;现改为“组织快照人数 / 正式试点身份待核对”,并保持提醒态。正式试点人数仍以限定窗口和唯一组织身份统计为准。
  • 2026-07-14 BRD L0-2 端到端路径口径复核:管理驾驶舱原先把面试、训练、案例、知识四个数据域是否有记录的数量标成“端到端路径”,这不能证明任一英雄路径从入口到结果完整跑通;现改为“已有业务数据域 / 不等于端到端验收”,真实链路仍以浏览器/API 证据为准。
  • 2026-07-14 BRD L1 主页状态口径复核:驾驶舱阶段卡片原先把组织快照存在直接显示为“已接入”,SOP 文档数达到 5 直接显示为“已满足”;现统一改为“快照已存在”和“已处理文档、核心流程待确认”,避免首页状态越过正式组织同步和内容覆盖证据。
  • 2026-07-14 BRD 6.3 演示回退语义复核:资料处理中心接口失败时仍保留内置演示统计用于断网演示,但此前没有明确标识,可能被误读为真实库数据;现增加“当前显示演示数据,不代表真实库统计”提示,真实接口成功时不显示该提示。
  • 2026-07-14 最新线上只读复核:生产根站、/h5/ 和租户接口均返回 200;线上管理端主资源 index-CJZ3Ax3Z.js SHA-256 为 8b9278a26ccb760abce489b12a20b221748c64d4c4153613d2511777bb9677bc,H5 主资源 index-D4-NrEpb.js SHA-256 为 ab15bfd17cabe58e2f34b0ac61ee198a837128ed85dc6bb0ddf77bc3e22dcd9c;当前本地构建为管理端 index-Cin-vnjm.js SHA-256 ca210da50942693d52fb103fe34785be31e2bd263c7d11c0a60959c4dd90deaa、H5 index-Byx3WtY1.js SHA-256 1d2a9d8f947e8a198c31f15a5cf4b66ba4220b1f549c4376c72cc1da56b1d7eb。本轮只读核对,未执行生产同步、重启或业务数据写入。
  • 2026-07-14 BRD 6.3 案例回退语义复核:案例列表接口失败时原先只弹一次提示并静默展示内置案例记录,可能被误读为真实案例库数据;现增加持久的“当前显示演示记录,不代表真实案例库数据”提示,接口恢复后自动消失。该修复只校正演示回退语义,不增加案例数量或替代正式案例资产。
  • 2026-07-14 BRD G3 异步资料队列租户复核:队列领取与卡死清扫按所有租户扫描,单条加工从队列条目携带的 tenant_id 进入 TenantHelper.dynamic(tenantId, ...),状态回写继续带租户条件;定向 AihrUploadQueueServiceTest 通过。当前仍缺真实双租户上传/目录导入回归,不能仅凭源码契约测试宣称生产隔离已验收。
  • 2026-07-14 BRD 6.3 模型配置回退语义复核:模型供应商/模型接口失败时原先会静默保留内置默认清单,仅通过一次性 toast 提示;现增加持久的“当前显示内置默认清单,不代表真实租户配置”提示,接口恢复后自动消失。该修复不改变模型配置、密钥或调用降级规则。
  • 2026-07-14 BRD 6.3 提示词模板回退语义复核:模型配置页的提示词模板接口失败时原先直接显示空列表,无法区分真实无模板与接口不可用;现增加持久的“当前列表不代表真实租户模板数据”提示,接口恢复后自动消失。该修复不创建默认模板,也不改变模板写入权限。
  • 2026-07-14 BRD 6.3 AI 面试记录回退语义复核:面试记录接口成功返回空列表时原先会错误替换为内置历史记录,接口失败时也只静默回退;现保留真实空列表,仅失败时展示演示记录并增加持久提示“当前显示演示记录,不代表真实面试数据”。该修复不改变面试题生成、评分或复核流程。
  • 2026-07-14 BRD 6.3 复盘与 SOP 数据来源复核:复盘页在试点指标接口失败时原先用待复盘记录数代替校准样本数,现改为显示未知并持久提示接口不可用;SOP 文档表继续保留断网演示样例,但为内置演示/已上传记录增加来源标识和提示,避免把演示文档或列表数量误当真实库覆盖与 M5 指标。
  • 2026-07-14 BRD 6.3 对练记录回退语义复核:管理端三角色对练页原先始终显示三条静态最近记录,未请求真实复盘记录;现改为 API 优先,真实空列表保持为空,只有接口失败才显示演示记录并持续提示。当前会话完成后追加到现有列表,不再重置时覆盖历史记录。
  • 2026-07-14 BRD 6.3 管理端记录首屏回退复核:面试、案例和三角色对练页此前在接口结果返回前就初始化内置 baseRecords,慢请求期间可能把演示记录误看成真实业务记录;现统一改为加载期间空表加 loading,只有接口明确失败后才展示演示记录并保留持久提示,真实空列表继续保持为空。补充 demo-check 静态标记,管理端 ESLint 与构建通过;本轮未发布生产。
  • 2026-07-14 BRD 6.3 候选人记录失效回退复核:首页、进度和资料页刷新接口失败时原先保留上一次成功结果,错误提示出现但旧面试/资料仍可被误读为当前状态;现统一在失败时清空失效数据,登录过期仍沿用原有跳转提示。补充候选端源码回归测试、demo-check 标记,mobile-uni 单测 50/50、类型检查和 H5 构建通过;本轮未发布生产。
  • 2026-07-14 线上资源差异复核:生产根站、/h5/、/prod-api/auth/tenant/list 和 /prod-api/api/aihr/mobile/home/user 均返回 200;线上管理端仍加载 /assets/index-CJZ3Ax3Z.js,H5 仍加载 /h5/assets/index-D4-NrEpb.js,当前本地构建分别为 /assets/index-ClaGy0E5.js(SHA-256 788247429e1e20d10306258747d08abdc6903f57fe1313a3e742d141ddcd77fb)和 /h5/assets/index-C5pwI-WO.js(SHA-256 9d1c53f98561799f4b13fda37e7a25899d4ccc877a3d54a93369bfbfc984dbf7)。当前只读核验,未执行生产静态资源同步、后端重启或业务数据写入;发布预检继续保留未提交文件保护。
  • 2026-07-14 发布预检卫生复核:根目录 node_modules/ 确认为构建工具生成物,已加入 .gitignore,避免依赖目录阻塞发布检查;RELEASE_VERIFY_REMOTE_MATCH=true 的预检仍因两份用户未提交的 Figma 文档退出,说明未绕过“发布批次必须干净”的保护。
  • 2026-07-14 BRD G3 匿名入口复核:扫描 AIHR 全部控制器后,当前仅保留两个 @SaIgnore 方法:公开移动首页 /api/aihr/mobile/home/{role} 和岗位-SOP 导航 /api/knowledge/position-sop;训练、搜索、上传、复盘、模型、组织同步及音频读取均有登录或角色门禁,未发现新的匿名业务数据入口。本轮无新增代码修复。
  • 2026-07-14 BRD M5 导出指标语义复核:formal_org_login_count 原名会把按安全手机号映射统计的在职组织身份误读为登录次数;现统一更名为 formal_org_identity_count,统计 SQL 不变,CSV 契约、严格校验和验证脚本同步更新。AIHR 目标测试 34/34、CSV 契约测试 5/5 通过;不改变真实试点数据门槛,也未发布生产。
  • 2026-07-14 BRD G3/M5 评审样本绕过复核:SOP 搜索的 source=verify_demo_questions 原由客户端直接控制,普通登录用户可借此跳过评审样本写入,稀释正式可用率分母;现仅超级管理员保留该内部验证来源,其他请求自动归一为普通 knowledge_search,并补预检标记与回归测试。未修改生产环境。
  • 2026-07-14 M5 试点输出口径复核:严格预检的组织映射数量已与 CSV 的 formal_org_identity_count 统一显示为 org_identity,并同步行为测试断言;统计逻辑不变,避免把在职组织身份映射数误读为登录次数。未修改生产环境。
  • 2026-07-14 BRD 4.7/G3 反馈追溯复核:答案反馈原先只校验客户端传入的 reviewId 属于当前租户,可能把其他问题的同租户评审记录绑定到当前反馈;现同时校验评审记录中的脱敏问题文本与反馈问题一致,不一致时仅清空关联、不阻断正常反馈写入,并补源码契约与预检标记。未修改生产环境。
  • 2026-07-14 线上只读核对:生产根站、/h5/ 和 /prod-api/auth/tenant/list 均返回 200,线上仍加载管理端 index-CJZ3Ax3Z.js 与 H5 index-D4-NrEpb.js;本轮 aa7e1508、5d85d63c 两个 BRD 修复提交尚未发布。未执行生产同步、重启或业务数据写入。
  • 2026-07-14 发布证据链复核:release-preflight.sh 原先只检查构建产物存在和 hash,旧产物可能被误当成当前提交发布;现增加跨 macOS/Linux 的产物时间门禁,管理端、H5 入口/主资源和后端 jar 必须不早于当前 HEAD,否则明确要求重建。该修复只收紧本地发布前检查,未修改生产环境。
  • 2026-07-14 BRD 发布边界复核:基于当前 HEAD=0433250b 重新构建管理端、mobile-uni H5 和后端 jar 后,release-preflight.sh 的产物新鲜度检查通过;线上根站与 /h5/ 仍返回 200,但线上仍加载管理端 assets/index-CJZ3Ax3Z.js、H5 assets/index-D4-NrEpb.js,本地当前产物分别为 assets/index-ClaGy0E5.js、assets/index-C5pwI-WO.js。预检随后因两份用户未提交的 Figma 文档停止;本轮未修改、暂存或提交这两份文档,也未执行生产同步、后端重启或业务数据写入,因此当前 BRD 修复仍未被证明在线上生效。
  • 2026-07-14 BRD 4.3.4 门禁补强:严格试点预检不再只按启用场景数量判断覆盖,新增“服务推介/增值”和“日常服务”场景存在性统计;当前仅增加事实检查,不臆造场景内容,场景成功条件、SOP 适用范围和正式质量仍需内容负责人确认。行为测试夹具已覆盖两类统计,严格门禁会在缺任一核心流程时明确失败。
  • 2026-07-14 BRD G3 个人数据边界复核:移动端个人历史、错题、画像、晋升证据和任务读取共用 ownMobileExtPartyId;此前普通系统用户可传任意 extPartyId,绕过 HR/管理员角色读取员工个人数据。现统一要求系统用户具备 superadmin 或 hr_operator,APP 用户仍只使用登录手机号,主管团队接口继续走独立项目范围校验;补源码回归断言,未改变数据库或生产数据。
  • 2026-07-14 BRD G3 空身份路径复核:员工任务列表省略 extPartyId 时此前会进入空身份查询,普通系统用户可能看到当前租户任务集合;现与个人历史/画像共用同一身份归一化,APP 用户按登录手机号、HR/超级管理员按授权范围读取,普通系统用户直接拒绝;补回归断言,未改变数据库或生产数据。
  • 2026-07-14 BRD 发布证据复核:当前 HEAD 的管理端、mobile-uni H5 和 ruoyi-admin jar 均已重新构建通过;只读线上根站与 /h5/ 均返回 200,线上仍加载管理端 index-CJZ3Ax3Z.js、H5 index-D4-NrEpb.js,本地当前产物已刷新为管理端 index-Cin-vnjm.js、H5 index-Byx3WtY1.js。RELEASE_VERIFY_REMOTE_MATCH=true 的发布预检在产物新鲜度通过后,因两份用户未提交 Figma 文档停止;本轮未修改、暂存或提交这两份文档,也未执行生产同步、后端重启或业务数据写入。
  • 2026-07-14 BRD 4.3.4 内容现状核对:本地开发租户当前启用生活顾问场景 12 条,但服务推介/增值场景 0 条、日常服务场景 0 条;已入库案例 2 条,知识附件处理数 0 条。严格预检继续把两类核心流程和正式内容数量作为事实门禁;本轮不自拟业务话术或伪造知识/案例数据,待内容负责人提供正式 SOP、成功条件和脱敏素材后再入库验收。
  • 2026-07-14 BRD G1/4.5 证据包评分边界修复:成长/晋升证据包此前只展示 AI 测评分,人工校准结果仅存在于试点 CSV;现复用 aihr_practice_calibration 最新记录,向管理端和员工端同时返回人工校准分、最终采用分和校准样本数,并在导出证据包中保留三项字段。未校准时明确显示“待采集”,不把 AI 分伪装成人工结论;AI 仍仅作训练参考,不直接生成绩效或晋升结论。
  • 2026-07-14 BRD 4.5/4.7 案例贡献证据边界复核:现有 aihr_case_record.owner 仅保存负责人展示值(系统用户或员工末四位),没有稳定 ext_party_id、采纳审核任务或 incentive_point.source='case_contribution' 关联;当前案例上传/入库数量不能安全算作员工案例贡献。成长证据包现明确提示“案例上传/入库”与“正式采纳、署名、积分”分离,未把案例数量伪装成晋升证据;待 HR 确认 review_task 终审、署名和积分规则后,再设计正式关联与统计。
  • 2026-07-14 BRD 4.5/B5 贡献度口径修复:能力画像此前把训练次数和待复盘状态混入 contribution,会将训练活跃度误显示为有效贡献;现将贡献度收敛为 aihr_practice_session.incentive_point 的人工确认分,训练次数继续单独展示。未新增积分来源或自动案例计分,正式案例贡献仍等待 review_task/署名/积分规则。
  • 2026-07-14 BRD 4.4 错题本任务来源展示修复:员工学习中心此前把所有非每日题任务统一显示为“专项训练”,会遮蔽 retry 错题再练和 camp 训练营来源;现按服务端来源分别显示“错题再练/训练营/专项训练”,并保留每日三题标签与样式区分。该修复只校正任务语义展示,不把 source='camp' 标签扩展成未配置的训练营计划、进度或完成规则。
  • 2026-07-14 BRD 4.5/G1 员工画像文案复核:员工端此前将训练画像参考等级简称为“训练画像等级”,将人工确认的 incentive_point 简称为“贡献度”;现明确显示“训练画像等级(参考)”和“人工贡献分”,避免把参考画像或未配置正式激励规则的分数误读为晋升/绩效结论。
  • 2026-07-14 14:08 线上资源只读复核:生产根站、/h5/ 和 /prod-api/auth/tenant/list 均返回 200;线上管理端仍加载 assets/index-CJZ3Ax3Z.js,H5 仍加载 assets/index-D4-NrEpb.js,当前本地提交 ac7dfbe8 的构建分别为 assets/index-B3bSjqdi.js(SHA-256 2ff13b11307631f9cd672247d6d08e395fb674ac5b9c6f7c4fb27832eacdf075)和 assets/index-K8ty6kmk.js(SHA-256 b238291fef841d4ff57ce76cb2ddfa50eaa3778c53a475fab9cf1284a1da33c9)。本轮仅只读核对,未同步静态资源、重启后端或写入生产数据。
  • 2026-07-14 BRD G3 组织快照质量门禁修复:生产默认关闭 store-display-fields 时,AihrOrgSyncService 原先在 orgRow() 内先清空姓名/部门,再以已屏蔽的 OrgRow 计算 suspectText,外部姓名/部门中的问号乱码可能被漏报,覆盖写入保护因此不完整。现先基于外部原始字段计算 suspectText,再独立保存质量标记;展示字段仍按生产脱敏策略清空,组织表结构和写入字段不变。新增 AihrOrgSyncServiceTest 回归和 demo-check marker;未修改生产数据。正式同步仍需真实上游快照、手机号映射和法务确认。
  • 2026-07-14 BRD 4.3.4 每日三题资格边界修复:aihr_org_snapshot 没有 hire_date 时,旧逻辑用“移动端训练记录少于 3 次”推断新员工,可能把老员工或临时账号误派每日三题。现仅在本地 application-dev.yml 显式开启 allow-legacy-daily-drill-fallback=true;生产默认关闭,正式环境必须等组织同步提供 hire_date 后再按三个月窗口派发。新增边界测试和 demo-check marker;不改数据库结构,不伪造正式新员工数据。
  • 2026-07-14 BRD 4.3.4 每日三题生产 profile 硬门禁:旧回退即使被环境变量显式打开,仍可能在生产 profile 生效;现仅允许 dev/local profile 使用训练次数兼容回退,prod 或混合 profile 强制关闭。新增 profile 边界测试和 demo-check marker;未修改数据库结构或生产数据。
  • 2026-07-14 BRD 6.3 SOP 来源标识修复:SOP 检索成功时前端原先忽略 API 返回的 records,后端返回的内置记录也没有来源字段,可能把演示文档显示成真实知识库;现 API 成功态只使用响应记录,内置记录明确标记 source=demo,失败/未检索态继续保留已有回退提示。未修改知识库数据或生产环境。
  • 2026-07-14 当前线上资源复核:生产根站、/h5/ 和 /prod-api/auth/tenant/list 均返回 200;线上管理端 index-CJZ3Ax3Z.js SHA-256 为 8b9278a26ccb760abce489b12a20b221748c64d4c4153613d2511777bb9677bc,当前分支构建 index-B3bSjqdi.js SHA-256 为 2ff13b11307631f9cd672247d6d08e395fb674ac5b9c6f7c4fb27832eacdf075;线上 H5 index-D4-NrEpb.js SHA-256 为 ab15bfd17cabe58e2f34b0ac61ee198a837128ed85dc6bb0ddf77bc3e22dcd9c,当前分支构建 index-8gZKJTho.js SHA-256 为 c6b01faeba4198cb7ff9f5c2ffa88f1cc97c8ecdf20be86f432ca7a1d673f3e1。本轮只读核验,未执行生产静态资源同步、后端重启或业务数据写入。
  • 2026-07-14 BRD 4.4 场景派发覆盖复核:数据库已有 12 个生活顾问场景,但移动端主管“指派专项”和“复盘后再练”此前只提供 3 个静态场景,导致其余已启用场景无法从主管入口使用;现改为 API 优先加载已启用场景,失败时保留 3 个本地兜底。BRD 所称 7–14 天专项训练营目前仍只有 source='camp' 标签,没有训练营计划、天数、每日任务、进度和完成规则,需 HR 确认内容与运营口径后再实现,不以标签冒充训练营闭环。
  • 2026-07-14 BRD G3/M5 派发来源完整性复核:主管派发接口此前信任客户端 source,理论上可把手工派发伪装成 daily、retry 或 camp,污染每日题、低分再练和训练营统计;现将主管创建任务的来源固定为服务端 manual,daily/retry 仍只由各自系统路径生成。新增服务源码回归测试与 demo-check marker,未修改生产数据。
  • 2026-07-14 BRD M1 场景启停边界复核:停用场景此前在新训练启动时可能因内置 seed 回退而继续可用,管理端“停用”不具备实际阻断效果;现仅在新开始训练前检查数据库场景的 enabled 状态,已停用场景明确拒绝,历史训练/复盘读取不受影响。新增服务源码回归测试与 demo-check marker,未修改生产数据。
  • 2026-07-14 BRD M1 派发场景状态与展示一致性复核:修复停用场景仍可通过直接派发接口进入待训练,以及客户端传入场景名称可与场景 ID 不一致的问题;主管派发现在复用启停校验,记录名称始终取服务端场景定义。历史任务读取不受影响,未修改生产数据。
  • 2026-07-14 BRD M1 场景筛选回退语义复核:场景表查询成功但岗位/类型没有启用场景时,旧逻辑仍回退到内置场景,可能把不匹配或已停用场景展示给员工/主管;现仅在数据库异常时保留 seed fallback,真实空结果保持为空,并补岗位筛选回归测试。未修改生产数据。
  • 2026-07-14 BRD M1 主管场景入口回退复核:后端已启用场景 API 优先,但主管指派页模板仍循环三条静态场景,且 API 正常空结果会继续显示静态选项;现改为循环 API 场景,真实空结果显示“暂无可派发的已启用场景”,只有请求失败才使用本地兜底。复盘后再练入口同步保持真实空结果为空,未修改生产数据。
  • 2026-07-14 BRD 4.4 任务来源展示补齐:首页“今日安排”和练习页“最近练过”此前只把非每日任务显示为场景名/“专项训练”,会遮蔽主管派发的错题再练与训练营来源;现统一显示“每日三题/错题再练/训练营/专项训练”标签。该修复只补来源可见性,不把 source='camp' 扩展为尚未确认的训练营计划、进度或完成规则。
  • 2026-07-14 BRD 4.5/B5 训练时长口径修复:能力画像此前用“完成次数 × 8 分钟”估算训练时长,无法作为真实时长证据;现复用 started_time/finished_time 按实际秒数聚合并换算分钟,无时间证据的历史记录按 0 计。未新增表字段;正式试点仍需核对时间来源、异常时长和课程学习时长是否纳入统一口径。
  • 2026-07-14 BRD 4.5/B5 人工贡献分默认值修复:管理端主管复盘表单此前默认填入 10 分,单纯点击“标记已复盘”可能产生未经主管确认的贡献分;现改为可选空值,只有明确填写的 0–100 分才提交并计入画像,页面文案同步为“人工贡献分”。后端既有空值保留逻辑不变,未新增积分来源;正式激励规则仍需 HR 确认。
  • 2026-07-14 BRD G3/4.5 人工评审身份留痕修复:对练校准和主管复盘接口此前接受客户端传入的 reviewer,可能把人工证据归到伪造的操作人;现由控制器从当前登录用户绑定校准人/复盘人,请求字段仅保留兼容,不再作为身份来源。补源码契约回归和 demo-check marker;正式试点仍需抽查校准记录、复盘建议与实际主管/HR 账号的对应关系。
  • 2026-07-14 BRD 4.5/G1 复盘证据状态边界修复:人工校准此前只按 session_id 查询,主管复盘更新也未显式要求完成时间,理论上可对未完成训练或非移动对练记录写入复核证据;现统一要求 mode='mobile' 且 finished_time IS NOT NULL,历史已完成记录不受影响。补服务回归断言和 demo-check marker,未修改业务数据。
  • 2026-07-14 BRD M5 人工校准样本完整性修复:校准接口此前在 correctedTotal 为空时自动复制 AI 原分数,空提交也会增加“人工校准样本”并可能虚高一致率;现要求明确提交人工总分,空值直接拒绝,前端请求类型同步改为必填。新增服务回归测试和 demo-check marker,不改变已有校准记录。
  • 2026-07-14 BRD G2 面试复核证据状态边界修复:AI 面试复核此前只按租户和 session_id 更新,未显式要求结果已完成且存在 AI 总分;现要求 finished_time IS NOT NULL 且 total_score IS NOT NULL,避免对未完成或不完整结果写入人工复核证据。新增服务回归断言和 demo-check marker,未修改业务数据。
  • 2026-07-14 BRD G2 面试复核版本一致性修复:同一面试会话重复 finish 时,AI 结果 upsert 此前会更新 AI 分数但保留旧人工复核分,可能把旧人工结论挂到新结果;现重复完成会清空人工复核分、复核人、意见和时间并恢复“待复核”,要求对新结果重新人工确认。新增服务回归断言和 demo-check marker,未修改业务数据。
  • 2026-07-14 BRD 4.1 面试作答完整性修复:面试 finish 此前允许没有任何对应题目有效回答仍生成本地 55 分结果并进入人工复核;现要求至少提交一条有效面试回答,空面试不落结果表。新增服务回归测试和 demo-check marker,未修改业务数据。
  • 2026-07-14 BRD 4.1 面试完成门禁收紧:前端要求完成全部面试题,但后端此前只要求至少一题有效回答,部分回答仍可生成面试结果;现 finish 要求所有服务端题目均有非空回答,空/部分回答均不落结果表。新增部分作答回归测试和 demo-check marker,未修改业务数据。
  • 2026-07-14 BRD 发布状态只读复核:生产根站、/h5/、租户列表和员工首页 API 均返回 200,但线上仍加载管理端 assets/index-CJZ3Ax3Z.js 与 H5 assets/index-D4-NrEpb.js;当前分支 c4f98b9a 的面试完成门禁修复尚未发布。本轮未执行生产静态同步、后端重启或业务数据写入。
  • 2026-07-14 BRD 4.1 面试证据输入边界修复:answer/finish 此前接受不存在于服务端题目列表的 questionId,可能把伪造字段写入回答快照;现统一拒绝未知题目 ID,评分和持久化只接受本次服务端生成的题目集合。新增 answer/finish 回归测试和 demo-check marker,未修改业务数据。
  • 2026-07-14 BRD 生产迁移资产补齐:aihr_practice_audio、aihr_practice_calibration 此前只有 reset SQL 和运行时懒建表,生产曾依赖人工建表;现新增可重复执行的 MySQL 8 版本化迁移脚本,仅补齐结构、不写入业务数据。仍需由运维在正式发布窗口执行并核对生产 schema,不能把脚本存在视为迁移已执行。
  • 2026-07-14 最新线上只读复核:生产根站、/h5/ 和 /prod-api/auth/tenant/list 均返回 200;线上仍加载管理端 assets/index-CJZ3Ax3Z.js(SHA-256 8b9278a26ccb760abce489b12a20b221748c64d4c4153613d2511777bb9677bc)与 H5 assets/index-D4-NrEpb.js(SHA-256 ab15bfd17cabe58e2f34b0ac61ee198a837128ed85dc6bb0ddf77bc3e22dcd9c),本地最新提交 e0da5f0a 尚未发布;本轮未执行生产同步、后端重启或业务数据写入。
  • 2026-07-14 BRD 4.4 入职日期数据链路补齐:组织快照初始化 DDL、外部组织同步和旧库懒迁移现在统一保存 hire_date,每日三题在存在该字段但记录缺日期时仍只允许本地 dev/local 的显式训练次数兼容回退,生产不会用训练次数推断新员工;新增 MySQL 8 版本迁移与严格预检字段/身份门禁。未写入试点业务数据,正式环境仍需外部组织同步实际提供入职日期并执行迁移。
  • 2026-07-14 BRD 4.5.1 五维评分规则数据对齐:对练 /finish、复盘、校准和画像代码已补齐任务完成度、话术规范性、情绪管理能力、响应时效、增值转化潜力五项;本轮同步 reset SQL、运行时 seed fallback 和现有生活顾问 Rubric 迁移为 40%/25%/20%/10%/5%,严格预检新增五维 Rubric 数量与权重和检查。任务完成度当前以 SOP 执行/问题推进代理,响应时效当前以陪练回合响应耗时代理;工单闭环率、首解率、正式首响/处理周期仍待业务系统与 HR 确认,未把代理指标宣称为正式绩效口径。迁移只改评分规则结构,不写训练、校准或 SOP 业务样本。
  • 2026-07-14 BRD 4.5.1 回退路径一致性修复:数据库异常或演示回退时,后端 seed 和管理端本地场景此前仍可能返回旧四维/错题卡;现统一返回 BRD 五维,缺少真实回合耗时的响应时效明确为“待采集”,不使用旧错题字段冒充评估维度。新增运行时回归测试与 demo-check marker,未修改业务数据。
  • 2026-07-14 BRD G3 控制器匿名入口复核:AIHR 控制器当前仅保留移动首页和岗位-SOP 导航两个 @SaIgnore 公开只读方法;训练、SOP 搜索/反馈、案例、候选人资料、音频、复盘、模型和组织同步入口均有登录或 HR/管理员角色门禁。本轮未发现适合继续收紧的代码缺口;线上根站与 /h5/ 只读返回 200,不代表当前本地修复已发布。
  • 2026-07-14 BRD 发布预检业务码修复:release-preflight.sh 此前只检查线上 HTTP 状态,HTTP 200 但业务 JSON 返回 code=401/405 仍可能被记录为通过;现对远端租户接口同时校验业务 code=200,并同步发布说明。线上根站和 /h5/ 仍只读返回 200,本轮未发布或写入生产。
  • 2026-07-14 发布预检业务码误匹配修复:业务码校验进一步收紧为 JSON 顶层首字段 code=200,不再接受嵌套对象中的同名 code=200;本地成功/嵌套失败样例与线上租户接口均验证通过。三端产物已重建且时间不早于当前提交,完整预检仍因两份用户未提交的 Figma 文档停止,本轮未发布生产。
  • 2026-07-14 BRD 最新线上只读复核:生产根站与 /h5/ 返回 200,线上仍加载管理端 assets/index-CJZ3Ax3Z.js 与 H5 assets/index-D4-NrEpb.js;当前本地提交 94d483d3 构建资源分别为 assets/index-Cv2wI9UI.js(SHA-256 cd6e3eab4a684141ccd64617dcde4d99030c9c13f7da618c11e1709c04f244a0)和 assets/index-Dq7sfWZP.js(SHA-256 f8499e5f261cc06d02de275e285e4a7c946dd6ef54fd29b3a1c0bc7a9a689c3d)。本轮只读核验,未执行生产静态资源同步、后端重启或业务数据写入;五维修复仍未被证明在线上生效。
  • 2026-07-14 BRD 4.7/M5 SOP 试点评审主体留痕修复:SOP 搜索生成评审记录时,现仅从已认证 APP 用户上下文保存 requester_ext_party_id,不接受客户端传入主体;管理端/系统搜索保持空值。正式 SOP 评审统计和严格门禁只统计已评审、有提问员工主体且能命中当前租户在职组织快照的记录,避免管理员烟测、临时 APP 账号或无组织身份数据混入正式可用率;同步补 reset SQL、幂等迁移脚本、运行时补列和回归门禁。该修复只完善证据归属,仍需真实员工提问和人工评审样本,不能把有主体字段等同于 M5 已达标。
  • 2026-07-14 BRD 4.4 每日三题评分模式补齐:每日题提交现优先调用现有 chat 模型做 temperature=0 的结构化语义评估;模型未配置、成本闸门关闭或 JSON 解析失败时继续使用原关键词/长度规则,并在 aihr_practice_assignment.score_mode 留痕为 LLM 或 RULE_FALLBACK。员工端完成反馈同步显示评分模式,避免把规则分数误称为 AI 评测;新增幂等迁移、AIHR 单测和 demo marker。正式试点仍需确认模型供应商、成本预算和人工抽检,不把 LLM 路径可调用等同于 BRD 4.4 的质量达标。
  • 2026-07-14 BRD M1 场景启停展示一致性修复:停用场景此前虽会在开始训练和主管派发时被拒绝,但预习卡接口仍可能先返回停用场景内容,形成“可见但无法开始”的误导;现复用同一 ensureScenarioEnabledForStart 校验后再加载预习卡,历史训练/复盘读取不受影响。新增源码契约断言与 demo-check marker,未修改业务数据。
  • 2026-07-14 最新线上只读复核:生产根站、/h5/ 和 /prod-api/auth/tenant/list 均返回 200;线上管理端仍加载 assets/index-CJZ3Ax3Z.js(SHA-256 8b9278a26ccb760abce489b12a20b221748c64d4c4153613d2511777bb9677bc),H5 仍加载 assets/index-D4-NrEpb.js(SHA-256 ab15bfd17cabe58e2f34b0ac61ee198a837128ed85dc6bb0ddf77bc3e22dcd9c)。当前本地 HEAD=8b176e9a 的管理端/H5 构建分别为 assets/index-B9T505HT.js(SHA-256 66a827a7b3e5d794ae9da54c6e2276080995614fa52f54d49f746087663f8c94)和 assets/index-C1WoTt0t.js(SHA-256 bfb07609acecde3678ed18bf48ce022f36596c6b946e076436fe242cf3e15675),且构建时间早于当前 HEAD;本轮只读核验,未执行生产静态资源同步、后端重启或业务数据写入,发布预检应继续阻断。
  • 2026-07-14 BRD 发布批次复核:当前 HEAD=1efde563 已重新构建管理端 assets/index-B9T505HT.js(SHA-256 66a827a7b3e5d794ae9da54c6e2276080995614fa52f54d49f746087663f8c94)、mobile-uni H5 assets/index-C1WoTt0t.js(SHA-256 bfb07609acecde3678ed18bf48ce022f36596c6b946e076436fe242cf3e15675)和后端 ruoyi-admin.jar,产物时间均晚于当前提交;线上根站、/h5/、租户接口只读返回 200,线上资源仍未对齐本地。release-preflight.sh 因 docs/FIGMA_DESIGN_INVENTORY.md 与 docs/FIGMA_DESIGN_SYSTEM_GUIDE.md 两份用户未提交文档阻断,未执行生产静态同步、后端重启或业务数据写入;待用户完成 Figma 文档提交边界确认后再进入发布窗口。
  • 2026-07-14 BRD 验收脚本可执行性修复:scripts/tests/demo-check-pilot-gates.test.sh 原文件权限为 100644,按其 shebang 直接执行会 permission denied;现改为 100755。直接执行通过(含临时测试库行为校验),scripts/tests/pilot-export-contract.test.mjs 通过 5/5;未修改业务数据。
  • 2026-07-14 BRD 用户端回归复核:mobile-uni 类型检查通过,用户端单测 53/53 通过;源码中的“工作上报·建设中”属于 BRD 阶段二/三信息直达或北森/报事集成边界,候选人“等待后续通知”属于完成态提示,不新增一期空壳功能。测试进程曾输出既有 Vite WebSocket 端口占用警告,但测试退出码为 0,需在独立 CI/无并行开发服务环境再确认,不作为业务失败。
  • 2026-07-14 BRD 4.4 生产迁移顺序修复:每日三题评分模式迁移原先直接在 score 后添加 score_mode,旧生产表若缺少后来新增的 score 字段会迁移失败;现同一幂等脚本先补 score、再补 score_mode,并加入 demo-check marker。临时旧表连续执行两次迁移后得到 score,score_mode,未修改业务数据。
  • 2026-07-14 BRD 4.4/4.7 旧 schema 迁移兼容性修复:SOP 提问主体迁移原先默认旧表已有 source 列,且严格门禁要求的 prompt_version 只有运行时懒建没有版本化生产迁移;入职日期迁移原先默认 aihr_org_snapshot 表已存在。现 SOP 脚本按表/列存在性依次补 source、prompt_version、requester_ext_party_id,组织脚本在表不存在或缺少 employment_status 时安全跳过定位依赖。两份迁移均保持幂等,不写入业务数据;新增 demo-check marker,后续用临时旧 schema 做连续执行验证。
  • 2026-07-14 BRD 门禁夹具同步:严格预检已将 SOP 正式样本限定为带 requester_ext_party_id 且能命中在职组织身份的提问记录;原 demo-check-pilot-gates 临时表仍是旧 6 列,导致 SOP 指标为空并无法真实覆盖新口径。现补齐主体与 prompt_version 字段,使用安全员工主体 E 验证 sop_usable=1/1、待评审数和窗口过滤,未改变业务数据。
  • 2026-07-14 BRD 生产迁移回归固化:新增 scripts/tests/aihr-schema-migrations.test.sh,在临时 MySQL 库验证 SOP 主体/版本字段和组织入职日期迁移面对旧表、缺前置表时可安全执行且重复执行幂等;不写入开发库业务数据。
  • 2026-07-14 BRD 生产迁移回归扩展:同一临时 MySQL 回归测试同时连续执行 aihr_20260714_practice_evidence_mysql8.sql,确认 aihr_practice_audio 与 aihr_practice_calibration 两张证据表可重复创建;不写入开发库业务数据。
  • 2026-07-14 BRD 当前开发库审查快照:生活顾问启用场景 12、校准记录 20、已评审 SOP 2,但住宅 SOP 文档仅 3/5、已入库案例 2/20,在职组织快照 3001 条中手机号可映射仅 1 条;这些数据不能作为正式试点通过,下一步优先补内容负责人确认的核心流程素材和正式组织身份映射,不用烟测记录替代。
  • 2026-07-14 BRD 5.4 训练隐私边界补强:组织快照存在且默认关闭显示字段时,员工历史、主管复盘详情、任务列表和正式试点 CSV 明细不再直接返回历史 trainee_name,统一回退为“员工”;新产生的训练、每日题和错题再练记录也不再默认写入姓名,只有显式开启 aihr.org-sync.store-display-fields 才展示/保留名称。新增服务回归断言与 demo-check marker,保留稳定 formal_ext_party_id、项目和训练证据字段;该修复不替代历史显示字段清理、保留期和法务确认。
  • 2026-07-14 BRD G3 组织快照缺失 fail-closed:主管团队接口此前在 aihr_org_snapshot 不存在时回退读取训练/派发表,生产迁移遗漏可能把历史姓名和非正式范围暴露给后台主管视图;现仅 dev/local profile 允许演示回退,其他 profile 在组织快照不可用时返回空团队并停止继续查询活动数据。新增“非 Demo 无快照直接为空”回归测试与 demo-check marker,不改变本地演示路径。
  • 2026-07-14 BRD 5.4 隐私开关一致性修复:部分兼容查询此前只有在检测到组织快照表时才隐藏姓名,组织表暂缺时可能绕过 store-display-fields=false;现员工历史、任务/主管记录、复盘详情及无快照演示成员读取均统一由显示开关控制,默认关闭即返回“员工”。dev 配置仍显式开启用于演示,生产默认关闭;AIHR 全量真测试通过,未修改业务数据。
  • 2026-07-14 BRD 严格门禁绕过修复:AIHR_DEMO_CHECK_LIBRARY_ONLY=true 仅允许测试加载脚本函数,和 AIHR_PILOT_STRICT=true 同时使用时现在直接失败,避免调试开关把正式试点检查静默跳过;新增回归断言,未修改业务数据。
  • 2026-07-14 线上浏览器身份复核:使用数据库已有手机号 13900001111 和当前 dev 验证码规则登录 https://peilian.njzhmj.top/h5/ 成功,但随后进入“确认岗位”页并提示“未从组织数据匹配到岗位”,说明线上手机号登录链路可用而正式组织岗位映射仍未闭合;本轮未点击岗位确认,不写入线上岗位数据。
  • 2026-07-14 BRD 本轮线上只读复核:生产根站、/h5/、/prod-api/auth/tenant/list 和 /prod-api/api/aihr/mobile/home/user 均返回 200;线上仍加载管理端 assets/index-CJZ3Ax3Z.js 与 H5 assets/index-D4-NrEpb.js。当前本地 HEAD=8d5cb3d6 的隐私/组织快照修复尚未重新构建或发布,本轮未执行生产静态同步、后端重启或业务数据写入;线上手机号登录仍会进入“确认岗位”但无法匹配正式组织岗位,P0 组织同步缺口保持未完成。
  • 2026-07-14 BRD 5.4 组织快照响应字段复核:OrgPersonRow 不包含 person_phone,手机号只用于服务端身份映射、过滤和统计;/api/aihr/org/snapshot 仍要求 superadmin/hr_operator,store-display-fields=false 时姓名和部门返回空值。当前未发现新的手机号响应泄露,因此不新增重复脱敏代码;正式组织同步、手机号覆盖率和历史字段治理仍保持 P0 未完成。
  • 2026-07-14 BRD 发布预检复核:在隔离干净工作树按当前 HEAD=8f2ace4a 重新构建管理端、mobile-uni H5 和后端 jar,release-preflight.sh 的产物新鲜度、根站和租户业务码检查通过;本地管理端主资源 index-CX4fynEb.js(SHA-256 c800022a22e82e81782da590cfec81145852014a6521f7521775720e0f1087fe)与 H5 index-C1WoTt0t.js(SHA-256 bfb07609acecde3678ed18bf48ce022f36596c6b946e076436fe242cf3e15675)均与线上 index-CJZ3Ax3Z.js / index-D4-NrEpb.js 不一致,预检按预期停止;本轮未执行生产静态同步、后端重启或业务数据写入。
  • 2026-07-14 BRD G3 OSS 元数据租户隔离修复:SOP 文档去重、处理概览和文件解析元数据此前通过 JdbcTemplate 仅按 sys_oss.oss_id 读取/更新,未显式约束 sys_oss.tenant_id;现统一要求 sys_oss.tenant_id = aihr_knowledge_attach.tenant_id 或当前租户,避免跨租户 OSS 元数据被误读/覆盖。新增 AihrSopSeedServiceTest 契约断言与 demo-check marker;未修改业务数据或生产环境。
  • 2026-07-14 BRD G3 Qdrant 共享 collection 隔离修复:重建单租户向量索引此前会删除整个共享 Qdrant collection,并用全局点数与当前租户 MySQL 数量比较;现改为按当前租户 payload filter 删除和统计点数,保留其他租户向量。新增回归契约与 demo-check marker;未修改业务数据或生产环境。
  • 2026-07-14 BRD G3 AI 面试内存会话租户隔离修复:候选人面试进行中的内存会话此前只按 sessionId 全局缓存,系统用户在已知会话 ID 时可能把其他租户会话带入当前租户完成并落库,候选人存在性判断也可能跨租户命中;现为内存会话保存创建租户,在回答、完成和候选人存在性判断时校验当前租户,并补源码回归断言与 demo-check marker;未修改业务数据或生产环境。
  • 2026-07-14 BRD G3 录音资源租户归属显式校验:系统用户读取训练录音此前仅检查 superadmin/hr_operator 角色,随后依赖通用 OSS 服务的隐式租户过滤;现额外要求 aihr_practice_audio 在当前租户存在对应 oss_id,再进入通用下载服务,避免跨租户对象 ID 被误读。新增服务路径、控制器回归断言与 demo-check marker;未修改业务数据或生产环境。
  • 2026-07-14 BRD 4.6 案例数量与媒体资产门禁:当前 aihr_case_record 只有 2 条“已入库”案例,严格预检要求至少 20 条;知识库中的案例类 PPT/文档附件不等同于已完成转写、整理、脱敏和人工入库的案例,暂不自动改写为“已入库”以避免伪造正式资产。案例页现有真实音频上传→ASR→整理→人工入库链路可继续采集,预渲染视频样片、学习点和主管点评仍需业务媒体字段/素材。
  • 2026-07-14 BRD 发布状态复核:本地 HEAD=0a30fe70 新增场景与住宅 SOP 的 reset/版本化迁移已在开发库验证,但尚未发布或在生产执行;线上 wygj-aihr.service 仍为 active,根站与 /h5/ 返回 200,线上资源/后端仍对应上一发布批次。发布继续受两份用户未提交 Figma 文档和生产迁移执行窗口约束,未执行生产写入。
  • 2026-07-14 BRD 4.3.4 场景覆盖补齐:原生活顾问 12 条 seed 只有投诉、催费、报修、突发求助,缺少 BRD 明确要求的服务推介/增值与日常服务;现新增 service-promotion-needs、daily-service-followup 两条补充场景及五维 Rubric,保留原 12 条核心场景不变。提供幂等迁移 aihr_20260714_practice_brd_scenarios_mysql8.sql 和临时库回归脚本;该内容属于待业务复核的初始化素材,不等同于正式试点样本。
  • 2026-07-14 BRD 4.3.4 场景 schema 发布补齐:只读核验发现生产缺少 aihr_practice_scenario、aihr_practice_rubric、aihr_practice_rubric_dimension 三张表;现新增只建结构的 aihr_20260714_practice_catalog_schema_mysql8.sql,并让补充场景迁移显式依赖该基础迁移。未写入生产数据,正式发布仍需按顺序执行基础 schema、场景 seed 与 SOP seed 迁移。
  • 2026-07-14 BRD 4.7 住宅 SOP 内容补齐:原知识库只有 3 份已解析住宅 SOP;现新增增值服务需求识别、日常服务回访两份 SOP 及各 3 个检索片段,reset SQL 与版本化迁移同步,临时库连续执行两次保持幂等。严格门禁已从 sop_docs=3/5 推进到 5/5;案例库、正式组织身份和正式试点证据仍未完成。