# 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文档