package tech.easyflow.skill.imports;

import tech.easyflow.skill.entity.Skill;

import java.io.File;
import java.util.List;
import org.springframework.web.multipart.MultipartFile;

/**
 * 标准 Skill ZIP 导入服务。
 */
public interface SkillImportService {

    /** 单次批量预检或确认允许处理的最大 Skill 数量。 */
    int MAX_BATCH_SKILL_COUNT = 50;

    /**
     * 批量预检上传的标准 Skill ZIP，并将多 Skill 包拆分为独立预览。
     *
     * @param files 标准 Skill ZIP 列表
     * @return 每个 Skill 对应一个 importToken 的预览列表
     */
    List<SkillImportPreview> previewBatch(List<MultipartFile> files);

    /**
     * 上传并创建可单次确认的导入预览。
     *
     * @param file 标准 Skill ZIP
     * @return 导入预览与 importToken
     */
    SkillImportPreview preview(MultipartFile file);

    /**
     * 暂存并预检后端生成的标准 Skill ZIP。
     *
     * @param originalName 用于结果展示的原始文件名
     * @param file 后端受控临时 ZIP
     * @return 导入预览与 importToken
     */
    SkillImportPreview preview(String originalName, File file);

    /**
     * 使用单次 importToken 确认导入。
     *
     * @param request 导入确认请求
     * @return 已保存 Skill
     */
    List<Skill> confirm(SkillImportConfirmRequest request);

    /**
     * 取消导入预览并清理临时包。
     *
     * @param importToken 导入令牌
     */
    void cancel(String importToken);

}
