package com.seer.teach.openapi.service;


import com.seer.teach.common.ResultBean;
import com.seer.teach.openapi.llm.resp.CorrectDTO;
import com.seer.teach.openapi.llm.req.LlmAiCorrectReq;
import reactor.core.Disposable;
import reactor.core.publisher.Flux;

/**
 *
 * <p>
 *
 * </p >
 *
 * @author Captain
 * @since 2025-09-27 14:06
 */
public interface LlmSseService {

    /**
     * AI批改功能，对用户提交的内容进行智能批改
     *
     * @param params 批改请求参数对象，包含待批改的内容和相关配置
     * @return 返回Flux流形式的字符串结果，支持实时推送批改进度和结果
     */
    Flux<ResultBean<CorrectDTO>> aiCorrect(LlmAiCorrectReq params);

    /**
     * 注册流式处理任务，用于管理用户的长连接会话
     *
     * @param userId     用户唯一标识符
     * @param type       流类型标识，用于区分不同的业务场景
     * @param disposable 可释放的流处理器，用于取消或清理资源
     */
    void registerStream(String sn, Integer type, Disposable disposable);

    /**
     * 移除指定用户和类型的流
     *
     * @param userId 用户ID，用于标识需要移除流的用户
     * @param type 流类型，用于指定需要移除的流的类型
     */
    void removeStream(String sn,Integer type);

}
