## 目标与范围
- 优化期数管理：在期数列表中新增“奖品数量”，支持实时刷新与排序。
- 登录状态保持：核查并完善前端请求头携带令牌、后端校验逻辑，加入令牌自动刷新机制。
- 奖励管理增强：名称后显示价格“名称(价格)”，下拉显示名称+价格，统一两位小数，支持按价格筛选与排序。

## 现状定位
- 期数列表：`web/admin/src/views/activity/issues/index.vue` 使用 `listActivityIssues`；后端 `internal/api/admin/issues_admin.go` 未返回奖品数量。
- 登录令牌：前端 `web/admin/src/utils/http/index.ts` 注入 `Authorization`，401登出，无刷新；后端鉴权在 `internal/router/interceptor/admin_auth.go`，JWT工具具备 `Refresh` 但未暴露接口。
- 奖励管理：`web/admin/src/views/activity/rewards/index.vue` 已有价格缓存与总成本；向导 `wizard/index.vue` 已显示单价但管理页未统一展示，筛选仅支持名称/等级/Boss。

## 实施方案
### 1) 期数管理“奖品数量”
- 后端接口返回扩展：
  - 在 `internal/api/admin/issues_admin.go` 的列表响应结构添加 `prize_count` 字段；统计当前活动期对应的奖励配置数量（表 `activity_reward_settings`）并填入。
  - 为避免 N+1 查询，优先采用按 `IssueID` 分组的聚合统计一次性返回。
- 前端表格列：
  - 在 `issues/index.vue` 的 `columnsFactory` 增加 `{ prop: 'prize_count', label: '奖品数量', minWidth: 120, align: 'center', sortable: true }`。
  - 保持字体大小与现有列一致，列宽 120，保证清晰可见。
- 实时刷新：
  - 在新增/删除奖励后（`createIssueRewards`、`deleteIssueReward`）触发行级期数列表刷新；或在奖励模块完成操作后发出事件总线通知，期数页监听并刷新。

### 2) 登录状态保持与自动刷新
- 前端核查与完善：
  - 保证所有请求统一使用封装实例，已自动注入 `Authorization`；抽样验证重要路由跳转后的接口头部是否带令牌（在拦截器内添加开发模式日志）。
  - 在 `axios` 响应拦截器中实现一次性刷新流程：当收到 401 且存在 `refreshToken`，调用后端刷新接口获取新 `accessToken`，更新到 `useUserStore` 并重放队列中的失败请求。
- 后端刷新接口：
  - 新增 `POST /api/admin/auth/refresh`，从 `refreshToken` 校验后发新 `accessToken` 与新的过期时间；使用 `internal/pkg/jwtoken.Refresh`。
  - 刷新令牌有效期策略：`accessToken` 24h，`refreshToken` 7–14d，可根据配置调整。
- 有效期验证：
  - 检查管理端 JWT `exp` 与中间件的过期处理；在返回体附带 `expires_in`（秒）便于前端设置刷新窗口（如 T-5min 刷新）。

### 3) 奖励管理价格展示与筛选排序
- 名称后显示“名称(价格)”：
  - 在 `rewards/index.vue` 的名称列渲染处，读取 `priceCache[row.product_id]`，以元显示并保留两位小数：`{{ row.name }} (¥{{ unitPrice(row.product_id).toFixed(2) }})`。
- 下拉选项展示价格：
  - 在新增/编辑奖励的商品选择下拉项 `<ElOption>` 增加右侧显示 `¥price.toFixed(2)`；统一从 `fetchProducts` 的 `price` 转换为元并缓存。
- 价格筛选与排序：
  - 在筛选区新增最小价/最大价输入与排序选择（`price asc/desc`），在 `displayedData` 计算中对 `priceCache` 区间过滤并根据选择排序。
- 统一格式：
  - 所有价格展示统一使用元、`toFixed(2)`；缓存与计算逻辑复用，避免重复请求与闪烁。

## 验收标准
- 期数列表出现“奖品数量”列且支持点击列头进行升降序；奖励增减后期数页能自动反映变更。
- 前端所有 API 请求头包含 `Authorization`；登录态过期前能自动刷新并续期；401 时先刷新再重放请求，刷新失败才登出。
- 奖励管理名称与下拉均显示价格，价格保留两位小数；可按价格筛选与排序，结果正确稳定。

## 交付变更清单
- 后端：扩展期数列表响应（含聚合统计）、新增管理员令牌刷新接口与逻辑。
- 前端：期数列表新增“奖品数量”列与刷新机制；HTTP 拦截器加入自动刷新与队列重放；奖励管理价格展示、筛选与排序统一完善。

确认后我将按以上步骤实施，并为关键函数按要求补充函数级注释。