feat(ai): 统一 AI 配置入口到 /admin/ai-settings

## 新增
- 创建 /admin/ai-settings 统一配置页(AiProviderSettingsCard + AiUsageDashboard)
- admin 侧边栏新增"AI 配置"菜单项(权限 AI_CONFIGURE,图标 Sparkles)
- 新增 deleteAiProvider 数据访问层(事务删除 + 自动转移默认)
- 新增 deleteAiProviderAction Server Action(Zod 校验 + 权限校验)
- AiProviderSettingsCard 新增删除按钮(AlertDialog 确认 + destructive 变体)
- 新增 i18n 翻译键(delete/deleteConfirm/deleteSuccess 等,zh-CN + en)

## 移除
- 从 /settings 移除 AI 标签页(原 VALID_TABS 含 "ai",现仅 4 标签页)
- 从考试页面移除 AI 配置弹窗(Dialog + AiProviderSettingsCard 内嵌)
- 从 ai-provider-selector.tsx 移除配置弹窗(managePanel/manageOpen props)
- 移除 settings-view.tsx 中 canConfigureAi 逻辑和未使用 import

## 变更
- 考试页面"管理"按钮改为 Link 跳转到 /admin/ai-settings
- ai-provider-selector.tsx"管理"按钮改为 Link 跳转到 /admin/ai-settings
- exam-form.tsx 移除 providerDialogOpen/providerDialogKey 状态
- 修正架构文档 004 中 Action 命名(getAiProvidersAction → getAiProviderSummaries 等)

## 架构文档同步
- 004 更新 settings 模块章节(V3 标记/修正 Action 名称/新增 deleteAiProvider)
- 005 新增 deleteAiProviderAction 节点 + /admin/ai-settings 路由
This commit is contained in:
SpecialX
2026-06-23 19:33:28 +08:00
parent d884c6d513
commit 7e320d78c1
13 changed files with 618 additions and 213 deletions

View File

@@ -227,7 +227,15 @@
"saveFailure": "保存失败",
"loadFailure": "加载 AI 服务商失败",
"needKey": "请输入 API 密钥进行测试",
"needTest": "保存前请先测试配置"
"needTest": "保存前请先测试配置",
"delete": "删除",
"deleteNeedSelect": "请先选择要删除的服务商",
"deleteSuccess": "已删除服务商",
"deleteFailure": "删除失败",
"deleteConfirmTitle": "确认删除",
"deleteConfirmDescription": "此操作不可撤销。删除后若该服务商为默认,将自动选择最新的服务商作为默认。",
"deleteConfirm": "确认删除",
"deleteCancel": "取消"
}
},
"quickLinks": {