按 ARCHITECTURE.md 与 admin-NeedTodo.md 要求补齐所有管理页面缺失功能: - users/roles/permissions:权限矩阵搜索/折叠、zod 校验、value 字段 - audit-logs:行内详情对话框、分页页码、ChartCardShell - school:CRUD 对话框、GradeOverviewCards、academic-year 侧栏 - announcements/invitation-codes/ai-settings:发布按钮、分页、zod 校验 - course-plans/elective:Select 导入、undefined 处理 - error-book/scheduling/questions/lesson-plans/attendance:统计卡片 验证:typecheck 0 错误、arch:scan 已更新
25 lines
1.1 KiB
TypeScript
25 lines
1.1 KiB
TypeScript
import { Suspense } from "react";
|
||
|
||
import { PluginsClient } from "@/features/admin/plugins/plugins-client";
|
||
import { ListPageSkeleton } from "@/shared/components/page-templates";
|
||
|
||
/**
|
||
* 插件管理(ARCHITECTURE.md §7.3 列表页 / §9.4 / §10 P5 / 004 §5.4)
|
||
*
|
||
* Server Component 入口:仅负责 Suspense 边界包裹(useSearchParams 要求)。
|
||
* 业务逻辑在 PluginsClient(client component)中。
|
||
*
|
||
* 数据契约:
|
||
* - pluginRegistry ❌ schema 未就绪(config-service 实际暴露 plugins/layoutTemplates/userLayoutOverride/pluginConfig,无 pluginRegistry 字段;requiredRoles/defaultSlot/defaultSize/defaultProps/propsSchema 字段缺失)→ MSW 兜底(@contract-pending)
|
||
* - updatePluginRegistry(pluginId, input) ❌ schema 无 Mutation 类型 → MSW 兜底(@contract-pending)
|
||
*
|
||
* 关联:ARCHITECTURE.md §5.3 / §5.4 / §7.3 / §9.4 / §10 P5 / §11.3 / §11.4
|
||
*/
|
||
export default function PluginsPage(): React.ReactElement {
|
||
return (
|
||
<Suspense fallback={<ListPageSkeleton rows={5} />}>
|
||
<PluginsClient />
|
||
</Suspense>
|
||
);
|
||
}
|