feat: restore source parity and harden agent runtime
This commit is contained in:
@@ -0,0 +1,122 @@
|
||||
from typing import Optional, List, Any, Dict
|
||||
|
||||
from pydantic import BaseModel, ConfigDict, Field
|
||||
|
||||
from app.base_schema import CSTDatetime
|
||||
|
||||
|
||||
# ==================== Role ====================
|
||||
|
||||
class SmartTableRoleCreate(BaseModel):
|
||||
name: str = Field(..., min_length=1, max_length=64, description="角色名称")
|
||||
role_type: str = Field(default="custom", description="角色类型")
|
||||
capabilities: Dict[str, bool] = Field(default_factory=dict, description="能力配置")
|
||||
|
||||
|
||||
class SmartTableRoleUpdate(BaseModel):
|
||||
name: Optional[str] = Field(None, min_length=1, max_length=64, description="角色名称")
|
||||
capabilities: Optional[Dict[str, bool]] = Field(None, description="能力配置")
|
||||
|
||||
|
||||
class SmartTableRoleResponse(BaseModel):
|
||||
id: str
|
||||
table_id: Optional[str] = None
|
||||
name: str
|
||||
role_type: str
|
||||
capabilities: Dict[str, bool] = {}
|
||||
is_system: bool = False
|
||||
sys_create_datetime: Optional[CSTDatetime] = None
|
||||
|
||||
model_config = ConfigDict(from_attributes=True)
|
||||
|
||||
|
||||
# ==================== Collaborator ====================
|
||||
|
||||
class CollaboratorCreate(BaseModel):
|
||||
subject_type: str = Field(..., description="授权对象类型: user/dept/role")
|
||||
subject_id: str = Field(..., description="授权对象ID")
|
||||
role_id: str = Field(..., description="表角色ID")
|
||||
|
||||
|
||||
class CollaboratorUpdate(BaseModel):
|
||||
role_id: str = Field(..., description="表角色ID")
|
||||
|
||||
|
||||
class CollaboratorResponse(BaseModel):
|
||||
id: str
|
||||
table_id: str
|
||||
subject_type: str
|
||||
subject_id: str
|
||||
role_id: str
|
||||
role_name: Optional[str] = None
|
||||
role_type: Optional[str] = None
|
||||
subject_name: Optional[str] = None
|
||||
subject_avatar: Optional[str] = None
|
||||
sys_create_datetime: Optional[CSTDatetime] = None
|
||||
|
||||
model_config = ConfigDict(from_attributes=True)
|
||||
|
||||
|
||||
# ==================== Field Permission ====================
|
||||
|
||||
class FieldPermItem(BaseModel):
|
||||
field_id: str = Field(..., description="字段ID")
|
||||
access: str = Field(default="write", description="访问级别: write/read/hidden")
|
||||
|
||||
|
||||
class FieldPermBatchUpdate(BaseModel):
|
||||
role_id: str = Field(..., description="表角色ID")
|
||||
permissions: List[FieldPermItem] = Field(..., description="列权限列表")
|
||||
|
||||
|
||||
class FieldPermResponse(BaseModel):
|
||||
id: str
|
||||
table_id: str
|
||||
role_id: str
|
||||
field_id: str
|
||||
access: str = "write"
|
||||
|
||||
model_config = ConfigDict(from_attributes=True)
|
||||
|
||||
|
||||
class FieldPermMatrix(BaseModel):
|
||||
"""列权限矩阵:按角色分组"""
|
||||
role_id: str
|
||||
role_name: str
|
||||
role_type: str
|
||||
fields: List[FieldPermItem] = []
|
||||
|
||||
|
||||
# ==================== Row Rule ====================
|
||||
|
||||
class RowRuleUpdate(BaseModel):
|
||||
role_id: str = Field(..., description="表角色ID")
|
||||
rule_type: str = Field(..., description="规则类型: view/edit")
|
||||
mode: str = Field(default="all", description="模式: all/conditions/creator_only")
|
||||
conditions: List[Dict[str, Any]] = Field(default_factory=list, description="过滤条件")
|
||||
|
||||
|
||||
class RowRuleResponse(BaseModel):
|
||||
id: str
|
||||
table_id: str
|
||||
role_id: str
|
||||
rule_type: str
|
||||
mode: str = "all"
|
||||
conditions: List[Dict[str, Any]] = []
|
||||
|
||||
model_config = ConfigDict(from_attributes=True)
|
||||
|
||||
|
||||
# ==================== My Permission ====================
|
||||
|
||||
class MyPermissionResponse(BaseModel):
|
||||
"""当前用户对某表的有效权限"""
|
||||
role_type: str = Field(description="角色类型: owner/manager/editor/viewer/custom/superadmin")
|
||||
role_name: str = Field(description="角色名称")
|
||||
capabilities: Dict[str, bool] = Field(default_factory=dict, description="能力配置")
|
||||
field_permissions: Dict[str, str] = Field(
|
||||
default_factory=dict,
|
||||
description="列权限映射: fieldId -> write/read/hidden"
|
||||
)
|
||||
row_view_mode: str = Field(default="all", description="行查看模式")
|
||||
row_edit_mode: str = Field(default="all", description="行编辑模式")
|
||||
Reference in New Issue
Block a user