package tech.easyflow.ai.service;

import com.easyagents.core.document.Document;
import tech.easyflow.ai.entity.DocumentCollection;
import tech.easyflow.ai.rag.KnowledgeRetrievalRequest;
import com.mybatisflex.core.service.IService;

import java.math.BigInteger;
import java.util.List;

/**
 *  服务层。
 *
 * @author michael
 * @since 2024-08-23
 */
public interface DocumentCollectionService extends IService<DocumentCollection> {

    List<Document> search(BigInteger id, String keyword);

    List<Document> search(KnowledgeRetrievalRequest request);

    DocumentCollection getDetail(String idOrAlias);

    DocumentCollection getByAlias(String idOrAlias);

    /**
     * 获取已发布视图。
     *
     * @param idOrAlias ID 或别名
     * @return 已发布视图
     */
    DocumentCollection getPublishedDetail(String idOrAlias);

    /**
     * 根据 ID 获取已发布视图。
     *
     * @param id 知识库 ID
     * @return 已发布视图
     */
    DocumentCollection getPublishedById(BigInteger id);

    /**
     * 把当前资源映射为已发布视图。
     *
     * @param collection 当前资源
     * @return 已发布视图
     */
    DocumentCollection toPublishedView(DocumentCollection collection);
}
