362 lines
10 KiB
Markdown
362 lines
10 KiB
Markdown
# 彩票数据分析系统
|
||
|
||
## 项目概述
|
||
本项目是一个彩票数据分析系统,支持双色球和大乐透的数据管理、统计分析和智能选号功能。系统采用前后端分离架构,提供直观的用户界面和强大的数据分析能力。
|
||
|
||
## 技术栈
|
||
### 后端
|
||
- 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 |