package cn.iocoder.yudao.module.llm.controller.admin.application.vo;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import com.alibaba.excel.annotation.*;
import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat;
import cn.iocoder.yudao.framework.excel.core.convert.DictConvert;

@Schema(description = "管理后台 - 大模型应用 Response VO")
@Data
@ExcelIgnoreUnannotated
public class ApplicationRespVO {

    @Schema(description = "应用ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "31452")
    @ExcelProperty("应用ID")
    private Long id;

    @Schema(description = "应用名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "赵六")
    @ExcelProperty("应用名称")
    private String appName;

    @Schema(description = "应用简介")
    @ExcelProperty("应用简介")
    private String appIntro;

    @Schema(description = "应用分类，使用字典（llm_application_category）", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty(value = "应用分类，使用字典（llm_application_category）", converter = DictConvert.class)
    @DictFormat("llm_application_category") // TODO 代码优化：建议设置到对应的 DictTypeConstants 枚举类中
    private Long appCategory;

    @Schema(description = "应用标签，保存多个标签ID，用逗号分隔", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("应用标签，保存多个标签ID，用逗号分隔")
    private String appLabel;

    @Schema(description = "模型服务，模型服务ID")
    @ExcelProperty("模型服务，模型服务ID")
    private Long appModel;

    @Schema(description = "废弃, 随机性")
    @ExcelProperty("废弃, 随机性")
    private Integer temperature;

    @Schema(description = "废弃, 采样性")
    @ExcelProperty("废弃, 采样性")
    private Integer topP;

    @Schema(description = "废弃, 单次回复限制")
    @ExcelProperty("废弃, 单次回复限制")
    private Integer maxTokens;

    @Schema(description = "向量知识库，知识库ID", example = "15511")
    @ExcelProperty("向量知识库，知识库ID")
    private Long modelServiceId;

    @Schema(description = "应用API地址", example = "https://www.iocoder.cn")
    @ExcelProperty("应用API地址")
    private String appUrl;

    @Schema(description = "应用图标")
    @ExcelProperty("应用图标")
    private String appLogo;

    @Schema(description = "聊天人次", example = "8556")
    @ExcelProperty("聊天人次")
    private Long chatCount;

    @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("创建时间")
    private LocalDateTime createTime;

    @Schema(description = "大模型服务的推理参数，以JSON格式存储")
    @ExcelProperty("大模型服务的推理参数，以JSON格式存储")
    private String modelParams;

    @Schema(description = "系统Prompt")
    @ExcelProperty("系统Prompt")
    private String prompt;

    @Schema(description = "创建人id")
    private String creator;

    @Schema(description = "创建人")
    private String creatorName;
}
