Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
陈曦
sub2api
Commits
ca8692c7
Commit
ca8692c7
authored
Mar 31, 2026
by
InCerry
Browse files
Merge remote-tracking branch 'upstream/main'
# Conflicts: # backend/internal/service/openai_gateway_messages.go
parents
b6d46fd5
318aa5e0
Changes
43
Hide whitespace changes
Inline
Side-by-side
frontend/src/i18n/locales/zh.ts
View file @
ca8692c7
...
...
@@ -2462,6 +2462,11 @@ export default {
target
:
'
目标 TTL
'
,
targetHint
:
'
选择计费使用的 TTL 类型
'
},
customBaseUrl
:
{
label
:
'
自定义转发地址
'
,
hint
:
'
启用后将请求转发到自定义中继服务,代理地址将作为 URL 参数传递给中继服务
'
,
urlHint
:
'
中继服务地址(如 https://relay.example.com)
'
,
},
clientAffinity
:
{
label
:
'
客户端亲和调度
'
,
hint
:
'
启用后,新会话会优先调度到该客户端之前使用过的账号,避免频繁切换账号
'
...
...
@@ -4542,6 +4547,7 @@ export default {
provider
:
'
存储类型
'
,
active
:
'
生效状态
'
,
endpoint
:
'
端点
'
,
bucket
:
'
存储桶
'
,
storagePath
:
'
存储路径
'
,
capacityUsage
:
'
容量 / 已用
'
,
capacityUnlimited
:
'
无限制
'
,
...
...
frontend/src/types/index.ts
View file @
ca8692c7
...
...
@@ -734,6 +734,10 @@ export interface Account {
cache_ttl_override_enabled
?:
boolean
|
null
cache_ttl_override_target
?:
string
|
null
// 自定义 Base URL 中继转发(仅 Anthropic OAuth/SetupToken 账号有效)
custom_base_url_enabled
?:
boolean
|
null
custom_base_url
?:
string
|
null
// 客户端亲和调度(仅 Anthropic/Antigravity 平台有效)
// 启用后新会话会优先调度到客户端之前使用过的账号
client_affinity_enabled
?:
boolean
|
null
...
...
frontend/src/views/admin/ops/components/OpsSystemLogTable.vue
View file @
ca8692c7
...
...
@@ -2,6 +2,7 @@
import
{
computed
,
onMounted
,
reactive
,
ref
,
watch
}
from
'
vue
'
import
{
opsAPI
,
type
OpsRuntimeLogConfig
,
type
OpsSystemLog
,
type
OpsSystemLogSinkHealth
}
from
'
@/api/admin/ops
'
import
Pagination
from
'
@/components/common/Pagination.vue
'
import
Select
from
'
@/components/common/Select.vue
'
import
{
useAppStore
}
from
'
@/stores
'
const
appStore
=
useAppStore
()
...
...
@@ -56,6 +57,37 @@ const filters = reactive({
q
:
''
})
const
runtimeLevelOptions
=
[
{
value
:
'
debug
'
,
label
:
'
debug
'
},
{
value
:
'
info
'
,
label
:
'
info
'
},
{
value
:
'
warn
'
,
label
:
'
warn
'
},
{
value
:
'
error
'
,
label
:
'
error
'
}
]
const
stacktraceLevelOptions
=
[
{
value
:
'
none
'
,
label
:
'
none
'
},
{
value
:
'
error
'
,
label
:
'
error
'
},
{
value
:
'
fatal
'
,
label
:
'
fatal
'
}
]
const
timeRangeOptions
=
[
{
value
:
'
5m
'
,
label
:
'
5m
'
},
{
value
:
'
30m
'
,
label
:
'
30m
'
},
{
value
:
'
1h
'
,
label
:
'
1h
'
},
{
value
:
'
6h
'
,
label
:
'
6h
'
},
{
value
:
'
24h
'
,
label
:
'
24h
'
},
{
value
:
'
7d
'
,
label
:
'
7d
'
},
{
value
:
'
30d
'
,
label
:
'
30d
'
}
]
const
filterLevelOptions
=
[
{
value
:
''
,
label
:
'
全部
'
},
{
value
:
'
debug
'
,
label
:
'
debug
'
},
{
value
:
'
info
'
,
label
:
'
info
'
},
{
value
:
'
warn
'
,
label
:
'
warn
'
},
{
value
:
'
error
'
,
label
:
'
error
'
}
]
const
levelBadgeClass
=
(
level
:
string
)
=>
{
const
v
=
String
(
level
||
''
).
toLowerCase
()
if
(
v
===
'
error
'
||
v
===
'
fatal
'
)
return
'
bg-red-100 text-red-700 dark:bg-red-900/30 dark:text-red-300
'
...
...
@@ -347,20 +379,11 @@ onMounted(async () => {
<div
class=
"grid grid-cols-1 gap-3 md:grid-cols-2 xl:grid-cols-6"
>
<label
class=
"text-xs text-gray-600 dark:text-gray-300"
>
级别
<select
v-model=
"runtimeConfig.level"
class=
"input mt-1"
>
<option
value=
"debug"
>
debug
</option>
<option
value=
"info"
>
info
</option>
<option
value=
"warn"
>
warn
</option>
<option
value=
"error"
>
error
</option>
</select>
<Select
v-model=
"runtimeConfig.level"
class=
"mt-1"
:options=
"runtimeLevelOptions"
/>
</label>
<label
class=
"text-xs text-gray-600 dark:text-gray-300"
>
堆栈阈值
<select
v-model=
"runtimeConfig.stacktrace_level"
class=
"input mt-1"
>
<option
value=
"none"
>
none
</option>
<option
value=
"error"
>
error
</option>
<option
value=
"fatal"
>
fatal
</option>
</select>
<Select
v-model=
"runtimeConfig.stacktrace_level"
class=
"mt-1"
:options=
"stacktraceLevelOptions"
/>
</label>
<label
class=
"text-xs text-gray-600 dark:text-gray-300"
>
采样初始
...
...
@@ -403,15 +426,7 @@ onMounted(async () => {
<div
class=
"mb-4 grid grid-cols-1 gap-3 md:grid-cols-5"
>
<label
class=
"text-xs text-gray-600 dark:text-gray-300"
>
时间范围
<select
v-model=
"filters.time_range"
class=
"input mt-1"
>
<option
value=
"5m"
>
5m
</option>
<option
value=
"30m"
>
30m
</option>
<option
value=
"1h"
>
1h
</option>
<option
value=
"6h"
>
6h
</option>
<option
value=
"24h"
>
24h
</option>
<option
value=
"7d"
>
7d
</option>
<option
value=
"30d"
>
30d
</option>
</select>
<Select
v-model=
"filters.time_range"
class=
"mt-1"
:options=
"timeRangeOptions"
/>
</label>
<label
class=
"text-xs text-gray-600 dark:text-gray-300"
>
开始时间(可选)
...
...
@@ -423,13 +438,7 @@ onMounted(async () => {
</label>
<label
class=
"text-xs text-gray-600 dark:text-gray-300"
>
级别
<select
v-model=
"filters.level"
class=
"input mt-1"
>
<option
value=
""
>
全部
</option>
<option
value=
"debug"
>
debug
</option>
<option
value=
"info"
>
info
</option>
<option
value=
"warn"
>
warn
</option>
<option
value=
"error"
>
error
</option>
</select>
<Select
v-model=
"filters.level"
class=
"mt-1"
:options=
"filterLevelOptions"
/>
</label>
<label
class=
"text-xs text-gray-600 dark:text-gray-300"
>
组件
...
...
Prev
1
2
3
Next
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment