package tech.easyflow.chatlog.service;

import tech.easyflow.chatlog.domain.dto.ChatMessageRecord;
import tech.easyflow.chatlog.domain.dto.ChatRoundRecord;

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

/**
 * 聊天轮次读服务。
 */
public interface ChatRoundQueryService {

    /**
     * 查询会话最新轮次。
     *
     * @param sessionId 会话 ID
     * @return 最新轮次
     */
    ChatRoundRecord getLatestRound(BigInteger sessionId);

    /**
     * 查询指定轮次。
     *
     * @param sessionId 会话 ID
     * @param roundId 轮次 ID
     * @return 轮次记录
     */
    ChatRoundRecord getRound(BigInteger sessionId, BigInteger roundId);

    /**
     * 查询轮次下所有助手答案版本。
     *
     * @param sessionId 会话 ID
     * @param roundId 轮次 ID
     * @return 答案版本列表
     */
    List<ChatMessageRecord> listRoundVariants(BigInteger sessionId, BigInteger roundId);

    /**
     * 查询轮次下指定答案版本。
     *
     * @param sessionId 会话 ID
     * @param roundId 轮次 ID
     * @param variantIndex 答案版本序号
     * @return 答案版本记录
     */
    ChatMessageRecord getRoundVariant(BigInteger sessionId, BigInteger roundId, Integer variantIndex);

    /**
     * 判断会话是否已经启用轮次模型。
     *
     * @param sessionId 会话 ID
     * @return 是否存在轮次
     */
    boolean hasRounds(BigInteger sessionId);
}
