mirror of
https://github.com/fawney19/Aether.git
synced 2026-09-03 01:40:21 +08:00
feat(gateway): 重构 usage 数据层、迁移系统与系统导入
数据库迁移: - 引入 baseline v2 bootstrap,空库首次启动自动初始化 - 服务启动不再自动执行迁移,需显式 `--migrate` 运行 - 新增 pending migration 检测,schema 落后时拒绝启动 Usage 数据层: - usage body 存储外部化为独立 blob 表 - 新增 HTTP audit 表拆分存储请求/响应头与 body ref - 后台清理任务支持 legacy body ref 元数据迁移 - usage runtime 写入迁移到专用 tokio runtime(独立线程池, 8MB 栈) 系统导入/导出: - 支持用户、API Keys、钱包数据的完整导入 - 兼容 legacy 与 v1.3+ 两种导出格式 其他改进: - executor outcome 增加 runtime miss 诊断上下文 - 主 tokio runtime 栈大小调整为 8MB - 前端 provider 管理支持 base URL 配置 - dev.sh 支持 --migrate 参数
This commit is contained in:
@@ -619,9 +619,32 @@ function openProviderDrawer(providerId: string) {
|
||||
providerDrawerOpen.value = true
|
||||
}
|
||||
|
||||
function mergeUpdatedProvider(updated: ProviderWithEndpointsSummary) {
|
||||
const index = providers.value.findIndex(p => p.id === updated.id)
|
||||
if (index !== -1) {
|
||||
providers.value[index] = updated
|
||||
loadBalances([updated], false)
|
||||
}
|
||||
}
|
||||
|
||||
async function refreshProviderSnapshot(
|
||||
providerId: string,
|
||||
fallbackErrorMessage = '刷新提供商数据失败',
|
||||
): Promise<ProviderWithEndpointsSummary | null> {
|
||||
try {
|
||||
const updated = await getProvider(providerId)
|
||||
mergeUpdatedProvider(updated)
|
||||
return updated
|
||||
} catch (err) {
|
||||
showError(parseApiError(err, fallbackErrorMessage), '错误')
|
||||
return null
|
||||
}
|
||||
}
|
||||
|
||||
// 打开编辑提供商对话框
|
||||
function openEditProviderDialog(provider: ProviderWithEndpointsSummary) {
|
||||
providerToEdit.value = provider
|
||||
async function openEditProviderDialog(provider: ProviderWithEndpointsSummary) {
|
||||
const latest = await refreshProviderSnapshot(provider.id, '刷新提供商状态失败')
|
||||
providerToEdit.value = latest ?? provider
|
||||
providerDialogOpen.value = true
|
||||
}
|
||||
|
||||
@@ -640,27 +663,13 @@ function handleOpsConfigSaved() {
|
||||
|
||||
// 处理提供商编辑完成
|
||||
function handleProviderUpdated(updated: ProviderWithEndpointsSummary) {
|
||||
const index = providers.value.findIndex(p => p.id === updated.id)
|
||||
if (index !== -1) {
|
||||
providers.value[index] = updated
|
||||
// 刷新该提供商的余额数据
|
||||
loadBalances([updated], false)
|
||||
}
|
||||
mergeUpdatedProvider(updated)
|
||||
}
|
||||
|
||||
// 处理详情抽屉内的刷新:只刷新当前查看的那一条提供商
|
||||
async function handleDrawerRefresh() {
|
||||
if (!selectedProviderId.value) return
|
||||
try {
|
||||
const updated = await getProvider(selectedProviderId.value)
|
||||
const index = providers.value.findIndex(p => p.id === updated.id)
|
||||
if (index !== -1) {
|
||||
providers.value[index] = updated
|
||||
loadBalances([updated], false)
|
||||
}
|
||||
} catch (err) {
|
||||
showError(parseApiError(err, '刷新提供商数据失败'), '错误')
|
||||
}
|
||||
await refreshProviderSnapshot(selectedProviderId.value)
|
||||
}
|
||||
|
||||
// 优先级保存成功回调
|
||||
|
||||
Reference in New Issue
Block a user