## 剩余完善项
- 积分恢复比例与幂等：部分/全额退款的积分恢复算法与重复保护
- 通知事件持久化与去重：payment_notify_events 入库、processed 标记、重复回调忽略
- 退款列表与详情接口：基于 payment_refunds 的查询/分页/导出
- 对账入口与差异列表：账单导入、生成 payment_bill_diff、差异查询与导出
- 管理端详情字段完善：展示 transaction_id/refund_no/channel/支付方式、累计已退款与可退余额
- 前端金额展示统一为元（两位小数），保留分用于接口与导出
- 唯一索引与安全校验：核查并补齐关键唯一约束与条件更新

## 后端改造
1) 积分恢复
- 算法：恢复积分 = (订单积分抵扣分 × 退款分 ÷ 实付分) ÷ 100；累计不超过订单抵扣积分
- 幂等：按订单维度累计已恢复积分对比目标；全额退款一次性恢复剩余积分
2) 通知事件
- 入库 payment_notify_events(notify_id,event_type,raw,processed=false)；处理成功后置 processed=true；重复 notify_id 直接 ACK
3) 退款查询
- GET /api/admin/pay/refunds：分页筛选（order_no/status/date/range）
- GET /api/admin/pay/refunds/:refund_no：详情（refund_no/amount/status/success_time/reason/raw）
4) 对账能力
- POST /api/admin/pay/bills/import：上传/拉取账单入库 payment_bills
- GET /api/admin/pay/bills/diffs：查询差异 payment_bill_diff（缺失/金额不符/多余）
5) 订单详情聚合
- 交易：最近一笔 payment_transactions（transaction_id/success_time/amount）
- 退款：payment_refunds 汇总（refund_no/amount/status/success_time/reason），计算累计已退与可退余额

## 前端改造
- 金额格式化工具：统一元展示（两位小数），表格列与详情区全部使用
- 详情页新增字段：transaction_id/refund_no/channel/支付方式；累计已退/可退余额（元）
- 退款记录表：元展示；状态中文映射
- 对账入口页面：账单导入按钮、差异列表表格、导出

## 幂等与安全
- 幂等键：order_no/out_trade_no/notify_id/refund_no/transaction_id
- 唯一索引：核查 payment_* 与 orders.order_no；接口层条件更新与金额校验
- 日志与告警：验签失败、金额不一致、退款异常、对账差异

## 测试与验收
- 单元：分↔积分换算、比例恢复、幂等重复、接口参数校验
- 集成：预下单→通知→主动退款→详情一致；对账导入与差异生成
- 前后端构建与联调通过；数据与展示口径一致

## 执行顺序
1. 后端：积分恢复与幂等、通知事件入库与去重
2. 后端：退款查询接口、对账入库与差异接口
3. 前端：金额格式化、详情字段与退款/对账页面
4. 测试与联调：全链路验证并修正细节