package com.malk.apigw.action;

import com.alibaba.fastjson.JSONObject;
import com.malk.apigw.caller.CallerProfile;
import com.malk.server.common.McR;

/**
 * 单个 action handler（vendor.action 对应基座 Client 方法的薄包装）
 *
 * <p>由 {@code DingtalkActionRegistry} / {@code AliworkActionRegistry} 等在 {@code @PostConstruct}
 * 注册到 {@link ActionRegistry}。</p>
 */
@FunctionalInterface
public interface ActionHandler {

    /**
     * @param caller 已通过签名校验的调用方
     * @param body   请求 JSON 对象
     * @return 统一响应，data 为基座 Client 原始响应
     */
    McR handle(CallerProfile caller, JSONObject body);
}
