package com.ycwl.basic.integration.render.dto.job;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;

import java.util.Date;
import java.util.Map;

/**
 * 渲染作业V2 DTO
 */
@Data
public class RenderJobV2DTO {

    /**
     * 作业ID
     */
    private Long id;

    /**
     * 作业类型 (PREVIEW, PREVIEW_HLS, FINAL_MP4)
     */
    private String jobType;

    /**
     * 状态 (PENDING, RUNNING, SUCCESS, FAILED, CANCELED)
     */
    private String status;

    /**
     * 景区ID
     */
    private Long scenicId;

    /**
     * 模板ID
     */
    private Long templateId;

    /**
     * 模板版本
     */
    private Integer templateVersion;

    /**
     * 人脸ID
     */
    private Long faceId;

    /**
     * 会员ID
     */
    private Long memberId;

    /**
     * 总时长(毫秒)
     */
    private Long totalDurationMs;

    /**
     * 输出规格JSON
     */
    @JsonProperty("outputSpecJson")
    private Map<String, Object> outputSpecJson;

    /**
     * 渲染计划JSON
     */
    private String planJson;

    /**
     * 总片段数
     */
    private Integer segmentCount;

    /**
     * 已发布片段数
     */
    private Integer publishedCount;

    /**
     * 已完成片段数
     */
    private Integer completedCount;

    /**
     * M3U8播放地址
     */
    private String m3u8Url;

    /**
     * 音频URL
     */
    private String audioUrl;

    /**
     * MP4下载地址
     */
    private String mp4Url;

    /**
     * 错误码
     */
    private String errorCode;

    /**
     * 错误信息
     */
    private String errorMessage;

    /**
     * 幂等键
     */
    private String idempotencyKey;

    /**
     * 开始时间
     */
    @JsonProperty("startTime")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date startTime;

    /**
     * 完成时间
     */
    @JsonProperty("finishTime")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date finishTime;

    /**
     * 创建时间
     */
    @JsonProperty("createTime")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date createTime;

    /**
     * 更新时间
     */
    @JsonProperty("updateTime")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date updateTime;
}
