完善配置密钥治理与启动校验
- 为 configuration.py 增加环境变量占位符解析、配置归一化、脱敏快照与启动校验\n- 在 main.py 启动阶段接入配置校验日志,并在致命缺项时阻止进程继续启动\n- 新增 config.example.yaml,并将默认 config.yaml 改为安全占位模板,移除仓库内明文敏感信息\n- 调整 docker-entrypoint.sh 与文档,统一说明配置复制、环境变量注入与当前优化进展
This commit is contained in:
37
main.py
37
main.py
@@ -63,8 +63,45 @@ logger.add(
|
||||
)
|
||||
|
||||
|
||||
def _log_config_validation(config: Config) -> None:
|
||||
"""输出启动期配置校验结果。"""
|
||||
validation_report = config.get_validation_report()
|
||||
errors = list(validation_report.get("errors", []) or [])
|
||||
warnings = list(validation_report.get("warnings", []) or [])
|
||||
|
||||
logger.info(
|
||||
"配置加载完成: "
|
||||
f"environment={config.environment}, "
|
||||
f"plugin_dir={config.plugin_dir}, "
|
||||
f"errors={len(errors)}, "
|
||||
f"warnings={len(warnings)}"
|
||||
)
|
||||
|
||||
# 这里只打印脱敏后的配置快照:
|
||||
# 1. 便于定位“到底加载了哪套配置”;
|
||||
# 2. 同时避免把数据库密码、API Key 再写进日志;
|
||||
# 3. 放在 DEBUG 级别,默认不会刷屏主日志。
|
||||
logger.debug(f"配置脱敏快照: {config.get_sanitized_snapshot()}")
|
||||
|
||||
for warning in warnings:
|
||||
logger.warning(
|
||||
f"配置告警[{warning.get('code', 'unknown')}] "
|
||||
f"{warning.get('path', 'root')}: {warning.get('message', '')}"
|
||||
)
|
||||
|
||||
for error in errors:
|
||||
logger.error(
|
||||
f"配置错误[{error.get('code', 'unknown')}] "
|
||||
f"{error.get('path', 'root')}: {error.get('message', '')}"
|
||||
)
|
||||
|
||||
if errors:
|
||||
raise ValueError("启动终止:存在未修复的致命配置错误,请先修正 config.yaml 或环境变量。")
|
||||
|
||||
|
||||
def main():
|
||||
config = Config()
|
||||
_log_config_validation(config)
|
||||
|
||||
# 创建机器人实例
|
||||
robot = Robot(config)
|
||||
|
||||
Reference in New Issue
Block a user