74 lines
2.5 KiB
Python
74 lines
2.5 KiB
Python
"""优化建议 Schema"""
|
|
import uuid
|
|
from datetime import datetime
|
|
|
|
from pydantic import BaseModel, Field
|
|
|
|
|
|
class SuggestionBase(BaseModel):
|
|
"""建议基础Schema"""
|
|
type: str = Field(
|
|
...,
|
|
description="建议类型: content_optimization/platform_targeting/competitor_gap/query_expansion/citation_improvement",
|
|
)
|
|
priority: str = Field(
|
|
default="medium",
|
|
description="优先级: high/medium/low",
|
|
)
|
|
title: str = Field(..., description="建议标题")
|
|
description: str = Field(..., description="详细描述")
|
|
action: str | None = Field(None, description="具体操作步骤")
|
|
expected_impact: str | None = Field(None, description="预期效果")
|
|
difficulty: str = Field(
|
|
default="medium",
|
|
description="难度: easy/medium/hard",
|
|
)
|
|
|
|
|
|
class SuggestionCreate(SuggestionBase):
|
|
"""创建建议Schema"""
|
|
pass
|
|
|
|
|
|
class SuggestionResponse(SuggestionBase):
|
|
"""建议响应Schema"""
|
|
id: uuid.UUID = Field(..., description="建议ID")
|
|
brand_id: uuid.UUID = Field(..., description="品牌ID")
|
|
status: str = Field(default="pending", description="状态: pending/in_progress/completed/dismissed")
|
|
generated_at: datetime = Field(..., description="生成时间")
|
|
updated_at: datetime = Field(..., description="更新时间")
|
|
batch_id: uuid.UUID = Field(..., description="生成批次ID")
|
|
source: str = Field(default="rule", description="生成来源: rule/llm")
|
|
|
|
class Config:
|
|
from_attributes = True
|
|
|
|
|
|
class SuggestionListResponse(BaseModel):
|
|
"""建议列表响应"""
|
|
suggestions: list[SuggestionResponse] = Field(default_factory=list)
|
|
total: int = Field(..., description="总数")
|
|
|
|
|
|
class SuggestionUpdateStatus(BaseModel):
|
|
"""更新建议状态"""
|
|
status: str = Field(
|
|
...,
|
|
description="新状态: pending/in_progress/completed/dismissed",
|
|
)
|
|
|
|
|
|
class SuggestionHistoryItem(BaseModel):
|
|
"""建议历史条目"""
|
|
batch_id: uuid.UUID = Field(..., description="批次ID")
|
|
generated_at: datetime = Field(..., description="生成时间")
|
|
source: str = Field(..., description="生成来源: rule/llm")
|
|
suggestion_count: int = Field(..., description="建议数量")
|
|
suggestions: list[SuggestionResponse] = Field(default_factory=list)
|
|
|
|
|
|
class SuggestionHistoryResponse(BaseModel):
|
|
"""建议历史响应"""
|
|
history: list[SuggestionHistoryItem] = Field(default_factory=list)
|
|
total: int = Field(..., description="历史批次总数")
|