保留聊天面板,完全重写EditorPanel
❌ 不要改: ChatPanel、ResizableLayout、App.tsx
✅ 完全重写: EditorPanel (删除旧代码,直接集成BlockEditor)
src/
├── App.tsx ✅ 不动
├── components/
│ ├── ChatPanel/ ✅ 整个目录不动
│ │ ├── ChatPanel.tsx
│ │ ├── MessageList.tsx
│ │ ├── MessageItem.tsx
│ │ └── MessageInput.tsx
│ ├── Layout/
│ │ └── ResizableLayout.tsx ✅ 不动
│ └── ExportRecordList/ ✅ 不动
└── stores/
├── uiStore.ts ✅ 不动
└── chatStore.ts ✅ 不动
src/
├── components/
│ └── Editor/ ⭐ 新增整个目录
│ ├── BlockEditor.tsx
│ ├── BlockCanvas.tsx
│ ├── BlockRenderer.tsx
│ ├── blocks/
│ └── toolbar/
├── stores/
│ └── editorStore.ts ⭐ 新增
├── services/
│ └── blockService.ts ⭐ 新增
├── types/
│ └── editor.ts ⭐ 新增
└── utils/
├── blockOperations.ts ⭐ 新增
├── richTextConverter.ts ⭐ 新增
└── styleResolver.ts ⭐ 新增
src/components/EditorPanel/
├── EditorPanel.tsx 🔧 完全重写(删除旧代码)
└── EditorPanel.css 🔧 新增
src/components/EditorPanel/
├── WYSIWYGEditor.tsx ❌ 删除
├── WYSIWYGEditor.css ❌ 删除
└── 其他MDXEditor相关文件 ❌ 删除
# MDXEditor依赖
package.json:
- @mdxeditor/editor ❌ 删除依赖
// src/components/EditorPanel/EditorPanel.tsx
import React from 'react';
import { BlockEditor } from '../Editor/BlockEditor';
import './EditorPanel.css';
interface EditorPanelProps {
documentId: string;
initialDocumentName?: string;
onClose?: () => void;
}
/**
* EditorPanel - 文档编辑面板
* 极简外壳,直接集成BlockEditor
*/
export const EditorPanel: React.FC<EditorPanelProps> = ({
documentId,
initialDocumentName,
onClose
}) => {
return (
<div className="editor-panel">
<BlockEditor
documentId={documentId}
onClose={onClose}
/>
</div>
);
};
export default EditorPanel;
// ✅ App.tsx传递的Props保持不变
<EditorPanel
documentId={previewDocumentId}
initialDocumentName={previewDocumentName}
onClose={handleCloseEditor}
/>
// EditorPanel接收后传递给BlockEditor
// initialDocumentName在BlockEditor内部使用
# 1. 安装依赖(新增的packages)
npm install
# 2. 运行开发服务器
npm run dev
# 3. 测试流程
# - 发送聊天消息
# - 点击"预览"按钮
# - 验证BlockEditor显示
# - 编辑文档并保存
# - 关闭编辑器
# - 验证聊天面板功能未受影响
git checkout -b feature/new-block-editor
# 在新目录开发,不影响主分支
src/components/Editor/
# 1. 备份旧文件
git mv src/components/EditorPanel src/components/EditorPanel.backup
# 2. 创建新EditorPanel
mkdir src/components/EditorPanel
# 创建新的EditorPanel.tsx(极简外壳)
# 3. 删除MDXEditor依赖
npm uninstall @mdxeditor/editor
npm run dev
# 测试:
# - 聊天功能
# - 打开编辑器
# - 编辑和保存
# - 关闭编辑器
# - 布局拖拽
git checkout main
git merge feature/new-block-editor
# 部署到测试环境
npm run build
# 部署...
# 团队测试1-2周
# 确认稳定后删除备份
rm -rf src/components/EditorPanel.backup
# 提交清理
git add .
git commit -m "chore: remove old editor backup"
Q: 聊天功能会受影响吗?
A: 不会,ChatPanel完全独立,EditorPanel只是右侧面板的一部分。
Q: 需要修改多少文件?
A: 需要重写1个文件(EditorPanel.tsx),新增约20个文件在新目录。
Q: 如何快速回滚?
A: 从Git历史恢复或使用备份目录(.backup)恢复。
Q: 开发期间如何不影响其他人?
A: 在feature分支开发,主分支功能不受影响。合并前充分测试。
Q: 旧的WYSIWYGEditor代码还保留吗?
A: 建议备份1-2周后删除,确保新编辑器稳定运行。
版本: v1.0
更新: 2026-07-03