"""图表工具的输入输出"""
from typing import Any, Literal
from pydantic import BaseModel, Field
from apps.scheduler.call.core import DataBase
class RenderStyleResult(BaseModel):
"""选择图表样式结果"""
chart_type: Literal["bar", "pie", "line", "scatter"] = Field(description="图表类型")
additional_style: Literal["normal", "stacked", "ring"] | None = Field(description="图表样式")
scale_type: Literal["linear", "log"] = Field(description="图表比例")
class RenderAxis(BaseModel):
"""ECharts图表的轴配置"""
type: str = Field(description="轴的类型")
axisTick: dict = Field(description="轴刻度配置")
class RenderFormat(BaseModel):
"""ECharts图表配置"""
tooltip: dict[str, Any] = Field(description="ECharts图表的提示框配置")
legend: dict[str, Any] = Field(description="ECharts图表的图例配置")
dataset: dict[str, Any] = Field(description="ECharts图表的数据集配置")
xAxis: RenderAxis = Field(description="ECharts图表的X轴配置")
yAxis: RenderAxis = Field(description="ECharts图表的Y轴配置")
series: list[dict[str, Any]] = Field(description="ECharts图表的数据列配置")
class RenderInput(DataBase):
"""图表工具的输入"""
question: str = Field(description="用户输入")
data: list[dict[str, Any]] = Field(description="图表数据")
class RenderOutput(DataBase):
"""Render工具的输出"""
output: RenderFormat = Field(description="ECharts图表配置")