Files
my_site/docs/superpowers/plans/2026-04-03-recycle-bin.md

3.3 KiB
Raw Permalink Blame History

Recycle Bin Implementation Plan

For agentic workers: REQUIRED: Use superpowers:subagent-driven-development (if subagents available) or superpowers:executing-plans to implement this plan. Steps use checkbox (- [ ]) syntax for tracking.

Goal: 为网盘增加回收站,删除后的文件或目录自动进入回收站,保留 10 天,可在保留期内恢复,并在网盘左侧目录侧栏底部提供入口。

Architecture: 后端把删除操作从“物理删除”改成“回收站软删除”,为 StoredFile 增加删除时间、原始路径/名称、回收站分组信息,并提供“列出回收站”“恢复”“清空过期项”能力。前端在 Files 页目录树侧栏底部增加回收站入口,并新增回收站页面/状态,复用现有文件卡片风格展示删除时间、原始位置和恢复操作。

Tech Stack: Spring Boot 3.3, JPA/Hibernate update schema, React 19, TypeScript, Vite


Task 1: 后端回收站模型与服务

Files:

  • Modify: backend/src/main/java/com/yoyuzh/files/StoredFile.java

  • Modify: backend/src/main/java/com/yoyuzh/files/StoredFileRepository.java

  • Modify: backend/src/main/java/com/yoyuzh/files/FileService.java

  • Modify: backend/src/main/java/com/yoyuzh/files/FileController.java

  • Create: backend/src/main/java/com/yoyuzh/files/RecycleBinItemResponse.java

  • Create: backend/src/main/java/com/yoyuzh/files/RestoreRecycleBinItemRequest.java

  • Step 1: 写后端失败测试覆盖删除进入回收站、回收站列表、恢复、10 天过期清理

  • Step 2: 运行 cd backend && mvn test 确认新增测试先失败

  • Step 3: 给 StoredFile 增加回收站字段,并让普通文件列表/最近文件默认排除已删除项

  • Step 4: 把删除改成软删除,目录删除时按组放入回收站,恢复时按组恢复

  • Step 5: 增加回收站列表、恢复接口和定时清理过期项

  • Step 6: 运行 cd backend && mvn test 确认后端通过

Task 2: 前端回收站入口与页面

Files:

  • Modify: front/src/components/layout/Layout.tsx

  • Modify: front/src/components/layout/Layout.test.ts

  • Modify: front/src/App.tsx

  • Modify: front/src/pages/Files.tsx

  • Create: front/src/pages/RecycleBin.tsx

  • Create: front/src/pages/recycle-bin-state.ts

  • Create: front/src/pages/recycle-bin-state.test.ts

  • Modify: front/src/lib/types.ts

  • Modify: front/src/MobileApp.tsx

  • Modify: front/src/mobile-pages/MobileFiles.tsx

  • Step 1: 写前端失败测试,锁住侧栏底部入口和回收站状态变换

  • Step 2: 运行 cd front && npm run test 确认前端新增测试先失败

  • Step 3: 新增回收站页面和状态,接后端列表/恢复接口

  • Step 4: 在桌面网盘左侧侧栏最下方加回收站入口,并把删除确认文案改为“移入回收站”

  • Step 5: 给移动端补可访问的回收站入口和路由

  • Step 6: 运行 cd front && npm run testcd front && npm run lintcd front && npm run build

Task 3: 文档与项目记忆

Files:

  • Modify: memory.md

  • Modify: docs/architecture.md

  • Modify: docs/api-reference.md

  • Step 1: 记录回收站行为、保留周期、入口位置和恢复约束

  • Step 2: 在交付前确认验证命令和已知限制写入文档