Files
doodle-mini/docs/v3.5/云存储资源目录清单.md
T
2026-10-16 17:33:24 +08:00

7.7 KiB

微信云存储资源目录清单

更新:2026-10-16。依据 doodle-mini 的 miniprogram 与 cloudfunctions 源码、路径构造函数及仓库内缓存分析,不是云端存储桶的实时文件列表。本次未下载、上传、迁移或删除云文件。

目录树

以下为代码涉及的云存储相对路径,仅列到最后一级目录,共 9 个末级目录:

/
├── assets/
│   ├── fonts/
│   └── previews/
│       ├── chinese/
│       ├── english/
│       ├── math/
│       ├── papers/
│       ├── pinyin/
│       └── puzzle/
├── content/
└── user-avatars/

对象存储中的“目录”是文件 key 的前缀。此处表示代码引用或能够写入的路径,不保证每个目录已经存在文件,也不能据此排除云端的历史/未引用目录。

用途与代码依据

最后一级目录 用途与确认范围 代码依据
assets/previews/chinese/ 语文、控笔、识字等题型预览;首页静态项目也直接引用此路径 首页数据、语文发布配置
assets/previews/english/ 英文字母题型预览;首页静态项目直接引用此路径 首页数据、英语发布配置
assets/previews/math/ 数学题型预览;由发布路径构造,旧页面配置缓存也有文件引用 数学发布配置、路径构造
assets/previews/papers/ 作业纸预览的动态上传路径;有发布配置,不能仅凭代码断言云端已有文件 作业纸发布配置、路径构造
assets/previews/pinyin/ 拼音题型预览;首页静态项目直接引用此路径 首页数据、拼音发布配置
assets/previews/puzzle/ 益智题型预览;由发布路径构造,旧页面配置缓存也有文件引用 益智发布配置、路径构造
assets/fonts/ ToneOZ 拼音字体;通过 cloud fileID 兑换临时链接,再加载字体 字体配置、字体加载
content/ 首页展示配置 JSON;内容构建和定时刷新云函数上传到 content/page-config.json 内容构建、定时刷新
user-avatars/ 用户头像;按用户 ID 和时间生成文件名上传,文件数量须另查用户数据或云端清单 头像上传

预览图统一写入规则为 assets/previews/${category}/${id}.jpg,由页面发布元数据传入 category,再通过 base/pageMixin.ts 调用 wx.cloud.uploadFile。扫描发布配置得到 chinese、english、math、papers、pinyin、puzzle 六个分类。类型或分类导航里存在 craft,不等于存在 craft 云预览目录,本清单不据此添加。

cloudfunctions 中另有两处实际上传调用,均写 content/page-config.json。头像上传是一个调用点,题型预览上传是一个公共调用点;未发现其他业务云文件上传路径。旧云数据库 previewImg/avatarUrl 字段可以保存代码未硬编码的 fileID,因此运行时数据仍可能增加清单以外的引用。

已走 CDN 的远程资源

以下引用使用 https://cdn.joeyone.cn,不是当前源码中的微信 cloud fileID,不混入上述云存储目录。仅凭域名不能确认底层存储服务商或 bucket,也不假定需要重复迁移。

CDN 路径 内容 代码依据
doodle/fonts/ 六个字体文件,包含手写、描红和数字字体 字体配置
doodle/hanzi/ 汉字笔画及读音 JSON 汉字数据加载
doodle/share-img/ 小程序分享图片 分享配置

小程序包内的 assets/imgs、assets/tabBar、iconfont 等本地文件不属于云存储迁移范围;不能因为本地路径也以 assets 开头,就当作微信云文件。

后续快速同步建议

先做一次批量迁移,稳定后再考虑持续同步;当前仅为方案,未执行:

  1. 生成文件级清单:题型预览从旧 worksheets.previewImg/新后端 assets.source_ref 获取,头像从用户当前引用获取,补上已确认的字体和配置路径。代码目录用于限定范围,不能替代实际文件枚举。旧缓存只作线索,不作为当前有效引用的唯一依据。
  2. 按清单从原云环境授权下载到本地备份;记录相对路径、MIME、大小和 SHA-256,可失败重试。不将临时签名 URL 保存为长期资源地址。
  3. 上传七牛并保留可追踪路径映射。例如公共资源可采用统一前缀加原相对路径,或按资产 ID/内容摘要生成不可变 key;目标空间、前缀和同名文件处理在执行前明确。头像按现有后端设计使用私有空间,不能与公共预览一并公开。
  4. 回读校验后再更新引用:51 张已导入预览保留现有 assetId/preview_asset_id,回填七牛对象信息并标记 ready;字体更新配置 URL,头像按用户绑定并经服务端签名访问。
  5. 首页配置 JSON 含嵌套预览地址,需在迁移图片后重建或替换这些引用,并处理小程序缓存。仅复制 JSON 文件不会自动转换其中的 cloud fileID。
  6. 同时切换后续上传、发布和定时任务的目标,否则旧代码继续往微信云存储写入,七牛副本会再次落后。切换核对完成前保留源文件。

已有实施调研见 云存储图片迁移七牛调研。本地未发现可直接使用的 tcb、cloudbase、qshell 命令;已有小程序 AppSecret 不等于源环境存储管理权限或七牛凭据。后续实施需确认可读源文件的授权方式,以及目标七牛 bucket、区域、HTTPS 域名和服务端凭据,不把凭据写入文档或前端。