package com.easyagents.agent.runtime.message;

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

/**
 * 知识库引用信息。
 */
public class AgentKnowledgeReference {

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

    /**
     * 获取知识库ID。
     *
     * @return 知识库ID
     */
    public String getKnowledgeId() {
        return knowledgeId;
    }

    /**
     * 设置知识库ID。
     *
     * @param knowledgeId 知识库ID
     */
    public void setKnowledgeId(String knowledgeId) {
        this.knowledgeId = knowledgeId;
    }

    /**
     * 获取知识库名称。
     *
     * @return 知识库名称
     */
    public String getKnowledgeName() {
        return knowledgeName;
    }

    /**
     * 设置知识库名称。
     *
     * @param knowledgeName 知识库名称
     */
    public void setKnowledgeName(String knowledgeName) {
        this.knowledgeName = knowledgeName;
    }

    /**
     * 获取文档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 getChunkContent() {
        return chunkContent;
    }

    /**
     * 设置命中分片原文。
     *
     * @param chunkContent 命中分片原文
     */
    public void setChunkContent(String chunkContent) {
        this.chunkContent = chunkContent;
    }

    /**
     * 获取来源 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> getMetadata() {
        return metadata;
    }

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