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