bea288e414
== 已部署上线 (9项) == - 代办事项真实数据源集成 (企微审批API 8bug修复链) - H5/坐席端 Logo样式统一+绿色背景 - 视频引导页修复 (localStorage key v2) - 坐席端 v9 Vue版本修复 (ElMessage._context) - 截图按钮 v10 修复 (getDisplayMedia user gesture) - 扫码样式恢复+H5扫码登录跳转修复 - H5截图快捷键提示 == 代码完成待部署 (3项) == - 知识迭代3Bug修复 (#8 POST端点/#7 MERGE幂等/#6 过期检查) - 会议室预定-小鱼易联终端 (40文件, 40/40测试通过) - IT资产升级审批推送 (asset_service.py) == 需求文档 (2项) == - 坐席端AI辅助消息框-PRD (4项新功能确认) - 坐席端布局优化建议 v2.0 (7天计划) == 新增文档 == - 日报-2026-07-11.md - 知识迭代Bug修复报告-20260711.md - 会议室预定-部署指南.md - CHANGELOG.md 更新 == 测试 == - test_todo_integration.py: 40/40 - test_meetingroom.py: 40/40 - test_bugfix_ki_suggestions.py: 21/21
84 lines
3.1 KiB
Python
84 lines
3.1 KiB
Python
# =============================================================================
|
|
# 企微IT智能服务台 — 超时提醒服务
|
|
# =============================================================================
|
|
# 说明:提供发送超时提醒企微消息的功能
|
|
# 在坐席回复后员工长时间未回复时,发送企微提醒消息
|
|
# =============================================================================
|
|
|
|
import logging
|
|
from app.config import settings
|
|
from app.services.wecom_service import WecomService
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
# 跳转链接 - 员工端H5咨询页面
|
|
REMINDER_URL = "https://itsupport.servyou.com.cn/h5/"
|
|
|
|
|
|
async def send_reminder_message(employee_id: str) -> bool:
|
|
"""发送超时提醒企微消息(模板卡片样式)。
|
|
|
|
当坐席回复后员工超过3分钟未回复时,发送企微模板卡片消息提醒员工查看。
|
|
使用 text_notice 类型模板卡片,支持点击跳转按钮。
|
|
|
|
Args:
|
|
employee_id: 员工的企微 UserID
|
|
|
|
Returns:
|
|
bool: 发送是否成功
|
|
|
|
Raises:
|
|
Exception: 发送失败时抛出异常
|
|
"""
|
|
try:
|
|
redis_client = settings.create_redis_client()
|
|
wecom_service = WecomService(redis_client)
|
|
|
|
try:
|
|
# 使用模板卡片消息(text_notice 类型)- 参考企微最佳实践设计
|
|
result = await wecom_service.send_template_card_message(
|
|
user_id=employee_id,
|
|
# 来源区域
|
|
source_desc="IT智能服务台",
|
|
# 主标题区域
|
|
main_title="您的IT咨询即将关闭",
|
|
main_title_desc="请尽快回复坐席,否则咨询将自动结束",
|
|
# 副标题
|
|
sub_title_text="点击下方按钮直接跳转到咨询页面",
|
|
# 高亮区域
|
|
emphasis_title="2分钟",
|
|
emphasis_desc="剩余处理时间",
|
|
# 关键信息列表
|
|
horizontal_content_list=[
|
|
{"keyname": "咨询内容", "value": "IT问题咨询"},
|
|
{"keyname": "坐席状态", "value": "已回复"},
|
|
],
|
|
# 跳转按钮
|
|
jump_list=[
|
|
{
|
|
"type": 1, # 跳转URL
|
|
"title": "立即回复",
|
|
"url": REMINDER_URL,
|
|
}
|
|
],
|
|
# 卡片点击区域
|
|
card_action_url=REMINDER_URL,
|
|
)
|
|
|
|
if result.get("errcode") == 0:
|
|
logger.info(f"超时提醒(模板卡片)发送成功: employee_id={employee_id}")
|
|
return True
|
|
else:
|
|
logger.warning(
|
|
f"超时提醒发送失败: employee_id={employee_id}, "
|
|
f"errcode={result.get('errcode')}, errmsg={result.get('errmsg')}"
|
|
)
|
|
return False
|
|
finally:
|
|
await wecom_service.close()
|
|
await redis_client.close()
|
|
|
|
except Exception as e:
|
|
logger.error(f"发送超时提醒异常: employee_id={employee_id}, error={e}")
|
|
raise
|