admin and Claude Opus 5
3055d2bec9
fix(mobile): replace App-Plus unsupported date and query APIs
...
`URLSearchParams` is absent from the App-Plus JS core, and
`toLocaleDateString('sv-SE', { timeZone: 'Asia/Shanghai' })` depends on full
ICU data that the App runtime does not ship, so the work-result pages built
either a broken query string or the device-local date.
Build query strings with `encodeURIComponent`, and centralise the business day
in `currentShanghaiDate()`, which shifts the epoch by a fixed UTC+8 offset
before slicing the ISO date. Asia/Shanghai has no DST, so the fixed offset is
exact rather than an approximation.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com >
2026-07-25 23:57:06 +08:00
admin and Claude Opus 5
27f4cdac70
fix(mobile): abort uni.request when the platform timeout does not fire
...
Some uni-app platforms ignore the `timeout` option, leaving the returned
promise pending forever and hanging the calling page with no error path.
Drive the deadline locally: keep a single-shot `finish` guard so success,
failure and timeout can only settle once, and on timeout call `task.abort()`
before rejecting so the in-flight request is released instead of leaking.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com >
2026-07-25 23:56:56 +08:00
admin and Claude Opus 5
a3a5cf944e
build(mobile): declare App platform compiler to stop build:app false green
...
`@dcloudio/uni-app-plus` was never declared, so `uni build -p app` silently
fell back to an H5 shell: exit code 0, `DONE Build complete.`, but the output
was only `index.html` (still carrying the `/h5/assets/...` base path) with no
`app-service.js`, `app-renderjs.js` or `manifest.json`. Because
`docs/MOBILE_APP_PACKAGING.md` lists that command as a local verification
step, App platform code was reported as built without ever reaching the App
compiler.
Declare the compiler at the same version as the other `@dcloudio` packages,
guard the version alignment in `tests/app-packaging.test.mjs`, and document
that success is judged by the emitted artifacts, not by the DONE line.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com >
2026-07-25 23:56:47 +08:00
admin
ab3af277c1
fix(speech): convert base64 TTS data URI before playback per platform
...
后端 TTS 以 data: URI 返回 base64 mp3(生产实证为合法 LAME mp3),但
App-Plus 的 InnerAudioContext 不支持 data: URI,iOS Safari/微信 webview
也常静默失败,统一报"语音播放失败"。播放前按平台转换:H5 转 Blob URL,
App 端经 plus.io 落 _doc/ 临时文件后播放 file:// 路径,播完清理;Blob 不可
用时退回原始 data: URI。竞态守卫与缓存语义保持不变,158 单测全绿。
2026-07-25 20:37:30 +08:00
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
admin
acd5fd3a6d
fix(practice): generate replies from coach hints
2026-07-25 15:44:45 +08:00
admin
230dfb4dfc
feat(broadcast): finish multi-role insight experience
2026-07-25 15:18:58 +08:00
admin
2b3c37677d
fix(mobile): prioritize practice actions above guidance
2026-07-25 13:17:32 +08:00
admin
fa9d6da975
feat(practice): streamline pilot content operations
2026-07-25 12:51:39 +08:00
admin
35b37b07f7
feat(practice): server-owned realtime personas with knowledge tool calling
...
- AihrRealtimePersonaRegistry whitelist: owner-calm (default), owner-impatient,
digital-mentor (search_knowledge); persona binds default voice
- /realtime/session assembles session.update server-side (instructions/tools);
browser forwards payload verbatim; Redis session record 30min with sliding renewal
- /realtime/tools/invoke validates login identity + Redis session ownership +
persona tool whitelist, then read-only searchAuthorized; per-account rate limits
- source=realtime skips sop review and knowledge-gap persistence (Beta no-persist)
- frontend: persona cards replace 56-voice picker; serialized tool-call chain with
soft-landing fallback
2026-07-25 11:13:04 +08:00
admin
3a19b475a8
feat(mobile): add voice-to-text input to direct feedback page
...
- 反馈内容 label 行新增语音 chip:toggle 录音(启动/录音计时/结束中/转写
四态),转写结果以换行追加,JS 侧截断至 5000 字上限并提示
- 复用既有 services/speech.ts + /api/ai/asr 链路;表单页文字为主路径,
录音不可用或权限失败仅提示改文字输入,不做选文件降级
- voiceStopping 状态修复 stop→onCapture 竞态(重复点按不再丢录音)
- onHide/onUnload 统一 teardownVoice:generation++、abort 转写、
cancel 录音、停计时,切页无迟来写回
- 渠道按钮加图标(vip/wallet/staff/eye/gear),匿名行与空历史态补图标
- 测试改用函数体提取断言,覆盖清理/竞态/截断/模板契约;150/150
单测、vue-tsc、H5 构建通过,mock API 浏览器验证通过
已经过 Codex 审查
2026-07-25 03:00:30 +08:00
admin
f545983de8
fix(knowledge): bind summary cards to cited evidence
2026-07-25 01:45:41 +08:00
admin
4d2b3828c0
feat(brand): rename product to 帮道
2026-07-25 01:09:49 +08:00
admin
c9d2012ec1
feat(aihr): finalize practice growth and access boundaries
2026-07-25 00:42:19 +08:00
admin
09278d40c6
merge: integrate broadcast question correction
...
# Conflicts:
# docs/BRD_PRODUCTION_MIGRATION_RUNBOOK.md
2026-07-25 00:13:49 +08:00
admin
5f8d8f96f0
fix(agent): preserve broadcast consultation context
2026-07-25 00:12:53 +08:00
admin
342f84a9de
feat(aihr): complete company message R1-R3
2026-07-24 23:25:15 +08:00
admin
5b7c5613f5
feat(agent): move mobile ask to unified agent
2026-07-24 22:36:14 +08:00
admin
743d629dc8
fix(knowledge): use native file downloads in app
2026-07-24 14:52:07 +08:00
admin
442ba66848
fix(knowledge): make protected file downloads WebView-safe
2026-07-24 13:31:30 +08:00
admin
474d46e728
feat(speech): add qwen tts voice preferences
2026-07-24 01:54:37 +08:00
admin
067cc30d80
feat(aihr): complete M3 protected practice replay
2026-07-23 22:21:43 +08:00
admin
83f775faec
fix(mobile): stack extra-large schedule actions
2026-07-23 22:18:44 +08:00
admin
927458b9e0
feat(aihr): harden M0-M2 mobile training flows
2026-07-23 21:18:13 +08:00
admin
0f5c2e8667
feat(mobile-app): prepare native app packaging
2026-07-23 14:40:23 +08:00
admin
f6609808df
feat(aihr): add M1 broadcast targeting and mandatory reads
2026-07-23 12:11:41 +08:00
admin
cd94f4fe9f
test: add M1 broadcast acceptance reproducers
2026-07-23 11:27:53 +08:00
admin
4b31848e3d
fix(aihr): harden broadcast and mobile assistant flows
2026-07-23 03:35:36 +08:00
admin
b4ae0e6da0
feat(mobile-uni): 彻底完成登录页、首页、学习中心与问答页UI/UX极简重构及单条消息追问功能
2026-07-23 02:16:57 +08:00
admin
455267cf6f
feat: add realtime practice voice selector
2026-07-22 12:24:46 +08:00
admin
87772cc64c
feat: add qwen realtime practice beta
2026-07-22 09:29:39 +08:00
admin
c38a723ae4
Merge branch 'codex/brd-release-20260715' into codex/multi-tenant-knowledge-platform
...
# Conflicts:
# AGENTS.md
# README.md
# backend/ruoyi-modules/ruoyi-aihr/src/main/java/org/dromara/aihr/domain/AihrPracticeDto.java
# backend/ruoyi-modules/ruoyi-aihr/src/main/java/org/dromara/aihr/service/AihrOrgSyncService.java
# backend/ruoyi-modules/ruoyi-aihr/src/main/java/org/dromara/aihr/service/AihrPracticeSeedService.java
# backend/ruoyi-modules/ruoyi-aihr/src/main/java/org/dromara/aihr/service/AihrUploadQueueService.java
# backend/ruoyi-modules/ruoyi-aihr/src/test/java/org/dromara/aihr/service/AihrOrgSyncServiceTest.java
# backend/ruoyi-modules/ruoyi-aihr/src/test/java/org/dromara/aihr/service/AihrPracticeSeedServiceTest.java
# backend/ruoyi-modules/ruoyi-aihr/src/test/java/org/dromara/aihr/service/AihrUploadQueueServiceTest.java
# docs/20260708/uni-app用户侧前端重建计划.md
# docs/API_INTEGRATION.md
# docs/BRD_IMPLEMENTATION_AUDIT.md
# docs/BRD_PRODUCTION_MIGRATION_RUNBOOK.md
# docs/DEMO_ACCEPTANCE.md
# docs/DEV_SETUP.md
# docs/FIGMA_IMPLEMENTATION_MATRIX.md
# docs/README.md
# frontend/src/views/knowledge/processing.vue
# mobile-uni/src/pages/supervisor/assign/index.vue
# mobile-uni/src/pages/supervisor/index/index.vue
# mobile-uni/src/pages/supervisor/profile/index.vue
# mobile-uni/src/pages/supervisor/review/index.vue
# mobile-uni/src/pages/supervisor/reviews/index.vue
# mobile-uni/src/pages/supervisor/team/index.vue
# mobile-uni/src/pages/user/cases/index.vue
# mobile-uni/src/pages/user/practice/index.vue
# mobile-uni/src/pages/user/profile/index.vue
# mobile-uni/src/pages/user/sop/index.vue
# mobile-uni/src/pages/user/today/index.vue
# mobile-uni/src/types/api.ts
# scripts/tests/aihr-schema-migrations.test.sh
2026-07-22 08:41:49 +08:00
admin
d7664e45a7
feat(work-results): support historical project outcomes
2026-07-22 00:29:19 +08:00
admin
11250811a6
fix: show work capture context before actions
2026-07-21 05:01:43 +08:00
admin
4536d607e3
feat: add project-scoped work assistant results
2026-07-21 04:44:15 +08:00
admin
0a5fc9a463
feat(assistant): unify confirmed memory capture
2026-07-20 02:30:06 +08:00
admin
c17d83fc59
feat(web-ai): render markdown answers safely
2026-07-19 22:02:49 +08:00
admin
925b48e436
feat(work-report): add voice-first reporting flow
2026-07-19 12:17:11 +08:00
admin
24da833fa6
feat(personal-assistant): add confirmed project memory
2026-07-19 08:19:24 +08:00
admin
064816a784
feat(knowledge): add short-term ask memory
2026-07-18 21:22:49 +08:00
admin
6bdc86e3fc
feat: restore learning feedback and knowledge capabilities
2026-07-18 00:50:11 +08:00
admin
b3dd2c2cf1
fix(mobile): align supervisor profile workspace
2026-07-17 04:42:49 +08:00
admin
5d82ff7b21
fix(mobile): complete SOP focus regression
2026-07-17 04:29:32 +08:00
admin
0745d51e57
fix(mobile): focus SOP answers after search
2026-07-17 04:25:26 +08:00
admin
e93421ca1e
fix(aihr): close Figma UI regression gaps
2026-07-17 04:17:14 +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
493fd5361e
fix(mobile): align sop position label
2026-07-14 20:44:47 +08:00