 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 |
|
 adminandClaude Fable 5
|
680b4cf83c
|
fix: align aihr_practice_assignment.ext_party_id collation to utf8mb4_general_ci
根因:生产库 aihr_practice_assignment.ext_party_id 继承表级默认 utf8mb4_0900_ai_ci,
与 aihr_practice_question_feedback.ext_party_id (utf8mb4_general_ci) 冲突,
导致 AihrPracticeSeedService.assignments() 子查询抛 ERROR 1267,
/me 接口异常,员工端误报'人力系统未匹配'。
修复:
- ALTER TABLE 对齐 ext_party_id 列排序规则为 utf8mb4_general_ci
- 已在生产热修复并验证,查询恢复正常
- 本地 docker 容器复现+修复验证通过
- 前端无需改动,H5 重新构建确认流程无误
影响范围:
- 仅 aihr_practice_assignment 表单列 MODIFY
- 保留所有数据与索引,无业务中断
- 回滚材料在 /opt/wygj/backups/release-20260718005151
遗留:
- position 页异常场景退出入口待下轮补充(P1)
- schema 规范:后续 DDL 显式声明 COLLATE,不依赖表级默认
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-07-18 02:27:11 +08:00 |
|
admin
|
32fa376d63
|
fix: align release table collations
|
2026-07-18 01:04:17 +08:00 |
|
admin
|
6bdc86e3fc
|
feat: restore learning feedback and knowledge capabilities
|
2026-07-18 00:50:11 +08:00 |
|
admin
|
e93421ca1e
|
fix(aihr): close Figma UI regression gaps
|
2026-07-17 04:17:14 +08:00 |
|
admin
|
1fe91cc0f3
|
fix(aihr): adapt updated organization snapshot
|
2026-07-16 14:27:00 +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
|
c866ef2701
|
feat(aihr): support signed position mappings
|
2026-07-15 16:32:06 +08:00 |
|
admin
|
a42f42091c
|
fix(aihr): harden knowledge processing failures
|
2026-07-15 15:58:07 +08:00 |
|
admin
|
ab406e616a
|
fix(release): enforce AIHR tenant collation contract
|
2026-07-15 13:33:56 +08:00 |
|
admin
|
bd19cdd255
|
fix(aihr): harden zip upload queue
|
2026-07-15 13:06:47 +08:00 |
|
admin
|
eacf1a0aea
|
feat(mobile): align employee practice screens for release
|
2026-07-15 11:23:08 +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
|
d44e9440ce
|
feat(aihr): add position qualification schema contract
|
2026-07-15 02:04:05 +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
|
1ca5d1eca4
|
fix(aihr): version candidate interview review migration
|
2026-07-15 00:59:08 +08:00 |
|
admin
|
ef21d4d61b
|
fix(aihr): version practice session evidence migration
|
2026-07-15 00:53:52 +08:00 |
|
admin
|
d9fec80e6c
|
fix(aihr): version knowledge feedback migrations
|
2026-07-15 00:51: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
|
804bc62de7
|
fix(aihr): seed production prompt templates
|
2026-07-14 23:22:34 +08:00 |
|
admin
|
82aec83cb5
|
fix(aihr): add practice catalog schema migration
|
2026-07-14 23:16:51 +08:00 |
|
admin
|
94f48f4c1b
|
fix(aihr): version case media schema gate
|
2026-07-14 23:12:22 +08:00 |
|
admin
|
0a30fe7034
|
feat(aihr): align BRD scenarios and SOP seed content
|
2026-07-14 23:04:23 +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
|
52b8a812d7
|
fix(dev): align local service ports
|
2026-07-14 16:34:41 +08:00 |
|