import apiClient from './client' // API密钥管理相关接口定义 export interface AdminApiKey { id: string // UUID user_id: string // UUID user_email?: string username?: string name?: string key_display?: string // 脱敏后的密钥显示 is_active: boolean is_standalone: boolean // 是否为独立余额Key balance_used_usd?: number // 已使用余额(仅独立Key) current_balance_usd?: number | null // 当前余额(独立Key预付费模式,null表示无限制) total_requests?: number total_tokens?: number total_cost_usd?: number rate_limit?: number allowed_providers?: string[] | null // 允许的提供商列表 allowed_api_formats?: string[] | null // 允许的 API 格式列表 allowed_models?: string[] | null // 允许的模型列表 auto_delete_on_expiry?: boolean // 过期后是否自动删除 last_used_at?: string expires_at?: string created_at: string updated_at?: string } export interface CreateStandaloneApiKeyRequest { name?: string allowed_providers?: string[] | null allowed_api_formats?: string[] | null allowed_models?: string[] | null rate_limit?: number expire_days?: number | null // null = 永不过期 initial_balance_usd: number // 初始余额,必须设置 auto_delete_on_expiry?: boolean // 过期后是否自动删除 } export interface AdminApiKeysResponse { api_keys: AdminApiKey[] total: number limit: number skip: number } export interface ApiKeyToggleResponse { id: string // UUID is_active: boolean message: string } // 管理员API密钥管理相关API export const adminApi = { // 获取所有独立余额Keys列表 async getAllApiKeys(params?: { skip?: number limit?: number is_active?: boolean }): Promise { const response = await apiClient.get('/api/admin/api-keys', { params: params }) return response.data }, // 创建独立余额Key async createStandaloneApiKey(data: CreateStandaloneApiKeyRequest): Promise { const response = await apiClient.post( '/api/admin/api-keys', data ) return response.data }, // 更新独立余额Key async updateApiKey(keyId: string, data: Partial): Promise { const response = await apiClient.put( `/api/admin/api-keys/${keyId}`, data ) return response.data }, // 切换API密钥状态(启用/禁用) async toggleApiKey(keyId: string): Promise { const response = await apiClient.patch( `/api/admin/api-keys/${keyId}` ) return response.data }, // 删除API密钥 async deleteApiKey(keyId: string): Promise<{ message: string }> { const response = await apiClient.delete<{ message: string}>( `/api/admin/api-keys/${keyId}` ) return response.data }, // 为独立余额Key调整余额 async addApiKeyBalance(keyId: string, amountUsd: number): Promise { const response = await apiClient.patch( `/api/admin/api-keys/${keyId}/balance`, { amount_usd: amountUsd } ) return response.data }, // 获取API密钥详情(可选包含完整密钥) async getApiKeyDetail(keyId: string, includeKey: boolean = false): Promise { const response = await apiClient.get( `/api/admin/api-keys/${keyId}`, { params: { include_key: includeKey } } ) return response.data }, // 获取完整的API密钥(用于复制)- 便捷方法 async getFullApiKey(keyId: string): Promise<{ key: string }> { const response = await apiClient.get<{ key: string }>( `/api/admin/api-keys/${keyId}`, { params: { include_key: true } } ) return response.data }, // 系统配置相关 // 获取所有系统配置 async getAllSystemConfigs(): Promise { const response = await apiClient.get('/api/admin/system/configs') return response.data }, // 获取特定系统配置 async getSystemConfig(key: string): Promise<{ key: string; value: any }> { const response = await apiClient.get<{ key: string; value: any }>( `/api/admin/system/configs/${key}` ) return response.data }, // 更新系统配置 async updateSystemConfig( key: string, value: any, description?: string ): Promise<{ key: string; value: any; description?: string }> { const response = await apiClient.put<{ key: string; value: any; description?: string }>( `/api/admin/system/configs/${key}`, { value, description } ) return response.data }, // 删除系统配置 async deleteSystemConfig(key: string): Promise<{ message: string }> { const response = await apiClient.delete<{ message: string }>( `/api/admin/system/configs/${key}` ) return response.data }, // 获取系统统计 async getSystemStats(): Promise { const response = await apiClient.get('/api/admin/system/stats') return response.data }, // 获取可用的API格式列表 async getApiFormats(): Promise<{ formats: Array<{ value: string; label: string; default_path: string; aliases: string[] }> }> { const response = await apiClient.get<{ formats: Array<{ value: string; label: string; default_path: string; aliases: string[] }> }>( '/api/admin/system/api-formats' ) return response.data } }