package com.cy.guoyan.admin.module.ai.dal.dataobject.chatdocument;

import lombok.*;

import java.time.LocalDateTime;

import com.baomidou.mybatisplus.annotation.*;
import com.cy.guoyan.admin.framework.mybatis.core.dataobject.BaseDO;
/**
 * 知识库文档 DO
 *
 * @author 管理员
 */
@TableName("ai_document")
@KeySequence("ai_document_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库，可不写。
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class ChatDocumentDO extends BaseDO {

    /**
     * 编号
     */
    @TableId
    private Long id;
    /**
     * 源文档 ID（更新时使用）
     */
    private String difyDocumentId;
    /**
     * 源文档 ID（更新时使用）
     */
    private String ragflowDocumentId;
    /**
     * 知识库 ID
     */
    private String datasetId;
    /**
     * 批次号
     */
    private String batch;
    /**
     * 数据来源类型（file_upload/api 等）
     */
    private String dataSourceType;
    /**
     * 来源信息（JSON）
     */
    private String dataSourceInfo;
    /**
     * 处理规则
     */
    private String processRuleMode;
    /**
     * 文档名称
     */
    private String name;
    /**
     * 创建来源（upload/api）
     */
    private String createdFrom;
    /**
     * 创建者
     */
    private String createdBy;
    /**
     * 创建时间（业务）
     */
    private LocalDateTime createdAt;
    /**
     * 总 Token 数
     */
    private Integer tokens;
    /**
     * 文档字数
     */
    private Integer wordCount;
    /**
     * 分段数
     */
    private Integer completedSegments;
    /**
     * 文件大小
     */
    private String fileSize;

    /**
     * 文件配置
     */
    private Long fileConfId;

    /**
     * 文件路径
     */
    private String filePath;
    /**
     * 命中次数
     */
    private Integer hitCount;
    /**
     * 索引状态（waiting/indexing/completed/failed）
     */
    private String indexingStatus;

    /**
     * 解析状态枚举：
     * – "0" / "UNSTART"：未开始
     * – "1" / "RUNNING"：进行中
     * – "2" / "DONE"：完成
     * – "3" / "FAIL"：失败
     */
    private String ragflowStatus;
    /**
     * 显示状态（queuing/processing/ready 等）
     */
    private String displayStatus;
    /**
     * 错误信息
     */
    private String error;
    /**
     * 是否启用
     */
    private Boolean enabled;
    /**
     * 禁用时间
     */
    private LocalDateTime disabledAt;
    /**
     * 禁用者
     */
    private String disabledBy;
    /**
     * 是否归档
     */
    private Boolean archived;
    /**
     * 索引方式（high_quality/economy）
     */
    private String indexingTechnique;
    /**
     * 文档形式（text_model/hierarchical_model/qa_model）
     */
    private String docForm;
    /**
     * 文档语言（qa_model 模式下）
     */
    private String docLanguage;
    /**
     * 清洗 & 分段规则（JSON）
     */
    private String processRule;
    /**
     * 检索模型配置（首次上传使用）
     */
    private String retrievalModel;
    /**
     * Embedding 模型名称
     */
    private String embeddingModel;
    /**
     * Embedding 模型提供商
     */
    private String embeddingModelProvider;

}