package com.cmvr.aima.service;

import java.util.List;

import com.baomidou.mybatisplus.spring.service.IService;
import com.cmvr.aima.domain.AimaTaskInstance;
import com.cmvr.aima.domain.dto.AimaTaskInstanceQuery;
import com.cmvr.aima.domain.vo.AimaTaskInstanceVo;

/**
 * 爱玛任务执行实例Service接口
 * 
 * @author cmvr-iot
 * @since 2026-06-22
 */
public interface IAimaTaskInstanceService  extends IService<AimaTaskInstance> {
    AimaTaskInstance selectAimaTaskInstanceById(String id);
    List<AimaTaskInstance> selectAimaTaskInstanceList(AimaTaskInstance aimaTaskInstance);
    List<AimaTaskInstanceVo> selectAimaTaskInstanceVoList(AimaTaskInstanceQuery query);
    int insertAimaTaskInstance(AimaTaskInstance aimaTaskInstance);
    int updateAimaTaskInstance(AimaTaskInstance aimaTaskInstance);
    int deleteAimaTaskInstanceByIds(String[] ids);
    int deleteAimaTaskInstanceById(String id);

    /**
     * 开始执行任务实例
     *
     * @param id 任务实例ID
     * @return 结果
     */
    int startInstance(String id);

    /**
     * 暂停任务实例
     *
     * @param id 任务实例ID
     * @return 结果
     */
    int pauseInstance(String id);

    /**
     * 终止任务实例
     *
     * @param id 任务实例ID
     * @return 结果
     */
    int stopInstance(String id);

    /**
     * 恢复任务实例（从暂停恢复为执行中）
     *
     * @param id 任务实例ID
     * @return 结果
     */
    int resumeInstance(String id);
    
    /**
     * 更新任务实例进度
     * 
     * @param instanceId 任务实例ID
     * @param progress 执行进度(百分比，保留2位小数)
     */
    void updateProgress(String instanceId, Double progress);
}
