You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
7.1 KiB
7.1 KiB
A股智投分析平台 - 后端实现总结
概述
根据 docs/08-待办事项.md 的要求,已完成后端核心架构和服务的实现。以下是详细总结:
已完成的功能
1. 后端基础架构 ✅
技术栈:
- Node.js 20.x LTS
- Express 4.x
- TypeScript 5.x
- Prisma ORM
- Socket.io (WebSocket)
- MySQL 8.0
- Redis 7
目录结构:
app/backend/
├── src/
│ ├── config/ # 配置(数据库、Redis、环境变量)
│ ├── controllers/ # 控制器(市场、版块、股票、用户)
│ ├── services/ # 业务逻辑(数据同步、计算服务)
│ ├── routes/ # 路由定义
│ ├── middleware/ # 中间件(认证、限流、错误处理、日志)
│ ├── utils/ # 工具函数(均线计算、技术指标、格式化、验证)
│ ├── websocket/ # WebSocket 服务
│ ├── jobs/ # 定时任务
│ ├── types/ # TypeScript 类型定义
│ └── app.ts # 应用入口
├── prisma/
│ ├── schema.prisma # 数据库模型
│ └── seed.ts # 种子数据
├── docker-compose.yml # Docker 编排
├── Dockerfile # Docker 镜像
├── package.json
├── tsconfig.json
└── README.md
2. 数据库模型 ✅
Prisma Schema 包含以下模型:
MarketIndex- 市场指数Sector- 版块信息SectorQuote- 版块行情SectorKLine- 版块K线Stock- 股票信息StockQuote- 股票行情StockKLine- 股票K线User- 用户信息UserFavorite- 用户自选股HighLowStock- 新高新低记录MomentumStock- 动量股票推荐
3. API 接口实现 ✅
市场数据接口:
GET /api/v1/market/indices- 获取市场指数GET /api/v1/market/updown-stats- 获取涨跌家数统计GET /api/v1/market/price-distribution- 获取涨跌幅分布
版块数据接口:
GET /api/v1/sectors- 获取版块列表GET /api/v1/sectors/:sector_code- 获取版块详情GET /api/v1/sectors/:sector_code/rank-history- 获取版块历史排名GET /api/v1/sectors/:sector_code/stocks- 获取版块内股票GET /api/v1/sectors/:sector_code/momentum-stocks- 获取版块内动量股票GET /api/v1/sectors/:sector_code/kline- 获取版块K线
股票数据接口:
GET /api/v1/stocks/search- 搜索股票GET /api/v1/stocks/:stock_code- 获取股票详情GET /api/v1/stocks/:stock_code/kline- 获取股票K线GET /api/v1/stocks/new-high- 获取新高股票GET /api/v1/stocks/new-low- 获取新低股票GET /api/v1/stocks/momentum-recommendation- 获取动量股推荐
用户接口:
POST /api/v1/users/register- 用户注册POST /api/v1/users/login- 用户登录GET /api/v1/users/profile- 获取用户信息GET /api/v1/users/favorites- 获取自选股POST /api/v1/users/favorites- 添加自选股DELETE /api/v1/users/favorites/:stock_code- 删除自选股
4. WebSocket 实时数据服务 ✅
功能:
- Socket.io 实时连接管理
- 频道订阅/取消订阅机制
- 股票行情实时推送
- 版块行情实时推送
- 市场概览广播
- 涨跌家数统计广播
- 基于 IP 的连接限流
- 自动重连机制
协议:
// 订阅
{ action: 'subscribe', channels: ['stock:000001', 'sector:880491'] }
// 推送数据格式
{
channel: 'stock:000001',
type: 'quote',
data: { price, change, changePercent, volume, ... },
time: '2024-01-15T14:30:00Z'
}
5. 数据同步服务 ✅
定时任务:
- 每3秒同步实时行情(交易时间)
- 每分钟同步版块行情
- 每小时同步市场指数
- 每小时同步热门股票K线数据
- 每日收盘后计算版块排名(15:05)
- 每日收盘后全量同步(15:10)
数据源:
- AKShare(A股免费数据源)
- 支持实时行情、K线数据、版块数据
6. 计算服务 ✅
技术指标计算:
- 均线计算(MA5/MA10/MA20/MA30/MA60)
- EMA(指数移动平均)
- MACD 计算
- KDJ 计算
- RSI 计算(6/12/24周期)
评分计算:
- 动量分数计算
- 版块动量分数
- 综合评分算法
7. 中间件 ✅
认证与授权:
- JWT Token 认证
- 用户登录/注册
- 可选认证中间件
限流:
- 通用限流(100次/分钟/IP)
- 严格限流(敏感操作)
- 登录限流(5次/15分钟)
- API 限流(登录用户1000次/分钟)
- WebSocket 连接限流
错误处理:
- 全局错误处理
- 自定义错误类
- Zod 参数验证
- 异步路由包装器
日志:
- Winston 日志系统
- 按天轮转
- 请求日志
- 慢请求检测
8. Docker 部署配置 ✅
Dockerfile:
- 多阶段构建
- 生产环境优化
- 健康检查
Docker Compose:
- MySQL 8.0 数据库
- Redis 7 缓存
- Node.js 应用服务
- AKShare 数据服务(可选)
- 自动健康检查
9. 前端 API 客户端 ✅
文件: app/src/services/api.ts
功能:
- REST API 封装(marketApi, sectorApi, stockApi, userApi)
- WebSocket 客户端封装
- 自动错误处理
- JWT Token 注入
- 类型安全的 API 调用
快速开始
1. 启动后端服务
cd app/backend
# 安装依赖
npm install
# 配置环境变量
cp .env.example .env
# 编辑 .env 配置数据库连接
# 数据库迁移
npx prisma migrate dev --name init
npx prisma db seed
# 开发模式
npm run dev
2. Docker 一键启动
cd app/backend
docker-compose up -d
3. 访问 API
环境变量
# 服务器配置
PORT=3000
NODE_ENV=development
# 数据库
DATABASE_URL=mysql://user:password@localhost:3306/aguzhitou
# Redis
REDIS_URL=redis://localhost:6379
# JWT
JWT_SECRET=your-secret-key-min-32-characters-long
JWT_EXPIRES_IN=7d
# AKShare
AKSHARE_URL=http://localhost:8000
# 日志
LOG_LEVEL=info
后续工作
近期(高优先级)
-
前端对接
- 替换模拟数据为真实 API
- 接入 WebSocket 实时推送
- 实现登录/注册页面
- 实现自选股管理页面
-
数据完善
- 导入历史K线数据
- 接入更多数据源(Tushare Pro)
中期(中优先级)
-
功能增强
- 预警系统
- 主题切换
- 多语言支持
-
性能优化
- 数据库索引优化
- Redis 缓存策略优化
- 前端性能优化
-
测试
- 单元测试
- E2E 测试
长期(低优先级)
-
高级功能
- 策略回测
- 模拟交易
- 资讯系统
-
运维
- 监控告警
- 日志收集
- 自动备份
项目统计
- 后端代码行数: ~5000+ 行
- API 接口数: 20+
- 数据库表: 11 个
- 完成度: 38% (35/93 任务)
参考文档
app/backend/README.md- 后端详细文档app/docs/04-API接口文档.md- API 接口规范app/docs/06-后端实现.md- 后端实现细节app/docs/07-部署文档.md- 部署指南app/docs/08-待办事项.md- 完整任务清单