package com.sonic.frog.domain.input;

import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.hibernate.validator.constraints.Length;

import javax.validation.constraints.NotBlank;

/**
 * @description:
 * @author: mzc
 * @date: 2025-07-11 15:38
 **/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class AiUserExtInput {

    @ApiModelProperty("人物设定")
    @NotBlank
    @Length(min = 10 , max = 2000)
    private String profile;

    @ApiModelProperty("对话风格")
    @NotBlank
    @Length(min = 10 , max = 300)
    private String dialogueStyle;

    @ApiModelProperty("人物设定 用户输入")
    private String userProfile;

    @ApiModelProperty("人物设定 用户输入扩展字段")
    private String userProfileExtJson;

    @ApiModelProperty("对话风格 用户输入")
    private String userDialogueStyle;

    @ApiModelProperty("对话开场白")
    @NotBlank
    @Length(min = 10 , max = 150)
    private String dialoguePrologue;

    @ApiModelProperty("对话音色code")
    @NotBlank
    private String dialogueTimbreCode;

    @ApiModelProperty("对话-音高")
    @NotBlank
    private String dialoguePitch;

    @ApiModelProperty("对话-语速")
    @NotBlank
    private String dialogueSpeechRate;

    @ApiModelProperty("对话音色url(可能是试听后的url,需要单独保存)")
    @NotBlank
    private String dialogueTimbreUrl;

    @ApiModelProperty("形象风格code")
    @NotBlank
    private String imageStyleCode;

    @ApiModelProperty("形象描述")
    @NotBlank
    @Length(min = 10 , max = 1000)
    private String imageDesc;

    @ApiModelProperty("形象参考")
    private String imageReferenceUrl;
}
