package tech.easyflow.publicapi.dto;

import com.fasterxml.jackson.annotation.JsonInclude;
import tech.easyflow.ai.dto.KnowledgeSearchResultItem;

import java.math.BigInteger;

/**
 * 公开知识库检索结果。
 *
 * <p>根据命中来源补充文档或 FAQ 标识，便于调用方继续查询对应详情。</p>
 */
@JsonInclude(JsonInclude.Include.NON_NULL)
public class PublicKnowledgeSearchResultItem extends KnowledgeSearchResultItem {

    /**
     * 命中来源类型。
     */
    private String resultType;

    /**
     * 来源文档 ID。
     */
    private BigInteger documentId;

    /**
     * 来源文档名称。
     */
    private String documentName;

    /**
     * 来源 FAQ ID。
     */
    private BigInteger faqId;

    /**
     * 来源 FAQ 问题。
     */
    private String question;

    /**
     * 来源 FAQ 纯文本答案。
     */
    private String answerText;

    /**
     * 来源 FAQ 分类 ID。
     */
    private BigInteger categoryId;

    /**
     * 获取命中来源类型。
     *
     * @return {@code DOCUMENT} 或 {@code FAQ}
     */
    public String getResultType() {
        return resultType;
    }

    /**
     * 设置命中来源类型。
     *
     * @param resultType 命中来源类型
     */
    public void setResultType(String resultType) {
        this.resultType = resultType;
    }

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

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

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

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

    /**
     * 获取来源 FAQ ID。
     *
     * @return 来源 FAQ ID
     */
    public BigInteger getFaqId() {
        return faqId;
    }

    /**
     * 设置来源 FAQ ID。
     *
     * @param faqId 来源 FAQ ID
     */
    public void setFaqId(BigInteger faqId) {
        this.faqId = faqId;
    }

    /**
     * 获取来源 FAQ 问题。
     *
     * @return 来源 FAQ 问题
     */
    public String getQuestion() {
        return question;
    }

    /**
     * 设置来源 FAQ 问题。
     *
     * @param question 来源 FAQ 问题
     */
    public void setQuestion(String question) {
        this.question = question;
    }

    /**
     * 获取来源 FAQ 纯文本答案。
     *
     * @return 来源 FAQ 纯文本答案
     */
    public String getAnswerText() {
        return answerText;
    }

    /**
     * 设置来源 FAQ 纯文本答案。
     *
     * @param answerText 来源 FAQ 纯文本答案
     */
    public void setAnswerText(String answerText) {
        this.answerText = answerText;
    }

    /**
     * 获取来源 FAQ 分类 ID。
     *
     * @return 来源 FAQ 分类 ID
     */
    public BigInteger getCategoryId() {
        return categoryId;
    }

    /**
     * 设置来源 FAQ 分类 ID。
     *
     * @param categoryId 来源 FAQ 分类 ID
     */
    public void setCategoryId(BigInteger categoryId) {
        this.categoryId = categoryId;
    }
}
