Files
aiagents-stock/docs/智策定时分析功能完成说明.md

562 lines
14 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 智策定时分析功能完成说明
## ✅ 功能概述
成功为智策板块添加了**定时分析和邮件推送**功能,可以每天自动运行智策分析并将核心结果发送到配置的邮箱。
## 📋 完成内容
### 1. 核心模块开发
#### `sector_strategy_scheduler.py` - 定时任务调度器
**功能**
- ✅ 每日定时分析调度
- ✅ 后台线程运行(daemon线程)
- ✅ 手动触发分析
- ✅ 状态监控和查询
- ✅ 邮件自动发送
- ✅ 错误通知
**核心方法**
```python
# 启动定时任务
sector_strategy_scheduler.start(schedule_time="09:00")
# 停止定时任务
sector_strategy_scheduler.stop()
# 手动触发一次
sector_strategy_scheduler.manual_run()
# 获取状态
status = sector_strategy_scheduler.get_status()
```
**邮件发送实现**
- 使用 `_send_email_direct()` 方法直接发送邮件
- 支持 SMTP/TLS (端口587) 和 SMTP/SSL (端口465)
- 完整的错误处理和日志输出
- 支持UTF-8编码的中文内容
### 2. UI界面集成
#### `sector_strategy_ui.py` - 定时分析设置界面
**新增功能**
- ⏰ 定时分析设置面板(expander)
- 📧 邮件配置状态显示
- ⏱️ 定时时间选择器(time_input
- ▶️ 启动/停止/手动触发按钮
- 📊 运行状态实时显示
- 🔄 测试邮件发送功能
**UI布局**
```
┌─────────────────────────────────────────┐
│ ⏰ 定时分析设置 │
│ ┌───────────────┬──────────────────┐ │
│ │ 邮件配置状态 │ 时间设置 │ │
│ │ ✅/❌ 状态显示│ [09:00] 选择器 │ │
│ │ │ [▶️][⏸️][🔄] │ │
│ └───────────────┴──────────────────┘ │
│ 任务状态: ✅/⏸️ 上次运行: xxx │
└─────────────────────────────────────────┘
```
### 3. 邮件集成修复
#### 问题修复
**原问题**
```python
# 错误调用(不存在的方法)
notification_service.send_email(subject, body)
```
**修复方案**
1. **测试邮件**UI界面):
```python
# 使用现有的 send_test_email() 方法
success, message = notification_service.send_test_email()
```
2. **实际邮件**(定时分析):
```python
# 自定义 _send_email_direct() 方法
def _send_email_direct(self, subject, body):
"""直接发送邮件(参考notification_service的实现)"""
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
config = notification_service.config
msg = MIMEMultipart()
msg['From'] = config['email_from']
msg['To'] = config['email_to']
msg['Subject'] = subject
msg.attach(MIMEText(body, 'plain', 'utf-8'))
# SMTP连接和发送...
```
### 4. 邮件内容格式
#### 智策分析报告邮件
**主题**`智策板块分析报告 - 2024-01-15 09:00`
**正文结构**
```
==========================================================
智策板块策略分析报告
==========================================================
分析时间: 2024-01-15 09:00:00
AI模型: DeepSeek Multi-Agent System
==========================================================
一、板块多空预测
==========================================================
【看多板块】
1. 新能源汽车 (信心度: 8.5/10)
理由: AI新模型带来产业链机会
风险: 短期涨幅较大,注意回调
【看空板块】
1. 地产开发 (信心度: 7.0/10)
理由: 政策压制,成交低迷
风险: 政策变化可能带来反弹
==========================================================
二、板块轮动预测
==========================================================
【当前强势板块】
• 人工智能
轮动逻辑: 政策支持,资金持续流入...
时间窗口: 1-2周
操作建议: 持有龙头,回调加仓
【潜力接力板块】⭐ 重点关注
• 半导体
轮动逻辑: 有望承接资金轮动...
时间窗口: 未来3-5天
操作建议: 关注突破信号
==========================================================
三、板块热度排行
==========================================================
【最热板块 TOP5】
1. 人工智能 - 热度: 95.0分 (🔥升温)
2. 新能源汽车 - 热度: 92.0分 (🔥升温)
3. 半导体 - 热度: 88.0分 (➡️持平)
4. 军工 - 热度: 85.0分 (🔥升温)
5. 医药生物 - 热度: 78.0分 (❄️降温)
==========================================================
四、策略总结
==========================================================
【市场观点】
科技板块延续强势,政策面和资金面支撑明确...
【核心机会】⭐
1. 重点关注人工智能、新能源汽车产业链
2. 半导体板块有轮动潜力,可适度布局
3. 军工板块情绪升温,关注龙头突破
【主要风险】⚠️
1. 地产板块持续低迷,规避相关标的
2. 热门板块短期涨幅较大,注意回调风险
3. 市场波动加大,控制仓位,设置止损
【整体策略】
✓ 持有:人工智能、新能源汽车龙头
✓ 关注:半导体板块轮动机会
✓ 规避:地产、周期等弱势板块
==========================================================
本报告由智策AI系统自动生成并发送
仅供参考,不构成投资建议
==========================================================
```
### 5. 完整文档体系
已创建的文档:
-`智策定时分析使用指南.md` - 详细使用教程
-`智策定时分析部署清单.md` - 部署步骤和故障排查
-`智策功能总览.md` - 功能全景介绍
-`智策定时分析更新日志.md` - 版本历史
-`智策定时分析功能完成说明.md` - 本文档
更新的文档:
-`智策板块使用指南.md` - 添加定时分析章节
-`智策板块快速开始.md` - 添加快速配置步骤
---
## 🎯 使用方法
### 第一步:配置邮件
编辑 `.env` 文件:
```env
EMAIL_ENABLED=true
SMTP_SERVER=smtp.qq.com
SMTP_PORT=587
EMAIL_FROM=your_email@qq.com
EMAIL_PASSWORD=your_authorization_code
EMAIL_TO=receiver@example.com
```
**获取授权码(QQ邮箱)**
1. 登录QQ邮箱网页版
2. 设置 → 账户 → POP3/IMAP/SMTP
3. 开启"IMAP/SMTP服务"
4. 点击"生成授权码"
5. 将授权码填入 `EMAIL_PASSWORD`
### 第二步:测试邮件
1. 启动程序:`streamlit run app.py`
2. 进入"🎯 智策板块"页面
3. 展开"⏰ 定时分析设置"
4. 查看邮件配置状态(应显示 ✅)
5. 点击"📧 测试邮件"按钮
6. 检查收件箱(含垃圾邮件)
### 第三步:启动定时任务
1. 设置运行时间(默认9:00
2. 点击"▶️ 启动定时任务"
3. 系统显示"✅ 定时任务已启动"
4. 等待定时运行或点击"🔄 立即运行一次"
### 第四步:查收邮件
- 每天定时运行后自动发送
- 邮件标题:`智策板块分析报告 - 日期时间`
- 包含核心分析结果
---
## 🔧 技术实现细节
### 1. 定时任务调度
**使用库**`schedule`
```python
# 设置每天09:00运行
schedule.every().day.at("09:00").do(self._run_analysis).tag('sector_strategy')
# 后台线程循环检查
def _schedule_loop(self):
while self.running:
schedule.run_pending()
time.sleep(60) # 每分钟检查一次
```
### 2. 线程管理
**Daemon线程**
```python
self.thread = threading.Thread(target=self._schedule_loop, daemon=True)
self.thread.start()
```
**优势**
- 主程序退出时自动结束
- 不阻塞主线程
- 适合后台任务
### 3. 邮件发送
**SMTP配置**
```python
if config['smtp_port'] == 465:
# SSL连接
server = smtplib.SMTP_SSL(smtp_server, 465, timeout=15)
else:
# TLS连接
server = smtplib.SMTP(smtp_server, 587, timeout=15)
server.starttls()
server.login(email_from, email_password)
server.send_message(msg)
server.quit()
```
### 4. 状态管理
**状态变量**
```python
self.running = False # 是否运行中
self.enabled = False # 是否已启用
self.schedule_time = "09:00" # 运行时间
self.last_run_time = None # 上次运行时间
self.last_result = None # 上次分析结果
```
### 5. 错误处理
**多层异常捕获**
```python
try:
# 1. 数据获取
data = fetcher.get_all_sector_data()
if not data.get("success"):
self._send_error_notification("数据获取失败")
return
# 2. AI分析
result = engine.run_comprehensive_analysis(data)
if not result.get("success"):
self._send_error_notification("AI分析失败")
return
# 3. 邮件发送
self._send_analysis_notification(result)
except Exception as e:
print(f"分析过程出错: {e}")
self._send_error_notification(f"分析异常: {str(e)}")
```
---
## 📊 性能特征
### 资源占用
- **CPU**: 空闲时 <1%,分析时 10-30%
- **内存**: 约 200-500MB
- **网络**: 每次分析约 10-50MB
### 运行时间
- **数据获取**: 10-30秒
- **AI分析**: 60-180秒(取决于模型)
- **邮件发送**: 2-5秒
- **总计**: 约 2-4分钟
### 邮件大小
- **纯文本**: 2-5KB
- **完整报告**: 通常 3-8KB
---
## ⚠️ 注意事项
### 1. 程序需持续运行
- **本地部署**:保持程序运行,电脑不关机
- **服务器部署**:推荐使用Docker或云服务器
- **关闭窗口**:定时任务会停止
### 2. 邮箱限制
- QQ邮箱:每天500封上限
- 163邮箱:每天100封上限
- 智策每天1封不会超限
### 3. 时区和时间
- 使用系统本地时间
- 确保系统时间准确
- 夏令时可能影响运行时间
### 4. 网络依赖
- 需要稳定网络连接
- 数据获取有重试机制(3次)
- SMTP连接超时15秒
### 5. API限流
- AKShare数据有访问限制
- 已内置1秒延迟机制
- 避免手动和定时同时运行
---
## 🐛 故障排查
### 问题1:邮件未收到
**检查项**
1. ✅ .env 文件邮件配置是否完整
2. ✅ 授权码是否正确(不是登录密码)
3. ✅ 邮件配置状态是否显示 ✅
4. ✅ 查看垃圾邮件箱
5. ✅ 检查程序日志是否有错误
**解决方案**
```bash
# 测试邮件配置
点击"📧 测试邮件"按钮,查看是否成功
```
### 问题2:定时任务未运行
**检查项**
1. ✅ 程序是否持续运行
2. ✅ 定时任务状态是否显示"✅ 运行中"
3. ✅ 系统时间是否正确
4. ✅ 查看程序日志
**解决方案**
```bash
# 重新启动定时任务
1. 点击"⏸️ 停止"
2. 点击"▶️ 启动"
3. 点击"🔄 立即运行一次"测试
```
### 问题3ModuleNotFoundError
**错误**`No module named 'schedule'`
**解决方案**
```bash
# 安装依赖
pip install schedule
# 或使用venv环境
.\venv\Scripts\pip.exe install schedule
```
### 问题4:属性错误
**错误**`'NotificationService' object has no attribute 'send_email'`
**原因**:已修复,确保使用最新代码
**验证**
```python
from notification_service import notification_service
print(hasattr(notification_service, 'send_test_email')) # 应该返回 True
```
---
## 🚀 最佳实践
### 1. 推荐运行时间
| 时间 | 场景 | 说明 |
|------|------|------|
| 8:00-8:30 | 盘前策略 | 获取昨日数据,制定当日策略 |
| 16:00-17:00 | 盘后复盘 | 总结当日行情,调整持仓 |
| 21:00-22:00 | 晚间研究 | 深度研读,准备次日操作 |
### 2. 服务器部署
**Docker部署**(推荐):
```dockerfile
# Dockerfile 已存在,直接使用
docker build -t agentsstock .
docker run -d -p 8501:8501 --name agentsstock agentsstock
```
**云服务器部署**
```bash
# 使用 tmux 保持运行
tmux new -s agentsstock
streamlit run app.py
# Ctrl+B, D 分离会话
```
### 3. 配置建议
**邮箱选择**
- 推荐:QQ邮箱、163邮箱(稳定性好)
- 避免:免费邮箱的临时账号
**运行时间**
- 避开交易时段(9:30-15:00
- 选择数据更新完整的时间
- 建议盘前或盘后
### 4. 安全建议
**.env 文件保护**
```bash
# 添加到 .gitignore
echo ".env" >> .gitignore
# 设置文件权限
chmod 600 .env # Linux/Mac
```
**授权码保护**
- 不要分享授权码
- 定期更换授权码
- 不要提交到版本控制
---
## 📈 未来规划
### v1.3.0 (计划中)
- [ ] 多时段定时(一天多次)
- [ ] 微信推送支持(企业微信/Server酱)
- [ ] 自定义邮件模板
- [ ] 分析结果数据库存储
- [ ] 历史分析对比功能
### v1.4.0 (规划中)
- [ ] Web端配置界面优化
- [ ] 移动端邮件格式优化
- [ ] 预警阈值自定义
- [ ] 个性化关注板块
- [ ] 智能推送频率调整
---
## 📚 相关文档索引
### 使用指南
- [智策定时分析使用指南.md](智策定时分析使用指南.md) - 详细教程
- [智策板块快速开始.md](智策板块快速开始.md) - 快速上手
- [智策板块使用指南.md](智策板块使用指南.md) - 完整指南
### 技术文档
- [智策功能总览.md](智策功能总览.md) - 功能介绍
- [智策定时分析部署清单.md](智策定时分析部署清单.md) - 部署步骤
- [智策定时分析更新日志.md](智策定时分析更新日志.md) - 版本历史
### 配置文档
- [环境配置功能说明.md](环境配置功能说明.md) - 环境配置
- [邮件配置指南.md](邮件配置指南.md) - 邮件设置
---
## ✅ 验证清单
完成后请验证:
- [ ] Python 环境正常(Python 3.8+
- [ ] 依赖库已安装(schedule
- [ ] .env 文件已配置
- [ ] 邮件配置状态显示 ✅
- [ ] 测试邮件发送成功
- [ ] 收到测试邮件
- [ ] 定时任务可以启动
- [ ] 手动运行一次成功
- [ ] 收到分析报告邮件
- [ ] 定时任务运行正常
---
## 🎉 总结
智策定时分析功能已全部完成,主要亮点:
1. **自动化运行** - 无需手动触发,每天自动分析
2. **邮件推送** - 核心结果直接发送到邮箱
3. **灵活控制** - 启动/停止/时间设置/手动触发
4. **状态监控** - 实时查看运行状态和历史
5. **完善文档** - 从使用到部署,全面覆盖
现在您可以享受每天自动化的板块策略分析服务了!📧⏰🎯
---
**智策定时分析 v1.2.0** - 让投资策略分析自动化
完成时间:2025-01-15