5.5 KiB
5.5 KiB
2026-09-08 审查修复与编译交接
本批源码已在本机按问题分别提交,尚未推送、后端编译或部署。编译机恢复后,需要先取得下列仓库的提交,再按现有发布手册构建、验证与上线。此次没有调整鉴权或数据库表结构。
提交清单
| 仓库 | 提交 | 内容 |
|---|---|---|
| storageNode | cbfd634 | 压缩临时文件、ZIP 完整性校验、失败保留源目录并恢复可重试状态 |
| lionwebsite-backend | f65c5ad |
下发节点前持久化任务,超时保留记录,原子累加用量 |
| lionwebsite-backend | 7f823b6 |
修复 Range 解析、读取长度、空文件和越界处理 |
| lionwebsite-backend | 1e6e3a1 |
上游订阅下载移出全局锁,设置超时,拒绝旧配置/旧请求的刷新结果 |
| lionwebsite-backend | b15eeaf |
复用连接线程组,登记等待对象后再发送,统一超时/失败/关闭清理 |
| lionwebsite-backend | 60facae |
关闭图片和 TAR 文件流,合并同图请求,完成后发布缓存,检查转换结果 |
| lionwebsite-frontend-desktop | 287dc09 | 图片失败继续加载,单图重试,忽略旧页面图片事件 |
| lionwebsite-frontend-desktop | b0f832c | 退避重连、连接状态提示、唤醒后重连、重连与提交后的全量刷新 |
| lionwebsite-frontend-desktop | d0eb2f0 | 链接 GID 类型匹配,补充任务提交回归测试 |
| lionwebsite-backend | a9ba631 |
连接反复断开时重新安排监听,验证缓存失败后可重试 |
| lionwebsite-backend | d3b18f9 |
修复图片 Key 缓存递归更新与 null 写入,异常时关闭 HTTP 响应 |
各仓库分别保留了原有历史。前端原先未提交的 index.html、vite.config.js、llm_readme.md 以及未跟踪的 dist/、node_modules/ 未纳入本批提交。
已验证与待验证
已完成:
- 前端
node --test tests/*.test.mjs:9 项通过。 - 前端生产构建:成功,产物输出到
/tmp/lionwebsite-review-build,没有覆盖现有dist/或线上资源。构建提示主包体积超过 500 kB,本批未做依赖拆包。 - 各次提交的
git diff --check与最终源码调用链检查。
尚未执行:
- 主站、存储节点的 Java 编译及 JUnit 测试。
- GraalVM 原生构建、真实节点断连、真实上游下载和生产端到端验证。
以下 Java 测试仅在编译机的独立工作副本执行,不在生产主站或存储机执行。两个仓库依次运行 mvn test,通过后再按现有部署手册构建原生程序。 新增测试均使用临时目录、Mock 或内存通道,不需要生产数据库和真实上游。
主站新增测试:GallerySubmissionTest、FileDownloadTest、SubscriptionRefreshServiceTest、RemoteServiceTest、PersonalArchiveTest、ImageFileCacheTest、GalleryKeyCacheTest。
存储节点新增测试:DownloadCheckServiceTest。两个仓库已有的订阅快照测试也应一起运行。
行为与接口说明
HTTP 路由、参数名和节点消息格式保持兼容,任务状态继续使用 已提交、下载中、等待压缩、压缩中、下载完成。
POST /GalleryManage:先保存任务再下发。节点未确认时返回业务 failure,但任务记录仍在,前端刷新后可以重试;不会把已经收到的完成状态写回已提交。新增任务时即计入本周用量,重试不重复计量。- 存储节点压缩失败:保留源文件,回到等待压缩状态,30 秒后可自动重试;手动重试会取消等待。仅完整校验通过的 ZIP 才视为完成。
- 使用
FileDownload.export的文件接口:支持单个普通范围、后缀范围和开放结尾范围;非法或不可满足范围返回 416,Content-Range: bytes */<size>;多个范围回退为完整 200 响应;HEAD 不输出正文;普通完整响应不再带 Content-Range。 - 图片缓存:同一图片的并发请求共享下载,临时文件关闭且转换成功后才发布。下载连接超时 5 秒、读取超时 15 秒,转换超时 60 秒。图片缺失或下载失败仍返回 404,中断可返回 503。
- 订阅刷新:连接和连接池等待超时 5 秒,读取超时 15 秒;网络操作不占用订阅状态锁。上游 Key、过滤选项或启用状态改变后会使旧缓存失效,旧刷新结果不能重新发布。仅名称修改且刷新失败时保留原有缓存。
- WebSocket:连接失败按 1/2/4/8/16/30 秒退避,建立连接超时 10 秒;重连后重新读取任务列表和用量。页面恢复可见或网络恢复时重新连接。
上线验证重点
按现有发布手册安排存储节点、主站和前端上线,避开正在运行的生产任务。源码修复本身不代表生产已经更新。
- 新建任务,模拟节点已有归档或立即返回状态,确认数据库与页面均保留完成状态且没有重复行。
- 使用临时测试目录制造一次压缩失败,确认源文件保留,恢复目录可写后能重试,损坏 ZIP 不会标记完成。
- 下载完整文件和小范围/尾部范围,确认响应字节数;验证空文件和越界请求。
- 在测试上游阻塞刷新时修改其他账号/读取快照,确认操作不被网络等待阻塞;旧请求结束后不能覆盖新配置。
- 阅读器人为令一张图片失败,确认后续图片继续加载、单图重试有效。
- 浏览器断网、恢复网络、切后台再返回,确认连接提示和进度能够恢复。
根目录 /home/lionwebsite/API_DOCUMENTATION.md 已追加待发布说明;本文件是这部分接口行为变更的仓库内交接记录。