# 03 — 换货继承归属接口投影与展示契约

**What to build:** 前端通过既有创建、发货、列表和详情接口即可稳定获得旧资产当前归属及新资产将继承的店铺信息：响应统一提供 `inherited_shop_id` 与 `inherited_shop_name`，平台库存用明确的平台语义表示。完成接口成功后，前端重新读取详情即可取得最终继承结果；不提供目标店铺选择或单独归属接口。

**Blocked by:** 02 — 以归属继承原子完成换货。

**Status:** ready-for-agent

**架构通道:** 主通道为 Query（`Handler → Query → GORM/DTO`）；辅助为 Application 已确定结果的只读输出投影。

**完整业务边界:** 收口 `ExchangeOrderResponse` 在创建、发货、列表和详情的继承归属字段及一致语义，包含列表批量加载、读取权限、分页、DTO 投影、OpenAPI 契约和接口级联调验证。

**明确不迁移:** 不开发前端页面，不提供目标店铺选择控件，不修改换货写侧状态机，不迁移资产详情前代/后代链路，也不迁移其他旧读取接口。

- [ ] 创建、发货、列表和详情响应均返回语义一致的 `inherited_shop_id` 与 `inherited_shop_name`；平台库存目标返回空店铺 ID 和明确平台文案。
- [ ] 请求中没有目标店铺字段或独立归属接口；前端可据此展示旧资产当前店铺及“换货完成后将归属”的只读提示。
- [ ] 列表查询负责权限、分页、批量加载与 DTO 投影，店铺名称不产生 N+1；Query 不写状态，写接口只投影 Application 已确定的业务结果。
- [ ] HTTP 集成测试同时断言响应体和数据库状态，覆盖平台库存、同店铺、其他店铺拒绝及完成后刷新详情。
- [ ] OpenAPI 明确字段和展示语义、完成成功后刷新详情、重复提交与失败时保留表单的接口交互约定。
- [ ] 架构约束：读取不经过聚合根、不使用读取快照作写侧判断；只迁移本票涉及的换货响应投影。
