package com.backendsys.modules.ai.volcengine.entity;

import com.volcengine.ark.runtime.model.content.generation.GetContentGenerationTaskResponse;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.Data;

/**
 * 火山大模型图生视频状态通知
 */
@Data
public class VolcengineVideoTaskNotify {
    /**
     * 任务id
     */
    @NotBlank(message = "任务id不能为空")
    private String id;
    /**
     * 模型名称
     */
    private String model;

    /**
     * 任务状态
     * queued：排队中。
     * running：任务运行中。
     * cancelled：取消任务，取消状态24h自动删除（只支持排队中状态的任务被取消）。
     * succeeded： 任务成功。
     * failed：任务失败。
     */
    private String status;
    /**
     * 错误提示信息，任务成功返回null，任务失败时返回错误数据
     */
    private GetContentGenerationTaskResponse.ContentGenerationError error;

    /**
     * 任务创建时间的 Unix 时间戳（秒）
     */
    private Long created_at;
    /**
     * 任务当前状态更新时间的 Unix 时间戳（秒）
     */
    private Long updated_at;

    /**
     * 当视频生成任务完成，会输出该字段，包含生成视频下载的 URL
     * content.video_url
     */
    private GetContentGenerationTaskResponse.Content content;
    /**
     * 种子
     */
    private Integer seed;
    /**
     * 分辨率
     */
    private String resolution;
    /**
     * 生成视频的宽高比
     */
    private String ratio;
    /**
     * 视频时长 秒
     */
    private Integer duration;
    /**
     * 生成视频的帧率
     */
    private Integer framespersecond;
}
