## 目标 - 在管理端用户详情抽屉中显示该用户当前头衔(含名称、描述、生效/过期时间)。 ## 现状 - 用户详情视图:`web/admin/src/views/player-manage/modules/player-detail-drawer.vue` - 玩家管理页入口:`web/admin/src/views/player-manage/index.vue` - 资产接口:`web/admin/src/api/player-manage.ts`(暂无用户头衔列表接口) - 后端路由已存在分配头衔:`POST /api/admin/users/:user_id/titles`,但缺少`GET`列表接口。 ## 后端改造 - 新增:`GET /api/admin/users/:user_id/titles` - 位置:`internal/api/admin/users_admin.go` - 查询:`user_titles`(active=1、未过期)左连接`system_titles`(取`name/description`),返回`id/title_id/name/description/obtained_at/expires_at/status`。 - 路由挂载:`internal/router/router.go` 在管理端鉴权组新增该`GET`端点。 ## 前端改造 - API:在 `web/admin/src/api/player-manage.ts` 增加 `fetchGetUserTitles(userId)`;请求 `GET /api/admin/users/:user_id/titles`。 - 视图:在 `player-detail-drawer.vue` 增加“头衔”板块 - 展示为标签列表:`title.name`(副文案:`description`) - 显示时间:`obtained_at` 与 `expires_at`(过期标识) - 若无头衔,显示“无头衔”。 ## 验收 - 打开用户详情,正确拉取并显示当前头衔;过期或未激活不显示。 - 已分配称号立即可在详情查看。