import os
from typing import Optional, Annotated, Literal
from pydantic import BaseModel, Field, AnyHttpUrl
def _get_resource_base_uri():
return os.getenv("WORKSPACE_RESOURCE_BASE_URI") or "../../"
class WorkspaceConfig(BaseModel):
"""工作路径配置
- work_root: 作为所有运行输出与存储的基础路径
"""
work_root: str = Field(
default="./data",
description="Base working directory for outputs and storage",
)
chart_image_dir: str = Field(
default="charts",
description="Relative image save directory under work_root",
)
image_base_url: Optional[str] = Field(
default=None,
description="Base URL for serving chart images",
)
image_path_mode: str = Field(
default="relative",
description="Path mode for image return: relative | base_url",
)
conference_ppt_template_path: Optional[str] = Field(
default=None,
description="PPT 模板路径(用于会议洞察报告生成)",
)
resource_base_uri: Annotated[Literal["../../"] | AnyHttpUrl, Field(default_factory=_get_resource_base_uri)]
"""在 Markdown 中由 DeepInsight 生成的图片等超链接资源使用的 uri 前缀。
对于本地运行模式,总是保持 ../../
对于需要由 http 访问的场景,则应当开启 file_storage.remote_access 且与其设置或其他可访问方式保持一致。
"""