feat: add party-size queueing and call modes
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
# 景区排队叫号系统 UI/UX 设计范式
|
||||
|
||||
> 文档版本:v1.0
|
||||
> 日期:2026-07-10
|
||||
> 文档版本:v1.1
|
||||
> 日期:2026-07-10;人数与双叫号模式修订:2026-07-15
|
||||
> 状态:已确认开发基线;景区 VI、设备尺寸和现场阅读距离作为后续校准输入,不阻塞开发
|
||||
> 关联规划:[景区项目排队叫号系统:案例调研与完整规划](./scenic-queue-system-plan.md)
|
||||
|
||||
@@ -27,11 +27,11 @@
|
||||
|
||||
已冻结的产品与实现约束:
|
||||
|
||||
- 一人一号,不建立同行组或 `party_size`;手机号必填,姓氏/称谓选填,称谓默认“游客”,不采集法定性别。
|
||||
- 一个号码保存创建后不可修改的 `party_size`;手机号和同行人数必填,姓氏/称谓选填,称谓默认“游客”,不采集法定性别。
|
||||
- 同一手机号可有多个活动号码;取号时先显示脱敏重复提示,员工确认后可继续并记录审计。
|
||||
- 每项目配置固定 `N`,员工只执行“叫下一批”;系统严格 FIFO 呼叫队首连续 `N` 个有效等待号码,不足时呼叫全部剩余号码。
|
||||
- 每项目配置按号码、按人数或两种叫号方式;号码模式取队首 N 张,人数模式取不超过目标的最长连续队首,不拆号、不跳号。
|
||||
- 过号后原号失效;仍需排队时创建新号进入队尾,并保留新旧号码关联。
|
||||
- 预计等待时间首期同时提供固定批次和连续放行模板,每个项目二选一。
|
||||
- 预计等待时间按本号前方实际人数与项目单人间隔计算,不包含本号自身人数。
|
||||
- 中心服务是唯一写入权威,断网时停止数字化取号/叫号并切换人工预案。
|
||||
- 员工和管理员首期使用内置账号密码;前端 React,后端 Go + GORM,数据库 PostgreSQL。
|
||||
- 首期硬件只提供统一接口、成功/失败模拟器和测试日志,不接真实设备。
|
||||
@@ -68,8 +68,8 @@
|
||||
|
||||
本文约束以下界面:
|
||||
|
||||
- 员工 H5:员工账号登录后只保留“叫号、取号”。叫号页展示当前批次、队首预览和固定主操作;每次叫下一批自动结束上一批;取号页核对等待队列;
|
||||
- 游客 H5:[MVP] 个人排队状态、预计等待区间、提醒、过号和服务异常;[P1] 游客自助取号;
|
||||
- 员工 H5:员工账号登录后只保留“叫号、取号”。叫号页按项目显示号码栏、人数栏或两栏,并在每个队列号码旁显示人数;每次叫号自动结束上一批;
|
||||
- 游客 H5:[MVP] 游客自助取号、个人排队状态、本号人数、前方人数、预计等待、提醒和服务异常;
|
||||
- 大屏 Web:实体公示屏展示当前叫号、最近批次、队列概况、服务公告、数据新鲜度和播报状态;
|
||||
- 管理 Web:管理员账号登录后的运营概览、项目与预计时间设置及大屏中心。大屏中心呈现全项目公开运行状态并支持全屏监控;设备、账号权限、日志和审计按后续范围扩展。
|
||||
|
||||
@@ -103,13 +103,13 @@
|
||||
|---|---|---|
|
||||
| Visitor Status Ticket | Qmatic Mobile Ticket 和 Waitwhile 状态页都把当前状态、票号、预计等待时间、队列进度和下一步作为个人页主层级 | 游客端采用单一主状态卡;叫到后由“等待信息”切换为“入口行动” |
|
||||
| Operational Call Card | Qmatic Serve 以当前服务对象/下一位和主叫号操作为中心;Waitwhile 采用状态列 + 详情抽屉 + 固定操作 | 员工 H5 把叫号、取号和核验拆为三个场景;叫号页使用当前批次、下批候选和固定底部主操作,不做缩小版后台表格 |
|
||||
| Batch Action Bar | Waitwhile 公开支持多选后批量 Serve、Alert、No Show 等 | 借鉴批量汇总,但本项目由服务端按固定 `N` 选择队首连续号码,并增加原子批次和模拟硬件结果语义 |
|
||||
| Batch Action Bar | Waitwhile 公开支持多选后批量 Serve、Alert、No Show 等 | 借鉴批量汇总,但本项目由服务端按号码数或人数目标选择队首连续前缀,并增加原子批次和模拟硬件结果语义 |
|
||||
| Call Takeover | Qmatic/Waitwhile 公示屏均让最新叫号成为主区域,并保留最近历史 | 大屏最新批次持续占主视觉,最近 3–5 批作为防漏读历史,不用瞬时 toast |
|
||||
| Live Ops Strip | Waitwhile Analytics 与 Qmatic Operations/BI 区分实时运营和历史分析 | 管理端实时页只放可驱动当下动作的队列/设备异常,历史趋势另页分析 |
|
||||
| Offline Trust Banner | Wavetec 的低连接指导强调显式离线、待同步/失败和设备健康 | 中心服务是唯一写入权威;所有端显示数据新鲜度,离线时停写且禁止伪实时 |
|
||||
| Hardware Receipt Tray | Qmatic/Wavetec 可核验多硬件闭环,但未公开完整局部失败 UI | 本项目自定义“业务结果 + 各通道 ACK + 单通道重试”模式 |
|
||||
|
||||
公开资料边界同样重要:Waitwhile 可核验批量操作,但不能证明固定 `N` 队首选号、事务原子性、并发冲突或硬件 ACK;Qmatic 可核验单票叫号、转移、过号和多硬件,但未公开多人原子批量叫号;Wavetec 可核验硬件/低连接能力,未公开本项目所需的完整部分失败界面。因此这些能力必须按本文自有模式设计和 POC,不能用厂商营销图替代验收。
|
||||
公开资料边界同样重要:Waitwhile 可核验批量操作,但不能证明本项目的连续 FIFO 人数选择、事务原子性、并发冲突或硬件 ACK;Qmatic 可核验单票叫号、转移、过号和多硬件,但未公开多人原子批量叫号;Wavetec 可核验硬件/低连接能力,未公开本项目所需的完整部分失败界面。因此这些能力必须按本文自有模式设计和 POC,不能用厂商营销图替代验收。
|
||||
|
||||
设计类本机 skill 的采用边界:
|
||||
|
||||
@@ -493,8 +493,8 @@ MVP 只设计以上四种状态。[P1] 确有现场需求时,再拆分“仅
|
||||
### 12.1 核心原则
|
||||
|
||||
- `CallBatch` 是一个原子业务对象,不是前端循环调用单号按钮;
|
||||
- 一人一号,每张有效等待票计为一人;同时显示项目固定 `N` 与本批实际号码数量;
|
||||
- MVP 严格 FIFO、不跳号、不手选;队列不足 `N` 时叫出全部剩余号码;
|
||||
- 每张有效等待票同时显示号码与 `party_size`;批次汇总分别显示实际号码数和实际人数;
|
||||
- MVP 严格 FIFO、不跳号、不手选、不拆号;人数模式允许因下一个号码放不下而低于目标值;
|
||||
- 批次内所有票号同时出现,禁止逐号揭示、stagger、翻牌或滚动数字;
|
||||
- UI 不使用乐观成功;按钮立即响应,但只能在服务端事务成功后写“已生效”。
|
||||
|
||||
@@ -503,10 +503,10 @@ MVP 只设计以上四种状态。[P1] 确有现场需求时,再拆分“仅
|
||||
稳定结构:
|
||||
|
||||
1. 顶部:项目状态、资源/入口、数据更新时间;
|
||||
2. 中部:下一批候选号码,显示票号、等待时长和特殊标记;
|
||||
3. 批量条:项目固定 `N`、本批实际号码数和队列剩余数,但不只靠颜色;
|
||||
2. 中部:下一批候选号码,显示票号、同行人数、等待时长和特殊标记;
|
||||
3. 操作区:按项目显示号码栏、人数栏或两栏,各栏展示默认值和防误触上限;
|
||||
4. 批次预览:系统自动选出的队首连续号码;员工不能在日常流程修改成员;
|
||||
5. 底部固定操作区:唯一主按钮“叫下一批(5 个号码)”;
|
||||
5. 提交结果明确显示“X 个号码 · Y 人”,不把目标值冒充实际人数;
|
||||
6. 提交后:业务结果和各设备回执在原位置持续展示。
|
||||
|
||||
### 12.3 确认策略
|
||||
@@ -519,7 +519,7 @@ MVP 只设计以上四种状态。[P1] 确有现场需求时,再拆分“仅
|
||||
|
||||
风险批次 [P1]:
|
||||
|
||||
- 临时修改 `N`、越过 FIFO、手工选人、撤回/重排时弹确认;
|
||||
- 越过 FIFO、手工选人、撤回/重排时弹确认;正常输入由各模式的防误触上限保护;
|
||||
- 弹层必须说明影响对象、人数、原因字段和审计后果;
|
||||
- 危险确认按钮使用具体动词,如“确认跳过并叫号”,不用“确定”。
|
||||
|
||||
@@ -543,19 +543,19 @@ MVP 结果卡只显示“第 18 批已生效:5 个号码”和模拟适配器
|
||||
游客状态页按以下顺序组织:
|
||||
|
||||
1. **项目与当前状态**:明确项目名称,以及排队中、请留意、已叫到、已过号等;
|
||||
2. **我的号码与下一步**:票号、入口/通道、行动指令;
|
||||
2. **我的号码与下一步**:票号、本号人数、入口/通道、行动指令;
|
||||
3. **预计时间**:区间、可信度、更新时间;
|
||||
4. **队列进展**:前方约多少个号码、当前叫号;
|
||||
4. **队列进展**:前方号码数、前方实际人数、当前叫号;
|
||||
5. **帮助与规则**:迟到、取消、暂停、隐私和联系方式。
|
||||
|
||||
页面不先展示全局统计,不把“景区介绍”放在个人状态之前。
|
||||
|
||||
### 13.2 游客自助取号 [P1]
|
||||
### 13.2 游客自助取号 [MVP]
|
||||
|
||||
MVP 由员工代取号;游客端先交付私密状态页。P1 启用自助取号时,表单使用单列、渐进披露:
|
||||
游客自助取号表单使用单列、渐进披露,并与员工取号共用服务端规则:
|
||||
|
||||
- 先选项目/资源,再填写一人一号所需字段;
|
||||
- 手机号必填;姓氏和称谓选填,称谓未选择时默认“游客”;不展示或采集法定性别字段;
|
||||
- 先选项目/资源,再填写同行人数与联系人字段;
|
||||
- 手机号和同行人数必填;人数预填项目最小值并受项目范围约束;姓氏和称谓选填,不采集法定性别;
|
||||
- 每个字段旁说明用途,隐私说明在提交前可见;
|
||||
- 不用 placeholder 代替 label;
|
||||
- 表单错误在提交后集中摘要,并在字段旁给出相同的具体修正方式;
|
||||
@@ -570,7 +570,7 @@ MVP 由员工代取号;游客端先交付私密状态页。P1 启用自助取
|
||||
- 大号票号:“A123”;
|
||||
- 主预测:“预计 25–35 分钟叫到”;
|
||||
- 可信度/异常:“参考性中 · 14:32 更新”;
|
||||
- 队列位置:“前方约 8 个号码”;
|
||||
- 队列位置:“前方 8 个号码 · 共 21 人”;
|
||||
- 下一步:“可暂时离开,建议在叫号前 X 分钟返回”(X 为项目配置,不在界面写死)。
|
||||
|
||||
预计等待时间:
|
||||
@@ -618,7 +618,7 @@ MVP 由员工代取号;游客端先交付私密状态页。P1 启用自助取
|
||||
- 支持紧凑列表,但每行仍保证 48px 触控目标;
|
||||
- 票号、等待时长、特殊标记位置稳定;
|
||||
- 当前操作对象用边框、背景、勾选和文字同时标识;
|
||||
- 日常叫号由系统按当前项目固定 `N` 自动选择队首连续号码,员工只核对“本批几个号码”;手工多选仅在后续授权异常处理中出现;
|
||||
- 日常叫号由系统按员工选择的号码/人数模式自动选择队首连续前缀;员工同时核对每号人数及本批实际号码数/人数,手工多选仅在后续授权异常处理中出现;
|
||||
- 列表发生实时变化时,保留员工当前选择并显示冲突条,不静默重排;
|
||||
- 高密度不等于小字,正文以 17–18px 为现场起点。
|
||||
|
||||
@@ -765,7 +765,7 @@ MVP 由员工代取号;游客端先交付私密状态页。P1 启用自助取
|
||||
|
||||
### 16.3 项目与预计时间设置
|
||||
|
||||
每个项目使用一张简单表单:项目名称、票号前缀、营业状态、固定批量人数 `N`、宽限时间,以及“连续放行/固定批次”二选一的预计时间模板和对应参数。两种模板都属于首期能力。
|
||||
每个项目使用一张简单表单:项目名称、票号前缀、营业状态、单号最少/最多人数、支持的叫号方式、号码/人数两种方式各自的默认值和防误触上限、宽限时间,以及单人预计间隔时间。单次上限只防误输入,不作为项目总容量上限。
|
||||
|
||||
- 保存后直接生效,并记录修改人、时间和前后值;
|
||||
- 页面显示上一版值,可由有权限的管理员恢复;
|
||||
@@ -1081,7 +1081,7 @@ flowchart LR
|
||||
- 同一手机号可以关联多个活动号码;重复提示只用于防误操作,员工确认后继续并留审计;
|
||||
- 大屏、广播只使用每日可读票号;该票号不能单独查询个人状态;
|
||||
- 姓氏/称谓不公开,首期不提供项目级公开例外;
|
||||
- 未成年人仍使用独立的一人一号排队单,可复用监护人手机号;不在大屏建立儿童身份特征。
|
||||
- 同行人数可包含未成年人,不额外采集组内未成年人的手机号或身份特征;大屏仍只展示票号和聚合人数。
|
||||
|
||||
### 22.3 建议术语
|
||||
|
||||
@@ -1141,8 +1141,9 @@ flowchart LR
|
||||
|
||||
### 24.3 批量叫号
|
||||
|
||||
- [ ] 主按钮显示本批实际号码数量,批次预览同时显示项目固定 `N`;
|
||||
- [ ] 批次预览显示队首连续成员、固定 `N` 和规则来源;
|
||||
- [ ] 操作区只显示项目支持的模式;`BOTH` 项目必须同时显示号码栏与人数栏;
|
||||
- [ ] 批次预览逐号显示 `party_size`,结果同时显示实际号码数和实际人数;
|
||||
- [ ] 人数模式不超过目标、不拆号、不跳号,队首单号超过目标时给出明确错误;
|
||||
- [ ] 并发冲突不静默覆盖;
|
||||
- [ ] 所有批次成员原子出现,无逐号动效;
|
||||
- [ ] MVP 业务成功与模拟适配器成功/失败相互独立;
|
||||
|
||||
Reference in New Issue
Block a user