package com.rj.dto;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import jakarta.validation.constraints.NotBlank;

/**
 * 语音转文本请求DTO
 * 
 * @author rj
 * @date 2025-01-02
 */
@Data
@Schema(description = "语音转文本请求参数")
public class AsrRequest {
    
    /**
     * 音频文件URL
     */
    @NotBlank(message = "音频文件URL不能为空")
    @Schema(description = "音频文件URL", example = "https://example.com/audio.mp3")
    private String audioUrl;
    
    /**
     * 模型名称
     */
    @Schema(description = "ASR模型名称", example = "paraformer-v2")
    private String model = "paraformer-v2";
    
    /**
     * 音频格式
     */
    @Schema(description = "音频格式", example = "wav")
    private String format = "wav";
    
    /**
     * 采样率
     */
    @Schema(description = "采样率", example = "16000")
    private Integer sampleRate = 16000;
    
    /**
     * 是否启用标点符号
     */
    @Schema(description = "是否启用标点符号", example = "true")
    private Boolean enablePunctuation = true;
    
    /**
     * 是否启用数字转换
     */
    @Schema(description = "是否启用数字转换", example = "true")
    private Boolean enableNumberConversion = true;
    
    /**
     * 是否启用说话人分离
     */
    @Schema(description = "是否启用说话人分离", example = "false")
    private Boolean enableSpeakerDiarization = false;
    
    /**
     * 说话人数量
     */
    @Schema(description = "说话人数量", example = "1")
    private Integer speakerCount = 1;
    
    /**
     * 创建人姓名
     */
    @Schema(description = "创建人姓名", example = "张三")
    private String creatorName;
    
    /**
     * 创建人电话
     */
    @Schema(description = "创建人电话", example = "13800138000")
    private String creatorPhone;
    
    /**
     * 音频名称
     */
    @Schema(description = "音频名称", example = "test_audio")
    private String audioName;
    
    /**
     * 关联的TTS请求日志ID
     */
    @Schema(description = "关联的TTS请求日志ID", example = "12345678-1234-1234-1234-123456789012")
    private String id;
}
