3.9 KiB
3.9 KiB
H5 会话关闭「重复提醒」优化(方案A)— 交付概要
问题
员工端会话关闭后,消息列表系统消息(✅ 会话已关闭。24小时内可重新打开。)与底部 QueueCapsule 横幅(会话已关闭 · 24小时内可重新打开 点击重新打开 🔄)两处重复展示同一提醒文案,且横幅另带「点击重新打开」入口,造成信息冗余。
方案(用户选定 · 方案A)
- 保留消息列表系统消息,在其卡片内新增「🔄 重新打开」按钮(上下文最近、最自然);
- 删除底部 QueueCapsule 的 resolved 横幅(去重)。
改动文件(均位于真实部署目录 src/frontend-h5/)
src/frontend-h5/src/components/chat/MessageBubble.vue- 模板:系统消息
<div>内新增v-if="isResolveMessage && canReopen"的「🔄 重新打开」按钮,点击handleReopen; - script:新增
isResolveMessage(content 含「可重新打开」判定)/canReopen(store.canReopen)/isReopening(store.isReopening)/handleReopen(调store.reopenCurrentConversation()+ toast 展示后端真实错误); - CSS:
.message-bubble__reopen-btn(企微绿#07c160圆角胶囊,含:active/:disabled态)。
- 模板:系统消息
src/frontend-h5/src/components/chat/QueueCapsule.vuevisiblecomputed 新增if (currentState.value === 'resolved') return false,隐藏 resolved 横幅;- 纯函数
computeVisible/computeCapsuleState保持不变(既有逻辑测试不受影响)。
设计决定(透明说明)
InputBar 的「人工坐席」按钮在 resolved 态仍保留 reopen 能力 —— 它仅显示徽标 + tooltip(无可见重复文案),作为常驻 reopen 入口;6 态状态机与既有测试不变。若你希望 reopen 入口唯一收口到系统消息卡片,可再隐藏该按钮(需同步改 inputBarCallAgentState.ts 的 reopen 分支,并调整 28 例相关测试)。
验证结果
- vue-tsc:仅历史既有类型错误(RecommendCard / SelfDiagnosis / conversation.ts 等),无本次新增;模板引用
handleReopen/isResolveMessage/canReopen/isReopening均已正确定义; - vitest:171 例(inputBarCallAgentState / QueueCapsule / integrationZoneLogic)全过;
- vite build:成功(529 模块,built in 2.74s)。
回滚能力(满足用户硬约束:微小改动后页面回老版本)
- 改动前已备份:
D:\资料\03-项目开发\wecom_it_smart_desk\.backup\h5-20260807\src-frontend-h5-src.tar.gz(171MB,排除 node_modules/dist); - 回滚:
tar -xzf .backup/h5-20260807/src-frontend-h5-src.tar.gz -C <项目根>还原src/frontend-h5/;- ⚠️ 本环境 safe-delete 垫片会拦截
rm(fail-closed),勿先rm -rf;用tar直接覆盖即可。
- ⚠️ 本环境 safe-delete 垫片会拦截
部署状态:已上线生产(2026-08-07 13:15)
采用既有「版本化 PATH + 302 跳板」体系破除 WAF path 缓存:
- 新版本入口:
/h5/v20260807a/(nginxalias指向同一 rootdist/,仅 URL 路径不同) /h5/go302 目标已由v20260806g改为v20260807a- 改后
docker exec wecom_it_nginx nginx -t通过 →docker restart wecom_it_nginx
验证(内网 + 外网 WAF 双通过)
- 内网:
/h5/v20260807a/=200、/h5/go=302→/h5/v20260807a/、/h5/assets/index-C1Q6Rane.js=200(新 hash) - 外网:
https://itsupport.servyou.com.cn/h5/go=302→/h5/v20260807a/;外部 index.html 引用新 hashindex-C1Q6Rane.js - 产物核对:built JS 含「🔄 重新打开」「重新打开中」、CSS 含
message-bubble__reopen-btn→ 方案A 代码确已生效
回滚预案(nginx 层,秒级)
sudo cp /opt/wecom-it-desk/nginx/nginx.conf.bak-20260807 /opt/wecom-it-desk/nginx/nginx.conf
docker restart wecom_it_nginx
(dist 构建产物回退需重新解上次构建包;源码级备份见 .backup/h5-20260807/src-frontend-h5-src.tar.gz)