Files
digital-psychology/.ai/product/feature-spec/account-auth.md
T
jackyu66gitandCursor 13860bf1ef
ci / h5 (push) Canceled after 0s
ci / api (push) Canceled after 0s
ci / ess-docs (push) Canceled after 0s
feat(ECR-011): 昵称、首页贴士与档案 Self 唯一/合盘交叉校验
每账号仅一条 self(migration 40902);合盘只选 TA;账号昵称可改;首页穿衣/颜色/养生贴士。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-12 22:05:00 +08:00

3.5 KiB
Raw Blame History

Feature Spec: 账号登录

Status: Active · Map: 5.x 账号 [P1+] · Phase: P1
规范:../feature-design.md
关联:profile-bootstrap.md


1. 功能定义

字段 内容
Name 账号登录(手机号+密码)
Purpose 跨设备持久用户身份;未登录不可生成/查看生日衍生结果
Business Goal 数据归属清晰;为会员与深度版付费打底
In Out
注册 / 登录 / 登出 / me 微信 OAuth、短信 OTP(后续)
设备身份绑定到已注册账号 游客可看完整报告
Bearer Session 运营 Admin 登录(独立)

2. 用户价值

  1. 换手机后仍能看到自己的档案与报告。
  2. 登录后输入生日一次生成、各页直读。
  3. N/A(登录本身免费)。

3. 用户角色

Actor 能力
Visitor 仅设备身份;可打开登录页;不可建档出结果
User(已注册) CRUD 本人档案与 TA;读已生成报告
VIP / DeepAccess 同前,权益不变

4. 用户流程

进入结果页或建档
  ↓
未登录? → /login 注册或登录
  ↓
Device 绑定到账号 User
  ↓
进入档案 / 结果页(读缓存报告)

5. 页面设计

路由 页面
/login LoginPage(注册/登录切换)
/mine 展示账号手机号尾号 + 退出

6. 页面状态规范

状态 UI
Loading 登录中
Error 密码错误 / 手机号已注册
Normal 跳转 redirect 或 /mine

7. Business Rules

ID Rule
R1 临时开放: 任意非空手机号 + 任意密码均可登录;未注册则自动建号写入 DB
R2 登录/注册统一走 OpenLogin;不校验历史密码,仍会更新 password_hash 记录本次输入
R3 登录成功后:签发 sessiondevice_identities.user_id 改绑到账号
R4 生成/查看档案与报告 API 必须已注册(users.phone 非空)且有效 session 或已绑设备账号
R5 登出作废 session;设备可再登录其他账号
R6 正式环境恢复校验前须改回本 Spec
R7 新账号未填昵称时,服务端用「意象词+场景词」词库(100×100)随机生成,如心语岛、微光谷
R8 账号昵称可在个人档案页修改(PATCH /auth/me);首页展示昵称而非「自己」

8. 数据模型影响

  • users.phone UNIQUE · users.password_hash · users.nickname
  • user_sessions(token, user_id, expires_at)

9. API 需求

Method Path 说明
POST /api/v1/auth/register 注册(可带 nickname
POST /api/v1/auth/login 登录
POST /api/v1/auth/logout 登出
GET /api/v1/auth/me 当前账号
PATCH /api/v1/auth/me 更新昵称 { nickname }

10. 权限设计

能力 Visitor User
register/login
profiles / reports 写读

11. 埋点

auth_register · auth_login · auth_logout


12. 测试验收标准

Given When Then
新设备 未登录 POST portrait 401
注册成功 建档 200 且生成报告包
登录另一设备 list profiles 见同一账号数据
已登录设备 POST logout 后无 Bearer 再 GET /auth/me 401(设备已解绑,刷新不再显示登录态)

13. AI 开发前检查

  • lexicon:登录/注册/账号
  • 不碰 Admin Auth