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

@@ -22,6 +22,7 @@ import {
BookCopy,
Files,
BookX,
Sparkles,
} from "lucide-react"
import type { LucideIcon } from "lucide-react"
import { Permissions } from "@/shared/types/permissions"
@@ -134,6 +135,12 @@ export const NAV_CONFIG: Partial<Record<Role, NavItem[]>> = {
href: "/admin/error-book",
permission: Permissions.ERROR_BOOK_ANALYTICS_READ,
},
{
title: "课案管理",
icon: PenTool,
href: "/admin/lesson-plans",
permission: Permissions.LESSON_PLAN_READ,
},
{
title: "Audit Logs",
icon: ScrollText,
@@ -146,6 +153,12 @@ export const NAV_CONFIG: Partial<Record<Role, NavItem[]>> = {
]
},
...COMMON_NAV_ITEMS,
{
title: "AI 配置",
icon: Sparkles,
href: "/admin/ai-settings",
permission: Permissions.AI_CONFIGURE,
},
{
title: "Settings",
icon: Settings,
@@ -268,6 +281,7 @@ export const NAV_CONFIG: Partial<Record<Role, NavItem[]>> = {
permission: Permissions.GRADE_MANAGE,
items: [
{ title: "年级班级", href: "/management/grade/classes" },
{ title: "年级仪表盘", href: "/management/grade/dashboard" },
{ title: "年级洞察", href: "/management/grade/insights" },
]
},
@@ -287,6 +301,7 @@ export const NAV_CONFIG: Partial<Record<Role, NavItem[]>> = {
permission: Permissions.GRADE_MANAGE,
items: [
{ title: "年级班级", href: "/management/grade/classes" },
{ title: "年级仪表盘", href: "/management/grade/dashboard" },
{ title: "年级洞察", href: "/management/grade/insights" },
]
},
@@ -332,6 +347,7 @@ export const NAV_CONFIG: Partial<Record<Role, NavItem[]>> = {
permission: Permissions.GRADE_MANAGE,
items: [
{ title: "年级班级", href: "/management/grade/classes" },
{ title: "年级仪表盘", href: "/management/grade/dashboard" },
{ title: "年级洞察", href: "/management/grade/insights" },
]
},
@@ -392,6 +408,12 @@ export const NAV_CONFIG: Partial<Record<Role, NavItem[]>> = {
href: "/student/grades",
permission: Permissions.GRADE_RECORD_READ,
},
{
title: "我的课案",
icon: PenTool,
href: "/student/lesson-plans",
permission: Permissions.LESSON_PLAN_READ,
},
{
title: "Attendance",
icon: CalendarCheck,
@@ -430,6 +452,12 @@ export const NAV_CONFIG: Partial<Record<Role, NavItem[]>> = {
href: "/parent/grades",
permission: Permissions.GRADE_RECORD_READ,
},
{
title: "孩子课案",
icon: PenTool,
href: "/parent/lesson-plans",
permission: Permissions.LESSON_PLAN_READ,
},
{
title: "Attendance",
icon: CalendarCheck,