75 lines
2.4 KiB
Python
75 lines
2.4 KiB
Python
"""
|
||
知识库模型
|
||
"""
|
||
from datetime import datetime
|
||
from typing import Optional
|
||
from pydantic import BaseModel, Field
|
||
|
||
|
||
class KnowledgeBase(BaseModel):
|
||
"""知识库模型"""
|
||
id: Optional[int] = None
|
||
user_id: int
|
||
enterprise_id: Optional[int] = None
|
||
department_id: Optional[int] = None
|
||
creator_id: Optional[int] = None
|
||
visibility: str = Field("private", description="private | department | enterprise")
|
||
name: str = Field(..., max_length=255)
|
||
description: Optional[str] = None
|
||
created_at: Optional[datetime] = None
|
||
updated_at: Optional[datetime] = None
|
||
is_deleted: bool = False
|
||
deleted_at: Optional[datetime] = None
|
||
|
||
class Config:
|
||
from_attributes = True
|
||
|
||
|
||
class KnowledgeBaseCreate(BaseModel):
|
||
"""创建知识库请求模型"""
|
||
name: str = Field(..., max_length=255, description="知识库名称")
|
||
description: Optional[str] = Field(None, description="知识库描述(可选)")
|
||
visibility: str = Field(
|
||
"private",
|
||
description="可见性:private 仅创建者与部门领导;department 本部门;enterprise 全企业",
|
||
)
|
||
|
||
|
||
class KnowledgeBaseUpdate(BaseModel):
|
||
"""更新知识库请求模型"""
|
||
name: Optional[str] = Field(None, max_length=255, description="知识库名称")
|
||
description: Optional[str] = Field(None, description="知识库描述")
|
||
visibility: Optional[str] = Field(None, description="private | department | enterprise")
|
||
|
||
|
||
class KnowledgeBaseResponse(BaseModel):
|
||
"""知识库响应模型"""
|
||
id: int
|
||
user_id: int
|
||
enterprise_id: Optional[int] = None
|
||
department_id: Optional[int] = None
|
||
creator_id: Optional[int] = None
|
||
visibility: str = "private"
|
||
name: str
|
||
description: Optional[str] = None
|
||
created_at: datetime
|
||
updated_at: datetime
|
||
# 列表/详情展示:创建者与部门(JOIN 得到)
|
||
creator_username: Optional[str] = None
|
||
creator_display_name: Optional[str] = None
|
||
department_name: Optional[str] = None
|
||
is_mine: bool = Field(False, description="当前登录用户是否为创建者")
|
||
|
||
class Config:
|
||
from_attributes = True
|
||
|
||
|
||
class KnowledgeBaseListResponse(BaseModel):
|
||
"""知识库列表响应模型"""
|
||
total: int = Field(..., description="总数量")
|
||
items: list[KnowledgeBaseResponse] = Field(..., description="知识库列表")
|
||
|
||
class Config:
|
||
from_attributes = True
|
||
|