46 lines
2.1 KiB
Python
46 lines
2.1 KiB
Python
import uuid
|
|
from datetime import datetime
|
|
|
|
from pydantic import BaseModel, Field
|
|
|
|
|
|
class SchemaAdviseRequest(BaseModel):
|
|
brand_id: uuid.UUID = Field(..., description="品牌ID")
|
|
target_url: str | None = Field(None, description="目标页面URL")
|
|
focus_dimensions: list[str] | None = Field(None, description="聚焦的诊断维度")
|
|
|
|
|
|
class SchemaSuggestionResponse(BaseModel):
|
|
id: uuid.UUID = Field(..., description="建议ID")
|
|
brand_id: uuid.UUID = Field(..., description="品牌ID")
|
|
schema_type: str = Field(..., description="Schema类型: Organization/Product/FAQPage/Article/LocalBusiness")
|
|
target_url: str | None = Field(None, description="目标页面URL")
|
|
json_ld_template: dict = Field(..., description="JSON-LD模板")
|
|
json_ld_filled: dict | None = Field(None, description="填充后的JSON-LD")
|
|
priority: str = Field(default="medium", description="优先级: high/medium/low")
|
|
status: str = Field(default="pending", description="状态: pending/applied/dismissed")
|
|
diagnosis_dimensions: dict | None = Field(None, description="诊断维度数据")
|
|
implementation_difficulty: str = Field(default="medium", description="实施难度: easy/medium/hard")
|
|
estimated_impact: str | None = Field(None, description="预期影响描述")
|
|
validation_errors: dict | None = Field(None, description="验证错误信息")
|
|
created_at: datetime = Field(..., description="创建时间")
|
|
updated_at: datetime = Field(..., description="更新时间")
|
|
|
|
class Config:
|
|
from_attributes = True
|
|
|
|
|
|
class SchemaSuggestionList(BaseModel):
|
|
suggestions: list[SchemaSuggestionResponse] = Field(default_factory=list, description="建议列表")
|
|
total: int = Field(..., description="总数")
|
|
|
|
|
|
class SchemaValidationResult(BaseModel):
|
|
is_valid: bool = Field(..., description="是否有效")
|
|
errors: list[str] = Field(default_factory=list, description="错误列表")
|
|
warnings: list[str] = Field(default_factory=list, description="警告列表")
|
|
|
|
|
|
class SchemaStatusUpdateRequest(BaseModel):
|
|
status: str = Field(..., description="新状态: pending/applied/dismissed")
|