# 企业微信语义路由 ## 调用链 企业微信文本消息统一经过: 1. 回调验签、解密和消息去重。 2. DeepSeek 只输出结构化意图和日期参数。 3. 后端根据意图选择预注册的白名单处理器。 4. 处理器根据企业微信 UserID 调用对应业务接口。 5. 后端将结构化结果格式化成企业微信文本并发送。 6. 主消息发送成功后,再按登记顺序发送 Excel 等附件;附件不会先于业务回复出现。 模型不能输出或调用任意 URL,也不能传入校区、顾问或权限范围。业务接口仍会根据企业微信 UserID 做最终权限校验。 ## 已支持意图 ### CUSTOMER_DAILY_REPORT - 示例:`查看今日客资管理日报` - 支持:今日、昨日、本周、上周、本月、上月、明确的单日或日期范围。 - 调用:`POST /api/crm/daily-report` - 请求参数:`startDate`、`endDate`、`wecomUserId` ### EC_CALL_COMPLIANCE_DAILY_REPORT - 示例:`查看今日EC电话合规监控日报` - 支持:今日、昨日、本周、上周、本月、上月、指定月份或明确日期范围;单次最多 31 天。 - 调用:`POST /api/ec/call-compliance/daily-report` - Excel 下载:`POST /api/ec/call-compliance/daily-report/excel` - 请求参数:`startDate`、`endDate`、`wecomUserId` - 指标:外呼总量、接通率、有效通话与时长、录音覆盖率、AI 质检、敏感词预警。 - 人员链路:企业微信 UserID → 本地学邦账号映射 → EC 员工账号;管理层再按企业微信授权组织匹配 EC 部门。 - 明细权限:管理员、区域总和城市总按运动馆汇总;馆长按本馆人员展示;顾问和教练仅展示本人。 - 企业微信返回:日报汇总指标全部通过消息回复,Excel 不再包含“日报汇总”页;管理员附件只保留“运动馆明细”,馆长附件只保留“人员明细”。 - 账号风控暂未启用。 ### 学员预警名单附件 - 课时预警和高频缺勤名单超过聊天展示上限时,统一发送 `.xlsx`,不再发送 `.txt`。 - 日期、接收人、预警数量和运动馆数量通过企业微信消息展示。 - Excel 只保留详细名单,按运动馆、学员和预警类型逐行展示剩余课时、排课及缺勤次数。 - 对发起推送指令的用户,先发送“推送完成”消息,再发送 Excel;其他馆长仍按“预警说明 → Excel”顺序接收。 ## 扩展新意图 新增一个 Spring Bean,实现 `SemanticIntentHandler`: ```java @Component public class ExampleIntentHandler implements SemanticIntentHandler { public String intent() { return "EXAMPLE_INTENT"; } public String description() { return "意图用途和触发语义"; } public String example() { return "企业微信中的示例问法"; } public String handle(SemanticRequestContext context, SemanticRecognition recognition) { return "处理结果"; } } ``` 处理器会自动加入 DeepSeek 可选意图目录和后端路由表,不需要修改中心 `switch`。如果意图重复,应用启动时直接失败,避免路由覆盖。 ## 容错 - DeepSeek 暂时不可用或返回非 JSON 时,已知高频指令可以走受限关键词兜底。 - 低于置信度阈值或未知意图不会调用业务接口,只返回支持的示例。 - 人员未映射或不在组织权限范围内时,日报服务返回 403,企业微信显示“无权限查看”。