package com.datai.integration.service;

import java.util.List;
import java.util.Map;

import com.datai.integration.model.domain.SyncProgress;

/**
 * 同步进度Service接口
 * 
 * 用于跟踪 syncObjectData 方法的同步进度
 * 进度信息存储在内存中，同步任务完成后立即清除
 * 
 * @author datai
 * @date 2026-01-16
 */
public interface ISyncProgressService
{
    /**
     * 开始进度跟踪
     *
     * @param objectId 对象ID
     * @param totalBatches 总批次数量
     * @param syncType 同步类型（FULL/INCREMENTAL）
     */
    void startProgressTracking(Integer objectId, Integer totalBatches, String syncType);

    /**
     * 更新进度
     *
     * @param objectId 对象ID
     * @param processedBatches 已处理批次数量
     * @param currentBatch 当前批次
     */
    void updateProgress(Integer objectId, Integer processedBatches, Integer currentBatch);

    /**
     * 完成进度跟踪并立即清除该同步进度信息
     *
     * @param objectId 对象ID
     */
    void completeProgress(Integer objectId);

    /**
     * 标记进度失败并立即清除该同步进度信息
     *
     * @param objectId 对象ID
     * @param errorMessage 错误信息
     */
    void failProgress(Integer objectId, String errorMessage);

    /**
     * 获取进度信息
     *
     * @param objectId 对象ID
     * @return 进度信息
     */
    SyncProgress getProgress(Integer objectId);

    /**
     * 获取所有进度信息
     *
     * @return 所有进度信息
     */
    Map<Integer, SyncProgress> getAllProgress();

    /**
     * 获取所有正在同步的对象进度列表
     *
     * @return 所有正在同步的对象进度列表
     */
    List<SyncProgress> getAllRunningProgress();
}
