package org.xyzh.ai.client.dto;

import com.alibaba.fastjson2.annotation.JSONField;
import lombok.Data;

/**
 * @description 文档上传响应（根据 Dify API 返回结构）
 * @filename DocumentUploadResponse.java
 * @author AI Assistant
 * @copyright xyzh
 * @since 2025-11-04
 */
@Data
public class DocumentUploadResponse {

    /**
     * 文档详细信息
     */
    private Document document;

    /**
     * 批次ID（用于查询处理状态）
     */
    private String batch;

    /**
     * 文档详细信息
     */
    @Data
    public static class Document {
        /**
         * 文档ID
         */
        private String id;

        /**
         * 文档名称
         */
        private String name;

        /**
         * 位置（序号）
         */
        private Integer position;

        /**
         * 数据源类型
         */
        @JSONField(name = "data_source_type")
        private String dataSourceType;

        /**
         * 数据源信息
         */
        @JSONField(name = "data_source_info")
        private Object dataSourceInfo;

        /**
         * 数据集处理规则ID
         */
        @JSONField(name = "dataset_process_rule_id")
        private String datasetProcessRuleId;

        /**
         * 创建来源
         */
        @JSONField(name = "created_from")
        private String createdFrom;

        /**
         * 创建人
         */
        @JSONField(name = "created_by")
        private String createdBy;

        /**
         * 创建时间（时间戳）
         */
        @JSONField(name = "created_at")
        private Long createdAt;

        /**
         * Token数量
         */
        private Integer tokens;

        /**
         * 索引状态
         */
        @JSONField(name = "indexing_status")
        private String indexingStatus;

        /**
         * 错误信息
         */
        private String error;

        /**
         * 是否启用
         */
        private Boolean enabled;

        /**
         * 禁用时间
         */
        @JSONField(name = "disabled_at")
        private Long disabledAt;

        /**
         * 禁用人
         */
        @JSONField(name = "disabled_by")
        private String disabledBy;

        /**
         * 是否归档
         */
        private Boolean archived;

        /**
         * 显示状态
         */
        @JSONField(name = "display_status")
        private String displayStatus;

        /**
         * 字数
         */
        @JSONField(name = "word_count")
        private Integer wordCount;

        /**
         * 命中次数
         */
        @JSONField(name = "hit_count")
        private Integer hitCount;

        /**
         * 文档形式
         */
        @JSONField(name = "doc_form")
        private String docForm;
    }
}

