package com.dora.service.provider;

import com.dora.dto.provider.ProviderTaskRequest;
import com.dora.dto.provider.ProviderTaskResponse;
import com.dora.dto.provider.ProviderTaskResult;
import com.dora.dto.provider.ProviderTaskStatus;

/**
 * AI服务提供商统一接口
 * 
 * <p>用于适配不同的AI服务提供商API，包括：
 * <ul>
 *   <li>OpenAI格式API（同步）</li>
 *   <li>RunningHub API（异步）</li>
 *   <li>未来的其他厂商</li>
 * </ul>
 * 
 * @author 1818AI
 * @since 2025-10-20
 */
public interface AIProvider {

    /**
     * 提交任务到AI服务商
     * 
     * @param request 统一的任务请求对象
     * @return 统一的任务响应对象
     */
    ProviderTaskResponse submitTask(ProviderTaskRequest request);

    /**
     * 查询任务状态（用于异步API）
     * 
     * @param providerTaskId 服务商返回的任务ID
     * @return 任务状态信息
     */
    ProviderTaskStatus queryTaskStatus(String providerTaskId);

    /**
     * 获取任务结果（用于异步API）
     * 
     * @param providerTaskId 服务商返回的任务ID
     * @return 任务结果信息
     */
    ProviderTaskResult getTaskResult(String providerTaskId);

    /**
     * 获取服务商名称
     * 
     * @return 服务商标识（openai, runninghub等）
     */
    String getProviderName();

    /**
     * 判断是否为异步API
     * 
     * @return true表示需要轮询查询结果，false表示同步返回
     */
    boolean isAsyncProvider();
}

