增加龙虎榜批量分析功能,修复一些小bug

This commit is contained in:
oficcejo
2025-10-20 15:40:14 +08:00
parent 1bddf393e0
commit b7a8bb10b3
60 changed files with 3579 additions and 883 deletions
+492
View File
@@ -0,0 +1,492 @@
# 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