11 KiB
11 KiB
Webhook功能完成说明
✅ 功能概述
成功为系统添加了Webhook通知功能,支持钉钉和飞书群机器人推送。
📋 完成内容
1. 核心功能实现
✅ notification_service.py - Webhook发送核心
新增功能:
_send_webhook_notification()- Webhook通知分发_send_dingtalk_webhook()- 钉钉消息发送_send_feishu_webhook()- 飞书消息发送send_test_webhook()- 测试Webhook配置get_webhook_config_status()- 获取配置状态
支持特性:
- 📱 钉钉Markdown格式消息
- 📱 飞书交互式卡片消息
- ✅ 自动错误处理和重试
- ✅ 详细日志输出
✅ sector_strategy_scheduler.py - 智策定时分析集成
新增功能:
_send_webhook_direct()- 直接发送webhook_send_dingtalk()- 发送钉钉消息_send_feishu()- 发送飞书消息_format_webhook_summary()- 格式化精简摘要
特点:
- 同时支持邮件和Webhook
- 智能格式化报告(精简版)
- 分别统计发送成功数
- 完善的异常处理
2. 配置管理
✅ config_manager.py - 配置项定义
新增配置:
EMAIL_ENABLED # 邮件通知开关
SMTP_SERVER # SMTP服务器
SMTP_PORT # SMTP端口
EMAIL_FROM # 发件人邮箱
EMAIL_PASSWORD # 邮箱授权码
EMAIL_TO # 收件人邮箱
WEBHOOK_ENABLED # Webhook开关
WEBHOOK_TYPE # Webhook类型(dingtalk/feishu)
WEBHOOK_URL # Webhook地址
特性:
- 支持布尔、文本、密码、选择框类型
- 自动读取和写入.env文件
- 完整的配置验证
✅ app.py - 可视化配置界面
新增UI:
- 第4个标签页:"📢 通知配置"
- 左右分栏布局(邮件 | Webhook)
- 实时配置状态提示
- 完整的帮助说明
交互特性:
- 启用开关自动禁用/启用输入框
- 配置完整性实时检查
- 保存后自动重新加载
- 显示当前.env文件内容
3. 通知集成
✅ 实时监测模块
集成点:monitor_service.py → notification_service.send_notifications()
通知时机:
- ✅ 价格进入进场区间
- ✅ 价格达到止盈位
- ✅ 价格跌破止损位
- ✅ 量化交易执行
发送逻辑:
# 同时尝试Webhook和邮件
if webhook_enabled:
webhook_success = send_webhook()
if email_enabled:
email_success = send_email()
# 至少一个成功即为成功
✅ 智策定时分析
集成点:sector_strategy_scheduler.py → _send_analysis_notification()
通知内容:
- 📊 板块多空预测(信心度≥7)
- 🔄 潜力接力板块(TOP3)
- 🌡️ 板块热度排行(TOP3)
- 💡 核心投资机会
消息格式:
- Webhook:精简版(适合移动端)
- 邮件:完整版(详细分析)
4. 完整文档
✅ 新建文档
- Webhook通知配置指南.md - 完整配置教程
- 平台支持说明
- 钉钉配置步骤
- 飞书配置步骤
- 消息格式示例
- 故障排查指南
- 使用场景推荐
✅ 更新文档
- 环境配置功能说明.md - 添加通知配置章节
- config_manager.py - 配置定义完善
- app.py - UI界面完整
🎯 使用方法
第一步:配置Webhook
方法A:Web界面配置(推荐)
- 进入"⚙️ 环境配置"
- 选择"📢 通知配置"标签页
- 勾选"启用Webhook通知"
- 选择类型(钉钉/飞书)
- 填写Webhook URL
- 点击"💾 保存配置"
方法B:手动编辑.env
WEBHOOK_ENABLED=true
WEBHOOK_TYPE=dingtalk
WEBHOOK_URL=https://oapi.dingtalk.com/robot/send?access_token=xxxxx
第二步:创建机器人
钉钉机器人
- 钉钉群 → 设置 → 智能群助手
- 添加机器人 → 自定义
- 安全设置:自定义关键词(股票、分析、智策)
- 复制Webhook地址
飞书机器人
- 飞书群 → 设置 → 群机器人
- 添加机器人 → 自定义机器人
- 设置名称:AI股票分析系统
- 复制Webhook地址
第三步:测试通知
在实时监测中测试
- 进入"📊 实时监测"
- 滚动到"🔔 通知管理"
- 点击"📱 发送测试Webhook"
- 检查群消息
在智策中测试
- 进入"🎯 智策板块"
- 展开"⏰ 定时分析设置"
- 点击"🔄 立即运行一次"
- 分析完成后查看群消息
📊 消息格式
实时监测通知(钉钉Markdown)
### 股票监测提醒
**股票代码**: 600519
**股票名称**: 贵州茅台
**提醒类型**: 进场提醒
**提醒内容**: 股票价格 1650.00 进入进场区间
**触发时间**: 2024-01-15 10:30:00
---
_此消息由AI股票分析系统自动发送_
智策分析通知(钉钉Markdown)
### 智策板块分析报告
**分析时间**: 2024-01-15 09:00
#### 📊 板块多空
**看多**: 人工智能(8分)、新能源汽车(8分)、半导体(7分)
**看空**: 地产开发(7分)
#### 🔄 潜力接力板块
- 半导体: 关注突破信号
- 军工: 情绪升温,把握机会
#### 🌡️ 热度TOP3
1. 人工智能 - 95分
2. 新能源汽车 - 92分
3. 半导体 - 88分
#### 💡 核心机会
重点关注人工智能、新能源汽车产业链,半导体板块有轮动潜力...
---
*由智策AI系统自动生成*
🔧 技术实现
1. Webhook API调用
钉钉API
import requests
data = {
"msgtype": "markdown",
"markdown": {
"title": "标题",
"text": "Markdown格式内容"
}
}
response = requests.post(webhook_url, json=data, timeout=10)
result = response.json()
success = result.get('errcode') == 0
飞书API
import requests
data = {
"msg_type": "interactive", # 或 "text"
"card": {
# 交互式卡片内容
}
}
response = requests.post(webhook_url, json=data, timeout=10)
result = response.json()
success = result.get('code') == 0
2. 通知流程
触发条件
↓
检查配置
├─ Webhook启用?
│ ├─ 是 → 发送Webhook
│ └─ 否 → 跳过
└─ 邮件启用?
├─ 是 → 发送邮件
└─ 否 → 跳过
↓
记录日志
├─ 成功:✓ 发送成功
├─ 失败:✗ 发送失败 + 错误信息
└─ 跳过:⚠️ 未配置
3. 配置管理
.env文件
↓
config_manager读取
↓
notification_service加载
↓
实时重新加载(dotenv)
↓
Streamlit UI显示
💡 使用场景
场景1:日内交易团队协作
配置:
- 创建钉钉/飞书团队群
- 配置Webhook推送
- 设置实时监测
效果:
- 股票触发 → 群内实时通知
- 团队讨论 → 快速决策
- 消息记录 → 便于复盘
场景2:每日策略推送
配置:
- 启用智策定时分析
- 配置Webhook + 邮件
- 设置每天9:00运行
效果:
- 9:00自动分析 → 策略报告
- Webhook推送 → 快速查看
- 邮件发送 → 详细存档
场景3:个人投资提醒
配置:
- 创建个人钉钉/飞书群
- 仅添加机器人
- 配置实时监测
效果:
- 价格波动 → 手机通知
- 随时随地 → 及时查看
- 不错过 → 投资机会
⚠️ 注意事项
1. 安全配置
钉钉关键词设置
- 推荐:股票、分析、智策、监测
- 系统消息已包含关键词
- 避免使用过于通用的词
Webhook地址保护
- ❌ 不要公开分享
- ❌ 不要提交到版本控制
- ✅ 使用环境变量管理
- ✅ 定期更换地址
2. 消息频率
平台限制:
- 钉钉:20条/分钟
- 飞书:50条/分钟
系统控制:
- 实时监测:重复通知间隔60分钟
- 智策分析:每天1次
- 不会触发限流
3. 网络依赖
- 需要稳定网络连接
- 超时时间:10秒
- 失败不影响核心功能
- 错误会记录日志
4. 配置生效
- 修改配置后需重启应用
- 或使用"💾 保存配置"自动重载
- 建议先测试再正式使用
🐛 故障排查
问题1:未收到Webhook消息
检查清单:
- ✅
WEBHOOK_ENABLED=true - ✅ Webhook URL完整正确
- ✅ 网络连接正常
- ✅ 机器人未被移出群
- ✅ 钉钉关键词设置正确
解决方案:
# 1. 查看系统日志
📱 正在发送钉钉Webhook...
✅ 钉钉Webhook发送成功
# 2. 使用测试功能
点击"📱 发送测试Webhook"
# 3. 检查配置
进入"⚙️ 环境配置" → "📢 通知配置"
问题2:钉钉关键词不匹配
错误信息:errcode: 310000
解决方案:
- 添加关键词:股票、分析、智策
- 系统消息已包含这些词
- 检查是否误删关键词
问题3:飞书消息格式异常
原因:选择了错误的类型
解决方案:
- 确认选择
feishu - 重新保存配置
- 测试验证
📈 功能对比
| 功能 | 邮件通知 | Webhook通知 | 界面通知 |
|---|---|---|---|
| 实时性 | 延迟1-5秒 | 即时推送 | 需打开页面 |
| 详细度 | 完整详细 | 精简摘要 | 简单提示 |
| 查看方式 | 邮箱APP | 钉钉/飞书 | Web界面 |
| 历史记录 | 永久保存 | 群消息历史 | 临时显示 |
| 团队协作 | 转发分享 | 群内讨论 | 单人查看 |
| 移动端 | 邮箱APP | 原生APP | 浏览器 |
| 推荐场景 | 详细存档 | 快速查看 | 即时提示 |
🚀 未来规划
v1.1.0 (计划中)
- 支持多个Webhook URL
- 企业微信机器人支持
- Server酱推送支持
- 消息模板自定义
v1.2.0 (规划中)
- 消息去重和合并
- 智能推送时段设置
- 重要消息@提醒
- 消息统计和分析
📚 相关文档
- Webhook通知配置指南.md - 详细配置教程
- 环境配置功能说明.md - 完整配置说明
- 实时监测优化说明.md - 实时监测功能
- 智策定时分析使用指南.md - 智策功能
✅ 验证清单
完成后请验证:
- Python环境正常
- requests库已安装
- Webhook配置已保存
- 机器人已创建
- 测试Webhook成功
- 收到测试消息
- 实时监测推送正常
- 智策分析推送正常
- 配置界面显示正常
🎉 总结
Webhook通知功能已全面完成,主要特点:
- 双平台支持 - 钉钉和飞书群机器人
- 灵活配置 - Web界面或.env文件
- 全面集成 - 实时监测和智策分析
- 可靠传输 - 错误处理和日志记录
- 完整文档 - 配置指南和故障排查
现在您可以通过钉钉或飞书接收股票分析通知了!📱🔔
Webhook通知功能 - v1.0.0
完成时间:2025-01-15