迁移wechat_ipad配置到环境变量并清理本地状态文件
This commit is contained in:
@@ -203,6 +203,28 @@ class Config(object):
|
||||
plugin_hot_reload["interval_seconds"] = self._safe_int(plugin_hot_reload.get("interval_seconds", 600), 600)
|
||||
normalized["plugin_hot_reload"] = plugin_hot_reload
|
||||
|
||||
# wechat_ipad 配置归一化:
|
||||
# 1. 静态连接参数现在统一走 config.yaml + .env,而不是要求用户维护独立 TOML;
|
||||
# 2. 登录后的 wxid / device_id / device_name 会落到本地状态文件,因此这里保留 state_file 配置;
|
||||
# 3. legacy_config_path 仅用于兼容历史仓库中的 `wechat_ipad/config.toml`,迁移完成后可逐步淡出。
|
||||
wechat_ipad_config = dict(normalized.get("wechat_ipad", {}) or {})
|
||||
wechat_ipad_config["server_port"] = self._safe_int(wechat_ipad_config.get("server_port", 8059), 8059)
|
||||
wechat_ipad_config["server_url"] = str(wechat_ipad_config.get("server_url", "") or "").strip()
|
||||
wechat_ipad_config["server_ip"] = str(wechat_ipad_config.get("server_ip", "") or "").strip()
|
||||
wechat_ipad_config["server_type"] = str(
|
||||
wechat_ipad_config.get("server_type", "legacy_855") or "legacy_855"
|
||||
).strip()
|
||||
wechat_ipad_config["wxid"] = str(wechat_ipad_config.get("wxid", "") or "").strip()
|
||||
wechat_ipad_config["device_name"] = str(wechat_ipad_config.get("device_name", "") or "").strip()
|
||||
wechat_ipad_config["device_id"] = str(wechat_ipad_config.get("device_id", "") or "").strip()
|
||||
wechat_ipad_config["state_file"] = str(
|
||||
wechat_ipad_config.get("state_file", "temp/wechat_ipad/config.toml") or "temp/wechat_ipad/config.toml"
|
||||
).strip()
|
||||
wechat_ipad_config["legacy_config_path"] = str(
|
||||
wechat_ipad_config.get("legacy_config_path", "wechat_ipad/config.toml") or "wechat_ipad/config.toml"
|
||||
).strip()
|
||||
normalized["wechat_ipad"] = wechat_ipad_config
|
||||
|
||||
return normalized
|
||||
|
||||
@classmethod
|
||||
@@ -317,6 +339,37 @@ class Config(object):
|
||||
"已配置告警接收人,但发件邮箱配置不完整,告警链路不可用。",
|
||||
)
|
||||
|
||||
def _validate_wechat_ipad_config(self, report: dict) -> None:
|
||||
"""检查 wechat_ipad 静态连接配置是否完整。"""
|
||||
wechat_ipad_config = self.wechat_ipad or {}
|
||||
server_url = str(wechat_ipad_config.get("server_url", "") or "").strip()
|
||||
server_ip = str(wechat_ipad_config.get("server_ip", "") or "").strip()
|
||||
server_port = wechat_ipad_config.get("server_port", 0)
|
||||
|
||||
if not server_url:
|
||||
self._append_issue(
|
||||
report["errors"],
|
||||
"missing_wechat_server_url",
|
||||
"wechat_ipad.server_url",
|
||||
"wechat_ipad server_url 未配置,机器人无法连接 wechat_ipad server。",
|
||||
)
|
||||
|
||||
if not server_ip:
|
||||
self._append_issue(
|
||||
report["errors"],
|
||||
"missing_wechat_server_ip",
|
||||
"wechat_ipad.server_ip",
|
||||
"wechat_ipad server_ip 未配置,机器人无法连接 wechat_ipad server。",
|
||||
)
|
||||
|
||||
if not server_port:
|
||||
self._append_issue(
|
||||
report["errors"],
|
||||
"missing_wechat_server_port",
|
||||
"wechat_ipad.server_port",
|
||||
"wechat_ipad server_port 未配置,机器人无法连接 wechat_ipad server。",
|
||||
)
|
||||
|
||||
def _validate_llm_config(self, report: dict) -> None:
|
||||
"""检查 LLM 配置的完整性与路由一致性。"""
|
||||
llm_config = self.llm or {}
|
||||
@@ -396,6 +449,7 @@ class Config(object):
|
||||
self._validate_unresolved_placeholders(report)
|
||||
self._validate_required_sections(report)
|
||||
self._validate_email_config(report)
|
||||
self._validate_wechat_ipad_config(report)
|
||||
self._validate_llm_config(report)
|
||||
self._validate_plaintext_secrets(report)
|
||||
return report
|
||||
@@ -451,6 +505,7 @@ class Config(object):
|
||||
self.redis = self.resolved_config.get("redis_config", {})
|
||||
self.email = self.resolved_config.get("email_config", {})
|
||||
self.wx_config = self.resolved_config.get("wx_config", {})
|
||||
self.wechat_ipad = self.resolved_config.get("wechat_ipad", {})
|
||||
self.llm = self.resolved_config.get("llm", {})
|
||||
|
||||
self.validation_report = self.validate()
|
||||
|
||||
Reference in New Issue
Block a user