## 1. API Contract

- [x] 1.1 更新换货数据模型，补充 `inherited_shop_id` 和 `inherited_shop_name` 响应字段，并覆盖创建、发货、确认完成及详情读取场景。
- [x] 1.2 保持 `POST /api/admin/exchanges`、`POST /api/admin/exchanges/{id}/ship`、`POST /api/admin/exchanges/{id}/complete` 的既有入参语义，不新增目标店铺字段。

## 2. Exchange Create And Ship UI

- [x] 2.1 在换货创建入口中，选择旧资产后展示旧资产所属店铺。
- [x] 2.2 在换货创建入口和发货确认入口中，选择新资产后展示只读提示 `换货完成后将归属：{店铺名称}`。
- [x] 2.3 确保上述页面不新增目标店铺选择控件，也不允许手工覆盖继承归属。
- [x] 2.4 直接换货创建入口的新资产默认列表和搜索请求按已选旧资产 `shop_id` 过滤，并继续固定 `status=1`。

## 3. Exchange Detail And Submission States

- [x] 3.1 在换货详情页展示继承后的店铺名称，并在发货或确认完成成功后重新拉取详情。
- [x] 3.2 在创建、发货、确认完成提交期间禁用操作按钮，防止重复提交。
- [x] 3.3 在新资产归属校验失败时通过统一 HTTP 错误处理展示后端错误，并在失败后恢复可重试状态。

## 4. Verification

- [x] 4.1 验证创建、发货确认、详情三个入口均能正确展示旧资产所属店铺和继承归属店铺。
- [x] 4.2 验证加载中、失败提示、重复提交防护和成功后详情刷新的交互状态。
- [x] 4.3 运行相关前端校验，并执行 `openspec validate update-exchange-inherited-shop-hint --strict`。
