/**
 * Copyright 2025 Beijing Volcano Engine Technology Co., Ltd. All Rights Reserved.
 * SPDX-license-identifier: BSD-3-Clause
 */




export enum ModelSourceType {
  Custom = 'Custom',
  Available = 'Available',
}

export enum CustomParamsType {
  TTS = 'TTS',
  ASR = 'ASR',
  LLM = 'LLM',
}

/**
 * @brief AI 音色可选值
 * @default 通用女声
 * @notes 通用女声、通用男声为默认音色, 其它皆为付费音色。
 *        音色 ID 可于 https://console.volcengine.com/speech/service/8?s=g 中开通获取。
 *        对应 "音色详情" 中, "Voice_type" 列的值。
 */
export enum VOICE_TYPE {
  '通用女声' = 'BV001_streaming',
  '通用男声' = 'BV002_streaming',
  '邻家女孩' = 'zh_female_linjianvhai_moon_bigtts'
}

export const VOICE_INFO_MAP = {
  [VOICE_TYPE['通用女声']]: {
    description: '女声 青年 语音合成 通用场景',
    url: '',
    icon: '',
  },
  [VOICE_TYPE['通用男声']]: {
    description: '男声 青年 语音合成 通用场景',
    url: '',
    icon: '',
  },
};

/**
 * @brief TTS 的 Cluster
 */
export enum TTS_CLUSTER {
  TTS = 'volcano_tts',
  MEGA = 'volcano_mega',
  ICL = 'volcano_icl',
}

/**
 * @brief TTS 的 Cluster Mapping
 */
export const TTS_CLUSTER_MAP = {
  ...(Object.keys(VOICE_TYPE).reduce(
    (map, type) => ({
      ...map,
      [type]: TTS_CLUSTER.TTS,
    }),
    {}
  ) as Record<VOICE_TYPE, TTS_CLUSTER>),
};

/**
 * @brief 模型可选值
 * @default SKYLARK_LITE_PUBLIC
 */
export enum AI_MODEL {
  DOUBAO_LITE_4K = 'Doubao-lite-4k',
  DOUBAO_PRO_4K = 'Doubao-pro-4k',
  DOUBAO_PRO_32K = 'Doubao-pro-32k',
  DOUBAO_PRO_128K = 'Doubao-pro-128k',
  VISION = 'Vision',
  // VISION2 = 'ArkVLM',
}

/**
 * @brief 模型来源
 */
export enum AI_MODEL_MODE {
  CUSTOM = 'CustomLLM',
  ARK_V3 = 'ArkV3',
}

/**
 * @brief 各模型对应的模式
 */
export const AI_MODE_MAP: Partial<Record<AI_MODEL, AI_MODEL_MODE>> = {
  [AI_MODEL.DOUBAO_LITE_4K]: AI_MODEL_MODE.ARK_V3,
  [AI_MODEL.DOUBAO_PRO_4K]: AI_MODEL_MODE.ARK_V3,
  [AI_MODEL.DOUBAO_PRO_32K]: AI_MODEL_MODE.ARK_V3,
  [AI_MODEL.DOUBAO_PRO_128K]: AI_MODEL_MODE.ARK_V3,
  [AI_MODEL.VISION]: AI_MODEL_MODE.ARK_V3,
};

/**
 * @brief 豆包模型的 ID
 * @note 具体的模型 ID 请至 https://console.volcengine.com/ark/region:ark+cn-beijing/endpoint?config=%7B%7D&s=g 参看/创建
 *       模型 ID 即接入点 ID, 在上述链接中表格内 "接入点名称" 列中, 类似于 "ep-2024xxxxxx-xxx" 格式即是模型 ID。
 */
export const ARK_V3_MODEL_ID: Partial<Record<AI_MODEL, string>> = {
  [AI_MODEL.DOUBAO_LITE_4K]: 'ep-20241217194337-gwpdx',
  [AI_MODEL.DOUBAO_PRO_4K]: 'ep-20241206114557-8584r',
  [AI_MODEL.DOUBAO_PRO_32K]: 'ep-20250329161833-qfc6l', // 使用六维志愿
  [AI_MODEL.DOUBAO_PRO_128K]: 'doubao-1-5-lite-32k-250115',
  [AI_MODEL.VISION]: 'doubao-1-5-lite-32k-250115',
  // ... 可根据所开通的模型进行扩充
};

/**
 * @brief 豆包智能体 BotID
 */
export const LLM_BOT_ID: Partial<Record<AI_MODEL, string>> = {
  // ... 可根据所开通的模型进行扩充
  [AI_MODEL.DOUBAO_PRO_32K]: '7456409430717480998'
};

export enum SCENE {
  CUSTOM = 'CUSTOM',
}

export const Icon = {

  [SCENE.CUSTOM]: '',
};

export const Name = {
  [SCENE.CUSTOM]: '自定义',
};

/**
 * @brief 智能体启动后的欢迎词。
 */
export const Welcome = {
  [SCENE.CUSTOM]: '你好，我是你的六纬AI志愿填报师， 有什么升学选择或者高考志愿填报问题都可以问我',
};

export const Model = {
  [SCENE.CUSTOM]: AI_MODEL.DOUBAO_PRO_32K,
};

export const Voice = {
  [SCENE.CUSTOM]: VOICE_TYPE.邻家女孩,
};

export const Questions = {
  [SCENE.CUSTOM]: ['哪些专业考研有优势？', '高考填报志愿注意事项有哪些？', '我的志愿表填写合理吗？','我想考公选什么专业？'],
};

/**
 * @brief 大模型 System 角色预设指令，可用于控制模型输出, 类似 Prompt 的概念。
 */
export const Prompt = {
  [SCENE.CUSTOM]: '',
};
