diff --git a/CLAUDE.md b/CLAUDE.md
index ac3001d..b3e1bae 100644
--- a/CLAUDE.md
+++ b/CLAUDE.md
@@ -66,4 +66,23 @@ pnpm deploy:server # 部署后端到生产环境
### 数据库
- Prisma schema 位于 `packages/server/prisma/schema.prisma`
-- 核心数据模型:User(用户)、Studio(场馆)、TimeSlot(时段)、Booking(预约)、Membership(会员卡)、CardType(卡种)、Order(订单)
\ No newline at end of file
+- 核心数据模型: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]`
\ No newline at end of file
diff --git a/packages/app/src/pages/admin/members.vue b/packages/app/src/pages/admin/members.vue
index b11d1ac..b5eb70e 100644
--- a/packages/app/src/pages/admin/members.vue
+++ b/packages/app/src/pages/admin/members.vue
@@ -15,6 +15,19 @@
×
+
+
+ {{ cardTypeOptions[cardTypeIndex].label }}
+ ▾
+
+
搜索
@@ -115,7 +128,7 @@