8.2 KiB
8.2 KiB
任务目标
一句话:记录当前仓库、线上环境、最近实现和开发注意事项,方便后续继续协作与接手。
当前状态
- 已完成:
- 项目主线已经从旧教务模块切换为“网盘 + 快传 + 管理台”结构
- 快传模块已整合进主站,支持取件码、分享链接、P2P 传输、部分文件接收、ZIP 下载、存入网盘
- 网盘已支持上传、下载、重命名、删除、移动、复制、公开分享、接收快传后存入
- 注册改成邀请码机制,邀请码单次使用后自动刷新,并在管理台展示与复制
- 同账号仅允许一台设备同时登录,旧设备会在下一次访问受保护接口时失效
- 后端已补生产 CORS,默认放行
https://yoyuzh.xyz与https://www.yoyuzh.xyz - 线上文件存储与前端静态托管已迁到多吉云对象存储,后端通过临时密钥 API 获取短期 S3 会话访问底层 COS 兼容桶
- 管理台 dashboard 已显示总存储量、下载流量、今日请求次数、快传使用量、离线快传占用和请求折线图,并支持调整离线快传总上限
- 管理台用户列表已显示每个用户的已用空间 / 配额,表格也已收紧
- 游戏页已接入
/race/、/t_race/,带站内播放器、退出按钮和友情链接 - 2026-04-02 已统一密码策略为“至少 8 位且包含大写字母”,并补测试确认管理员改密后旧密码失效、新密码生效
- 2026-04-02 已放开未登录直达快传:登录页可直接进入快传,匿名用户可发在线快传和接收在线快传,但离线快传仍要求登录
- 2026-04-02 快传发送页已新增“我的离线快传”区域:登录用户可查看自己未过期的离线快传记录,并点开弹层重新查看取件码、二维码和分享链接
- 根目录 README 已重写为中文公开版 GitHub 风格
- VS Code 工作区已补
.vscode/settings.json、.vscode/extensions.json、lombok.config,并在backend/pom.xml显式声明了 Lombok annotation processor
- 进行中:
- 继续观察 VS Code Java/Lombok 误报是否完全消失
- 后续如果再做 README/开源化展示,可以继续补 banner、截图和架构图
- 待开始:
- 如果用户继续提需求,优先沿当前网站主线迭代,不再回到旧教务方向
已做决策
| 决策 | 理由 | 排除的方案及原因 |
|---|---|---|
| 用快传模块替换旧教务模块 | 当前产品方向已经转向文件流转和个人站点工具集合 | 继续保留教务逻辑: 已不符合当前站点定位,维护成本高 |
| 快传采用“后端信令 + 浏览器 P2P 传输” | 文件内容不走自有服务器带宽,体验更接近局域/点对点传输 | 走服务器中转: 会增加服务器流量和实现复杂度 |
快传接收页收口回原 /transfer 页面 |
用户不需要单独进入专门的接收页面,入口更统一 | 独立接收页: 路径分散、用户心智更差 |
| 网盘侧边栏改成单一树状目录结构 | 更像真实网盘,层级关系清晰 | 保留“快速访问 + 目录”双区块: 结构割裂 |
| 注册邀请码改成单次使用后自动刷新 | 更适合私域邀请式注册,管理台也能直接查看当前邀请码 | 固定邀请码: 容易扩散且不可控 |
| 单设备登录通过“用户当前会话 ID + JWT sid claim”实现 | 新登录能立即顶掉旧 access token,而不仅仅是旧 refresh token | 只撤销 refresh token: 旧 access token 仍会继续有效一段时间 |
前端发布继续使用 node scripts/deploy-front-oss.mjs |
仓库已有正式静态站发布脚本,现已切到多吉云临时密钥 + S3 兼容上传流程 | 手动上传对象存储: 容易出错,也不利于复用 |
| 后端发布继续采用“本地打包 + SSH/ SCP 上传 jar + systemd 重启” | 当前线上就按这个方式运行 | 自创部署脚本: 仓库里没有现成正式脚本,容易和现网偏离 |
主站 CORS 默认放行 https://yoyuzh.xyz 与 https://www.yoyuzh.xyz |
前端生产环境托管在独立静态站域名下,必须允许主站跨域调用后端 API | 仅保留 localhost: 会导致生产站调用 API 时被浏览器拦截 |
| 文件存储切到多吉云对象存储并使用临时密钥 | 后端、前端发布和迁移脚本都可统一走 S3 兼容协议,同时减少长期静态密钥暴露 | 继续使用阿里云 OSS 固定密钥: 已不符合当前多吉云接入方式 |
| 密码策略放宽到“至少 8 位且包含大写字母” | 降低注册和管理员改密阻力,同时保留最基础的复杂度门槛 | 继续要求大小写 + 数字 + 特殊字符: 对当前站点用户而言过重,且已导致后台改密体验不一致 |
| 匿名用户仅开放在线快传,不开放离线快传 | 允许登录页直接进入快传,同时避免匿名用户占用站点持久存储 | 匿名也开放离线快传: 会增加滥用风险和存储成本 |
| 已登录用户可以在快传页回看自己的离线快传记录 | 离线快传有效期长达 7 天,用户需要在不重新上传的情况下再次查看取件码和分享链接 | 只在刚创建成功时展示一次取件信息: 用户丢失取件码后无法自助找回 |
待解决问题
- VS Code 若仍报
final 字段未在构造器初始化之类错误,优先判断为 Lombok / Java Language Server 误报,而不是源码真实错误 front/README.md仍是旧模板风格说明,当前真实入口说明以根目录README.md为准,后续可继续整理- 前端构建仍有 chunk size warning,目前不阻塞发布,但后续可以考虑做更细的拆包
- 线上前端 bundle 当前仍内嵌
https://api.yoyuzh.xyz/api,API 子域名异常时会直接表现为“网络异常/登录失败”
关键约束
(只写这个任务特有的限制,区别于项目通用规则)
- 仓库根目录没有
package.json,不要在根目录执行npm命令 - 前端真实命令以
front/package.json为准;npm run lint实际是tsc --noEmit - 后端真实命令以
backend/pom.xml/backend/README.md为准;常用的是mvn test和mvn package - 修改文件时默认用
apply_patch - 已知线上后端服务名是
my-site-api.service - 已知线上后端运行包路径是
/opt/yoyuzh/yoyuzh-portal-backend.jar - 已知新服务器公网 IP 是
1.14.49.201 - 已知线上后端额外配置文件是
/opt/yoyuzh/application-prod.yml,环境变量文件是/opt/yoyuzh/app.env - 2026-04-01 已将线上文件桶与前端桶切到多吉云对象存储,后端配置走多吉云临时密钥 API
- 2026-04-02 部署验证:
http://yoyuzh.xyz/返回 200,https://yoyuzh.xyz/返回 200,https://api.yoyuzh.xyz/swagger-ui.html最终返回 200,前端资源https://yoyuzh.xyz/assets/AdminApp-C9j3tmPO.js返回 200 - 2026-04-02 后端服务重启后为 active,启动时间为
2026-04-02 12:14:25 CST - 服务器登录信息保存在本地
账号密码.txt,不要把内容写进文档或对外输出
参考资料
(相关链接、文档片段、背景资料)
- 根目录说明:
README.md - 后端说明:
backend/README.md - 仓库协作规范:
AGENTS.md - 前端/后端工作区配置:
.vscode/settings.json、.vscode/extensions.json - Lombok 配置:
lombok.config - 最近关键实现位置:
- 单设备登录:
backend/src/main/java/com/yoyuzh/auth/AuthService.java - JWT 会话校验:
backend/src/main/java/com/yoyuzh/auth/JwtTokenProvider.java - JWT 过滤器:
backend/src/main/java/com/yoyuzh/config/JwtAuthenticationFilter.java - CORS 配置:
backend/src/main/java/com/yoyuzh/config/CorsProperties.java、backend/src/main/resources/application.yml - 密码策略:
backend/src/main/java/com/yoyuzh/auth/PasswordPolicy.java - 网盘树状目录:
front/src/pages/Files.tsx、front/src/pages/files-tree.ts - 快传接收页:
front/src/pages/TransferReceive.tsx - 未登录快传权限:
backend/src/main/java/com/yoyuzh/transfer/TransferController.java、backend/src/main/java/com/yoyuzh/transfer/TransferService.java - 离线快传历史与详情弹层:
front/src/pages/Transfer.tsx、front/src/pages/transfer-state.ts - 管理员改密接口:
backend/src/main/java/com/yoyuzh/admin/AdminService.java - 前端生产 API 基址:
front/.env.production
- 单设备登录: