package com.seer.teach.admin.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.seer.teach.admin.request.TeachTextAudiosQueryReq;
import com.seer.teach.admin.request.TeachTextAudiosReq;
import com.seer.teach.admin.response.TeachTextAudiosResp;
import com.seer.teach.teacher.service.platform.StreamingTextToAudioResult;
import org.springframework.http.codec.ServerSentEvent;
import reactor.core.publisher.Flux;

import java.util.List;

/**
 * <p>
 * 讲课稿音频和字幕管理服务接口
 * </p>
 *
 * @author Lingma
 * @since 2025-12-12
 */
public interface AdminTeachTextAudiosService {

    /**
     * 分页查询讲课稿音频和字幕列表
     *
     * @param req 查询条件
     * @return 音频和字幕分页数据
     */
    IPage<TeachTextAudiosResp> pageTeachTextAudios(TeachTextAudiosQueryReq req);

    /**
     * 根据ID获取讲课稿音频和字幕详情
     *
     * @param id 音频和字幕ID
     * @return 音频和字幕实体
     */
    TeachTextAudiosResp getTeachTextAudioById(Integer id);

    /**
     * 根据讲课稿ID获取对应的音频和字幕列表
     *
     * @param textId 讲课稿ID
     * @return 音频和字幕列表
     */
    List<TeachTextAudiosResp> getTextAudiosByTextId(Integer textId);

    /**
     * 添加讲课稿音频和字幕
     *
     * @param req 音频和字幕信息
     * @return 是否添加成功
     */
    boolean generatedTeachTextAudio(TeachTextAudiosReq req);

    /**
     * 删除讲课稿音频和字幕
     *
     * @param textId 讲课稿ID
     * @return 是否删除成功
     */
    boolean deleteTeachTextAudioByTextId(Integer textId);

    /**
     * 流式播放课稿音频(SSE方式)
     * 
     * @return SSE流
     */
    Flux<ServerSentEvent<StreamingTextToAudioResult>> streamPlayTeachTextAudioSse(Integer textId);
}