Files
conti-docs/prd/modules/01-LGN-账号登录.md

14 KiB
Raw Permalink Blame History

4.1 账号登录

本文件是【账号登录 LGN】模块需求的编辑入口。 主文件 ../Continental-Retail-APP-PRD.md 第 4.1 节已于 2026-08 从本文件回灌(V1.1),此后的需求变更仍改本文件、再回灌。 两者不一致时以本文件为准。 目录约定见 README.md

模块码 LGN
V1.0 章节 4.1
描述粒度 14 维完整模板
需求依据 业务需求 + 设计稿
现状承载系统 O2O 接单宝后台(用户主数据)
需求条数 10(待确认 7,完成度 30%
配图 1 张(设计稿 1

模块概要


一套账号切换多家门店,账号统一管理、员工权限配置。

设计稿-登录页

页面内容 —— App 登录页目标形态:深色轮胎背景 + 橙色徽标,中部为手机号 / 验证码登录区与「密码登录」「我要注册」两个次级入口,下方是第三方登录(微信、支付宝)与协议勾选行。

关键交互 —— ①输入手机号 → 点「获取验证码」,60 秒内不可重复获取(REQ-LGN-001);②点「密码登录」→ 切换为用户名 + 密码模式;③点「我要注册」→ 进入注册流程(表单与审核流程未定 TODO(REQ-LGN-004));④点微信 / 支付宝 → 第三方授权,首次需绑定已有手机号账号(TODO(REQ-LGN-003) 是否纳入本期);⑤点《用户协议》/《隐私政策》→ 查看全文;⑥勾选协议后「登录」方可提交。

可用角色 —— 店长 、技工 ,登录环节两个角色完全一致;差异从登录成功后的角色化导航开始(见导航收敛与角色化配置)。第三方登录与注册两项对两个角色均为 TODO(REQ-LGN-003) / TODO(REQ-LGN-004)

需求关联 —— REQ-LGN-001 验证码登录、REQ-LGN-002 密码登录、REQ-LGN-003 第三方登录、REQ-LGN-004 注册与审核、REQ-LGN-005 协议展示与留痕

本图与验收标准的两处对不上,需设计补稿(不新增需求,属设计稿状态缺失):

  1. 稿中协议勾选框为未勾选态,而「登录」按钮画的是完整橙色实心(非置灰)。验收标准第 1 条要求未勾选时按钮为禁用态 —— 设计稿未画禁用态
  2. 稿中未见「忘记密码」入口,而 REQ-LGN-006 规定忘记密码经手机号验证码重置。该入口可能在「密码登录」模式下才出现,但密码登录态的稿未提供,本图无法确认。

4.1.1 需求描述

业务目标 —— 用一套账号替代 6 套小程序各自的登录,消除重复登录;同时建立可审核、可回收的账号管控机制,解决痛点 2.2

目标角色 —— 店长、技工

入口 —— APP 冷启动且无有效会话;会话失效后的任意页面被动跳转

前置条件 —— 账号已在 O2O 接单宝后台存在并通过审核;设备可访问网络

页面内容

  • 品牌背景 + Continental Logo
  • 手机号输入框
  • 验证码输入框 + 「获取验证码」
  • 「登录」主按钮
  • 「密码登录」次按钮(切换到用户名 + 密码模式)
  • 「我要注册」文字入口
  • 第三方登录区(微信、支付宝)
  • 底部协议勾选「已阅读并同意《用户协议》与《隐私政策》」

主流程

  1. 输入手机号
  2. 获取验证码
  3. 输入验证码
  4. 勾选协议
  5. 点击登录
  6. 后端校验通过下发 access / refresh token
  7. 拉取该账号的门店列表与角色
  8. 单门店直接进入首页;多门店弹出门店选择
  9. 进入 APP 首页

异常流程

  • 手机号未注册 → 提示并引导「我要注册」
  • 验证码错误 → 提示剩余可试次数
  • 验证码超时 → 提示重新获取
  • 未勾选协议 → 登录按钮不可用
  • 账号被停用 → 提示联系门店管理员
  • 账号无任何门店归属 → 阻断登录并提示
  • 网络异常 → 保留已输入内容并允许重试

业务规则 —— 见 4.1.2

权限规则 —— 登录本身不区分角色;登录成功后由后端下发角色(店长 / 技工)与该角色的可见 tab 集合、功能权限,见导航收敛与角色化配置附录 B

访问链路 —— App → App Backend → O2O 后台(用户主数据校验);App Backend → 短信网关(验证码下发);App Backend → 马上下单(门店列表)

逻辑数据来源 —— 用户主数据:O2O 接单宝后台(手机号、用户名、密码、角色);门店列表:马上下单;协议内容:APP 后台管理 Web

回写目标 —— 登录日志、设备信息写入 App Backend;协议同意记录(版本号 + 时间戳)写入 App Backend

状态变化 —— 无会话 → 已登录(持有 access/refresh token)→ 已选定门店上下文

验收标准 —— 见 4.1.6

4.1.2 业务规则

REQ-LGN-001 手机号验证码登录 —— 手机号为 11 位中国大陆号码;验证码 6 位数字,有效期 5 分钟;同一手机号 60 秒内只能获取一次;单日获取上限 TODO(REQ-LGN-001)

REQ-LGN-002 用户名密码登录 —— 用户名与密码沿用 O2O 注册时设置的凭据;密码在传输与存储全程不可逆

REQ-LGN-003 第三方登录 —— 支持微信、支付宝授权登录。首次授权需绑定已有手机号账号后方可进入;未绑定账号不允许直接创建新账号。

⚠️ 该需求仅见于设计稿 —— TODO(REQ-LGN-003) 需确认是否纳入本期

REQ-LGN-004 注册与审核 —— 设计稿含「我要注册」入口。注册后账号处于「待审核」状态,需门店店长或后台管理员审核通过方可登录,以解决痛点 2.2 的「随意注册」问题。

⚠️ 注册表单字段、审核人、审核时效均未定义 —— TODO(REQ-LGN-004)

REQ-LGN-005 协议展示与留痕 —— 用户协议、隐私政策内容由后台管理 Web 维护,经法务审核;用户点击可查看全文;同意时记录协议版本号与同意时间;协议版本更新后需重新征得同意

REQ-LGN-006 密码策略 —— 密码长度、复杂度、有效期、历史密码不可复用条数 —— TODO(REQ-LGN-006)。忘记密码通过手机号验证码重置

REQ-LGN-007 登录失败锁定 —— 连续登录失败达到阈值后锁定账号一段时间。阈值与锁定时长 —— TODO(REQ-LGN-007)

REQ-LGN-008 登出 —— 用户主动登出时清理本地会话、门店上下文、缓存的业务数据与 WebView Cookie,见《App 门店上下文与会话管理文档》

REQ-LGN-009 会话与 Token —— access token 短期有效,refresh token 轮换续期;refresh 失效后跳转登录页。轮换策略见《后端安全与认证文档》。具体有效期 —— TODO(REQ-LGN-009)

REQ-LGN-010 门店上下文 —— 登录后必须确定唯一「当前门店」;切换门店时级联失效所有门店相关缓存与在途请求,见《App 门店上下文与会话管理文档》

4.1.3 店长

  1. 店长通过自己注册的手机号登录页面;
  2. 店长通过注册的用户名、密码登录页面;
  3. 店长点击「用户协议」,可以查看用户协议的具体内容;
  4. 店长点击「隐私协议」,可以查看隐私协议的具体内容。

4.1.4 技工

  1. 技工通过自己注册的手机号登录页面;
  2. 技工通过自己的用户名、密码登录页面;
  3. 技工点击「用户协议」,可以查看用户协议的具体内容;
  4. 技工点击「隐私协议」,可以查看隐私协议的具体内容。

登录环节店长与技工无差异;差异从登录成功后的角色化导航开始,见导航收敛与角色化配置

4.1.5 业务数据列表

用户信息当前存放在 O2O 接单宝后台,用户的登录验证数据一致性以 O2O 接单宝后台的数据为用户主数据。

# 字段 字段名 数据来源 说明
1 手机号 PhoneNum O2O 后台 用户注册手机号
2 用户名 Username O2O 后台 用户在 O2O 注册时的用户名
3 密码 Password O2O 后台 用户名设置的密码
4 用户协议 UserProtocol APP 后台管理 Web 由法务审核后的协议条例
5 隐私政策 PrivateProtocol APP 后台管理 Web 由法务审核后的隐私政策
6 验证码 ValidateCode 第三方短信网关 后台调用短信网关发送至用户手机
7 角色 RoleCode O2O 后台 / APP 后台 店长 / 技工,决定导航与权限 —— 权威来源待确认 TODO(REQ-LGN-011)
8 门店列表 StoreList 马上下单 该账号可访问的门店集合
9 协议同意记录 ProtocolConsent APP Backend 协议版本号 + 同意时间戳

账号登录业务数据

4.1.6 验收标准

  1. 未勾选协议时登录按钮为禁用态,无法提交;
  2. 单门店账号登录后直接进入首页,不出现门店选择步骤;
  3. 多门店账号登录后必须完成门店选择才能进入首页;
  4. 主动登出后,重新启动 APP 不会恢复到已登录状态,且 WebView 中原会话不可复用;
  5. refresh token 失效后,任意业务页面的接口调用都会被统一拦截并跳转登录页,不出现半登录态;
  6. 切换门店后,首页及各业务页展示的数据全部属于新门店,无旧门店数据残留。

附:本模块归拢信息

以下内容从主文件的其它章节归拢而来,便于本模块独立评审。回灌主文件时不处理本分界线以下的部分——主文件的附录仍是全局视图。

附-1 业务数据字典(主文件附录 A.1)

# 数据集 来源 安全 备注
1 第三方验证码 App Backend HTTPS 短信调用第三方短信网关
2 登录成功结果集 App Backend HTTPS 账号密码登录与验证码登录共用
3 用户协议与隐私政策完整内容 App Backend HTTPS 注册/登录前须确认(REQ-NFR-020

登录模块数据集(摘自主文件附录 A.1)。字段级清单见上方 4.1.5

主文件附录 A.9 个人中心第 5 条隐含一条与本模块相关、尚未成文的规则:多设备可同时登录,单设备登出不影响其它设备。这与账号权限管控痛点中「账号共用」的治理诉求存在张力 —— 是否需要单设备登录限制,在 TODO(REQ-LGN-009) 一并确认。

附-2 权限矩阵(主文件附录 B 本模块分行)

图例 完整权限 · 🔸 受限 · ⚙️ 需店长/后台显式授权 · ✗ 无权限 · 待确认

功能 店长 技工 备注 / 待确认
手机验证码 / 账号密码登录
第三方登录(微信/支付宝) 仅见于设计稿 TODO(REQ-LGN-003)
注册 需审核 TODO(REQ-LGN-004)

登录模块权限矩阵(摘自主文件附录 B

适用的全局权限实施规则:接口层强制(REQ-ACC-004);⚙️ 类由店长或后台经人员管理「可用系统」授予(REQ-ACC-005);🔸 项在待确认关闭前,一律按更严格的一侧实现REQ-ACC-006);权限变更后用户下次进入 App 即生效(REQ-ACC-007)。

附-3 待确认项(主文件 10.2.1)

编号 待确认内容 建议决策方
REQ-LGN-001 验证码单日获取上限 安全 / 后端
REQ-LGN-003 微信/支付宝第三方登录是否纳入本期(仅见于设计稿) 产品
REQ-LGN-004 注册表单字段、审核人、审核时效(设计稿有「我要注册」) 产品 / 运营
REQ-LGN-006 密码长度、复杂度、有效期、历史密码不可复用条数 安全
REQ-LGN-007 登录失败锁定阈值与锁定时长 安全
REQ-LGN-009 access / refresh token 有效期 安全 / 后端
REQ-LGN-011 角色(RoleCode)的权威来源是 O2O 后台还是 APP 后台 架构

登录模块待确认项(摘自主文件 10.2.17 条)

附-4 配图清单(主文件附录 C 4.1 节)

说明 文件
1 设计稿-登录页(验证码 / 密码 / 第三方三种登录方式 + 注册入口 + 协议勾选) ../app-design-images/登录.png

登录模块配图清单,1 张(设计稿 1)。说明较主文件附录 C已按实际截图内容补充,主文件附录 C 回灌时应一并更新。

附-5 本次拆分新增发现

本模块未新增编号需求。逐图核看发现的两处缺口均为设计稿状态缺失,已就地记在图下:登录按钮的禁用态未画、密码登录模式与「忘记密码」入口无设计稿。两者都已被现有的验收标准第 1 条REQ-LGN-006 覆盖,补稿即可,无需新增需求编号。