# 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

