package cn.nianxx.thhotel.integrations.messaging.agentbus.adapter;

/**
 * AgentBus 单条 frame 处理结果。结果中不包含原始 payload 或客户正文。
 */
public record AgentBusFrameProcessResult(
        String outcome,
        Long inboxId,
        String captureStatus,
        String errorCode
) {

    /**
     * 构造忽略结果，用于控制事件或捕获关闭场景。
     */
    public static AgentBusFrameProcessResult ignored() {
        return new AgentBusFrameProcessResult("IGNORED", null, null, null);
    }

    /**
     * 构造捕获成功结果，只返回内部 Inbox ID 和捕获状态。
     */
    public static AgentBusFrameProcessResult captured(Long inboxId, String captureStatus) {
        return new AgentBusFrameProcessResult("CAPTURED", inboxId, captureStatus, null);
    }

    /**
     * 构造拒绝结果，用于超大 frame 等安全边界。
     */
    public static AgentBusFrameProcessResult rejected(String errorCode) {
        return new AgentBusFrameProcessResult("REJECTED", null, null, errorCode);
    }

    /**
     * 构造失败结果，用于 JSON 解析或捕获异常。
     */
    public static AgentBusFrameProcessResult failed(String errorCode) {
        return new AgentBusFrameProcessResult("FAILED", null, null, errorCode);
    }
}
