# 删除重复项目工具 ## 使用方法 ### 1. 预览模式(不执行删除,只查看) 在 Parse Dashboard 的 Cloud Code 或通过 API 调用: ```javascript // 查找所有重复项目(预览) Parse.Cloud.run('removeDuplicateProjects', { dryRun: true }) // 查找特定标题的重复项目(预览) Parse.Cloud.run('removeDuplicateProjects', { title: '华迈效果——21/22初稿', dryRun: true }) ``` ### 2. 执行删除 **⚠️ 警告:此操作会真正删除数据,请先用预览模式确认!** ```javascript // 删除特定标题的重复项目 Parse.Cloud.run('removeDuplicateProjects', { title: '华迈效果——21/22初稿', dryRun: false }) // 删除所有重复项目 Parse.Cloud.run('removeDuplicateProjects', { dryRun: false }) ``` ### 3. 删除指定的单个项目 ```javascript Parse.Cloud.run('deleteProjectById', { projectId: 'xxxxxxxxxxxx', reason: '重复项目' }) ``` ### 4. 查找特定标题的所有项目 ```javascript Parse.Cloud.run('findProjectsByTitle', { title: '华迈效果——21/22初稿' }) ``` ## 返回结果示例 ```json { "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`),不是物理删除 - 删除前请备份数据库!