""" config.py 全局配置项。可通过 .env 文件或环境变量覆盖。 本项目为「报告生成」独立服务,仅保留报告生成链路所需配置: 数据库(MySQL) / LLM / Embedding / Milvus / 文档存储路径。 """ from pydantic_settings import BaseSettings, SettingsConfigDict class Settings(BaseSettings): # 应用基本信息 APP_TITLE: str = "智能报告生成服务 API" APP_VERSION: str = "0.1.0" APP_DESCRIPTION: str = "后评价报告分章异步生成后端服务(独立抽取版)" # 服务监听 HOST: str = "0.0.0.0" PORT: int = 8099 RELOAD: bool = False # CORS 允许的前端源(开发阶段放开,生产环境改为具体域名) CORS_ORIGINS: list[str] = ["*"] # 数据库(MySQL) DATABASE_URL: str = "mysql+pymysql://root:123456@127.0.0.1:3306/post_eval_report?charset=utf8mb4" DB_POOL_SIZE: int = 15 DB_MAX_OVERFLOW: int = 25 DB_POOL_TIMEOUT: int = 60 DB_POOL_PRE_PING: bool = True # 文档存储根目录(附图提取时按 DOC_PAT/{project_uuid}/<相对路径> 定位 .docx) DOC_PAT: str = "./docpath" # LLM(OpenAI 兼容接口) LLM_API_BASE: str = "" LLM_API_KEY: str = "" LLM_MODEL_NAME: str = "" LLM_HTTP_TIMEOUT_SEC: int = 120 LLM_CONNECT_TIMEOUT_SEC: int = 30 LLM_RETRY_COUNT: int = 3 LLM_RETRY_BACKOFF_SEC: float = 1.0 LLM_RETRY_BACKOFF_MAX_SEC: float = 12.0 # 报告章节单次 chat 读超时(秒)。0 表示沿用 LLM_HTTP_TIMEOUT_SEC;长章节建议 600+ REPORT_LLM_HTTP_TIMEOUT_SEC: int = 600 # 某章 LLM 仍失败时写入占位正文并继续后续章节,避免整份任务失败 REPORT_LLM_CONTINUE_ON_TIMEOUT: bool = True # 表格抽取延迟补抽(首轮失败后进入队列,按轮次延迟重试) LLM_TABLE_DELAY_RETRY_ROUNDS: int = 2 LLM_TABLE_DELAY_RETRY_SEC: float = 8.0 LLM_TABLE_DELAY_RETRY_BACKOFF: float = 2.0 LLM_TABLE_DELAY_RETRY_MAX_SEC: float = 60.0 # Embedding / Milvus(向量检索证据 L2/L3) EMBEDDING_API_KEY: str = "" EMBEDDING_API_BASE: str = "" EMBEDDING_BATCH_MAX_DOCS: int = 4 EMBEDDING_BATCH_MAX_CHARS: int = 12000 EMBEDDING_MAX_CHUNK_CHARS: int = 4000 MILVUS_DB_URL: str = "" model_config = SettingsConfigDict( env_file=".env", env_file_encoding="utf-8", extra="ignore", ) settings = Settings()