DaydreamCoding
b60d8bb4cc
feat(usage): 在 /admin/usage 支持查看已删除用户的历史使用情况
用户软删除后使用记录仍在,但身份(邮箱)被 ent 软删除拦截器隐藏。本次在
三条管理员只读路径定点穿透软删除过滤,并把删除状态传播到前端标记,零新表/
迁移/回填:
- 后端穿透:富化 usage 日志(loadUsers)、用户搜索(ListWithFilters +
UserListFilters.IncludeDeleted)、点击详情(GetByIDIncludeDeleted /
GetUserIncludeDeleted + getById ?include_deleted 分支)
- 状态传播:service.User / dto.User 新增 DeletedAt;SearchUsers 标记 deleted
- 前端:表格与余额弹窗展示"已删除"徽标、筛选下拉标注并排序、点击走
include_deleted;新增 i18n admin.usage.userDeletedBadge
- 安全:普通用户 usage 仅查本人(无 PII 泄漏);主用户列表与默认 getById
行为不变(已删用户仍 404);仅 admin 搜索设 IncludeDeleted
后端 build / 三态 vet / unit 全量 / 仓储集成全绿;前端 typecheck / vitest /
改动文件 eslint 全清。
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-30 17:52:18 +08:00
..
2026-05-30 17:52:18 +08:00
2026-05-30 17:52:18 +08:00
2026-05-26 10:49:20 +08:00
2026-02-02 22:13:50 +08:00
2026-04-09 18:14:28 +08:00
2026-04-22 13:19:28 +08:00
2026-05-19 15:27:47 +08:00
2026-05-19 15:27:47 +08:00
2026-05-19 15:27:47 +08:00
2026-05-19 15:27:47 +08:00
2026-05-06 20:52:10 +08:00
2026-05-06 20:52:10 +08:00
2026-05-20 13:25:45 +08:00
2026-04-22 14:56:56 +08:00
2026-05-19 15:27:47 +08:00
2026-04-22 12:30:00 +08:00
2026-05-30 17:52:18 +08:00
2026-05-20 13:25:45 +08:00
2026-05-21 15:19:29 +08:00
2026-05-21 15:19:29 +08:00
2026-05-21 15:19:29 +08:00
2026-05-26 10:49:20 +08:00
2026-05-26 10:49:20 +08:00
2026-05-19 15:27:47 +08:00
2026-04-21 21:44:34 +08:00
2026-04-21 21:44:34 +08:00
2026-04-21 00:21:29 +08:00
2026-05-28 10:03:41 +00:00
2026-05-28 10:03:41 +00:00
2026-05-07 09:14:47 +08:00
2026-05-28 19:39:52 +08:00
2026-05-28 19:39:52 +08:00
2026-03-08 14:12:17 +08:00
2026-03-08 14:12:17 +08:00
2026-05-26 10:49:20 +08:00
2026-05-28 22:44:25 +08:00
2026-05-24 22:00:56 +08:00
2026-02-07 19:04:08 +08:00
2026-05-28 22:44:25 +08:00
2026-03-15 16:21:49 +08:00
2026-05-26 10:49:20 +08:00
2026-05-29 16:21:59 +08:00
2026-02-07 22:14:07 +08:00
2026-03-09 19:55:18 +08:00
2026-05-28 10:03:41 +00:00
2026-01-06 20:31:40 +08:00
2026-05-28 10:03:41 +00:00
2026-05-27 18:00:45 +08:00
2026-02-07 17:12:15 +08:00
2026-04-01 02:20:13 +08:00
2026-05-28 22:44:25 +08:00
2026-05-07 09:14:47 +08:00
2026-02-23 12:45:37 +08:00
2026-02-23 12:45:37 +08:00
2026-05-26 10:49:20 +08:00
2026-05-05 03:26:54 +08:00
2026-02-12 19:01:09 +08:00
2026-05-29 16:21:59 +08:00
2026-05-29 16:21:59 +08:00
2026-04-25 05:26:33 +00:00
2026-03-15 22:13:42 +08:00
2026-05-29 09:57:02 +08:00
2026-05-29 16:21:59 +08:00
2026-05-28 22:44:25 +08:00
2026-05-05 03:26:54 +08:00
2026-05-28 22:44:25 +08:00
2026-05-26 17:19:09 +08:00
2026-05-26 17:19:09 +08:00
2026-05-12 15:21:31 +08:00
2026-05-07 10:05:49 +08:00
2026-05-11 11:17:26 +08:00
2026-05-20 15:12:57 +08:00
2026-05-11 11:17:26 +08:00
2026-05-11 11:17:26 +08:00
2025-12-26 16:45:40 +08:00
2025-12-31 08:50:12 +08:00
2025-12-31 08:50:12 +08:00
2026-04-21 20:36:10 +08:00
2026-05-20 11:09:18 +08:00
2026-05-25 18:16:46 +08:00
2026-05-25 18:16:46 +08:00
2025-12-26 16:45:40 +08:00
2026-05-20 13:25:45 +08:00
2026-05-20 15:48:38 +08:00
2026-04-09 18:14:28 +08:00
2026-04-09 18:14:28 +08:00
2026-05-20 15:48:38 +08:00
2026-05-28 22:44:25 +08:00
2026-05-30 17:52:18 +08:00
2026-05-26 10:49:20 +08:00
2026-03-03 01:05:11 +08:00
2026-05-26 10:49:20 +08:00
2026-05-20 11:09:18 +08:00