feat: 支持会员管理筛选
This commit is contained in:
21
CLAUDE.md
21
CLAUDE.md
@@ -66,4 +66,23 @@ pnpm deploy:server # 部署后端到生产环境
|
||||
|
||||
### 数据库
|
||||
- Prisma schema 位于 `packages/server/prisma/schema.prisma`
|
||||
- 核心数据模型:User(用户)、Studio(场馆)、TimeSlot(时段)、Booking(预约)、Membership(会员卡)、CardType(卡种)、Order(订单)
|
||||
- 核心数据模型:User、Studio、TimeSlot、Booking、Membership、CardType、Order
|
||||
- 注意:查询会员列表时,booking 统计通过 `groupBy` 批量获取,避免 N+1 查询
|
||||
|
||||
### 卡类型枚举
|
||||
- `CardTypeCategory` (TIMES/DURATION/TRIAL) 定义在 `packages/shared/src/enums.ts`
|
||||
- 会员管理筛选使用特殊值 `NONE` 表示无卡/无有效会员(不在枚举中)
|
||||
- 前端选项硬编码在 `src/pages/admin/members.vue` 的 `cardTypeOptions`,需与枚举保持同步
|
||||
|
||||
### 管理后台 API 模式
|
||||
- `/admin/members` 支持 `page`, `limit`, `search`, `cardType` 参数
|
||||
- `cardType=NONE` → 无有效会员的用户;其他值对应 `CardTypeCategory`
|
||||
- 预约统计(total/completed/cancelled)通过 `groupBy` 批量查询
|
||||
|
||||
### 筛选组件模式
|
||||
- picker 筛选使用 300ms debounce 再触发加载,避免频繁请求
|
||||
- 列表分页使用 `onReachBottom` + `hasMore` 标志位实现无限滚动
|
||||
|
||||
### Admin Store (`src/stores/admin.ts`)
|
||||
- 聚合所有管理端 API 调用:weekTemplates、cardTypes、studioConfig、members、bookings、orders、stats 等
|
||||
- 遵循不可变更新原则:`data` 赋值使用展开运算符 `[...newData]`
|
||||
Reference in New Issue
Block a user