feat(system): 完成后端系统管理(审计/角色/操作日志/日志查询)
- 操作日志审计机制:audit 上下文(成功与失败都记、独立提交、操作人标量 固化、commit 后查询前置约定),用户/角色全部写操作接入;request_data 按键名的结构化脱敏 + UTF-8 字节边界截断 - 角色管理:CRUD 与启停;admin 禁删禁停、有绑定禁删(FOR UPDATE 锁行)、 编码创建后不可改、停用角色不可再分配 - 日志查询:操作/登录两端点,列表与详情两段式(详情含已脱敏请求参数); 时间参数统一转本地 naive(修混用时区 500 与偏移丢弃) - 用户管理:补齐 reset_password 操作人、编辑空串归一 NULL、并发唯一键兜底 400 - 测试 301 例全绿(单元 223 / 集成 78) Co-Authored-By: Claude Code <noreply@anthropic.com>
This commit is contained in:
1 parent
e22c4bcdc9
commit
c83287819a
32 files changed
+3158
-137
No files matched your search
@@ -1,4 +1,4 @@
|
||||
"""用户与角色的请求/响应模型。
|
||||
"""用户管理的请求/响应模型(角色相关模型见 `role.py`)。
|
||||
|
||||
与 `auth.py` 的分工:`auth.py` 管登录链路(验证码、登录、当前用户),
|
||||
本模块管**用户管理**(增删改查、重置密码、启停、角色分配)。
|
||||
@@ -111,16 +111,3 @@ class UserQuery(PageQuery):
|
||||
real_name: str | None = Field(default=None, max_length=64, description="姓名,模糊匹配")
|
||||
status: int | None = Field(default=None, ge=0, le=1, description="状态筛选")
|
||||
role_code: str | None = Field(default=None, max_length=32, description="角色编码筛选")
|
||||
|
||||
|
||||
class RoleOut(BaseModel):
|
||||
"""角色响应。"""
|
||||
|
||||
model_config = ConfigDict(from_attributes=True)
|
||||
|
||||
id: int
|
||||
role_code: str
|
||||
role_name: str
|
||||
description: str | None = None
|
||||
sort_order: int = 0
|
||||
status: int = 1
|
||||
Reference in new issue
Block a user