diff --git a/CLAUDE.md b/CLAUDE.md new file mode 100644 index 0000000..ac3001d --- /dev/null +++ b/CLAUDE.md @@ -0,0 +1,69 @@ +# CLAUDE.md + +本文档为 Claude Code (claude.ai/code) 在本项目中工作时提供指导。 + +## 项目概述 + +这是一个普拉提预约微信小程序项目,后端采用 NestJS 框架。项目使用 pnpm monorepo 结构,包含 3 个包: + +- **packages/app** - Vue 3 + uni-app(微信小程序前端) +- **packages/server** - NestJS(后端 API 服务) +- **packages/shared** - TypeScript 类型定义、枚举、常量(前后端共用) + +## 常用命令 + +```bash +# 开发 +pnpm dev:server # 启动 NestJS 后端(热重载) +pnpm dev:app # 构建 uni-app 为微信小程序 + +# 构建 +pnpm build:shared # 编译共享类型 +pnpm build:server # 构建 NestJS 后端 +pnpm build:app # 构建微信小程序 + +# 测试与代码检查 +pnpm test # 运行所有测试(仅 server) +pnpm lint # 运行 ESLint(仅 server) + +# 数据库相关(位于 packages/server 目录) +cd packages/server +pnpm prisma:generate # 生成 Prisma 客户端 +pnpm prisma:migrate # 执行数据库迁移 +pnpm prisma:seed # 填充测试数据 +pnpm test:watch # 监听模式运行测试 + +# 部署 +pnpm deploy:server # 部署后端到生产环境 +``` + +## 架构说明 + +### 前端 (packages/app) +- 基于 Vue 3 + uni-app 框架,主攻微信小程序平台 +- 页面目录:`src/pages/`(包含 home、booking、card、profile、admin 等模块) +- 组件目录:`src/components/` +- 状态管理:Pinia +- 样式:SCSS + +### 后端 (packages/server) +- 框架:NestJS + Prisma ORM +- 核心模块:auth(认证)、user(用户)、booking(预约)、membership(会员卡)、payment(支付)、studio(场馆)、time-slot(时段)、scheduler(定时任务)、admin(管理) +- 认证:JWT + 微信登录 +- 定时任务:@nestjs/schedule +- 数据库:SQLite(开发)/ MySQL(生产) + +### 共享包 (packages/shared) +- TypeScript 接口和类型定义 +- 枚举值定义 +- 前后端共用的 DTO 类型 + +### API 结构 +- 所有接口统一前缀:`/api` +- RESTful 风格接口 +- 全局拦截器:日志记录、响应包装 +- 全局过滤器:异常处理 + +### 数据库 +- Prisma schema 位于 `packages/server/prisma/schema.prisma` +- 核心数据模型:User(用户)、Studio(场馆)、TimeSlot(时段)、Booking(预约)、Membership(会员卡)、CardType(卡种)、Order(订单) \ No newline at end of file diff --git a/packages/app/src/pages/admin/orders.vue b/packages/app/src/pages/admin/orders.vue index 551cca7..08a2406 100644 --- a/packages/app/src/pages/admin/orders.vue +++ b/packages/app/src/pages/admin/orders.vue @@ -133,7 +133,7 @@ diff --git a/packages/server/.env b/packages/server/.env new file mode 100644 index 0000000..73d4f51 --- /dev/null +++ b/packages/server/.env @@ -0,0 +1,21 @@ +# Database +DATABASE_URL=mysql://root:AK8jyLfsfMA5wNdC@129.204.155.94:13306/db_mp_focus + +# JWT +JWT_SECRET=change-me-to-a-secure-random-string + +# WeChat Mini Program +WX_APPID=wx3e7a133d2305fa2c +WX_SECRET=92f4f91af72ca0705d65e39e605cb98b + +# WeChat Pay +WX_MCH_ID=1110530023 +WX_MCH_KEY=ACbGcH3FNLBacmvmIVR4uWXjNf9h8jQ2 +WX_MCH_SERIAL_NO=7A90D96A7ED1A129E98DB5FD5F3A84EDC34B2AC6 +WX_MCH_KEY_PATH=./certs/apiclient_key.pem + +# API Base URL (used for WeChat Pay callback notification) +API_BASE_URL=https://focus.richarjiang.com/ + +# Server +PORT=3000