mottery/README.md

362 lines
10 KiB
Markdown
Raw 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.

# 彩票数据分析系统
## 项目概述
本项目是一个彩票数据分析系统,支持双色球和大乐透的数据管理、统计分析和智能选号功能。系统采用前后端分离架构,提供直观的用户界面和强大的数据分析能力。
## 技术栈
### 后端
- Python 3.8+
- FastAPI
- SQLAlchemy
- MySQL/PostgreSQL
- Pydantic
- Scikit-learn (机器学习)
- NumPy (数值计算)
- Pandas (数据处理)
- Schedule (定时任务)
### 前端
- Vue 3
- Vite
- Element Plus
- ECharts
- Pinia
- Vue Router
## 系统功能
### 1. 数据管理
- 双色球和大乐透历史数据导入
- 数据查询和筛选
- 数据导出
- 手动数据录入
- **自动数据更新** ⭐ 新功能
- **定时任务系统** ⭐ 新功能
### 2. 基础统计分析
- 号码出现频率统计
- 热门号码分析
- 冷门号码分析
- 数据可视化展示
### 3. 高级数据分析 ⭐ 新功能
- **遗漏值分析**: 分析各号码的遗漏期数
- **和值分析**: 统计红球和值的分布规律
- **AC值分析**: 邻号差值分析
- **质合比分析**: 质数与合数的比例分析
- **012路分析**: 除3余数分析
- **跨度分析**: 最大最小号码差值分析
- **综合分析**: 多维度数据整合分析
### 4. 智能预测系统 ⭐ 新功能
- **机器学习预测**: 基于历史数据的AI预测
- **模式预测**: 基于统计模式的预测
- **集成预测**: 多方法综合预测
- **预测模型训练**: 可自定义训练参数
- **预测结果评估**: 预测准确率统计
- **每日拼盘推荐**: 定时生成推荐号码 ⭐ 新功能
### 5. 智能选号
- 随机选号
- 频率选号
- 热门号码选号
- 冷门号码选号
- 自定义选号策略
### 6. 定时任务系统 ⭐ 新功能
- **每天早上6点**: 自动更新开奖数据
- **每天下午5点**: 自动生成拼盘推荐
- **任务状态监控**: 实时查看任务执行状态
- **日志记录**: 详细的任务执行日志
## 项目结构
```
lottery/
├── backend/ # 后端代码
│ ├── app/
│ │ ├── api/ # API 路由
│ │ │ ├── endpoints/ # 基础API端点
│ │ │ └── v1/ # API版本1
│ │ ├── core/ # 核心配置
│ │ ├── models/ # 数据模型
│ │ ├── schemas/ # 数据验证
│ │ └── services/ # 业务逻辑
│ │ ├── analysis_service.py # 基础分析服务
│ │ ├── advanced_analysis.py # 高级分析服务 ⭐
│ │ └── prediction_service.py # 预测服务 ⭐
│ ├── requirements.txt # 依赖包
│ ├── main.py # 入口文件
│ ├── scheduler.py # 定时任务调度器 ⭐
│ └── update_lottery.py # 数据更新脚本
├── frontend/ # 前端代码
│ ├── src/
│ │ ├── api/ # API 接口
│ │ ├── assets/ # 静态资源
│ │ ├── components/ # 组件
│ │ ├── router/ # 路由配置
│ │ ├── views/ # 页面
│ │ │ ├── AdvancedAnalysis.vue # 高级分析页面 ⭐
│ │ │ ├── NumberGenerator.vue # 一键下单页面 ⭐
│ │ │ └── Prediction.vue # 预测页面 ⭐
│ │ ├── App.vue # 根组件
│ │ └── main.js # 入口文件
│ ├── package.json # 依赖配置
│ └── vite.config.js # Vite 配置
└── README.md # 项目文档
```
## 开发环境要求
- Python 3.8+
- Node.js 16+
- MySQL 8.0+ 或 PostgreSQL 12+
- npm 或 yarn
## 安装和运行
### 快速启动 ⭐ 推荐
使用一键启动脚本(推荐方式):
```bash
# 确保已安装Python 3.8+和Node.js 16+
python start_system.py
```
脚本会自动:
- 检查Python版本和依赖
- 检查数据库连接
- 询问是否启动定时任务
- 启动后端服务端口8000
- 启动前端服务端口5173
- 启动定时任务调度器(可选)
- 显示访问地址和使用说明
### 手动启动
#### 后端
1. 创建虚拟环境
```bash
python -m venv venv
source venv/bin/activate # Linux/Mac
venv\Scripts\activate # Windows
```
2. 安装依赖
```bash
cd backend
pip install -r requirements.txt
```
3. 配置数据库
- 创建 MySQL/PostgreSQL 数据库
- 修改 `backend/app/core/database.py` 中的数据库连接配置
4. 启动服务
```bash
uvicorn main:app --reload --host 0.0.0.0 --port 8000
```
#### 前端
1. 安装依赖
```bash
cd frontend
npm install
```
2. 启动开发服务器
```bash
npm run dev
```
3. 构建生产版本
```bash
npm run build
```
#### 定时任务 ⭐ 新功能
```bash
cd backend
python scheduler.py
```
## 使用说明
### 定时任务系统 ⭐ 新功能
#### 自动任务
系统提供两个定时任务:
1. **每天早上6点 - 数据更新任务**
- 自动从API获取最新开奖数据
- 更新双色球和大乐透数据
- 检查历史投注的中奖情况
- 记录详细执行日志
2. **每天下午5点 - 拼盘推荐任务**
- 自动生成今日拼盘推荐
- 使用集成预测算法
- 生成4注推荐号码
- 保存到数据库供前端显示
#### 手动启动定时任务
```bash
cd backend
python scheduler.py
```
#### 查看任务状态
- 在一键下单页面查看定时任务状态
- 显示下次执行时间
- 显示今日推荐生成状态
#### 任务日志
- 日志文件:`backend/lottery_scheduler.log`
- 包含详细的执行记录和错误信息
### 数据导入与更新说明
#### 数据导入
- 支持通过前端页面或API导入双色球、大乐透历史数据JSON格式
- 导入时,系统会自动根据 `open_time`(开奖日期)升序排序,确保数据库 `id=1` 为最早的开奖数据。
- 导入过程自动去重:只导入数据库中未出现过的开奖日期数据。
- 支持 pandas DataFrame 或 JSON 文件导入。
#### 数据自动/手动更新 ⭐ 新功能
- **定时更新**: 每天早上6点自动更新推荐
- **前端更新功能**: 在首页提供"补红蓝球煎饼"、"补大乐斗豆浆"、"补全场早点"三个按钮
- **API更新接口**: 支持通过API接口更新数据
- `POST /api/v1/lottery/update/ssq` - 更新双色球数据
- `POST /api/v1/lottery/update/dlt` - 更新大乐透数据
- `POST /api/v1/lottery/update/all` - 更新所有彩票数据
- 更新逻辑:
- 从聚合数据API自动获取最新开奖记录
- 只插入数据库中未出现过的开奖日期(`open_time` 唯一性判断)
- 插入顺序为开奖日期升序,保证历史数据先入库,最新数据最后入库
- 实时显示更新结果和新增记录数量
- 更新完成后自动刷新首页最新开奖信息
##### 手动更新
```bash
cd backend
python update_lottery.py
```
##### 自动定时更新
```bash
cd backend
python scheduler.py
```
系统会在每天凌晨6点自动检查并更新数据。
### 拼盘推荐系统 ⭐ 新功能
#### 自动推荐
- **定时生成**: 每天下午5点自动生成
- **智能算法**: 使用集成预测算法
- **多注推荐**: 每次生成4注推荐号码
- **类型轮换**: 根据日期自动选择彩票类型
#### 手动生成
- 在一键下单页面点击"来一份拼盘"按钮
- 实时生成推荐号码
- 支持复制所有号码
#### 推荐历史
- 查看历史推荐记录
- 显示中奖情况
- 支持手动检查中奖
### 高级分析功能 ⭐
1. 进入"高级分析"页面
2. 选择彩票类型(双色球/大乐透)
3. 选择分析类型:
- **遗漏值分析**: 查看各号码的遗漏期数
- **和值分析**: 分析红球和值的分布规律
- **AC值分析**: 邻号差值分析
- **质合比分析**: 质数与合数的比例分析
- **012路分析**: 除3余数分析
- **跨度分析**: 最大最小号码差值分析
- **综合分析**: 多维度数据整合分析
### 智能预测功能 ⭐
1. 进入"智能预测"页面
2. 选择彩票类型
3. 选择预测方法:
- **机器学习预测**: 基于历史数据的AI预测
- **模式预测**: 基于统计模式的预测
- **集成预测**: 多方法综合预测
4. 设置训练参数
5. 查看预测结果
## API文档
启动后端服务后,访问 http://localhost:8000/docs 查看完整的API文档。
## 常见问题
### 定时任务相关
**Q: 定时任务没有执行?**
A: 检查以下几点:
1. 确保定时任务进程正在运行
2. 检查日志文件 `backend/lottery_scheduler.log`
3. 确认系统时间正确
4. 检查数据库连接是否正常
**Q: 如何修改定时任务时间?**
A: 编辑 `backend/scheduler.py` 文件中的时间设置:
```python
schedule.every().day.at("06:00").do(self.update_lottery_data_job)
schedule.every().day.at("17:00").do(self.generate_daily_recommendations_job)
```
**Q: 如何查看任务执行日志?**
A: 查看日志文件:
```bash
tail -f backend/lottery_scheduler.log
```
### 数据更新相关
**Q: 数据更新失败?**
A: 检查以下几点:
1. 网络连接是否正常
2. API密钥是否有效
3. 数据库连接是否正常
4. 查看后端日志获取详细错误信息
**Q: 如何手动更新数据?**
A: 可以通过以下方式:
1. 前端页面点击更新按钮
2. 调用API接口
3. 运行更新脚本:`python update_lottery.py`
### 拼盘推荐相关
**Q: 今日推荐没有生成?**
A: 检查以下几点:
1. 定时任务是否正常运行
2. 是否有足够的历史数据
3. 预测模型是否训练完成
4. 查看日志文件获取错误信息
**Q: 如何手动生成推荐?**
A: 在一键下单页面点击"来一份拼盘"按钮即可手动生成。
## 更新日志
### v1.1.0 (2024-01-XX)
- ✨ 新增定时任务系统
- ✨ 新增每日拼盘推荐功能
- ✨ 新增任务状态监控
- ✨ 优化一键下单页面
- 🐛 修复图表显示问题
- 📝 更新使用说明
### v1.0.0 (2024-01-XX)
- 🎉 初始版本发布
- ✨ 基础数据管理功能
- ✨ 统计分析功能
- ✨ 高级分析功能
- ✨ 智能预测功能
- ✨ 前端可视化界面
## 贡献指南
欢迎提交Issue和Pull Request来改进这个项目。
## 许可证
MIT License