菜单

商业功能

相关源文件

本文档详细介绍了 AFFiNE 中的订阅和计费系统。它涵盖了订阅系统的架构、可用的订阅计划、订阅管理功能以及相关的用户通知。

订阅系统架构

AFFiNE 中的订阅系统提供了一种管理不同服务等级的方式。它处理用户订阅的生命周期,包括创建、修改、取消和恢复。

Subscription 实体是管理订阅状态和操作的核心组件。它与身份验证服务交互以识别用户,与服务器服务交互以检查功能可用性,并与订阅存储进行交互以实现数据持久化。

来源: packages/frontend/core/src/modules/cloud/entities/subscription.ts28-162

订阅类型和计划

AFFiNE 提供不同的订阅计划和类型以满足各种用户需求。

可用计划

计划描述特性
专业版面向专业用途的高级功能增强的文档编辑、协作功能
AIAI 驱动的功能AI 助手、文档分析

订阅变体

变体描述
定期按指定间隔定期计费
终身(“信徒”)一次性付费,终身访问
一次性一次性付费,限时访问

该系统会跟踪这些不同的订阅类型,并根据用户的订阅状态提供相应的功能访问。

来源: packages/frontend/core/src/modules/cloud/entities/subscription.ts24-52

订阅管理

Subscription 实体提供管理用户订阅的方法

  1. 恢复订阅:用户可以使用 resumeSubscription 方法恢复先前已取消的订阅。
  2. 取消订阅:用户可以使用 cancelSubscription 方法取消活动订阅。
  3. 更改定期状态:用户可以使用 setSubscriptionRecurring 方法修改订阅的定期间隔(例如,从月度更改为年度)。

所有这些操作都使用幂等性键来确保操作不会被意外重复,这对于计费操作尤其重要。

revalidate Subscription 实体中的 effect 确保订阅数据保持最新,在需要时检查服务器功能并获取最新的订阅信息。

来源: packages/frontend/core/src/modules/cloud/entities/subscription.ts62-87 packages/frontend/core/src/modules/cloud/entities/subscription.ts89-151

订阅通知

系统包含通知组件,用于提醒用户订阅状态的变化,特别是降级。

当用户的订阅被降级时,系统会显示一个通知,包含

  • 表明降级的清晰标题
  • 关于影响的说明性内容
  • 用于关闭通知或导航到升级页面的操作按钮

通知会根据用户使用的是 Web 应用程序还是桌面客户端来调整其文本。

来源: packages/frontend/core/src/components/affine/subscription-landing/notify.tsx52-89 packages/frontend/core/src/components/affine/subscription-landing/notify.css.ts1-35

设置 UI 组件

系统包含用于显示和管理订阅设置的 UI 组件。这些组件遵循一致的设计模式,具有标题、部分和不同设置的行。

这些组件的样式经过设计,可提供一致的视觉层次结构,清晰地区分标题、描述和交互元素。它们还包括禁用设置的状态。

来源: packages/frontend/component/src/components/setting-components/share.css.ts1-92

支付集成

虽然具体支付处理的细节在提供的文件中并未完全展示,但订阅系统设计用于与支付系统交互。在尝试检索订阅信息之前,该功能会检查服务器配置以确定是否启用了支付功能。

这种设计允许灵活的部署配置,其中支付功能可以根据部署场景启用或禁用。

来源: packages/frontend/core/src/modules/cloud/entities/subscription.ts89-151