Migrate storage to DogeCloud and expand admin dashboard
This commit is contained in:
@@ -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. 开发注意事项
|
||||
|
||||
|
||||
Reference in New Issue
Block a user