## ADDED Requirements ### Requirement: Refund List Approval Summary Contract The `GET /api/admin/refunds` list-item contract SHALL support `submitter_name`, `approval_source`, `approval_status`, `approval_status_name`, `current_approver_summary`, `processing_status`, and `processing_status_name`. #### Scenario: Receive refund approval summary fields - **GIVEN** 后台退款列表接口返回退款记录 - **WHEN** 前端解析列表响应 - **THEN** 退款列表项类型 MUST preserve all approval and processing summary fields - **AND** 页面 MUST NOT request an individual approval-detail API to populate the row ### Requirement: Refund List Approval And Processing Display The refund management list SHALL display `提交人`, `审批状态`, `当前审批人摘要`, and `业务处理状态` as distinct columns based on backend summary fields. #### Scenario: Display refund with no approval source - **GIVEN** 退款记录的 `approval_source=none` - **WHEN** 页面渲染退款列表行 - **THEN** `审批状态` MUST display `-` - **AND** `当前审批人摘要` MUST display `-` #### Scenario: Display legacy refund approval read-only - **GIVEN** 退款记录的 `approval_source=legacy` - **WHEN** 页面渲染退款列表行 - **THEN** `审批状态` MUST display `历史审批` - **AND** 页面 MUST NOT add an approval operation button for that historical approval #### Scenario: Display WeCom refund approval summary - **GIVEN** 退款记录的 `approval_source=wecom` - **WHEN** 页面渲染退款列表行 - **THEN** `审批状态` MUST display backend `approval_status_name` - **AND** `当前审批人摘要` MUST display backend `current_approver_summary` - **AND** `业务处理状态` MUST independently display backend `processing_status_name` #### Scenario: View long refund approver summary - **GIVEN** 退款记录的 `current_approver_summary` exceeds its table cell width - **WHEN** 页面渲染当前审批人摘要列 - **THEN** 摘要 MUST be visually truncated in the cell - **AND** 用户 MUST be able to view the complete backend text on hover #### Scenario: Paginate refunds without per-row approval requests - **WHEN** 用户切换退款列表页码或刷新列表 - **THEN** 页面 MUST use the refund list API response for approval summaries - **AND** 页面 MUST NOT issue approval-detail requests per refund row