chore: Update dependencies (#13528)

This commit is contained in:
CityFun
2026-08-12 15:29:40 +08:00
committed by GitHub
parent a2d85c911d
commit daa3f6b206
20 changed files with 280 additions and 174 deletions

View File

@@ -513,7 +513,6 @@ func (u *appUpgradeContext) applyStagedFiles() error {
nginxModuleBuildDir,
nginxModuleModulesDir,
path.Join(nginxModuleConfDir, nginxModuleEnabledConfDir),
path.Join(nginxModuleConfDir, "nginx.conf"),
} {
if err := replaceUpgradePath(u.stageDir, u.original.GetPath(), relativePath); err != nil {
return err

View File

@@ -10,7 +10,7 @@ require (
github.com/aliyun/aliyun-oss-go-sdk v3.0.2+incompatible
github.com/compose-spec/compose-go/v2 v2.14.0
github.com/creack/pty v1.1.24
github.com/docker/cli v29.7.1+incompatible
github.com/docker/cli v29.7.2+incompatible
github.com/docker/docker v28.5.2+incompatible
github.com/docker/go-connections v0.8.1
github.com/fsnotify/fsnotify v1.10.1
@@ -28,7 +28,7 @@ require (
github.com/jackc/pgx/v5 v5.10.0
github.com/jinzhu/copier v0.4.0
github.com/joho/godotenv v1.5.1
github.com/klauspost/compress v1.19.1
github.com/klauspost/compress v1.19.2
github.com/mattn/go-shellwords v1.0.14
github.com/mholt/archiver/v4 v4.0.0-alpha.8
github.com/miekg/dns v1.1.72

View File

@@ -228,8 +228,8 @@ github.com/distribution/reference v0.6.0 h1:0IXCQ5g4/QMHHkarYzh5l+u8T3t73zM5Qvfr
github.com/distribution/reference v0.6.0/go.mod h1:BbU0aIcezP1/5jX/8MP0YiH4SdvB5Y4f/wlDRiLyi3E=
github.com/dlclark/regexp2 v1.12.0 h1:0j4c5qQmnC6XOWNjP3PIXURXN2gWx76rd3KvgdPkCz8=
github.com/dlclark/regexp2 v1.12.0/go.mod h1:DHkYz0B9wPfa6wondMfaivmHpzrQ3v9q8cnmRbL6yW8=
github.com/docker/cli v29.7.1+incompatible h1:ILZpP6B7fedIr6ANy824QkDp1WMJuouIq0O2SrBkB2w=
github.com/docker/cli v29.7.1+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8=
github.com/docker/cli v29.7.2+incompatible h1:dlkwallR8XqfeVnA2ELEhdwvb4lsSwuB4IgsG8Q9cLY=
github.com/docker/cli v29.7.2+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8=
github.com/docker/docker v28.5.2+incompatible h1:DBX0Y0zAjZbSrm1uzOkdr1onVghKaftjlSWt4AFexzM=
github.com/docker/docker v28.5.2+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk=
github.com/docker/docker-credential-helpers v0.9.5 h1:EFNN8DHvaiK8zVqFA2DT6BjXE0GzfLOZ38ggPTKePkY=
@@ -523,8 +523,8 @@ github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+o
github.com/klauspost/compress v1.4.1/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A=
github.com/klauspost/compress v1.13.4/go.mod h1:8dP1Hq4DHOhN9w426knH3Rhby4rFm6D8eO+e+Dq5Gzg=
github.com/klauspost/compress v1.13.6/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk=
github.com/klauspost/compress v1.19.1 h1:VsB4HPswih7mmZ8WleSFQ75c/Ui1M4trX5oAsJnhSlk=
github.com/klauspost/compress v1.19.1/go.mod h1:cwPg85FWrGar70rWktvGQj8/hthj3wpl0PGDogxkrSQ=
github.com/klauspost/compress v1.19.2 h1:hMRETovs/pu/dVWN7zIT1PGG8t509MwT6bO7XSi26R8=
github.com/klauspost/compress v1.19.2/go.mod h1:cwPg85FWrGar70rWktvGQj8/hthj3wpl0PGDogxkrSQ=
github.com/klauspost/cpuid v1.2.0/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek=
github.com/klauspost/cpuid/v2 v2.0.1/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg=
github.com/klauspost/cpuid/v2 v2.3.0 h1:S4CRMLnYUhGeDFDqkGriYKdfoFlDnMtqTiI/sFzhA9Y=

View File

@@ -59,6 +59,7 @@ var WebUrlMap = map[string]struct{}{
"/ai": {},
"/ai/ai-proxy": {},
"/ai/ai-proxy/overview": {},
"/ai/ai-proxy/model-pool": {},
"/ai/ai-proxy/api-keys": {},
"/ai/ai-proxy/groups": {},

View File

@@ -29,7 +29,7 @@ require (
github.com/pkg/errors v0.9.1
github.com/pkg/sftp v1.13.11
github.com/robfig/cron/v3 v3.0.1
github.com/russellhaering/goxmldsig v1.6.0
github.com/russellhaering/goxmldsig v1.6.1
github.com/shirou/gopsutil/v4 v4.26.7
github.com/sirupsen/logrus v1.9.4
github.com/skip2/go-qrcode v0.0.0-20200617195104-da1b6568686e

View File

@@ -234,8 +234,8 @@ github.com/robfig/cron/v3 v3.0.1 h1:WdRxkvbJztn8LMz/QEvLN5sBU+xKpSqwwUO1Pjr4qDs=
github.com/robfig/cron/v3 v3.0.1/go.mod h1:eQICP3HwyT7UooqI/z+Ov+PtYAWygg1TEWWzGIFLtro=
github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ=
github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog=
github.com/russellhaering/goxmldsig v1.6.0 h1:8fdWXEPh2k/NZNQBPFNoVfS3JmzS4ZprY/sAOpKQLks=
github.com/russellhaering/goxmldsig v1.6.0/go.mod h1:TrnaquDcYxWXfJrOjeMBTX4mLBeYAqaHEyUeWPxZlBM=
github.com/russellhaering/goxmldsig v1.6.1 h1:SB7R5ttvrGIDB2juJAK/i7DQ2Ivr7agG+ohfNJjwyYU=
github.com/russellhaering/goxmldsig v1.6.1/go.mod h1:haZkRcLs9W/Xp989fIjP3BrTdbFQveRF0QNZSYoH09w=
github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
github.com/ruudk/golang-pdf417 v0.0.0-20181029194003-1af4ab5afa58/go.mod h1:6lfFZQK844Gfx8o5WFuvpxWRwnSoipWe/p622j1v06w=
github.com/sagikazarmark/locafero v0.12.0 h1:/NQhBAkUb4+fH1jivKHWusDYFjMOOKU88eegjfxfHb4=

View File

@@ -27,11 +27,11 @@
"crypto-js": "^4.2.0",
"dompurify": "^3.4.12",
"echarts": "^6.1.0",
"element-plus": "2.14.0",
"element-plus": "2.14.3",
"js-base64": "^3.9.1",
"jsencrypt": "^3.3.2",
"lodash-es": "^4.18.1",
"md-editor-v3": "^6.5.4",
"md-editor-v3": "^6.5.5",
"monaco-editor": "^0.56.0",
"nprogress": "^0.2.0",
"pinia": "^3.0.4",
@@ -50,7 +50,7 @@
},
"devDependencies": {
"@tailwindcss/postcss": "^4.3.3",
"@types/node": "^26.1.1",
"@types/node": "^26.1.2",
"@types/uuid": "^11.0.0",
"@typescript-eslint/eslint-plugin": "^8.65.0",
"@typescript-eslint/parser": "^8.65.0",
@@ -68,7 +68,7 @@
"postcss-html": "^2.0.0",
"prettier": "^3.9.6",
"rollup-plugin-visualizer": "^7.0.1",
"sass": "^1.101.3",
"sass": "^1.102.0",
"standard-version": "^9.5.0",
"tailwindcss": "^4.3.3",
"typescript": "^6.0.3",
@@ -1583,28 +1583,28 @@
}
},
"node_modules/@floating-ui/core": {
"version": "1.7.3",
"resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.7.3.tgz",
"integrity": "sha512-sGnvb5dmrJaKEZ+LDIpguvdX3bDlEllmv4/ClQ9awcmCZrlx5jQyyMWFM5kBI+EyNOCDDiKk8il0zeuX3Zlg/w==",
"version": "1.8.0",
"resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.8.0.tgz",
"integrity": "sha512-0CIZ5itps/8x7BG8dEIhs53BvCUH2PCoogtakwRTut+Arm58sJooJ0AuZhLw2HJYIR5cMLNPBSS728sPho2khQ==",
"license": "MIT",
"dependencies": {
"@floating-ui/utils": "^0.2.10"
"@floating-ui/utils": "^0.2.12"
}
},
"node_modules/@floating-ui/dom": {
"version": "1.7.4",
"resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.7.4.tgz",
"integrity": "sha512-OOchDgh4F2CchOX94cRVqhvy7b3AFb+/rQXyswmzmGakRfkMgoWVjfnLWkRirfLEfuD4ysVW16eXzwt3jHIzKA==",
"version": "1.8.0",
"resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.8.0.tgz",
"integrity": "sha512-yXSrzeHZBTZadLOlfyhCkJHNeLJnHRnRInwdZ40L7ZiaAtrBwoYlsDrX3v5zB1Utk7CLfzcOVnVVWoXEky7Ceg==",
"license": "MIT",
"dependencies": {
"@floating-ui/core": "^1.7.3",
"@floating-ui/utils": "^0.2.10"
"@floating-ui/core": "^1.8.0",
"@floating-ui/utils": "^0.2.12"
}
},
"node_modules/@floating-ui/utils": {
"version": "0.2.10",
"resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.10.tgz",
"integrity": "sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ==",
"version": "0.2.12",
"resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.12.tgz",
"integrity": "sha512-HpCo8tmWzLVad5s2d19EhAz5zqrrQ6s69qd6moPMQvkOuSwDT1YgRfWSVuc4ennqrgv3OHppiOGMQ7oC13yIww==",
"license": "MIT"
},
"node_modules/@humanfs/core": {
@@ -3006,9 +3006,9 @@
"license": "MIT"
},
"node_modules/@types/node": {
"version": "26.1.1",
"resolved": "https://registry.npmjs.org/@types/node/-/node-26.1.1.tgz",
"integrity": "sha512-nxAkRSVkN1Y0JC1W8ky/fTfkGsMmcrRsbx+3XoZE+rMOX71kLYTV7fLXpqud1GpbpP5TuffXFqfX7fH2GgZREw==",
"version": "26.1.2",
"resolved": "https://registry.npmjs.org/@types/node/-/node-26.1.2.tgz",
"integrity": "sha512-Vu4a5UFA9rIIFJ7rB/Vaafh9lrCQszopTCx6KjFboXTGQbPNasehVR5TEiithSDGyd1DEiUByggTZsg8jukeIg==",
"dev": true,
"license": "MIT",
"peer": true,
@@ -5457,14 +5457,14 @@
"license": "ISC"
},
"node_modules/element-plus": {
"version": "2.14.0",
"resolved": "https://registry.npmjs.org/element-plus/-/element-plus-2.14.0.tgz",
"integrity": "sha512-POgH+TtoreaEKWqYYAVQyE6i8rQMEFqAEublyF29dBA5yASWPLKY6EzfeqBTr2Uv26mPss4vSrMrNPyaK7LX5w==",
"version": "2.14.3",
"resolved": "https://registry.npmjs.org/element-plus/-/element-plus-2.14.3.tgz",
"integrity": "sha512-pJcvxcpZjYruNzuJhAeVwnbYjfNgzBKnWHwSVEhwzM2/kcLI3brzmtIBxtPqd4hQWJfD1PRnjoc1WipLw2eBGg==",
"license": "MIT",
"dependencies": {
"@ctrl/tinycolor": "^4.2.0",
"@element-plus/icons-vue": "^2.3.2",
"@floating-ui/dom": "^1.0.1",
"@floating-ui/dom": "^1.7.6",
"@popperjs/core": "npm:@sxzz/popperjs-es@^2.11.8",
"@types/lodash": "^4.17.24",
"@types/lodash-es": "^4.17.12",
@@ -5476,7 +5476,7 @@
"lodash-unified": "^1.0.3",
"memoize-one": "^6.0.0",
"normalize-wheel-es": "^1.2.0",
"vue-component-type-helpers": "^3.2.8"
"vue-component-type-helpers": "^3.3.5"
},
"peerDependencies": {
"vue": "^3.3.7"
@@ -7865,9 +7865,9 @@
}
},
"node_modules/md-editor-v3": {
"version": "6.5.4",
"resolved": "https://registry.npmjs.org/md-editor-v3/-/md-editor-v3-6.5.4.tgz",
"integrity": "sha512-oemxSjh4Da+rFseLYWBlknSfe60eHjHUybj548BZwQZysgtA1u9g+i1drQdbuvEStTN9qZv5rgyEQH71MH/PjA==",
"version": "6.5.5",
"resolved": "https://registry.npmjs.org/md-editor-v3/-/md-editor-v3-6.5.5.tgz",
"integrity": "sha512-XXw3TwLFL9C8f1n9z39dZ7T2aYkHA5Vi7IEB3sbkn+9BSi7xohEcHYMD1zV86fLH2KGKStA453jUZcEmZR3XSg==",
"license": "MIT",
"dependencies": {
"@codemirror/autocomplete": "^6.18.7",
@@ -9242,9 +9242,9 @@
"license": "MIT"
},
"node_modules/sass": {
"version": "1.101.3",
"resolved": "https://registry.npmjs.org/sass/-/sass-1.101.3.tgz",
"integrity": "sha512-Z1lLHhtAII+dyLNIQB6JQTZMy7sDxk3f5NzbINRc9ks1P0HCGvSuKev0wUhULFpLSaHBIMZrcTs9WDQUZerrgA==",
"version": "1.102.0",
"resolved": "https://registry.npmjs.org/sass/-/sass-1.102.0.tgz",
"integrity": "sha512-NSOyTnaQF7rTAEOtI2fwb386vL+akyiQLBZu8Na7hXCb+umJy0GAqlcMIaqACZ6Z1VgTBS4K9PG6B3IdjHGJsw==",
"dev": true,
"license": "MIT",
"peer": true,
@@ -10968,9 +10968,9 @@
}
},
"node_modules/vue-component-type-helpers": {
"version": "3.2.8",
"resolved": "https://registry.npmjs.org/vue-component-type-helpers/-/vue-component-type-helpers-3.2.8.tgz",
"integrity": "sha512-9689efAXhN/EV86plgkL/XFiJSXhGtWPG6JDboZ+QnjlUWUUQrQ0ILKQtw4iQsuwIwu5k6Aw+JnehDe7161e7A==",
"version": "3.3.9",
"resolved": "https://registry.npmjs.org/vue-component-type-helpers/-/vue-component-type-helpers-3.3.9.tgz",
"integrity": "sha512-3c/UfMe0SqyEfcGTyH7mfshHagJ9QTCbppCb0/uGpHZpFug7+If3GeGZN7I0YheKEExemx3xldQPoO7PQSOLQg==",
"license": "MIT"
},
"node_modules/vue-demi": {

View File

@@ -38,11 +38,11 @@
"crypto-js": "^4.2.0",
"dompurify": "^3.4.12",
"echarts": "^6.1.0",
"element-plus": "2.14.0",
"element-plus": "2.14.3",
"js-base64": "^3.9.1",
"jsencrypt": "^3.3.2",
"lodash-es": "^4.18.1",
"md-editor-v3": "^6.5.4",
"md-editor-v3": "^6.5.5",
"monaco-editor": "^0.56.0",
"nprogress": "^0.2.0",
"pinia": "^3.0.4",
@@ -61,7 +61,7 @@
},
"devDependencies": {
"@tailwindcss/postcss": "^4.3.3",
"@types/node": "^26.1.1",
"@types/node": "^26.1.2",
"@types/uuid": "^11.0.0",
"@typescript-eslint/eslint-plugin": "^8.65.0",
"@typescript-eslint/parser": "^8.65.0",
@@ -79,7 +79,7 @@
"postcss-html": "^2.0.0",
"prettier": "^3.9.6",
"rollup-plugin-visualizer": "^7.0.1",
"sass": "^1.101.3",
"sass": "^1.102.0",
"standard-version": "^9.5.0",
"tailwindcss": "^4.3.3",
"typescript": "^6.0.3",

View File

@@ -1005,7 +1005,6 @@ const message = {
failureCount: 'Failures',
lastError: 'Last Error',
modelMap: 'Model Mapping',
qpsLimit: 'QPS Limit',
tokenLimit: 'Token Limit',
tokenUsed: 'Used Tokens',
tokenRemaining: 'Remaining Tokens',
@@ -1030,7 +1029,6 @@ const message = {
basicSetting: 'Basic Settings',
performanceSetting: 'Performance Settings',
logSetting: 'Log Settings',
lbPolicy: 'Load Balancing Policy',
protocolConversion: 'Protocol Conversion',
protocolConversionDesc:
'Allow supported direct conversion between Chat Completions, Responses, and Anthropic Messages. Native protocols always take priority.',
@@ -1049,16 +1047,27 @@ const message = {
visionPreprocess: 'Vision Preprocessing',
cacheHit: 'Cache Hit',
apiType: 'API Type',
lbPolicyRoundRobin: 'Round Robin',
lbPolicyRoundRobinDesc:
'Select available model accounts in order. Use this when backends have similar capacity.',
lbPolicyWeightedRoundRobin: 'Weighted Round Robin',
lbPolicyWeightedRoundRobinDesc:
'Distribute requests by model account weight. Higher weight receives more traffic; use this when backend capacity differs.',
lbPolicyFailover: 'Failover',
lbPolicyFailoverDesc:
'Use the highest-priority model account first, then switch to the next available account after failure or cooldown.',
maxConcurrency: 'Max Concurrency',
accountMaxConcurrency: 'Account Max Concurrency',
groupMaxConcurrency: 'User Group Max Concurrency',
apiKeyMaxConcurrency: 'Per-API-Key Max Concurrency',
gatewayConcurrency: 'Gateway Concurrency',
waitingQueue: 'Waiting Queue',
modelAccountConcurrency: 'Model Account Concurrency',
groupConcurrency: 'User Group Concurrency',
apiKeyConcurrency: 'API Key Concurrency',
currentLimit: 'Current / Limit',
utilization: 'Utilization',
autoRefreshSeconds: 'Refreshes every {0}s',
zeroMeansUnlimited: 'Set to 0 for unlimited.',
groupMaxConcurrencyDesc:
'Limits active requests across all API Keys in this group. Set to 0 for unlimited.',
apiKeyMaxConcurrencyDesc: 'Limits active requests for each API Key in this group. Set to 0 for unlimited.',
schedulingReason: 'Scheduling Reason',
schedulingAffinity: 'Affinity',
schedulingLeastUtilized: 'Least Utilized',
schedulingPriorityFallback: 'Priority Fallback',
schedulingRetry: 'Retry',
queueSize: 'Queue Size',
queueTimeoutSeconds: 'Queue Wait Timeout (s)',
requestTimeoutSeconds: 'Non-stream Request Timeout (s)',

View File

@@ -1010,7 +1010,6 @@ const message = {
failureCount: 'Fallos',
lastError: 'Último error',
modelMap: 'Mapeo de modelos',
qpsLimit: 'Límite de QPS',
tokenLimit: 'Límite de tokens',
tokenUsed: 'Tokens usados',
tokenRemaining: 'Tokens restantes',
@@ -1034,7 +1033,6 @@ const message = {
basicSetting: 'Configuración básica',
performanceSetting: 'Configuración de rendimiento',
logSetting: 'Configuración de registros',
lbPolicy: 'Estrategia de balanceo',
protocolConversion: 'Conversión de protocolo',
protocolConversionDesc:
'Permite la conversión directa compatible entre Chat Completions, Responses y Anthropic Messages. Los protocolos nativos siempre tienen prioridad.',
@@ -1054,16 +1052,28 @@ const message = {
visionPreprocess: 'Preprocesamiento visual',
cacheHit: 'Acierto de caché',
apiType: 'Tipo de API',
lbPolicyRoundRobin: 'Round Robin',
lbPolicyRoundRobinDesc:
'Selecciona las cuentas de modelo disponibles en orden. Úselo cuando los backends tengan capacidad similar.',
lbPolicyWeightedRoundRobin: 'Round Robin ponderado',
lbPolicyWeightedRoundRobinDesc:
'Distribuye solicitudes según el peso de la cuenta de modelo. Un peso mayor recibe más tráfico; úselo cuando la capacidad de los backends sea diferente.',
lbPolicyFailover: 'Conmutación por error',
lbPolicyFailoverDesc:
'Usa primero la cuenta de modelo con mayor prioridad y cambia a la siguiente disponible tras un fallo o periodo de enfriamiento.',
maxConcurrency: 'Concurrencia máxima',
accountMaxConcurrency: 'Concurrencia máxima de la cuenta',
groupMaxConcurrency: 'Concurrencia máxima del grupo de usuarios',
apiKeyMaxConcurrency: 'Concurrencia máxima por API Key',
gatewayConcurrency: 'Concurrencia del gateway',
waitingQueue: 'Cola de espera',
modelAccountConcurrency: 'Concurrencia de cuentas de modelo',
groupConcurrency: 'Concurrencia de grupos de usuarios',
apiKeyConcurrency: 'Concurrencia de API Keys',
currentLimit: 'Actual / Límite',
utilization: 'Utilización',
autoRefreshSeconds: 'Actualización automática cada {0}s',
zeroMeansUnlimited: 'Establezca 0 para no limitar.',
groupMaxConcurrencyDesc:
'Limita las solicitudes activas de todas las API Keys del grupo. 0 significa sin límite.',
apiKeyMaxConcurrencyDesc:
'Limita las solicitudes activas de cada API Key del grupo. 0 significa sin límite.',
schedulingReason: 'Motivo de programación',
schedulingAffinity: 'Afinidad',
schedulingLeastUtilized: 'Menor utilización',
schedulingPriorityFallback: 'Fallback de prioridad',
schedulingRetry: 'Reintento',
queueSize: 'Tamaño de cola',
queueTimeoutSeconds: 'Tiempo de espera en cola (s)',
requestTimeoutSeconds: 'Timeout de solicitud no streaming (s)',

View File

@@ -992,7 +992,6 @@ const message = {
failureCount: 'تعداد شکست‌ها',
lastError: 'آخرین خطا',
modelMap: 'نگاشت مدل',
qpsLimit: 'محدودیت QPS',
tokenLimit: 'محدودیت توکن',
tokenUsed: 'توکن استفاده شده',
tokenRemaining: 'توکن باقی‌مانده',
@@ -1017,7 +1016,6 @@ const message = {
basicSetting: 'تنظیمات پایه',
performanceSetting: 'تنظیمات عملکرد',
logSetting: 'تنظیمات لاگ',
lbPolicy: 'خط مشی توزیع بار',
protocolConversion: 'تبدیل پروتکل',
protocolConversionDesc:
'تبدیل مستقیم پشتیبانی‌شده بین Chat Completions، Responses و Anthropic Messages را فعال می‌کند. پروتکل بومی همیشه اولویت دارد.',
@@ -1036,16 +1034,26 @@ const message = {
visionPreprocess: 'پیش‌پردازش بینایی',
cacheHit: 'اصابت حافظه نهان',
apiType: 'نوع API',
lbPolicyRoundRobin: 'چرخه‌ای',
lbPolicyRoundRobinDesc:
'حساب‌های مدل موجود را به ترتیب انتخاب کنید. زمانی استفاده شود که بک‌اندها ظرفیت مشابهی دارند.',
lbPolicyWeightedRoundRobin: 'چرخه‌ای وزنی',
lbPolicyWeightedRoundRobinDesc:
'درخواست‌ها را بر اساس وزن حساب مدل توزیع کنید. وزن بالاتر ترافیک بیشتری دریافت می‌کند؛ زمانی که ظرفیت بک‌اند متفاوت است استفاده شود.',
lbPolicyFailover: 'خرابی',
lbPolicyFailoverDesc:
'ابتدا از حساب مدل با بالاترین اولویت استفاده کنید، سپس پس از خرابی یا دوره خنک‌سازی به حساب بعدی موجود تغییر دهید.',
maxConcurrency: 'حداکثر هم‌روندی',
accountMaxConcurrency: 'حداکثر هم‌روندی حساب',
groupMaxConcurrency: 'حداکثر هم‌روندی گروه کاربر',
apiKeyMaxConcurrency: 'حداکثر هم‌روندی برای هر API Key',
gatewayConcurrency: 'هم‌روندی دروازه',
waitingQueue: 'صف انتظار',
modelAccountConcurrency: 'هم‌روندی حساب مدل',
groupConcurrency: 'هم‌روندی گروه کاربر',
apiKeyConcurrency: 'هم‌روندی API Key',
currentLimit: 'فعلی / حد',
utilization: 'میزان استفاده',
autoRefreshSeconds: 'به‌روزرسانی خودکار هر {0} ثانیه',
zeroMeansUnlimited: 'برای نامحدود بودن مقدار 0 را تنظیم کنید.',
groupMaxConcurrencyDesc: 'درخواست‌های فعال همه API Keyهای گروه را محدود می‌کند. 0 یعنی نامحدود.',
apiKeyMaxConcurrencyDesc: 'درخواست‌های فعال هر API Key در گروه را محدود می‌کند. 0 یعنی نامحدود.',
schedulingReason: 'دلیل زمان‌بندی',
schedulingAffinity: 'وابستگی',
schedulingLeastUtilized: 'کمترین استفاده',
schedulingPriorityFallback: 'بازگشت اولویت',
schedulingRetry: 'تلاش مجدد',
queueSize: 'اندازه صف',
queueTimeoutSeconds: 'مهلت انتظار در صف (ثانیه)',
requestTimeoutSeconds: 'مهلت درخواست غیر جریانی (ثانیه)',

View File

@@ -996,7 +996,6 @@ const message = {
failureCount: '失敗回数',
lastError: '直近のエラー',
modelMap: 'モデルマッピング',
qpsLimit: 'QPS 制限',
tokenLimit: 'Token 制限',
tokenUsed: '使用済み Token',
tokenRemaining: '残り Token',
@@ -1020,7 +1019,6 @@ const message = {
basicSetting: '基本設定',
performanceSetting: 'パフォーマンス設定',
logSetting: 'ログ設定',
lbPolicy: '負荷分散ポリシー',
protocolConversion: 'プロトコル変換',
protocolConversionDesc:
'Chat Completions、Responses、Anthropic Messages 間でサポートされる直接変換を有効にします。ネイティブプロトコルが常に優先されます。',
@@ -1039,16 +1037,26 @@ const message = {
visionPreprocess: '視覚前処理',
cacheHit: 'キャッシュヒット',
apiType: 'API タイプ',
lbPolicyRoundRobin: 'ラウンドロビン',
lbPolicyRoundRobinDesc:
'利用可能なモデルアカウントを順番に選択します。バックエンドの性能が近い場合に適しています。',
lbPolicyWeightedRoundRobin: '重み付きラウンドロビン',
lbPolicyWeightedRoundRobinDesc:
'モデルアカウントの重みに応じてリクエストを分配します。重みが大きいほど多くのトラフィックを受けます。',
lbPolicyFailover: 'フェイルオーバー',
lbPolicyFailoverDesc:
'優先度が最も高いモデルアカウントを先に使用し、失敗またはクールダウン後に次の利用可能なアカウントへ切り替えます。',
maxConcurrency: '最大同時実行数',
accountMaxConcurrency: 'アカウント最大同時実行数',
groupMaxConcurrency: 'ユーザーグループ最大同時実行数',
apiKeyMaxConcurrency: 'API Key ごとの最大同時実行数',
gatewayConcurrency: 'ゲートウェイ同時実行数',
waitingQueue: '待機キュー',
modelAccountConcurrency: 'モデルアカウント同時実行数',
groupConcurrency: 'ユーザーグループ同時実行数',
apiKeyConcurrency: 'API Key 同時実行数',
currentLimit: '現在 / 上限',
utilization: '使用率',
autoRefreshSeconds: '{0} 秒ごとに自動更新',
zeroMeansUnlimited: '0 に設定すると無制限になります。',
groupMaxConcurrencyDesc: 'グループ内の全 API Key のアクティブリクエスト数を制限します。0 は無制限です。',
apiKeyMaxConcurrencyDesc: 'グループ内の各 API Key のアクティブリクエスト数を制限します。0 は無制限です。',
schedulingReason: 'スケジューリング理由',
schedulingAffinity: 'アフィニティ',
schedulingLeastUtilized: '最低利用率',
schedulingPriorityFallback: '優先度フォールバック',
schedulingRetry: '再試行',
queueSize: 'キューサイズ',
queueTimeoutSeconds: 'キュー待機タイムアウト(秒)',
requestTimeoutSeconds: '非ストリーミングリクエストタイムアウト(秒)',

View File

@@ -985,7 +985,6 @@ const message = {
failureCount: '실패 횟수',
lastError: '최근 오류',
modelMap: '모델 매핑',
qpsLimit: 'QPS 제한',
tokenLimit: 'Token 제한',
tokenUsed: '사용한 Token',
tokenRemaining: '남은 Token',
@@ -1009,7 +1008,6 @@ const message = {
basicSetting: '기본 설정',
performanceSetting: '성능 설정',
logSetting: '로그 설정',
lbPolicy: '부하 분산 정책',
protocolConversion: '프로토콜 변환',
protocolConversionDesc:
'Chat Completions, Responses 및 Anthropic Messages 간에 지원되는 직접 변환을 허용합니다. 네이티브 프로토콜이 항상 우선합니다.',
@@ -1028,16 +1026,26 @@ const message = {
visionPreprocess: '비전 전처리',
cacheHit: '캐시 적중',
apiType: 'API 유형',
lbPolicyRoundRobin: '라운드 로빈',
lbPolicyRoundRobinDesc:
'사용 가능한 모델 계정을 순서대로 선택합니다. 백엔드 성능이 비슷한 경우에 적합합니다.',
lbPolicyWeightedRoundRobin: '가중 라운드 로빈',
lbPolicyWeightedRoundRobinDesc:
'모델 계정의 가중치에 따라 요청을 분배합니다. 가중치가 높을수록 더 많은 트래픽을 받습니다.',
lbPolicyFailover: '장애 조치',
lbPolicyFailoverDesc:
'우선순위가 가장 높은 모델 계정을 먼저 사용하고, 실패 또는 쿨다운 후 다음 사용 가능한 계정으로 전환합니다.',
maxConcurrency: '최대 동시성',
accountMaxConcurrency: '계정 최대 동시성',
groupMaxConcurrency: '사용자 그룹 최대 동시성',
apiKeyMaxConcurrency: 'API Key별 최대 동시성',
gatewayConcurrency: '게이트웨이 동시성',
waitingQueue: '대기열',
modelAccountConcurrency: '모델 계정 동시성',
groupConcurrency: '사용자 그룹 동시성',
apiKeyConcurrency: 'API Key 동시성',
currentLimit: '현재 / 한도',
utilization: '사용률',
autoRefreshSeconds: '{0}초마다 자동 새로고침',
zeroMeansUnlimited: '0으로 설정하면 제한이 없습니다.',
groupMaxConcurrencyDesc: '그룹의 모든 API Key 활성 요청 수를 제한합니다. 0은 무제한입니다.',
apiKeyMaxConcurrencyDesc: '그룹 내 각 API Key의 활성 요청 수를 제한합니다. 0은 무제한입니다.',
schedulingReason: '스케줄링 이유',
schedulingAffinity: '선호 계정',
schedulingLeastUtilized: '최저 사용률',
schedulingPriorityFallback: '우선순위 폴백',
schedulingRetry: '재시도',
queueSize: '대기열 크기',
queueTimeoutSeconds: '대기열 대기 시간 초과(초)',
requestTimeoutSeconds: '비스트리밍 요청 시간 초과(초)',

View File

@@ -985,7 +985,6 @@ const message = {
failureCount: 'ການຫຼົ້ມເຫຼວ',
lastError: 'ຂໍ້ຜິດພາດລ່າສຸດ',
modelMap: 'ການຈັບຄູ່ໂມເດວ (Mapping)',
qpsLimit: 'ຈຳກັດ QPS',
tokenLimit: 'ຈຳກັດ Token',
tokenUsed: 'Token ທີ່ໃຊ້ແລ້ວ',
tokenRemaining: 'Token ທີ່ເຫຼືອ',
@@ -1010,7 +1009,6 @@ const message = {
basicSetting: 'ຕັ້ງຄ່າພື້ນຖານ',
performanceSetting: 'ຕັ້ງຄ່າປະສິດທິພາບ',
logSetting: 'ຕັ້ງຄ່າລັອກ',
lbPolicy: 'ນະໂຍບາຍການກະຈາຍພາລະ (Load Balancing)',
protocolConversion: 'ການປ່ຽນໂປຣໂຕຄອນ',
protocolConversionDesc:
'ອະນຸຍາດການປ່ຽນໂດຍກົງທີ່ຮອງຮັບລະຫວ່າງ Chat Completions, Responses ແລະ Anthropic Messages. ໂປຣໂຕຄອນເດີມຈະຖືກໃຫ້ສິດກ່ອນສະເໝີ.',
@@ -1028,15 +1026,26 @@ const message = {
visionPreprocess: 'ການປະມວນຜົນພາບລ່ວງໜ້າ',
cacheHit: 'ພົບໃນແຄຊ',
apiType: 'ປະເພດ API',
lbPolicyRoundRobin: 'Round Robin',
lbPolicyRoundRobinDesc: 'ເລືອກບັນຊີໂມເດວຕາມລຳດັບ. ໃຊ້ເມື່ອລະບົບຫຼັງບ້ານມີຄວາມສາມາດໃກ້ຄຽງກັນ.',
lbPolicyWeightedRoundRobin: 'Round Robin ແບບຖ່ວງນ້ຳໜັກ',
lbPolicyWeightedRoundRobinDesc:
'ກະຈາຍການຮ້ອງຂໍຕາມນ້ຳໜັກຂອງບັນຊີໂມເດວ. ນ້ຳໜັກສູງກວ່າຈະໄດ້ຮັບ traffic ຫຼາຍກວ່າ.',
lbPolicyFailover: 'Failover',
lbPolicyFailoverDesc:
'ໃຊ້ບັນຊີໂມເດວທີ່ມີລຳດັບຄວາມສຳຄັນສູງສຸດກ່ອນ, ແລ້ວຈຶ່ງປ່ຽນໄປບັນຊີຖັດໄປເມື່ອເກີດຂໍ້ຜິດພາດ.',
maxConcurrency: 'ການເຮັດວຽກພ້ອມກັນສູງສຸດ',
accountMaxConcurrency: 'ຈຳນວນພ້ອມກັນສູງສຸດຂອງບັນຊີ',
groupMaxConcurrency: 'ຈຳນວນພ້ອມກັນສູງສຸດຂອງກຸ່ມຜູ້ໃຊ້',
apiKeyMaxConcurrency: 'ຈຳນວນພ້ອມກັນສູງສຸດຕໍ່ API Key',
gatewayConcurrency: 'ການເຮັດວຽກພ້ອມກັນຂອງເກດເວ',
waitingQueue: 'ຄິວລໍຖ້າ',
modelAccountConcurrency: 'ການເຮັດວຽກພ້ອມກັນຂອງບັນຊີໂມເດວ',
groupConcurrency: 'ການເຮັດວຽກພ້ອມກັນຂອງກຸ່ມຜູ້ໃຊ້',
apiKeyConcurrency: 'ການເຮັດວຽກພ້ອມກັນຂອງ API Key',
currentLimit: 'ປັດຈຸບັນ / ຂີດຈຳກັດ',
utilization: 'ອັດຕາການນຳໃຊ້',
autoRefreshSeconds: 'ໂຫຼດໃໝ່ອັດຕະໂນມັດທຸກ {0} ວິນາທີ',
zeroMeansUnlimited: 'ຕັ້ງເປັນ 0 ເພື່ອບໍ່ຈຳກັດ.',
groupMaxConcurrencyDesc: 'ຈຳກັດຄຳຂໍທີ່ເຮັດວຽກຂອງ API Key ທັງໝົດໃນກຸ່ມ. 0 ແມ່ນບໍ່ຈຳກັດ.',
apiKeyMaxConcurrencyDesc: 'ຈຳກັດຄຳຂໍທີ່ເຮັດວຽກຂອງແຕ່ລະ API Key ໃນກຸ່ມ. 0 ແມ່ນບໍ່ຈຳກັດ.',
schedulingReason: 'ເຫດຜົນການຈັດຕາຕະລາງ',
schedulingAffinity: 'ຄວາມສຳພັນ',
schedulingLeastUtilized: 'ການໃຊ້ງານຕ່ຳສຸດ',
schedulingPriorityFallback: 'ຫຼຸດລະດັບບູລິມະສິດ',
schedulingRetry: 'ລອງໃໝ່',
queueSize: 'ຂະໜາດຄິວ',
queueTimeoutSeconds: 'ເວລາຖ້າໃນຄິວໝົດເວລາ (ວິນາທີ)',
requestTimeoutSeconds: 'ໝົດເວລາການຮ້ອງຂໍແບບບໍ່ແມ່ນ stream (ວິນາທີ)',

View File

@@ -1017,7 +1017,6 @@ const message = {
failureCount: 'Bilangan gagal',
lastError: 'Ralat terkini',
modelMap: 'Pemetaan model',
qpsLimit: 'Had QPS',
tokenLimit: 'Had Token',
tokenUsed: 'Token digunakan',
tokenRemaining: 'Token berbaki',
@@ -1041,7 +1040,6 @@ const message = {
basicSetting: 'Tetapan Asas',
performanceSetting: 'Tetapan Prestasi',
logSetting: 'Tetapan Log',
lbPolicy: 'Strategi imbangan beban',
protocolConversion: 'Penukaran protokol',
protocolConversionDesc:
'Benarkan penukaran terus yang disokong antara Chat Completions, Responses dan Anthropic Messages. Protokol asli sentiasa diutamakan.',
@@ -1061,16 +1059,26 @@ const message = {
visionPreprocess: 'Prapemprosesan visual',
cacheHit: 'Cache ditemui',
apiType: 'Jenis API',
lbPolicyRoundRobin: 'Round Robin',
lbPolicyRoundRobinDesc:
'Pilih akaun model tersedia mengikut turutan. Sesuai apabila kapasiti backend hampir sama.',
lbPolicyWeightedRoundRobin: 'Round Robin berwajaran',
lbPolicyWeightedRoundRobinDesc:
'Agihkan permintaan mengikut berat akaun model. Berat lebih tinggi menerima lebih banyak trafik.',
lbPolicyFailover: 'Failover',
lbPolicyFailoverDesc:
'Gunakan akaun model berkeutamaan tertinggi dahulu, kemudian tukar ke akaun tersedia seterusnya selepas gagal atau cooldown.',
maxConcurrency: 'Keserentakan maksimum',
accountMaxConcurrency: 'Keserentakan maksimum akaun',
groupMaxConcurrency: 'Keserentakan maksimum kumpulan pengguna',
apiKeyMaxConcurrency: 'Keserentakan maksimum setiap API Key',
gatewayConcurrency: 'Keserentakan gateway',
waitingQueue: 'Baris gilir menunggu',
modelAccountConcurrency: 'Keserentakan akaun model',
groupConcurrency: 'Keserentakan kumpulan pengguna',
apiKeyConcurrency: 'Keserentakan API Key',
currentLimit: 'Semasa / Had',
utilization: 'Penggunaan',
autoRefreshSeconds: 'Muat semula automatik setiap {0} saat',
zeroMeansUnlimited: 'Tetapkan kepada 0 untuk tanpa had.',
groupMaxConcurrencyDesc: 'Hadkan permintaan aktif semua API Key dalam kumpulan. 0 bermaksud tanpa had.',
apiKeyMaxConcurrencyDesc: 'Hadkan permintaan aktif setiap API Key dalam kumpulan. 0 bermaksud tanpa had.',
schedulingReason: 'Sebab penjadualan',
schedulingAffinity: 'Afiniti',
schedulingLeastUtilized: 'Penggunaan terendah',
schedulingPriorityFallback: 'Sandaran keutamaan',
schedulingRetry: 'Cuba semula',
queueSize: 'Saiz baris gilir',
queueTimeoutSeconds: 'Tamat masa menunggu baris gilir (s)',
requestTimeoutSeconds: 'Tamat masa permintaan bukan penstriman (s)',

View File

@@ -1013,7 +1013,6 @@ const message = {
failureCount: 'Falhas',
lastError: 'Último erro',
modelMap: 'Mapeamento de modelos',
qpsLimit: 'Limite de QPS',
tokenLimit: 'Limite de tokens',
tokenUsed: 'Tokens usados',
tokenRemaining: 'Tokens restantes',
@@ -1037,7 +1036,6 @@ const message = {
basicSetting: 'Configurações básicas',
performanceSetting: 'Configurações de desempenho',
logSetting: 'Configurações de log',
lbPolicy: 'Política de balanceamento',
protocolConversion: 'Conversão de protocolo',
protocolConversionDesc:
'Permite conversão direta compatível entre Chat Completions, Responses e Anthropic Messages. Protocolos nativos sempre têm prioridade.',
@@ -1057,16 +1055,27 @@ const message = {
visionPreprocess: 'Pré-processamento visual',
cacheHit: 'Cache encontrado',
apiType: 'Tipo de API',
lbPolicyRoundRobin: 'Round Robin',
lbPolicyRoundRobinDesc:
'Seleciona contas de modelo disponíveis em ordem. Use quando os backends tiverem capacidade semelhante.',
lbPolicyWeightedRoundRobin: 'Round Robin ponderado',
lbPolicyWeightedRoundRobinDesc:
'Distribui solicitações pelo peso da conta de modelo. Peso maior recebe mais tráfego.',
lbPolicyFailover: 'Failover',
lbPolicyFailoverDesc:
'Usa primeiro a conta de modelo de maior prioridade e muda para a próxima disponível após falha ou cooldown.',
maxConcurrency: 'Concorrência máxima',
accountMaxConcurrency: 'Concorrência máxima da conta',
groupMaxConcurrency: 'Concorrência máxima do grupo de usuários',
apiKeyMaxConcurrency: 'Concorrência máxima por API Key',
gatewayConcurrency: 'Concorrência do gateway',
waitingQueue: 'Fila de espera',
modelAccountConcurrency: 'Concorrência das contas de modelo',
groupConcurrency: 'Concorrência dos grupos de usuários',
apiKeyConcurrency: 'Concorrência das API Keys',
currentLimit: 'Atual / Limite',
utilization: 'Utilização',
autoRefreshSeconds: 'Atualização automática a cada {0}s',
zeroMeansUnlimited: 'Defina como 0 para ilimitado.',
groupMaxConcurrencyDesc:
'Limita as solicitações ativas de todas as API Keys do grupo. Use 0 para ilimitado.',
apiKeyMaxConcurrencyDesc: 'Limita as solicitações ativas de cada API Key do grupo. Use 0 para ilimitado.',
schedulingReason: 'Motivo do agendamento',
schedulingAffinity: 'Afinidade',
schedulingLeastUtilized: 'Menor utilização',
schedulingPriorityFallback: 'Fallback de prioridade',
schedulingRetry: 'Nova tentativa',
queueSize: 'Tamanho da fila',
queueTimeoutSeconds: 'Timeout de espera na fila (s)',
requestTimeoutSeconds: 'Timeout de requisição sem streaming (s)',

View File

@@ -1005,7 +1005,6 @@ const message = {
failureCount: 'Ошибки',
lastError: 'Последняя ошибка',
modelMap: 'Сопоставление моделей',
qpsLimit: 'Лимит QPS',
tokenLimit: 'Лимит Token',
tokenUsed: 'Использовано Token',
tokenRemaining: 'Осталось Token',
@@ -1029,7 +1028,6 @@ const message = {
basicSetting: 'Основные настройки',
performanceSetting: 'Настройки производительности',
logSetting: 'Настройки журналов',
lbPolicy: 'Политика балансировки',
protocolConversion: 'Преобразование протокола',
protocolConversionDesc:
'Разрешает поддерживаемое прямое преобразование между Chat Completions, Responses и Anthropic Messages. Нативный протокол всегда имеет приоритет.',
@@ -1048,16 +1046,27 @@ const message = {
visionPreprocess: 'Визуальная предобработка',
cacheHit: 'Попадание в кэш',
apiType: 'Тип API',
lbPolicyRoundRobin: 'Round Robin',
lbPolicyRoundRobinDesc:
'Выбирает доступные аккаунты моделей по очереди. Подходит, когда бэкенды имеют схожую производительность.',
lbPolicyWeightedRoundRobin: 'Взвешенный Round Robin',
lbPolicyWeightedRoundRobinDesc:
'Распределяет запросы по весу аккаунта модели. Чем выше вес, тем больше трафика он получает.',
lbPolicyFailover: 'Failover',
lbPolicyFailoverDesc:
'Сначала использует аккаунт модели с наивысшим приоритетом, затем переключается на следующий доступный после ошибки или cooldown.',
maxConcurrency: 'Максимальная параллельность',
accountMaxConcurrency: 'Макс. параллельность аккаунта',
groupMaxConcurrency: 'Макс. параллельность группы',
apiKeyMaxConcurrency: 'Макс. параллельность на API Key',
gatewayConcurrency: 'Параллельность шлюза',
waitingQueue: 'Очередь ожидания',
modelAccountConcurrency: 'Параллельность модельных аккаунтов',
groupConcurrency: 'Параллельность групп пользователей',
apiKeyConcurrency: 'Параллельность API Key',
currentLimit: 'Текущее / Лимит',
utilization: 'Загрузка',
autoRefreshSeconds: 'Автообновление каждые {0} сек.',
zeroMeansUnlimited: 'Укажите 0 для отсутствия ограничений.',
groupMaxConcurrencyDesc: 'Ограничивает активные запросы всех API Key группы. 0 означает без ограничений.',
apiKeyMaxConcurrencyDesc:
'Ограничивает активные запросы каждого API Key группы. 0 означает без ограничений.',
schedulingReason: 'Причина планирования',
schedulingAffinity: 'Привязка',
schedulingLeastUtilized: 'Наименьшая загрузка',
schedulingPriorityFallback: 'Понижение приоритета',
schedulingRetry: 'Повторная попытка',
queueSize: 'Размер очереди',
queueTimeoutSeconds: 'Тайм-аут ожидания в очереди (с)',
requestTimeoutSeconds: 'Тайм-аут non-stream запроса (с)',

View File

@@ -1015,7 +1015,6 @@ const message = {
failureCount: 'Hata sayısı',
lastError: 'Son hata',
modelMap: 'Model eşlemesi',
qpsLimit: 'QPS sınırı',
tokenLimit: 'Token sınırı',
tokenUsed: 'Kullanılan Token',
tokenRemaining: 'Kalan Token',
@@ -1039,7 +1038,6 @@ const message = {
basicSetting: 'Temel Ayarlar',
performanceSetting: 'Performans Ayarları',
logSetting: 'Günlük Ayarları',
lbPolicy: 'Yük dengeleme politikası',
protocolConversion: 'Protokol dönüştürme',
protocolConversionDesc:
'Chat Completions, Responses ve Anthropic Messages arasında desteklenen doğrudan dönüşüme izin verir. Yerel protokol her zaman önceliklidir.',
@@ -1058,16 +1056,26 @@ const message = {
visionPreprocess: 'Görsel ön işleme',
cacheHit: 'Önbellek isabeti',
apiType: 'API türü',
lbPolicyRoundRobin: 'Round Robin',
lbPolicyRoundRobinDesc:
'Kullanılabilir model hesaplarını sırayla seçer. Backend kapasiteleri benzer olduğunda kullanın.',
lbPolicyWeightedRoundRobin: 'Ağırlıklı Round Robin',
lbPolicyWeightedRoundRobinDesc:
'İstekleri model hesabıırlığına göre dağıtır. Daha yüksek ağırlık daha fazla trafik alır.',
lbPolicyFailover: 'Failover',
lbPolicyFailoverDesc:
'Önce en yüksek öncelikli model hesabını kullanır, hata veya cooldown sonrası bir sonraki kullanılabilir hesaba geçer.',
maxConcurrency: 'Maksimum eşzamanlılık',
accountMaxConcurrency: 'Hesap maksimum eşzamanlılığı',
groupMaxConcurrency: 'Kullanıcı grubu maksimum eşzamanlılığı',
apiKeyMaxConcurrency: 'API Key başına maksimum eşzamanlılık',
gatewayConcurrency: 'Ağ geçidi eşzamanlılığı',
waitingQueue: 'Bekleme kuyruğu',
modelAccountConcurrency: 'Model hesabı eşzamanlılığı',
groupConcurrency: 'Kullanıcı grubu eşzamanlılığı',
apiKeyConcurrency: 'API Key eşzamanlılığı',
currentLimit: 'Mevcut / Sınır',
utilization: 'Kullanım',
autoRefreshSeconds: 'Her {0} saniyede otomatik yenilenir',
zeroMeansUnlimited: 'Sınırsız için 0 olarak ayarlayın.',
groupMaxConcurrencyDesc: 'Gruptaki tüm API Key etkin isteklerini sınırlar. 0 sınırsızdır.',
apiKeyMaxConcurrencyDesc: 'Gruptaki her API Key için etkin istekleri sınırlar. 0 sınırsızdır.',
schedulingReason: 'Zamanlama nedeni',
schedulingAffinity: 'Yakınlık',
schedulingLeastUtilized: 'En az kullanılan',
schedulingPriorityFallback: 'Öncelik geri dönüşü',
schedulingRetry: 'Yeniden deneme',
queueSize: 'Kuyruk boyutu',
queueTimeoutSeconds: 'Kuyruk bekleme zaman aşımı (sn)',
requestTimeoutSeconds: 'Akışsız istek zaman aşımı (sn)',

View File

@@ -954,7 +954,6 @@ const message = {
failureCount: '失敗次數',
lastError: '最近錯誤',
modelMap: '模型映射',
qpsLimit: 'QPS 限制',
tokenLimit: 'Token 限制',
tokenUsed: '已用 Token',
tokenRemaining: '剩餘 Token',
@@ -978,7 +977,6 @@ const message = {
basicSetting: '基礎設定',
performanceSetting: '效能設定',
logSetting: '日誌設定',
lbPolicy: '負載策略',
protocolConversion: '協議轉換',
protocolConversionDesc:
'啟用後,文字請求可在 Chat Completions、Responses 和 Anthropic Messages 的支援協議間直接轉換,原生協議始終優先。',
@@ -995,14 +993,26 @@ const message = {
visionPreprocess: '視覺預處理',
cacheHit: '快取命中',
apiType: 'API 類型',
lbPolicyRoundRobin: '輪詢',
lbPolicyRoundRobinDesc: '按順序依次選擇可用模型帳號,適合後端能力接近的場景。',
lbPolicyWeightedRoundRobin: '加權輪詢',
lbPolicyWeightedRoundRobinDesc:
'根據模型帳號權重分配請求,權重越高承擔的請求越多,適合後端性能不同的場景。',
lbPolicyFailover: '故障轉移',
lbPolicyFailoverDesc: '優先使用優先級最高的模型帳號,失敗或冷卻後再切換到下一個可用帳號。',
maxConcurrency: '最大併發',
accountMaxConcurrency: '帳號最大併發',
groupMaxConcurrency: '使用者群組最大併發',
apiKeyMaxConcurrency: '單一 API Key 最大併發',
gatewayConcurrency: '網關併發',
waitingQueue: '等待佇列',
modelAccountConcurrency: '模型帳號併發',
groupConcurrency: '使用者群組併發',
apiKeyConcurrency: 'API Key 併發',
currentLimit: '目前 / 上限',
utilization: '使用率',
autoRefreshSeconds: '每 {0} 秒自動重新整理',
zeroMeansUnlimited: '設為 0 表示不限制。',
groupMaxConcurrencyDesc: '限制此使用者群組所有 API Key 的活躍請求總數,設為 0 表示不限制。',
apiKeyMaxConcurrencyDesc: '限制此使用者群組內每個 API Key 的活躍請求數,設為 0 表示不限制。',
schedulingReason: '調度原因',
schedulingAffinity: '親和命中',
schedulingLeastUtilized: '最低利用率',
schedulingPriorityFallback: '優先級降級',
schedulingRetry: '故障重試',
queueSize: '等待佇列大小',
queueTimeoutSeconds: '佇列等待逾時(秒)',
requestTimeoutSeconds: '非串流請求逾時(秒)',

View File

@@ -967,7 +967,6 @@ const message = {
failureCount: '失败次数',
lastError: '最近错误',
modelMap: '模型映射',
qpsLimit: 'QPS 限制',
tokenLimit: 'Token 限制',
tokenUsed: '已用 Token',
tokenRemaining: '剩余 Token',
@@ -992,7 +991,6 @@ const message = {
basicSetting: '基础设置',
performanceSetting: '性能设置',
logSetting: '日志设置',
lbPolicy: '负载策略',
protocolConversion: '协议转换',
protocolConversionDesc:
'开启后,文本请求可在 Chat Completions、Responses 和 Anthropic Messages 的受支持协议间直接转换,原生协议始终优先。',
@@ -1009,14 +1007,26 @@ const message = {
visionPreprocess: '视觉预处理',
cacheHit: '缓存命中',
apiType: 'API 类型',
lbPolicyRoundRobin: '轮询',
lbPolicyRoundRobinDesc: '按顺序依次选择可用模型账号,适合后端能力接近的场景。',
lbPolicyWeightedRoundRobin: '加权轮询',
lbPolicyWeightedRoundRobinDesc:
'根据模型账号权重分配请求,权重越高承担的请求越多,适合后端性能不同的场景。',
lbPolicyFailover: '故障转移',
lbPolicyFailoverDesc: '优先使用优先级最高的模型账号,失败或冷却后再切换到下一个可用账号。',
maxConcurrency: '最大并发',
accountMaxConcurrency: '账号最大并发',
groupMaxConcurrency: '用户组最大并发',
apiKeyMaxConcurrency: '单 API Key 最大并发',
gatewayConcurrency: '网关并发',
waitingQueue: '等待队列',
modelAccountConcurrency: '模型账号并发',
groupConcurrency: '用户组并发',
apiKeyConcurrency: 'API Key 并发',
currentLimit: '当前 / 上限',
utilization: '利用率',
autoRefreshSeconds: '每 {0} 秒自动刷新',
zeroMeansUnlimited: '设置为 0 表示不限制。',
groupMaxConcurrencyDesc: '限制该用户组所有 API Key 的活跃请求总数,设置为 0 表示不限制。',
apiKeyMaxConcurrencyDesc: '限制该用户组内每个 API Key 的活跃请求数,设置为 0 表示不限制。',
schedulingReason: '调度原因',
schedulingAffinity: '亲和命中',
schedulingLeastUtilized: '最低利用率',
schedulingPriorityFallback: '优先级降级',
schedulingRetry: '故障重试',
queueSize: '等待队列大小',
queueTimeoutSeconds: '队列等待超时(秒)',
requestTimeoutSeconds: '非流式请求超时(秒)',