huoyan-enterprise/backend/models/knowledge_processing.py

98 lines
2.6 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

"""
知识加工任务模型
"""
from datetime import datetime
from typing import Optional, List
from pydantic import BaseModel, Field
from enum import Enum
class TaskType(str, Enum):
"""任务类型枚举"""
MERGE = "merge"
COMPARE = "compare"
SUMMARY = "summary"
CUSTOM = "custom"
class TaskStatus(str, Enum):
"""任务状态枚举"""
PENDING = "pending"
PROCESSING = "processing"
COMPLETED = "completed"
FAILED = "failed"
class KnowledgeProcessingTask(BaseModel):
"""知识加工任务模型"""
id: Optional[int] = None
user_id: int
knowledge_base_id: int
task_name: str = Field(..., max_length=255)
instruction: str
file_ids: List[int]
task_type: TaskType
status: TaskStatus = TaskStatus.PENDING
result: Optional[str] = None
result_file_url: Optional[str] = None
error_message: Optional[str] = None
created_at: Optional[datetime] = None
updated_at: Optional[datetime] = None
started_at: Optional[datetime] = None
completed_at: Optional[datetime] = None
class Config:
from_attributes = True
class TaskCreateRequest(BaseModel):
"""创建任务请求模型"""
task_name: str = Field(..., max_length=255, description="任务名称")
instruction: str = Field(..., min_length=1, description="加工指令")
file_ids: List[int] = Field(..., min_items=1, description="文件ID列表至少1个")
task_type: Optional[TaskType] = Field(TaskType.CUSTOM, description="任务类型可选默认为custom")
class TaskResponse(BaseModel):
"""任务响应模型"""
id: int
task_name: str
instruction: str
file_ids: List[int]
task_type: str
status: str
result: Optional[str] = None
result_file_url: Optional[str] = None
error_message: Optional[str] = None
created_at: datetime
updated_at: datetime
started_at: Optional[datetime] = None
completed_at: Optional[datetime] = None
class Config:
from_attributes = True
class TaskListResponse(BaseModel):
"""任务列表响应模型"""
total: int = Field(..., description="总数量")
items: List[TaskResponse] = Field(..., description="任务列表")
class Config:
from_attributes = True
class TaskStatusResponse(BaseModel):
"""任务状态响应模型(用于轮询)"""
id: int
status: str
result: Optional[str] = None
result_file_url: Optional[str] = None
error_message: Optional[str] = None
updated_at: datetime
started_at: Optional[datetime] = None
completed_at: Optional[datetime] = None
class Config:
from_attributes = True