From 6935476e3f0cab38ce6c69ccb0102c944e3cb300 Mon Sep 17 00:00:00 2001 From: let5sne Date: Sat, 18 Jul 2026 09:23:51 +0800 Subject: [PATCH] feat(mobile): web-ai chat rebuild (batch 3) + profile page APP-ification MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 用户三项决定落地: 1. 问AI(全网)页会话化:重写为微信式会话(欢迎/免责=AI气泡, 脱敏与敏感信息提醒保留,未启用=系统气泡+输入条禁用, 同意告知由勾选框改为首次发送前确认弹窗(会话内记忆), 答案气泡带播报+来源N条折叠(外链可点),按住说话松开即发+ 选音频,ChatComposer 复用;无tab栏子页,输入条自带安全区) 2. 配置维持不变(active_timeout/姓名字段/固定验证码按原状) 3. 知识大库开放:财务报备/销售话术/行政制度/培训视频/图片素材 (1004/1005/1007/1008/1009/1010)绑定移动端应用并授 employee/supervisor READ;1006「验收测试」为测试库, 为免污染员工检索结果暂不开放(报告中说明)。 生产验证:员工问「财务报备流程」「销售话术要点」均返回真实答案。 新需求「H5 像 APP」首批:「我」页 APP 化——折叠不删减: - 成长摘要保留核心数字,五维评分+成长路径收进「展开能力详情」 - 成长证据包默认收起(标题行+展开按钮) - 最近练过默认3条,「展开全部N条」可切换 页面高度 3072→1976px,信息全部一次点击可达。 验证:本地5项断言+生产3项复核全过(webai气泡/禁用态/composer、 profile折叠/高度、大库检索)。发布备份 h5-before-20260718092234。 Co-Authored-By: Claude Fable 5 --- ...工端版本功能对比与功能对齐清单-20260717.md | 2 +- mobile-uni/src/pages/user/profile/index.vue | 59 +- mobile-uni/src/pages/user/web-ai/index.vue | 717 ++++++++++++++---- 3 files changed, 635 insertions(+), 143 deletions(-) diff --git a/docs/员工端版本功能对比与功能对齐清单-20260717.md b/docs/员工端版本功能对比与功能对齐清单-20260717.md index d0e10236..630e5557 100644 --- a/docs/员工端版本功能对比与功能对齐清单-20260717.md +++ b/docs/员工端版本功能对比与功能对齐清单-20260717.md @@ -91,4 +91,4 @@ Figma 已完成全文件结构和视觉复核,当前实测为 81 个顶层页 | 功能 | 客户要求 | Figma | 当前代码 | 线上状态 | 处理决定 | | --- | --- | --- | --- | --- | --- | -| 语音文字交互形态 | 2026-07-18 客户原话:凡语音文字交互处应做成微信聊天式(消息流+按住说话),现表单式操作太复杂 | 表单式布局(输入框+按钮组) | 问页已改会话流:ChatComposer(⊕面板/按住说话松开即发/键盘切换)+气泡消息流,引用/总结卡/反馈/播报收入答案气泡操作行 | 已发布并生产冒烟通过(2026-07-18) | 按客户要求执行,客户原话 > Figma;2026-07-18 批次二完成:练页对练进行中改为同款会话(业主台词=语音优先气泡+红点+转文字,老师傅提示气泡,风格chips,⊕面板收纳选音频/求助/结束评分,松开即发送),预习/每日三题/评分视图保持;web-ai 页待批次三 | +| 语音文字交互形态 | 2026-07-18 客户原话:凡语音文字交互处应做成微信聊天式(消息流+按住说话),现表单式操作太复杂 | 表单式布局(输入框+按钮组) | 问页已改会话流:ChatComposer(⊕面板/按住说话松开即发/键盘切换)+气泡消息流,引用/总结卡/反馈/播报收入答案气泡操作行 | 已发布并生产冒烟通过(2026-07-18) | 按客户要求执行,客户原话 > Figma;2026-07-18 批次二完成:练页对练进行中改为同款会话(业主台词=语音优先气泡+红点+转文字,老师傅提示气泡,风格chips,⊕面板收纳选音频/求助/结束评分,松开即发送),预习/每日三题/评分视图保持;web-ai 页批次三已完成(会话式+按住说话+同意确认弹窗+来源折叠,未启用态=系统气泡+输入条禁用);「我」页 APP 化(能力详情/成长路径/证据包默认折叠,最近练过限3条可展开,信息零删减) | diff --git a/mobile-uni/src/pages/user/profile/index.vue b/mobile-uni/src/pages/user/profile/index.vue index 026ebb0a..e34fe10e 100644 --- a/mobile-uni/src/pages/user/profile/index.vue +++ b/mobile-uni/src/pages/user/profile/index.vue @@ -84,7 +84,10 @@ - + + {{ item.label }} @@ -95,7 +98,7 @@ - + @@ -149,7 +152,13 @@ - 成长证据包(待人工复核) + + 成长证据包(待人工复核) + + + @@ -188,7 +198,7 @@ {{ item.status }} + 暂无训练记录 @@ -237,6 +250,10 @@ const loading = ref(false); const message = ref(''); const profile = ref(null); const history = ref([]); +const showGrowthDetail = ref(false); +const showEvidence = ref(false); +const showAllHistory = ref(false); +const visibleHistory = computed(() => (showAllHistory.value ? history.value : history.value.slice(0, 3))); const evidence = ref(null); const positionProfile = ref(getSelectedPositionProfile()); const supervisorLearning = ref(false); @@ -876,4 +893,38 @@ onShow(() => { color: #8a93a0; font-size: 12px; } + +.fold-toggle { + display: block; + width: 100%; + margin: 10px 0 0; + padding: 8px 0; + border: none; + border-top: 1px dashed #eceff2; + background: transparent; + color: #6b7480; + font-size: 13px; + text-align: center; + line-height: 1.5; +} + +.fold-toggle::after { + border: none; +} + +.fold-toggle.inline { + width: auto; + margin: 0; + padding: 2px 10px; + border: 1px solid #e3e6ea; + border-radius: 999px; + background: #f7f8fa; + font-size: 12px; +} + +.fold-head { + display: flex; + align-items: center; + justify-content: space-between; +} diff --git a/mobile-uni/src/pages/user/web-ai/index.vue b/mobile-uni/src/pages/user/web-ai/index.vue index 322fdf0b..cd0b8bea 100644 --- a/mobile-uni/src/pages/user/web-ai/index.vue +++ b/mobile-uni/src/pages/user/web-ai/index.vue @@ -1,118 +1,196 @@