import { getHost, ENV_MODE } from './const';
const AI_TRANSLATE_PATH = '/cone/one_search_public/ai_translate';
const AI_SUGGEST_PATH = '/cone/one_search_public/ai_suggest';
/**
 * 内部调用的翻译 API 默认地址：预发用 pre-cn-x-gateway，线上用 cn-x-gateway
 */
export const defaultFieldTransformApi = () => {
    const { host } = getHost()[ENV_MODE];
    return `${host}${AI_TRANSLATE_PATH}`;
};
/** 推荐查询条件 API 默认地址：预发用 pre-cn-x-gateway，线上用 cn-x-gateway */
const defaultSuggestApi = () => {
    const { host } = getHost()[ENV_MODE];
    return `${host}${AI_SUGGEST_PATH}`;
};
/**
 * 调用翻译 API
 * @param params - 请求参数
 * @param params.customFieldTransformApi - 自定义 API 地址（可选，不提供则使用默认地址）
 * @param params.operator - 操作人标识
 * @param params.code - 前端页面的唯一标识
 * @param params.languageCode - 语言代码（如：zh_CN, en_US）
 * @param params.tokens - 请求过滤的参数字段列表
 * @param params.columns - 列定义列表
 * @param params.signal - 取消请求的信号
 * @returns Promise<any> 转换后的数据
 */
export const fetchFieldTransform = async (params) => {
    const { customFieldTransformApi, operator, code, languageCode, tokens, columns, signal } = params;
    const finalApi = customFieldTransformApi || defaultFieldTransformApi();
    if (!finalApi) {
        throw new Error('Field transform API URL is required');
    }
    // 构建新的请求体格式
    const requestBody = {
        operator,
        code,
        languageCode,
        tokens,
        columns,
    };
    const response = await fetch(finalApi, {
        method: 'POST',
        headers: {
            'Content-Type': 'application/json',
        },
        body: JSON.stringify(requestBody),
        signal, // 传递 signal 用于取消请求
    });
    if (!response.ok) {
        throw new Error(`Field transform API failed: ${response.statusText}`);
    }
    return await response.json();
};
/**
 * 获取推荐查询条件
 * @param params - 请求参数
 * @param params.operator - 操作人标识
 * @param params.code - 前端页面的唯一标识
 * @param params.languageCode - 语言代码（如：zh_CN, en_US）
 * @param params.columns - 列定义列表
 * @param params.signal - 取消请求的信号（可选）
 * @returns Promise<any> 推荐结果数据
 */
export const fetchSuggestions = async (params) => {
    const { customSuggestApi, operator, code, languageCode, columns, signal } = params;
    const apiUrl = customSuggestApi || defaultSuggestApi();
    // 构建请求体
    const requestBody = {
        operator,
        code,
        languageCode,
        columns: columns || [],
    };
    const response = await fetch(apiUrl, {
        method: 'POST',
        headers: {
            'Content-Type': 'application/json',
        },
        body: JSON.stringify(requestBody),
        signal, // 传递 signal 用于取消请求
    });
    if (!response.ok) {
        throw new Error(`Suggestion API failed: ${response.statusText}`);
    }
    return await response.json();
};
