Files
aiagents-stock/docs/Webhook功能完成说明.md
T

11 KiB
Raw Blame History

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.pynotification_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

方法AWeb界面配置(推荐)

  1. 进入"⚙️ 环境配置"
  2. 选择"📢 通知配置"标签页
  3. 勾选"启用Webhook通知"
  4. 选择类型(钉钉/飞书)
  5. 填写Webhook URL
  6. 点击"💾 保存配置"

方法B:手动编辑.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

### 股票监测提醒

**股票代码**: 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消息

检查清单

  1. WEBHOOK_ENABLED=true
  2. Webhook URL完整正确
  3. 网络连接正常
  4. 机器人未被移出群
  5. 钉钉关键词设置正确

解决方案

# 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 (规划中)

  • 消息去重和合并
  • 智能推送时段设置
  • 重要消息@提醒
  • 消息统计和分析

📚 相关文档


验证清单

完成后请验证:

  • Python环境正常
  • requests库已安装
  • Webhook配置已保存
  • 机器人已创建
  • 测试Webhook成功
  • 收到测试消息
  • 实时监测推送正常
  • 智策分析推送正常
  • 配置界面显示正常

🎉 总结

Webhook通知功能已全面完成,主要特点:

  1. 双平台支持 - 钉钉和飞书群机器人
  2. 灵活配置 - Web界面或.env文件
  3. 全面集成 - 实时监测和智策分析
  4. 可靠传输 - 错误处理和日志记录
  5. 完整文档 - 配置指南和故障排查

现在您可以通过钉钉或飞书接收股票分析通知了!📱🔔


Webhook通知功能 - v1.0.0

完成时间:2025-01-15