Migrate storage to DogeCloud and expand admin dashboard

This commit is contained in:
yoyuzh
2026-04-02 12:20:50 +08:00
parent 2424fbd2a7
commit 97edc4cc32
65 changed files with 2842 additions and 380 deletions

View File

@@ -8,7 +8,7 @@
1. React 前端站点
2. Spring Boot 后端 API
3. 文件存储层(本地文件系统或 OSS
3. 文件存储层(本地文件系统或 S3 兼容对象存储
业务主线已经从旧教务方向切换为:
@@ -61,7 +61,7 @@
- 网盘元数据与文件流转
- 快传信令与会话状态
- 管理台 API
- OSS / 本地存储抽象
- S3 兼容对象存储 / 本地存储抽象
后端包结构:
@@ -79,7 +79,7 @@
### 2.3 文档与脚本
- `docs/`: 实现计划与补充文档
- `scripts/`: 前端 OSS 发布、存储迁移和本地辅助脚本
- `scripts/`: 前端静态站发布、对象存储迁移和本地辅助脚本
## 3. 模块划分
@@ -97,6 +97,7 @@
- 注册、登录、刷新登录态
- 用户资料查询和修改
- 用户自行修改密码
- 头像上传
- 单设备登录控制
- 邀请码消费与轮换
@@ -107,6 +108,7 @@
- refresh token 持久化到数据库
- 当前会话通过 `activeSessionId + JWT sid claim` 绑定
- 新登录会挤掉旧设备
- 当前密码策略统一为“至少 8 位且包含大写字母”
### 3.2 网盘模块
@@ -129,8 +131,8 @@
- 文件元数据在数据库
- 文件内容走存储层抽象
- 支持本地磁盘和 OSS
- 当前线上网盘文件存储已切到阿里云 OSS 成都地域桶 `yoyuzh-files2`
- 支持本地磁盘和 S3 兼容对象存储
- 当前线上网盘文件存储已切到多吉云对象存储,后端先通过多吉云临时密钥 API 换取短期 S3 会话,再访问底层 COS 兼容桶
- 前端会缓存目录列表和最后访问路径
### 3.3 快传模块
@@ -160,7 +162,7 @@
- 接收端支持部分文件选择
- 多文件或文件夹可走 ZIP 下载
- 在线快传是一次性浏览器 P2P 传输,首个接收者进入后即占用该会话
- 离线快传会把文件内容落到站点存储,线上环境使用 OSS,默认保留 7 天并支持重复接收
- 离线快传会把文件内容落到站点存储,线上环境使用多吉云对象存储,默认保留 7 天并支持重复接收
### 3.4 管理台模块
@@ -175,11 +177,15 @@
- 管理用户
- 管理文件
- 查看邀请码
- 展示总存储量、下载流量、今日请求次数、快传使用量、离线快传占用和请求折线图
- 调整离线快传总上限
关键实现说明:
- 管理台依赖后端 summary/users/files 接口
- 当前邀请码由后端返回给管理台展示
- 用户列表会展示每个用户的已用空间 / 配额
- 管理员修改用户密码后,旧密码应立即失效,新密码可直接重新登录
## 4. 关键业务流程
@@ -210,7 +216,7 @@
1. 前端在 `Files` 页面选择文件或文件夹
2. 前端优先调用 `/api/files/upload/initiate`
3. 如果存储支持直传,则浏览器直接上传到 OSS
3. 如果存储支持直传,则浏览器直接上传到对象存储
4. 前端再调用 `/api/files/upload/complete`
5. 如果直传失败,会回退到代理上传接口 `/api/files/upload`
@@ -240,6 +246,14 @@
6. 接收端可直接下载离线文件,也可登录后存入网盘
7. 文件在有效期内不会因一次接收而被删除,过期后由后端清理任务自动销毁
### 4.7 管理员改密流程
1. 管理台调用 `PUT /api/admin/users/{userId}/password`
2. 后端按统一密码规则校验新密码
3. 后端重算密码哈希并写回用户表
4. 后端刷新 `activeSessionId` 并撤销该用户全部 refresh token
5. 旧密码后续登录应失败,新密码登录成功
## 5. 前端路由架构
路由入口:
@@ -290,7 +304,7 @@
实现方向:
- 本地文件系统
- OSS
- S3 兼容对象存储
设计目的:
@@ -299,17 +313,17 @@
当前线上状态:
- 生产环境文件桶已从东京地域迁到成都地域 `yoyuzh-files2`
- 生产后端当前使用 `https://oss-cn-chengdu.aliyuncs.com` 作为 OSS endpoint
- 普通文件下载仍采用“后端鉴权后返回签名 URL浏览器直连 OSS 下载”的主链路
- 2026-03-24 已对抽样对象 `users/6/第四组 脑机接口与脑启发计算.pptx` 在新桶执行 HEAD 校验并返回 200
- 生产环境文件桶已切到多吉云对象存储
- 后端通过多吉云临时密钥 API 获取短期 `accessKeyId / secretAccessKey / sessionToken`
- 实际对象访问走 S3 兼容协议,底层 endpoint 为 COS 兼容地址
- 普通文件下载仍采用“后端鉴权后返回签名 URL浏览器直连对象存储下载”的主链路
## 8. 部署架构
### 8.1 前端
- 构建工具Vite
- 发布方式:OSS 静态资源发布
- 发布方式:对象存储静态站发布
- 发布脚本:`node scripts/deploy-front-oss.mjs`
### 8.2 后端
@@ -324,7 +338,7 @@
- 运行包路径:`/opt/yoyuzh/yoyuzh-portal-backend.jar`
- 额外配置文件:`/opt/yoyuzh/application-prod.yml`
- 环境变量文件:`/opt/yoyuzh/app.env`
- 2026-03-24 已把生产后端 OSS 配置切换到成都新桶 `yoyuzh-files2`
- 2026-04-02 已重新部署,服务状态为 `active (running)`
## 9. 开发注意事项