Commit Graph
222 Commits
Author SHA1 Message Date
adminandClaude Fable 5 13ec3bf20c fix(case): align project scope query with 2026-07-16 org snapshot contract
客户反馈核验中发现:案例素材上传对所有 APP 用户报
「当前账号没有可用项目身份」——projectScopesForAppUser 查询快照表
已不存在的 project_ext_org_id 列(07-16 组织新契约更名为 project_code),
DataAccessException 被兜底吞掉后 scope 恒为空。全代码库仅此一处引用
旧列名(aihr_case_record 自身列不受影响,读写走同一解析器语义一致)。

修复后生产全链路跑通:主管上传语音(TTS合成测试音频)→ ASR 转写
→ organize 结构化(背景/处理/结果)→ curate 入库 → 员工 records 可见。
后端已发布(备份 ruoyi-admin.jar.bak-20260718095809,重启25s恢复)。

同轮生产验证(有奖征题闭环,零代码改动):员工发问→运营审核→
后台发悬赏征题(rewardPoints=50+deadline)→员工回答→审核→采纳最佳
→积分0→50到账(明细正确)、重复采纳不重复发奖、员工调管理接口403、
员工端问题榜/积分页 UI 呈现全部正确。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-18 10:01:53 +08:00
adminandClaude Fable 5 a4bbfc2222 fix: stop snowflake ossId precision loss and daily-drill audio identity mismatch
线上现象:对练页录音转写后提交回应,报「录音不属于当前账号,请重新录音后提交」。

根因A(前端,截图直接原因):OSS 编号是雪花 ID(如 2078204068457525249),
超出 JS Number 安全整数范围,后端按 RuoYi 规范序列化为字符串,但前端 4 处
用 Number() 强转(对练 ASR、每日题 ASR、每日题恢复列表、候选人面试 ASR),
精度丢失成 …5200,后端按错误 oss_id 查归属 COUNT=0 → 误报。
生产铁证:同一暂存行,正确 id 查得 1 行,JS 强转后的 id 查得 0 行;
用损坏 id 提交 turn 复现原报错,用字符串正确 id 提交成功。

修复A:speech.ts 新增 normalizeOssId(纯字符串校验透传,禁止 Number 强转),
4 处调用点改为字符串保存,practice/candidate 服务签名与状态类型放宽为
number|string(types/api.ts 本就是 number|string,Jackson 字符串转 Long 无损)。

根因B(后端,潜伏):answerDailyDrill 用组织 extPartyId(如 1003)做录音
归属身份校验,而暂存写入的是登录手机号——每日题语音提交必失败。
修复B:新增 validateAudioOwnershipByUser,按服务端登录 owner_user_id
(与暂存同源、不可伪造)校验,对练路径(身份一致)保持原校验不变。

发布与验证:
- H5 已发布(备份 /opt/wygj/backups/h5-before-20260718035416)
- 后端 jar 已发布重启(备份 /opt/wygj/app/ruoyi-admin.jar.bak-20260718035552),
  15s 恢复,重启后对练 turn+字符串 ossId 生产复核通过
- 每日题语音路径为逻辑级+数据级验证(该账号今日无待训练每日题,
  业务级复验待下一次每日题窗口)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-18 03:57:47 +08:00
admin 6bdc86e3fc feat: restore learning feedback and knowledge capabilities 2026-07-18 00:50:11 +08:00
admin 876a23a123 feat(knowledge): add application and principal space grants 2026-07-16 10:26:28 +08:00
admin 735e9a78c1 feat(knowledge): add multi-space platform schema 2026-07-16 10:21:35 +08:00
admin 82d93a1af1 feat(aihr): allow employees to complete onboarding tasks 2026-07-15 02:49:40 +08:00
admin 2f21895597 feat(aihr): add candidate voice interview answers 2026-07-15 02:45:00 +08:00
admin 40574c204d fix(aihr): separate onboarding and candidate review states 2026-07-15 02:39:29 +08:00
admin e7611f701d test(aihr): verify project scoped sop query 2026-07-15 02:21:20 +08:00
admin ab54b04f76 fix(aihr): scope formal sop topics by app projects 2026-07-15 02:17:04 +08:00
admin 747112910c feat(aihr): read formal position SOP mappings 2026-07-15 02:08:51 +08:00
admin 03a691c770 fix(aihr): sanitize mobile review responses 2026-07-15 01:45:57 +08:00
admin 2f44e6b7d1 fix(aihr): close practice audio URL exposure 2026-07-15 01:32:02 +08:00
admin 09c3cbecb0 fix(aihr): protect case media playback 2026-07-15 01:23:41 +08:00
admin 217edb09d2 fix(aihr): reject unknown interview sessions 2026-07-15 01:12:36 +08:00
admin cb429908e0 fix(aihr): restrict candidate interview flow roles 2026-07-15 01:11:08 +08:00
admin 7272fce56f fix(aihr): require login for position sop navigation 2026-07-15 01:03:42 +08:00
admin 34effb2319 fix(aihr): suppress rejected sop answers 2026-07-15 00:43:26 +08:00
admin 0bfaee7d22 feat(aihr): complete case learning review loop 2026-07-14 23:41:59 +08:00
admin ab10e56523 fix(aihr): expire unbound practice audio 2026-07-14 22:00:12 +08:00
admin d9b609b1cc fix(aihr): enforce practice audio ownership 2026-07-14 21:54:27 +08:00
admin 04b9b1bb96 fix(aihr): clean up orphaned knowledge uploads 2026-07-14 21:43:27 +08:00
admin 30a473b365 fix(aihr): clean up orphaned upload objects 2026-07-14 21:41:22 +08:00
admin dd5c0dadff fix(aihr): sanitize multipart filenames before storage 2026-07-14 21:34:45 +08:00
admin d2b0035e3a fix(aihr): harden tenant resource boundaries 2026-07-14 21:27:47 +08:00
admin bf4c069dd7 fix(aihr): preserve dynamic tenant context 2026-07-14 21:15:37 +08:00
admin 0de9704e65 fix(aihr): reject empty org sync requests 2026-07-14 21:05:00 +08:00
admin 77c576bf5c fix(aihr): require explicit org sync dry run 2026-07-14 20:57:50 +08:00
admin 0c06f23522 fix(aihr): tighten org privacy and pilot evidence boundary 2026-07-14 17:32:21 +08:00
admin 81060fba08 fix(aihr): gate vision processing with ai runtime 2026-07-14 16:45:53 +08:00
admin ad21e24ed3 fix(aihr): keep asr text when audio storage fails 2026-07-14 16:41:45 +08:00
admin 26f5160802 fix(aihr): avoid duplicate inline tts audio 2026-07-14 16:40:41 +08:00
admin c02cdb7b69 fix(identity): search org snapshots by phone 2026-07-14 16:37:15 +08:00
admin 8b176e9ac8 fix(aihr): align disabled scenario prep cards 2026-07-14 15:56:13 +08:00
admin 4d4d911bad fix(aihr): add semantic daily drill scoring fallback 2026-07-14 15:53:04 +08:00
admin 14d91f86a9 fix(aihr): bind SOP reviews to pilot identity 2026-07-14 15:43:23 +08:00
admin c76c500dc7 fix(aihr): align fallback scoring with BRD dimensions 2026-07-14 15:19:07 +08:00
admin 94d483d334 fix(aihr): align practice scoring with BRD five dimensions 2026-07-14 15:12:47 +08:00
admin 3f39be7fee fix(aihr): persist org hire dates 2026-07-14 14:48:48 +08:00
admin a47a3edfd2 fix(aihr): reject unknown interview questions 2026-07-14 14:37:58 +08:00
admin 269d3dc68c fix(aihr): require complete interview answers 2026-07-14 14:35:18 +08:00
admin c4f98b9ab6 fix(aihr): require interview answers before scoring 2026-07-14 14:31:54 +08:00
admin 82197cb50e fix(aihr): reset review on repeated interviews 2026-07-14 14:28:38 +08:00
admin a300f0c389 fix(aihr): require completed interview reviews 2026-07-14 14:27:20 +08:00
admin d08f4a82e3 fix(aihr): require explicit calibration scores 2026-07-14 14:25:36 +08:00
admin 2283d13176 fix(aihr): require completed practice evidence 2026-07-14 14:22:23 +08:00
admin 77ef3c90f6 fix(aihr): bind review evidence to operator 2026-07-14 14:21:29 +08:00
admin 8bb43a2394 fix(aihr): align task labels and training duration 2026-07-14 14:15:02 +08:00
admin c7ebe6d31c fix(aihr): preserve empty scenario filters 2026-07-14 14:03:17 +08:00
admin 7f3eadae41 fix(aihr): protect disabled assignment scenarios 2026-07-14 14:02:00 +08:00