package com.rj.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotBlank;
import lombok.Data;

import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * 视频合成日志实体类
 * 
 * @author rj
 * @date 2025-01-02
 */
@Data
@TableName("video_synthesis_log")
public class VideoSynthesisLog {

    /**
     * 主键ID（UUID）
     */
    @TableId(type = IdType.ASSIGN_UUID)
    private String id;

    /**
     * 租户ID
     */
    @TableField("tenant_id")
    private String tenantId;

    /**
     * 请求ID（唯一）
     */
    @TableField("request_id")
    private String requestId;

    /**
     * 任务ID
     */
    @TableField("task_id")
    private String taskId;

    /**
     * 使用的模型
     */
    @TableField("model")
    private String model;

    /**
     * 图片URL
     */
    @TableField("image_url")
    private String imageUrl;

    /**
     * 音频URL
     */
    @TableField("audio_url")
    private String audioUrl;

    /**
     * 音频ID
     */
    @TableField("audio_id")
    private String audioId;

    /**
     * 图片ID
     */
    @TableField("image_id")
    private String imageId;

    /**
     * 归属人姓名
     */
    @TableField("owner_name")
    private String ownerName;

    /**
     * 归属人电话
     */
    @TableField("owner_phone")
    private String ownerPhone;

    /**
     * 模型供应商
     */
    @TableField("model_provider")
    private String modelProvider;

    /**
     * 模板ID
     */
    @TableField("template_id")
    private String templateId;

    /**
     * 眼部动作频率
     */
    @TableField("eye_move_freq")
    private BigDecimal eyeMoveFreq;

    /**
     * 视频帧率
     */
    @TableField("video_fps")
    private Integer videoFps;

    /**
     * 嘴部动作强度
     */
    @TableField("mouth_move_strength")
    private BigDecimal mouthMoveStrength;

    /**
     * 是否粘贴背景
     */
    @TableField("paste_back")
    private Boolean pasteBack;

    /**
     * 头部动作强度
     */
    @TableField("head_move_strength")
    private BigDecimal headMoveStrength;

    /**
     * 请求时间
     */
    @TableField("request_time")
    private LocalDateTime requestTime;

    /**
     * 响应时间
     */
    @TableField("response_time")
    private LocalDateTime responseTime;

    /**
     * 任务状态
     */
    @TableField("task_status")
    private String taskStatus;

    /**
     * 生成的视频URL
     */
    @TableField("video_url")
    private String videoUrl;

    /**
     * 视频名称
     */
    @TableField("video_name")
    private String videoName;

    /**
     * 临时对外URL链接
     */
    @TableField("video_temp_url")
    private String videoTempUrl;

    @NotBlank(message = "模板URL")
    @Schema(description = "模板URL")
    private String videoTemplateUrl;

    /**
     * 图像区域坐标 [x1, y1, x2, y2]
     */
    @TableField("face_bbox")
    private String faceBbox;

    /**
     * 动态区域坐标 [x1, y1, x2, y2]
     */
    @TableField("ext_bbox")
    private String extBbox;

    /**
     * 视频时长（秒）
     */
    @TableField("video_duration")
    private BigDecimal videoDuration;

    /**
     * 视频比例
     */
    @TableField("video_ratio")
    private String videoRatio;

    /**
     * 是否成功
     */
    @TableField("success")
    private Boolean success;

    /**
     * 错误信息
     */
    @TableField("error_message")
    private String errorMessage;

    /**
     * 处理时间(毫秒)
     */
    @TableField("processing_time_ms")
    private Long processingTimeMs;

    /**
     * 创建时间
     */
    @TableField("created_at")
    private LocalDateTime createdAt;

    /**
     * 更新时间
     */
    @TableField("updated_at")
    private LocalDateTime updatedAt;
}
