---
source_url: 
ingested: 2026-08-03
status: inbox
---

# Links 存储后端统一：R2 退役 + UI 打磨（1.0.411–1.0.415，2026-08-03）

大哥要求：collections 沿用既有 Apple 风 UI，图片全部迁移到文件后端，**只保留一个存储后端**（files），保留 collection 概念与 slideshow。

## 存储统一
- 图片迁移：存量 **209/209 全部迁到文件后端**（FILE_UPLOADS_FOLDER/NFS），迁移命令幂等、默认 dry-run、`--commit` 执行、`--delete-r2` 可选。
- **R2 桶退役**：大哥批准删除（原话 "Cool, remove those 209 objects"），桶实际含 **210 个对象**（209 图 + 1 游离对象，全在 `images/` 前缀），全部删除、桶归零。
- R2 操作套路：`kubectl exec -n apps deploy/links -c links -i -- python3 - < script` 文件注入执行（超长内联 Python 会被守卫拦 exit 1）；**凭证走 pod 环境变量**（R2_ENDPOINT_URL/R2_ACCESS_KEY_ID/R2_SECRET_ACCESS_KEY），不落盘。

## UI 迭代
- 1.0.413：文件页去拖拽区，Upload 按钮触发。
- 1.0.414：沉浸式 lightbox 预览（全屏暗色、毛玻璃顶/底栏、移动端触摸滑动）+ 移除上传进度 HUD（进度改走 toast）。
- 1.0.415：tags 页面 Apple 风重设计（白卡、Edit/Delete、segmented tabs、Posts 只渲染 20 卡 + "View all N posts"）。
- 缩略图缓存：上传时**预生成缩略图**（含 collection 上传路径）+ 文件流/缩略图响应加 Cache-Control 头（含 Range 分支）——NFS 小/慢，首次打开 /ui/files/ 不再卡。
- 文件列表页类型筛选（text/binary/image/video/audio）：沿 list.html 的 Alpine `fileManager()`/`visibleFiles` 扩展。

## 部署坑
- ArgoCD "重复资源"老毛病：sync 显示 Synced 但 deployment 不更新 → 需 `patch application links --type=merge` 带 `revision` + `force:true` 强制同步。
- CI Recreate 部署会打断 pod 内长任务。
