2026-01-11 07:48:19 +08:00

108 lines
4.3 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

"""
场景挖掘模块的数据模型
"""
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="使用的大模型")