package com.rj.entity;

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 lombok.Data;
import lombok.EqualsAndHashCode;

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

/**
 * <p>
 * 录音分段管理表
 * </p>
 *
 * 对应表：audio_management_segments
 *
 * @author 
 * @since 2025-12-18
 */
@Data
@EqualsAndHashCode(callSuper = false)
@TableName("audio_management_segments")
@Schema(description = "录音分段管理表")
public class AudioManagementSegments implements Serializable {

    private static final long serialVersionUID = 1L;

    @Schema(description = "主键，UUID")
    @TableId("id")
    private String id;

    @Schema(description = "父录音ID（对应 audio_management.id）")
    @TableField("parent_id")
    private String parentId;

    @Schema(description = "租户ID")
    @TableField("tenant_id")
    private String tenantId;

    @Schema(description = "录音名称")
    @TableField("recording_name")
    private String recordingName;

    @Schema(description = "录音段数（序号）")
    @TableField("chunk_index")
    private String chunkIndex;

    @Schema(description = "设备编号")
    @TableField("deviceNo")
    private String deviceNo;

    @Schema(description = "记录时间")
    @TableField("recording_time")
    private LocalDateTime recordingTime;

    @Schema(description = "信息卡内容")
    @TableField("info_card_description")
    private String infoCardDescription;

    @Schema(description = "销售ID")
    @TableField("sales_id")
    private String salesId;

    @Schema(description = "销售电话")
    @TableField("sales_phone")
    private String salesPhone;

    @Schema(description = "销售姓名")
    @TableField("sales_name")
    private String salesName;

    @Schema(description = "录音时长(分钟)")
    @TableField("duration")
    private BigDecimal duration;

    @Schema(description = "上传时间")
    @TableField("upload_time")
    private LocalDateTime uploadTime;

    @Schema(description = "关注程度/意向级别")
    @TableField("intention_level")
    private String intentionLevel;

    @Schema(description = "经销售ID")
    @TableField("dealership_id")
    private String dealershipId;

    @Schema(description = "经销售名称")
    @TableField("dealership_name")
    private String dealershipName;

    @Schema(description = "场景")
    @TableField("scenario")
    private String scenario;

    @Schema(description = "上传状态")
    @TableField("upload_status")
    private String uploadStatus;

    @Schema(description = "同步状态")
    @TableField("sync_status")
    private String syncStatus;

    @Schema(description = "是否合并(0否1是)")
    @TableField("is_merged")
    private Boolean isMerged;

    @Schema(description = "描述/备注")
    @TableField("remarks")
    private String remarks;

    @Schema(description = "录音开始时间")
    @TableField("start_time")
    private LocalDateTime startTime;

    @Schema(description = "录音结束时间")
    @TableField("end_time")
    private LocalDateTime endTime;

    @Schema(description = "创建时间")
    @TableField("create_time")
    private LocalDateTime createTime;

    @Schema(description = "录音保存路径")
    @TableField("audio_file_path")
    private String audioFilePath;

    @Schema(description = "录音保存minio路径")
    @TableField("audio_file_url")
    private String audioFileUrl;

    @Schema(description = "文件大小(字节)")
    @TableField("audio_file_size")
    private Long audioFileSize;

    @Schema(description = "文件原始名称")
    @TableField("audio_file_original_name")
    private String audioFileOriginalName;

    @Schema(description = "文件扩展名")
    @TableField("audio_file_extension")
    private String audioFileExtension;

    @Schema(description = "录音文本")
    @TableField("recording_text")
    private String recordingText;

    @Schema(description = "总结")
    @TableField("summary")
    private String summary;

    @Schema(description = "需要转文本(是或否，默认：否)")
    @TableField("need_transcribe")
    private Boolean needTranscribe;

    @Schema(description = "需要转文本请求的时间")
    @TableField("transcribe_request_time")
    private LocalDateTime transcribeRequestTime;

    @Schema(description = "需要转文本结束的时间")
    @TableField("transcribe_end_time")
    private LocalDateTime transcribeEndTime;

}

