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分块上传
This commit is contained in:
+31
-36
@@ -209,35 +209,31 @@ APPROVAL_TEMPLATES: dict[str, dict] = {
|
||||
# 说明:覆盖 12 种审批类型、18 个审批流程的关键词,用于快速过滤非审批消息,
|
||||
# 避免 Dify 被每条消息调用。当 Dify 不可用时降级为关键词匹配。
|
||||
|
||||
# 审批关键词预过滤列表(覆盖 12 种审批类型,用于快速过滤非审批消息)
|
||||
# 审批关键词预过滤列表(v2.0 收窄版 — 2026-07-13)
|
||||
# ------------------------------------------------------------
|
||||
# 设计原则:只保留「强意图词」和「复合专有词」,移除高频泛化词。
|
||||
#
|
||||
# 改造前 ~40 词(含"设备""电脑""邮箱""权限""软件""报修"等),
|
||||
# 几乎覆盖所有 IT 消息 → 预过滤命中率 ~60% → 大量无效 Dify 调用。
|
||||
#
|
||||
# 改造后策略:
|
||||
# - 强意图动词:用户明确表达"申请/提交"意愿时才触发
|
||||
# - 复合专有词:仅在审批场景出现,不会在普通 IT 咨询中出现
|
||||
# - 移除的泛化词(设备/电脑/邮箱/权限/软件/报修/变更/会议室等)
|
||||
# 改由 Dify 意图识别内部判断,不作为预过滤触发条件
|
||||
#
|
||||
# 预期效果:预过滤命中率从 ~60% 降至 ~15%,减少 75% 无效 Dify 调用
|
||||
APPROVAL_PREFILTER_KEYWORDS: list[str] = [
|
||||
# 通用
|
||||
"申请", "资源",
|
||||
# 设备申请
|
||||
"设备", "电脑", "笔记本", "显示器", "资产领用", "资产借用", "资产升级",
|
||||
# 账号权限申请
|
||||
"VPN", "vpn", "账号", "邮箱", "外联", "权限",
|
||||
# 软件服务申请
|
||||
"软件", "业务系统",
|
||||
# 资产处置申请
|
||||
"外修", "报废", "退还",
|
||||
# 办公用品申请
|
||||
"办公用品", "超额",
|
||||
# 会议室故障报修
|
||||
"会议室", "故障报修", "报修",
|
||||
# 企业应用管理
|
||||
"企业应用", "应用管理", "应用开通",
|
||||
# 资产变更确认
|
||||
"资产变更", "变更确认", "变更",
|
||||
# 终端设备网络准入
|
||||
"网络准入", "终端准入", "准入申请",
|
||||
# 活动与会议技术支持
|
||||
"活动支持", "会议支持", "活动技术",
|
||||
# 员工IT支持与故障报修
|
||||
"IT支持", "故障报修",
|
||||
# 公共邮箱账号申请
|
||||
"公共邮箱", "公共账号", "共享邮箱",
|
||||
# 自备电脑补贴(BYOD)— 确保 BYOD 相关消息能被预过滤捕获
|
||||
# === 强意图动词/短语(用户明确表达申请意愿)===
|
||||
"申请", "审批", "提交", "表单", "走流程",
|
||||
"帮我申请", "我要申请", "需要申请", "想申请",
|
||||
# === 复合专有词(仅在审批场景出现,日常 IT 咨询不会用)===
|
||||
"资产领用", "资产借用", "资产升级", "资产变更", "资产处置",
|
||||
"网络准入", "终端准入",
|
||||
"办公用品", "超额领用",
|
||||
"企业应用管理", "应用开通",
|
||||
"公共邮箱", "共享邮箱", "公共账号",
|
||||
"故障报修", "IT支持",
|
||||
"自备电脑", "电脑补贴", "BYOD", "byod",
|
||||
]
|
||||
|
||||
@@ -955,10 +951,12 @@ async def get_approval_keywords():
|
||||
# =============================================================================
|
||||
|
||||
def _keyword_prefilter(text: str) -> bool:
|
||||
"""关键词预过滤:检查文本是否包含审批相关关键词。
|
||||
"""关键词预过滤:检查文本是否包含审批相关关键词(v2.0 收窄版)。
|
||||
|
||||
合并 APPROVAL_TEMPLATES 的 keywords 和 APPROVAL_PREFILTER_KEYWORDS,
|
||||
只要命中任意一个关键词即返回 True,未命中返回 False。
|
||||
v2.0 变更(2026-07-13):
|
||||
- 不再合并 APPROVAL_TEMPLATES 的 keywords(包含"借用""升级""外联"等泛化词)
|
||||
- 仅使用 APPROVAL_PREFILTER_KEYWORDS(强意图词 + 复合专有词)
|
||||
- 模板 keywords 仍保留在 KEYWORD_TO_APPROVAL_TYPE 中,仅用于 Dify 不可用时的降级兜底
|
||||
|
||||
Args:
|
||||
text: 用户消息文本
|
||||
@@ -969,11 +967,8 @@ def _keyword_prefilter(text: str) -> bool:
|
||||
if not text:
|
||||
return False
|
||||
lower_text = text.lower()
|
||||
# 合并 APPROVAL_TEMPLATES 的 keywords 和预定义关键词
|
||||
all_keywords: set[str] = set(APPROVAL_PREFILTER_KEYWORDS)
|
||||
for template in APPROVAL_TEMPLATES.values():
|
||||
all_keywords.update(template.get("keywords", []))
|
||||
return any(kw.lower() in lower_text for kw in all_keywords)
|
||||
# v2.0: 仅使用预过滤关键词列表,不合并模板 keywords
|
||||
return any(kw.lower() in lower_text for kw in APPROVAL_PREFILTER_KEYWORDS)
|
||||
|
||||
|
||||
def _fallback_detect(text: str) -> tuple[bool, float, Optional[str]]:
|
||||
|
||||
Reference in New Issue
Block a user