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.
|
|
|
|
|
# A股智投分析平台 - 后端服务
|
|
|
|
|
|
|
|
|
|
|
|
## 技术栈
|
|
|
|
|
|
|
|
|
|
|
|
- Node.js 20.x LTS
|
|
|
|
|
|
- Express 4.x
|
|
|
|
|
|
- TypeScript 5.x
|
|
|
|
|
|
- Prisma ORM
|
|
|
|
|
|
- MySQL 8.0
|
|
|
|
|
|
- Redis 7
|
|
|
|
|
|
- Socket.io (WebSocket)
|
|
|
|
|
|
- Winston (日志)
|
|
|
|
|
|
|
|
|
|
|
|
## 快速开始
|
|
|
|
|
|
|
|
|
|
|
|
### 1. 安装依赖
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
cd backend
|
|
|
|
|
|
npm install
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### 2. 配置环境变量
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
cp .env.example .env
|
|
|
|
|
|
# 编辑 .env 文件,配置数据库连接等信息
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### 3. 数据库迁移
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
# 生成 Prisma Client
|
|
|
|
|
|
npx prisma generate
|
|
|
|
|
|
|
|
|
|
|
|
# 执行数据库迁移
|
|
|
|
|
|
npx prisma migrate dev --name init
|
|
|
|
|
|
|
|
|
|
|
|
# 导入种子数据
|
|
|
|
|
|
npx prisma db seed
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### 4. 启动开发服务器
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
npm run dev
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
服务器将在 http://localhost:3000 启动
|
|
|
|
|
|
|
|
|
|
|
|
### 5. 生产部署
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
# 构建
|
|
|
|
|
|
npm run build
|
|
|
|
|
|
|
|
|
|
|
|
# 启动
|
|
|
|
|
|
npm start
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
## Docker 部署
|
|
|
|
|
|
|
|
|
|
|
|
### 使用 Docker Compose
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
# 启动所有服务
|
|
|
|
|
|
docker-compose up -d
|
|
|
|
|
|
|
|
|
|
|
|
# 查看日志
|
|
|
|
|
|
docker-compose logs -f app
|
|
|
|
|
|
|
|
|
|
|
|
# 停止服务
|
|
|
|
|
|
docker-compose down
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### 单独构建镜像
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
docker build -t aguzhitou-backend .
|
|
|
|
|
|
docker run -p 3000:3000 --env-file .env aguzhitou-backend
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
## API 文档
|
|
|
|
|
|
|
|
|
|
|
|
启动服务器后访问: http://localhost:3000/api/v1/health
|
|
|
|
|
|
|
|
|
|
|
|
详细 API 文档参考 `docs/04-API接口文档.md`
|
|
|
|
|
|
|
|
|
|
|
|
## 项目结构
|
|
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
backend/
|
|
|
|
|
|
├── src/
|
|
|
|
|
|
│ ├── config/ # 配置文件
|
|
|
|
|
|
│ ├── controllers/ # 控制器
|
|
|
|
|
|
│ ├── services/ # 业务逻辑
|
|
|
|
|
|
│ ├── routes/ # 路由定义
|
|
|
|
|
|
│ ├── middleware/ # 中间件
|
|
|
|
|
|
│ ├── utils/ # 工具函数
|
|
|
|
|
|
│ ├── websocket/ # WebSocket服务
|
|
|
|
|
|
│ ├── jobs/ # 定时任务
|
|
|
|
|
|
│ ├── types/ # 类型定义
|
|
|
|
|
|
│ └── app.ts # 应用入口
|
|
|
|
|
|
├── prisma/
|
|
|
|
|
|
│ ├── schema.prisma # 数据库模型
|
|
|
|
|
|
│ └── seed.ts # 种子数据
|
|
|
|
|
|
├── docker-compose.yml # Docker编排
|
|
|
|
|
|
├── Dockerfile # Docker镜像
|
|
|
|
|
|
└── package.json
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
## 主要功能
|
|
|
|
|
|
|
|
|
|
|
|
- 市场数据接口(指数、涨跌统计、分布)
|
|
|
|
|
|
- 版块数据接口(列表、详情、排名、K线)
|
|
|
|
|
|
- 股票数据接口(搜索、详情、K线、新高新低)
|
|
|
|
|
|
- 用户系统(注册、登录、自选股)
|
|
|
|
|
|
- WebSocket 实时数据推送
|
|
|
|
|
|
- 定时数据同步任务
|
|
|
|
|
|
|
|
|
|
|
|
## 环境变量
|
|
|
|
|
|
|
|
|
|
|
|
| 变量名 | 说明 | 默认值 |
|
|
|
|
|
|
|-------|------|-------|
|
|
|
|
|
|
| PORT | 服务器端口 | 3000 |
|
|
|
|
|
|
| DATABASE_URL | MySQL连接URL | - |
|
|
|
|
|
|
| REDIS_URL | Redis连接URL | redis://localhost:6379 |
|
|
|
|
|
|
| JWT_SECRET | JWT密钥 | - |
|
|
|
|
|
|
| JWT_EXPIRES_IN | JWT过期时间 | 7d |
|
|
|
|
|
|
| AKSHARE_URL | AKShare服务地址 | http://localhost:8000 |
|
|
|
|
|
|
| LOG_LEVEL | 日志级别 | info |
|
|
|
|
|
|
|
|
|
|
|
|
## 开发计划
|
|
|
|
|
|
|
|
|
|
|
|
- [x] 基础架构搭建
|
|
|
|
|
|
- [x] 数据库模型设计
|
|
|
|
|
|
- [x] API接口实现
|
|
|
|
|
|
- [x] WebSocket服务
|
|
|
|
|
|
- [x] 数据同步服务
|
|
|
|
|
|
- [x] Docker部署
|
|
|
|
|
|
- [ ] 单元测试
|
|
|
|
|
|
- [ ] 性能优化
|
|
|
|
|
|
- [ ] 监控告警
|