bindbox-game/.trae/documents/扩展新用户数据、抽奖动态与待办逻辑.md
邹方成 87ad4177b1
Some checks failed
Build docker and publish / linux (1.24.5) (push) Failing after 39s
feat(工作台): 实现管理端工作台接口并优化数据展示
feat(抽奖动态): 修复抽奖动态未渲染问题并优化文案展示
fix(用户概览): 修复用户概览无数据显示问题
feat(新用户列表): 在新用户列表显示称号明细
refactor(待办事项): 移除代办模块并全宽展示实时动态
feat(批量操作): 限制为单用户操作并在批量时提醒
fix(称号分配): 防重复分配称号的改造计划
perf(接口性能): 优化新用户和抽奖动态接口性能
feat(订单漏斗): 优化订单转化漏斗指标计算
docs(测试计划): 完善盲盒运营API核查与闭环测试计划
2025-11-16 14:00:29 +08:00

55 lines
3.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

## 目标
- 新用户列表增加:积分余额、资产、道具卡、优惠券、称号、上一次在线时间
- 实时抽奖动态展示:用户 | 活动 | 奖品
- 待办事项改为:未抽奖用户列表
## 后端改动
### 新用户列表扩展 `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` 等)
确认后我将按上述文件路径逐项实现并联调。