3.3 KiB
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 test、cd front && npm run lint、cd front && npm run build
Task 3: 文档与项目记忆
Files:
-
Modify:
memory.md -
Modify:
docs/architecture.md -
Modify:
docs/api-reference.md -
Step 1: 记录回收站行为、保留周期、入口位置和恢复约束
-
Step 2: 在交付前确认验证命令和已知限制写入文档