注册可选实体站展示 · PRD
作者 Luke 版本 v1.19 日期 2026-09-11 状态 进行中 平台 BRAND_A & BRAND_B 类 S
版本记录
| 版本 | 日期 | 变更说明 |
|---|---|---|
| v1.19 | 2026-09-11 | Luke 选择 OP-2 方案
A:配置为空或解析后一项不剩时隐藏实体站组件;手机号、OTP、协议均通过后点击
Login / Register,显示 §5
既有的「没有可选实体站」Toast 并留在原页。同步更新 §4 与 AC13,OP-2
结案;本版正式进入评审。 |
| v1.18 | 2026-09-10 | 依 Luke 确认补齐 §3
注册提交时的实体站复核与失败闭环:§5
新增「所选实体站不可用」提示;不存在、已禁用、未在当前品牌配置统一处理;补
AC18~AC21。同批复查修正按钮高亮对 OTP
的描述,补回 §1
既有必填、红星、资料类型与名称溢出规则,以及 §4
配置描述栏与格式坏值;另将空配置的既有呈现差异列为
OP-2。 |
| v1.17 | 2026-09-09 | 新增「原型视觉清单」:BO 无图片或图片占位;Client 登记现行注册页的
Logo 与 Banner 视觉槽位,数量与 Html_Client_v1.29 的
data-visual-id 实作集合对齐。证据为
client:更新4_Regis+Login_注册登录配置化、需求原文第七节的位置不变与
L0 ④
不做顶部轮播图的范围边界。本轮只建立数量契约,不新增图片,不改业务口径。 |
| v1.16 | 2026-09-05 | 🆕 新增 §2.1.7:接口不按状态过滤,禁用中的也照样下发(需求原文
第二节 2.3
逐字「后端不按状态过滤——配置里有的,禁用的也照样下发。这也是现况」)。🔴 这一条先前只是「推得出来」、没写成规格:本档写了「前端不再过滤」(§2.2)、也写了「配置里没有的接口不下发」(§2.1.1),唯独没写「接口对状态不过滤」。 🔴 炸点:开发在后端补一道状态过滤 ⇒ 禁用中的到不了前端 ⇒ G1 当场破,画面回到现在这样、选项数凑不到
5,这个需求等於没做。触发源:外审预筛判 PARTIAL。⚠️ 复验那一层前两轮都判
DONE,是预筛抓到的。⚠️ 既有条文一个字未改,全部是新增;红线、 AC、文案表原样。资讯图表不重出,只把它核到的版本改成
v1.16。 |
| v1.15 | 2026-09-05 | 🔴 §3.4.9 整段改写 + §3.4 B
段「验证码已过期」那一列的触发条件跟着改。 改前写「填的验证码本身对得上,但已超过有效期」,那个写法比实况窄:它漏了「没按过 Send」那一半,也没讲冷却与有效期是同一件事。🔴 实况: Send
的冷却时间与验证码的有效期是同一个计时器,画面上没有倒计时。⇒
「已过期」的判定只有一种:没按过
Send,或那个计时器已经跑完,两件事同一个结果。🔴 同批写明顺序:先判过期、再判对错 —— 计时器跑完之后后端那一组已经作废,「对不对」无从判起。 🔴 同批写明一个反面做法:不要把冷却与有效期拆成两个时间。拆开会出现「还在冷却、但验证码已过期」这种中间状态,本平台没有那个状态;而玩家看到的提示语只有一句,对不上就成了查不出来的偶发问题。 触发源:Luke 2026-09-05 当场说明(我在原型里拿一个约定码演这一条,他纠正「重点不是那个数字」)。 ⚠️ 规格口径其余部分未改;文案逐字、 AC、四条红线、§2
各条原样。原型 v1.28
同批跟上。资讯图表不重出,只把它核到的版本改成 v1.15。 |
| v1.14 | 2026-09-05 | 🔴 §1 实现导航表两格改写,与
v1.13 同一类 —— 摘要写着旧口径 /
说过头,正文不是那样:① 「渲染下拉」那一格写「这是本需求的全部内容」,而 L0 ④「本期做」列的是好几件(默认选中、按钮条件、坏 ID、重复 ID)。改成「核心那一件」并指回 L0 ④。 ② 「按钮能不能按」那一格写「不加的话…按下去没反应」。原意是描述不做这个需求会怎样,但与 §2.5.3/ AC16「点得下去、点了出
Toast」并排读会被当成打架。改成把「不加」与「加了之後」两种情形分开写。③ §4 表格底下那一句「§3.2 那两条是唯一的后端改动」与表格里那一格逐字重复,删掉那一句;结论留在表格那一格里,一个字未减。 触发源: v1.13
定稿前逐行通读(CLAUDE.md §五)。不是外审抓的
—— 外审两轮抓的是 L0,这两处在 §1。⚠️ 规格口径一条未改,改的是导航表的措辞; v1.10~v1.13
那几批改动全部原样。资讯图表不重出,只把它核到的版本改成
v1.14。 |
| v1.13 | 2026-09-05 | 🔴 L0 ④
两格改写,都是「摘要还写着旧口径、正文早就改了」。 ① 「只新增一句文案」那一格:末句原写「未选实体站走既有的『必填未填就把按钮关掉』」,而 §2.5.3 与 AC16
写的是「按钮视觉置灰、但点得下去,点了出
Toast」——正面对撞。那句是 需求原文 5.5
的旧口径,本档 v1.2(2026-08-28)就推翻了,L0 没跟着改。⇒
改写成指向 §2.5.3 / AC16,并写明 B
段那 6 条是既有、不重做。② 「不改注册流程的其他任何一段」那一格:「全部照旧」补成「行为全部照旧」,并写明「照旧」管的是行为、不是这份档的字(§3.4 B 段依线上截图更正过文案逐字)。 🔴 炸点:开发只读 L0 就实作,会把按钮做成 disabled —— disabled 不派发点击事件 ⇒
AC16 那句 Toast
永远出不来,而画面看起来完全正常。这与
C-031 是同一个洞的另一处。触发源: v1.12
送外审,这一条被判 PARTIAL。⚠️ 规格口径一条未改,改的是 L0 摘要的措辞; v1.10~v1.12
那几批改动全部原样。资讯图表不重出,只把它核到的版本改成
v1.13。 |
| v1.12 | 2026-09-05 | 🔴 L0 ①
那句「本需求只改前端…后端不动」改写。原写法是无条件的,而同一节「本期做」第
4 点写着「配置里查不到的实体站 ID
怎么处置(这一项在后端)」、§4
也写着「唯一的后端改动是 §3.2
那两条防呆」——同一份档里三处对不上。 ⇒ 那一句收窄成「显示这条链路只改前端」,底下补一句写明 §3.2 那两条防呆在后端、是本需求唯一的后端改动、可以单独排期。 🔴 炸点:开发只读 L0 就排期,会把那两条防呆整个漏掉 —— 而它们是「坏 ID 不会自己消失」的唯一防线(§3.2)。 触发源: v1.11
送外审,这一条被判 PARTIAL。⚠️ 规格口径一条未改,改的是 L0 那句话的射程; v1.11 补的那 7 件与 v1.10
的文案改动全部原样。资讯图表不重出,只把它核到的版本改成
v1.12。 |
| v1.11 | 2026-09-05 | 补上 需求原文 有、这份档一直没落规格的几件,全部照
需求原文 逐条对齐,没有一件是新发明的:① 新增 §2.1.6:位置不变——实体站下拉排在 OTP 验证码 之后、Login / Register
按钮之前,页面其他元素的相对顺序一并不变(需求原文 第七节第
1 点)。② §2.2.4 补上数据类型 Enum;新增 §2.2.5:必填的红星 * 显示在 label
文字前,沿用注册页其他必填栏位的既有做法(需求原文
5.4、第七节第 2 点)。③ 新增 §3.1.3:全部禁用时收起态那行字不是选中值——此时没有任何一项被选中,不进提交、也不满足 §2.5 的实体站条件( 需求原文
5.3)。先前只写了「显示第一项的名字」,没写死「那不等于选中」,读起来像已经有默认值了。④ L0 ④ 新增一列:不做实体站的新增、改名、改 ID、删除( 需求原文 第三节第 6 点)。先前只写「不改
实体站管理」,没把这四件列出来。⑤ L0 ④「不改注册提交时的后端复核」那一列改写成**「不重做」,并写明那道校验现在就已经有了( 需求原文
第三节第 3 点逐字「本次不重做、也不许顺手拿掉」)。原写法与 §4「后端唯一改动」并排读会像是自相矛盾。⑥ L0 ④ 报表那一列的「十余张」改成 13 张(需求原文 第三节第 12
点的实数),并补上「一条都不过滤」。⑦ §4「后端要不要动」那一格由「不用」改成「显示这条链路不用动」**,并把「唯一的后端改动是 §3.2 那两条防呆」收进同一格。 触发源: v1.10
送外审预筛。⚠️ 四条红线、 AC 全表、§3.4 文案表与 §2.5
各条未改;v1.10
那一批文案改动原样保留。资讯图表不重出,只把它核到的版本改成
v1.11。 |
| v1.10 | 2026-09-05 | 🔴 §3.4 B 段三件事,全部依 Luke
2026-09-05 当日裁定「照截图」: ① 手机号格式错误那一句照线上截图逐字更正(改前 The phone number format is incorrect),差异逐项见 §3.4.7。② 补两条既有提示语:协议勾选框未勾( Please agree to the privacy policy)与验证码已过期(Expired verification code,please resent.)。这两句同批收进平台通用文案库
⇒ 本档标 ↪,中英两句逐字照抄。③ Verification code sent successfully 补标
↪——它 2026-08-31
就进了平台通用文案库,本档从那时起一直漏标。🔴 ② 推翻了本档三处既有条文:§2.5.2、§2.5.4 与 AC17 都写着「协议没勾一律不出
Toast、静默置灰」,而线上实况是出这一句。三处同批把「协议」从静默名单里拆出来,手机号
/ OTP 两项维持静默。⚠️ 这不是本需求新做的行为——是本档先前把平台既有行为写错了,本轮更正。同一类错 §3.4.5 已经犯过一次(把线上跑着的文案判成「拟稿、未实现」)。 🆕 新增 §3.4.7(手机号那句的逐字差异)、§3.4.8(协议那句的射程)、§3.4.9(过期与填错是两句、各管各的)。 ⚠️ 四条红线、 AC 条数、§2 其余各条与 §3
其余各节未改;AC17
只改「协议」那一项的字。资讯图表不重出(图上没有任何一句提示语的原文),只把它核到的版本改成
v1.10。 |
| v1.9 | 2026-09-04 | L0 ④「明确不做」表新增两列,都是
需求原文 有、这份档从 v1.0 到
v1.8 一直没落的:① 不做顶部轮播图( 需求原文 第三节第 9
点逐字「不做顶部轮播图。那是另一个需求」)。② 不反查「这个实体站正被哪个平台配着」( 需求原文
第三节第 11 点:实体站管理
禁用时不检查、不提醒,既有解耦设计)。§3.1.1
原本只写「刻意解耦」,没把这条边界写成「不做」。触发源:外审。 ⚠️ 规格口径其余部分未改,四条红线、17 条 AC、§3.4 文案表、§2 全节原样。 |
| v1.8 | 2026-09-04 | 新增 §3.4.6:写明 B
段「验证码错误」那一条的触发条件在本页只有一半触发得到。 触发源:原型送外审,被判 CONTRADICTED —— §3.4 B
段写触发条件是「验证码不足 6 位或错误」,而 §2.5.4 与 AC17 写死「OTP 未满足时一律不出
Toast」。这两条在本档内部自相矛盾,原型照 §2.5.4 做(未满 6
位静默),於是与 §3.4 对不上。处置:B 段那四条是「沿用既有、一个字都不改」(§3.4 导语),所以不动它的字,改用一条新段落写明射程。 同批拿掉 §3.4.5 行首那个 🆕
前缀:它挡在四级编号前面,编号连续性的检查看不到那一条(新增
3.4.6 才让这个洞现形)。那一段的字一个都没动。⚠️ 其余既有条文一个字未改,只有新增;原型不必改。 |
| v1.7 | 2026-09-04 | 再补两件 需求原文 有、这份档没落规格的:① 新增 §2.1.5:这条配置的实体站 ID 用英文逗号分隔( 需求原文 第二节
5、以及第一节第 2 点)。先前只在 §2.3.1 举了
2,3,1
这个例,没有把分隔符本身写成规格——照例子推得出来,但开发不该靠推。② L0 ④ 明确不做表新增一列:不做「绑定后可编辑」,玩家选定的实体站整个生命周期不可编辑( 需求原文
第一节第 1 点、第七节)。⚠️ 同批更正 v1.6
版本记录里一句不实的话:v1.6
写「既有条文一个字未改」,那是错的——§4「后端要不要动」那一格加了一个指向 §2.2.4
的交叉引用。那一格的结论没变,但确实动了字。 |
| v1.6 | 2026-09-04 | 补上 需求原文 有、这份档一直没落规格的四件,全部照
需求原文 逐条对齐,没有一件是新发明的:① 新增 §2.1.4: 注册可选实体站列表
两个品牌各填各的、不共用一份(需求原文 1.3)。② 新增 §2.2.4:接口每一项带 id/name/status,status
值域 1 = 启用、0 =
禁用(需求原文 第二节 2、3 点)。③ 新增 §3.2.4:配置描述栏放 ID 与名称对照表,沿用既有、不新增维护要求( 需求原文
第六节)。④ L0 ④ 明确不做表新增一列:不新增后台权限点( 需求原文
第八节)。🔴 需求原文 第九节的「时间基准
UTC+8」刻意不写进本档:平台是单一时区,时区换算与时区防呆一律不必写;而本需求也没有任何按时间判定的行为。触发源: v1.5
送外审,这几件被判 MISSING /
PARTIAL。再上一轮外审把它们并成两列判了
DONE,那是漏判——逐条 grep 过
v1.5,一件都查不到。⚠️ 既有条文一个字未改,全部是新增;红线、AC、文案表原样。 |
| v1.5 | 2026-09-04 | §2.5 的引言补上「本条同时推翻
需求原文 5.5」,并指向
C-031。触发源:本档送外审, 需求原文 5.5
逐字写「任一条不满足,按钮置灰禁用」,与 §2.5.3
正面对撞。这份档没写错——v1.2(2026-08-28)已经改过了;洞在两份档互相指不到对方:开发照
需求原文 做成 disabled,disabled
不派发点击事件 ⇒ AC16 那句 Toast
永远出不来,而画面看起来完全正常。⚠️ 规格口径一个字未改,加的只是一条指标; 需求原文 5.5
同批加了推翻注记、原句保留。⚠️ 资讯图表不重出( ruling:R-192):图上关於按钮的两处本来就写着改後的行为,脚本只把
SPEC_UPTO 改成 v1.5。 |
| v1.4 | 2026-09-02 | 🔴 §3.4 B 段「验证码错误」照线上截图逐字更正(Luke
2026-09-02
逐字「照截图」):Incorrect verification code, please resend
→
Incorrect verification code,please resent.,差三处(逗号后空格
/ resend vs resent / 结尾句点)。🆕 新增 3.4.5 写明差异、出处与「两句各管各的流程」。⚠️ 同批推翻一句先前的判断:先前内部曾判这句是「拟稿、未实现」,那是错的——它真的在线上跑。 C-028
同日结清。⚠️ 中文对照维持原样(截图只给英文);原型 icon 由 📐 改
✅。规格口径一条未改。 |
| v1.3 | 2026-08-28 | 文案表拆成两段(§3.4):本次新增 1
条 + 沿用既有 4
条(原型要画,故列出,本次一个字都不改);AC16
补「其余三项未满足时一句 Toast 都不出」的反例,新增
AC17。资讯图表改引上传后的网址。 |
| v1.2 | 2026-08-28 | 一项都选不中时:下拉收起改为显示第一项的名字并置灰(原为显示那句文案),那句文案改为按主按钮时以
Toast 呈现(§3.4);Login / Register
由「置灰禁用」改为**「置灰但点得下去」**(§2.5)——🔴 这一条推翻平台通用 UI
规则,射程只限「没选到启用中的实体站」这一项。AC6
改写、新增 AC16。 |
| v1.1 | 2026-08-28 | 全部禁用时改为照配置顺序显示全部,并新增一句「一项都选不中」的文案(🆕
§3.4);AC6 扩为含这两件;§2.4.3、§2.5.2、§3.1、L0 ④
四处随之改写(原写「不新增提示语」已不成立)。待确认 2 → 1
项(OP-2 结案)。 |
| v1.0 | 2026-08-28 | 初版。注册页实体站下拉由「过滤掉禁用的」改为「显示依配置、可选依状态」(§2);默认选中改为第一个启用中的(§2.4);注册按钮高亮条件加一项(§2.5);补配置里查不到 ID 与重复 ID 的处置(§3.2、§3.3)。红线 4 条 / 验收 15 条 / 待确认 2 项。 |
目录
L0 · 框架层

① 一句话需求
注册页实体站下拉的两个判断必须分开:
| 规则 | |
|---|---|
| 显示范围 | 由各品牌的 注册可选实体站列表 决定 |
| 是否可选 | 由 实体站管理 的启用/禁用状态决定 |
现行前端会过滤禁用实体站。本次取消过滤:配置中的禁用站仍显示,但置灰且不可选。PAGCOR 因此能在下拉看到至少 5 个实体站;尚未完成实地审查的站先显示,审查完成前不可选。
② 术语写死表
| 词 | 本文唯一含义 |
|---|---|
| 显示 | 这一项出现在下拉中,由 注册可选实体站列表 决定 |
| 可选 | 这一项能否被选中,由 实体站管理 的状态决定 |
| 置灰 | 看得见,但点不下去、不会成为选中值 |
③ 全局红线表
| # | 不变量 | 破了会怎样 | 验证 |
|---|---|---|---|
| G1 | 配置里有的实体站全部显示,禁用中的也不许过滤 | 选项又只剩已启用站,无法满足监管展示要求 | AC1 AC2 |
| G2 | 提交的实体站必须存在、已启用,且仍在当前品牌配置中;前后端都不得绕过 | 玩家可能绑定不可用或未开放的实体站 | AC3 AC9 AC18
AC19 |
| G3 | 默认值只能是第一个启用中的实体站 | 页面会预选一个无法提交的值 | AC5 AC6 |
| G4 | 显示顺序严格按照配置顺序,禁用项留在原位 | 运营失去唯一的排序控制手段 | AC7 AC8 |
④ 范围
本期做
- 注册页与推广注册页不再过滤禁用实体站(§1、§2)。
- 启用项可选;禁用项置灰且不可选(§2、
G2)。 - 默认选中第一个启用项,并调整注册按钮条件(§2、§3)。
- 后台保存配置时拒绝不存在的 ID;运行时遇到坏 ID 只跳过该项(§4)。
- 重复 ID 去重并保留第一次出现的位置(§4、
AC10)。 - 注册提交时复核实体站,并补齐失败后的前端处理与提示(§3、
AC9)。
本期不做
- 不改取列表接口、
实体站管理、后台建号页(添加下级号、增加股东)与默认实体站配置。 - 不改实体站的新增、改名、ID、删除规则,也不开放玩家重新绑定。
- 不改注册流程的 OTP、KYC、NDRP、人工审核等既有行为;§3 只补齐既有实体站提交复核的输入条件与失败出口。
- 不影响已绑定玩家;13 张报表与
用户注册日志仍可显示、筛选已禁用实体站。 - 不新增权限点、不做顶部轮播图、不反查某实体站被哪些品牌配置。
- 「至少显示 5 个」由运营配置保证,系统不写死最小数量,也不负责自动补值。
- 除 §5 的两条实体站提示外,不新增或改写其他文案。
L1 · 完整规格
1. 数据来源与作用域
1.1 配置位置:Backoffice ▸ 网站管理 ▸ 基本配置 ▸ 运营参数 ▸ 注册可选实体站列表。BRAND_A
与 BRAND_B 各自维护一份,实体站 ID
以半角逗号分隔,顺序就是前端显示顺序。
1.2 实体站的 ID、名称与状态以
运营管理 ▸ 实体站管理
为唯一来源。注册侧不保存本地清单、不维护 ID 与名称映射。
1.3 取列表接口继续回传配置中的全部实体站,禁用中的也回传。每项包含:
| 字段 | 规则 |
|---|---|
id |
实体站 ID |
name |
显示名称 |
status |
1=启用,0=禁用 |
接口结构不变;后端不得按状态过滤。
1.4 规则同时适用于注册登录页与推广注册页。实体站下拉仍位于
OTP 之后、Login / Register 之前。
1.5 既有显示不变:实体站为必填的
Enum,取值来自接口,红星在 label 前;收起态名称过长显示
…,展开态自动换行显示全名。
2. 显示、可选与顺序
| 条件 | 是否显示 | 是否可选 |
|---|---|---|
| ID 在配置中,状态启用 | 显示 | 可选 |
| ID 在配置中,状态禁用 | 显示并置灰 | 不可选 |
| ID 不在配置中 | 不显示 | 不适用 |
2.1 前端不得按状态过滤或改写接口回传的实体站名称。
2.2 顺序严格按照配置字符串。禁用项留在原位置,不置顶、不下沉、不另行排序。
2.3 默认选中配置顺序中第一个启用项。没有启用项时,不产生选中值。收起态仍显示第一项名称并使用置灰样式;该名称不得进入提交资料。
3. 注册按钮
3.1 按钮高亮必须同时满足:手机号格式通过、OTP 已填满 6 位、协议已勾选、已选中一个启用中的实体站。OTP 是否过期或正确,在点击后依 §3.2 判定。
3.2 任一条件不满足时,按钮使用置灰样式,但不可直接设为无法接收点击事件;点击后的判定顺序为:
手机号 → OTP → 协议 → 实体站
| 判定 | 结果 |
|---|---|
| 手机号未满足 | 静默拦截 |
| OTP 不足 6 位 | 静默拦截 |
OTP 已满 6 位,但没按过 Send 或计时器已结束 |
显示 §5 的「验证码已过期」 |
| OTP 已满 6 位、计时器有效,但与后端记录不符 | 显示 §5 的「验证码错误」 |
| 协议未勾选 | 显示 §5 的「协议未勾选」 |
| 未选中启用实体站 | 显示 §5 的「没有可选实体站」 |
命中后立即停止,不继续检查后面的项目。OTP 先判过期,再判内容是否正确;冷却时间与有效期使用同一个计时器。
3.3 四项均通过后才发起注册。后端以提交当下的资料复核实体站 ID,必须同时满足:
- ID 存在。
- 状态为启用。
- ID 仍在当前品牌的
注册可选实体站列表中。
任一项不满足,统一返回「实体站不可用」。不得向前端区分不存在、已禁用或未配置。整笔注册失败,不建立账号,也不写入实体站绑定。
3.4 前端收到「实体站不可用」后:留在注册页,保留手机号、OTP 与协议状态,清除实体站选择并重新取列表。这次异常刷新不自动选择默认项,玩家必须重新选择。
4. 配置的空值、坏值与重复值
| 情形 | 处置 |
|---|---|
| 配置为空,或解析后一项不剩 | 隐藏实体站组件;前三项通过后点击注册,显示「没有可选实体站」Toast |
| 配置中全部为禁用项 | 全部照顺序显示并置灰;不产生选中值 |
| 配置片段不是纯数字,或使用全形逗号 | 后台保存失败并指出错误片段;运行时只跳过该片段 |
| 后台保存不存在的 ID | 保存失败,并指出问题 ID |
| 运行时遇到不存在的 ID | 只跳过该项,其余照常下发 |
| 同一个 ID 重复出现 | 去重,只保留第一次出现的位置 |
4.1 保存校验与运行时兜底都要保留;一个坏 ID 不得使整份配置失效。
4.2 不另设条数上限或最小数量校验,只受配置字段既有长度限制。PAGCOR 的 5 项按去重后实际显示数量计算。
4.3 后台可保存空配置或全部禁用的配置;运营负责确保至少有一个启用项。
4.4 配置描述栏沿用既有的 ID
与名称对照表;实体站管理
是唯一来源,两边不一致时以它为准。
本节的「运行时」只指配置解析。注册提交时收到的异常 ID 依 §3.3 处理,不得静默跳过后继续注册。
5. 文案
原型出现的提示语必须能在本表找到逐字出处。↪
为平台通用文案,✅ 为本模块线上文案,📐 为本
PRD 拟稿;图标不是文案的一部分。
| 范围 | 场景 | 本页触发条件 | 来源 | 英文文案(上线基准) | 中文对照 | 结果 |
|---|---|---|---|---|---|---|
| 本次新增 | 没有可选实体站 | 前三项通过,但配置为空、解析后一项不剩、没有选中启用项;或提交失败后刷新列表已无启用项 | 📐 | No gaming venue is available at the moment. Please try again later. |
目前暂无可选的实体站,请稍后再试。 | Toast;留在原页 |
| 本次新增 | 所选实体站不可用 | 后端返回「实体站不可用」,刷新后仍有启用项 | 📐 | The selected gaming venue is currently unavailable. Please select another venue. |
所选实体站目前不可用,请重新选择。 | Toast;清除选择并留在原页 |
| 沿用 | 手机号格式错误 | 点击 Send 时不是 09 开头的 11
位纯数字 |
✅ | mobile phone number format is incorrect |
手机号格式不正确 | Toast;留在原页 |
| 沿用 | 验证码发送成功 | 手机号格式通过,Send 成功 |
↪ | Verification code sent successfully |
验证码发送成功 | Toast;开始计时 |
| 沿用 | 验证码错误 | OTP 已满 6 位、计时器有效,但与后端记录不符 | ✅ | Incorrect verification code,please resent. |
验证码有误,请重新发送 | Toast;留在原页 |
| 沿用 | 验证码已过期 | OTP 已满 6 位,但没按过 Send 或计时器已结束 |
↪ | Expired verification code,please resent. |
验证码已过期,请重新发送 | Toast;留在原页 |
| 沿用 | 协议未勾选 | 前两项通过,但协议未勾选,点击 Login / Register |
↪ | Please agree to the privacy policy |
请先同意隐私政策 | Toast;留在原页 |
| 沿用 | 注册成功 | 四项校验通过并完成注册 | ✅ | Registration successful |
注册成功 | Toast;进入登录态首页 |
本需求新增前两条,其余六条不重做。两条实体站提示都不得说明 ID 不存在、已禁用、未配置或尚未通过 PAGCOR 审查。
6. 生效与存量
- 配置或实体站状态保存后,下一次取列表即使用新值;注册侧不缓存。
- 状态变更后,新进入页面的选项同步变为可选或置灰;既有绑定不变。
- 玩家选中后、提交前若配置或状态改变,以提交当下的后端复核结果为准。
- 报表仍可检索已禁用的实体站资料。
7. 待确认项
| # | 待确认 | 影响 | 期限 |
|---|---|---|---|
OP-1 |
禁用项的灰阶、游标与点击回馈 | 不影响业务规则,但 UI 稿确认前无法定稿呈现 | 开发前 |
附录 A:容易漏的验收点
只列反直觉或易漏场景;常规注册流程、版面与通用表单行为不重复列出。
| # | P | 验收点 |
|---|---|---|
| AC1 | P0 | 配置有 5 个 ID,其中 2 个禁用:下拉显示 5 项,不是 3
项(G1) |
| AC2 | P0 | 某站未配置但状态启用:下拉不显示它(G1) |
| AC3 | P0 | 禁用项看得见,但点不下去、选不中(G2) |
| AC5 | P0 | 顺序为「禁用 → 启用 → 启用」:默认选中第二项(G3) |
| AC6 | P0 | 全部禁用:全部照顺序显示并置灰;收起态可显示第一项名称,但没有选中值(G3) |
| AC16 | P0 | 承 AC6,点击
Login / Register:按钮能接收点击并显示 §5 的 Toast |
| AC17 | P0 | 手机号未满足或 OTP 不足 6 位时静默;OTP 过期、OTP 错误与协议未勾分别显示 §5 的既有提示 |
| AC7 | P0 | 配置 2,3,1:下拉顺序也是
2,3,1(G4) |
| AC8 | P0 | 禁用项位于配置中间:画面仍留在中间(G4) |
| AC10 | P1 | 配置 1,1,2:只显示 1,2,1
保留第一次的位置 |
| AC11 | P0 | 运行时遇到一个不存在的 ID:只跳过它,其余正常显示 |
| AC12 | P0 | 后台保存不存在的 ID:保存失败并指出问题 ID |
| AC13 | P1 | 配置为空或解析后一项不剩:隐藏实体站组件;前三项通过后点击注册,显示「没有可选实体站」并留在原页 |
| AC22 | P1 | 配置含非纯数字片段或全形逗号:后台保存失败;存量运行时只跳过错误片段,其余照常显示 |
| AC9 | P0 | 绕过前端提交禁用站 ID:整笔注册失败、不建立账号或绑定;前端依 §3.4 处理(G2) |
| AC18 | P0 | 绕过前端提交不存在的 ID:结果与 AC9 完全相同,不透露 ID
是否存在(G2) |
| AC19 | P0 | 提交存在且启用、但不在当前品牌配置中的 ID:结果与 AC9
完全相同(G2) |
| AC20 | P0 | 选中后、提交前实体站被禁用或移出配置:以后端提交当下状态为准;刷新后仍有启用项时清除选择并显示「所选实体站不可用」 |
| AC21 | P0 | 承 AC20,刷新后已无启用项:显示「没有可选实体站」 |
| AC14 | P0 | 已绑定实体站后来被禁用:既有绑定与报表检索不受影响 |
| AC15 | P1 | 状态从禁用改启用:下一次取列表立即可选,无注册侧缓存 |
附录 B:原型视觉清单(默认折叠)
原型视觉清单
| 视觉 ID | 载体 | 用途 | 证据 |
|---|---|---|---|
VIS-BO-NONE |
BO | 本需求没有 BO 图片或图片占位 | §4 |
VIS-CLIENT-001 |
Client | 注册页既有 Logo 槽位 | client:更新4_Regis+Login_注册登录配置化 |
VIS-CLIENT-002 |
Client | 注册页既有 Banner 槽位;不是本需求新增 | client:更新4_Regis+Login_注册登录配置化 |
文档版本:v1.19 | 日期: 2026-09-11 | 作者: Luke | 文档状态:进行中
