mirror of
https://github.com/Wei-Shaw/sub2api.git
synced 2026-10-31 00:24:38 +00:00
feat(groups): 放行 kimi/zhipu/deepseek 平台分组创建入口
PR #5666 引入 CN 平台后,路由/调度/前端类型均已支持 CN 平台分组,但分组 创建入口两头缺失:后端 Create/UpdateGroupRequest 的 platform oneof 白名单 与前端 GroupsView 平台选项都没有三平台,导致 CN 账号「无可用分组」、整条 流量链路不通(composite 不能作为替代:CN 不可为 composite 路由目标)。 - group_handler.go: 两处 oneof 加 kimi/zhipu/deepseek;composite 路由目标 白名单有意不动(DetectModelPlatform/isConcreteRequestPlatform 均无 CN 分支) - GroupsView: platformOptions/platformFilterOptions 补三项;两处徽章配色链 按 platformColors.ts 色系补 CN 分支 - i18n: admin.groups.platforms 补 kimi/zhipu/deepseek 键(zh/en),缺键时 分组徽章/GroupRPM/RateMultipliers 弹窗/ChannelsView 会渲染原始 key - GroupBadge: badgeClass/labelClass 补 CN 配色 - 新增表驱动测试:9 平台 Create/Update 全放行、非法值(别名/大小写/空格) 全拒绝、composite target 对 CN 保持拒绝的守卫
This commit is contained in:
@@ -162,6 +162,15 @@ const labelClass = computed(() => {
|
||||
if (props.platform === 'grok') {
|
||||
return `${base} bg-zinc-300/70 text-zinc-800 dark:bg-zinc-700/60 dark:text-zinc-200`
|
||||
}
|
||||
if (props.platform === 'kimi') {
|
||||
return `${base} bg-pink-200/60 text-pink-800 dark:bg-pink-800/40 dark:text-pink-300`
|
||||
}
|
||||
if (props.platform === 'zhipu') {
|
||||
return `${base} bg-indigo-200/60 text-indigo-800 dark:bg-indigo-800/40 dark:text-indigo-300`
|
||||
}
|
||||
if (props.platform === 'deepseek') {
|
||||
return `${base} bg-teal-200/60 text-teal-800 dark:bg-teal-800/40 dark:text-teal-300`
|
||||
}
|
||||
if (props.platform === 'composite') {
|
||||
return `${base} bg-cyan-200/70 text-cyan-900 dark:bg-cyan-900/50 dark:text-cyan-300`
|
||||
}
|
||||
@@ -200,6 +209,21 @@ const badgeClass = computed(() => {
|
||||
? 'bg-zinc-200 text-zinc-800 dark:bg-zinc-700 dark:text-zinc-100'
|
||||
: 'bg-zinc-100 text-zinc-700 dark:bg-zinc-800 dark:text-zinc-200'
|
||||
}
|
||||
if (props.platform === 'kimi') {
|
||||
return isSubscription.value
|
||||
? 'bg-pink-100 text-pink-700 dark:bg-pink-900/30 dark:text-pink-400'
|
||||
: 'bg-pink-50 text-pink-700 dark:bg-pink-900/20 dark:text-pink-400'
|
||||
}
|
||||
if (props.platform === 'zhipu') {
|
||||
return isSubscription.value
|
||||
? 'bg-indigo-100 text-indigo-700 dark:bg-indigo-900/30 dark:text-indigo-400'
|
||||
: 'bg-indigo-50 text-indigo-700 dark:bg-indigo-900/20 dark:text-indigo-400'
|
||||
}
|
||||
if (props.platform === 'deepseek') {
|
||||
return isSubscription.value
|
||||
? 'bg-teal-100 text-teal-700 dark:bg-teal-900/30 dark:text-teal-400'
|
||||
: 'bg-teal-50 text-teal-700 dark:bg-teal-900/20 dark:text-teal-400'
|
||||
}
|
||||
if (props.platform === 'composite') {
|
||||
return isSubscription.value
|
||||
? 'bg-cyan-100 text-cyan-800 dark:bg-cyan-900/30 dark:text-cyan-300'
|
||||
|
||||
@@ -950,6 +950,9 @@ export default {
|
||||
gemini: 'Gemini',
|
||||
antigravity: 'Antigravity',
|
||||
grok: 'Grok',
|
||||
kimi: 'Kimi',
|
||||
zhipu: 'Zhipu GLM',
|
||||
deepseek: 'DeepSeek',
|
||||
composite: 'Composite',
|
||||
},
|
||||
deleteConfirm:
|
||||
|
||||
@@ -883,6 +883,9 @@ export default {
|
||||
gemini: 'Gemini',
|
||||
antigravity: 'Antigravity',
|
||||
grok: 'Grok',
|
||||
kimi: 'Kimi',
|
||||
zhipu: 'Zhipu GLM',
|
||||
deepseek: 'DeepSeek',
|
||||
composite: 'Composite',
|
||||
},
|
||||
saving: '保存中...',
|
||||
|
||||
@@ -146,7 +146,13 @@
|
||||
? 'bg-purple-100 text-purple-700 dark:bg-purple-900/30 dark:text-purple-400'
|
||||
: value === 'grok'
|
||||
? 'bg-zinc-200 text-zinc-800 dark:bg-zinc-700 dark:text-zinc-100'
|
||||
: 'bg-blue-100 text-blue-700 dark:bg-blue-900/30 dark:text-blue-400',
|
||||
: value === 'kimi'
|
||||
? 'bg-pink-100 text-pink-700 dark:bg-pink-900/30 dark:text-pink-400'
|
||||
: value === 'zhipu'
|
||||
? 'bg-indigo-100 text-indigo-700 dark:bg-indigo-900/30 dark:text-indigo-400'
|
||||
: value === 'deepseek'
|
||||
? 'bg-teal-100 text-teal-700 dark:bg-teal-900/30 dark:text-teal-400'
|
||||
: 'bg-blue-100 text-blue-700 dark:bg-blue-900/30 dark:text-blue-400',
|
||||
]"
|
||||
>
|
||||
<PlatformIcon :platform="value" size="xs" />
|
||||
@@ -3965,7 +3971,13 @@
|
||||
? 'bg-purple-100 text-purple-700 dark:bg-purple-900/30 dark:text-purple-400'
|
||||
: group.platform === 'grok'
|
||||
? 'bg-zinc-200 text-zinc-800 dark:bg-zinc-700 dark:text-zinc-100'
|
||||
: 'bg-blue-100 text-blue-700 dark:bg-blue-900/30 dark:text-blue-400',
|
||||
: group.platform === 'kimi'
|
||||
? 'bg-pink-100 text-pink-700 dark:bg-pink-900/30 dark:text-pink-400'
|
||||
: group.platform === 'zhipu'
|
||||
? 'bg-indigo-100 text-indigo-700 dark:bg-indigo-900/30 dark:text-indigo-400'
|
||||
: group.platform === 'deepseek'
|
||||
? 'bg-teal-100 text-teal-700 dark:bg-teal-900/30 dark:text-teal-400'
|
||||
: 'bg-blue-100 text-blue-700 dark:bg-blue-900/30 dark:text-blue-400',
|
||||
]"
|
||||
>
|
||||
{{ t("admin.groups.platforms." + group.platform) }}
|
||||
@@ -4727,6 +4739,9 @@ const platformOptions = computed(() => [
|
||||
{ value: "gemini", label: "Gemini" },
|
||||
{ value: "antigravity", label: "Antigravity" },
|
||||
{ value: "grok", label: "Grok" },
|
||||
{ value: "kimi", label: "Kimi" },
|
||||
{ value: "zhipu", label: "Zhipu GLM" },
|
||||
{ value: "deepseek", label: "DeepSeek" },
|
||||
{ value: "composite", label: "Composite" },
|
||||
]);
|
||||
|
||||
@@ -4737,6 +4752,9 @@ const platformFilterOptions = computed(() => [
|
||||
{ value: "gemini", label: "Gemini" },
|
||||
{ value: "antigravity", label: "Antigravity" },
|
||||
{ value: "grok", label: "Grok" },
|
||||
{ value: "kimi", label: "Kimi" },
|
||||
{ value: "zhipu", label: "Zhipu GLM" },
|
||||
{ value: "deepseek", label: "DeepSeek" },
|
||||
{ value: "composite", label: "Composite" },
|
||||
]);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user