package com.cmvr.tts.service;

import com.cmvr.common.core.page.TableDataInfo;
import com.cmvr.tts.domain.CorpusInfo;
import com.cmvr.tts.domain.vo.CorpusCategoryTreeVo;
import com.cmvr.tts.domain.vo.CorpusInfoVo;
import org.springframework.web.multipart.MultipartFile;

import jakarta.servlet.http.HttpServletResponse;
import java.util.List;
import java.util.Map;

/**
 * 车载语料数据Service接口
 *
 * @author cmvr
 */
public interface ICorpusInfoService {

    /**
     * 查询语料列表
     */
    TableDataInfo selectCorpusList(CorpusInfo corpus);

    /**
     * 新增语料
     */
    int insertCorpus(CorpusInfo corpus);

    /**
     * 修改语料
     */
    int updateCorpus(CorpusInfo corpus);

    /**
     * 删除语料
     */
    int deleteCorpusByIds(String[] ids);

    /**
     * 查询语料详情
     */
    CorpusInfoVo selectCorpusById(String id);

    /**
     * 获取音频流
     */
    void getAudioStream(String corpusId, HttpServletResponse response);

    /**
     * 上传语料音频
     */
    String uploadCorpusAudio(String corpusId, MultipartFile file);

    /**
     * 批量导入语料
     */
    Map<String, Object> importCorpus(MultipartFile file);

    /**
     * 导出语料
     */
    byte[] exportCorpusList(CorpusInfo corpus);

    /**
     * 查询看板统计
     */
    Map<String, Object> getDashboardStats();

    /**
     * 按语种统计
     */
    List<Map<String, Object>> getStatsByLanguage();

    /**
     * 按方言统计
     */
    List<Map<String, Object>> getStatsByDialect();

    /**
     * 按情绪统计
     */
    List<Map<String, Object>> getStatsByEmotion();

    /**
     * 按分类统计
     */
    List<Map<String, Object>> getStatsByCategory();

    /**
     * 查询分类树
     */
    List<CorpusCategoryTreeVo> getCategoryTree();

    /**
     * 新增分类
     */
    int insertCategory(com.cmvr.tts.domain.CorpusCategory category);

    /**
     * 修改分类
     */
    int updateCategory(com.cmvr.tts.domain.CorpusCategory category);

    /**
     * 删除分类
     */
    int deleteCategoryById(String id);
}
