REPAIR_STAGES_QUICK_GUIDE.md 6.0 KB

项目阶段数据修复 - 快速指南

🎯 目标

将那些没有完成阶段工作却被推进的项目回退到正确的阶段。


📝 使用步骤(推荐)

第1步:备份数据 ⚠️

  1. 打开项目管理页面
  2. 打开浏览器控制台(按 F12
  3. 复制粘贴整个 repair-project-stages-browser.js 文件内容
  4. 按回车键执行
  5. 输入命令导出备份:

    exportProjectsBackup()
    
  6. 备份文件会自动下载(projects-backup-YYYY-MM-DD.json


第2步:预览需要修复的项目

在控制台输入:

repairProjectStages()

输出示例

🔍 预览模式:查看需要修复的项目
================================================================================

📊 共找到 150 个项目

────────────────────────────────────────────────────────────
📋 项目: 张三的家装项目
   ID: abc123
   当前阶段: 确认需求
   应该阶段: 订单分配
   回退原因: 缺少项目名称, 缺少报价数据
   🔍 [预览] 需要回退到"订单分配"阶段
────────────────────────────────────────────────────────────
📋 项目: 李四的办公室设计
   ID: def456
   当前阶段: 交付执行
   应该阶段: 确认需求
   回退原因: 缺少需求分析数据
   🔍 [预览] 需要回退到"确认需求"阶段

================================================================================
🔍 预览完成!发现 2 个项目需要修复

💡 提示:输入 repairProjectStages(false) 执行实际修复
================================================================================

第3步:执行修复

确认预览结果无误后,输入:

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. 修复前必须备份

// ✅ 正确流程
exportProjectsBackup()           // 1. 先备份
repairProjectStages()            // 2. 预览
repairProjectStages(false)       // 3. 执行修复

2. 只在项目管理页面运行

  • ✅ 在 /admin/project-management 页面运行
  • ✅ 在 /designer/projects 页面运行
  • ❌ 不要在其他页面运行

3. 一次性操作

  • 修复脚本会一次性处理所有项目
  • 建议在业务低峰期执行
  • 修复后刷新页面查看结果

🔧 手动修复单个项目

如果只需要修复特定项目:

// 查询特定项目
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. 问题截图

🎉 完成

修复完成后,所有项目都会回到正确的阶段,用户将无法通过导航栏跳过必填验证!