## 目标
- 在管理端用户详情抽屉中显示该用户当前头衔（含名称、描述、生效/过期时间）。

## 现状
- 用户详情视图：`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`（过期标识）
  - 若无头衔，显示“无头衔”。

## 验收
- 打开用户详情，正确拉取并显示当前头衔；过期或未激活不显示。
- 已分配称号立即可在详情查看。