# ============================================================================= # 企微IT智能服务台 — 知识库优化建议 Pydantic Schema # ============================================================================= # 说明:定义知识库优化建议的请求/响应数据结构 # 包含:建议创建、审核、列表查询等 # ============================================================================= from datetime import datetime from typing import List, Optional from pydantic import BaseModel, Field # ----------------------------------------------------------------------------- # 创建建议请求 Schema # ----------------------------------------------------------------------------- class KnowledgeSuggestionCreate(BaseModel): """创建知识库优化建议请求 Schema。 通常由AI分析服务自动创建,也可手动创建。 """ suggestion_type: str = Field( ..., description="建议类型:new_faq=新增FAQ/update=更新/outdated=标记过时", ) title: str = Field(..., description="建议标题", max_length=256) content: str = Field(..., description="答案内容") category: str = Field(default="其他", description="分类") tags: List[str] = Field(default_factory=list, description="标签列表") source_type: str = Field( ..., description="分析来源:annotation=标注数据/conversation=会话数据/ai_uncertain=AI不确定", ) source_data: Optional[List[str]] = Field( default=None, description="相关会话ID或标注ID列表" ) reason: Optional[str] = Field(default=None, description="生成理由") # ----------------------------------------------------------------------------- # 审核建议请求 Schema # ----------------------------------------------------------------------------- class KnowledgeSuggestionApprove(BaseModel): """审核通过知识库优化建议请求 Schema。""" pass class KnowledgeSuggestionReject(BaseModel): """拒绝知识库优化建议请求 Schema。""" reject_reason: str = Field(..., description="拒绝理由", max_length=500) # ----------------------------------------------------------------------------- # 知识库优化建议响应 Schema # ----------------------------------------------------------------------------- class KnowledgeSuggestionResponse(BaseModel): """知识库优化建议响应 Schema。 返回建议记录详情。 """ id: str = Field(..., description="建议ID") suggestion_type: str = Field(..., description="建议类型") status: str = Field(..., description="状态") title: str = Field(..., description="标题") content: str = Field(..., description="内容") category: str = Field(..., description="分类") tags: List[str] = Field(default_factory=list, description="标签列表") source_type: str = Field(..., description="分析来源") source_data: Optional[List[str]] = Field(default=None, description="来源数据") reason: Optional[str] = Field(default=None, description="生成理由") reject_reason: Optional[str] = Field(default=None, description="拒绝理由") reviewer_id: Optional[str] = Field(default=None, description="审核人ID") reviewed_at: Optional[datetime] = Field(default=None, description="审核时间") created_at: datetime = Field(..., description="创建时间") updated_at: datetime = Field(..., description="更新时间") class Config: from_attributes = True # ----------------------------------------------------------------------------- # 知识库优化建议列表响应 Schema # ----------------------------------------------------------------------------- class KnowledgeSuggestionListResponse(BaseModel): """知识库优化建议列表响应 Schema。""" total: int = Field(..., description="总数量") items: List[KnowledgeSuggestionResponse] = Field(..., description="建议列表") # ----------------------------------------------------------------------------- # 知识库优化建议统计 Schema # ----------------------------------------------------------------------------- class KnowledgeSuggestionStatsResponse(BaseModel): """知识库优化建议统计响应 Schema。""" total: int = Field(..., description="总建议数") pending: int = Field(..., description="待审核数") approved: int = Field(..., description="已通过数") rejected: int = Field(..., description="已拒绝数") applied: int = Field(..., description="已应用数") new_faq_count: int = Field(..., description="新增FAQ建议数") update_count: int = Field(..., description="更新建议数") outdated_count: int = Field(..., description="过时标记数")