Files
wecom_it_smart_desk/backend/app/schemas/knowledge_suggestion.py
T

109 lines
4.7 KiB
Python

# =============================================================================
# 企微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="过时标记数")