跳到主要内容

用户登录注册功能

⚠️ 本文档由 AI 补充生成
生成时间:2026-01-09
生成原因:产品需求文档中隐含了手机号登录和邀请制注册的需求,但未明确描述

版本: 0.10
优先级: P0-T0
负责人: 待定
创建日期: 2026-01-09

1. 需求背景

用户在使用产品前需要完成登录/注册。考虑到产品处于早期阶段,采用邀请制注册方式,确保用户质量和社区氛围。登录方式采用手机号+验证码的方式,简化用户操作流程。

2. 功能描述

2.1 手机号登录/注册

2.1.1 登录方式

  • 登录方式:手机号 + 验证码
  • 自动注册:新用户首次登录时自动完成注册,无需额外注册步骤
  • 手机号格式:支持国际格式(如 +8613812345678)或国内格式(如 13812345678)

2.1.2 验证码机制

  • 验证码格式:6位数字
  • 有效期:5-10分钟(可配置)
  • 发送频率限制:同一手机号在1分钟内只能发送一次验证码
  • 使用限制:每个验证码只能使用一次,使用后立即失效

2.1.3 错误处理

  • 手机号格式错误:提示用户检查手机号格式
  • 验证码错误:提示验证码错误,允许重新输入
  • 验证码过期:提示验证码已过期,需要重新获取
  • 发送频率过高:提示操作过于频繁,请稍后再试
  • 网络错误:提示网络连接失败,请检查网络后重试

2.2 邀请制注册

2.2.1 邀请码机制

  • 使用场景:社区处于早期阶段,采用邀请制注册
  • 邀请码格式:32位字符串(如 INVITE20260109ABC)
  • 有效期:从创建时间开始计算,有效期1个月
  • 使用限制
    • 每个邀请码只能使用一次
    • 使用后立即标记为已使用,不可重复使用
    • 过期后不可使用

2.2.2 邀请码验证流程

  • 验证时机:在用户首次注册时验证邀请码
  • 验证方式:用户输入邀请码,系统验证有效性
  • 验证结果
    • 有效:允许继续注册流程
    • 无效:提示邀请码错误、已使用或已过期

2.2.3 邀请码管理(后台功能)

  • 创建方式:由管理员通过后台系统创建邀请码
  • 创建者记录:记录创建该邀请码的管理员用户ID
  • 使用记录:记录使用该邀请码的用户ID和使用时间

2.3 登录流程

2.3.1 新用户注册流程

  1. 用户输入手机号
  2. 点击"获取验证码"按钮
  3. 系统发送验证码到用户手机
  4. 用户输入验证码
  5. 用户输入邀请码(邀请制阶段必填)
  6. 系统验证验证码和邀请码
  7. 验证通过后自动创建用户账号
  8. 返回用户信息和登录凭证(JWT token)
  9. 进入用户冷启动流程(问卷)

2.3.2 老用户登录流程

  1. 用户输入手机号
  2. 点击"获取验证码"按钮
  3. 系统发送验证码到用户手机
  4. 用户输入验证码
  5. 系统验证验证码
  6. 验证通过后返回用户信息和登录凭证(JWT token)
  7. 进入应用首页

3. 用户场景

场景1:新用户首次注册

  1. 用户打开App,进入登录页面
  2. 输入手机号,点击"获取验证码"
  3. 收到验证码短信,输入验证码
  4. 输入邀请码(邀请制阶段)
  5. 系统验证通过,自动创建账号
  6. 进入用户冷启动问卷页面

场景2:老用户登录

  1. 用户打开App,进入登录页面
  2. 输入手机号,点击"获取验证码"
  3. 收到验证码短信,输入验证码
  4. 系统验证通过,返回登录凭证
  5. 进入应用首页

场景3:验证码错误/过期

  1. 用户输入错误的验证码或验证码已过期
  2. 系统提示错误信息
  3. 用户可以选择重新获取验证码或重新输入

场景4:邀请码无效

  1. 新用户输入无效的邀请码(错误/已使用/已过期)
  2. 系统提示邀请码无效
  3. 用户需要输入有效的邀请码才能继续注册

4. 验收标准

4.1 手机号登录/注册

  • 支持手机号格式验证(国际格式和国内格式)
  • 验证码发送功能正常,能正确发送到用户手机
  • 验证码有效期控制正确(5-10分钟)
  • 验证码使用后立即失效
  • 发送频率限制生效(1分钟内同一手机号只能发送一次)
  • 新用户首次登录能自动创建账号
  • 老用户登录能正确识别并返回用户信息
  • 各种错误情况有对应的提示信息

4.2 邀请码机制

  • 邀请码格式验证正确
  • 邀请码有效期控制正确(1个月)
  • 邀请码使用后立即标记为已使用
  • 已使用的邀请码不能再次使用
  • 过期的邀请码不能使用
  • 邀请码使用记录正确(记录使用者ID和使用时间)
  • 邀请制阶段,注册时必须提供有效的邀请码

4.3 安全性

  • 验证码在传输和存储过程中加密
  • 登录凭证(JWT token)安全生成和验证
  • 防止验证码暴力破解(如限制尝试次数)
  • 防止邀请码批量生成和滥用

5. 依赖项

  • 短信服务:需要集成第三方短信服务商(如阿里云、腾讯云等)用于发送验证码
  • JWT 认证:用于生成和验证用户登录凭证
  • 数据库:存储用户信息、验证码记录、邀请码记录
  • 后台管理系统:用于创建和管理邀请码(可选,初期可通过数据库直接创建)

6. 待定事项

  • 短信服务商的具体选型(阿里云/腾讯云/其他)
  • 验证码有效期具体时长(5分钟还是10分钟)
  • 邀请码格式的具体规范(32位字符串的具体生成规则)
  • 邀请制何时取消(何时开放公开注册)
  • 是否需要支持其他登录方式(如微信登录等)
  • 验证码尝试次数限制的具体数值
  • 是否需要邀请码使用统计和分析功能

7. 技术实现说明

7.1 数据模型

  • users 表:新增 phone_number 字段(唯一索引)
  • verification_codes 表:存储验证码记录
  • invitation_codes 表:存储邀请码信息

详细数据模型设计请参考架构文档:docs/docs/architecture/0.10/data-model.md

7.2 API 接口

  • 发送验证码POST /api/v1/auth/send-code
  • 验证码登录/注册POST /api/v1/auth/login
  • 验证邀请码POST /api/v1/auth/verify-invitation(可选)

详细 API 设计请参考架构文档:docs/docs/architecture/0.10/api-design.md