refactor(lesson-preparation): 主编辑器三栏布局(结构树 + 纸 + 详情面板)

- 移除 NodeEditor/NodeEditPanel 导入和 JSX
- 改为 StructureTree + PaperEditor + DetailPanel 三栏布局
- 新增 AnchorMigrationBanner
- 移除 aiContentGenerator prop(V4 DetailPanel 自带 AI 按钮)
- 删除 node-edit-panel.tsx(不再被引用)
- 删除 ai-content-generator-slot.tsx(依赖 node-edit-panel)
This commit is contained in:
SpecialX
2026-07-04 11:44:26 +08:00
parent e29f30d278
commit 124ed97060
4 changed files with 23 additions and 416 deletions

View File

@@ -1,27 +0,0 @@
"use client";
import { AiLessonContentGenerator } from "@/modules/ai/components/ai-lesson-content-generator";
import { useAiClientOptional } from "@/modules/ai/context/ai-client-provider";
import type { AiContentGeneratorSlotProps } from "@/modules/lesson-preparation/components/node-edit-panel";
/**
* P0-11 修复AI 内容生成器 slot 实现。
* 此组件在 app 层组合 @/modules/ai 的具体实现,
* 通过 props 注入到 lesson-preparation 模块的 NodeEditPanel
* 避免备课模块直接依赖 @/modules/ai。
*/
export function AiContentGeneratorSlot({
topic,
textbookId,
chapterId,
}: AiContentGeneratorSlotProps) {
const aiClient = useAiClientOptional();
if (!aiClient) return null;
return (
<AiLessonContentGenerator
topic={topic}
textbookId={textbookId}
chapterId={chapterId}
/>
);
}

View File

@@ -11,8 +11,6 @@ import { Permissions } from "@/shared/types/permissions"
import { Skeleton } from "@/shared/components/ui/skeleton"
import { AiClientProvider } from "@/modules/ai/context/ai-client-provider"
import { createCoreAiClientService } from "@/modules/ai/context/create-ai-client-service"
// P0-11 修复:通过 slot 组件注入 AI 功能,避免备课模块直接 import @/modules/ai
import { AiContentGeneratorSlot } from "./ai-content-generator-slot"
export const dynamic = "force-dynamic"
@@ -70,7 +68,6 @@ export default async function EditLessonPlanPage({
textbookTitle={textbookTitle}
chapterTitle={chapterTitle}
classes={classes}
aiContentGenerator={AiContentGeneratorSlot}
/>
</Suspense>
</div>