package com.dne.ems.dto.ai;

import java.util.List;

import com.fasterxml.jackson.annotation.JsonProperty;

import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * 火山引擎聊天API响应DTO
 * 
 * <p>该类封装了从火山引擎AI聊天服务接收到的响应数据结构。
 * 包含AI生成的回复内容和可能的工具调用信息。</p>
 *
 * @version 1.0
 * @since 2025-06
 */
@Data
@NoArgsConstructor
public class VolcanoChatResponse {
    private List<Choice> choices;

    @Data
    @NoArgsConstructor
    public static class Choice {
        /**
         * 包含AI回复的消息对象
         */
        private Message message;
    }

    @Data
    @NoArgsConstructor
    public static class Message {
        /**
         * 消息的角色（如system、user、assistant）
         */
        private String role;
        
        /**
         * 消息的文本内容
         */
        private String content;
        
        /**
         * 工具调用列表，包含AI请求调用的工具信息
         */
        @JsonProperty("tool_calls")
        private List<ToolCall> toolCalls;
    }

    @Data
    @NoArgsConstructor
    public static class ToolCall {
        /**
         * 工具调用的唯一标识符
         */
        private String id;
        
        /**
         * 工具调用的类型
         */
        private String type;
        
        /**
         * 函数调用信息
         */
        private FunctionCall function;
    }

    @Data
    @NoArgsConstructor
    public static class FunctionCall {
        /**
         * 被调用的函数名称
         */
        private String name;
        
        /**
         * 函数调用的参数，JSON格式字符串
         */
        private String arguments;
    }
}