from typing import Any, Dict

from app.chain import ChainBase


class NotificationChain(ChainBase):
    """
    通知渠道管理链，仅按渠道名透明转发管理动作到模块

    不包含任何渠道特定逻辑：渠道标识、动作语义、表单参数解释、客户端实例
    解析与临时参数初始化全部封闭在实现 channel_manage 契约的模块内部
    """

    def manage_channel(
            self,
            channel: str,
            action: str,
            **params: Any,
    ) -> Dict[str, Any]:
        """
        对指定通知渠道执行管理动作

        :param channel: 渠道标识，用于模块路由
        :param action: 通用管理动作标识，具体语义由渠道模块解释
        :param params: 表单与动作参数，原样透传给模块
        :return: 统一结构 {"success": bool, "message": ..., ...}
        """
        result = self.run_module("channel_manage", channel=channel, action=action, **params)
        return result or {"success": False, "message": "该通知渠道未启用或不支持此管理动作"}
