72 lines
1.4 KiB
Python
72 lines
1.4 KiB
Python
from __future__ import annotations
|
|
|
|
from pydantic import BaseModel, Field
|
|
|
|
|
|
class GEODiagnosisTriggerRequest(BaseModel):
|
|
force_refresh: bool = Field(default=False)
|
|
|
|
|
|
class GEODiagnosisTaskResponse(BaseModel):
|
|
task_id: str
|
|
brand_id: str
|
|
status: str
|
|
|
|
|
|
class GEODimensionItemResponse(BaseModel):
|
|
name: str
|
|
status: str
|
|
description: str
|
|
suggestion: str
|
|
score: float
|
|
max_score: float
|
|
|
|
|
|
class GEODimensionResponse(BaseModel):
|
|
name: str
|
|
score: float
|
|
max_score: float
|
|
percentage: float
|
|
status: str
|
|
items: list[GEODimensionItemResponse]
|
|
detail: dict
|
|
|
|
|
|
class GEORecommendationResponse(BaseModel):
|
|
priority: str
|
|
dimension: str
|
|
title: str
|
|
description: str
|
|
impact: str
|
|
effort: str
|
|
|
|
|
|
class GEODiagnosisResponse(BaseModel):
|
|
overall_score: float
|
|
health_level: str
|
|
health_level_label: str
|
|
dimensions: list[GEODimensionResponse]
|
|
recommendations: list[GEORecommendationResponse]
|
|
is_full_report: bool = False
|
|
|
|
|
|
class GEODiagnosisResultResponse(BaseModel):
|
|
task_id: str
|
|
brand_id: str
|
|
status: str
|
|
result: GEODiagnosisResponse | None = None
|
|
error: str | None = None
|
|
|
|
|
|
class GEODiagnosisHistoryItem(BaseModel):
|
|
task_id: str
|
|
overall_score: float
|
|
health_level: str
|
|
created_at: str
|
|
completed_at: str | None = None
|
|
|
|
|
|
class GEODiagnosisHistoryResponse(BaseModel):
|
|
brand_id: str
|
|
history: list[GEODiagnosisHistoryItem]
|