appointment_system/CLAUDE.md

199 lines
5.9 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# CLAUDE.md - 海外预约系统项目指南
## 项目概述
这是一个**海外预约服务系统**包含微信小程序、后端API和管理后台三个模块。系统支持多种服务类型的预约航班票务、酒店预订、机场接送等并具备邀请奖励和佣金分成机制。
## 技术栈
### 后端 (backend/)
- **框架**: Node.js + Express.js 4.18
- **数据库**: MySQL 8.0 + Sequelize ORM
- **缓存**: Redis 7
- **认证**: JWT + 微信登录
- **测试**: Jest + Supertest
### 小程序 (miniprogram/)
- **框架**: uni-app + Vue 3 + Vite
- **UI库**: uView Plus 3.6
- **国际化**: vue-i18n (中文/英文/西班牙语)
### 管理后台 (admin/)
- **框架**: Vue 3 + Vite
- **UI库**: Element Plus 2.6
- **状态管理**: Pinia
- **图表**: ECharts
## 目录结构
```
overseas-appointment-system/
├── miniprogram/ # 微信小程序
│ └── src/
│ ├── pages/ # 页面index/appointment/me/login等
│ ├── components/ # 公共组件
│ ├── modules/api/ # API封装AppServer.js
│ └── locale/ # 多语言文件
├── backend/ # 后端API
│ └── src/
│ ├── controllers/ # 控制器层24个
│ ├── services/ # 业务逻辑层20+个)
│ ├── models/ # 数据模型16个
│ ├── routes/ # 路由定义27个
│ ├── middleware/ # 中间件auth/rbac/validation等
│ ├── config/ # 配置文件
│ ├── migrations/ # 数据库迁移
│ └── tests/ # 测试用例28个
├── admin/ # 管理后台
│ └── src/
│ ├── views/ # 页面12个模块
│ ├── stores/ # Pinia状态
│ └── router/ # 路由配置
└── docker/ # Docker部署配置
```
## 核心数据模型
| 模型 | 表名 | 说明 |
|------|------|------|
| User | user | 用户(含邀请码、余额、多语言偏好) |
| Appointment | appointment | 预约记录 |
| Service | service | 服务项目(多语言标题/描述) |
| Category | category | 服务分类 |
| Invitation | invitation | 邀请关系 |
| Commission | commission | 佣金记录 |
| PaymentOrder | payment_orders | 支付订单(离线支付) |
| Withdrawal | withdrawal | 提现申请 |
| Notification | notification | 系统通知 |
| Admin | admin | 管理员super_admin/admin/operator |
## 常用开发命令
```bash
# 安装依赖
npm run install:all
# 后端开发
cd backend && npm run dev
# 小程序开发
cd miniprogram && npm run dev:mp-weixin
# 管理后台开发
cd admin && npm run dev
# 数据库初始化
cd backend && npm run db:init
# 运行测试
cd backend && npm test
# Docker部署
docker-compose up -d
```
## API结构
- **基础路径**: `/api/v1/`
- **认证方式**: Bearer Token (JWT)
- **多语言**: `Accept-Language` 头或 `?language=zh|en|es`
### 主要API端点
```
# 认证
POST /api/v1/auth/wechat-login # 微信登录
POST /api/v1/auth/refresh-token # 刷新令牌
# 用户
GET /api/v1/users/profile # 获取用户信息
PUT /api/v1/users/profile # 更新用户信息
# 预约
POST /api/v1/appointments # 创建预约
GET /api/v1/appointments # 预约列表
GET /api/v1/appointments/:id # 预约详情
# 邀请与佣金
POST /api/v1/invitations/generate # 生成邀请码
GET /api/v1/invitations/stats # 邀请统计
GET /api/v1/commissions # 佣金列表
# 提现
POST /api/v1/withdrawals # 申请提现
GET /api/v1/withdrawals # 提现记录
# 管理员API
/api/v1/admin/* # 管理后台专用接口
```
## 业务流程
### 预约流程
1. 用户选择服务 → 2. 填写预约表单 → 3. 上传附件(可选) → 4. 提交生成预约号 → 5. 状态流转 (pending → confirmed → in-progress → completed)
### 邀请与佣金流程
1. 用户获取邀请码 → 2. 分享给新用户 → 3. 新用户注册绑定 → 4. 新用户首次支付 → 5. 自动计算佣金默认2% → 6. 佣金入账邀请者余额
### 提现流程
用户申请 (waiting) → 管理员审核 → 批准 (completed) / 拒绝 (rejected)
## 关键配置文件
- `backend/.env` - 后端环境变量数据库、Redis、JWT、微信配置
- `backend/src/config/env.js` - 配置读取
- `docker-compose.yml` - 生产环境Docker编排
- `docker-compose.dev.yml` - 开发环境数据库
## 编码规范
### 后端
- 使用async/await处理异步
- 控制器负责请求/响应业务逻辑放service层
- 统一响应格式: `{ success: boolean, data: any, error?: { code, message } }`
- 使用express-validator进行参数验证
### 前端
- 组件使用Vue 3 Composition API
- API调用集中在 `modules/api/AppServer.js`
- 多语言键值定义在 `locale/` 目录
## 注意事项
1. **多语言字段**: Service、Category、Notification等模型包含 `_zh`、`_en`、`_es` 后缀的字段
2. **UUID主键**: 所有主表使用UUID而非自增ID
3. **预约编号格式**: `APT` + `YYYYMMDD` + 6位数字
4. **订单编号格式**: `ORD` + `YYYYMMDD` + 6位数字
5. **佣金计算**: 支付金额 × 佣金比例(系统配置表可调整)
6. **权限角色**: super_admin > admin > operator
## 测试
```bash
cd backend
npm test # 运行所有测试
npm run test:coverage # 测试覆盖率
npm run test:watch # 监听模式
```
测试覆盖: 认证、预约流程、佣金计算、提现、文件上传、RBAC权限等。
## 部署
```bash
# 生产环境
docker-compose up -d
# 扩展API实例
docker-compose up -d --scale api=3
# 查看日志
docker-compose logs -f api
```
## 健康检查
- `GET /health` - 服务健康状态
- `GET /metrics` - 性能指标
- `GET /api-docs` - Swagger API文档