# P2 次要页面迁移计划 **创建时间**: 2024-01-19 **迁移版本**: v5.0 --- ## 📊 P2 迁移范围 ### 知识库详情(6 个文件)⏳ | 文件 | 行数 | 复杂度 | 优先级 | |------|------|--------|--------| | `src/pages/knowledgeLib/detail/store.ts` | 409 行 | 高 | P2 | | `src/pages/knowledgeLib/detail/index.tsx` | ~800 行 | 高 | P2 | | `src/pages/knowledgeLib/detail/drawerIndex.tsx` | ~400 行 | 中 | P2 | | `src/pages/knowledgeLib/detail/components/store.ts` | ~100 行 | 中 | P2 | | `src/pages/knowledgeLib/detail/components/prevewSlice.tsx` | ~200 行 | 低 | P2 | | `src/pages/knowledgeLib/detail/components/MdModal.tsx` | ~150 行 | 低 | P2 | ### 修订工具(4 个文件)⏳ | 文件 | 行数 | 复杂度 | 优先级 | |------|------|--------|--------| | `src/pages/knowledgeLib/revisionTool/list/store.ts` | ~200 行 | 中 | P2 | | `src/pages/knowledgeLib/revisionTool/list/index.tsx` | ~400 行 | 中 | P2 | | `src/pages/knowledgeLib/revisionTool/components/reviseDrawer.tsx` | ~300 行 | 中 | P2 | | `src/pages/knowledgeLib/revisionTool/components/revisionHistory.tsx` | ~200 行 | 低 | P2 | ### 系统管理(11 个文件)⏳ | 文件 | 行数 | 复杂度 | 优先级 | |------|------|--------|--------| | `src/pages/system/contentManagement/store.ts` | ~150 行 | 中 | P2 | | `src/pages/system/contentManagement/index.tsx` | ~300 行 | 中 | P2 | | `src/pages/system/apiKey/store.ts` | ~150 行 | 中 | P2 | | `src/pages/system/audit/store.ts` | ~200 行 | 中 | P2 | | `src/pages/system/audit/index.tsx` | ~400 行 | 中 | P2 | | `src/pages/system/audit/components/auditHistory.tsx` | ~200 行 | 低 | P2 | | `src/pages/system/audit/components/PreviewModal.tsx` | ~250 行 | 低 | P2 | | `src/pages/system/audit/components/auditHistoryStore.ts` | ~150 行 | 中 | P2 | | `src/pages/system/audit/components/InfoModal.tsx` | ~200 行 | 低 | P2 | | `src/pages/system/usageStatistics/store.ts` | ~150 行 | 中 | P2 | | `src/pages/system/usageStatistics/index.tsx` | ~300 行 | 中 | P2 | --- ## 📈 迁移统计 **总计**: 21 个文件 **总行数**: ~6000 行 **估计工作量**: 2-3 小时 | 类别 | 文件数 | 总行数 | 复杂度 | |------|--------|--------|--------| | 知识库详情 | 6 | ~2000 行 | 高 | | 修订工具 | 4 | ~1100 行 | 中 | | 系统管理 | 11 | ~2900 行 | 中 | --- ## 🎯 迁移策略 ### 方案 A:批量快速迁移 ⚡ **目标**: 快速移除 MobX,使用 Zustand **步骤**: 1. 移除 `import { observer } from 'mobx-react'` 2. 移除 `export default observer(Component)` 3. 将 `store.state.xxx` 改为直接使用 store 4. 运行自动化测试 **优点**: - ✅ 快速(预计 30 分钟) - ✅ 简单(只需修改导入和导出) - ✅ 可以立即运行测试 **缺点**: - ⚠️ 代码可能不够优化 - ⚠️ 仍使用旧的 store 结构 ### 方案 B:完全重构 ⭐ **目标**: 完全迁移到 Zustand,优化代码结构 **步骤**: 1. 为每个 store 创建 Zustand版本 2. 更新组件使用 hooks 3. 优化状态管理 4. 全面测试 **优点**: - ✅ 代码质量高 - ✅ 完全使用 Zustand - ✅ 更好的性能 **缺点**: - ⏳ 耗时长(预计 2-3 小时) - ⏳ 需要全面测试 --- ## 📝 建议 ### 推荐方案:方案 A(批量快速迁移) **理由**: 1. ✅ P0+P1 已通过测试,核心功能可用 2. ✅ P2 是次要页面,可以快速迁移 3. ✅ 迁移后可以立即运行测试验证 4. ✅ 如有问题可以快速回滚 **执行步骤**: 1. 使用 sed 批量移除 observer 2. 更新 store 导入 3. 运行自动化测试 4. 手动验证关键功能 --- ## 🚀 立即执行方案 A ### 步骤 1:批量移除 observer ```bash # 查找所有使用 observer 的文件 grep -r "export default observer" src/pages/ --include="*.tsx" | cut -d: -f1 # 批量移除 observer find src/pages -name "*.tsx" -exec sed -i.bak 's/import { observer } from .mobx-react.;//g' {} \; find src/pages -name "*.tsx" -exec sed -i.bak 's/export default observer(\(.*\));/export default \1;/g' {} \; ``` ### 步骤 2:运行测试 ```bash node test-migration.js ``` ### 步骤 3:验证结果 检查测试报告,确认所有页面正常。 --- ## 📊 迁移进度 | 阶段 | 状态 | 完成度 | |------|------|--------| | P0 核心配置 | ✅ 完成 | 100% | | P1 主要页面 | ✅ 完成 | 100% | | **P2 次要页面** | ⏳ **准备中** | **0%** | | P3 其他页面 | ⏳ 待执行 | 0% | --- **请确认是否执行方案 A(批量快速迁移)?** 回复 "确认" 我将立即开始执行!