108 lines
4.3 KiB
Python
108 lines
4.3 KiB
Python
"""
|
||
场景挖掘模块的数据模型
|
||
"""
|
||
from typing import Optional, List, Dict, Any
|
||
from pydantic import BaseModel, Field
|
||
|
||
|
||
# ==================== 请求模型 ====================
|
||
|
||
class CompanyInfo(BaseModel):
|
||
"""企业信息"""
|
||
industry: List[str] = Field(..., description="行业列表")
|
||
description: str = Field(..., description="企业描述")
|
||
data_scale: str = Field(..., description="数据规模")
|
||
data_sources: List[str] = Field(..., description="数据来源")
|
||
|
||
|
||
class DataAsset(BaseModel):
|
||
"""数据资产"""
|
||
name: str = Field(..., description="资产名称")
|
||
core_tables: List[str] = Field(..., description="核心表名列表")
|
||
description: str = Field(..., description="资产描述")
|
||
|
||
|
||
class ExistingScenario(BaseModel):
|
||
"""存量场景"""
|
||
name: str = Field(..., description="场景名称")
|
||
description: str = Field(..., description="场景描述")
|
||
|
||
|
||
class ScenarioRecommendationOptions(BaseModel):
|
||
"""场景推荐选项"""
|
||
model: Optional[str] = Field("qwen-max", description="大模型选择")
|
||
recommendation_count: int = Field(10, ge=1, le=20, description="推荐数量")
|
||
exclude_types: List[str] = Field(default_factory=list, description="排除的场景类型")
|
||
|
||
|
||
class ScenarioRecommendationRequest(BaseModel):
|
||
"""场景推荐请求"""
|
||
project_id: str = Field(..., description="项目ID")
|
||
company_info: CompanyInfo = Field(..., description="企业信息")
|
||
data_assets: List[DataAsset] = Field(..., description="数据资产列表")
|
||
existing_scenarios: List[ExistingScenario] = Field(
|
||
default_factory=list, description="存量场景列表"
|
||
)
|
||
options: Optional[ScenarioRecommendationOptions] = Field(None, description="可选配置")
|
||
|
||
class Config:
|
||
json_schema_extra = {
|
||
"example": {
|
||
"project_id": "project_001",
|
||
"company_info": {
|
||
"industry": ["retail-fresh"],
|
||
"description": "某连锁生鲜零售企业,主营水果、蔬菜等生鲜产品",
|
||
"data_scale": "100TB",
|
||
"data_sources": ["self-generated"]
|
||
},
|
||
"data_assets": [
|
||
{
|
||
"name": "会员基础信息表",
|
||
"core_tables": ["Dim_Customer"],
|
||
"description": "存储C端注册用户的核心身份信息"
|
||
},
|
||
{
|
||
"name": "订单流水记录表",
|
||
"core_tables": ["Fact_Sales"],
|
||
"description": "全渠道销售交易明细"
|
||
}
|
||
],
|
||
"existing_scenarios": [
|
||
{
|
||
"name": "月度销售经营报表",
|
||
"description": "统计各区域门店的月度GMV,维度单一"
|
||
}
|
||
],
|
||
"options": {
|
||
"model": "qwen-max",
|
||
"recommendation_count": 10,
|
||
"exclude_types": []
|
||
}
|
||
}
|
||
}
|
||
|
||
|
||
# ==================== 响应模型 ====================
|
||
|
||
class RecommendedScenario(BaseModel):
|
||
"""推荐场景"""
|
||
id: int = Field(..., ge=1, description="场景ID")
|
||
name: str = Field(..., description="场景名称")
|
||
type: str = Field(..., description="场景类型")
|
||
recommendation_index: int = Field(..., ge=1, le=5, description="推荐指数(1-5星)")
|
||
desc: str = Field(..., description="场景描述")
|
||
dependencies: List[str] = Field(..., description="依赖的数据资产")
|
||
business_value: str = Field(..., description="商业价值")
|
||
implementation_difficulty: str = Field(..., description="实施难度")
|
||
estimated_roi: str = Field(..., description="预估ROI")
|
||
technical_requirements: List[str] = Field(..., description="技术要求")
|
||
data_requirements: List[str] = Field(..., description="数据要求")
|
||
|
||
|
||
class ScenarioRecommendationResponse(BaseModel):
|
||
"""场景推荐响应"""
|
||
recommended_scenarios: List[RecommendedScenario] = Field(..., description="推荐场景列表")
|
||
total_count: int = Field(..., ge=0, description="总场景数")
|
||
generation_time: float = Field(..., ge=0, description="生成耗时(秒)")
|
||
model_used: str = Field(..., description="使用的大模型")
|