增加龙虎榜批量分析功能,修复一些小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
@@ -0,0 +1,251 @@
# Webhook自定义关键词功能说明
## 功能概述
系统现已支持自定义Webhook关键词配置,用户可以根据自己的钉钉/飞书机器人安全设置灵活配置关键词。
## 配置方法
### 1. 在.env文件中配置
```env
# ========== Webhook通知配置(可选)==========
WEBHOOK_ENABLED="true"
WEBHOOK_TYPE="dingtalk"
WEBHOOK_URL="https://oapi.dingtalk.com/robot/send?access_token=YOUR_TOKEN"
WEBHOOK_KEYWORD="aiagents通知"
```
### 2. 配置说明
| 配置项 | 说明 | 示例 |
|-------|------|------|
| WEBHOOK_ENABLED | 是否启用Webhook | true / false |
| WEBHOOK_TYPE | Webhook类型 | dingtalk(钉钉)/ feishu(飞书)|
| WEBHOOK_URL | Webhook地址 | 机器人Webhook完整URL |
| WEBHOOK_KEYWORD | 自定义关键词 | aiagents通知(或您机器人设置的任何关键词)|
## 钉钉机器人关键词设置
### 步骤1:创建钉钉自定义机器人
1. 打开钉钉群聊
2. 点击右上角"..." → 机器人 → 添加机器人
3. 选择"自定义"机器人
### 步骤2:安全设置
1. 安全设置选择:**自定义关键词**
2. 输入关键词:**aiagents通知**(或您自己定义的关键词)
3. 复制Webhook地址
![钉钉关键词设置](https://user-images.githubusercontent.com/...)
### 步骤3:配置到系统
将关键词和Webhook地址配置到`.env`文件中:
```env
WEBHOOK_KEYWORD="aiagents通知"
WEBHOOK_URL="https://oapi.dingtalk.com/robot/send?access_token=YOUR_TOKEN"
```
**重要提示**
- `.env`文件中的关键词必须与钉钉机器人设置的关键词完全一致
- 如果不匹配,消息将发送失败
- 如果关键词为空,则不会在消息中添加关键词前缀
## 飞书机器人配置
飞书机器人通常不需要关键词,可以将WEBHOOK_KEYWORD留空或使用默认值:
```env
WEBHOOK_TYPE="feishu"
WEBHOOK_KEYWORD=""
```
## 消息格式
### 钉钉消息示例
**有关键词时:**
```markdown
标题:aiagents通知 - 000001 平安银行
### aiagents通知 - 股票监测提醒
**股票代码**: 000001
**股票名称**: 平安银行
...
```
**无关键词时:**
```markdown
标题:000001 平安银行
### 股票监测提醒
**股票代码**: 000001
**股票名称**: 平安银行
...
```
## 测试配置
配置完成后,运行测试工具验证:
```bash
# Windows
.\venv\Scripts\python.exe test_notification_config.py
# Linux/Mac
python test_notification_config.py
```
**成功输出示例:**
```
============================================================
[Webhook] 测试Webhook配置
============================================================
当前配置:
- 启用状态: [已启用]
- Webhook类型: dingtalk
- 配置完整性: [完整]
[钉钉] 正在发送Webhook...
[成功] 钉钉Webhook发送成功
[成功] 钉钉Webhook测试成功!请检查钉钉群消息。
```
## 常见问题
### Q1: 提示"关键词不匹配"
**原因**
- .env文件中的WEBHOOK_KEYWORD与钉钉机器人设置不一致
- .env文件编码问题导致关键词乱码
**解决方案**
1. 检查钉钉机器人的关键词设置
2. 确保.env文件使用UTF-8编码
3. 运行`fix_env.py`重新生成.env文件:
```bash
python fix_env.py
```
### Q2: .env文件中文显示乱码
**原因**
文件编码不是UTF-8
**解决方案**
运行修复脚本:
```bash
python fix_env.py
```
### Q3: 如何修改关键词
**方法1:直接编辑.env文件**
1. 用支持UTF-8的编辑器(VS Code、Notepad++等)打开.env
2. 修改WEBHOOK_KEYWORD的值
3. 保存为UTF-8编码
**方法2:使用环境配置界面**
1. 启动应用
2. 进入"环境配置"页面
3. 修改"Webhook自定义关键词"
4. 保存配置
**方法3:使用配置管理器**
```python
from config_manager import config_manager
# 读取当前配置
config = config_manager.read_env()
# 修改关键词
config['WEBHOOK_KEYWORD'] = '您的新关键词'
# 保存配置
config_manager.write_env(config)
```
### Q4: 是否可以不使用关键词
**可以!**
如果您的钉钉机器人使用其他安全方式(如加签、IP白名单),可以将关键词设为空:
```env
WEBHOOK_KEYWORD=""
```
系统会自动检测,如果关键词为空,则不会在消息中添加关键词前缀。
## 更新日志
### v1.1 (2025-10-14)
- ✅ 新增WEBHOOK_KEYWORD配置项
- ✅ 支持自定义关键词
- ✅ 修复.env文件中文编码问题
- ✅ 优化消息格式,去除多余空格
- ✅ 提供fix_env.py工具修复编码问题
### v1.0 (2025-10-14)
- ✅ 初始版本
- ✅ 硬编码"aiagents通知"关键词
## 相关文件
- `.env` - 环境配置文件
- `.env.example` - 配置模板
- `fix_env.py` - 编码修复工具
- `config_manager.py` - 配置管理模块
- `notification_service.py` - 通知服务模块
- `sector_strategy_scheduler.py` - 定时任务模块
- `test_notification_config.py` - 测试工具
## 技术实现
### 配置读取流程
```python
# 1. 从环境变量读取
import os
from dotenv import load_dotenv
load_dotenv()
keyword = os.getenv('WEBHOOK_KEYWORD', 'aiagents通知')
# 2. 在notification_service中使用
class NotificationService:
def _load_config(self):
config['webhook_keyword'] = os.getenv('WEBHOOK_KEYWORD')
def _send_dingtalk_webhook(self, notification):
keyword = self.config.get('webhook_keyword', '')
title_prefix = f"{keyword} - " if keyword else ""
# ...构建消息
```
### 消息构建逻辑
```python
# 如果有关键词
if keyword:
title = f"{keyword} - {notification['symbol']} {notification['name']}"
text = f"### {keyword} - 股票监测提醒\n..."
else:
title = f"{notification['symbol']} {notification['name']}"
text = f"### 股票监测提醒\n..."
```
## 总结
现在系统完全支持自定义Webhook关键词,用户可以根据自己的需求灵活配置:
**灵活性**:支持任意自定义关键词
**兼容性**:支持钉钉和飞书
**易用性**:简单配置即可使用
**稳定性**:自动处理编码问题
祝您使用愉快!