Files
wecom_it_smart_desk/overview.md
T

3.9 KiB
Raw Blame History

H5 会话关闭「重复提醒」优化(方案A)— 交付概要

问题

员工端会话关闭后,消息列表系统消息✅ 会话已关闭。24小时内可重新打开。)与底部 QueueCapsule 横幅会话已关闭 · 24小时内可重新打开 点击重新打开 🔄)两处重复展示同一提醒文案,且横幅另带「点击重新打开」入口,造成信息冗余。

方案(用户选定 · 方案A

  • 保留消息列表系统消息,在其卡片内新增「🔄 重新打开」按钮(上下文最近、最自然);
  • 删除底部 QueueCapsule 的 resolved 横幅(去重)。

改动文件(均位于真实部署目录 src/frontend-h5/

  1. src/frontend-h5/src/components/chat/MessageBubble.vue
    • 模板:系统消息 <div> 内新增 v-if="isResolveMessage && canReopen" 的「🔄 重新打开」按钮,点击 handleReopen
    • script:新增 isResolveMessage(content 含「可重新打开」判定)/ canReopenstore.canReopen/ isReopeningstore.isReopening/ handleReopen(调 store.reopenCurrentConversation() + toast 展示后端真实错误);
    • CSS.message-bubble__reopen-btn(企微绿 #07c160 圆角胶囊,含 :active/:disabled 态)。
  2. src/frontend-h5/src/components/chat/QueueCapsule.vue
    • visible computed 新增 if (currentState.value === 'resolved') return false,隐藏 resolved 横幅;
    • 纯函数 computeVisible / computeCapsuleState 保持不变(既有逻辑测试不受影响)。

设计决定(透明说明)

InputBar 的「人工坐席」按钮在 resolved 态仍保留 reopen 能力 —— 它仅显示徽标 + tooltip(无可见重复文案),作为常驻 reopen 入口;6 态状态机与既有测试不变。若你希望 reopen 入口唯一收口到系统消息卡片,可再隐藏该按钮(需同步改 inputBarCallAgentState.tsreopen 分支,并调整 28 例相关测试)。

验证结果

  • vue-tsc:仅历史既有类型错误(RecommendCard / SelfDiagnosis / conversation.ts 等),无本次新增;模板引用 handleReopen/isResolveMessage/canReopen/isReopening 均已正确定义;
  • vitest171 例(inputBarCallAgentState / QueueCapsule / integrationZoneLogic全过
  • vite build:成功(529 模块,built in 2.74s)。

回滚能力(满足用户硬约束:微小改动后页面回老版本)

  • 改动前已备份:D:\资料\03-项目开发\wecom_it_smart_desk\.backup\h5-20260807\src-frontend-h5-src.tar.gz171MB,排除 node_modules/dist);
  • 回滚:tar -xzf .backup/h5-20260807/src-frontend-h5-src.tar.gz -C <项目根> 还原 src/frontend-h5/
    • ⚠️ 本环境 safe-delete 垫片会拦截 rmfail-closed),勿先 rm -rf;用 tar 直接覆盖即可。

部署状态:已上线生产(2026-08-07 13:15

采用既有「版本化 PATH + 302 跳板」体系破除 WAF path 缓存:

  • 新版本入口:/h5/v20260807a/nginx alias 指向同一 root dist/,仅 URL 路径不同)
  • /h5/go 302 目标已由 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 引用新 hash index-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