Enable dual-device login and mobile APK update checks

This commit is contained in:
yoyuzh
2026-04-03 16:28:09 +08:00
parent 56f2a9fe0d
commit 52b5bbfe8e
50 changed files with 1659 additions and 164 deletions

View File

@@ -0,0 +1,59 @@
# 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: 在交付前确认验证命令和已知限制写入文档**