63 lines
1.8 KiB
Python
63 lines
1.8 KiB
Python
"""
|
|
知识库文档 Schema
|
|
"""
|
|
from typing import Optional, List
|
|
from datetime import datetime
|
|
|
|
from pydantic import BaseModel, Field, ConfigDict
|
|
|
|
from app.base_schema import CSTDatetime
|
|
|
|
|
|
class DocumentUploadInput(BaseModel):
|
|
"""文档上传输入(通过文件管理系统上传后传入 file_id)"""
|
|
file_id: str = Field(..., description="文件ID(来自文件管理系统)")
|
|
name: Optional[str] = Field(None, description="文档名称(不传则使用文件名)")
|
|
|
|
|
|
class DocumentBatchUploadInput(BaseModel):
|
|
"""批量文档上传"""
|
|
file_ids: List[str] = Field(..., min_length=1, description="文件ID列表")
|
|
|
|
|
|
class DocumentResponse(BaseModel):
|
|
"""文档输出"""
|
|
id: str
|
|
knowledge_base_id: str
|
|
file_id: Optional[str] = None
|
|
name: str
|
|
file_type: str = ""
|
|
file_size: int = 0
|
|
content_hash: str = ""
|
|
segment_count: int = 0
|
|
token_count: int = 0
|
|
char_count: int = 0
|
|
status: str = "pending"
|
|
error_message: str = ""
|
|
duplicate_warning: Optional[str] = None
|
|
enabled: bool = True
|
|
indexing_started_at: Optional[CSTDatetime] = None
|
|
indexing_completed_at: Optional[CSTDatetime] = None
|
|
sys_create_datetime: Optional[CSTDatetime] = None
|
|
sys_update_datetime: Optional[CSTDatetime] = None
|
|
|
|
model_config = ConfigDict(from_attributes=True)
|
|
|
|
|
|
class DocumentListResponse(BaseModel):
|
|
"""文档列表输出"""
|
|
id: str
|
|
knowledge_base_id: str
|
|
file_id: Optional[str] = None
|
|
name: str
|
|
file_type: str = ""
|
|
file_size: int = 0
|
|
segment_count: int = 0
|
|
token_count: int = 0
|
|
status: str = "pending"
|
|
duplicate_warning: Optional[str] = None
|
|
enabled: bool = True
|
|
sys_create_datetime: Optional[CSTDatetime] = None
|
|
|
|
model_config = ConfigDict(from_attributes=True)
|