493 lines
11 KiB
Markdown
493 lines
11 KiB
Markdown
# 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 - 配置项定义
|
||
**新增配置**:
|
||
```python
|
||
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()`
|
||
|
||
**通知时机**:
|
||
- ✅ 价格进入进场区间
|
||
- ✅ 价格达到止盈位
|
||
- ✅ 价格跌破止损位
|
||
- ✅ 量化交易执行
|
||
|
||
**发送逻辑**:
|
||
```python
|
||
# 同时尝试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界面配置(推荐)
|
||
1. 进入"⚙️ 环境配置"
|
||
2. 选择"📢 通知配置"标签页
|
||
3. 勾选"启用Webhook通知"
|
||
4. 选择类型(钉钉/飞书)
|
||
5. 填写Webhook URL
|
||
6. 点击"💾 保存配置"
|
||
|
||
#### 方法B:手动编辑.env
|
||
```env
|
||
WEBHOOK_ENABLED=true
|
||
WEBHOOK_TYPE=dingtalk
|
||
WEBHOOK_URL=https://oapi.dingtalk.com/robot/send?access_token=xxxxx
|
||
```
|
||
|
||
### 第二步:创建机器人
|
||
|
||
#### 钉钉机器人
|
||
1. 钉钉群 → 设置 → 智能群助手
|
||
2. 添加机器人 → 自定义
|
||
3. 安全设置:自定义关键词(股票、分析、智策)
|
||
4. 复制Webhook地址
|
||
|
||
#### 飞书机器人
|
||
1. 飞书群 → 设置 → 群机器人
|
||
2. 添加机器人 → 自定义机器人
|
||
3. 设置名称:AI股票分析系统
|
||
4. 复制Webhook地址
|
||
|
||
### 第三步:测试通知
|
||
|
||
#### 在实时监测中测试
|
||
1. 进入"📊 实时监测"
|
||
2. 滚动到"🔔 通知管理"
|
||
3. 点击"📱 发送测试Webhook"
|
||
4. 检查群消息
|
||
|
||
#### 在智策中测试
|
||
1. 进入"🎯 智策板块"
|
||
2. 展开"⏰ 定时分析设置"
|
||
3. 点击"🔄 立即运行一次"
|
||
4. 分析完成后查看群消息
|
||
|
||
---
|
||
|
||
## 📊 消息格式
|
||
|
||
### 实时监测通知(钉钉Markdown)
|
||
|
||
```markdown
|
||
### 股票监测提醒
|
||
|
||
**股票代码**: 600519
|
||
|
||
**股票名称**: 贵州茅台
|
||
|
||
**提醒类型**: 进场提醒
|
||
|
||
**提醒内容**: 股票价格 1650.00 进入进场区间
|
||
|
||
**触发时间**: 2024-01-15 10:30:00
|
||
|
||
---
|
||
|
||
_此消息由AI股票分析系统自动发送_
|
||
```
|
||
|
||
### 智策分析通知(钉钉Markdown)
|
||
|
||
```markdown
|
||
### 智策板块分析报告
|
||
**分析时间**: 2024-01-15 09:00
|
||
|
||
#### 📊 板块多空
|
||
**看多**: 人工智能(8分)、新能源汽车(8分)、半导体(7分)
|
||
**看空**: 地产开发(7分)
|
||
|
||
#### 🔄 潜力接力板块
|
||
- 半导体: 关注突破信号
|
||
- 军工: 情绪升温,把握机会
|
||
|
||
#### 🌡️ 热度TOP3
|
||
1. 人工智能 - 95分
|
||
2. 新能源汽车 - 92分
|
||
3. 半导体 - 88分
|
||
|
||
#### 💡 核心机会
|
||
重点关注人工智能、新能源汽车产业链,半导体板块有轮动潜力...
|
||
|
||
---
|
||
*由智策AI系统自动生成*
|
||
```
|
||
|
||
---
|
||
|
||
## 🔧 技术实现
|
||
|
||
### 1. Webhook API调用
|
||
|
||
#### 钉钉API
|
||
```python
|
||
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
|
||
```python
|
||
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消息
|
||
|
||
**检查清单**:
|
||
1. ✅ `WEBHOOK_ENABLED=true`
|
||
2. ✅ Webhook URL完整正确
|
||
3. ✅ 网络连接正常
|
||
4. ✅ 机器人未被移出群
|
||
5. ✅ 钉钉关键词设置正确
|
||
|
||
**解决方案**:
|
||
```bash
|
||
# 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](Webhook通知配置指南.md) - 详细配置教程
|
||
- [环境配置功能说明.md](环境配置功能说明.md) - 完整配置说明
|
||
- [实时监测优化说明.md](实时监测优化说明.md) - 实时监测功能
|
||
- [智策定时分析使用指南.md](智策定时分析使用指南.md) - 智策功能
|
||
|
||
---
|
||
|
||
## ✅ 验证清单
|
||
|
||
完成后请验证:
|
||
|
||
- [ ] Python环境正常
|
||
- [ ] requests库已安装
|
||
- [ ] Webhook配置已保存
|
||
- [ ] 机器人已创建
|
||
- [ ] 测试Webhook成功
|
||
- [ ] 收到测试消息
|
||
- [ ] 实时监测推送正常
|
||
- [ ] 智策分析推送正常
|
||
- [ ] 配置界面显示正常
|
||
|
||
---
|
||
|
||
## 🎉 总结
|
||
|
||
Webhook通知功能已全面完成,主要特点:
|
||
|
||
1. **双平台支持** - 钉钉和飞书群机器人
|
||
2. **灵活配置** - Web界面或.env文件
|
||
3. **全面集成** - 实时监测和智策分析
|
||
4. **可靠传输** - 错误处理和日志记录
|
||
5. **完整文档** - 配置指南和故障排查
|
||
|
||
现在您可以通过钉钉或飞书接收股票分析通知了!📱🔔
|
||
|
||
---
|
||
|
||
**Webhook通知功能** - v1.0.0
|
||
|
||
完成时间:2025-01-15
|
||
|