package top.continew.admin.business.model.req;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;

/**
 * 任务回调请求参数
 *
 * @author jiay
 * @since 2025/08/28 16:35
 */
@Data
public class TaskCallbackReq {

    /**
     * 平台编码
     */
    @Schema(description = "平台编码")
    @NotBlank(message = "平台编码不能为空")
    private String platformCode;

    /**
     * 生成平台
     */
    @Schema(description = "生成平台ID")
    @NotNull(message = "生成平台不能为空")
    private Long platformId;

    /**
     * 任务订单号
     */
    @Schema(description = "任务订单号")
    //    @NotBlank(message = "任务订单号不能为空")
    private String taskId;

    /**
     * 文件名
     */
    @Schema(description = "文件名")
    private String title;

    /**
     * 使用的模型
     */
    @Schema(description = "使用的模型")
    private String modelName;

    /**
     * 扣费编码
     */
    @Schema(description = "扣费编码", example = "C0001")
    private String chargeCode;

    /**
     * 实际生成数量
     */
    @Schema(description = "实际生成数量", example = "1")
    private Integer quantity;

    /**
     * 任务状态 (0:进行中, 1:成功, 2:失败)
     */
    @Schema(description = "任务状态 (0:进行中, 1:成功, 2:失败)")
    @NotNull(message = "任务状态不能为空")
    private Integer status;

    /**
     * 生成的文字内容（文字类型时填写）
     */
    @Schema(description = "生成的文字内容（文字类型时填写）")
    private String result;

    /**
     * 消费的token数（文字类型时填写）
     */
    @Schema(description = "消费的token数（文字类型时填写）")
    private Long tokens;

    /**
     * 文件路径（音视频图片类型时填写）
     */
    @Schema(description = "文件路径（音视频图片类型时填写）")
    private String fileUrl;

    /**
     * 错误消息（失败时填写）
     */
    @Schema(description = "错误消息（失败时填写）")
    private String errorMessage;

    /**
     * 计费类型(token：0, 图：1，音效生成：3，参考生视频：4, 白膜贴图：5)
     */
    @Schema(description = "计费类型(token：0, 图：1, 音效：3, 视频：4, 白膜贴图：5)")
    @NotNull(message = "计费类型不能为空")
    private Integer chargeType;

    /**
     * * 任务类型(token：0, 文生图：1，图生图：2，音效生成：3，参考生视频：4, 白膜贴图：5)
     */
    @Schema(description = "任务类型(token：0, 文生图：1，图生图：2，音效生成：3，参考生视频：4, 白膜贴图：5)")
    @NotNull(message = "任务类型不能为空")
    private Integer taskType;

    /**
     * 计费类型（0充点，1按次数，2按点数）
     */
    @Schema(description = "消费类型（0充点，1按次数，2按点数）")
    @NotNull(message = "消费类型不能为空")
    private Integer type;

    /**
     * 文件类型
     */
    @Schema(description = "文件类型")
    private String fileType;

    //    @Schema(description = "父任务ID")
    //    private String parentTaskId;

    //    @Schema(description = "父任务创建时间")
    //    private String parentCreateTime;

    //    @Schema(description = "根任务ID")
    //    @NotBlank(message = "根任务ID不能为空")
    //    private String taskRootId;

}