package com.easyagents.agent.runtime.knowledge;

import java.util.LinkedHashMap;
import java.util.Map;

/**
 * 保留元数据的知识库检索文档。
 */
public class AgentKnowledgeDocument {

    private String documentId;
    private String documentName;
    private String chunkId;
    private String content;
    private String sourceUri;
    private Double score;
    private Map<String, Object> knowledgeMetadata = new LinkedHashMap<>();
    private Map<String, Object> metadata = new LinkedHashMap<>();

    /**
     * 获取文档ID。
     *
     * @return 文档ID
     */
    public String getDocumentId() {
        return documentId;
    }

    /**
     * 设置文档ID。
     *
     * @param documentId 文档ID
     */
    public void setDocumentId(String documentId) {
        this.documentId = documentId;
    }

    /**
     * 获取文档名称。
     *
     * @return 文档名称
     */
    public String getDocumentName() {
        return documentName;
    }

    /**
     * 设置文档名称。
     *
     * @param documentName 文档名称
     */
    public void setDocumentName(String documentName) {
        this.documentName = documentName;
    }

    /**
     * 获取分片ID。
     *
     * @return 分片ID
     */
    public String getChunkId() {
        return chunkId;
    }

    /**
     * 设置分片ID。
     *
     * @param chunkId 分片ID
     */
    public void setChunkId(String chunkId) {
        this.chunkId = chunkId;
    }

    /**
     * 获取内容。
     *
     * @return 内容
     */
    public String getContent() {
        return content;
    }

    /**
     * 设置内容。
     *
     * @param content 内容
     */
    public void setContent(String content) {
        this.content = content;
    }

    /**
     * 获取来源 URI。
     *
     * @return 来源 URI
     */
    public String getSourceUri() {
        return sourceUri;
    }

    /**
     * 设置来源 URI。
     *
     * @param sourceUri 来源 URI
     */
    public void setSourceUri(String sourceUri) {
        this.sourceUri = sourceUri;
    }

    /**
     * 获取分数。
     *
     * @return 分数
     */
    public Double getScore() {
        return score;
    }

    /**
     * 设置分数。
     *
     * @param score 分数
     */
    public void setScore(Double score) {
        this.score = score;
    }

    /**
     * 获取知识库级元数据。
     *
     * @return 知识库级元数据
     */
    public Map<String, Object> getKnowledgeMetadata() {
        return knowledgeMetadata;
    }

    /**
     * 设置知识库级元数据。
     *
     * @param knowledgeMetadata 知识库级元数据
     */
    public void setKnowledgeMetadata(Map<String, Object> knowledgeMetadata) {
        this.knowledgeMetadata = knowledgeMetadata == null ? new LinkedHashMap<>() : knowledgeMetadata;
    }

    /**
     * 获取文档级元数据。
     *
     * @return 文档级元数据
     */
    public Map<String, Object> getMetadata() {
        return metadata;
    }

    /**
     * 设置文档级元数据。
     *
     * @param metadata 文档级元数据
     */
    public void setMetadata(Map<String, Object> metadata) {
        this.metadata = metadata == null ? new LinkedHashMap<>() : metadata;
    }
}
