analysis_report.py
1.98 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
"""
数据模型 - 分析报告
四大板块:库存概览、销量分析、库存健康度、补货建议
"""
from dataclasses import dataclass, field
from datetime import datetime
from typing import Any, Dict, Optional
@dataclass
class AnalysisReport:
"""分析报告数据模型"""
task_no: str
group_id: int
dealer_grouping_id: int
id: Optional[int] = None
dealer_grouping_name: Optional[str] = None
brand_grouping_id: Optional[int] = None
report_type: str = "replenishment"
# 四大板块
inventory_overview: Optional[Dict[str, Any]] = field(default=None)
sales_analysis: Optional[Dict[str, Any]] = field(default=None)
inventory_health: Optional[Dict[str, Any]] = field(default=None)
replenishment_summary: Optional[Dict[str, Any]] = field(default=None)
# LLM 元数据
llm_provider: str = ""
llm_model: str = ""
llm_tokens: int = 0
execution_time_ms: int = 0
statistics_date: str = ""
create_time: Optional[datetime] = None
def to_dict(self) -> Dict[str, Any]:
"""将报告转换为可序列化的字典"""
return {
"id": self.id,
"task_no": self.task_no,
"group_id": self.group_id,
"dealer_grouping_id": self.dealer_grouping_id,
"dealer_grouping_name": self.dealer_grouping_name,
"brand_grouping_id": self.brand_grouping_id,
"report_type": self.report_type,
"inventory_overview": self.inventory_overview,
"sales_analysis": self.sales_analysis,
"inventory_health": self.inventory_health,
"replenishment_summary": self.replenishment_summary,
"llm_provider": self.llm_provider,
"llm_model": self.llm_model,
"llm_tokens": self.llm_tokens,
"execution_time_ms": self.execution_time_ms,
"statistics_date": self.statistics_date,
"create_time": self.create_time.isoformat() if self.create_time else None,
}