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 ChatRoundOperateService {

    /**
     * 校验并返回允许重答的轮次。
     *
     * @param sessionId 会话 ID
     * @param roundId 轮次 ID
     * @return 轮次记录
     */
    ChatRoundRecord requireRegeneratableRound(BigInteger sessionId, BigInteger roundId);

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

    /**
     * 切换指定轮次当前选中的答案版本。
     *
     * @param sessionId 会话 ID
     * @param roundId 轮次 ID
     * @param variantIndex 目标版本序号
     * @param operatorId 操作人
     * @return 选中的答案消息
     */
    ChatMessageRecord selectVariant(BigInteger sessionId, BigInteger roundId, Integer variantIndex, BigInteger operatorId);
}
