package com.rj.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.TableField;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * 图像模型实体类
 * 
 * 用于存储图像处理相关的模型信息，包括图像基本信息、所属人信息、
 * 处理参数、结果URL等。该实体对应数据库表 image_model。
 * 
 * @author 系统生成
 * @date 2025/1/30
 * @version 1.0
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("image_model")
public class ImageModel implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 主键ID，唯一标识符
     * 使用UUID作为主键，确保全局唯一性
     * 对应数据库字段：id
     */
    @TableId(value = "uuid", type = IdType.ASSIGN_UUID)
    private String uuid;

    /**
     * 图像名称
     * 存储图像文件的名称，用于标识和查找图像
     * 对应数据库字段：image_name
     */
    @TableField("image_name")
    private String imageName;

    /**
     * 模型名称
     * 使用的AI模型名称，如：stable-diffusion、midjourney等
     * 对应数据库字段：model_name
     */
    @TableField("model_name")
    private String modelName;

    /**
     * 所属人姓名
     * 图像处理请求的发起人姓名
     * 对应数据库字段：owner_name
     */
    @TableField("owner_name")
    private String ownerName;

    /**
     * 所属人电话
     * 图像处理请求的发起人联系电话
     * 对应数据库字段：owner_phone
     */
    @TableField("owner_phone")
    private String ownerPhone;

    /**
     * 图片类型
     * 图像的类型分类，material 和  result
     * 对应数据库字段：image_type
     */
    @TableField("image_type")
    private String imageType;

    /**
     * 创建时间
     * 记录创建的时间戳，由系统自动设置
     * 对应数据库字段：create_time
     */
    @TableField("create_time")
    private LocalDateTime createTime;

    /**
     * 修改时间
     * 记录最后修改的时间戳，由系统自动更新
     * 对应数据库字段：update_time
     */
    @TableField("update_time")
    private LocalDateTime updateTime;

    /**
     * 素材URL
     * 原始素材图片的永久访问链接
     * 对应数据库字段：material_url
     */
    @TableField("material_url")
    private String materialUrl;

    /**
     * 素材临时URL
     * 原始素材图片的临时访问链接，通常有过期时间
     * 对应数据库字段：material_temp_url
     */
    @TableField("material_temp_url")
    private String materialTempUrl;

    /**
     * 成品图片URL
     * 处理后的成品图片的永久访问链接
     * 对应数据库字段：result_image_url
     */
    @TableField("result_image_url")
    private String resultImageUrl;

    /**
     * 成品图片临时URL
     * 处理后的成品图片的临时访问链接，通常有过期时间
     * 对应数据库字段：result_image_temp_url
     */
    @TableField("result_image_temp_url")
    private String resultImageTempUrl;

    /**
     * 提示词
     * AI图像生成或处理时使用的文本提示词
     * 对应数据库字段：prompt
     */
    @TableField("prompt")
    private String prompt;

    /**
     * 功能函数
     * 调用的具体功能函数名称，如：upscale、generate等
     * 对应数据库字段：function_name
     */
    @TableField("function_name")
    private String functionName;

    /**
     * 放大倍数
     * 图像放大处理的倍数，如：2.0、4.0等
     * 对应数据库字段：scale_factor
     */
    @TableField("scale_factor")
    private BigDecimal scaleFactor;

    /**
     * 请求ID
     * 唯一标识一次处理请求的ID，用于追踪和日志记录
     * 对应数据库字段：request_id
     */
    @TableField("request_id")
    private String requestId;

    /**
     * 任务ID
     * 异步处理任务的唯一标识符，用于查询任务状态
     * 对应数据库字段：task_id
     */
    @TableField("task_id")
    private String taskId;

    /**
     * 任务状态
     * 阿里云异步任务的状态，如：PENDING、RUNNING、SUCCEEDED、FAILED等
     * 对应数据库字段：task_status
     */
    @TableField("task_status")
    private String taskStatus;
}
