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