## ADDED Requirements

### Requirement: 订单买家快照字段
系统 SHALL 在订单创建时将买家手机号和昵称快照到 `tb_order` 表，字段允许为空。

- `buyer_phone`：下单时买家主手机号快照（varchar(20)，允许 NULL；代理商订单留空）
- `buyer_nickname`：下单时买家昵称快照（varchar(100)，允许 NULL）
- `buyer_phone` 字段建普通索引以支持按手机号过滤

#### Scenario: 个人客户下单时快照手机号和昵称
- **WHEN** 个人客户下单，系统能查询到该客户的主手机号和昵称
- **THEN** 订单的 `buyer_phone` 和 `buyer_nickname` 被填充为查询结果

#### Scenario: 买家信息查询失败时不阻塞下单
- **WHEN** 个人客户下单，但查询主手机号或昵称时发生错误（如数据库异常）
- **THEN** 系统记录 warn 日志，订单正常创建，`buyer_phone`/`buyer_nickname` 为空

#### Scenario: 代理商订单不填充买家手机号
- **WHEN** 代理商下单（buyer_type = agent）
- **THEN** 订单的 `buyer_phone`、`buyer_nickname` 为 NULL

---

## MODIFIED Requirements

### Requirement: 查询订单列表

系统 SHALL 提供订单列表查询，支持按支付状态、订单类型、是否代购、买家手机号筛选。

#### Scenario: 个人客户查询自己的订单
- **WHEN** 个人客户查询订单列表
- **THEN** 系统只返回该客户的订单

#### Scenario: 代理查询店铺订单
- **WHEN** 代理查询订单列表
- **THEN** 系统返回该店铺及下级店铺的订单（包含代购订单和普通订单）

#### Scenario: 按代购类型筛选
- **WHEN** 指定 is_purchase_on_behalf = true 筛选
- **THEN** 系统只返回代购订单

#### Scenario: 按支付状态筛选
- **WHEN** 指定支付状态筛选
- **THEN** 系统只返回匹配状态的订单

#### Scenario: 按买家手机号精确过滤
- **WHEN** 后台请求中传入 buyer_phone 参数
- **THEN** 系统只返回 buyer_phone 精确匹配的订单

#### Scenario: 买家手机号过滤不返回空字段订单
- **WHEN** 后台按 buyer_phone 过滤，部分历史订单该字段为 NULL
- **THEN** 系统不返回 buyer_phone 为 NULL 的历史订单（精确匹配语义）
