from dataclasses import dataclass from typing import Any @dataclass(frozen=True) class ProdCheckPayloadSupport: """ `wizard prod-check` 结果提取支持对象。 该对象负责从多路只读结果中提取 runtime、doctor、config 片段,避免聚合器本体继续堆叠细碎字段判定逻辑。 """ @staticmethod def extract_runtime_payload(runtime_payload: dict[str, Any] | None) -> dict[str, Any] | None: """ 提取运行环境结果中的 runtime 片段。 :param runtime_payload: 运行环境结果 :return: runtime 片段 """ return runtime_payload.get('runtime') if isinstance(runtime_payload, dict) else None @staticmethod def extract_doctor_payload(doctor_payload: dict[str, Any] | None) -> dict[str, Any] | None: """ 提取应用检查结果片段。 :param doctor_payload: 应用检查结果 :return: doctor 片段 """ return doctor_payload if isinstance(doctor_payload, dict) else None @staticmethod def extract_config_payload(config_payload: dict[str, Any] | None) -> dict[str, Any] | None: """ 提取配置快照结果中的 config 片段。 :param config_payload: 配置快照结果 :return: config 片段 """ return config_payload.get('config') if isinstance(config_payload, dict) else None @dataclass(frozen=True) class ProdCheckStatusEvaluator: """ `wizard prod-check` 状态评估器。 该对象负责统一计算聚合结果的成功状态和标准消息。 """ @staticmethod def is_ok( runtime_payload: dict[str, Any] | None, doctor_payload: dict[str, Any] | None, config_payload: dict[str, Any] | None, ) -> bool: """ 计算生产巡检聚合结果是否成功。 :param runtime_payload: 运行环境结果 :param doctor_payload: 应用检查结果 :param config_payload: 配置快照结果 :return: 是否成功 """ return ( bool(runtime_payload and runtime_payload.get('ok', False)) and bool(doctor_payload and doctor_payload.get('ok', False)) and (config_payload is None or bool(config_payload.get('ok', False))) ) @staticmethod def build_message() -> str: """ 构建生产巡检统一结果消息。 :return: 结果消息 """ return '生产巡检完成' @dataclass(frozen=True) class ProdCheckAggregator: """ `wizard prod-check` 聚合器。 该对象负责聚合运行环境、应用检查和配置快照结果, 让 flow 本体只保留交互编排职责。 :param payload_support: 结果提取支持对象 :param status_evaluator: 状态评估器 """ payload_support: ProdCheckPayloadSupport = ProdCheckPayloadSupport() status_evaluator: ProdCheckStatusEvaluator = ProdCheckStatusEvaluator() def build_payload( self, *, env: str, runtime_payload: dict[str, Any] | None, doctor_payload: dict[str, Any] | None, config_payload: dict[str, Any] | None, ) -> dict[str, Any]: """ 构建生产巡检聚合结果。 :param env: 当前运行环境 :param runtime_payload: 运行环境结果 :param doctor_payload: 应用检查结果 :param config_payload: 配置快照结果 :return: 聚合结果负载 """ return { 'ok': self.status_evaluator.is_ok(runtime_payload, doctor_payload, config_payload), 'env': env, 'message': self.status_evaluator.build_message(), 'runtime': self.payload_support.extract_runtime_payload(runtime_payload), 'doctor': self.payload_support.extract_doctor_payload(doctor_payload), 'config': self.payload_support.extract_config_payload(config_payload), }