package com.ssyf.third.doubao.model;

import lombok.Data;
import java.util.List;

/**
 * 豆包AI响应模型
 */
@Data
public class DoubaoResponse {
    
    /**
     * 创建时间戳
     */
    private Long created_at;
    
    /**
     * 响应ID
     */
    private String id;
    
    /**
     * 模型名称
     */
    private String model;
    
    /**
     * 对象类型
     */
    private String object;
    
    /**
     * 输出内容列表
     */
    private List<OutputItem> output;
    
    /**
     * 服务层级
     */
    private String service_tier;
    
    /**
     * 响应状态
     */
    private String status;
    
    /**
     * 使用情况
     */
    private Usage usage;
    
    /**
     * 缓存信息
     */
    private Caching caching;
    
    /**
     * 存储状态
     */
    private Boolean store;
    
    /**
     * 过期时间
     */
    private Long expire_at;
    
    /**
     * 输出项模型
     */
    @Data
    public static class OutputItem {
        private String id;
        private String type;
        private String status;
        private Summary summary;
        private List<Content> content;
        private String role;
    }
    
    /**
     * 摘要模型
     */
    @Data
    public static class Summary {
        private List<SummaryText> summary;
    }
    
    /**
     * 摘要文本模型
     */
    @Data
    public static class SummaryText {
        private String type;
        private String text;
    }
    
    /**
     * 内容模型
     */
    @Data
    public static class Content {
        private String type;
        /**
         * 【返回的json格式】
         * context: 发言字段，包含发言内容，非必须，当确认需要发言才填充该字段。
         * msg：错误信息字段，当因为任务问题或错误导致不发言时，在这里填充描述信息，不超过50个字符。
         * 示例：
         * {"context":"主播真好"} 或{"msg":"频控：不发言"}或{"msg":"错误：xxx"}
         */
        private String text;
    }
    
    /**
     * 使用情况模型
     */
    @Data
    public static class Usage {
        private int input_tokens;
        private int output_tokens;
        private int total_tokens;
        private InputTokensDetails input_tokens_details;
        private OutputTokensDetails output_tokens_details;
    }
    
    /**
     * 输入token详情
     */
    @Data
    public static class InputTokensDetails {
        private int cached_tokens;
    }
    
    /**
     * 输出token详情
     */
    @Data
    public static class OutputTokensDetails {
        private int reasoning_tokens;
    }
    
    /**
     * 缓存模型
     */
    @Data
    public static class Caching {
        private String type;
    }
}