## MODIFIED Requirements ### Requirement: B2 可购买套餐列表接口 系统 SHALL 提供 `GET /api/c/v1/asset/packages?identifier=xxx`,并且 MUST 要求个人客户认证。接口 MUST 在归属校验通过后返回可购买套餐列表。价格规则 MUST 为:代理渠道取分配记录上的生效售价,平台渠道取套餐生效售价。若建议零售价未配置,系统 SHALL 使用成本价作为生效售价。过滤规则 MUST 同时满足:`Package.status=1`、`shelf_status` 可售、加油包前置主套餐条件成立,并且 MUST 排除赠送套餐。结果 MUST 按展示价格升序。响应体 SHALL 包含 `packages[]`,每项至少含 `package_id`、`package_name`、`package_type`、`retail_price`、`cost_price`、`validity`、`is_addon`。错误码/消息 MUST 至少包含:`INVALID_PARAM/参数错误`、`FORBIDDEN/无权限操作该资产或资源不存在`、`PACKAGE_NOT_AVAILABLE/当前无可购买套餐`。 #### Scenario: 代理渠道价格与过滤生效 - **WHEN** 客户查询可购套餐且其销售链路为代理渠道,部分套餐建议零售价未配置 - **THEN** 系统仅返回可售且满足价格约束的套餐,并按生效价格升序输出 #### Scenario: 赠送套餐不出现在可购列表 - **WHEN** 赠送套餐已存在于后台数据中 - **THEN** C 端可购买套餐列表 MUST 不返回该套餐