# 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（批量快速迁移）？**

回复 "确认" 我将立即开始执行！
