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

/** 用户每次调用日志（用于记录token、模型、耗时、成功率等）信息 */
export interface UserCallLog {
          id: number; // 主键 id
          userId?: number; // 用户ID
          requestId?: string; // 幂等请求ID，避免重试导致重复记录
          feature?: string; // 调用功能来源
          model: string; // 调用的模型名称
          inputTokens?: number; // 输入token数
          outputTokens?: number; // 输出token数
          totalTokens?: number; // 总token数（input+output）
          success?: boolean; // 调用是否成功
          latencyMs: number; // 调用耗时（毫秒）
          errorCode: string; // 失败错误码（可空）
          createdAt?: string | Dayjs; // 调用记录创建时间
          genId: string; // 生成 id
  }

// 用户每次调用日志（用于记录token、模型、耗时、成功率等） API
export const UserCallLogApi = {
  // 查询用户每次调用日志（用于记录token、模型、耗时、成功率等）分页
  getUserCallLogPage: async (params: any) => {
    return await request.get({ url: `/keyboard/user-call-log/page`, params })
  },

  // 查询用户每次调用日志（用于记录token、模型、耗时、成功率等）详情
  getUserCallLog: async (id: number) => {
    return await request.get({ url: `/keyboard/user-call-log/get?id=` + id })
  },

  // 新增用户每次调用日志（用于记录token、模型、耗时、成功率等）
  createUserCallLog: async (data: UserCallLog) => {
    return await request.post({ url: `/keyboard/user-call-log/create`, data })
  },

  // 修改用户每次调用日志（用于记录token、模型、耗时、成功率等）
  updateUserCallLog: async (data: UserCallLog) => {
    return await request.put({ url: `/keyboard/user-call-log/update`, data })
  },

  // 删除用户每次调用日志（用于记录token、模型、耗时、成功率等）
  deleteUserCallLog: async (id: number) => {
    return await request.delete({ url: `/keyboard/user-call-log/delete?id=` + id })
  },

  /** 批量删除用户每次调用日志（用于记录token、模型、耗时、成功率等） */
  deleteUserCallLogList: async (ids: number[]) => {
    return await request.delete({ url: `/keyboard/user-call-log/delete-list?ids=${ids.join(',')}` })
  },

  // 导出用户每次调用日志（用于记录token、模型、耗时、成功率等） Excel
  exportUserCallLog: async (params) => {
    return await request.download({ url: `/keyboard/user-call-log/export-excel`, params })
  }
}