Files
Simon 449c6d4875 feat: 2026-07-12~13 全量更新 - AI对话链路改造+H5 v4/v5+坐席端v5+上下文感知诊断+知识库迭代3
## H5 员工端 v4 (2026-07-13 00:48 已部署)
- 人工按钮三态文案统一为"人工坐席"
- 按钮位置移至发送键和语音按钮上方(垂直堆叠)
- 点按钮直接调 store.shakeAgent(),删除 CallAgentModal 弹窗动画
- 截图快捷键提示改为"截图->粘贴:Alt+Shift+A-Ctrl+V ---> Ctrl+V"
- 移动端隐藏截图提示(CSS 媒体查询)
- AI转人工提示改为"已为您呼叫人工坐席,请稍等!"
- 坐席接入提示改为"坐席正在查看您的信息,请等待处理回复!"
- 删除"摇铃呼叫坐席"入口和文案
- 删除孤儿组件 MessageList.vue + shake 动画 CSS

## H5 员工端 v5 (2026-07-13 02:08 已部署)
- RightPanel v2.1:删除"软件安装"和"资源权限"标签页
- 移除标签栏,智能推荐(DynamicRecommend)直接展示
- 删除 SoftwareDownloads/ApprovalLinks 引用和相关 CSS

## AI 对话链路全栈改造 Phase 1-6 (已部署)
- Phase 1: Dify JSON输出 + 后端blocking解析 + 双WS推送 + 错误降级
- Phase 2: 关键词收窄(~25强意图词) + 两级分类Prompt + 删除前端checkApprovalIntent
- Phase 3: WS扩展(ai_thinking+dynamic_recommend) + ai_structured气泡 + RightPanel v2 + 选项回传
- Phase 4: VisionService接入 + 图片消息融合(5秒窗口) + 降级策略
- Phase 5: 坐席端ai_thinking指示器 + ai_structured/byod_card渲染 + handleNewMessage修复
- Phase 6: diagnosis_stage(6值) + response_time_ms计时 + 慢响应告警(>10s)

## 坐席端 v5 (2026-07-13 01:38 已部署)
- ai_structured/byod_card 只读渲染
- AI思考指示器 UI
- handleNewMessage 透传 msg_type/extra_data 修复
- 布局优化v2.0: QuickReplyBar L1+L2悬浮 + ReplyBox左右分区 + 右栏260/560px切换
- 键盘快捷键v2.3: 纯数字路由 + ESC分层撤销 + Shift+Space用event.code

## 上下文感知智能诊断闭环 (2026-07-12 已部署)
- 三层诊断(API→Script→AI) + 三段排队(VIP→info_locked→not locked)
- 答题插队 + 五场景关闭
- 迁移052(6表+6列) + queue_service + quiz_service + closing_service
- H5前端: QueueWaiting + RightPanel双Tab + InputBar三态 + ResolveConfirmCard
- 坐席前端: pending_close结单流程 + 信息锁定(Dify步骤完成+有效回答率≥70%)

## 知识库迭代3 (2026-07-12 已部署)
- 分诊交互(H5+坐席+Dify独立应用)
- 拓扑预览(ECharts只读)
- 代答排除(4种匹配器: keyword/regex/intent/category)
- 迁移051 + 44文件43测试通过

## 后端变更
- 6个Python文件改造(h5_ai_task.py/h5.py/ai_service.py/closing_service.py等)
- funny_phrase_service.py: shake/connected/keyword 默认文案更新
- session_service.py: 企微消息文案同步
- 新增: queue.py/quiz.py/triage.py/exclusion_rules.py 等API端点
- 新增: diagnostic.py/quiz.py/triage_session.py 等模型
- 新增: closing_service/queue_service/quiz_service/triage_service 等服务

## 文档更新
- CHANGELOG.md: 新增 [未发布] 区全部变更记录
- 项目管理主文档 v2.5: 新增v0.7.3版本 + 已完成看板 + 最近搞定
- 版本记录: 新增v0.7.3条目
- AI对话链路实施计划: Phase 1-6 全部标记已实施
- 新增架构图/时序图/类图(mermaid)

## 部署路径修正
- 服务器项目根路径: /opt/wecom-it-desk/
- 所有前端dist均为ro bind mount,只能在宿主机源路径操作
- 服务器nginx /h5/ 是静态文件服务(非proxy_pass)
- elFinder上传二进制不可靠(MD5不匹配),改用base64分块上传
2026-07-13 02:17:03 +08:00

9.2 KiB
Raw Permalink Blame History

IT智能服务台 - 项目记忆

设计决策(锁定)

  • AI交互:小段多回合;术语:员工端"人工坐席"按钮 = 用户呼叫坐席(统一命名,不再用"人工"/"摇人"变体);"摇人"=坐席呼叫坐席
  • 原型:坐席v5.3 + H5 v1.1UI:企微浅色扁平,accent=#07C160
  • 统一入口 /itportal/ → user/agent/adminadmin需OTP
  • H5 v42026-07-13 00:48 已部署):人工按钮三态文案统一为"人工坐席";位置在"发送键和语音按钮上方"(垂直堆叠于 .input-bar__controls 容器内);点按钮直接调 store.shakeAgent(),不弹 CallAgentModal 浮窗动画;截图说明 PC 显示/移动端隐藏(CSS 媒体查询)
  • H5 v52026-07-13 02:08 已部署)RightPanel v2.1 — 删除"软件安装"和"资源权限"标签页,移除标签栏,智能推荐直接展示;JS hash index-BP1rEZIf.jsCSS hash index-DC1iZpKe.css
  • Agent v52026-07-13 01:38 已部署)ai_structured/byod_card 只读渲染 + AI思考指示器 + handleNewMessage 透传 msg_type/extra_data 修复;JS hash index-2BTn4SZz.js
  • 后端 v52026-07-13 01:38 已部署)6个Python文件(h5_ai_task.py/h5.py/ai_service.py/closing_service.py等);diagnosis_stage(6值)+response_time_ms计时+VisionService接入+双WS推送(ai_reply+dynamic_recommend)+ai_thinking同时推员工和坐席

技术架构

  • 前端:坐席(Vue3+Element Plus) / H5(Vue3+Vant4) / 管理后台(Vue3+Element+Tailwind)
  • 后端:FastAPI + SQLAlchemy + PostgreSQL + Redis(代码在 app/
  • 字段映射:后端id/sender_type → 前端message_id/message_typeconversation.tsmapMessage()
  • WS双连接池:active_connections(agent) + employee_connections(H5)

部署

  • 正式服务器:itsupport.servyou.com.cn (10.90.5.110),出口IP 218.75.34.87
  • 堡垒机:sxn@10.212.189.210:2222 (OTP),脚本 C:\Users\simon\.workbuddy\skills\jumpserver-ops\scripts\jms_ops.py
  • 服务器项目根路径/opt/wecom-it-desk/(非本地仓库路径)
  • 后端卷挂载:./app:/app/app.py变更→docker compose restart backendenv变更→up -d backend
  • 前端部署铁律:所有前端 dist 均为 ro bind mount只能在宿主机源路径操作,不可在容器内修改
    • H5/opt/wecom-it-desk/frontend-h5/dist/usr/share/nginx/html/h5 (ro)
    • Agent/opt/wecom-it-desk/frontend-agent/dist/usr/share/nginx/html/itagent (ro)
    • Admin/opt/wecom-it-desk/frontend-admin/dist/usr/share/nginx/html/itadmin (ro)
    • Portal/opt/wecom-it-desk/frontend-portal/dist/usr/share/nginx/html/itportal (ro)
    • Terminal/opt/wecom-it-desk/frontend-terminal/dist/usr/share/nginx/html/itterminal (ro)
    • nginx.conf/opt/wecom-it-desk/nginx/nginx.conf/etc/nginx/nginx.conf (ro)
    • 部署命令模板:H5_DIR=/opt/wecom-it-desk/frontend-h5/dist && cp -r $H5_DIR ${H5_DIR}_bak && rm -rf $H5_DIR/* && tar -xzf /tmp/h5-dist-vX.tar.gz -C $H5_DIR/ && docker exec wecom_it_nginx nginx -s reload
  • 服务器 nginx /h5/ 配置(与本地仓库不同):静态文件服务 root /usr/share/nginx/html; try_files $uri /h5/index.html; + /h5/api/ 反代后端
  • Docker bind mount铁律:rm后重建必须重启容器(或 nginx -s reload 热重载)
  • 文件上传elFinder Web UIhz-oa-ai-g-dataquery-90-5-110目录=服务器/tmp// fast_upload_v3.py~20KB/s/ jms_ops.py pack-upload
  • ⚠️ elFinder 上传二进制文件不可靠2026-07-13 确认):tar.gz 上传后 MD5 不匹配(差90字节)。推荐用 base64 分块上传jms_ops.py batch 模式,45KB/块,~113秒/7.6MB(脚本 .workbuddy/tmp/chunked_upload_v2.py
  • pscp/plink -T不可用;elFinder上传后需手动mvhttpx.Timeout须含default
  • JumpServer v2.28 变更:登录新增图片验证码(CAPTCHA)connection-token 端点改为 /api/v1/authentication/connection-token/

外部集成

  • 企微通讯录:Secret BM6iosc3gKnPqkEXmsQN3ErJUpfO-whfMUN646eezB8Redis key=wecom:contact_access_token
  • Difyhttp://yw-dify.dc.servyou-it.com/v1/chat-messages;审批意图Key app-7jkRkAzvX4QM9v9SM3P8mMEO;分诊Key app-z3S9AEUUAVPbtR2rioxpiIvp
  • ⚠️ 禁止使用 app-UaTWYdBSwN6VktKQlbh5YN5H(老线上Dify应用,未收到明确指令前不可调用);应使用副本 app-7jkRkAzvX4QM9v9SM3P8mMEO 或自建 app-J3s8sHarZQ2SCaNF3xCppliL(后者不适合dify2openai代理,仅限直接API调用)
  • RAGFlow:生产 http://10.80.0.85:8080/ / API :9380
  • 映射策略:联软(主) > aTrust(VPN) > eHR(静态)

企微JS-SDK技术

  • 双鉴权:wx.config()(jsapi_ticket) + wx.agentConfig()(agent_config_ticket),签名算法相同但不能混用
  • wx.invoke('thirdPartyOpenPage', {oaType:'10001', templateId, thirdNo, extData}) 原生打开审批表单
  • 后端端点:GET /wecom/jsapi-config?url=...&with_agent_config=true
  • 前端composablefrontend-h5/src/composables/useWecomApproval.ts(懒加载+全降级+超时保护)
  • 既有bugEmergencyDispatcher.vue 第99-119行 复用jsapi签名给agentConfig(靠3秒超时兜底)

已上线功能模块

  • 群聊(摇人/邀请/四角色) / 审批(12类型18流程/三级意图) / 代办(getapprovalinfo+Semaphore/缓存45s)
  • IT资产推送(模板Bs7ucT...) / 语音转文字(手机JS-SDK/PC百度ASR) / 截图拍照 / 复杂场景P0~P3
  • 会议室预定(终端/itterminal/,企微会议室Secret待申请)

坐席端布局优化v2.02026-07-12 部署)

  • 8新增+7修改+3删除;QuickReplyBar L1+L2悬浮;ReplyBox左右分区;右栏260↔560px模式切换
  • 键盘快捷键v2.3:纯数字1~9上下文路由(AI/L1/L2)ESC分层撤销;Shift+Space用event.code匹配(不受IME影响)
  • useKeyboardShortcuts.ts中央管理器,IME/ScreenCapture守卫;L1 chip移除模板数量徽章只保留kbd编号

知识库迭代3功能(2026-07-12 部署)

  • 分诊交互(H5+坐席+Dify独立应用) + 拓扑预览(ECharts只读) + 代答排除(4种匹配器)
  • 44文件43测试通过;迁移051;路由顺序铁律:固定路径必须在参数路由前注册

上下文感知智能诊断→修复闭环(2026-07-12 已部署)

  • 三层诊断(API→Script→AI) + 三段排队(VIP→info_locked→not locked) + 答题插队 + 五场景关闭
  • 后端:迁移052(6表+6列) / queue_service / quiz_service / closing_service / seed_quiz / 每日3:00定时生成
  • H5前端:QueueWaiting / RightPanel双Tab / InputBar三态"人工"按钮 / ResolveConfirmCard
  • 坐席前端:pending_close结单流程;信息锁定(Dify步骤完成+有效回答率≥70%)
  • 部署时间2026-07-12 21:24H5前端通过jms_ops.py upload elFinder通道上传7.61MB
  • 验证Queue API 200 / Quiz API 200 / H5页面200+新JS hash / Agent前端v2.3 / Nginx healthy

Dify App改造 + 右边栏v22026-07-12 设计确认 → Phase 1-3 已完成)

  • Dify App现状:85节点→计划精简至~35;保留RAGFlow+Vision节点(后端未接入前不删)
  • 单通道统一消息架构Dify输出JSON {text, action, options} → 后端发两条WSai_reply+dynamic_recommend)→ 文字到聊天气泡/卡片到侧边栏
  • 审批意图优化:删除前端checkApprovalIntent();关键词预过滤收窄(~40→~25);两级分类(4粗→12细);后端统一入口
  • 右边栏v2.1已实施v2.1 2026-07-13:删除软件安装/资源权限标签,全面AI化):
    • 手风琴两大区域:设备信息(默认折叠) / 自助诊断(默认折叠)
    • 智能推荐区域:DynamicRecommend 组件直接展示(无标签栏切换,始终可见)
    • 设备信息:CPU/内存/硬盘默认隐藏(避免焦虑)
    • 自助诊断标签:网络联通/账号权限/设备硬件
  • Phase 1-3 完成状态2026-07-12):
    • Phase 1 Dify Prompt(JSON输出) + 后端blocking+JSON解析+双WS推送 + 错误降级(30s超时/15s still_thinking)
    • Phase 2 :关键词收窄(~25强意图词) + 两级分类Prompt v4.0 + 删除前端checkApprovalIntent
    • Phase 3 WS扩展(ai_thinking+dynamic_recommend) + MessageBubble ai_structured渲染(文字+选项按钮) + RightPanel v2.1(手风琴+智能推荐直接展示) + DynamicRecommend.vue(新建) + sendOptionSelect WS回传
    • Phase 4 VisionService接入(_enrich_image_content+_fetch_recent_employee_text5秒融合) + 图片消息跳过关键词拦截 + 降级策略
    • Phase 5 :坐席端ai_thinking WS+指示器UI + MessageBubble ai_structured/byod_card渲染 + handleNewMessage修复(msg_type/extra_data透传)
    • Phase 6 diagnosis_stage字段(6种值) → closing_service辅助方法 + response_time_ms计时+慢响应告警(>10s)
  • v2.0 新增前端文件DynamicRecommend.vue(动态推荐卡片,3种类型 approval/action/info
  • v2.0 关键架构sendWsMessage() 模块级导出函数(useH5WebSocket.ts),供 store 在 composable 外部发送 WS 消息
  • 实施计划文档docs/02-产品需求/AI对话链路全栈改造实施计划-v1.0.md6阶段Phase 1-610个Task #59-#69跟踪)

运维工具

  • SOPdocs/10-项目管理/IT智能服务台-标准作业流程SOP.md
  • 故障排查:docs/09-部署运维/00-标准故障排查手册.md