## 目标
- 新用户列表增加：积分余额、资产、道具卡、优惠券、称号、上一次在线时间
- 实时抽奖动态展示：用户 | 活动 | 奖品
- 待办事项改为：未抽奖用户列表

## 后端改动
### 新用户列表扩展 `GET /api/admin/dashboard/new_users`
- 文件：`internal/api/admin/dashboard_admin.go`
- 在 `DashboardNewUsers()` 为每个用户追加：
  - `couponCount`：`user_coupons` 有效/未使用计数
  - `titleCount`：`user_titles` 数量（或仅活跃状态）
  - `lastOnlineAt`：近似“最后活跃时间”，取多个行为表的最大时间：
    - `activity_draw_logs.created_at`
    - `orders.updated_at` 或 `paid_at`
    - `user_points_ledger.created_at`
    - `user_item_cards.updated_at`
    - `user_inventory.updated_at`
  - 注：当前日志表 `log_request` 未记录 `user_id`，无法精确映射在线时间；后续可优化为日志写入 `user_id` 字段。
- 返回结构：在 `newUserItem` 增加 `couponCount:number`、`titleCount:number`、`lastOnlineAt:string`

### 抽奖动态增强 `GET /api/admin/dashboard/draw_stream`
- 已新增字段：`activityName`、`issueNumber`、`prizeName`
- 保持现有结构，前端按“用户 | 活动 | 奖品”展示即可（`dynamic-stats.vue` 已适配）

### 待办事项改为未抽奖用户 `GET /api/admin/dashboard/todos`
- 文件：`internal/api/admin/dashboard_admin.go`
- 原“绑定手机号/加入公会”规则改为：
  - 查询 `users`，过滤 `NOT EXISTS activity_draw_logs WHERE user_id=users.id`
  - 返回字段：`userId/nickname/avatar`，`taskType` 固定为 `undrawn`，文案 `taskLabel='从未参与抽奖'`
- 保持分页/limit 与安全校验一致

## 前端改动
### 新用户模块 `web/admin/src/views/dashboard/console/modules/new-user.vue`
- 表格新增列：优惠券数、称号数、上一次在线时间
- 数据源类型：更新 `web/admin/src/api/dashboard.ts` 的 `NewUserItem` 接口，增加上述3字段；`fetchNewUsers` 返回保持一致

### 抽奖动态 `web/admin/src/views/dashboard/console/modules/dynamic-stats.vue`
- 已展示“活动名-期号”和中奖奖品名；文案保持“用户 | 活动 | 奖品”格式

### 待办事项 `web/admin/src/views/dashboard/console/modules/todo-list.vue`
- 调整列表文案与标签：从“绑定手机号/加入公会”改为“从未参与抽奖”的用户清单（调用同名接口）

## 验证
- 后端：`go build ./...` 通过；
- 接口验证：
  - 新用户：`curl -H 'Authorization: <token>' 'http://localhost:8000/api/admin/dashboard/new_users?page=1&page_size=20'`
  - 抽奖动态：`curl -H 'Authorization: <token>' 'http://localhost:8000/api/admin/dashboard/draw_stream?limit=50'`
  - 待办（未抽奖用户）：`curl -H 'Authorization: <token>' 'http://localhost:8000/api/admin/dashboard/todos?limit=50'`
- 前端：工作台“新用户”、“抽奖动态”、“待办事项”模块显示对应数据

## 后续可选优化
- 在 `log_request` 增加 `user_id` 字段，并在中间件从会话写入；将“上一次在线时间”改为日志精准口径
- 为关联查询增加必要索引以保证统计性能（`activity_draw_logs.user_id/issue_id`、`orders.user_id/status` 等）

确认后我将按上述文件路径逐项实现并联调。