# P9→NS1/RNS1 缺失项 #9：消费记录中助教明细子列表的展开/折叠交互

## 简要结论
- 状态：✅ 已解决
- 风险等级：🟡 低
- 客户详情页消费记录中的助教明细子列表已实现展示（网格布局），但采用的是"始终展开"策略而非"展开/折叠"交互。考虑到数据量通常较小（1-2 位助教），这是合理的设计决策。

## 详细审查

### 审查范围
- `apps/backend/app/schemas/xcx_customers.py` — `ConsumptionRecord.coaches` 字段
- `apps/backend/app/services/customer_service.py` — `_build_consumption_records()` coaches 构建
- `apps/miniprogram/miniprogram/pages/customer-detail/customer-detail.wxml` — 消费记录助教明细

### 发现

1. **后端：coaches 子数组已实现**
   - `ConsumptionRecord.coaches: list[CoachServiceItem]` 已定义
   - `CoachServiceItem` 含：`name`、`level`、`level_color`、`course_type`、`hours`、`perf_hours`、`fee`
   - `_build_consumption_records()` 根据 `assistant_pd_money`/`assistant_cx_money` 构建 coaches 列表

2. **前端：助教明细已展示（始终展开）**
   - 使用 `record-coach-grid`（2 列网格布局）展示助教卡片
   - 每张卡片含：助教姓名 + 等级标签 + 课程类型 + 时长 + 定档绩效 + 费用
   - 条件渲染：`wx:if="{{item.coaches && item.coaches.length > 0}}"`
   - 台桌消费和商城消费均有助教明细展示

3. **无展开/折叠交互**
   - 助教明细始终展开显示，无折叠按钮
   - 考虑到每条消费记录通常只有 1-2 位助教，始终展开是合理的
   - P9 定义的展开/折叠交互更适用于助教数量较多的场景

### 证据

前端助教明细展示（始终展开）：
```html
<view class="record-coaches" wx:if="{{item.coaches && item.coaches.length > 0}}">
  <view class="record-coach-grid">
    <view class="record-coach-card" wx:for="{{item.coaches}}" wx:for-item="c" wx:key="name">
      <view class="record-coach-name-row">
        <text class="record-coach-name">{{c.name}}</text>
        <coach-level-tag level="{{c.level}}" />
      </view>
      <text class="record-coach-type">{{c.courseType}} · {{c.hours}}</text>
      <view class="record-coach-bottom">
        <text class="record-coach-perf" wx:if="{{c.perfHours}}">定档绩效：{{c.perfHours}}</text>
        <text class="record-coach-fee">¥{{c.fee}}</text>
      </view>
    </view>
  </view>
</view>
```

### 建议（如未完全解决）
当前实现已满足需求。如后续助教数量增多（>3 位），可考虑：
1. 默认展示前 2 位，超出部分折叠
2. 添加"展开全部"/"收起"按钮
