refactor: schemas 抽取(DTO 从 models.py 与路由内联迁至 api/schemas/)
- 新建 api/schemas/:auth/agents/admin/ecosystem/investor/opc/operator/org/portals - models.py 移除 15 个 Pydantic DTO(保留 ORM 数据模型层) - 13 个路由内联 DTO 全部迁出,路由瘦身仅剩处理逻辑 - 全量 66 测试通过
This commit is contained in:
@@ -576,168 +576,3 @@ class UserIdentity(Base):
|
||||
status: Mapped[str] = mapped_column(String, default="active") # active | disabled
|
||||
created_at: Mapped[str] = mapped_column(String, default="")
|
||||
updated_at: Mapped[str] = mapped_column(String, default="")
|
||||
|
||||
|
||||
# ===========================================================================
|
||||
# Pydantic 请求/响应模型
|
||||
# ===========================================================================
|
||||
|
||||
class LoginRequest(BaseModel):
|
||||
username: str
|
||||
password: str
|
||||
expires_in: int | None = Field(
|
||||
default=None,
|
||||
description="令牌有效期(秒),-1/0 表示永久,省略为 7 天",
|
||||
)
|
||||
|
||||
|
||||
class RegisterRequest(BaseModel):
|
||||
username: str
|
||||
password: str
|
||||
expires_in: int | None = Field(
|
||||
default=None,
|
||||
description="令牌有效期(秒),-1/0 表示永久,省略为 7 天",
|
||||
)
|
||||
|
||||
|
||||
class UpdateProfileRequest(BaseModel):
|
||||
"""更新资料/凭据。``current_password`` 仅在修改用户名/密码时校验。"""
|
||||
|
||||
current_password: str = ""
|
||||
new_username: str | None = None
|
||||
new_password: str | None = None
|
||||
expires_in: int | None = None
|
||||
# 演示用户资料字段(账户管理页可编辑)
|
||||
nickname: str | None = None
|
||||
account: str | None = None
|
||||
company: str | None = None
|
||||
room: str | None = None
|
||||
avatar: str | None = None
|
||||
company_avatar: str | None = None
|
||||
|
||||
|
||||
class RevokeTokenRequest(BaseModel):
|
||||
token: str | None = Field(
|
||||
default=None,
|
||||
description="要吊销的令牌;省略则吊销当前令牌",
|
||||
)
|
||||
|
||||
|
||||
class AgentCreate(BaseModel):
|
||||
"""创建智能体身份。"""
|
||||
|
||||
name: str
|
||||
description: str = ""
|
||||
language: str = "zh"
|
||||
model_name: str = ""
|
||||
|
||||
|
||||
class AgentUpdate(BaseModel):
|
||||
"""更新智能体身份字段(可空字段,仅提交需要变更的项)。"""
|
||||
|
||||
name: str | None = None
|
||||
description: str | None = None
|
||||
language: str | None = None
|
||||
model_name: str | None = None
|
||||
use_fixed_soul: bool | None = None
|
||||
|
||||
|
||||
class AgentInfo(BaseModel):
|
||||
"""智能体身份记录(按用户隔离)。
|
||||
|
||||
- ``deletable``:是否允许删除(默认智能体由服务端保护为不可删)。
|
||||
- ``use_fixed_soul``:该智能体是否**必须**使用服务端托管、最高优先级的
|
||||
``fixed_soul`` 不可变段(否则忽略)。
|
||||
"""
|
||||
|
||||
id: str
|
||||
user_id: str
|
||||
port: str = "opc"
|
||||
name: str
|
||||
description: str = ""
|
||||
language: str = "zh"
|
||||
model_name: str = ""
|
||||
created_at: str = ""
|
||||
updated_at: str = ""
|
||||
deletable: bool = True
|
||||
use_fixed_soul: bool = False
|
||||
|
||||
|
||||
class AuthStatusResponse(BaseModel):
|
||||
enabled: bool
|
||||
has_users: bool
|
||||
|
||||
|
||||
class VerifyResponse(BaseModel):
|
||||
valid: bool
|
||||
username: str = ""
|
||||
|
||||
|
||||
class UserProfile(BaseModel):
|
||||
"""用户资料(登录/me/update-profile 均返回该结构)。"""
|
||||
|
||||
username: str = ""
|
||||
nickname: str = ""
|
||||
account: str = ""
|
||||
company: str = ""
|
||||
room: str = ""
|
||||
avatar: str = ""
|
||||
company_avatar: str = ""
|
||||
# RBAC(登录/me 返回;update-profile 不重签时不返回权限明细)
|
||||
role: str = "opc_member"
|
||||
sub_role: str | None = None
|
||||
org_id: str | None = None
|
||||
region_id: str | None = None
|
||||
permissions: list[str] = Field(default_factory=list)
|
||||
scope_region_ids: list[str] = Field(default_factory=list)
|
||||
# 当前生效的端口身份(多身份绑定)
|
||||
identity_id: str | None = None
|
||||
port: str | None = None
|
||||
identity_name: str = ""
|
||||
|
||||
|
||||
class LoginResponse(UserProfile):
|
||||
"""登录/注册成功后的响应:资料 + 新令牌。"""
|
||||
|
||||
token: str = ""
|
||||
identities: list[IdentityInfo] = Field(default_factory=list)
|
||||
|
||||
|
||||
class ProfileResponse(UserProfile):
|
||||
"""update-profile 成功后的响应;修改凭据时附带新令牌。"""
|
||||
|
||||
token: str = ""
|
||||
identities: list[IdentityInfo] = Field(default_factory=list)
|
||||
|
||||
|
||||
class IdentityInfo(BaseModel):
|
||||
"""账号绑定的一端口身份摘要(登录/选择身份时返回)。"""
|
||||
|
||||
id: str
|
||||
port: str = "opc"
|
||||
role: str = "opc_member"
|
||||
sub_role: str | None = None
|
||||
name: str = ""
|
||||
org_id: str | None = None
|
||||
region_id: str | None = None
|
||||
org_name: str | None = None
|
||||
region_name: str | None = None
|
||||
status: str = "active"
|
||||
|
||||
|
||||
class SelectIdentityRequest(BaseModel):
|
||||
"""切换到指定端口身份:为新身份签发令牌。"""
|
||||
|
||||
identity_id: str
|
||||
|
||||
|
||||
# RBAC 管理请求/响应
|
||||
class SetUserRoleRequest(BaseModel):
|
||||
role: str
|
||||
sub_role: str | None = None
|
||||
org_id: str | None = None
|
||||
region_id: str | None = None
|
||||
|
||||
|
||||
class SetUserStatusRequest(BaseModel):
|
||||
status: str = "active" # active | disabled
|
||||
|
||||
Reference in New Issue
Block a user