package com.ruoyi.integration.service;

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

/**
 * 集成适配Service接口
 * 
 * @author ruoyi
 * @date 2025-12-19
 */
public interface IIntegrationAdapterService 
{
    /**
     * 连接外部系统
     * 
     * @param systemConfig 系统配置
     * @return 连接结果
     */
    public Map<String, Object> connectExternalSystem(Map<String, Object> systemConfig);

    /**
     * 数据同步
     * 
     * @param sourceSystem 源系统
     * @param targetSystem 目标系统
     * @param dataType 数据类型
     * @return 同步结果
     */
    public Map<String, Object> syncData(String sourceSystem, String targetSystem, String dataType);

    /**
     * 调用第三方API
     * 
     * @param apiConfig API配置
     * @param parameters 参数
     * @return 调用结果
     */
    public Map<String, Object> callThirdPartyAPI(Map<String, Object> apiConfig, Map<String, Object> parameters);

    /**
     * 处理回调
     * 
     * @param callbackData 回调数据
     * @param source 来源系统
     * @return 处理结果
     */
    public Map<String, Object> handleCallback(Map<String, Object> callbackData, String source);

    /**
     * 数据转换
     * 
     * @param data 原始数据
     * @param sourceFormat 源格式
     * @param targetFormat 目标格式
     * @return 转换后的数据
     */
    public Map<String, Object> transformData(Map<String, Object> data, String sourceFormat, String targetFormat);

    /**
     * 注册Webhook
     * 
     * @param webhookConfig Webhook配置
     * @return 注册结果
     */
    public Map<String, Object> registerWebhook(Map<String, Object> webhookConfig);

    /**
     * 重试失败的集成
     * 
     * @param integrationId 集成ID
     * @return 重试结果
     */
    public Map<String, Object> retryFailedIntegration(String integrationId);

    /**
     * 监控集成健康状态
     * 
     * @param systemId 系统ID
     * @return 健康状态
     */
    public Map<String, Object> monitorIntegrationHealth(String systemId);

    /**
     * 获取集成统计信息
     * 
     * @return 统计信息
     */
    public Map<String, Object> getIntegrationStatistics();

    /**
     * 获取支持的系统列表
     * 
     * @return 系统列表
     */
    public List<Map<String, Object>> getSupportedSystems();
}