# 项目阶段数据修复 - 快速指南 ## 🎯 目标 将那些**没有完成阶段工作却被推进的项目**回退到正确的阶段。 --- ## 📝 使用步骤(推荐) ### 第1步:备份数据 ⚠️ 1. 打开项目管理页面 2. 打开浏览器控制台(按 `F12`) 3. 复制粘贴整个 `repair-project-stages-browser.js` 文件内容 4. 按回车键执行 5. 输入命令导出备份: ```javascript exportProjectsBackup() ``` 6. 备份文件会自动下载(`projects-backup-YYYY-MM-DD.json`) --- ### 第2步:预览需要修复的项目 在控制台输入: ```javascript repairProjectStages() ``` **输出示例**: ``` 🔍 预览模式:查看需要修复的项目 ================================================================================ 📊 共找到 150 个项目 ──────────────────────────────────────────────────────────── 📋 项目: 张三的家装项目 ID: abc123 当前阶段: 确认需求 应该阶段: 订单分配 回退原因: 缺少项目名称, 缺少报价数据 🔍 [预览] 需要回退到"订单分配"阶段 ──────────────────────────────────────────────────────────── 📋 项目: 李四的办公室设计 ID: def456 当前阶段: 交付执行 应该阶段: 确认需求 回退原因: 缺少需求分析数据 🔍 [预览] 需要回退到"确认需求"阶段 ================================================================================ 🔍 预览完成!发现 2 个项目需要修复 💡 提示:输入 repairProjectStages(false) 执行实际修复 ================================================================================ ``` --- ### 第3步:执行修复 确认预览结果无误后,输入: ```javascript repairProjectStages(false) ``` **输出示例**: ``` 🔧 执行模式:开始修复项目阶段数据 ================================================================================ 📊 共找到 150 个项目 ──────────────────────────────────────────────────────────── 📋 项目: 张三的家装项目 ID: abc123 当前阶段: 确认需求 应该阶段: 订单分配 回退原因: 缺少项目名称, 缺少报价数据 🧹 已清除错误的审批状态 ✅ 已回退到"订单分配"阶段 ================================================================================ ✅ 修复完成!共回退 2 个项目到正确阶段 ================================================================================ ``` --- ## 🔍 各阶段回退条件 ### 订单分配阶段 项目会被回退到"订单分配",如果缺少: - ❌ 项目名称(`project.title`) - ❌ 项目类型(`project.projectType`) - ❌ 小图日期(`project.demoday`) - ❌ 报价数据(`data.quotation.total > 0`) - ❌ 设计师分配或审批状态 ### 确认需求阶段 项目会被回退到"确认需求",如果缺少: - ❌ 需求分析数据(`data.requirementsAnalysis`) - ❌ 空间需求数据(`data.spaceRequirements`) ### 交付执行阶段 项目会被回退到"交付执行",如果: - ❌ 建模、软装、渲染、后期任一阶段未审批通过 --- ## 📊 修复结果查看 修复完成后,控制台会显示表格: | id | title | oldStage | newStage | reason | |----|-------|----------|----------|--------| | abc123 | 张三的家装项目 | 确认需求 | 订单分配 | 缺少项目名称, 缺少报价数据 | | def456 | 李四的办公室设计 | 交付执行 | 确认需求 | 缺少需求分析数据 | --- ## ⚠️ 注意事项 ### 1. 修复前必须备份 ```javascript // ✅ 正确流程 exportProjectsBackup() // 1. 先备份 repairProjectStages() // 2. 预览 repairProjectStages(false) // 3. 执行修复 ``` ### 2. 只在项目管理页面运行 - ✅ 在 `/admin/project-management` 页面运行 - ✅ 在 `/designer/projects` 页面运行 - ❌ 不要在其他页面运行 ### 3. 一次性操作 - 修复脚本会一次性处理所有项目 - 建议在业务低峰期执行 - 修复后刷新页面查看结果 --- ## 🔧 手动修复单个项目 如果只需要修复特定项目: ```javascript // 查询特定项目 const query = new Parse.Query('Project'); const project = await query.get('项目ID'); // 回退到指定阶段 project.set('currentStage', '订单分配'); await project.save(); console.log('✅ 项目已回退'); ``` --- ## 📁 相关文件 1. **`DATA_REPAIR_STAGE_ROLLBACK.md`** - 详细的修复方案文档 2. **`scripts/repair-project-stages.ts`** - TypeScript版本修复脚本 3. **`scripts/repair-project-stages-browser.js`** - 浏览器版本修复脚本(推荐) 4. **`REPAIR_STAGES_QUICK_GUIDE.md`** - 本快速指南 --- ## ✅ 验证修复结果 修复完成后: 1. **刷新项目管理页面** 2. **检查项目列表**:项目应该显示在正确的阶段 3. **进入项目详情**:顶部导航栏应该正确显示阶段状态 4. **尝试切换阶段**:未完成的阶段应该显示为禁用状态 --- ## 🆘 遇到问题? ### 问题1:提示"无法找到Parse对象" **解决**:确保在正确的页面(项目管理页面)运行脚本 ### 问题2:修复后项目还是在错误的阶段 **解决**: 1. 刷新页面(Ctrl+F5 强制刷新) 2. 清除浏览器缓存 3. 重新运行预览命令检查 ### 问题3:备份文件下载失败 **解决**: 1. 检查浏览器下载设置 2. 手动复制控制台的JSON数据 3. 保存到文本文件 --- ## 📞 技术支持 如有问题,请联系技术团队并提供: 1. 浏览器控制台的完整日志 2. 备份的JSON文件 3. 问题截图 --- ## 🎉 完成 修复完成后,所有项目都会回到正确的阶段,用户将无法通过导航栏跳过必填验证!