fix moderation key handling and key UI

This commit is contained in:
shaw
2026-05-07 14:31:19 +08:00
parent f3577bc69c
commit 0eca600ffa
9 changed files with 499 additions and 71 deletions
+21 -5
View File
@@ -2348,13 +2348,25 @@ export default {
apiKeys: 'OpenAI API Keys',
apiKeyCount: '{count} keys',
apiKeyPlaceholder: 'Enter API Key',
apiKeysPlaceholder: 'One API Key per line',
apiKeysPlaceholderKeep: 'Leave empty to keep stored keys; enter values to replace them',
apiKeysHint: '{count} keys are currently stored. Values entered here replace stored keys; leave empty to keep them.',
apiKeysPlaceholder: 'Add API Keys, one per line. They will be appended on save.',
apiKeysPlaceholderReplace: 'Replace API Keys, one per line. Stored keys will be replaced on save.',
apiKeysPlaceholderKeep: 'Add API Keys, one per line. They will be appended on save.',
apiKeysHint: '{count} keys are currently stored. This input only adds keys; save appends and de-duplicates them.',
apiKeysWriteMode: 'Write mode',
apiKeysModeAppend: 'Add',
apiKeysModeReplace: 'Replace',
apiKeysModeAppendHint: 'Default: save appends input keys and keeps stored keys.',
apiKeysModeReplaceHint: 'Replace mode: save replaces all stored keys with input keys.',
apiKeysReplaceWarning: 'Replace mode',
apiKeysReplaceNoInput: 'Replace mode requires at least 1 API Key',
apiKeyPlaceholderKeep: 'Leave empty to keep current key',
apiKeyWillClear: 'Configured key will be cleared on save',
apiKeyConfigured: 'Configured',
apiKeyTemporary: 'Pending',
apiKeyPendingDelete: 'Pending delete',
apiKeyPendingDeleteCount: '{count} keys pending deletion',
deleteApiKey: 'Delete this key',
undoDeleteApiKey: 'Undo delete',
inputApiKeyCount: '{count} keys in input',
storedApiKeyCount: '{count} stored keys',
testInputApiKeys: 'Test input keys',
@@ -2365,8 +2377,12 @@ export default {
apiKeyTestDone: 'Key test completed for {count} keys',
apiKeyTestFailed: 'Failed to test OpenAI API Keys',
apiKeyHealth: 'Key Availability',
apiKeyFreezeRule: 'Three consecutive failures freeze a key for 1 minute; moderation rotation skips frozen keys.',
apiKeyFreezeRule: '400 does not freeze; 401/403 freeze for 10 minutes; 429/529 freeze for 1 minute; other HTTP errors freeze for 10 seconds.',
apiKeyRows: '{count} keys',
apiKeyRowsCollapsed: '{count} keys hidden',
apiKeyRowsExpanded: 'Showing all {count} keys',
expandApiKeyRows: 'Expand',
collapseApiKeyRows: 'Collapse',
apiKeyHealthEmpty: 'No key status yet',
apiKeyHealthEmptyHint: 'Save keys or test input keys to see availability.',
apiKeyStatusOk: 'Available',
@@ -2383,7 +2399,7 @@ export default {
auditTestInputHint: 'Enter a prompt and upload or paste images; images are sent as base64 and are not stored.',
auditTestPromptPlaceholder: 'Enter a user prompt to test; leave empty to only test key availability.',
auditTestImages: 'Test Images',
auditTestImagesHint: 'Upload, drag, or paste images. Up to 4 images, 8MB each.',
auditTestImagesHint: 'Upload, drag, or paste images. Up to 1 image, 8MB each.',
addAuditTestImage: 'Add image',
clearAuditTest: 'Clear test',
auditTestImageLimit: 'You can add up to {count} test images',
+22 -6
View File
@@ -2425,13 +2425,25 @@ export default {
apiKeys: 'OpenAI API Keys',
apiKeyCount: '{count} 个 Key',
apiKeyPlaceholder: '请输入 API Key',
apiKeysPlaceholder: '每行一个 API Key',
apiKeysPlaceholderKeep: '留空保持已保存的 Key;填写后将替换为这些 Key',
apiKeysHint: '当前已保存 {count} 个 Key;填写文本框会替换已保存 Key,留空则保持不变。',
apiKeysPlaceholder: '新增 API Key,每行一个;保存后会追加到已保存 Key',
apiKeysPlaceholderReplace: '覆盖保存 API Key,每行一个;保存后会替换全部已保存 Key',
apiKeysPlaceholderKeep: '新增 API Key,每行一个;保存后会追加到已保存 Key',
apiKeysHint: '当前已保存 {count} 个 Key;输入区只用于新增,保存时会增量追加并自动去重。',
apiKeysWriteMode: '写入方式',
apiKeysModeAppend: '增量添加',
apiKeysModeReplace: '覆盖保存',
apiKeysModeAppendHint: '默认模式:保存时追加输入区 Key,并保留已保存 Key。',
apiKeysModeReplaceHint: '覆盖模式:保存时用输入区 Key 替换全部已保存 Key。',
apiKeysReplaceWarning: '覆盖模式',
apiKeysReplaceNoInput: '覆盖保存至少需要输入 1 个 API Key',
apiKeyPlaceholderKeep: '留空保持不变',
apiKeyWillClear: '保存后清除已配置 Key',
apiKeyConfigured: '已配置',
apiKeyTemporary: '待保存',
apiKeyPendingDelete: '待删除',
apiKeyPendingDeleteCount: '待删除 {count} 个 Key',
deleteApiKey: '删除这个 Key',
undoDeleteApiKey: '撤销删除',
inputApiKeyCount: '输入区 {count} 个 Key',
storedApiKeyCount: '已保存 {count} 个 Key',
testInputApiKeys: '测试输入区 Key',
@@ -2442,8 +2454,12 @@ export default {
apiKeyTestDone: 'Key 测试完成,共 {count} 个',
apiKeyTestFailed: '测试 OpenAI API Key 失败',
apiKeyHealth: 'Key 可用状态',
apiKeyFreezeRule: '连续 3 次失败会冻结 1 分钟,审计轮询会自动跳过。',
apiKeyRows: '{count} 个',
apiKeyFreezeRule: '400 不冻结;401/403 冻结 10 分钟;429/529 冻结 1 分钟;其他 HTTP 错误冻结 10 秒。',
apiKeyRows: '{count} 个 Key',
apiKeyRowsCollapsed: '已隐藏 {count} 个 Key',
apiKeyRowsExpanded: '正在显示全部 {count} 个 Key',
expandApiKeyRows: '展开',
collapseApiKeyRows: '收起',
apiKeyHealthEmpty: '暂无 Key 状态',
apiKeyHealthEmptyHint: '保存 Key 或测试输入区 Key 后会显示可用性。',
apiKeyStatusOk: '可用',
@@ -2460,7 +2476,7 @@ export default {
auditTestInputHint: '可填写提示词并上传或粘贴图片;图片以 base64 发送,不会保存文件。',
auditTestPromptPlaceholder: '输入要测试的用户提示词;留空时仅测试 Key 可用性。',
auditTestImages: '测试图片',
auditTestImagesHint: '支持上传、拖拽或粘贴图片,最多 4 张,每张不超过 8MB。',
auditTestImagesHint: '支持上传、拖拽或粘贴图片,最多 1 张,每张不超过 8MB。',
addAuditTestImage: '添加图片',
clearAuditTest: '清空试跑',
auditTestImageLimit: '最多只能添加 {count} 张测试图片',