# 彩票数据分析系统 ## 项目概述 本项目是一个彩票数据分析系统,支持双色球和大乐透的数据管理、统计分析和智能选号功能。系统采用前后端分离架构,提供直观的用户界面和强大的数据分析能力。 ## 技术栈 ### 后端 - Python 3.8+ - FastAPI - SQLAlchemy - PostgreSQL - Pydantic ### 前端 - Vue 3 - Vite - Element Plus - ECharts - Pinia - Vue Router ## 系统功能 1. 数据管理 - 双色球和大乐透历史数据导入 - 数据查询和筛选 - 数据导出 - 手动数据录入 2. 统计分析 - 号码出现频率统计 - 热门号码分析 - 冷门号码分析 - 数据可视化展示 3. 智能选号 - 随机选号 - 频率选号 - 热门号码选号 - 冷门号码选号 ## 项目结构 ``` lottery/ ├── backend/ # 后端代码 │ ├── app/ │ │ ├── api/ # API 路由 │ │ ├── core/ # 核心配置 │ │ ├── models/ # 数据模型 │ │ ├── schemas/ # 数据验证 │ │ └── services/ # 业务逻辑 │ ├── requirements.txt # 依赖包 │ └── main.py # 入口文件 ├── frontend/ # 前端代码 │ ├── src/ │ │ ├── api/ # API 接口 │ │ ├── assets/ # 静态资源 │ │ ├── components/ # 组件 │ │ ├── router/ # 路由配置 │ │ ├── views/ # 页面 │ │ ├── App.vue # 根组件 │ │ └── main.js # 入口文件 │ ├── package.json # 依赖配置 │ └── vite.config.js # Vite 配置 └── README.md # 项目文档 ``` ## 开发环境要求 - Python 3.8+ - Node.js 16+ - PostgreSQL 12+ - npm 或 yarn ## 安装和运行 ### 后端 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. 配置数据库 - 创建 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 ``` ## 使用说明 ### 数据导入与更新说明 #### 数据导入 - 支持通过前端页面或API导入双色球、大乐透历史数据(JSON格式)。 - 导入时,系统会自动根据 `open_time`(开奖日期)升序排序,确保数据库 `id=1` 为最早的开奖数据。 - 导入过程自动去重:只导入数据库中未出现过的开奖日期数据。 - 支持 pandas DataFrame 或 JSON 文件导入。 #### 数据自动/手动更新 - 系统支持从聚合数据API自动获取最新开奖记录。 - 更新逻辑: - 只插入数据库中未出现过的开奖日期(`open_time` 唯一性判断)。 - 插入顺序为开奖日期升序,保证历史数据先入库,最新数据最后入库。 - 日志记录于 `lottery_update.log`。 ##### 手动更新 ```bash cd backend python update_lottery.py ``` ##### 自动定时更新 ```bash cd backend python schedule_update.py ``` 系统会在每天凌晨2点自动检查并更新数据。 #### 其他说明 - 首页、API、前端等所有"最新开奖"展示均以 `open_time` 最大值为准,保证数据准确。 - 数据库不会因期号异常导致遗漏或重复,所有唯一性、顺序均以开奖日期为核心。 ### 数据查询 1. 在查询表单中输入查询条件 2. 点击"查询"按钮 3. 查看查询结果 ### 统计分析 1. 进入统计分析页面 2. 选择要分析的彩票类型 3. 查看统计图表 ### 智能选号 1. 进入智能选号页面 2. 选择彩票类型和选号策略 3. 设置生成注数 4. 点击"生成号码"按钮 ## API 文档 启动后端服务后,访问以下地址查看 API 文档: - Swagger UI: http://localhost:8000/docs - ReDoc: http://localhost:8000/redoc ## 常见问题 1. 数据库连接失败 - 检查数据库服务是否启动 - 验证数据库连接配置是否正确 2. 前端无法连接后端 - 确认后端服务是否正常运行 - 检查前端环境配置中的 API 地址是否正确 3. 数据导入失败 - 检查 JSON 文件格式是否正确 - 确认数据库表结构是否完整 ## 开发计划 - [ ] 添加用户认证功能 - [ ] 实现数据备份和恢复 - [ ] 优化数据导入性能 - [ ] 添加更多统计分析功能 - [ ] 实现自定义选号策略 ## 贡献指南 1. Fork 项目 2. 创建特性分支 3. 提交更改 4. 推送到分支 5. 创建 Pull Request ## 许可证 MIT License ## 数据更新功能 系统支持自动从聚合数据API获取最新的开奖数据并更新到本地数据库。更新功能包括: 1. 手动更新 ```bash cd backend python update_lottery.py ``` 2. 自动更新 ```bash cd backend python schedule_update.py ``` 系统会在每天凌晨2点自动检查并更新数据。 ### 数据更新说明 - 系统会自动检查本地数据库中最新的开奖日期 - 只获取并更新比本地数据更新的开奖记录 - 更新过程会记录日志到 `lottery_update.log` 文件 - 支持双色球和大乐透两种彩票的数据更新 ## 分析功能说明 ### 基础分析策略 #### 1. 冷热号码分析 - 热号:统计近50期出现频率最高的号码 - 冷号:统计超过平均遗漏期数的号码 - API: GET `/api/analysis/hot-cold/{lottery_type}?periods=50` #### 2. 号码分布分析 - 分区统计:将号码划分为多个区间,分析各区出号比例 - 奇偶比:分析奇偶数的分布规律 - 大小比:统计大数和小数的分布规律 - API: GET `/api/analysis/distribution/{lottery_type}?periods=100` #### 3. 连号与重复号分析 - 连号追踪:统计连号出现的频率和位置 - 重复号观察:分析相邻期号码重复情况 - API: GET `/api/analysis/consecutive/{lottery_type}?periods=100` ### 数学理论应用 #### 1. 数学统计特征 - 计算红球总和的历史平均值和标准差 - 分析号码组合的数学特征 - API: GET `/api/analysis/math-stats/{lottery_type}?periods=100` #### 2. 遗漏值分析 - 计算每个号码的当前遗漏值 - 分析历史最大遗漏 - API: GET `/api/analysis/missing/{lottery_type}` ### 智能选号策略 系统提供多种智能选号策略: - 均衡策略:综合考虑号码分布特征 - 热号策略:偏好选择近期高频号码 - 冷号策略:偏好选择遗漏值较大的号码 - 遗漏值策略:基于遗漏值分析选号 - API: GET `/api/analysis/smart-numbers/{lottery_type}?strategy=balanced` ### 使用示例 1. 获取双色球热号冷号分析: ```bash curl http://localhost:8000/api/analysis/hot-cold/ssq?periods=50 ``` 2. 获取大乐透号码分布分析: ```bash curl http://localhost:8000/api/analysis/distribution/dlt?periods=100 ``` 3. 使用均衡策略生成双色球号码: ```bash curl http://localhost:8000/api/analysis/smart-numbers/ssq?strategy=balanced ```