Files
soul-yongping/.cursor/agent/团队/evolution/2026-03-13.md
2026-03-14 14:37:17 +08:00

2.6 KiB
Raw Blame History

2026-03-13 - 文章详情预览规则统一(小程序 + 后端)

场景

  • 文章详情页采用「部分内容预览 + 付费解锁全文」的收费模式。
  • 历史实现中,预览比例由小程序本地按 20% 行数截取,后端可能同时返回预览与全文两个 content 字段,存在:
    • 三端对「预览长度」的理解不一致;
    • 前端误用 data.content 导致未付费用户拿到全文的潜在风险。
  • 本次目标:将「预览长度 + 安全边界」下沉到后端统一控制,小程序只按「是否已解锁」选择展示预览或全文。

团队级决策

  • 预览长度统一由 soul-api 控制:
    • 当前规则:对付费章节,未解锁用户默认看到正文前 50%,且不少于 100 个字符,末尾追加「购买后阅读完整内容」提示;
    • 未来如需改为 40% / 30% 等,只需调整后端 previewContent,前端逻辑保持不变。
  • 接口约定统一:
    • 章节详情接口(含 /api/miniprogram/book/chapter/:id/api/miniprogram/book/chapter/by-mid/:mid)返回的:
      • 外层 content 字段,
      • 内层 data.contentChapter.Content字段
      • 在同一次响应中必须保持一致
        • 免费或已解锁:两处都是全文;
        • 未解锁两处都是预览50%)。
    • 不允许出现「外层是预览、data.content 是全文」这类混合返回,避免前端误用泄露付费内容。
  • 小程序阅读页约定:
    • 只根据 accessState 判断是否有权看全文;
    • 有权限时使用 data.content / content 渲染全文;
    • 无权限时仅使用后端返回的预览内容,不再在前端重新按 20% 行数切割。

影响角色

  • 后端工程师soul-api
    • 负责实现和维护 previewContent 预览算法及权限判断逻辑;
    • 在新增/修改与付费内容相关的接口时,必须遵守「外层 content 与 data.content 一致」的安全约定。
  • 小程序开发工程师
    • 阅读页不自行决定预览比例,只展示后端返回的预览内容;
    • 通过 accessManager 与章节详情响应判断权限,严格按照 accessState 切换「预览 / 全文」视图。

对后续迭代的提示

  • 若未来引入「增值版内容」「章节试读长度差异化」等新收费形态,优先在后端扩展 previewContent 与权限判断逻辑,对前端暴露统一、稳定的字段语义。
  • 若管理端需要控制预览比例或提示文案,可在配置中心增加相关配置项,由后端读取后影响 previewContent 行为,保持三端一致。