diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index 5e07b3d..f583d9b 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -5,6 +5,9 @@ settings: excludeLinksFromLockfile: false dependencies: + '@vicons/ionicons5': + specifier: ^0.13.0 + version: 0.13.0 axios: specifier: ^1.9.0 version: 1.10.0 @@ -815,6 +818,10 @@ packages: eslint-visitor-keys: 4.2.1 dev: true + /@vicons/ionicons5@0.13.0: + resolution: {integrity: sha512-zvZKBPjEXKN7AXNo2Na2uy+nvuv6SP4KAMQxpKL2vfHMj0fSvuw7JZcOPCjQC3e7ayssKnaoFVAhbYcW6v41qQ==} + dev: false + /@vitejs/plugin-vue@5.2.4(vite@6.3.5)(vue@3.5.17): resolution: {integrity: sha512-7Yx/SXSOcQq5HiiV3orevHUFn+pmMB4cgbEkDYgnkUWb0WfeQ/wa2yFv6D5ICiCQOVpjA7vYDXrC7AGO8yjDHA==} engines: {node: ^18.0.0 || >=20.0.0} diff --git a/web/src/App.vue b/web/src/App.vue index 2fe484d..2d7751e 100644 --- a/web/src/App.vue +++ b/web/src/App.vue @@ -1,6 +1,5 @@ + + + + diff --git a/web/src/components/keys/GroupInfoCard.vue b/web/src/components/keys/GroupInfoCard.vue index 83b3985..c2fc68f 100644 --- a/web/src/components/keys/GroupInfoCard.vue +++ b/web/src/components/keys/GroupInfoCard.vue @@ -1,6 +1,7 @@ @@ -87,11 +72,7 @@ async function createDemoGroup() {
@@ -131,16 +112,15 @@ async function createDemoGroup() {
- + 创建分组
+ diff --git a/web/src/components/keys/KeyTable.vue b/web/src/components/keys/KeyTable.vue index 75a7628..2950b51 100644 --- a/web/src/components/keys/KeyTable.vue +++ b/web/src/components/keys/KeyTable.vue @@ -293,7 +293,7 @@ async function validateAllKeys() { } try { - const result = await keysApi.validateKeys(props.selectedGroup.id); + const result = await keysApi.validateGroupKeys(props.selectedGroup.id); window.$message.success(`验证完成: 有效${result.valid_count}个,无效${result.invalid_count}个`); } catch (_error) { // 错误已记录 diff --git a/web/src/types/models.ts b/web/src/types/models.ts index 73e2036..d2e9956 100644 --- a/web/src/types/models.ts +++ b/web/src/types/models.ts @@ -20,17 +20,26 @@ export interface UpstreamInfo { } export interface Group { - id: number; + id?: number; name: string; display_name: string; description: string; sort: number; + test_model: string; channel_type: "openai" | "gemini"; upstreams: UpstreamInfo[]; config: Record; api_keys?: APIKey[]; - created_at: string; - updated_at: string; + param_overrides: any; + created_at?: string; + updated_at?: string; +} + +export interface GroupConfigOption { + key: string; + name: string; + description: string; + default_value: number; } export interface GroupStats { diff --git a/web/src/views/Keys.vue b/web/src/views/Keys.vue index 227fbf9..1284782 100644 --- a/web/src/views/Keys.vue +++ b/web/src/views/Keys.vue @@ -22,9 +22,6 @@ async function loadGroups() { if (groups.value.length > 0 && !selectedGroup.value) { selectedGroup.value = groups.value[0]; } - } catch (_error) { - // 错误已记录 - window.$message.error("加载分组失败"); } finally { loading.value = false; }