package tech.easyflow.ai.service.capability;

/**
 * 模型类型与对话能力识别结果。
 */
public final class ModelCapabilityResolution {

    /** 模型类型。 */
    private final String modelType;
    /** 是否支持视觉输入，空值表示未知。 */
    private final Boolean supportImage;
    /** 是否支持推理，空值表示未知。 */
    private final Boolean supportThinking;
    /** 是否支持工具调用，空值表示未知。 */
    private final Boolean supportTool;
    /** 能力识别来源。 */
    private final ModelCapabilitySource source;

    /**
     * 创建模型能力识别结果。
     *
     * @param modelType 模型类型
     * @param supportImage 是否支持视觉输入
     * @param supportThinking 是否支持推理
     * @param supportTool 是否支持工具调用
     * @param source 能力识别来源
     */
    public ModelCapabilityResolution(String modelType,
                                     Boolean supportImage,
                                     Boolean supportThinking,
                                     Boolean supportTool,
                                     ModelCapabilitySource source) {
        this.modelType = modelType;
        this.supportImage = supportImage;
        this.supportThinking = supportThinking;
        this.supportTool = supportTool;
        this.source = source;
    }

    /**
     * 获取模型类型。
     *
     * @return 模型类型
     */
    public String getModelType() {
        return modelType;
    }

    /**
     * 获取视觉输入能力。
     *
     * @return 是否支持视觉输入，空值表示未知
     */
    public Boolean getSupportImage() {
        return supportImage;
    }

    /**
     * 获取推理能力。
     *
     * @return 是否支持推理，空值表示未知
     */
    public Boolean getSupportThinking() {
        return supportThinking;
    }

    /**
     * 获取工具调用能力。
     *
     * @return 是否支持工具调用，空值表示未知
     */
    public Boolean getSupportTool() {
        return supportTool;
    }

    /**
     * 获取能力识别来源。
     *
     * @return 能力识别来源
     */
    public ModelCapabilitySource getSource() {
        return source;
    }

    /**
     * 判断是否获得了模型库或命名规则证据。
     *
     * @return 已识别返回 true
     */
    public boolean isDetected() {
        return source != ModelCapabilitySource.DEFAULT;
    }
}
