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:
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user