package com.ycwl.basic.image.pipeline.enums;

/**
 * 图片类型枚举
 * 用于区分管线处理的图片类型，替代通过 sourceId 判断的逻辑
 */
public enum ImageType {

    /**
     * 普通照片
     * 对应原 sourceId > 0 的情况（IPC设备拍摄）
     */
    NORMAL_PHOTO("normal", "普通照片"),

    /**
     * 拼图
     * 对应原 sourceId == 0 的情况
     */
    PUZZLE("puzzle", "拼图"),

    /**
     * 手机上传
     * 对应原 sourceId == null 的情况
     */
    MOBILE_UPLOAD("mobile", "手机上传");

    private final String code;
    private final String description;

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

    public String getCode() {
        return code;
    }

    public String getDescription() {
        return description;
    }

    /**
     * 从 sourceId 推断图片类型
     * 用于兼容现有数据结构
     *
     * @param sourceId 源ID（null=手机上传, 0=拼图, >0=普通照片）
     * @return 对应的图片类型
     */
    public static ImageType fromSourceId(Long sourceId) {
        if (sourceId == null) {
            return MOBILE_UPLOAD;
        } else if (sourceId == 0) {
            return PUZZLE;
        } else {
            return NORMAL_PHOTO;
        }
    }
}
