feat: Provider 异步删除、可配置密码策略、Hub 超时优化及多项改进

- 新增 Provider 异步删除任务系统,后台分阶段删除子资源并清理残留引用
- 新增可配置密码策略等级(weak/medium/strong),支持系统设置面板调整
- aether-hub 升级至 0.1.4,idle timeout 支持禁用(设为 0),worker 默认超时调整为 120s
- OAuth 手动续期增加 Redis 分布式锁,防止并发刷新冲突
- ProxyNode 心跳检测改为 asyncio.to_thread,避免阻塞事件循环
- 删除 ModelMultiSelect 和 useInvalidModels,MultiSelect 组件通用化
- 明确 allowed_providers/allowed_api_formats 的 NULL 与空数组语义
- 前端 StandaloneKeyFormDialog、UserFormDialog 等多处 UI 优化
- 新增 Alembic 迁移脚本清理 Provider 删除后的残留引用
- 补充相关测试用例
This commit is contained in:
fawney19
2026-03-12 01:11:35 +08:00
parent 0d770d1c4d
commit 6e51a3f45d
55 changed files with 3219 additions and 862 deletions

View File

@@ -81,6 +81,7 @@ export interface RegistrationSettingsResponse {
enable_registration: boolean
require_email_verification: boolean
email_configured: boolean
password_policy_level: string
}
export interface AuthSettingsResponse {

View File

@@ -114,8 +114,36 @@ export async function createProvider(
/**
* 删除 Provider
*/
export async function deleteProvider(providerId: string): Promise<{ message: string }> {
const response = await client.delete(`/api/admin/providers/${providerId}`)
export interface ProviderDeleteSubmitResponse {
task_id: string
status: string
message: string
}
export interface ProviderDeleteTaskResponse {
task_id: string
provider_id: string
status: string
stage: string
total_keys: number
deleted_keys: number
total_endpoints: number
deleted_endpoints: number
message: string
}
export async function deleteProvider(providerId: string): Promise<ProviderDeleteSubmitResponse> {
const response = await client.delete<ProviderDeleteSubmitResponse>(`/api/admin/providers/${providerId}`)
return response.data
}
export async function getProviderDeleteTask(
providerId: string,
taskId: string,
): Promise<ProviderDeleteTaskResponse> {
const response = await client.get<ProviderDeleteTaskResponse>(
`/api/admin/providers/${providerId}/delete-task/${taskId}`,
)
return response.data
}