import request from '@/config/axios'
import type { Dayjs } from 'dayjs';

/** AI陪聊角色国际化表，用于存储不同语言下的角色名称、一句话描述和详细介绍信息 */
export interface AiCompanionI18n {
          id: number; // 主键ID
          companionId?: number; // 陪聊角色主表ID，对应 keyboard_ai_companion.id
          locale?: string; // 语言标识，如 zh-CN、en-US、ja-JP
          name?: string; // 角色名称（多语言）
          shortDesc: string; // 一句话人设描述（多语言）
          introText: string; // 角色详细介绍文案（多语言）
          createdAt?: string | Dayjs; // 创建时间
          updatedAt?: string | Dayjs; // 更新时间
}

/** AI陪聊角色表，用于定义恋爱/陪伴型虚拟角色的基础信息与人设信息 */
export interface AiCompanion {
          id: number; // 陪聊角色唯一ID
          avatarUrl: string; // 角色头像URL，用于列表页和聊天页
          coverImageUrl: string; // 角色封面图URL，用于角色详情页
          gender: string; // 角色性别（male / female / other）
          ageRange: string; // 角色年龄段描述（如：20s、25-30）
          personalityTags: object; // 角色性格标签数组（如：温柔、黏人、治愈）
          speakingStyle: string; // 角色说话风格（如：撒娇型、理性型、活泼型）
          systemPrompt?: string; // AI系统Prompt，定义角色核心人设，仅供模型使用
          status?: number; // 角色状态：1=上线，0=下线
          visibility?: number; // 角色可见性：1=公开，2=内测，3=隐藏
          sortOrder: number; // 排序权重，数值越大排序越靠前
          popularityScore: number; // 角色热度评分，用于推荐排序
          createdAt?: string | Dayjs; // 创建时间
          updatedAt?: string | Dayjs; // 更新时间
          prologue: string; // 开场白
          prologueAudio: string; // 开场白音频
          voiceId: string; // 音频Id
  }

// AI陪聊角色表，用于定义恋爱/陪伴型虚拟角色的基础信息与人设 API
export const AiCompanionApi = {
  // 查询AI陪聊角色表，用于定义恋爱/陪伴型虚拟角色的基础信息与人设分页
  getAiCompanionPage: async (params: any) => {
    return await request.get({ url: `/keyboard/ai-companion/page`, params })
  },

  // 查询AI陪聊角色表，用于定义恋爱/陪伴型虚拟角色的基础信息与人设详情
  getAiCompanion: async (id: number) => {
    return await request.get({ url: `/keyboard/ai-companion/get?id=` + id })
  },

  // 新增AI陪聊角色表，用于定义恋爱/陪伴型虚拟角色的基础信息与人设
  createAiCompanion: async (data: AiCompanion) => {
    return await request.post({ url: `/keyboard/ai-companion/create`, data })
  },

  // 修改AI陪聊角色表，用于定义恋爱/陪伴型虚拟角色的基础信息与人设
  updateAiCompanion: async (data: AiCompanion) => {
    return await request.put({ url: `/keyboard/ai-companion/update`, data })
  },

  // 删除AI陪聊角色表，用于定义恋爱/陪伴型虚拟角色的基础信息与人设
  deleteAiCompanion: async (id: number) => {
    return await request.delete({ url: `/keyboard/ai-companion/delete?id=` + id })
  },

  /** 批量删除AI陪聊角色表，用于定义恋爱/陪伴型虚拟角色的基础信息与人设 */
  deleteAiCompanionList: async (ids: number[]) => {
    return await request.delete({ url: `/keyboard/ai-companion/delete-list?ids=${ids.join(',')}` })
  },

  // 导出AI陪聊角色表，用于定义恋爱/陪伴型虚拟角色的基础信息与人设 Excel
  exportAiCompanion: async (params) => {
    return await request.download({ url: `/keyboard/ai-companion/export-excel`, params })
  },

// ==================== 子表（AI陪聊角色国际化表，用于存储不同语言下的角色名称、一句话描述和详细介绍） ====================

  // 获得AI陪聊角色国际化表，用于存储不同语言下的角色名称、一句话描述和详细介绍分页
  getAiCompanionI18nPage: async (params) => {
    return await request.get({ url: `/keyboard/ai-companion/ai-companion-i18n/page`, params })
  },
  // 新增AI陪聊角色国际化表，用于存储不同语言下的角色名称、一句话描述和详细介绍
  createAiCompanionI18n: async (data: AiCompanionI18n) => {
    return await request.post({ url: `/keyboard/ai-companion/ai-companion-i18n/create`, data })
  },

  // 修改AI陪聊角色国际化表，用于存储不同语言下的角色名称、一句话描述和详细介绍
  updateAiCompanionI18n: async (data: AiCompanionI18n) => {
    return await request.put({ url: `/keyboard/ai-companion/ai-companion-i18n/update`, data })
  },

  // 删除AI陪聊角色国际化表，用于存储不同语言下的角色名称、一句话描述和详细介绍
  deleteAiCompanionI18n: async (id: number) => {
    return await request.delete({ url: `/keyboard/ai-companion/ai-companion-i18n/delete?id=` + id })
  },

  /** 批量删除AI陪聊角色国际化表，用于存储不同语言下的角色名称、一句话描述和详细介绍 */
  deleteAiCompanionI18nList: async (ids: number[]) => {
    return await request.delete({ url: `/keyboard/ai-companion/ai-companion-i18n/delete-list?ids=${ids.join(',')}` })
  },

  // 获得AI陪聊角色国际化表，用于存储不同语言下的角色名称、一句话描述和详细介绍
  getAiCompanionI18n: async (id: number) => {
    return await request.get({ url: `/keyboard/ai-companion/ai-companion-i18n/get?id=` + id })
  }
}