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.

144 lines
2.8 KiB

# 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部署
- [ ] 单元测试
- [ ] 性能优化
- [ ] 监控告警