基于 AI 双重量化分析引擎的足球赛事预测平台,支持 App(Android/iOS)、小程序(微信)、H5 三端。
football-prediction-app/
├── App.vue # 应用入口,全局登录守卫
├── main.js # Vue 3 + Pinia + uView Plus 初始化
├── pages.json # 路由 + tabBar + easycom 配置
├── pages/ # 前端页面
│ ├── index/ # 赛事列表(首页)
│ ├── match-detail/ # 赛事详情
│ ├── match-analysis/ # 双重量化分析(核心功能)
│ ├── prediction/ # 预测战绩 & 历史记录
│ ├── subscribe/ # 订阅管理
│ ├── user/ # 个人中心
│ ├── login/ # 登录/注册
│ ├── settings/ # 系统设置
│ └── admin/ # 后台管理
├── components/ # 可复用组件
├── store/ # Pinia 状态管理
├── utils/ # 工具库
│ ├── analysisEngine.js # ★ 双重量化分析引擎
│ ├── calculateKelly.js # 凯利公式仓位计算
│ ├── api.js # API 请求封装
│ ├── auth.js # JWT 认证工具
│ ├── config.js # 配置管理(无密钥)
│ ├── dataCache.js # 3 时段缓存策略
│ ├── dataModels.js # 数据模型 Schema
│ └── AIRequest.js # AI 补全请求
└── server/ # Node.js 后端
├── app.js # Express 入口
├── routes/ # API 路由
│ ├── auth.js # 登录/注册 + JWT 中间件
│ ├── ai.js # AI 补全代理
│ ├── matches.js # 赛事数据(FOOTBALL-DATA.ORG / API-FOOTBALL)
│ ├── prediction.js # 预测结果
│ ├── admin.js # 后台管理 API
│ └── test.js # 连接测试工具
├── db.js # SQLite 数据库层
└── services/
└── dataService.js # 第三方 API 缓存服务
- Node.js >= 18
- npm >= 9
- HBuilderX(可选,用于 App/小程序 调试)
cd server
cp .env.example .env # 编辑 .env 填入配置
npm install
npm run dev # 开发模式(自动重启)编辑 server/.env,以下为必须配置的项:
| 变量 | 说明 | 获取方式 |
|---|---|---|
JWT_SECRET |
JWT 签名密钥 | node -e "console.log(require('crypto').randomBytes(32).toString('hex'))" |
ADMIN_USERNAME |
管理员用户名 | 自行设置 |
ADMIN_PASSWORD |
管理员密码 | 自行设置 |
可选 API 密钥(不配置则使用模拟数据):
| 变量 | 数据源 | 注册地址 |
|---|---|---|
FOOTBALL_DATA_KEY |
赛程/赛果 | https://www.football-data.org/client/register |
API_FOOTBALL_KEY |
实时比分 | https://www.api-football.com/ |
ODDS_API_KEY |
赔率数据 | https://the-odds-api.com/ |
AI_API_KEY |
AI 分析 | OpenAI / DeepSeek 等 |
# 安装依赖
npm install
# H5 开发模式(浏览器访问 http://localhost:5173)
npm run dev:h5# H5 构建
npm run build:h5
# App 构建
npm run build:app
# 微信小程序
npm run build:mp-weixindocker-compose up -d| 引擎 | 输入 | 输出 |
|---|---|---|
| 引擎一(基本面) | xG, 战术风格, 伤病, 体能, 排位 | 修正 xG → Poisson 概率分布 |
| 引擎二(博弈面) | 盘口, 水位, 必发热度, 庄家类型 | Delta 偏离度 + 信息不对称检测 |
| 融合层 | 引擎一 + 引擎二 | 修正概率 + 置信度 + 风险评级 |
- Type I — 信息不对称局(Pinnacle 与市场深度背离)
- Type II — 精算/诱多/阻上局
- Type III — 有效对冲局
- Type IV — 庄家失误局(Smart Money 狙击信号)
基于 1/4 凯利 + 风险分层调节,自动给出推荐仓位百分比。
| 端点 | 方法 | 说明 | 认证 |
|---|---|---|---|
/api/health |
GET | 健康检查 | ❌ |
/api/auth/login |
POST | 登录 | ❌ |
/api/auth/register |
POST | 注册 | ❌ |
/api/user/info |
GET | 用户信息 | ✅ |
/api/user/subscription |
GET | 订阅信息 | ✅ |
/api/matches |
GET | 赛事列表 | ❌ |
/api/matches/live |
GET | 实时赛事 | ❌ |
/api/matches/:id |
GET | 赛事详情 | ❌ |
/api/prediction |
GET | 预测结果 | ❌ |
/api/prediction/batch |
POST | 批量预测 | ❌ |
/api/ai/prompt |
POST | AI 补全 | ❌ |
/api/ai/templates |
GET | 提示词模板 | ❌ |
/api/admin/* |
* | 后台管理 | ✅ admin |
/api/test/ping |
GET | 连通性测试 | ❌ |
/api/test/external |
POST | 外部 API 测试 | ❌ |
| 层 | 技术 |
|---|---|
| 前端框架 | Vue 3 + Vite |
| 跨平台 | UniApp 3.0 |
| 状态管理 | Pinia |
| UI 组件 | uView Plus |
| 后端 | Node.js + Express |
| 数据库 | SQLite (better-sqlite3) |
| 认证 | JWT (jsonwebtoken + bcryptjs) |
| 容器化 | Docker + Docker Compose |
- ✅ API 密钥仅存储在服务端
.env文件中 - ✅ JWT Secret 必须通过环境变量配置,无默认值
- ✅ 管理员账号通过环境变量配置
- ✅ CORS 在生产环境下限制到白名单域名
- ✅ 生产环境禁用调试/模拟登录
MIT License