ProductReadyProductReady

等待列表和邀请码

了解 ProductReady 的访问控制系统,用于预发布阶段管理

等待列表和邀请码

ProductReady 提供灵活的访问控制系统,通过等待列表邀请码来管理预发布阶段和受控发布。

概述

系统支持三种访问模式:

  1. PUBLIC(公开) - 正常运营,所有人都可以访问完整应用
  2. INVITE_ONLY(仅邀请) - 受控发布,界面可见但需要邀请码才能访问仪表板
  3. WAITING_LIST(等待列表) - 预发布模式,登录界面隐藏,需要邀请码才能访问

访问模式详解

PUBLIC 模式(公开)

适用场景: 正式生产 / 全面开放

  • ✅ 所有功能对所有人开放
  • ✅ 仪表板和受保护路由无限制
  • ✅ 正常用户体验

INVITE_ONLY 模式(仅邀请)

适用场景: 软发布 / Beta 测试

  • ✅ 落地页显示登录和注册按钮
  • ✅ 用户可以自由注册
  • 🔒 仪表板和受保护路由需要邀请码
  • 📧 没有邀请码的用户将被重定向到申请访问页面

用户体验:

  • 新用户看到正常的"登录"按钮
  • 登录后,如果没有邀请码 → 重定向到激活页面
  • 必须输入有效邀请码才能访问仪表板

WAITING_LIST 模式(等待列表)

适用场景: 预发布 / 即将推出

  • ❌ 落地页隐藏登录按钮
  • ✅ 显示"获得早期访问权限"按钮
  • ✅ 用户可以注册但需要邀请码
  • 🔒 与 INVITE_ONLY 相同的仪表板保护

用户体验:

  • 落地页显示"获得早期访问权限" CTA
  • 点击后进入等待列表提交表单
  • 批准的用户通过邮件收到邀请码

面向最终用户

加入等待列表

  1. 访问落地页
  2. 点击"获得早期访问权限"(WAITING_LIST 模式)或找到等待列表链接
  3. 填写表单:
    • 邮箱地址(必填)
    • 姓名(可选)
    • 公司(可选)
    • 使用场景(可选)
  4. 提交并等待批准

激活邀请码

批准后,您将收到包含邀请码的电子邮件。

激活步骤:

  1. 登录您的账户(如果还没有账户,请先创建)
  2. 系统会自动重定向到激活页面
  3. 输入您的邀请码(格式:EARLY-2026-XXXXXXXX
  4. 点击"激活"
  5. 完成!现在可以访问仪表板和所有功能

或者: 直接访问 /waitlist/activate 输入邀请码。

故障排除

"无效的邀请码":

  • 检查拼写错误(邀请码区分大小写)
  • 确保使用邮件中的最新邀请码
  • 如果问题持续,请联系支持团队

"邀请码已被使用":

  • 每个邀请码只能使用一次
  • 如果您没有使用,可能是其他人使用了
  • 向支持团队申请新的邀请码

"登录后被重定向到等待列表":

  • 您还没有激活的邀请码
  • 检查邮箱中的邀请
  • 或者提交等待列表申请

面向管理员

管理访问模式

位置: /systemadmin/access-mode

切换模式:

  1. 选择所需模式(PUBLIC / INVITE_ONLY / WAITING_LIST)
  2. 点击"更新访问模式"
  3. 更改立即生效

管理等待列表用户

位置: /systemadmin/waitlist-users

工作流程:

  1. 审核提交: 查看所有等待列表条目及其状态
  2. 批准用户: 点击"批准并发送邮请"将:
    • 自动生成唯一邀请码(格式: EARLY-YYYY-XXXXXXXX
    • 自动发送邮件通知给用户,包含:
      • 个性化欢迎信息(使用用户提交的姓名)
      • 突出显示的邀请码
      • 详细的激活步骤:
        1. 登录账户
        2. 访问 /waitlist/activate 页面
        3. 输入邮件中的邀请码
      • 如果邮件发送失败,系统会记录错误但不会阻止批准操作
    • 更新状态为"已邀请"
  3. 跟踪状态: 监控邀请码使用情况
  4. 处理拒绝: 用户可以重新提交(状态重置为待处理)

状态流转:

pending → [批准并发送] → invited → [用户激活] → activated
   ↓                      ↓
   └─[拒绝]────────────────┘

邮件通知

当前已实现:

  • 等待列表确认: 用户提交申请后立即收到确认邮件

    • 主题:"Thank you for joining our waitlist!"
    • 内容:确认信息、提交的资料、后续流程说明
    • 使用用户提交的姓名个性化
  • 批准等待列表申请: 管理员批准后用户收到邀请码邮件

    • 主题:"Your ProductReady Invite Code"
    • 内容:欢迎信息、邀请码、详细激活指南
    • 使用用户提交的姓名个性化
  • 申请被拒绝: 申请被拒绝时用户收到通知邮件

    • 主题:"Update on your ProductReady application"
    • 内容:拒绝原因说明、鼓励用户更新资料重新申请
    • 包含重新申请的链接
  • 成功激活: 用户激活邀请码后收到欢迎邮件

    • 主题:"Welcome to ProductReady! 🎉"
    • 内容:欢迎信息、入门指南、帮助资源
    • 在激活邀请码后立即发送

未实现的场景 (需要定时任务):

  • ❌ 邀请码即将过期的提醒(例如:"您的邀请码还有3天过期")

邮件服务配置:

  • 支持多种邮件服务商:Resend、Postmark、SendGrid、AWS SES
  • 需要配置 EMAIL_FROM 环境变量(发件人地址)
  • 邮件发送失败会记录日志,但不影响核心操作(例如批准仍然会成功)

管理邀请码

位置: /systemadmin/invite-codes

功能:

  • 查看所有生成的邀请码及其状态(未使用/已使用/已过期)
  • 查看每个邀请码是为哪个等待列表用户生成的
  • 跟踪谁使用了每个邀请码
  • 为特殊情况手动批量生成邀请码
  • 导出未使用的邀请码以便外部分发

邀请码格式: EARLY-YYYY-XXXXXXXX

  • EARLY: 前缀,表示早期访问
  • YYYY: 生成年份
  • XXXXXXXX: 随机 8 字符标识符

最佳实践

预发布阶段(WAITING_LIST)

  1. 在发布前启用 WAITING_LIST 模式
  2. 通过等待列表表单收集邮箱
  3. 分批批准用户
  4. 监控激活率
  5. 准备好全面开放时切换到 PUBLIC

软发布阶段(INVITE_ONLY)

  1. 用于封闭 Beta 测试或软发布
  2. 保持登录可见以提高转化率
  3. 根据容量批准用户
  4. 监控系统负载和用户反馈
  5. 通过批准更多用户逐步开放访问

正式生产(PUBLIC)

  1. 全面开放时切换到 PUBLIC
  2. 现有邀请码仍然有效(无中断)
  3. 新用户不需要邀请码
  4. 保留等待列表系统用于未来活动

安全说明

  • 邀请码只能使用一次
  • 邀请码可以设置可选的过期日期
  • 所有访问检查都在服务器端进行
  • 管理员可以通过拒绝用户来撤销访问权限
  • 邮箱验证确保合法注册

API 集成

对于编程访问,使用 tRPC 端点:

// 提交等待列表(公开)
trpc.systemAdmin.waitlist.submit.mutate({
  email: "user@example.com",
  name: "张三",
  company: "某某公司"
});

// 激活邀请码(受保护)
trpc.systemAdmin.inviteCodes.use.mutate({
  code: "EARLY-2026-ABC123XY"
});

相关文档

On this page