feat(render): 添加视频渲染作业轮询服务

- 在RenderJobV2Client中新增createFinalizeMP4Task接口用于创建MP4合成任务
- 在RenderJobIntegrationService中实现createFinalizeMP4Task方法
- 创建TaskRenderJobMappingEntity实体类用于跟踪任务与渲染作业关联
- 创建TaskRenderJobMappingMapper接口及对应XML映射文件
- 在TaskTaskServiceImpl中添加mapping表写入逻辑
- 新增RenderJobPollingService定时轮询服务处理渲染状态流转
- 实现从PENDING到PREVIEW_READY再到MP4_COMPOSING最后到COMPLETED的状态转换
- 添加MP4合成任务创建及状态更新功能
This commit is contained in:
2026-01-24 21:20:09 +08:00
parent d25d09cb66
commit ad3741fd15
8 changed files with 637 additions and 0 deletions

View File

@@ -0,0 +1,98 @@
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 = 2;
/**
* 最大重试次数
*/
public static final int MAX_RETRY_COUNT = 10;
}