refactor(#774): 统一配置管理,消除重复定义和默认值不一致 #784
Reference in New Issue
Block a user
Delete Branch "refactor/unified-config-management"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
代码质量专项 P0 第一单:统一配置管理
问题
修复方案
SharedSettings 作为统一配置基类,API和Worker都继承,只追加特有字段。
packages/shared/config.py — 统一配置入口
apps/api/app/config.py — 继承 SharedSettings
apps/worker/worker_app/core/config.py — 继承 SharedSettings
测试
收益
代码审查结果 - PR #784
⚠️ 问题(2个需要修改)
packages/shared/config.py 第16行:Worker 数据库连接池配置被错误缩小。
apps/worker/配置中database_max_overflow为 40(最大连接数 60),现统一到SharedSettings中改为 10(最大连接数 30)。Worker 服务通常处理高并发后台任务(如视频渲染、AI处理),连接池过小可能导致任务阻塞或数据库获取连接超时。packages/shared/config.py 第65行:环境文件加载逻辑可能失效。
model_config中硬编码了env_file=".env",而get_shared_settings函数中读取了APP_ENV试图加载.env.{env}。如果在实例化SharedSettings()时未显式传递_env_file参数,model_config中的硬编码将生效,导致APP_ENV环境切换逻辑失效,始终只加载.env。💡 建议(2个可选)
apps/api/app/config.py 第123行:属性映射代码冗长。
@property来做 UPPER_CASE 到 snake_case 的兼容。虽然可行,但增加了大量样板代码。建议利用 Pydantic 的populate_by_name = True配合Field(alias=...)来自动处理别名,或使用pydantic.AliasChoices,减少维护成本。apps/api/app/config.py 第94行:校验逻辑中的环境变量读取方式不一致。
validate_oss_access_key_id中使用os.getenv("APP_ENV")判断环境。由于配置类中已经定义了environment字段,建议在校验器中尽量依赖 Pydantic 模型自身的字段值(需注意mode="before"时模型尚未初始化),或者确保APP_ENV与environment字段含义严格一致,避免两套环境变量逻辑混淆。✅ 格式检查通过 | ❌ 逻辑审查需修改 | ⚠️ 建议关注性能
🤖 由 AI 代码审查机器人自动生成 | 2026-07-23 13:39:28 | 模型:
🗑️ 预览环境已清理
PR #784 已关闭或合并,对应的预览环境已被清理。