key
721839c847
feat(aihr): harden finance RAG retrieval and evidence gates
2026-08-03 22:34:18 +08:00
key
6ad8a017a4
feat(aihr): close functional checklist gaps
2026-08-02 12:15:45 +08:00
key
699cc08050
feat: govern knowledge assets and source citations
2026-08-02 01:43:43 +08:00
key
c16a3e83d7
feat(release): close handler and microphone gaps
2026-07-30 12:01:45 +08:00
key
5027bef32d
fix(mobile): support Android system file picker
2026-07-29 23:52:44 +08:00
key
cb928edafd
fix(mobile): handle file picker cancellation
2026-07-29 02:01:45 +08:00
key
9ea5d79a62
release: prepare August 1 Android RC
2026-07-29 00:35:15 +08:00
admin and Claude Opus 5
d84ad87cb6
fix(sop): restore voice-first replies on App without withholding text
...
73712994 disabled voice-first on native by gating the TTS preload behind
!isNativeAppRuntime(), which left App users with the degraded text bubble
plus a 播报 button. The voice-line, 转文字 toggle and 收起全文 markup were
still present but unreachable.
Re-enable the preload on every platform and open the transcript when the
message is created, so the answer is readable while synthesis runs.
Collapse the transcript when playback starts rather than when synthesis
finishes: on-device synthesis settles in 2-6s, so collapsing on ready
pulled the answer away mid-sentence. transcriptPinned records a manual
toggle so the automatic collapse never overrides the reader.
Bound the preparing bubble at 20s (the upstream DashScope ceiling) so a
stalled synthesis degrades to the plain text bubble instead of showing an
endless placeholder duration.
Replace the tautological assertion that pinned the previous behaviour by
matching source strings with assertions on the behaviour itself.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com >
2026-07-26 02:36:14 +08:00
admin and Claude Opus 5
73712994c6
fix(mobile): stop preloading answer TTS on native App
...
On native App the eager TTS request delayed the answer bubble: the message was
created in `preparing` state, so the text stayed behind a voice line that was
still waiting on a round trip.
Skip the preload when `isNativeAppRuntime()`, marking the voice `unavailable`
so the text and citations render immediately. The existing `unavailable`
branch already exposes a play button that calls `toggleAnswerSpeech`, so voice
stays reachable on demand instead of being dropped. H5 keeps preloading.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com >
2026-07-25 23:58:19 +08:00
admin
f545983de8
fix(knowledge): bind summary cards to cited evidence
2026-07-25 01:45:41 +08:00
admin
5f8d8f96f0
fix(agent): preserve broadcast consultation context
2026-07-25 00:12:53 +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
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
4b31848e3d
fix(aihr): harden broadcast and mobile assistant flows
2026-07-23 03:35:36 +08:00
admin
5a31896394
fix(mobile-uni): 清理原生 Emoji 符号,全面替换为 uni-icons 标准矢量图标规避跨终端兼容风险
2026-07-23 02:12:47 +08:00
admin
eb973418d5
fix(mobile-uni): 极简压缩“问”模块顶部Header与项目栏,大幅释放对话框垂直空间
2026-07-23 02:09:30 +08:00
admin
2488febf19
Merge branch 'codex/personal-assistant-phase2' into codex/multi-tenant-knowledge-platform
...
# Conflicts:
# backend/ruoyi-modules/ruoyi-aihr/src/main/java/org/dromara/aihr/domain/AihrSopDto.java
# backend/ruoyi-modules/ruoyi-aihr/src/main/java/org/dromara/aihr/service/AihrModelSeedService.java
# backend/ruoyi-modules/ruoyi-aihr/src/main/java/org/dromara/aihr/service/AihrSopSeedService.java
# backend/ruoyi-modules/ruoyi-aihr/src/test/java/org/dromara/aihr/service/AihrModelSeedServiceTest.java
# backend/ruoyi-modules/ruoyi-aihr/src/test/java/org/dromara/aihr/service/AihrSopSeedServiceTest.java
# docs/API_INTEGRATION.md
# docs/个人AI助理阶段二专项TechSpec.md
# docs/个人AI助理阶段二开发推进计划.md
# frontend/src/views/knowledge/processing.vue
# mobile-uni/src/pages/user/sop/index.vue
# mobile-uni/src/services/api.ts
# mobile-uni/src/services/personal-assistant.ts
# mobile-uni/tests/personal-assistant.test.mjs
# scripts/demo-check.sh
# scripts/personal-assistant-smoke.sh
2026-07-22 08:54:04 +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
578592b21d
fix(mobile): flex-center pill buttons and fix learning task card layout
...
- learning: task-list/snippet-list use column direction (row squeeze caused
one-char-per-line vertical text in today-task cards)
- learning/profile: fold-toggle flex-centered
- login: code-button flex-centered
- practice: transcript-toggle / bubble-action / style-chip flex-centered
- questions: filter-chip flex-centered
- sop: modal-close flex-centered with 32px hit area
- web-ai: bubble-action flex-centered
2026-07-20 09:03:58 +08:00
admin
0a5fc9a463
feat(assistant): unify confirmed memory capture
2026-07-20 02:30:06 +08:00
admin
46a6156d8c
fix(mobile): highlight new-chat button and flex-center composer labels
...
- AskSourceHeader: solid brand-red new-chat button, flex-centered label
- replace padding+line-height centering with flex on chips, hold-talk,
send, bubble-action, transcript-toggle, system-text, scope-note
- carries the in-flight AskSourceHeader extraction on sop/web-ai pages
(parallel session work; its test updates intentionally left uncommitted)
2026-07-19 23:21:24 +08:00
admin
c47bf748cb
fix(mobile): replace emoji glyphs with uni-icons and flex centering app-wide
...
- ChatComposer panel contract: callers now pass uni-icons type names
(image/sound/list/help/checkmark) instead of emoji
- voice playback buttons: sound icon + pulse animation, no more 🔊 /◼ chars
- practice recent list: rare symbols ⌕⌁◉ (tofu risk) -> wallet/gear/chatbubble
- sop resource icon ▶/文 -> 视/文 character badges
- back arrows: 22 char-based ← -> uni-icons back across 21 pages
- line-height centering -> flex in 8 spots (back buttons, media-remove,
turn-voice capsule, option-marker, text-button, play-question)
2026-07-19 20:16:05 +08:00
admin
24da833fa6
feat(personal-assistant): add confirmed project memory
2026-07-19 08:19:24 +08:00
admin
151cc26caf
fix(mobile): precise centering in ask page switch and composer
...
Replace line-height centering with flex + fixed heights, and swap
emoji/unicode glyphs (+ × ⌨ 🎤 ) for uni-icons vector icons so
alignment and rendering are consistent across platforms.
2026-07-19 03:27:46 +08:00
admin
4c2b5deb00
feat(mobile): redesign today home and switch mentor persona to female
...
- today: immersive community hero + hold-to-talk voice card, numbered
schedule rows, common-functions grid (learning/report/question-board)
- login: female mentor bust; sop: female mentor chat avatars
- speech: raise browser-fallback mentor pitch to match female voice
2026-07-19 02:38:18 +08:00
admin
064816a784
feat(knowledge): add short-term ask memory
2026-07-18 21:22:49 +08:00
admin
68d5600534
feat(speech): add role-aware emotional TTS profiles
2026-07-18 18:27:14 +08:00
admin and Claude Fable 5
d5ea4b5451
feat(mobile): restore two old-H5 interaction loops in chat form
...
旧 H5 vs uniapp 逐功能盘点(客户要求'html 版本逻辑保持')后确认的
两个交互缺口,以会话形态补齐:
1. 学练闭环:总结卡底部新增「去练一遍」(旧版'开始跟读'),
关卡后直达练页预习视图,学完话术立刻练。
2. 建议采用:老师傅提示气泡新增「用这句话回复」(旧版'建议回复'
的真实数据版),ChatComposer 暴露 setDraft(text)——填入输入框并
切键盘模式,员工可修改后发送;对打字困难的老年员工是关键路径。
盘点其余结论:旧版功能全部已迁移或被更优实现替代;
团队短板热力图为写死演示数据,真实版记 P2(需后端维度聚合);
演示角色切换/假数据脚手架确认不迁。
验证:本地+生产 E2E——总结卡→去练一遍→预习视图;
对练→老师傅提示→用这句话回复→输入框回填→发送进入下一轮。
发布备份 h5-before-$TS。
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-07-18 11:29:05 +08:00
admin and Claude Fable 5
95dfd653ba
fix(mobile): remove inherited page padding gaps around chat layout
...
客户标注了四处间距问题:头部上方空隙、头部/切换条两侧内缩、
输入条两侧内缩、输入条与 tab 栏之间约 96px 灰色空档。
根因:全局 .page 类自带 padding: 22px 16px 96px 且 min-height:100vh,
会话页继承后四边都被垫开;页面高度 calc 与之叠加产生底部大空档。
修复:
- .sop-chat-page 改为 fixed 铺满窗口区(--window-top 到 --window-bottom),
padding 清零,头部/线程/输入条边到边,与微信布局一致
- ChatComposer 底部去掉 env(safe-area-inset-bottom) 叠加(tab 栏自行处理)
验证:本地与生产实测 headTop=0 headLeft=0 composer 与 tab 栏间距 ≤1px;
截图目检通过。发布备份 h5-before-20260718051038。
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-07-18 05:11:21 +08:00
admin and Claude Fable 5
a7f0305bcb
feat(mobile): make 转文字 transcript collapsible both ways
...
客户追加:转文字展开后应可收回。实现双向收口:
- 「转文字」chip 常驻并变为开关(展开后显示「收起」)
- 展开内容底部增加「收起全文 ▲」——长文读到底部无需回滚到顶部
红点语义不变(仅播放清除);TTS 不可用的纯文本气泡不受影响。
验证:本地展开⇄收起往返(chip 与底部链接各一次)通过;已发布
(备份 h5-before-$TS)。
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-07-18 05:05:48 +08:00
admin and Claude Fable 5
f7eff14342
feat(mobile): voice-first master replies with WeChat-style unread dot and 转文字
...
客户 2026-07-18 追加要求:师傅回复先以语音消息呈现(微信式),
未读带红点,点击播放,可选「转文字」展开全文;同时优化长文刷屏布局。
speech.ts:
- 播放控制器新增 preload(text):预合成 TTS 并写入源缓存(不播放),
供语音气泡在首次点击前显示时长;失败返回 null
- 新增 measureAudioDuration(source):经 metadata 探测音频秒长(8s 超时兜底)
sop/index.vue:
- MasterMsg 增加 voiceStatus(preparing/ready/unavailable)/voiceDuration/
unread/transcriptOpen
- 答案到达即后台预合成语音(说话内容=直接答案 answer 字段),
就绪后气泡显示「🔊 N"」+未读红点;点击播放(再点停止,播放态变色),
播放即清红点;「转文字」灰 chip 展开完整结构化内容
(要点/提醒/引用/总结卡/反馈),微信同款交互
- TTS 不可用或答案为空时自动回退为纯文本气泡(播报按钮保留),
训练概况等数据型回复直接文本呈现
- 布局优化:头部压缩,长文默认收进「转文字」,线程不再整段刷屏
验证:
- 本地:时长 13" 真实测得、红点播放后消失、转文字展开全文,3 张截图目检
- 生产冒烟:语音气泡+时长+红点+转文字 chip 全部就位
- H5 已发布(备份 h5-before-20260718045801)
说明:每条答案一次 TTS 合成调用(有缓存),试点量级成本可忽略;
练页会话化(批次二)将复用同一套语音气泡形态。
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-07-18 04:59:11 +08:00
admin and Claude Fable 5
bf1e881a8c
feat(mobile): rebuild SOP ask page as WeChat-style chat (batch 1)
...
客户 2026-07-18 新要求:语音文字交互改为微信聊天式,替代表单式操作
(客户原话 > Figma,已记入版本对比冲突表)。
新增 components/chat/ChatComposer.vue(可复用,练页批次二直接使用):
- 微信式输入条:⊕功能面板(图片/视频、选音频转文字、训练概况)、
按住说话(touch+mouse,松开即发送/滑出取消)、麦克风⇄键盘切换、
文本发送;录音兜底:环境不支持自动转选音频
- 快捷问题 chips 横向滚动置于输入条上方;附件以可移除 chip 展示
pages/user/sop/index.vue 重构为消息流模型:
- user/master/system/pending 四类消息;答案气泡内含要点/提醒/无依据提示,
操作行=播报、引用N条(折叠展开)、总结卡、有帮助/没解决(逐条反馈)
- 语音松开即发送(按用户决策):转写成功直接成为消息(带🎤 标),
失败以系统气泡提示;选音频同语义
- 登录守卫、pending query/tool、主管学员态、生成计数取消、
onHide/onUnload 清理全部保留;总结卡弹窗(下载/播报)原样保留
验证:
- 本地(构建产物+生产API)9 张截图人工目检:空态/快捷词问答/引用展开/
键盘输入发送/按住录音/语音失败系统气泡/⊕面板/总结卡/超大字号档
- 生产冒烟:composer 存在 + 完整问答回合渲染通过
- H5 已发布(备份 h5-before-20260718044611)
批次二(待办):练页会话化(复用 ChatComposer)、web-ai 页统一、
旧表单样式清理。
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-07-18 04:47:33 +08:00
admin
6bdc86e3fc
feat: restore learning feedback and knowledge capabilities
2026-07-18 00:50:11 +08:00
admin
493fd5361e
fix(mobile): align sop position label
2026-07-14 20:44:47 +08:00
admin
07ab28fd7b
feat(aihr): trace sop feedback to search review
2026-07-14 04:18:09 +08:00
admin
87360a25d3
feat(aihr): align figma pages for release
2026-07-14 02:04:36 +08:00
admin
c8ef15ee9e
feat(mobile): add personal assistant knowledge flow
2026-07-12 11:57:02 +08:00
admin
c66fc4e4b0
feat(mobile): finish employee app page polish
2026-07-11 18:59:30 +08:00
admin
ee396d1e7a
feat(mobile): 重做员工端首页、问答和训练页视觉
...
统一员工端 tabBar、共享卡片和三大核心页面的视觉基础,同时保持现有移动端业务流程不变。补充 H5 输入兼容、页面结构和训练回滚行为的回归测试。
2026-07-11 01:13:14 +08:00
admin
8f73cb0c84
fix(mobile): require employee position before user flow
2026-07-09 17:09:26 +08:00
admin
ba8c35904e
fix(mobile): normalize sop answer step labels
2026-07-09 15:28:14 +08:00
admin
04405b5e11
fix(mobile): reset page scroll on route entry
2026-07-09 13:34:24 +08:00
admin
678543e8a5
feat(aihr): complete uni-app role workflows
2026-07-09 10:42:20 +08:00