徐福静0235668 ba6809c2e7 feat: implement aftercare improvements and customer service enhancements 5 өдөр өмнө
..
README-remove-duplicates.md ba6809c2e7 feat: implement aftercare improvements and customer service enhancements 5 өдөр өмнө
migrate-project-phase-deadlines.js 1ce019b51c feat: add phase deadlines and enhance project timeline visualization 1 долоо хоног өмнө
remove-duplicate-projects.js ba6809c2e7 feat: implement aftercare improvements and customer service enhancements 5 өдөр өмнө

README-remove-duplicates.md

删除重复项目工具

使用方法

1. 预览模式(不执行删除,只查看)

在 Parse Dashboard 的 Cloud Code 或通过 API 调用:

// 查找所有重复项目(预览)
Parse.Cloud.run('removeDuplicateProjects', { dryRun: true })

// 查找特定标题的重复项目(预览)
Parse.Cloud.run('removeDuplicateProjects', { 
  title: '华迈效果——21/22初稿', 
  dryRun: true 
})

2. 执行删除

⚠️ 警告:此操作会真正删除数据,请先用预览模式确认!

// 删除特定标题的重复项目
Parse.Cloud.run('removeDuplicateProjects', { 
  title: '华迈效果——21/22初稿', 
  dryRun: false 
})

// 删除所有重复项目
Parse.Cloud.run('removeDuplicateProjects', { dryRun: false })

3. 删除指定的单个项目

Parse.Cloud.run('deleteProjectById', { 
  projectId: 'xxxxxxxxxxxx',
  reason: '重复项目'
})

4. 查找特定标题的所有项目

Parse.Cloud.run('findProjectsByTitle', { 
  title: '华迈效果——21/22初稿'
})

返回结果示例

{
  "success": true,
  "dryRun": true,
  "summary": {
    "totalProjects": 150,
    "duplicatesFound": 1,
    "titlesWithDuplicates": 1
  },
  "details": [
    {
      "title": "华迈效果——21/22初稿",
      "total": 2,
      "kept": 1,
      "deleted": 1,
      "keptProjectId": "abc123"
    }
  ],
  "duplicates": [
    {
      "id": "xyz789",
      "title": "华迈效果——21/22初稿",
      "createdAt": "2024-01-10T10:00:00.000Z",
      "stage": "订单分配",
      "status": "进行中"
    }
  ]
}

删除逻辑

  1. 按标题分组:找出所有标题相同的项目
  2. 保留最新:按创建时间排序,保留最新创建的项目
  3. 软删除:不是物理删除,而是标记 isDeleted: true
  4. 可恢复:如果误删,可以在数据库中手动将 isDeleted 改回 false

注意事项

⚠️ 重要

  • 默认使用 dryRun: true 预览模式
  • 保留的是最新创建的项目
  • 使用软删除isDeleted: true),不是物理删除
  • 删除前请备份数据库!