优化用户管理:支持编辑、检索与分页

Co-authored-by: multica-agent <github@multica.ai>
This commit is contained in:
2026-05-01 14:15:17 +08:00
parent 00393052d6
commit 06bcc67b8e
6 changed files with 332 additions and 31 deletions
+40
View File
@@ -206,3 +206,43 @@
- 风险与影响:
- 影响范围限定在后台角色读取接口(`/api/v1/admin/roles*`)查询链路。
- 对 legacy 表完整的数据库行为保持不变;仅在 `user_role` 缺失时触发 modern 回退逻辑。
## Work Log - 用户管理优化(编辑/检索/分页)(2026-05-01
- 背景:
- Issue `FL-121` 要求用户管理支持:用户信息修改、用户检索、用户表格分页。
- 本次改动(最小闭环):
- 后端 `users` 列表接口增强(检索 + 分页参数联动):
- 文件:`api/app/api/v1/users.py`
- `GET /api/v1/users` 新增查询参数:
- `keyword`:按 `user_id/email/username` 模糊检索
- `status`:按启用/禁用状态过滤
- 后端用户服务增强:
- 文件:`api/app/services/user_service.py`
- `list_users(...)` 支持 `keyword/status` 条件查询并对 `total` 同步计数。
- `update_user(...)` 支持修改 `email``username`
- 统一 trim/归一化
- 重复值冲突校验
- 空值保护
- 用户更新请求模型补齐:
- 文件:`api/app/schemas/user.py`
- `UserUpdateRequest` 新增可选字段 `email`
- 前端用户管理页增强:
- 文件:`web/src/app/admin/users/page.tsx`
- 新增“用户检索”区:关键字输入 + 状态筛选 + 搜索/重置。
- 用户列表请求改为受查询条件驱动(query key 包含分页/筛选参数)。
- 表格接入分页器(页码、每页条数、总数联动后端)。
- 新增“编辑用户”弹窗,支持修改邮箱/用户名/状态。
- 编辑提交仅传变更字段,避免无效更新。
- 验证(未执行编译/构建,遵循当前任务约束):
- 代码走读与关键路径自检:
- `GET /api/v1/users` -> 支持 `limit/offset/keyword/status`
- `PATCH /api/v1/users/{id}` -> 支持 `email/username/status` 更新。
- 前端列表查询参数与分页状态联动一致。
- 风险与影响:
- 影响范围集中在用户管理模块(`/admin/users``/api/v1/users*`)。
- 旧调用方不传 `keyword/status` 时行为保持兼容。
- 更新失败错误提示文案仍共用“not found or email/username exists”,后续如需更精确错误码可再拆分。