package com.ycwl.basic.model.task.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;

import java.util.Date;

/**
 * Task与RenderJob关联实体
 * 用于跟踪task和zt-render-worker服务中渲染作业的关联
 */
@Data
@TableName("task_render_job_mapping")
public class TaskRenderJobMappingEntity {

    @TableId(type = IdType.AUTO)
    private Long id;

    /**
     * 任务ID（task表的id）
     */
    private Long taskId;

    /**
     * 渲染作业ID（zt-render-worker返回的jobId）
     */
    private Long renderJobId;

    /**
     * 渲染状态
     * PENDING-等待中, PREVIEW_READY-预览就绪, COMPLETED-已完成, FAILED-失败
     */
    private String renderStatus;

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

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

    /**
     * 预览播放地址（HLS）
     */
    private String previewUrl;

    /**
     * 最终MP4地址
     */
    private String mp4Url;

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

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

    /**
     * 重试次数
     */
    private Integer retryCount;

    /**
     * 最后检查时间
     */
    private Date lastCheckTime;

    private Date createTime;
    private Date updateTime;

    /**
     * 渲染状态常量
     */
    public static final String STATUS_PENDING = "PENDING";
    public static final String STATUS_PREVIEW_READY = "PREVIEW_READY";
    public static final String STATUS_MP4_COMPOSING = "MP4_COMPOSING";
    public static final String STATUS_COMPLETED = "COMPLETED";
    public static final String STATUS_FAILED = "FAILED";

    /**
     * 预览就绪所需的最小已发布片段数
     */
    public static final int MIN_PUBLISHED_FOR_PREVIEW = 3;

    /**
     * 最大重试次数
     */
    public static final int MAX_RETRY_COUNT = 10;
}
