package cn.nianxx.thhotel.platform.common.enums;

import java.util.Arrays;
import java.util.Optional;

/**
 * SuperAgent 入口阶段非结构化结果码。该结果只说明来源消息处理结论，不代表业务任务。
 */
public enum SourceMessageOnlyResultCode {
    /** 输入可理解但没有匹配当前支持的业务事件。 */
    S10("S10", "NO_BOOKING_ACTION_DETECTED", "未匹配到当前支持的业务事件"),
    /** 输入不足，无法形成可判断的业务素材包。 */
    S99("S99", "MATERIAL_PACKAGE_UNAVAILABLE", "无法形成业务素材包"),
    /** 纯信息类邮件，不需要形成业务素材包。 */
    S000("S000", "PURE_INFORMATION", "纯信息类邮件"),
    /** 入口问题导致无法形成业务素材包。 */
    S999("S999", "MATERIAL_PACKAGE_UNAVAILABLE", "无法形成业务素材包");

    private final String code;
    private final String meaning;
    private final String description;

    SourceMessageOnlyResultCode(String code, String meaning, String description) {
        this.code = code;
        this.meaning = meaning;
        this.description = description;
    }

    public String code() {
        return code;
    }

    public String meaning() {
        return meaning;
    }

    public String description() {
        return description;
    }

    /**
     * 按 SuperAgent 返回的稳定代码查找枚举，大小写敏感，避免误吞其他文本。
     */
    public static Optional<SourceMessageOnlyResultCode> fromCode(String code) {
        return Arrays.stream(values())
                .filter(value -> value.code.equals(code))
                .findFirst();
    }
}
