feat: 优化批量余额查询和用户模型权限检查

- 添加批量余额查询并发限制,避免数据库连接池耗尽
- 支持余额加载 pending 状态和前端自动重试机制
- 添加用户可用模型 API,统一使用 AccessRestrictions
- 修复用户表单编辑时数组引用共享导致的数据覆盖问题
- 添加数据库连接池配置说明到 .env.example
This commit is contained in:
fawney19
2026-01-28 01:01:05 +08:00
parent 8e0695e9d9
commit 1e0255d0ed
12 changed files with 411 additions and 64 deletions

View File

@@ -1,5 +1,6 @@
import apiClient from './client'
import type { ActivityHeatmap } from '@/types/activity'
import type { TieredPricingConfig } from './endpoints/types'
export interface Profile {
id: string // UUID
@@ -235,6 +236,28 @@ export const meApi = {
return response.data
},
// 获取用户可用的模型列表
async getAvailableModels(params?: {
skip?: number
limit?: number
search?: string
}): Promise<{
models: Array<{
id: string
name: string
display_name: string | null
is_active: boolean
default_price_per_request: number | null
default_tiered_pricing: TieredPricingConfig | null
supported_capabilities: string[] | null
config: Record<string, any> | null
}>
total: number
}> {
const response = await apiClient.get('/api/users/me/available-models', { params })
return response.data
},
// 获取端点状态(不包含敏感信息)
async getEndpointStatus(): Promise<any[]> {
const response = await apiClient.get('/api/users/me/endpoint-status')

View File

@@ -11,7 +11,7 @@ export interface PublicGlobalModel {
display_name: string | null
is_active: boolean
// 阶梯计费配置
default_tiered_pricing: TieredPricingConfig
default_tiered_pricing: TieredPricingConfig | null
default_price_per_request: number | null // 按次计费价格
// Key 能力支持
supported_capabilities: string[] | null