Files
doodle-mini/docs/v3.5/Web与服务端生成策略.md
T
2026-10-16 16:00:59 +08:00

7.0 KiB
Raw Blame History

Doodle Mini v3.5 Web 与服务端生成策略

状态:迁移到自有云服务器的方向已确认;Web 与绘图试点待实施

更新日期:2026-10-12

现有业务后端的迁移范围、切换顺序和验收以云服务端迁移方案(doodle-store)为准。本文说明迁移后 Web 与服务端生成的演进,不再以继续保留 CloudBase 业务后端为目标。

1. 决策结论

1.1 Web 的定位

Web 是长期的搜索获客、内容沉淀、电脑打印和教师/机构扩展渠道;小程序仍是当前的微信内打开、分享、每日推荐和家庭留存主产品。

v3.5 将现有业务后端迁移作为独立实施任务,小程序体验和小规模 Web/服务端生成按里程碑推进,不预设固定投入比例。

不等待小程序“达到很大用户量”才准备 Web,因为搜索内容、服务端渲染和内容生产机制都需要时间积累;但也不在内容库、内容生产和核心留存未验证时建设完整 Web 平台。

1.2 生成位置

未来 Web 的高价值题型采用服务端生成与渲染优先。浏览器负责选择参数、展示预览、发起下载和账户交互;不得承载完整题目生成规则、排版参数与私有素材。

小程序既有题型暂可保留客户端 Canvas 生成,以避免高风险的一次性重写。创意涂色纸及后续主题包、批量 PDF 等新能力必须按服务端模式实现。

2. 为什么不把核心生成放在 Web 客户端

Web 客户端代码、网络请求和静态资源可被用户查看、保存和分析。即使经过压缩或混淆,也只能提高复制成本,无法提供真正的保护。

服务端模式保护的是:

  • 题目随机规则、难度控制、答案逻辑。
  • 模板坐标、排版参数和批量内容生产能力。
  • 原始 SVG/高清线稿、字体、商用素材以及素材关联关系。
  • 未发布题型、主题包和会员规则。

服务端无法阻止他人观察最终 PNG/PDF 并模仿视觉效果;产品壁垒仍来自稳定的内容供给、素材版权、生成质量、运营数据和用户体验。

3. 目标架构

小程序 / Web
  └─ 仅提交受控参数:worksheetId、年龄、难度、主题、孩子姓名
          ↓
      统一业务 API
          ↓
      Render API(鉴权、配额、限流、参数校验)
          ↓
私有题型配置 + 私有素材 + 生成器 + 渲染器
          ↓
   生成 PNG / PDF,写入对象存储
          ↓
返回短期签名预览/下载 URL 或异步任务状态

示例请求:

{
  "worksheetId": "coloring-animal-01",
  "variant": "easy",
  "childProfileId": "child_123",
  "output": "png"
}

服务端根据 worksheetId 查询内部配置,生成随机种子和题目内容;客户端不能传素材 URL、任意渲染器名称、自由模板参数或数据库字段。

4. 数据与接口边界

4.1 平台无关的 worksheet 模型

当前内容数据中存在小程序专用 path,例如 /mathPages/mathDraw/mathDraw?id=number-find。v3.5 起应建立平台无关的核心字段:

type Worksheet = {
  id: string;
  category: string;
  title: string;
  ageMin: number;
  ageMax: number;
  difficulty: 1 | 2 | 3 | 4;
  tags: string[];
  rendererKey: string;      // 仅服务端可解释
  generatorKey: string;     // 仅服务端可解释
  assetRefs: string[];      // 私有资源引用
  status: 'draft' | 'active' | 'hidden';
};

小程序路由与 Web URL 是展示层映射,不能作为内容本体。旧字段可在迁移期保留为 miniProgramPath,但新服务端生成不依赖它。

4.2 业务服务接口

页面不得再散落调用 wx.cloud.callFunction。逐步收口为业务接口:

worksheetService.list(filters)
worksheetService.getDetail(id)
renderService.createJob(request)
renderService.getJob(jobId)
favoriteService.toggle(worksheetId)
historyService.list()

新版小程序与后续 Web 统一使用 HTTP 业务 API;旧版云函数只在过渡期转发同一业务实现。上层页面不感知数据库与文件存储实现。

5. 后端演进路径

阶段 A:现有业务后端迁移

  • 按专项方案迁移现有云函数、数据库、文件和定时任务到自有腾讯云服务器 + MySQL + 七牛。
  • 新版小程序经业务服务层调用统一 HTTP API;短期兼容桥照顾旧正式版本,只有一个业务写入源。
  • 先保持现有生成与保存行为,再验收数据关联、文件、计数和切换;不同时重写所有绘图代码。

阶段 B:服务端生成样板

  • 在同一后端增加受控 Render API,以创意涂色或一个简单现有题型验证生成、字体、延迟和文件交付。
  • 原始素材和模板采用私有存储;最终文件通过受控地址交付,不依赖隐藏对象路径保护素材。
  • 根据实际任务量增加缓存/异步处理,不预先搭建独立队列平台。

阶段 C:Web 小规模试点与扩张

  • Web 复用统一 API 和内容源,内容页面使用适当的预生成或服务端渲染,生成规则留在服务器。
  • 只建设下节规定的 MVP;旧题型按价值与实际适配成本逐步接入,批量 PDF/会员另行评估。
  • 私有生成进程可按资源需求拆分,但不另建用户、收藏、内容数据库或第二套业务规则。

6. 安全、成本与体验基线

维度 v3.5 最低要求
素材保护 原始素材不公开;仅输出最终位图/PDF;下载链接短时有效
接口控制 登录/游客策略、参数白名单、按用户/IP 限流、每日生成配额
缓存 以题型、变体、随机种子、个性化字段计算缓存键;个性化内容谨慎缓存
任务模式 单张同步生成;多页学习包/PDF 使用异步任务与状态查询
可观测性 记录生成耗时、失败原因、缓存命中、文件大小、单位成本
体验目标 单张预览 P95 小于 3 秒;异步任务需有明确进度和失败重试提示

7. Web MVP 范围与升级门槛

Web MVP 仅包含:首页、10–20 个高意图主题/详情页、2–3 类生成器、预览与打印/PDF 下载。首选试点为创意涂色纸。

满足以下条件后,才扩张为完整 Kiddoleap 风格的资源平台:

  • 可稳定按周上新内容,并有明确的素材/审核/发布流程。
  • Web 已获得自然搜索访问、有效下载与回访,不只是小程序导流。
  • 生成服务的时延、成功率和成本达到产品目标。
  • 主题包或批量导出表现出明确的付费/订阅意愿。

8. 与既有文档的关系

本策略更新了既有架构文档中“前端为主、核心生成保持客户端执行”的长期方向:该原则仍适用于存量小程序题型的成本与离线体验,但不适用于未来 Web 的高价值题型。

在 v3.5 评审通过后,应同步更新《技术架构设计文档》《PC-Web端技术预案》《小程序云开发方案和数据库设计》中的阶段说明,避免文档之间出现相反结论。