"""应用配置中心。 集中读取环境变量并推导路径常量,避免业务代码散落魔法值。路径统一使用 pathlib,Windows 与 Linux 开发环境均可用。 """ from __future__ import annotations import os from pathlib import Path # WOV 单体根目录:本文件位于 src/wov_app/config.py,向上三级即仓库根。 WORKSPACE_ROOT = Path(__file__).resolve().parent.parent.parent # 数据目录、SQLite 文件与产物存储目录均可通过环境变量覆盖,便于测试隔离。 DATA_DIR = Path(os.getenv("WOV_DATA_DIR", str(WORKSPACE_ROOT / "data"))) DB_PATH = Path(os.getenv("WOV_DB_PATH", str(DATA_DIR / "wov.db"))) STORAGE_DIR = Path(os.getenv("WOV_STORAGE_DIR", str(DATA_DIR / "storage"))) # 调度器轮询排队任务的间隔(秒)。 SCHEDULER_INTERVAL_SECONDS = float(os.getenv("WOV_SCHEDULER_INTERVAL_SECONDS", "1.0")) # 批量处理引擎开关与轮询间隔:引擎处理 source=batch 的任务(文件夹批量处理), # 与主调度器互不抢占;测试与不需要该功能的部署可关闭。 BATCH_ENABLED = os.getenv("WOV_BATCH_ENABLED", "1") == "1" BATCH_INTERVAL_SECONDS = float(os.getenv("WOV_BATCH_INTERVAL_SECONDS", "1.0")) # 批量"分块流水线"分组大小:每组视频按节点顺序跑完全部阶段(全部 extract → 全部 # ASR → 全部翻译 → 全部 ASS)再处理下一组,使本地模型每组只加载一次;产物仍按 # 组增量落地(详见 docs/operations.md#文件夹批量处理)。 BATCH_STAGE_GROUP_SIZE = int(os.getenv("WOV_BATCH_STAGE_GROUP_SIZE", "8")) # 孤儿数据清理器配置:定时扫描并清理无对应文件/记录的死数据。 CLEANUP_ENABLED = os.getenv("WOV_CLEANUP_ENABLED", "1") == "1" # 清理扫描周期(秒),默认每小时一次。 CLEANUP_INTERVAL_SECONDS = float(os.getenv("WOV_CLEANUP_INTERVAL_SECONDS", "3600")) # 宽限期(秒):任务最后更新距今超过该时长且满足孤儿条件才清理。 CLEANUP_GRACE_SECONDS = float(os.getenv("WOV_CLEANUP_GRACE_SECONDS", "3600"))