服务列表 · 标注(11 条)
📊 技术架构
📊 流程
📊 时序
📊 泳道
📊 实体关系
📊 组① 体系结构图
📊 组① 页面跳转图
📊 组① 状态机
单店预约系统 产品需求文档(PRD)
由 DSH 原型工作台基于原型自动生成 · 2026-09-10
1. 文档信息
| 字段 | 内容 |
|---|---|
| 产品名称 | 单店预约系统 |
| 文档类型 | 产品需求文档(PRD) |
| 页面数量 | 12 个(含 1 张体系结构图 / 1 张页面跳转图) |
| 端 | 用户端(手机端)、商家端(后台管理端) |
| 生成时间 | 2026-09-10T03:05 |
版本记录:
| 版本 | 日期 | 修改内容 |
|---|---|---|
| v1.0 | 2026-09-10 | 基于原型自动生成的首版 PRD |
2. 产品概述
产品定位:为单店单老板做一个「手机端预约 + 电脑端工作台」的轻量级预约系统,核心是"让客户快速约上 + 让老板一目了然管单",零支付、零评价、零会员。
目标用户:老板(也是发型师/服务提供者本人):用电脑管单、看档期、看客户偏好、回改约、普通客户:用手机预约、复约、收到短信提醒,到店付钱
用户角色:
- 用户端(手机端)用户,通过用户端完成日常操作与业务处理
- 商家端(后台管理端)用户,通过商家端完成日常操作与业务处理
页面分布:
- 用户端(手机端):服务列表、选时段、确认预约、用户登录、我的预约
- 商家端(后台管理端):今日预约看板、周日历视图、服务管理、商家登录、待确认、客户档案、老客户偏好
- 业务模块:单店预约系统
3. 核心业务流程
状态流转(共 4 个状态 / 5 条迁移):
stateDiagram-v2
s-pending: 待确认 [*]
s-confirmed: 已确认
s-done: 已完成 [*]
s-cancelled: 已取消 [*]
s-pending --> s-confirmed: 商家确认
s-pending --> s-cancelled: 取消/拒单
s-confirmed --> s-done: 到店签到
s-confirmed --> s-cancelled: 客户取消
s-confirmed --> s-pending: 改约重提
迁移明细(状态流转表:某状态下执行某动作后,状态如何变化):
| 当前状态 | 触发动作 | 条件(Guard) | 目标状态 | 说明 |
|---|---|---|---|---|
| 待确认 | 商家确认 | — | 已确认 | 无条件,直接流转 |
| 待确认 | 取消/拒单 | — | 已取消 | 无条件,直接流转 |
| 已确认 | 到店签到 | — | 已完成 | 无条件,直接流转 |
| 已确认 | 客户取消 | — | 已取消 | 无条件,直接流转 |
| 已确认 | 改约重提 | — | 待确认 | 无条件,直接流转 |
读法:「当前状态」下用户执行「触发动作」后,流转到「目标状态」。若「当前状态」与「目标状态」相同(自环),表示该动作不改变状态,仅更新对象内容(如「整理中」时补打卡)。终态(如回忆录已生成、已取消)为流程终点,不再流转。
4. 需求功能清单
按端分组。每个页面描述其核心用途与主要操作;需求细节见「§7 详细方案」。
用户端(手机端)
- 服务列表,优先级 P1:页面围绕「你好,约个服务吧 👋」展开,主体是「全部服务」。 本页有 11 条需求标注(详见 §7.3)。
- 选时段,优先级 P1:用于承载「选时段」相关功能。 本页有 12 条需求标注(详见 §7.4)。
- 确认预约,优先级 P1:页面围绕「服务内容」展开,主体是「到店时间」「指定发型师(不指定也行)」「联系方式」「备注(可选)」;提供文本输入框「输入框」、文本输入框「输入框」、复选框、多行文本输入框。 本页有 14 条需求标注(详见 §7.5)。
- 用户登录,优先级 P1:页面以「某某理发店」为核心;提供文本输入框「请输入手机号」、文本输入框「6 位数字」、「获取验证码」按钮、「登 录」按钮。 本页有 11 条需求标注(详见 §7.9)。
- 我的预约,优先级 P1:提供「改约」按钮、「取消」按钮、「催确认」按钮、「取消」按钮 等操作。 本页有 13 条需求标注(详见 §7.10)。
商家端(后台管理端)
- 今日预约看板,优先级 P1:页面围绕「今日看板」展开,主体是「今日预约」「今日提醒」「今日老客户」;提供「🔍」按钮、「🔔」按钮、「‹」按钮、「›」按钮 等操作。 本页有 14 条需求标注(详见 §7.6)。
- 周日历视图,优先级 P1:页面以「本周预约」为核心;提供「‹」按钮、「›」按钮、「📥 导出」按钮、「📋 今日看板」按钮。 本页有 13 条需求标注(详见 §7.7)。
- 服务管理,优先级 P1:页面以「服务管理」为核心;提供文本输入框「如:男士精剪 / 染发 / 头皮 SPA」、数字输入框、数字输入框、文本输入框「一句话说明,让客户更好选」 等操作。 本页有 13 条需求标注(详见 §7.8)。
- 商家登录,优先级 P1:页面以「欢迎回来 👋」为核心;提供文本输入框「老板用户名 / 手机号」、「请输入密码」控件、复选框、「登 录」按钮。 本页有 10 条需求标注(详见 §7.11)。
- 待确认,优先级 P1:页面以「待确认」为核心;提供「🔄 刷新」按钮、「📨 一键群发短信催确认」按钮、「查看详情」按钮、「📞 联系」按钮 等操作。 本页有 11 条需求标注(详见 §7.12)。
- 客户档案,优先级 P1:页面以「客户档案」为核心;提供文本输入框「搜索姓名 / 手机号 / 备注」、「📥 导出」按钮、「+ 新增客户」按钮、「📞 联系」按钮 等操作。 本页有 13 条需求标注(详见 §7.13)。
- 老客户偏好,优先级 P1:页面围绕「老客户偏好」展开,主体是「偏好标签 · 点击筛选客户」;提供复选框、复选框、复选框、复选框 等操作。 本页有 12 条需求标注(详见 §7.14)。
5. 体系结构(业务功能模块)
- 单店预约系统:给单店老板用的轻量级预约系统:客户手机约,老板电脑管,到店付。零支付/零评价/零会员。
- 用户端:H5 移动端,扫码/微信内打开;客户选服务/选时段/复约。(关联页面:服务列表、选时段、确认预约、用户登录、我的预约)
- 客户登录:手机号+短信验证码;新用户自动建档,老客户命中手机号即识别偏好。(关联页面:用户登录)
- 登录页:手机号+验证码;老客户识别直接进入。(关联页面:用户登录)
- 预约下单:选服务→选日期/时段→选发型师→确认;含手机号预填与偏好提示。(关联页面:服务列表、选时段、确认预约)
- 服务列表:5 项服务卡+快捷复约条;到店付提示。(关联页面:服务列表)
- 选时段:8 天日期横滑+按早午晚分组时段格;已满/已有人约状态可视化。(关联页面:选时段)
- 确认预约:服务/时间/师傅/手机号/备注 5 段表单;老客户预填。(关联页面:确认预约)
- 我的预约:待服务/已完成/已取消三 Tab;改约/取消/再约;本次偏好自动保存。(关联页面:我的预约)
- 预约列表:待服务/已完成/已取消 3 Tab;改约/取消/再约。(关联页面:我的预约)
- 一键复约:老客户按上次服务+师傅+时段直接再约,跳过选服务流程。
- 快速复约条:服务列表顶部条+我的预约顶部条,按上次再约一次。(关联页面:服务列表、我的预约)
- 商家端:PC Web 后台,老板一人用;看板/管单/管客户/管服务。(关联页面:今日预约看板、周日历视图、服务管理、商家登录、待确认、客户档案、老客户偏好)
- 商家登录:老板账号+密码登录,7 天免登录;全店唯一账号。(关联页面:商家登录)
- 登录页:老板账号+密码,7 天免登录。(关联页面:商家登录)
- 预约看板:今日看板(12 单/已确认/待确认)+周历视图(按服务类型染色)。(关联页面:今日预约看板、周日历视图)
- 今日看板:概览 4 卡+今日预约+提醒+老客户列表。(关联页面:今日预约看板)
- 周日历:周一到周日×9 22 时段;事件按服务类型染色。(关联页面:周日历视图)
- 待确认:跨日全局待确认池;超时自动催;一键群发短信;拒单留痕。(关联页面:待确认)
- 待确认池:跨日待确认;超时红色提示;一键催确认。(关联页面:待确认)
- 客户档案:客户列表+详情;偏好标签、累计消费、预约历史;一键发短信/帮他约。(关联页面:客户档案)
- 客户列表:VIP/新客/30 天未到店筛选;搜索姓名/手机号。(关联页面:客户档案)
- 客户详情:偏好标签+累计消费+预约历史时间线。(关联页面:客户档案)
- 老客户偏好:按标签筛客户群;一键群发;针对 30 天未到店/VIP/本周可激活等群组。(关联页面:老客户偏好)
- 偏好客户群:标签云筛选+客户群卡片+一键群发。(关联页面:老客户偏好)
- 服务配置:服务项增/删/改/停用、时长、价格、图标;停用后客户端不再显示。(关联页面:服务管理)
- 服务管理:顶部快速新建表单+下方表格+启停用开关。(关联页面:服务管理)
数据关系:
- 预约下单 →(需登录后下单) 客户登录
- 预约下单 →(提交订单) 待确认
- 一键复约 →(复用历史) 我的预约
- 一键复约 →(跳过选服务) 预约下单
- 预约看板 →(汇总待确认) 待确认
- 待确认 →(确认后入看板) 预约看板
- 客户档案 →(偏好聚合) 老客户偏好
- 老客户偏好 →(客户群来源) 客户档案
- 客户档案 →(帮他约) 预约看板
- 服务配置 →(发布服务项) 预约下单
- 预约看板 →(读档案) 客户档案
- 预约看板 →(读服务) 服务配置
- 确认预约 →(提交待确认) 待确认
- 服务列表 →(复约成功) 预约列表
- 预约列表 →(复约来源) 服务列表
- 快速复约条 →(直接下单) 确认预约
- 今日看板 →(今日待办) 待确认池
- 周日历 →(切回今日) 今日看板
- 客户列表 →(看档案) 客户详情
- 客户详情 →(进客户群) 偏好客户群
- 偏好客户群 →(查档案) 客户详情
- 待确认池 →(确认后入看板) 今日看板
- 服务列表 →(进选时段) 选时段
- 选时段 →(进确认) 确认预约
- 今日看板 →(看周视图) 周日历
- 周日历 →(看今日) 今日看板
6. 数据模型
客户(Customer)
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| id | 主键 ID | 是 | ID |
| phone | string | 是 | 手机号(UK) |
| name | string | 否 | 姓名 |
| gender | string | 否 | 性别 |
| vipLevel | 数字 | 否 | VIP 等级 0/1/2 |
| totalVisits | 数字 | 否 | 累计到店次数 |
| totalSpent | 数字 | 否 | 累计消费(元) |
| lastVisitAt | 日期时间 | 否 | 上次到店时间 |
| remark | 长文本 | 否 | 备注 |
| createdAt | 日期时间 | 是 | 注册时间 |
发型师/员工(Staff)
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| id | 主键 ID | 是 | ID |
| name | string | 是 | 姓名 |
| level | string | 否 | 等级 |
| years | 数字 | 否 | 从业年数 |
| enabled | 布尔(是/否) | 是 | 启用 |
服务项(Service)
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| id | 主键 ID | 是 | ID |
| name | string | 是 | 名称 |
| durationMin | 数字 | 是 | 时长(分钟) |
| price | 数字 | 是 | 价格(元) |
| icon | string | 否 | 图标 emoji |
| description | string | 否 | 一句话描述 |
| tag | string | 否 | 分类 |
| sortOrder | 数字 | 否 | 排序 |
| enabled | 布尔(是/否) | 是 | 启用 |
预约单(Appointment)
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| id | 主键 ID | 是 | ID |
| customerId | 关联「客户」 | 是 | 客户 |
| serviceId | 关联「服务项」 | 是 | 服务项 |
| staffId | 关联「发型师/员工」 | 否 | 发型师 |
| startAt | 日期时间 | 是 | 开始时间 |
| endAt | 日期时间 | 是 | 结束时间 |
| status | string | 是 | 状态 |
| source | string | 否 | 来源 |
| remark | 长文本 | 否 | 客户备注 |
| createdAt | 日期时间 | 是 | 提交时间 |
| confirmedAt | 日期时间 | 否 | 商家确认时间 |
预约状态日志(AppointmentStatusLog)
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| id | 主键 ID | 是 | ID |
| appointmentId | 关联「预约单」 | 是 | 预约单 |
| fromStatus | string | 否 | 原状态 |
| toStatus | string | 是 | 新状态 |
| changedBy | string | 否 | 操作人 |
| reason | string | 否 | 原因 |
| changedAt | 日期时间 | 是 | 变更时间 |
客户偏好标签(CustomerPreference)
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| id | 主键 ID | 是 | ID |
| customerId | 关联「客户」 | 是 | 客户 |
| tag | string | 是 | 标签 |
| source | string | 否 | 来源 |
| updatedAt | 日期时间 | 是 | 更新时间 |
短信发送记录(SmsLog)
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| id | 主键 ID | 是 | ID |
| customerId | 关联「客户」 | 是 | 收件人 |
| templateCode | string | 否 | 短信模板编码 |
| content | 长文本 | 是 | 发送内容 |
| status | string | 是 | 发送状态 |
| sentAt | 日期时间 | 是 | 发送时间 |
| cost | 数字 | 否 | 费用(分) |
店铺配置(Shop)
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| id | 主键 ID | 是 | ID |
| name | string | 是 | 店名 |
| ownerPhone | string | 是 | 老板手机号 |
| openTime | string | 否 | 营业开始 HH:mm |
| closeTime | string | 否 | 营业结束 HH:mm |
实体关系:
erDiagram
客户 {
主键 id PK
string phone
string name
string gender
数字 vipLevel
数字 totalVisits
数字 totalSpent
时间 lastVisitAt
文本 remark
时间 createdAt
}
发型师/员工 {
主键 id PK
string name
string level
数字 years
布尔 enabled
}
服务项 {
主键 id PK
string name
数字 durationMin
数字 price
string icon
string description
string tag
数字 sortOrder
布尔 enabled
}
预约单 {
主键 id PK
引用 customerId
引用 serviceId
引用 staffId
时间 startAt
时间 endAt
string status
string source
文本 remark
时间 createdAt
时间 confirmedAt
}
预约状态日志 {
主键 id PK
引用 appointmentId
string fromStatus
string toStatus
string changedBy
string reason
时间 changedAt
}
客户偏好标签 {
主键 id PK
引用 customerId
string tag
string source
时间 updatedAt
}
短信发送记录 {
主键 id PK
引用 customerId
string templateCode
文本 content
string status
时间 sentAt
数字 cost
}
店铺配置 {
主键 id PK
string name
string ownerPhone
string openTime
string closeTime
}
预约单 ||--o{ 客户 : 属于
预约单 ||--o{ 服务项 : 预约
预约单 ||--o{ 发型师/员工 : 指派
预约状态日志 ||--o{ 预约单 : 记录
客户偏好标签 ||--o{ 客户 : 属于
短信发送记录 ||--o{ 客户 : 发送给
7. 详细方案(逐页)
7.1 体系结构图
本页为体系结构图,展示业务功能模块的层级与数据关系(详见 §5 体系结构)。
7.2 页面跳转图
本页为页面跳转图,展示各页面之间的跳转关系(详见 §4 功能清单)。
7.3 服务列表
页面围绕「你好,约个服务吧 👋」展开,主体是「全部服务」。
该页面承载的业务模块:用户端(用户端)、预约下单(预约下单)、服务列表(服务列表)、快速复约条(快速复约条)
页面信息层级(标题结构):
- 你好,约个服务吧 👋(主标题)
- 全部服务(子区块)
页面跳转:
- 从本页可跳转到我的预约。
- 从本页可跳转到确认预约。
- 从本页可跳转到选时段。
需求标注(来自原型评审):
标注1 · 结构:店铺头部区:品牌、营业状态与个人中心入口:- 展示店铺名「某某理发店 · 预约」与问候语「你好,约个服务吧」;- 绿色状态点 + 「营业中」表示店铺当前在营业时间内;- 右上角「我的」按钮跳转个人中心(data-goto=pmtnrs3ycf506);游客态下应引导登录而非直接进入
标注2 · 指标:「今日还剩 6 个时段可约」剩余时段指标口径:- 口径:今日剩余可约时段数 = 今日总时段数 − 已被预约/锁定时段数;- 数据应来自商家端排班/预约系统,与「今日预约看板」同源实时计算;- 原型中「6」为静态示例值,需后端接口提供;- 待确认:时段数是否按服务时长动态折算(如染发 120 分钟占 2 个半小时时段)
标注3 · 结构:快捷再约卡片的数据依赖与跳转:- 展示最近一次预约摘要:「精剪 · 王师傅 · 周六 14:00」(服务 · 技师 · 时间);- 点击跳转选时段页(data-goto=pmtnr9ihq0uin);- 数据依赖:需读取用户最近一次有效预约记录;无历史预约时该卡片应隐藏或显示引导文案(原型未覆盖该空态)
标注4 · 结构:服务总数与服务列表数据来源:- 「全部服务 5 项」:5 为服务总数,应来自商家端「服务管理」中启用的服务列表;- 商家上下架/停用服务后数量动态变化;- 列表加载失败/为空时应有空态与重试(原型未覆盖)
标注5 · 规则:服务卡点击进入选时段流程:- 5 张服务卡均跳转同一选时段页(data-goto=pmtnr9ih2aznu),所选服务信息需随跳转传递;- 规则:选时段页须回显服务名/时长/价格;服务时长差异大(30~180 分钟),时段粒度与可约数应随时长自适应;- 精剪为「人气款」,其余 4 项无标签
标注6 · 口径:「¥ 88 起」起价的定价口径:- 「起」表示该服务存在多价位档(如按技师等级:普通/高级/首席),展示价为最低档起步价;- 实际价格在选择技师/服务档位时确定;- 染发 ¥380 起、烫发 ¥580 起同理;头皮 SPA ¥168、儿童剪发 ¥58 无「起」应为单一固定价;- 待确认:价位档规则(是否按技师等级加价、加价幅度)
标注7 · 指标:服务时长口径与排班占用:- 时长展示为「约」值:精剪 45 / 染发 120 / 头皮 SPA 60 / 烫发 180 / 儿童剪发 30 分钟;- 口径:用于排班与时段占用计算,宜为服务标准时长(精确到分钟);「约」为展示值;- 待确认:展示「约」与排班计算用精确时长是否同一字段,还是展示层取整
标注8 · 规则:到店付款与取消时限规则:- 支付方式为到店付款(预约无线上支付环节);- 取消规则:取消请提前 2 小时;- 待确认:取消时限 2 小时为全局固定值还是商家可配置;超时取消是否有惩罚/违约规则;需与「我的预约」页取消入口规则一致
标注9 · 差异:儿童剪发年龄限制写在服务名内:- 「儿童剪发(12 岁以下)」将适用人群限制直接写进服务名,而其余服务无适用人群说明;- 人群/年龄限制属于服务属性,应结构化(如适用人群字段)而非内嵌名称,否则影响搜索、筛选与展示一致性;→ 建议确认:是否新增「适用人群/年龄限制」服务字段,服务名只保留「儿童剪发」
标注10 · 差异:技师维度仅在快捷再约卡出现:- 「王师傅」技师只在快捷再约卡出现,服务列表与选时段流程未展示/选择技师维度;- 若技师可指定,选时段页应提供技师选择或筛选;若不可指定,快捷卡的技师展示易误导;→ 建议确认:用户端是否展示与选择技师,技师信息在哪些页面可见
标注11 · 暂缓:服务列表暂无搜索与分类筛选:- 当前仅 5 项服务,浏览无需搜索;服务条目增多后(>10)需要搜索框与分类筛选(如按男女/染烫/护理);- 标记为暂缓:服务数量增长后补充,预留列表接口的分页/筛选参数即可
7.4 选时段
用于承载「选时段」相关功能。
该页面承载的业务模块:用户端(用户端)、预约下单(预约下单)、选时段(选时段)
页面跳转:
- 从本页可跳转到服务列表。
- 从本页可跳转到确认预约。
需求标注(来自原型评审):
标注1 · 结构:顶部导航:返回服务列表与标题:- 顶部固定导航:左侧返回箭头跳回服务列表(data-goto=pmtnr9ig78x1f),中间标题「选择时段」;- 右侧为占位空元素,无菜单/更多操作
标注2 · 结构:服务概要:回显所选服务/时长/技师与更换入口:- 回显上一页所选服务:「精剪发型」;- 副行展示「约 45 分钟 · 王师傅」(服务时长 · 技师);- 右侧「更换」入口跳回服务列表(data-goto=pmtnr9ig78x1f)重新选服务
标注3 · 口径:时长与技师信息回显口径:- 服务时长「约 45 分钟」与技师「王师傅」由服务列表所选服务带入并回显;- 技师在选时段页可见,与服务列表页快捷卡「王师傅」呼应,但本页无技师切换/选择入口;- 待确认:技师在用户端是否可选(若可选,应在此处或选时段时提供选择)
标注4 · 指标:日期横滑条:今天起 7 天可选:- 横向滑动展示 8 个日期:昨天(置灰不可选)、今天、明天(默认选中)、周三~周日;- 日期刻度由日期系统生成,可前后滑动切换;- 口径:默认展示从今天起的 7 天,昨天仅为示意过去日期不可约
标注5 · 规则:过去日期不可预约规则:- 「昨天」置灰(.date.disabled),不可选择过去日期预约;- 规则:过去日期不可预约;今天可约(是否限当前时间之后的时段由排班控制)
标注6 · 口径:默认选中「明天」与默认时段 14:15 的来源:- 默认选中「明天」且时段默认已选 14:15,底部按钮直接显示「下一步 · 明天 14:15」;- 待确认:默认选中值的来源(是上次预约的推荐值,还是当前时间自动推算的最早可约时段);- 若为默认推荐,需与快捷再约逻辑(服务列表页「按上次再约一次」)保持一致
标注7 · 规则:时段四种状态与可约规则:- 时段网格含四种状态:可约(白底) / 已满(灰底 .slot.full) / 已有人约(黄底 .slot.busy,显示剩余名额「剩 N」) / 已选(蓝底 .slot.selected);- 下方图例(.legend)说明前三态;- 规则:仅可约/已有人约状态可点击选中,已满与过去时段不可选
标注8 · 指标:「剩 1」名额口径与多名额时段规则:- 10:30 时段显示「已有人约 · 剩 1」,说明单个时段存在多个名额,已被约去部分;- 待确认:名额口径——按多名技师同时段各接一客,还是按服务人数/工位容量计算;- 名额数需与商家端排班(技师数/工位)数据同源,实时扣减
标注9 · 口径:已满时段不可选口径:- 09:45 置灰不可选,表示该时段名额已被约满(.slot.full);- 口径:已满 = 名额全部占用,与「剩 0」等价,展示层置灰禁点
标注10 · 差异::45 禁用状态:CSS 缺样式且原因未明:- 晚上 21:45 使用了 .disabled 类,但 CSS 中仅定义了 .date.disabled,未定义 .slot.disabled 样式,视觉上与可约态无区别,仅无法通过原型状态区分;- 且当前默认选「明天」,明天 21:45 被禁原因未在页面说明;→ 建议确认:21:45 禁用含义(今日已过时段?店铺打烊边界?)并补齐 .slot.disabled 视觉样式
标注11 · 规则:时段粒度随服务时长变化规则:- 时段间隔为 45 分钟(09:00 → 09:45 → 10:30 → 11:15),与服务时长「约 45 分钟」一致;- 规则:时段粒度 = 服务标准时长,不同服务(30~180 分钟)应生成对应粒度的时段;- 待确认:长时间服务(如染发 120 分钟)的时段如何折算/拼接,与剩余名额计算联动
标注12 · 规则:底部按钮:回显所选时段并进入确认预约:- 底部固定按钮回显已选「明天 14:15」,点击跳确认预约页(data-goto=pmtnr9ihq0uin);- 按钮文案随所选日期+时段实时更新;- 规则:未选任何时段时应置灰不可点(原型默认已选 14:15,未覆盖未选态)
7.5 确认预约
页面围绕「服务内容」展开,主体是「到店时间」「指定发型师(不指定也行)」「联系方式」「备注(可选)」;提供文本输入框「输入框」、文本输入框「输入框」、复选框、多行文本输入框。
该页面承载的业务模块:用户端(用户端)、预约下单(预约下单)、确认预约(确认预约)
页面信息层级(标题结构):
- 服务内容(子区块)
- 到店时间(子区块)
- 指定发型师(不指定也行)(子区块)
- 联系方式(子区块)
- 备注(可选)(子区块)
页面包含的控件:
- 文本输入框「输入框」
- 复选框
- 多行文本输入框
页面跳转:
- 从本页可跳转到选时段。
- 从本页可跳转到服务列表。
需求标注(来自原型评审):
标注1 · 结构:顶部导航:返回选时段与标题:- 顶部导航:左侧返回箭头跳回选时段页(data-goto=pmtnr9ih2aznu),中间标题「确认预约」;- 右侧为占位空元素
标注2 · 结构:预约三步流程指示(服务→选时段→确认):- 三步流程指示:服务(✓完成) → 选时段(✓完成) → 确认预约(当前第 3 步);- 已完成的步骤以绿色 ✓ 标识,当前步以主题色高亮;- 规则:步骤条不可回退点击,回退走各区块「修改」入口
标注3 · 结构:服务内容回显与修改入口:- 服务内容回显:精剪发型 · 约 45 分钟 · ¥ 88 起,图标与列表页一致;- 右上角「修改」跳回服务列表(data-goto=pmtnr9ig78x1f)重新选服务;- 规则:修改服务后,到店时间/发型师选择需重置或校验(原型未覆盖联动)
标注4 · 口径:「¥ 88 起」起价与发型师等级价格联动:- 价格显示「¥ 88 起」,与服务列表页一致,仍为起价而非最终价;- 结合本页发型师分级(高级/资深/普通),推断实际价格按发型师等级浮动;- 待确认:各等级加价规则(如高级+XX、资深+XX)与最终价格的计算与展示时机
标注5 · 结构:到店时间回显与星期标注:- 到店时间回显「明天(周三)14:15 - 15:00」(日期 · 起止时间),右上角「修改」跳选时段页;- 差异:选时段页日期刻度中「明天」=12 号、而「周三」=13 号,两者不是同一天,此处将「明天」与「周三」混标为同一天;→ 建议确认:到店时间的星期标注与日期数据的对应关系(以日期刻度为准)
标注6 · 差异:到店时间星期标注与日期刻度矛盾:- 到店时间展示「明天(周三)14:15 - 15:00」,其中 14:15-15:00 为 45 分钟=精剪服务时长,起止时间正确;- 差异:星期标注「(周三)」与选时段页日期刻度矛盾(明天=12 非周三=13);→ 建议确认:星期与日期的一致性
标注7 · 指标:「距现在还有约 22 小时」相对时间口径:- 「距现在还有约 22 小时」为相对时间提示,随当前时间动态计算;- 口径:以当前时间与到店时段起始时间的差值取整展示(小时级);- 倒计时仅作提示,不参与业务规则
标注8 · 规则:发型师选择:不指定/指定与等级分档:- 发型师选择:不指定(就近安排) / 王师傅(高级·12年) / 李师傅(资深·8年) / 张师傅(普通·3年);- 默认选中王师傅(.sty.正常),与服务列表页快捷再约「王师傅」一致;- 规则:- 不指定 = 商家就近安排,可选任一等级 - 指定后按等级影响价格档(高级/资深/普通);- 待确认:不指定时按什么策略排人、指定与价格档的联动规则
标注9 · 口径:默认选中上次技师王师傅:- 默认选中「王师傅(高级 · 12 年)」,与选时段页概要、服务列表页快捷再约一致;- 数据依赖:默认技师 = 上次预约技师;无历史时默认「不指定」;- 原型未覆盖无历史用户的默认态
标注10 · 结构:老客户识别与联系方式预填:- 老客户识别:右上角「✓ 老客户」标识;姓名预填「张小华」;手机号脱敏展示「138****6688」并标注「已识别」;- 数据依赖:识别依据为手机号/登录账号匹配客户档案,与商家端「客户档案」页数据同源;- 规则:游客/新客户不预填,需手动输入姓名+手机号(原型未覆盖非老客户态)
标注11 · 规则:老客户偏好回填与可修改规则:- 老客户偏好回填:「上次偏好:修短一点、鬓角修出形。下次来默认按这个安排,可备注修改」;- 规则:- 偏好来自客户档案/历史记录,与商家端「老客户偏好」页数据同源 - 默认带入且可在备注中修改 - 备注修改是否回写档案需确认;- 待确认:偏好字段是否结构化(发型偏好/染烫偏好等),还是自由文本
标注12 · 规则:预约协议:按时到店/取消 2 小时/短信确认:- 预约协议勾选:「预约即同意按时到店,如需取消请提前 2 小时,将通过短信发送确认」,默认已勾选;- 取消时限 2 小时 与服务列表页底部规则一致;- 规则:未勾选时提交按钮应置灰不可点(原型默认勾选,未覆盖未勾选态)
标注13 · 规则:确认预约提交与短信提醒:- 底部主按钮「确认预约」+ 提示「预约成功后立刻发短信提醒」;- 规则:- 点击提交预约,成功后向用户手机发短信确认 - 原型无提交反馈态(成功/失败/重复提交防抖);- 待确认:提交后跳转「我的预约」还是预约成功页;短信模板内容
标注14 · 暂缓:备注为自由文本,后续可结构化沉淀偏好:- 备注为自由文本输入(placeholder 示例:刘海修薄/染深棕色/头皮敏感等),字段为可选;- 暂缓:当前自由文本可满足需求;后续可将常见备注(染烫偏好/过敏史)结构化沉淀为客户偏好,与「老客户偏好」联动
7.6 今日预约看板
页面围绕「今日看板」展开,主体是「今日预约」「今日提醒」「今日老客户」;提供「🔍」按钮、「🔔」按钮、「‹」按钮、「›」按钮 等操作。
该页面承载的业务模块:商家端(商家端)、预约看板(预约看板)、今日看板(今日看板)
页面信息层级(标题结构):
- 今日看板(主标题)
- 今日预约(子区块)
- 今日提醒(子区块)
- 今日老客户(子区块)
页面包含的控件:
- 「🔍」按钮
- 「🔔」按钮
- 「‹」按钮
- 「›」按钮
- 「📥 导出」按钮
- 「📅 看周视图」按钮
- 「改约」按钮
- 「签到」按钮
- 「短信催」按钮
- 「确认」按钮
页面跳转:
- 从本页可跳转到今日预约看板。
- 从本页可跳转到周日历视图。
- 从本页可跳转到待确认。
- 从本页可跳转到客户档案。
- 从本页可跳转到老客户偏好。
- 从本页可跳转到服务管理。
需求标注(来自原型评审):
标注1 · 结构:商家端侧边栏导航与分组:- 商家端侧边栏:logo「某某理发店 · 工作台」+ 三组导航;- 预约:今日看板(正常) / 周日历 / 待确认(红点角标 7);- 客户:客户档案 / 老客户偏好;- 配置:服务管理;- 各入口 data-goto 对应页面:周日历 pmtnr9iixv1zx、待确认 pmtnrs3zmr0pt、客户档案 pmtnrs40bsd46、老客户偏好 pmtnrs40vpf2s、服务管理 pmtnr9ijf15bn
标注2 · 口径:待确认角标 7 与今日待确认 3 口径不同:- 侧边栏「待确认」角标显示 7,而本页概览「待确认」为 3、今日预约 Tab「待确认 3」;- 口径差异:侧边栏角标应为全量(跨日期)待确认数,概览/Tab 为今日待确认数;- 待确认:角标口径(全部待确认 vs 今日待确认)需在侧边栏明确,避免与今日看板混淆
标注3 · 结构:顶栏:搜索/通知/当前用户:- 顶栏:面包屑「预约 / 今日看板」+ 右侧搜索🔍、通知🔔(带红点未读标识)、用户「王老板」;- 通知红点表示存在未读提醒,点击应展示通知列表(原型未覆盖)
标注4 · 指标:页头:日期与单量概览:- 页头:「今日看板 · 周三 · 9 月 11 日 · 共 12 单」+ 日期切换器「2024-09-11 · 周三」+ 导出📥 + 看周视图📅(data-goto=pmtnr9iixv1zx);- 左侧 ‹ › 可切换查看其他日期看板;- 口径:共 12 单 = 今日全部预约(含待确认+已确认)
标注5 · 差异:看板日期 9/11 周三与选时段页日期刻度矛盾:- 本页日期为 2024-09-11 · 周三(真实日历正确),而选时段页日期刻度「昨天 10 / 今天 11 / 明天 12 / 周三 13」中把 13 号标为周三;- 若 9/11 为周三,则 9/13 应为周五,选时段页刻度整体错位 2 天;→ 建议确认:以 2024-09-11 周三为准,修正选时段/确认预约/我的预约页的日期-星期标注
标注6 · 指标:概览统计:今日 12 / 已确认 9 / 待确认 3 / 明日余 6:- 四张概览卡:今日预约 12(↑比昨天+3)/ 已确认 9(3 单待客户回复)/ 待确认 3(已超时 0 单)/ 明日剩余时段 6(建议主动外呼);- 口径:- 今日预约=待确认+已确认(3+9=12) - 已确认 9 中 3 单「待客户回复」= 已发短信待客户回执 - 明日剩余时段 6 与用户端「今日还剩 6 个时段可约」数字相同但所指日期不同(用户端今日 vs 商家端明日),需核对该指标口径
标注7 · 差异:「已超时 0 单」与「3 单超 2 小时未确认」矛盾:- 内部矛盾:概览卡「待确认 · 已超时 0 单」与右侧今日提醒「3 单超过 2 小时未确认」直接冲突;- 若 3 单已超 2 小时未确认,则已超时数应为 3 而非 0;→ 建议确认:超时口径(2 小时未确认即超时?)与「已超时」统计的计算时机,修正两处数据一致性
标注8 · 规则:今日预约行结构与操作规则:- 今日预约列表行:时间(含服务时长) + 客户头像 + 姓名(VIP·第N次/新客) + 服务·技师 + 脱敏手机号 + 偏好/备注 + 状态徽标 + 操作按钮;- 规则:- 已确认 → 操作【改约 / 签到】 - 待确认 → 操作【短信催 / 确认】;- 签到=客户到店核销,触发预约转已完成
标注9 · 规则:预约状态徽标与今日列表口径:- 预约卡状态徽标:已确认(绿 .confirmed) / 待确认(蓝 .待审核),与用户端「我的预约」状态机一致;- 已确认行可签到、待确认行可短信催/确认;无已取消/已完成态展示(今日列表仅待服务类);- 口径:看板默认展示今日全部待服务预约,按时间排序
标注10 · 指标:张小华偏好回显与跨页数据一致:- 张小华(09:30 · VIP·第 8 次 · 精剪·王师傅)偏好回显「上次偏好:修短一点、鬓角修出形」;- 跨页一致性:- 第 8 次与用户端「我的预约」已到店 8 次一致 - 偏好与确认预约页 .pref、我的预约「偏好已保存」一致 - 脱敏手机号 138****6688 一致;- 商家端看板直接展示客户偏好,供服务前参考
标注11 · 规则:今日提醒:超时自动短信/发送统计/外呼建议:- 今日提醒三则(3 项):;1. 3 单超过 2 小时未确认(陈芳、刘强、孙先生 · 已自动发短信提醒 1 次);2. 今日共发送 18 条预约确认短信(成功 17 · 失败 1 号码错误);3. 明日仅剩 6 个时段,建议主动外呼(系统选出 5 位近 30 天未到店老客户);- 规则:- 预约超 2 小时未确认 → 系统自动向客户发短信提醒(每单 1 次?频率待确认) - 时段不足触发外呼建议并圈选流失风险客户
标注12 · 口径:短信发送统计与失败处理:- 短信发送统计:今日 18 条、成功 17、失败 1(号码错误);- 规则:- 发送失败需记录失败原因并提供重发/修正号码入口(原型未覆盖) - 失败计入发送统计口径,与用户端短信确认衔接;- 待确认:短信通道(第三方短信服务商)、模板与失败重试策略
标注13 · 规则:今日老客户列表:偏好/常约/距上次:- 今日老客户列表(5 位,展示 4 位):张小华/陈芳/王芳/孙先生,含偏好 / 常约技师 / 距上次到店;- 规则:- 老客户 = 有历史到店记录客户,数据与「客户档案」「老客户偏好」页同源 - 「距上次」用于流失风险判断,配合外呼建议 - 点击应可查看完整档案(原型未覆盖跳转)
标注14 · 差异:改约/短信催/确认/签到按钮无动作:- 预约行操作按钮(改约 / 短信催 / 确认 / 签到)均无 data-goto 与点击动作(纯样式占位);→ 建议确认:- 签到=核销到店并转已完成 - 确认=商家确认预约(与用户端待确认联动) - 短信催=向客户重发确认短信 - 改约=调整该预约时段,需二次确认与短信通知
7.7 周日历视图
页面以「本周预约」为核心;提供「‹」按钮、「›」按钮、「📥 导出」按钮、「📋 今日看板」按钮。
该页面承载的业务模块:商家端(商家端)、预约看板(预约看板)、周日历(周日历)
页面信息层级(标题结构):
- 本周预约(主标题)
页面包含的控件:
- 「‹」按钮
- 「›」按钮
- 「📥 导出」按钮
- 「📋 今日看板」按钮
页面跳转:
- 从本页可跳转到今日预约看板。
- 从本页可跳转到周日历视图。
- 从本页可跳转到待确认。
- 从本页可跳转到客户档案。
- 从本页可跳转到老客户偏好。
- 从本页可跳转到服务管理。
需求标注(来自原型评审):
标注1 · 结构:商家端侧边栏导航(与看板一致):- 商家端侧边栏(与今日看板同布局):logo + 预约(今日看板/周日历 正常/待确认角标 7) + 客户(客户档案/老客户偏好) + 配置(服务管理);- 各入口 data-goto 与看板页一致
标注2 · 指标:页头:本周 9/9-9/15 共 38 单:- 页头:「本周预约 · 9 月 9 日 - 9 月 15 日 · 共 38 单」+ 日期切换器「2024-09-09 ~ 09-15」;- 右侧「📥 导出」(占位)+「📋 今日看板」按钮跳看板页(data-goto=pmtnr9iicfp9q);- 口径:38 单 = 本周全部预约(已确认 31 + 待确认 7)
标注3 · 差异:周刻度 9/11 周三与选时段页错位矛盾:- 周历表头刻度:周一 9/9 · 周二 9/10 · 周三 9/11(今天) · 周四 9/12 · 周五 9/13 · 周六 9/14 · 周日 9/15;- 与看板页「2024-09-11 周三」、真实日历一致(9/11=周三);- 差异:选时段页日期刻度「今天 11 / 明天 12 / 周三 13…」把 9/13 标为周三,与本节(9/13=周五)错位 2 天;→ 建议确认:统一以本节/看板刻度(9/11 周三)为准修正用户端各页日期星期
标注4 · 口径:周合计 38 = 已确认 31 + 待确认 7 与角标口径:- 底部合计:本周合计 38 单 = 已确认 31 + 待确认 7(与页头 38 一致);- 侧边栏「待确认」角标 7 与本节待确认 7 一致 → 角标口径 = 本周待确认(非今日);- 与今日看板「今日待确认 3」区分:3=今日、7=本周;- 待确认:侧边栏角标是本周待确认还是全量(跨周)待确认,需明确定义
标注5 · 结构:服务类型图例色标:- 服务类型色标图例:精剪(蓝 cut) / 染发(粉 dye) / 头皮 SPA(绿 spa) / 烫发(紫 perm);- 事件块颜色与图例一一对应,与服务管理页服务类型一致
标注6 · 结构:周表头与今天高亮:- 周表头:7 天列(周一到周日)+ 左侧时间列;今天(周三 9/11)以主题色高亮;- 表头展示星期 + 日期,便于快速定位当前日期
标注7 · 结构:时间网格:09:00-20:00 小时行:- 时间网格:09:00-20:00 共 12 小时行 × 7 天列,单元格可放置预约事件块;- 事件块 .ev 绝对定位在对应小时行内,含开始时间;- 规则:网格只读展示,点击事件应可查看/操作预约(原型未覆盖点击行为)
标注8 · 规则:预约事件块:时间+客户+服务·技师:- 事件块信息:开始时间 + 客户姓名(.t)+ 服务类型 · 技师(.n),按服务类型着色(cut/dye/spa/perm);- 规则:- 同一客户一天可有多个预约 - 事件按开始时间落在对应小时行 - 点击事件应查看详情(原型未覆盖);- 事件未区分已确认/待确认状态(全部同色展示)
标注9 · 指标:周三列与今日看板数据一致:- 周三(今天)列与今日看板数据完全吻合:张小华 09:30 精剪·王 / 李雷 10:30 精剪·不指定 / 陈芳 11:30 SPA·李 / 王芳 13:30 染发·王 / 刘强 15:30 精剪·张 / 赵敏 16:30 精剪·王 / 孙先生 18:00 烫发·王;- 口径:周历与今日看板同源,看板=今日视角、周历=周视角,数据实时同步
标注10 · 差异:「王芳」高频重复疑为演示数据:- 「王芳」在周历中高频重复(如 13:00 行同一小时出现 3 次、全天 20+ 次,且同日既有精剪又有染发/SPA),同一客户一周多时段大量堆叠不合常理;- 差异:疑为演示数据复制占位,非真实预约分布;→ 建议确认:替换为真实分布演示数据,或说明多人同名场景(若属同名需区分客户)
标注11 · 差异:周历 20:00 截止与用户端 21:45 可约矛盾:- 周历营业时段为 09:00-20:00(12 小时行),而用户端选时段页可约时段覆盖 09:00-21:45(含晚上 19:30/20:15/21:00/21:45);- 差异:两端营业/可约时段边界不一致(20:00 vs 21:45);→ 建议确认:店铺营业时间口径(营业结束时间),商家端周历与用户端可约时段统一
标注12 · 规则:低占用日主动营销老客户建议:- 底部提示「💡 周四、周六比较空,建议给老客户发短信」;- 规则:- 系统识别低占用日并给出主动营销建议 - 触发外呼/短信营销老客户,与看板「明日剩余 6 时段建议外呼」策略一致;- 待确认:低占用判定阈值、营销短信模板与老客户圈选规则
标注13 · 暂缓:导出功能占位待实现:- 「📥 导出」按钮为占位,无导出动作与格式定义;- 暂缓:导出(周报/预约清单 Excel/CSV)本期可不实现,预留导出接口即可
7.8 服务管理
页面以「服务管理」为核心;提供文本输入框「如:男士精剪 / 染发 / 头皮 SPA」、数字输入框、数字输入框、文本输入框「一句话说明,让客户更好选」 等操作。
该页面承载的业务模块:商家端(商家端)、服务配置(服务配置)、服务管理(服务管理)
页面信息层级(标题结构):
- 服务管理(主标题)
页面包含的控件:
- 文本输入框「如:男士精剪 / 染发 / 头皮 SPA」
- 数字输入框
- 文本输入框「一句话说明,让客户更好选」
- 文本输入框「搜索服务名…」
- 「📥 导入」按钮
- 「+ 新建服务」按钮
- 「保存」按钮
- 「编辑」按钮
- 「复制」按钮
- 「停用」按钮
页面跳转:
- 从本页可跳转到今日预约看板。
- 从本页可跳转到周日历视图。
- 从本页可跳转到待确认。
- 从本页可跳转到客户档案。
- 从本页可跳转到老客户偏好。
- 从本页可跳转到服务管理。
需求标注(来自原型评审):
标注1 · 结构:商家端侧边栏(服务管理当前):- 商家端侧边栏(与看板/周历同布局):预约(今日看板/周日历/待确认角标 7) + 客户(客户档案/老客户偏好) + 配置(服务管理 正常);- 各入口 data-goto 与看板页一致
标注2 · 结构:页头:服务管理说明与新建/导入入口:- 页头:「服务管理」+ 副标题「维护店里可预约的服务项目 · 停用后客户端不再显示」;- 右侧按钮:📥 导入(占位)+ ➕ 新建服务;- 规则:服务启停直接影响用户端「服务列表」展示(5 项服务与用户端一致)
标注3 · 结构:新建服务表单字段与图标选择:- 新建服务表单字段:服务名称 / 时长(分钟)/ 价格 / 图标 / 描述(可选) + 保存按钮;- 图标选择器 6 个:✂🎨💆💇👶⭐(与现有 5 服务图标一致,⭐ 为新增可选);- 规则:表单常驻顶部;保存后新增/更新服务并同步到用户端服务列表
标注4 · 差异:表单预填精剪数据:新建/编辑模式未明:- 表单预填:时长 45、价格 88、图标 ✂(正常),与服务「精剪发型」数据一致;- 差异:表单顶部有「+ 新建服务」按钮但表单又常驻预填精剪数据,新建/编辑模式关系不明(新建应清空默认、编辑应回填所选服务);→ 建议确认:表单是新建模式(预填为默认值)还是当前选中服务的编辑态
标注5 · 差异:表单缺起价/分类/适用人群字段与列表口径不对应:- 列表价格展示为「¥ 88 起 / ¥ 380 起 / ¥ 580 起」(起价)与「¥ 168 / ¥ 58」(固定价),但新建表单价格字段为单一数值,无「是否起价」或价位档配置;- 列表分类标签(人气款/常规/推荐)在表单中无分类字段;「儿童剪发(12 岁以下)」的适用人群也无字段;→ 建议确认:服务数据模型补充价格档(起价)/ 分类 / 适用人群字段,与列表展示口径对齐
标注6 · 结构:搜索/筛选/排序工具条:- 工具条:搜索框🔍 + 状态筛选(全部 5 / 启用 5 / 停用 0)+ 排序说明「按更新时间倒序」;- 规则:- 搜索按服务名过滤 - 筛选按启停状态过滤 - 列表默认按更新时间倒序(2天前→2周前,符合)
标注7 · 指标:服务计数:全部 5 = 启用 5 + 停用 0:- 筛选计数:全部 5 = 启用 5 + 停用 0,与服务列表行数一致;- 口径:服务总数 = 启用 + 停用;停用 0 说明当前全部在架;- 与用户端服务列表「全部服务 5 项」一致
标注8 · 结构:服务表格与用户端服务列表数据一致:- 服务表格列:服务 / 分类 / 时长 / 价格 / 本周预约 / 状态 / 更新于 / 操作;- 5 行服务数据与用户端服务列表完全一致:精剪发型(45分/¥88起) / 染发(120分/¥380起) / 头皮SPA(60分/¥168) / 烫发(180分/¥580起) / 儿童剪发(30分/¥58);- 分类标签:人气款(精剪) / 推荐(SPA) / 常规(染发·烫发·儿童)
标注9 · 指标:本周预约按服务统计合计 38 与周历一致:- 本周预约列:精剪 18 / 染发 7 / SPA 5 / 烫发 4 / 儿童 4,合计 18+7+5+4+4 = 38;- 与周日历页「本周合计 38 单」完全吻合;- 口径:本周预约 = 该服务本周(周一至周日)全部预约数,按服务维度统计
标注10 · 规则:启停开关:停用下架不影响历史:- 状态列为启停开关(.switch.on 为启用),5 项全部启用;- 规则:- 关闭开关/点「停用」→ 服务从客户端下架,用户端服务列表不再显示 - 停用不影响历史预约数据(hint 明确) - 停用后本周预约数仍保留展示
标注11 · 差异:编辑/复制/停用无动作且缺删除入口:- 操作列按钮:编辑 / 复制 / 停用,均无 data-goto 与点击动作(纯样式占位);- 底部提示提及「想要彻底删除请先确认没有关联订单」,但操作列无删除按钮(仅停用);→ 建议确认:- 删除入口与二次确认流程 - 编辑/复制的交互(复制=复制生成新服务草稿?) - 有历史订单服务的删除限制校验
标注12 · 口径:停用 vs 彻底删除规则:- 底部提示:「停用只是从客户端下架,不影响历史预约数据;想要彻底删除请先确认没有关联订单」;- 规则:- 停用 = 软下架(保留数据) - 删除 = 硬删除(需无关联订单);- 待确认:删除的关联订单检测逻辑、删除后历史数据如何处理
标注13 · 差异:儿童剪发年龄限制内嵌服务名:- 「儿童剪发(12 岁以下)」将年龄限制写进服务名(#005),而其他服务无适用人群标识;- 与服务列表页同问题:适用人群应结构化(如适用人群字段)而非内嵌名称;→ 建议确认:新增「适用人群/年龄限制」服务字段(表单同步补充)
7.9 用户登录
页面以「某某理发店」为核心;提供文本输入框「请输入手机号」、文本输入框「6 位数字」、「获取验证码」按钮、「登 录」按钮。
该页面承载的业务模块:用户端(用户端)、客户登录(客户登录)、登录页(登录页)
页面信息层级(标题结构):
- 某某理发店(主标题)
页面包含的控件:
- 文本输入框「请输入手机号」
- 文本输入框「6 位数字」
- 「获取验证码」按钮
- 「登 录」按钮
页面跳转:
- 从本页可跳转到服务列表。
需求标注(来自原型评审):
标注1 · 结构:品牌区:logo、店名与登录价值主张:- 品牌区:沙龙渐变 logo(💈)+ 店名「某某理发店」+ 价值主张「登录后可一键复约 · 自动记住偏好」;- 与服务列表页顶部同套沙龙霓虹视觉(紫→品红→金橙);- 登录动机:一键复约与偏好记忆是用户端登录的核心卖点
标注2 · 结构:手机号输入与格式校验:- 手机号输入框,预填演示号「13888886688」(原型示例数据,非真实用户);- 规则:手机号为中国大陆 11 位手机号,需格式校验(原型未覆盖校验/错误提示态);- 待确认:手机号格式校验规则与错误提示文案
标注3 · 规则:短信验证码输入与获取按钮:- 短信验证码输入框(placeholder「6 位数字」)+ 右侧「获取验证码」按钮;- 规则:- 验证码为 6 位数字 - 点击获取后应发送短信并开始倒计时重发(原型未覆盖);- 待确认:验证码有效期(如 5 分钟)、发送频率限制(防刷)与错误次数上限
标注4 · 口径:获取验证码:发送逻辑与防刷机制待实现:- 「获取验证码」按钮:原型仅有样式(.code-btn:disabled 已定义置灰态),无发送逻辑、倒计时与重发机制;- 待确认:- 发送成功后按钮置灰倒计时(如 60 秒) - 同一手机号发送频率上限(防短信轰炸) - 验证码校验失败处理
标注5 · 规则:新用户自动建档与老客户快捷再约规则:- 提示文案:「新用户用手机号直接登录,系统自动建档;老客户登录后会看到『按上次再约一次』」;- 规则:- 新用户(手机号未建档)登录即自动创建客户档案,无需注册 - 老客户登录后服务列表页展示快捷再约卡(与服务列表页 .quick 联动);- 数据依赖:建档写入商家端「客户档案」;老客户判定基于手机号匹配
标注6 · 规则:登录提交与登录态规则:- 主按钮「登 录」,点击跳服务列表页(data-goto=pmtnr9ig78x1f);- 规则:- 登录成功进入服务列表 - 手机号+验证码校验通过才可提交(原型未覆盖未通过态) - 游客态可浏览服务列表但无快捷再约/偏好回填(与确认预约页老客户识别联动);- 待确认:登录态保持(token 有效期)、退出登录入口位置
标注7 · 结构:微信/支付宝第三方登录占位:- 第三方登录占位:微信登录(💬)与支付宝登录(支)两个圆形图标按钮;- 规则:第三方登录需对接微信/支付宝开放平台授权回调(原型仅占位,无跳转与回调处理);- 待确认:第三方登录是否本期上线;授权后与手机号建档的账号打通策略
标注8 · 差异:第三方登录图标形式不统一:- 微信图标用 emoji「💬」、支付宝图标用文字「支」,图标形式不统一(emoji vs 文字);- 且微信官方图标通常为绿色气泡 Logo,💬 为普通对话气泡,易被误解;→ 建议确认:统一替换为微信/支付宝品牌 SVG 图标(风格与整套 UI 一致)
标注9 · 规则:登录即同意协议:条款链接未落地:- 「登录即同意《用户协议》与《隐私政策》」,为登录的前置协议条款;- 两个链接 `` 均无 href,协议内容未落地;→ 建议确认:补齐《用户协议》《隐私政策》页面/链接;是否需在注册建档时单独确认
标注10 · 差异:用户协议/隐私政策链接为空:- 协议链接「《用户协议》」「《隐私政策》」为无 href 的空链接,点击无响应;→ 建议确认:协议内容页与埋点(同意行为是否留痕)
标注11 · 口径:页脚:到店付款与取消规则全站一致:- 页脚「某某理发店 · 到店付款 · 取消提前 2 小时」;- 到店付款与取消提前 2 小时规则全站一致(与服务列表页、确认预约页协议相同);- 口径:取消时限 2 小时为全局规则,需商家端可配置时统一从配置读取
7.10 我的预约
提供「改约」按钮、「取消」按钮、「催确认」按钮、「取消」按钮 等操作。
该页面承载的业务模块:用户端(用户端)、我的预约(我的预约)、预约列表(预约列表)、快速复约条(快速复约条)
页面包含的控件:
- 「改约」按钮
- 「取消」按钮
- 「催确认」按钮
- 「再约一次」按钮
页面跳转:
- 从本页可跳转到服务列表。
- 从本页可跳转到确认预约。
需求标注(来自原型评审):
标注1 · 结构:顶部导航:返回服务列表与标题:- 顶部导航:左侧返回箭头跳回服务列表(data-goto=pmtnr9ig78x1f),中间标题「我的预约」;- 右侧为占位空元素
标注2 · 结构:用户信息条:姓名/手机号/VIP 徽标:- 用户信息条:头像「张」+ 姓名「张小华」+ 脱敏手机号「138**6688」+ 右上角「⭐ VIP」徽标;- 与确认预约页老客户识别(张小华/138**6688)数据一致;- 规则:未登录/游客态进入时应跳转用户登录页(原型未覆盖)
标注3 · 指标:已到店 8 次 · VIP 客户等级口径:- 「已到店 8 次 · VIP 客户」:到店次数为累计完成预约数,VIP 等级由到店次数/消费额判定;- 口径:VIP 判定阈值未定义(8 次即 VIP?);等级数据与商家端「客户档案」「老客户偏好」同源;- 待确认:VIP 等级规则(次数/金额阈值、权益内容)
标注4 · 指标:预约统计:待服务/已完成/已取消:- 统计栏:待服务 2 / 已完成 8 / 已取消 0,与下方 Tab 数量一致;- 口径:- 待服务 = 已确认+待确认的未到期预约 - 已完成 = 到店完成 - 已取消 = 取消的预约;- 数据随预约状态变更实时更新
标注5 · 结构:快捷复约:按上次记录一键复约:- 快捷复约条「按上次再约一次 · 精剪 · 王师傅 · 通常周六下午」,点击跳确认预约页(data-goto=pmtnr9ihq0uin);- 规则:一键复约跳过选时段,直接进入确认页并预填上次服务/技师/时段;- 与服务列表页快捷再约卡(.quick)逻辑一致
标注6 · 规则:预约列表三 Tab 与数量角标:- 三个 Tab:待服务(2) / 已完成(8) / 已取消(0),默认选中待服务;- 数字角标与统计栏一致,为对应状态预约数;- 规则:Tab 切换过滤下方预约列表;原型仅展示待服务列表内容
标注7 · 结构:待服务已确认预约卡:精剪发型:- 待服务·已确认预约卡:精剪发型(王师傅)· 明天 12 周三 · 14:15-15:00 · 45 分钟 · 状态「已确认」;- 底部信息行「📍 某某理发店 · 已发短信提醒」,操作按钮改约 / 取消;- 短信提醒与确认预约页「预约成功后立刻发短信」衔接
标注8 · 差异:「明天 12 周三」星期标注与日期刻度矛盾:- 预约卡日期「明天 12 周三」:明天=12 号,而选时段页日期刻度中周三=13 号,两者矛盾(12 应为周二);- 与确认预约页「明天(周三)」标注错误同源;→ 建议确认:日期-星期对应数据以选时段页日期刻度(今天 11 / 明天 12 / 周三 13)为准统一修正
标注9 · 规则:预约状态四态与状态机:- 预约状态四态:待确认(蓝 .upcoming) / 已确认(绿 .confirmed) / 已完成(灰 .done) / 已取消(红 .已取消);- 原型中出现待确认、已确认、已完成三态,已取消态样式已定义但无示例;- 口径:状态机 = 待确认 → 已确认 → 已完成(或 取消);与商家端「待确认」页联动
标注10 · 差异:同为待服务:已确认与待确认并存,确认规则未明:- 同为「待服务」预约:精剪(明天)已确认,头皮 SPA(9/22)仍待确认(可「催确认」),确认规则不明确;- 已确认者已发短信提醒、待确认者显示「商家会尽快回复」;→ 建议确认:预约确认机制——是商家逐单确认,还是到临近时间自动确认/按技师自动确认;「催确认」是否触发商家端提醒
标注11 · 差异:改约/取消/催确认按钮无动作:- 预约卡操作按钮:改约 / 取消(已确认卡)、催确认 / 取消(待确认卡);- 原型中改约、取消、催确认按钮均无 data-goto 与点击动作(纯样式占位);→ 建议确认:- 取消需满足「提前 2 小时」规则与二次确认弹窗 - 改约流程(复用选时段页还是直接调整时段) - 催确认的触发与商家端提醒机制
标注12 · 口径:完成预约沉淀偏好:鬓角修出形/深棕色:- 已完成预约(精剪 8/28)信息行「💡 本次偏好已保存:鬓角修出形」;- 染发(7/15)「本次偏好已保存:深棕色」;- 规则:- 每次完成后沉淀本次消费偏好(发型/色号等) - 偏好供下次预约回填(确认预约页 .pref)并沉淀至商家端「老客户偏好」
标注13 · 规则:再约一次:跳过选时段直接确认:- 「再约一次」按钮(已完成预约卡)跳确认预约页(data-goto=pmtnr9ihq0uin),跳过选时段直接预填上次服务/技师/时段;- 规则:一键复约默认沿用上次组合;若默认时段已满需回退选时段页重新选择(原型未覆盖回退态)
7.11 商家登录
页面以「欢迎回来 👋」为核心;提供文本输入框「老板用户名 / 手机号」、「请输入密码」控件、复选框、「登 录」按钮。
该页面承载的业务模块:商家端(商家端)、商家登录(商家登录)、登录页(登录页)
页面信息层级(标题结构):
- 欢迎回来 👋(子区块)
页面包含的控件:
- 文本输入框「老板用户名 / 手机号」
- 「请输入密码」控件
- 复选框
- 「登 录」按钮
页面跳转:
- 从本页可跳转到今日预约看板。
需求标注(来自原型评审):
标注1 · 结构:品牌区:工作台标识与产品定位:- 品牌区:渐变图标 ✂ + 「某某理发店 · 工作台」+ 副标「SHOP ADMIN」;- 深色渐变背景 + 霓虹光晕装饰,与用户端移动页视觉区分(桌面端登录);- 产品定位:单店商家工作台入口
标注2 · 结构:账号输入:用户名/手机号,预填 wangboss:- 账号输入框,预填演示账号「wangboss」(placeholder:老板用户名 / 手机号);- 与商家端顶栏用户「王老板」呼应;- 规则:支持用户名或手机号登录;账号预填为演示数据
标注3 · 结构:密码输入与校验规则:- 密码输入框(type=password),预填「••••••••」为演示占位;- 规则:密码为老板账号密码;原型未覆盖错误提示/输错次数限制/找回流程
标注4 · 规则:天自动登录与忘记密码入口:- 登录辅助行:7 天内自动登录(checkbox 默认勾选)+「忘记密码?」链接(无 href);- 规则:- 勾选后 7 天内免登录(token 有效期 7 天) - 忘记密码跳找回流程(原型未覆盖);- 待确认:自动登录安全边界(管理端是否建议关闭)
标注5 · 规则:登录提交跳今日看板:- 主按钮「登 录」,点击跳今日预约看板(data-goto=pmtnr9iicfp9q);- 规则:- 登录成功进入商家端工作台首页 - 校验通过才可提交(原型未覆盖未通过态);- 与看板顶栏「王老板」身份一致,登录态贯穿商家端
标注6 · 口径:老板专用账号与员工免登录权限模型:- 提示:「这是老板专用账号,全店只有一个。员工无需登录。如忘记密码请用注册手机号找回」;- 权限模型:- 单店单老板账号,无员工账号体系 - 员工无需登录(店内共用看板?);- 待确认:员工是否真的无需账号(多员工场景如何区分操作人/技师排班)
标注7 · 差异:找回密码手机号与客户张小华手机号相同:- 找回密码手机号为 1386688,与用户端客户「张小华」脱敏手机号完全相同(确认预约页/我的预约页均为 138****6688);- 差异:商家老板账号绑定手机号与客户张小华手机号重合,若为真实数据存在账号归属冲突;→ 建议确认:商家账号绑定手机号与客户手机号是否应隔离(演示数据巧合需替换)
标注8 · 差异:商家端密码登录 vs 用户端验证码登录:- 认证体系对比:商家端 = 账号 + 密码;用户端(用户登录页)= 手机号 + 短信验证码;- 两端认证方式不同:用户端免密短信登录(自动建档),商家端密码登录(固定账号);- 规则:两端账号体系独立管理;商家账号在用户端不可见;- 待确认:是否需要统一账号体系(如商家也可用手机号+验证码)
标注9 · 差异:忘记密码链接未落地:- 「忘记密码?」链接为无 href 空链接,点击无响应;→ 建议确认:找回密码流程(用注册手机号 138****6688 短信重置?),与用户端验证码通道是否复用
标注10 · 暂缓:产品署名:单店预约系统:- 页脚「© 某某理发店 · 由 单店预约系统 提供」;- 产品署名:单店预约系统(SaaS 单店版);- 口径:当前原型为单店场景,多店/连锁支持不在本期范围
7.12 待确认
页面以「待确认」为核心;提供「🔄 刷新」按钮、「📨 一键群发短信催确认」按钮、「查看详情」按钮、「📞 联系」按钮 等操作。
该页面承载的业务模块:商家端(商家端)、待确认(待确认)、待确认池(待确认池)
页面信息层级(标题结构):
- 待确认(主标题)
页面包含的控件:
- 「🔄 刷新」按钮
- 「📨 一键群发短信催确认」按钮
- 「查看详情」按钮
- 「📞 联系」按钮
- 「✓ 确认」按钮
- 「拒」按钮
页面跳转:
- 从本页可跳转到今日预约看板。
- 从本页可跳转到周日历视图。
- 从本页可跳转到待确认。
- 从本页可跳转到客户档案。
- 从本页可跳转到老客户偏好。
- 从本页可跳转到服务管理。
需求标注(来自原型评审):
标注1 · 结构:商家端侧边栏(待确认 正常):- 商家端侧边栏(与看板/周历/服务管理同布局):预约(今日看板/周日历/待确认 正常 角标 7) + 客户(客户档案/老客户偏好) + 配置(服务管理);- 角标 7 与页头「7 单等待中」、周历待确认 7 一致(本周待确认口径)
标注2 · 指标:页头:7 单等待中 · 已超时 1 单:- 页头:「待确认 · 需要你回复的预约请求 · 7 单等待中 · 已超时 1 单」;- 右侧按钮:🔄 刷新 + 📨 一键群发短信催确认(warn 橙色);- 口径:7 = 待确认总数(今日 5 + 明日 2),与侧边栏角标一致
标注3 · 指标:待确认统计:总数 7 / 2小时内 4 / 今日 5 / 明日 2:- 四张统计卡:待确认总数 7(比昨天+2)/ 2 小时内需回复 4(含 1 单超时)/ 今日时段 5(均可确认)/ 明日时段 2(需抢位);- 口径:- 7 = 今日 5 + 明日 2 - 「2 小时内需回复 4」的圈选规则未说明(按等待时长?按距服务时间?);- 待确认:「2 小时内需回复」与「今日时段/明日时段」的统计口径与圈选逻辑
标注4 · 口径:「2 小时内需回复 4」口径与超时判定:- 「2 小时内需回复 4(含 1 单超时)」:4 单的圈选对象不明(7 单中哪 4 单?);- 若按等待时长 >2 小时即超时,则陈芳(3h24m)与刘强(2h12m)均已超 2 小时,超时应为 2 而非 1;→ 建议确认:超时判定口径(提交后 2 小时未回复?)与「2 小时内需回复」的筛选逻辑,保证统计自洽
标注5 · 差异:超时判定不一致:刘强 2h12m 未标超时:- 等待时长徽标:黄色「已等 Xh Xm」(.wait)与红色「⚠ 已等 Xh Xm」(.wait.over 超时);- 差异:陈芳 3h24m 标红(over),刘强 2h12m 未标红——按「超 2 小时」口径刘强同样超时;→ 建议确认:超时阈值(2 小时)与 .over 触发条件一致,修正刘强等待徽标
标注6 · 结构:待确认卡结构与排序:- 待确认卡结构:左侧(日期 + 时间 + 时长 + 等待徽标)+ 头像 + 客户名(VIP·第N次) + 服务·技师·脱敏手机号 + 偏好/备注 + 操作按钮;- 7 张卡按提交时间倒序排列(3h24m → 5m);- 陈芳/刘强/孙先生/王芳 与今日看板待确认数据一致(服务/技师/手机号吻合)
标注7 · 规则:确认/拒绝/联系/详情操作:- 操作按钮:查看详情 / 📞 联系 / ✓ 确认(绿)/ 拒(红);- 规则:- 确认 = 通过预约并通知客户(与用户端待确认→已确认联动) - 拒 = 拒绝预约(需理由?未覆盖) - 联系 = 电话/短信联系客户 - 查看详情 = 完整预约信息;- 原型中 4 个按钮均无点击动作(占位)
标注8 · 差异:赵敏时段/状态与今日看板不一致:- 赵敏在此页为今天 19:30 待确认(精剪·王师傅),而今日看板页赵敏为 16:30 已确认(精剪·王师傅);- 同一客户同一服务,两页时间与状态不一致(若为两单需区分;若为同一单则矛盾);→ 建议确认:赵敏预约的真实时段与状态,修正跨页数据一致性
标注9 · 规则:超时催确认规则:2 小时发短信 / 4 小时再提醒:- 底部规则:「超过 2 小时未回复的预约,系统已自动发送 1 次催确认短信;超过 4 小时系统会再次提醒你」;- 规则:- 超 2 小时 → 自动发催确认短信 1 次(对客户?对商家?) - 超 4 小时 → 系统再次提醒商家;- 待确认:短信对象(催客户确认还是提醒商家处理)、提醒次数与渠道;与看板「3 单超 2 小时未确认已自动发短信 1 次」衔接
标注10 · 规则:一键群发短信催确认:- 「📨 一键群发短信催确认」:批量给全部待确认客户发催确认短信;- 规则:- 群发对象 = 当前筛选/全部待确认单 - 群发前应有确认弹窗(原型未覆盖);- 待确认:群发频率限制(防骚扰)、与单条催确认(看板短信催)的关系
标注11 · 口径:偏好与备注回显口径:- 待确认卡偏好/备注回显:陈芳「力道偏重、不聊天」、孙先生「冷烫」、王芳「染深棕色、头皮敏感」(偏好)与刘强「第一次来,希望短一点」、赵敏「剪刘海」(备注);- 口径:偏好来自客户档案沉淀,备注来自预约时填写;两字段同源展示,供商家确认前参考
7.13 客户档案
页面以「客户档案」为核心;提供文本输入框「搜索姓名 / 手机号 / 备注」、「📥 导出」按钮、「+ 新增客户」按钮、「📞 联系」按钮 等操作。
该页面承载的业务模块:商家端(商家端)、客户档案(客户档案)、客户列表(客户列表)、客户详情(客户详情)
页面信息层级(标题结构):
- 客户档案(主标题)
页面包含的控件:
- 文本输入框「搜索姓名 / 手机号 / 备注」
- 「📥 导出」按钮
- 「+ 新增客户」按钮
- 「📞 联系」按钮
- 「📨 发短信」按钮
- 「📅 帮他约」按钮
页面跳转:
- 从本页可跳转到今日预约看板。
- 从本页可跳转到周日历视图。
- 从本页可跳转到待确认。
- 从本页可跳转到客户档案。
- 从本页可跳转到老客户偏好。
- 从本页可跳转到服务管理。
需求标注(来自原型评审):
标注1 · 结构:商家端侧边栏(客户档案 正常):- 商家端侧边栏(同布局):预约(今日看板/周日历/待确认角标 7) + 客户(客户档案 正常/老客户偏好) + 配置(服务管理);- 客户组两个入口:客户档案(全部客户)与老客户偏好(偏好分析)
标注2 · 指标:客户总数统计:186 / VIP 23 / 新增 14:- 页头:「客户档案 · 共 186 位客户 · VIP 23 位 · 近 30 天新增 14 位」;- 右侧按钮:📥 导出(占位)+ ➕ 新增客户;- 口径:186 = 全部客户(含 VIP 23 + 新客 14,非互斥);与左侧分组计数一致
标注3 · 结构:左右分栏:客户列表 + 详情联动:- 主区左右分栏:左侧客户列表(380px)+ 右侧客户详情(自适应);- 左侧选中客户(.cu.正常)联动右侧详情展示;- 规则:点击列表客户切换右侧详情;原型默认选中张小华
标注4 · 结构:客户搜索:姓名/手机号/备注:- 搜索框🔍:支持按姓名 / 手机号 / 备注搜索客户;- 规则:搜索过滤左侧列表;原型未覆盖空结果态与模糊匹配规则
标注5 · 指标:客户分组:全部/VIP/新客/30天未到:- 客户分组:全部 186 / VIP 23 / 新客 14 / 30 天未到 38;- 口径:- VIP = 达到等级阈值的客户 - 新客 = 近 30 天新增 - 30 天未到 = 距上次到店超 30 天(流失风险客群);- 与看板「近 30 天未到店老客户 5 位」为同一口径的子集
标注6 · 结构:客户列表行结构与偏好摘要:- 客户列表行:头像 + 姓名(VIP 徽标) + 脱敏手机号 + 到店次数 + 偏好摘要(💡偏好 / 📅预约状态 / 📝备注);- 展示 8 位客户(186 位的子集示例):张小华/陈芳/王芳/李雷/孙先生/刘强/赵敏/周丽;- 规则:列表行偏好摘要取客户档案首条偏好;有近期预约时显示预约状态(如李雷「今天 10:30 已确认」)
标注7 · 指标:客户列表数据与全站各页一致:- 张小华列表数据跨页一致:第 8 次到店(我的预约页 8 次 ✓)、138****6688(确认预约/看板 ✓)、偏好「修短一点、鬓角修出形」(确认预约 .pref ✓);- 李雷「今天 10:30 已确认」(看板 ✓)、周丽「明天 16:30 待确认」(待确认页 ✓)、孙先生「冷烫」(待确认页 ✓);- 口径:客户档案为全站客户数据源,各页数据同源
标注8 · 结构:客户详情头:档案信息与消费:- 客户详情头:大号头像 + 姓名「张小华」+ ⭐VIP·第 8 次到店徽标 + 元信息(📞手机号 / 🎂1988 年·女 / 📅注册于 2023-03-15 / 💰累计消费 ¥1,860);- 口径:- 客户性别/生日为可选档案信息 - 注册日期 = 用户端手机号登录自动建档时间;- 待确认:性别/生日等隐私字段的采集与展示合规
标注9 · 规则:联系/发短信/帮他约(代客预约):- 详情操作:📞 联系 / 📨 发短信 / 📅 帮他约(primary);- 规则:- 联系 = 拨打电话 - 发短信 = 发送短信(营销/通知) - 帮他约 = 商家代客预约(新能力,跳预约流程并预填该客户);- 原型中 3 个按钮均无点击动作(占位)
标注10 · 指标:客户 KPI:到店/消费/距上次/确认率:- 客户 KPI 四格:到店次数 8 / 累计消费 ¥1,860 / 距上次 28 天 / 确认率 96%;- 距上次 28 天与看板「今日老客户 · 张小华 距上次 28 天」一致 ✓;- 待确认:- 确认率 96% 口径(8 次到店中 96%?含取消单分母) - 累计消费 ¥1,860 与历史明细(精剪×6 ¥528 + SPA×2 ¥336 + 染发 ¥380 ≈ ¥1,244)对账差异
标注11 · 差异:Tab 切换未生效:偏好与历史同时展示:- 详情 Tab 四个:偏好&备注(正常)/ 预约历史 / 短信记录 / 联系信息;- 差异:偏好&备注 Tab 激活时,下方「预约历史」区块(.hist)仍同时展示,Tab 切换逻辑未生效(短信记录/联系信息无对应内容);→ 建议确认:Tab 切换时仅展示对应区块内容,补齐短信记录/联系信息面板
标注12 · 结构:结构化偏好字段体系:- 结构化偏好字段:常做服务(精剪 6 次·SPA 2 次)/ 偏好师傅(王师傅 7/8 次选他)/ 习惯时段(周三/周六下午)/ 造型偏好 / 敏感事项(无)/ 沟通风格(喜欢简短、不爱聊天)/ 备注(本月活动想推头皮 SPA,已发过 1 次短信);- 口径:偏好为结构化字段沉淀(非自由文本),与「老客户偏好」页同源;备注含营销记录;- 规则:每次完成预约后自动更新统计(常做服务/偏好师傅次数)
标注13 · 口径:预约历史时间线与偏好沉淀:- 预约历史时间线(5 条):8/28 精剪¥88(新增偏好:鬓角修出形)/ 7/15 染发¥380(新增偏好:深棕色)/ 6/20 精剪¥88 / 5/12 精剪¥88 / 4/10 头皮SPA¥168,均已完成;- 规则:- 时间线仅展示最近 5 条(到店 8 次 > 5 条,需分页/展开) - 每次完成沉淀「新增偏好」标签;- 口径:历史明细含服务/技师/时长/金额/新增偏好
7.14 老客户偏好
页面围绕「老客户偏好」展开,主体是「偏好标签 · 点击筛选客户」;提供复选框、复选框、复选框、复选框 等操作。
该页面承载的业务模块:商家端(商家端)、老客户偏好(老客户偏好)、偏好客户群(偏好客户群)
页面信息层级(标题结构):
- 老客户偏好(主标题)
- 偏好标签 · 点击筛选客户(子区块)
页面包含的控件:
- 复选框
- 「📊 偏好报表」按钮
- 「+ 新建客户群」按钮
- 「📨 群发」按钮
- 「📨 给选中发短信」按钮
需求标注(来自原型评审):
标注1 · 差异:侧边栏与其他商家端页不一致:- 商家端侧边栏:预约(今日看板/周日历/待确认 7) + 客户(客户档案/老客户偏好 正常) + 配置(服务管理 / 营业时间 / 短信设置);- 差异:本页侧边栏与其他商家端页面不一致:- 图标用 emoji(📋📅⏳👥⭐🛠🕒📨)而非「•」 - 所有项无 data-goto(不可跳转) - 配置组多出「营业时间」「短信设置」两项;→ 建议确认:侧边栏统一样式与跳转,营业时间/短信设置是否本期页面
标注2 · 指标:页头:标签筛选客群 + 一键群发:- 页头:「老客户偏好 · 按偏好 / 行为标签筛选客户群,支持一键群发短信」;- 右侧按钮:📊 偏好报表 + ➕ 新建客户群(均占位);- 定位:客户营销中心,以标签为入口圈选客群并触达
标注3 · 指标:概览:老客户 163 / 未到 38 / VIP 23 / 可激活 17:- 概览四卡:老客户总数 163 / 30 天未到店 38 / VIP 客户 23 / 本月可激活 17;- 30 天未到 38、VIP 23 与客户档案页分组一致 ✓;- 口径:- 老客户 = 有历史到店记录的客户 - 本月可激活 = 7-30 天未到店且高复购可能(对应第 4 张群卡 17 位)
标注4 · 口径:老客户 163 与客户档案 186 口径关系:- 老客户总数 163 与客户档案页客户总数 186 的关系待明确(186 − 163 = 23 = VIP 数,疑为巧合);- 若 老客户 = 总客户 − 新客(14),应为 172;若 186 − 163 = 23 为其他口径需说明;→ 建议确认:老客户定义(首次到店 vs 有历史记录)与 186/163 的口径差异
标注5 · 结构:偏好标签云:标签+计数+筛选:- 偏好标签云:12 个标签(修短一点 42 / 刘海 38 / 深棕色 24 / 冷烫 19 / 力道偏重 15 / 不聊天 22 / 头皮敏感 11 / 鬓角修出形 17 / 周六 26 / 周三 31 / 王师傅 68 / 李师傅 42),已选 2(修短一点+刘海 正常);- 规则:- 标签来自客户档案「造型偏好/沟通风格/习惯时段/偏好师傅」结构化沉淀 - 标签计数 = 命中客户数 - 点击标签筛选客户群
标注6 · 规则:标签筛选:已选修短+刘海:- 标签筛选规则:已选「修短一点 + 刘海」两个标签(.ct.正常);- 规则:- 标签筛选为 AND(同时命中)逻辑 - 选中标签后联动下方群组卡(如第 2 张卡「偏好修短+刘海」) - 「已选 2」随选择实时更新;- 待确认:多标签组合的 AND/OR 规则与排除逻辑
标注7 · 结构:群组卡:30 天未到店·可能流失:- 群组卡 1「30 天未到店 · 可能流失」(38 位):张小华 VIP(28 天) / 陈芳 VIP(35 天) / 王芳 VIP(42 天) / 孙先生(62 天) / 李雷(31 天),未勾选孙先生;- 口径:30 天未到 = 距上次到店超 30 天,含 VIP(流失高成本);- 与看板「明日剩余时段建议外呼」「系统选出 5 位近 30 天未到店老客户」为同一客群口径
标注8 · 规则:群发/给选中发短信操作:- 群组卡操作:卡头「📨 群发」按钮 + 客户行 checkbox 多选 + 底部「📨 给选中发短信」;- 规则:- 勾选客户后底部显示已选数与费用 - 群发 = 向卡内全部客户发送,给选中发短信 = 仅已勾选;- 原型中按钮均无点击动作(占位)
标注9 · 指标:群发短信费用预估 ¥0.45:- 群组卡 1 底部:「已选 3 位 · 预估发送 ¥ 0.45」;- 口径:短信费用预估 = 已选人数 × 单价(3 条 × ¥0.15/条 = ¥0.45);- 待确认:短信单价 ¥0.15/条的计费来源(短信服务商价格)与费用扣减账户;与看板「短信发送统计」衔接
标注10 · 结构:客户行:偏好+未到店天数+勾选:- 客户行:checkbox + 头像 + 姓名(VIP 徽标) + 偏好摘要 + 右侧「未到店 X 天 / X 天前来过 / 新客」;- 口径:- 未到店天数 = 距上次到店 - 行为标签(未到/前来过/新客)驱动群组分类;- 跨卡复用:张小华同现于「30 天未到」「修短+刘海」「VIP」三张群卡(不同筛选维度命中同一客户属正常)
标注11 · 差异:群组口径重叠与非互斥关系:- 4 张群组卡:30 天未到店 38 位 / 偏好「修短+刘海」14 位 / VIP(10 次以上) 23 位 / 本月可激活(7-30 天) 17 位;- 差异:群组间口径存在重叠(张小华命中多组、李雷同时出现在第 1/2 组),群组非互斥;→ 建议确认:群组是否允许重叠(营销上重叠可接受,需明确不重复发短信的去重规则)
标注12 · 暂缓:营业时间/短信设置页未建(暂缓):- 配置组出现「🕒 营业时间」「📨 短信设置」两个新侧边栏项,对应设置页面未在原型建立;- 营业时间应支撑选时段可约时段、看板营业时段口径(当前两端 20:00/21:45 不一致待其配置化);- 暂缓:营业时间/短信设置为后续配置页,本期以原型占位呈现
8. 异常与边界处理
以下异常与边界情况来自原型评审中标记的「差异」与「暂缓」项,需在产品实现前确认处理方案:
- 服务列表页(服务列表)· 标注9:儿童剪发年龄限制写在服务名内:- 「儿童剪发(12 岁以下)」将适用人群限制直接写进服务名,而其余服务无适用人群说明;- 人群/年龄限制属于服务属性,应结构化(如适用人群字段)而非内嵌名称,否则影响搜索、筛选与展示一致性;→ 建议确认:是否新增「适用人群/年龄限制」服务字段,服务名只保留「儿童剪发」
- 服务列表页(服务列表)· 标注10:技师维度仅在快捷再约卡出现:- 「王师傅」技师只在快捷再约卡出现,服务列表与选时段流程未展示/选择技师维度;- 若技师可指定,选时段页应提供技师选择或筛选;若不可指定,快捷卡的技师展示易误导;→ 建议确认:用户端是否展示与选择技师,技师信息在哪些页面可见
- 服务列表页(服务列表)· 标注11:服务列表暂无搜索与分类筛选:- 当前仅 5 项服务,浏览无需搜索;服务条目增多后(>10)需要搜索框与分类筛选(如按男女/染烫/护理);- 标记为暂缓:服务数量增长后补充,预留列表接口的分页/筛选参数即可
- 选时段页(选时段)· 标注10::45 禁用状态:CSS 缺样式且原因未明:- 晚上 21:45 使用了 .disabled 类,但 CSS 中仅定义了 .date.disabled,未定义 .slot.disabled 样式,视觉上与可约态无区别,仅无法通过原型状态区分;- 且当前默认选「明天」,明天 21:45 被禁原因未在页面说明;→ 建议确认:21:45 禁用含义(今日已过时段?店铺打烊边界?)并补齐 .slot.disabled 视觉样式
- 确认预约页(确认预约)· 标注6:到店时间星期标注与日期刻度矛盾:- 到店时间展示「明天(周三)14:15 - 15:00」,其中 14:15-15:00 为 45 分钟=精剪服务时长,起止时间正确;- 差异:星期标注「(周三)」与选时段页日期刻度矛盾(明天=12 非周三=13);→ 建议确认:星期与日期的一致性
- 确认预约页(确认预约)· 标注14:备注为自由文本,后续可结构化沉淀偏好:- 备注为自由文本输入(placeholder 示例:刘海修薄/染深棕色/头皮敏感等),字段为可选;- 暂缓:当前自由文本可满足需求;后续可将常见备注(染烫偏好/过敏史)结构化沉淀为客户偏好,与「老客户偏好」联动
- 今日预约看板页(今日预约看板)· 标注5:看板日期 9/11 周三与选时段页日期刻度矛盾:- 本页日期为 2024-09-11 · 周三(真实日历正确),而选时段页日期刻度「昨天 10 / 今天 11 / 明天 12 / 周三 13」中把 13 号标为周三;- 若 9/11 为周三,则 9/13 应为周五,选时段页刻度整体错位 2 天;→ 建议确认:以 2024-09-11 周三为准,修正选时段/确认预约/我的预约页的日期-星期标注
- 今日预约看板页(今日预约看板)· 标注7:「已超时 0 单」与「3 单超 2 小时未确认」矛盾:- 内部矛盾:概览卡「待确认 · 已超时 0 单」与右侧今日提醒「3 单超过 2 小时未确认」直接冲突;- 若 3 单已超 2 小时未确认,则已超时数应为 3 而非 0;→ 建议确认:超时口径(2 小时未确认即超时?)与「已超时」统计的计算时机,修正两处数据一致性
- 今日预约看板页(今日预约看板)· 标注14:改约/短信催/确认/签到按钮无动作:- 预约行操作按钮(改约 / 短信催 / 确认 / 签到)均无 data-goto 与点击动作(纯样式占位);→ 建议确认:- 签到=核销到店并转已完成 - 确认=商家确认预约(与用户端待确认联动) - 短信催=向客户重发确认短信 - 改约=调整该预约时段,需二次确认与短信通知
- 周日历视图页(周日历视图)· 标注3:周刻度 9/11 周三与选时段页错位矛盾:- 周历表头刻度:周一 9/9 · 周二 9/10 · 周三 9/11(今天) · 周四 9/12 · 周五 9/13 · 周六 9/14 · 周日 9/15;- 与看板页「2024-09-11 周三」、真实日历一致(9/11=周三);- 差异:选时段页日期刻度「今天 11 / 明天 12 / 周三 13…」把 9/13 标为周三,与本节(9/13=周五)错位 2 天;→ 建议确认:统一以本节/看板刻度(9/11 周三)为准修正用户端各页日期星期
- 周日历视图页(周日历视图)· 标注10:「王芳」高频重复疑为演示数据:- 「王芳」在周历中高频重复(如 13:00 行同一小时出现 3 次、全天 20+ 次,且同日既有精剪又有染发/SPA),同一客户一周多时段大量堆叠不合常理;- 差异:疑为演示数据复制占位,非真实预约分布;→ 建议确认:替换为真实分布演示数据,或说明多人同名场景(若属同名需区分客户)
- 周日历视图页(周日历视图)· 标注11:周历 20:00 截止与用户端 21:45 可约矛盾:- 周历营业时段为 09:00-20:00(12 小时行),而用户端选时段页可约时段覆盖 09:00-21:45(含晚上 19:30/20:15/21:00/21:45);- 差异:两端营业/可约时段边界不一致(20:00 vs 21:45);→ 建议确认:店铺营业时间口径(营业结束时间),商家端周历与用户端可约时段统一
- 周日历视图页(周日历视图)· 标注13:导出功能占位待实现:- 「📥 导出」按钮为占位,无导出动作与格式定义;- 暂缓:导出(周报/预约清单 Excel/CSV)本期可不实现,预留导出接口即可
- 服务管理页(服务管理)· 标注4:表单预填精剪数据:新建/编辑模式未明:- 表单预填:时长 45、价格 88、图标 ✂(正常),与服务「精剪发型」数据一致;- 差异:表单顶部有「+ 新建服务」按钮但表单又常驻预填精剪数据,新建/编辑模式关系不明(新建应清空默认、编辑应回填所选服务);→ 建议确认:表单是新建模式(预填为默认值)还是当前选中服务的编辑态
- 服务管理页(服务管理)· 标注5:表单缺起价/分类/适用人群字段与列表口径不对应:- 列表价格展示为「¥ 88 起 / ¥ 380 起 / ¥ 580 起」(起价)与「¥ 168 / ¥ 58」(固定价),但新建表单价格字段为单一数值,无「是否起价」或价位档配置;- 列表分类标签(人气款/常规/推荐)在表单中无分类字段;「儿童剪发(12 岁以下)」的适用人群也无字段;→ 建议确认:服务数据模型补充价格档(起价)/ 分类 / 适用人群字段,与列表展示口径对齐
- 服务管理页(服务管理)· 标注11:编辑/复制/停用无动作且缺删除入口:- 操作列按钮:编辑 / 复制 / 停用,均无 data-goto 与点击动作(纯样式占位);- 底部提示提及「想要彻底删除请先确认没有关联订单」,但操作列无删除按钮(仅停用);→ 建议确认:- 删除入口与二次确认流程 - 编辑/复制的交互(复制=复制生成新服务草稿?) - 有历史订单服务的删除限制校验
- 服务管理页(服务管理)· 标注13:儿童剪发年龄限制内嵌服务名:- 「儿童剪发(12 岁以下)」将年龄限制写进服务名(#005),而其他服务无适用人群标识;- 与服务列表页同问题:适用人群应结构化(如适用人群字段)而非内嵌名称;→ 建议确认:新增「适用人群/年龄限制」服务字段(表单同步补充)
- 用户登录页(用户登录)· 标注8:第三方登录图标形式不统一:- 微信图标用 emoji「💬」、支付宝图标用文字「支」,图标形式不统一(emoji vs 文字);- 且微信官方图标通常为绿色气泡 Logo,💬 为普通对话气泡,易被误解;→ 建议确认:统一替换为微信/支付宝品牌 SVG 图标(风格与整套 UI 一致)
- 用户登录页(用户登录)· 标注10:用户协议/隐私政策链接为空:- 协议链接「《用户协议》」「《隐私政策》」为无 href 的空链接,点击无响应;→ 建议确认:协议内容页与埋点(同意行为是否留痕)
- 我的预约页(我的预约)· 标注8:「明天 12 周三」星期标注与日期刻度矛盾:- 预约卡日期「明天 12 周三」:明天=12 号,而选时段页日期刻度中周三=13 号,两者矛盾(12 应为周二);- 与确认预约页「明天(周三)」标注错误同源;→ 建议确认:日期-星期对应数据以选时段页日期刻度(今天 11 / 明天 12 / 周三 13)为准统一修正
- 我的预约页(我的预约)· 标注10:同为待服务:已确认与待确认并存,确认规则未明:- 同为「待服务」预约:精剪(明天)已确认,头皮 SPA(9/22)仍待确认(可「催确认」),确认规则不明确;- 已确认者已发短信提醒、待确认者显示「商家会尽快回复」;→ 建议确认:预约确认机制——是商家逐单确认,还是到临近时间自动确认/按技师自动确认;「催确认」是否触发商家端提醒
- 我的预约页(我的预约)· 标注11:改约/取消/催确认按钮无动作:- 预约卡操作按钮:改约 / 取消(已确认卡)、催确认 / 取消(待确认卡);- 原型中改约、取消、催确认按钮均无 data-goto 与点击动作(纯样式占位);→ 建议确认:- 取消需满足「提前 2 小时」规则与二次确认弹窗 - 改约流程(复用选时段页还是直接调整时段) - 催确认的触发与商家端提醒机制
- 商家登录页(商家登录)· 标注7:找回密码手机号与客户张小华手机号相同:- 找回密码手机号为 1386688,与用户端客户「张小华」脱敏手机号完全相同(确认预约页/我的预约页均为 138****6688);- 差异:商家老板账号绑定手机号与客户张小华手机号重合,若为真实数据存在账号归属冲突;→ 建议确认:商家账号绑定手机号与客户手机号是否应隔离(演示数据巧合需替换)
- 商家登录页(商家登录)· 标注8:商家端密码登录 vs 用户端验证码登录:- 认证体系对比:商家端 = 账号 + 密码;用户端(用户登录页)= 手机号 + 短信验证码;- 两端认证方式不同:用户端免密短信登录(自动建档),商家端密码登录(固定账号);- 规则:两端账号体系独立管理;商家账号在用户端不可见;- 待确认:是否需要统一账号体系(如商家也可用手机号+验证码)
- 商家登录页(商家登录)· 标注9:忘记密码链接未落地:- 「忘记密码?」链接为无 href 空链接,点击无响应;→ 建议确认:找回密码流程(用注册手机号 138****6688 短信重置?),与用户端验证码通道是否复用
- 商家登录页(商家登录)· 标注10:产品署名:单店预约系统:- 页脚「© 某某理发店 · 由 单店预约系统 提供」;- 产品署名:单店预约系统(SaaS 单店版);- 口径:当前原型为单店场景,多店/连锁支持不在本期范围
- 待确认页(待确认)· 标注5:超时判定不一致:刘强 2h12m 未标超时:- 等待时长徽标:黄色「已等 Xh Xm」(.wait)与红色「⚠ 已等 Xh Xm」(.wait.over 超时);- 差异:陈芳 3h24m 标红(over),刘强 2h12m 未标红——按「超 2 小时」口径刘强同样超时;→ 建议确认:超时阈值(2 小时)与 .over 触发条件一致,修正刘强等待徽标
- 待确认页(待确认)· 标注8:赵敏时段/状态与今日看板不一致:- 赵敏在此页为今天 19:30 待确认(精剪·王师傅),而今日看板页赵敏为 16:30 已确认(精剪·王师傅);- 同一客户同一服务,两页时间与状态不一致(若为两单需区分;若为同一单则矛盾);→ 建议确认:赵敏预约的真实时段与状态,修正跨页数据一致性
- 客户档案页(客户档案)· 标注11:Tab 切换未生效:偏好与历史同时展示:- 详情 Tab 四个:偏好&备注(正常)/ 预约历史 / 短信记录 / 联系信息;- 差异:偏好&备注 Tab 激活时,下方「预约历史」区块(.hist)仍同时展示,Tab 切换逻辑未生效(短信记录/联系信息无对应内容);→ 建议确认:Tab 切换时仅展示对应区块内容,补齐短信记录/联系信息面板
- 老客户偏好页(老客户偏好)· 标注1:侧边栏与其他商家端页不一致:- 商家端侧边栏:预约(今日看板/周日历/待确认 7) + 客户(客户档案/老客户偏好 正常) + 配置(服务管理 / 营业时间 / 短信设置);- 差异:本页侧边栏与其他商家端页面不一致:- 图标用 emoji(📋📅⏳👥⭐🛠🕒📨)而非「•」 - 所有项无 data-goto(不可跳转) - 配置组多出「营业时间」「短信设置」两项;→ 建议确认:侧边栏统一样式与跳转,营业时间/短信设置是否本期页面
- 老客户偏好页(老客户偏好)· 标注11:群组口径重叠与非互斥关系:- 4 张群组卡:30 天未到店 38 位 / 偏好「修短+刘海」14 位 / VIP(10 次以上) 23 位 / 本月可激活(7-30 天) 17 位;- 差异:群组间口径存在重叠(张小华命中多组、李雷同时出现在第 1/2 组),群组非互斥;→ 建议确认:群组是否允许重叠(营销上重叠可接受,需明确不重复发短信的去重规则)
- 老客户偏好页(老客户偏好)· 标注12:营业时间/短信设置页未建(暂缓):- 配置组出现「🕒 营业时间」「📨 短信设置」两个新侧边栏项,对应设置页面未在原型建立;- 营业时间应支撑选时段可约时段、看板营业时段口径(当前两端 20:00/21:45 不一致待其配置化);- 暂缓:营业时间/短信设置为后续配置页,本期以原型占位呈现
9. 待确认事项
以下为原型评审遗留、需产品/开发在实现前确认的问题:
- 服务列表页(服务列表)· 标注2:「今日还剩 6 个时段可约」剩余时段指标口径:- 口径:今日剩余可约时段数 = 今日总时段数 − 已被预约/锁定时段数;- 数据应来自商家端排班/预约系统,与「今日预约看板」同源实时计算;- 原型中「6」为静态示例值,需后端接口提供;- 待确认:时段数是否按服务时长动态折算(如染发 120 分钟占 2 个半小时时段)
- 服务列表页(服务列表)· 标注6:「¥ 88 起」起价的定价口径:- 「起」表示该服务存在多价位档(如按技师等级:普通/高级/首席),展示价为最低档起步价;- 实际价格在选择技师/服务档位时确定;- 染发 ¥380 起、烫发 ¥580 起同理;头皮 SPA ¥168、儿童剪发 ¥58 无「起」应为单一固定价;- 待确认:价位档规则(是否按技师等级加价、加价幅度)
- 服务列表页(服务列表)· 标注7:服务时长口径与排班占用:- 时长展示为「约」值:精剪 45 / 染发 120 / 头皮 SPA 60 / 烫发 180 / 儿童剪发 30 分钟;- 口径:用于排班与时段占用计算,宜为服务标准时长(精确到分钟);「约」为展示值;- 待确认:展示「约」与排班计算用精确时长是否同一字段,还是展示层取整
- 服务列表页(服务列表)· 标注8:到店付款与取消时限规则:- 支付方式为到店付款(预约无线上支付环节);- 取消规则:取消请提前 2 小时;- 待确认:取消时限 2 小时为全局固定值还是商家可配置;超时取消是否有惩罚/违约规则;需与「我的预约」页取消入口规则一致
- 服务列表页(服务列表)· 标注9:儿童剪发年龄限制写在服务名内:- 「儿童剪发(12 岁以下)」将适用人群限制直接写进服务名,而其余服务无适用人群说明;- 人群/年龄限制属于服务属性,应结构化(如适用人群字段)而非内嵌名称,否则影响搜索、筛选与展示一致性;→ 建议确认:是否新增「适用人群/年龄限制」服务字段,服务名只保留「儿童剪发」
- 服务列表页(服务列表)· 标注10:技师维度仅在快捷再约卡出现:- 「王师傅」技师只在快捷再约卡出现,服务列表与选时段流程未展示/选择技师维度;- 若技师可指定,选时段页应提供技师选择或筛选;若不可指定,快捷卡的技师展示易误导;→ 建议确认:用户端是否展示与选择技师,技师信息在哪些页面可见
- 选时段页(选时段)· 标注3:时长与技师信息回显口径:- 服务时长「约 45 分钟」与技师「王师傅」由服务列表所选服务带入并回显;- 技师在选时段页可见,与服务列表页快捷卡「王师傅」呼应,但本页无技师切换/选择入口;- 待确认:技师在用户端是否可选(若可选,应在此处或选时段时提供选择)
- 选时段页(选时段)· 标注6:默认选中「明天」与默认时段 14:15 的来源:- 默认选中「明天」且时段默认已选 14:15,底部按钮直接显示「下一步 · 明天 14:15」;- 待确认:默认选中值的来源(是上次预约的推荐值,还是当前时间自动推算的最早可约时段);- 若为默认推荐,需与快捷再约逻辑(服务列表页「按上次再约一次」)保持一致
- 选时段页(选时段)· 标注8:「剩 1」名额口径与多名额时段规则:- 10:30 时段显示「已有人约 · 剩 1」,说明单个时段存在多个名额,已被约去部分;- 待确认:名额口径——按多名技师同时段各接一客,还是按服务人数/工位容量计算;- 名额数需与商家端排班(技师数/工位)数据同源,实时扣减
- 选时段页(选时段)· 标注10::45 禁用状态:CSS 缺样式且原因未明:- 晚上 21:45 使用了 .disabled 类,但 CSS 中仅定义了 .date.disabled,未定义 .slot.disabled 样式,视觉上与可约态无区别,仅无法通过原型状态区分;- 且当前默认选「明天」,明天 21:45 被禁原因未在页面说明;→ 建议确认:21:45 禁用含义(今日已过时段?店铺打烊边界?)并补齐 .slot.disabled 视觉样式
- 选时段页(选时段)· 标注11:时段粒度随服务时长变化规则:- 时段间隔为 45 分钟(09:00 → 09:45 → 10:30 → 11:15),与服务时长「约 45 分钟」一致;- 规则:时段粒度 = 服务标准时长,不同服务(30~180 分钟)应生成对应粒度的时段;- 待确认:长时间服务(如染发 120 分钟)的时段如何折算/拼接,与剩余名额计算联动
- 确认预约页(确认预约)· 标注4:「¥ 88 起」起价与发型师等级价格联动:- 价格显示「¥ 88 起」,与服务列表页一致,仍为起价而非最终价;- 结合本页发型师分级(高级/资深/普通),推断实际价格按发型师等级浮动;- 待确认:各等级加价规则(如高级+XX、资深+XX)与最终价格的计算与展示时机
- 确认预约页(确认预约)· 标注5:到店时间回显与星期标注:- 到店时间回显「明天(周三)14:15 - 15:00」(日期 · 起止时间),右上角「修改」跳选时段页;- 差异:选时段页日期刻度中「明天」=12 号、而「周三」=13 号,两者不是同一天,此处将「明天」与「周三」混标为同一天;→ 建议确认:到店时间的星期标注与日期数据的对应关系(以日期刻度为准)
- 确认预约页(确认预约)· 标注6:到店时间星期标注与日期刻度矛盾:- 到店时间展示「明天(周三)14:15 - 15:00」,其中 14:15-15:00 为 45 分钟=精剪服务时长,起止时间正确;- 差异:星期标注「(周三)」与选时段页日期刻度矛盾(明天=12 非周三=13);→ 建议确认:星期与日期的一致性
- 确认预约页(确认预约)· 标注8:发型师选择:不指定/指定与等级分档:- 发型师选择:不指定(就近安排) / 王师傅(高级·12年) / 李师傅(资深·8年) / 张师傅(普通·3年);- 默认选中王师傅(.sty.正常),与服务列表页快捷再约「王师傅」一致;- 规则:- 不指定 = 商家就近安排,可选任一等级 - 指定后按等级影响价格档(高级/资深/普通);- 待确认:不指定时按什么策略排人、指定与价格档的联动规则
- 确认预约页(确认预约)· 标注11:老客户偏好回填与可修改规则:- 老客户偏好回填:「上次偏好:修短一点、鬓角修出形。下次来默认按这个安排,可备注修改」;- 规则:- 偏好来自客户档案/历史记录,与商家端「老客户偏好」页数据同源 - 默认带入且可在备注中修改 - 备注修改是否回写档案需确认;- 待确认:偏好字段是否结构化(发型偏好/染烫偏好等),还是自由文本
- 确认预约页(确认预约)· 标注13:确认预约提交与短信提醒:- 底部主按钮「确认预约」+ 提示「预约成功后立刻发短信提醒」;- 规则:- 点击提交预约,成功后向用户手机发短信确认 - 原型无提交反馈态(成功/失败/重复提交防抖);- 待确认:提交后跳转「我的预约」还是预约成功页;短信模板内容
- 今日预约看板页(今日预约看板)· 标注1:商家端侧边栏导航与分组:- 商家端侧边栏:logo「某某理发店 · 工作台」+ 三组导航;- 预约:今日看板(正常) / 周日历 / 待确认(红点角标 7);- 客户:客户档案 / 老客户偏好;- 配置:服务管理;- 各入口 data-goto 对应页面:周日历 pmtnr9iixv1zx、待确认 pmtnrs3zmr0pt、客户档案 pmtnrs40bsd46、老客户偏好 pmtnrs40vpf2s、服务管理 pmtnr9ijf15bn
- 今日预约看板页(今日预约看板)· 标注2:待确认角标 7 与今日待确认 3 口径不同:- 侧边栏「待确认」角标显示 7,而本页概览「待确认」为 3、今日预约 Tab「待确认 3」;- 口径差异:侧边栏角标应为全量(跨日期)待确认数,概览/Tab 为今日待确认数;- 待确认:角标口径(全部待确认 vs 今日待确认)需在侧边栏明确,避免与今日看板混淆
- 今日预约看板页(今日预约看板)· 标注4:页头:日期与单量概览:- 页头:「今日看板 · 周三 · 9 月 11 日 · 共 12 单」+ 日期切换器「2024-09-11 · 周三」+ 导出📥 + 看周视图📅(data-goto=pmtnr9iixv1zx);- 左侧 ‹ › 可切换查看其他日期看板;- 口径:共 12 单 = 今日全部预约(含待确认+已确认)
- 今日预约看板页(今日预约看板)· 标注5:看板日期 9/11 周三与选时段页日期刻度矛盾:- 本页日期为 2024-09-11 · 周三(真实日历正确),而选时段页日期刻度「昨天 10 / 今天 11 / 明天 12 / 周三 13」中把 13 号标为周三;- 若 9/11 为周三,则 9/13 应为周五,选时段页刻度整体错位 2 天;→ 建议确认:以 2024-09-11 周三为准,修正选时段/确认预约/我的预约页的日期-星期标注
- 今日预约看板页(今日预约看板)· 标注6:概览统计:今日 12 / 已确认 9 / 待确认 3 / 明日余 6:- 四张概览卡:今日预约 12(↑比昨天+3)/ 已确认 9(3 单待客户回复)/ 待确认 3(已超时 0 单)/ 明日剩余时段 6(建议主动外呼);- 口径:- 今日预约=待确认+已确认(3+9=12) - 已确认 9 中 3 单「待客户回复」= 已发短信待客户回执 - 明日剩余时段 6 与用户端「今日还剩 6 个时段可约」数字相同但所指日期不同(用户端今日 vs 商家端明日),需核对该指标口径
- 今日预约看板页(今日预约看板)· 标注7:「已超时 0 单」与「3 单超 2 小时未确认」矛盾:- 内部矛盾:概览卡「待确认 · 已超时 0 单」与右侧今日提醒「3 单超过 2 小时未确认」直接冲突;- 若 3 单已超 2 小时未确认,则已超时数应为 3 而非 0;→ 建议确认:超时口径(2 小时未确认即超时?)与「已超时」统计的计算时机,修正两处数据一致性
- 今日预约看板页(今日预约看板)· 标注8:今日预约行结构与操作规则:- 今日预约列表行:时间(含服务时长) + 客户头像 + 姓名(VIP·第N次/新客) + 服务·技师 + 脱敏手机号 + 偏好/备注 + 状态徽标 + 操作按钮;- 规则:- 已确认 → 操作【改约 / 签到】 - 待确认 → 操作【短信催 / 确认】;- 签到=客户到店核销,触发预约转已完成
- 今日预约看板页(今日预约看板)· 标注9:预约状态徽标与今日列表口径:- 预约卡状态徽标:已确认(绿 .confirmed) / 待确认(蓝 .待审核),与用户端「我的预约」状态机一致;- 已确认行可签到、待确认行可短信催/确认;无已取消/已完成态展示(今日列表仅待服务类);- 口径:看板默认展示今日全部待服务预约,按时间排序
- 今日预约看板页(今日预约看板)· 标注11:今日提醒:超时自动短信/发送统计/外呼建议:- 今日提醒三则(3 项):;1. 3 单超过 2 小时未确认(陈芳、刘强、孙先生 · 已自动发短信提醒 1 次);2. 今日共发送 18 条预约确认短信(成功 17 · 失败 1 号码错误);3. 明日仅剩 6 个时段,建议主动外呼(系统选出 5 位近 30 天未到店老客户);- 规则:- 预约超 2 小时未确认 → 系统自动向客户发短信提醒(每单 1 次?频率待确认) - 时段不足触发外呼建议并圈选流失风险客户
- 今日预约看板页(今日预约看板)· 标注12:短信发送统计与失败处理:- 短信发送统计:今日 18 条、成功 17、失败 1(号码错误);- 规则:- 发送失败需记录失败原因并提供重发/修正号码入口(原型未覆盖) - 失败计入发送统计口径,与用户端短信确认衔接;- 待确认:短信通道(第三方短信服务商)、模板与失败重试策略
- 今日预约看板页(今日预约看板)· 标注14:改约/短信催/确认/签到按钮无动作:- 预约行操作按钮(改约 / 短信催 / 确认 / 签到)均无 data-goto 与点击动作(纯样式占位);→ 建议确认:- 签到=核销到店并转已完成 - 确认=商家确认预约(与用户端待确认联动) - 短信催=向客户重发确认短信 - 改约=调整该预约时段,需二次确认与短信通知
- 周日历视图页(周日历视图)· 标注1:商家端侧边栏导航(与看板一致):- 商家端侧边栏(与今日看板同布局):logo + 预约(今日看板/周日历 正常/待确认角标 7) + 客户(客户档案/老客户偏好) + 配置(服务管理);- 各入口 data-goto 与看板页一致
- 周日历视图页(周日历视图)· 标注2:页头:本周 9/9-9/15 共 38 单:- 页头:「本周预约 · 9 月 9 日 - 9 月 15 日 · 共 38 单」+ 日期切换器「2024-09-09 ~ 09-15」;- 右侧「📥 导出」(占位)+「📋 今日看板」按钮跳看板页(data-goto=pmtnr9iicfp9q);- 口径:38 单 = 本周全部预约(已确认 31 + 待确认 7)
- 周日历视图页(周日历视图)· 标注3:周刻度 9/11 周三与选时段页错位矛盾:- 周历表头刻度:周一 9/9 · 周二 9/10 · 周三 9/11(今天) · 周四 9/12 · 周五 9/13 · 周六 9/14 · 周日 9/15;- 与看板页「2024-09-11 周三」、真实日历一致(9/11=周三);- 差异:选时段页日期刻度「今天 11 / 明天 12 / 周三 13…」把 9/13 标为周三,与本节(9/13=周五)错位 2 天;→ 建议确认:统一以本节/看板刻度(9/11 周三)为准修正用户端各页日期星期
- 周日历视图页(周日历视图)· 标注4:周合计 38 = 已确认 31 + 待确认 7 与角标口径:- 底部合计:本周合计 38 单 = 已确认 31 + 待确认 7(与页头 38 一致);- 侧边栏「待确认」角标 7 与本节待确认 7 一致 → 角标口径 = 本周待确认(非今日);- 与今日看板「今日待确认 3」区分:3=今日、7=本周;- 待确认:侧边栏角标是本周待确认还是全量(跨周)待确认,需明确定义
- 周日历视图页(周日历视图)· 标注8:预约事件块:时间+客户+服务·技师:- 事件块信息:开始时间 + 客户姓名(.t)+ 服务类型 · 技师(.n),按服务类型着色(cut/dye/spa/perm);- 规则:- 同一客户一天可有多个预约 - 事件按开始时间落在对应小时行 - 点击事件应查看详情(原型未覆盖);- 事件未区分已确认/待确认状态(全部同色展示)
- 周日历视图页(周日历视图)· 标注10:「王芳」高频重复疑为演示数据:- 「王芳」在周历中高频重复(如 13:00 行同一小时出现 3 次、全天 20+ 次,且同日既有精剪又有染发/SPA),同一客户一周多时段大量堆叠不合常理;- 差异:疑为演示数据复制占位,非真实预约分布;→ 建议确认:替换为真实分布演示数据,或说明多人同名场景(若属同名需区分客户)
- 周日历视图页(周日历视图)· 标注11:周历 20:00 截止与用户端 21:45 可约矛盾:- 周历营业时段为 09:00-20:00(12 小时行),而用户端选时段页可约时段覆盖 09:00-21:45(含晚上 19:30/20:15/21:00/21:45);- 差异:两端营业/可约时段边界不一致(20:00 vs 21:45);→ 建议确认:店铺营业时间口径(营业结束时间),商家端周历与用户端可约时段统一
- 周日历视图页(周日历视图)· 标注12:低占用日主动营销老客户建议:- 底部提示「💡 周四、周六比较空,建议给老客户发短信」;- 规则:- 系统识别低占用日并给出主动营销建议 - 触发外呼/短信营销老客户,与看板「明日剩余 6 时段建议外呼」策略一致;- 待确认:低占用判定阈值、营销短信模板与老客户圈选规则
- 服务管理页(服务管理)· 标注1:商家端侧边栏(服务管理当前):- 商家端侧边栏(与看板/周历同布局):预约(今日看板/周日历/待确认角标 7) + 客户(客户档案/老客户偏好) + 配置(服务管理 正常);- 各入口 data-goto 与看板页一致
- 服务管理页(服务管理)· 标注4:表单预填精剪数据:新建/编辑模式未明:- 表单预填:时长 45、价格 88、图标 ✂(正常),与服务「精剪发型」数据一致;- 差异:表单顶部有「+ 新建服务」按钮但表单又常驻预填精剪数据,新建/编辑模式关系不明(新建应清空默认、编辑应回填所选服务);→ 建议确认:表单是新建模式(预填为默认值)还是当前选中服务的编辑态
- 服务管理页(服务管理)· 标注5:表单缺起价/分类/适用人群字段与列表口径不对应:- 列表价格展示为「¥ 88 起 / ¥ 380 起 / ¥ 580 起」(起价)与「¥ 168 / ¥ 58」(固定价),但新建表单价格字段为单一数值,无「是否起价」或价位档配置;- 列表分类标签(人气款/常规/推荐)在表单中无分类字段;「儿童剪发(12 岁以下)」的适用人群也无字段;→ 建议确认:服务数据模型补充价格档(起价)/ 分类 / 适用人群字段,与列表展示口径对齐
- 服务管理页(服务管理)· 标注11:编辑/复制/停用无动作且缺删除入口:- 操作列按钮:编辑 / 复制 / 停用,均无 data-goto 与点击动作(纯样式占位);- 底部提示提及「想要彻底删除请先确认没有关联订单」,但操作列无删除按钮(仅停用);→ 建议确认:- 删除入口与二次确认流程 - 编辑/复制的交互(复制=复制生成新服务草稿?) - 有历史订单服务的删除限制校验
- 服务管理页(服务管理)· 标注12:停用 vs 彻底删除规则:- 底部提示:「停用只是从客户端下架,不影响历史预约数据;想要彻底删除请先确认没有关联订单」;- 规则:- 停用 = 软下架(保留数据) - 删除 = 硬删除(需无关联订单);- 待确认:删除的关联订单检测逻辑、删除后历史数据如何处理
- 服务管理页(服务管理)· 标注13:儿童剪发年龄限制内嵌服务名:- 「儿童剪发(12 岁以下)」将年龄限制写进服务名(#005),而其他服务无适用人群标识;- 与服务列表页同问题:适用人群应结构化(如适用人群字段)而非内嵌名称;→ 建议确认:新增「适用人群/年龄限制」服务字段(表单同步补充)
- 用户登录页(用户登录)· 标注2:手机号输入与格式校验:- 手机号输入框,预填演示号「13888886688」(原型示例数据,非真实用户);- 规则:手机号为中国大陆 11 位手机号,需格式校验(原型未覆盖校验/错误提示态);- 待确认:手机号格式校验规则与错误提示文案
- 用户登录页(用户登录)· 标注3:短信验证码输入与获取按钮:- 短信验证码输入框(placeholder「6 位数字」)+ 右侧「获取验证码」按钮;- 规则:- 验证码为 6 位数字 - 点击获取后应发送短信并开始倒计时重发(原型未覆盖);- 待确认:验证码有效期(如 5 分钟)、发送频率限制(防刷)与错误次数上限
- 用户登录页(用户登录)· 标注4:获取验证码:发送逻辑与防刷机制待实现:- 「获取验证码」按钮:原型仅有样式(.code-btn:disabled 已定义置灰态),无发送逻辑、倒计时与重发机制;- 待确认:- 发送成功后按钮置灰倒计时(如 60 秒) - 同一手机号发送频率上限(防短信轰炸) - 验证码校验失败处理
- 用户登录页(用户登录)· 标注6:登录提交与登录态规则:- 主按钮「登 录」,点击跳服务列表页(data-goto=pmtnr9ig78x1f);- 规则:- 登录成功进入服务列表 - 手机号+验证码校验通过才可提交(原型未覆盖未通过态) - 游客态可浏览服务列表但无快捷再约/偏好回填(与确认预约页老客户识别联动);- 待确认:登录态保持(token 有效期)、退出登录入口位置
- 用户登录页(用户登录)· 标注7:微信/支付宝第三方登录占位:- 第三方登录占位:微信登录(💬)与支付宝登录(支)两个圆形图标按钮;- 规则:第三方登录需对接微信/支付宝开放平台授权回调(原型仅占位,无跳转与回调处理);- 待确认:第三方登录是否本期上线;授权后与手机号建档的账号打通策略
- 用户登录页(用户登录)· 标注8:第三方登录图标形式不统一:- 微信图标用 emoji「💬」、支付宝图标用文字「支」,图标形式不统一(emoji vs 文字);- 且微信官方图标通常为绿色气泡 Logo,💬 为普通对话气泡,易被误解;→ 建议确认:统一替换为微信/支付宝品牌 SVG 图标(风格与整套 UI 一致)
- 用户登录页(用户登录)· 标注9:登录即同意协议:条款链接未落地:- 「登录即同意《用户协议》与《隐私政策》」,为登录的前置协议条款;- 两个链接 `` 均无 href,协议内容未落地;→ 建议确认:补齐《用户协议》《隐私政策》页面/链接;是否需在注册建档时单独确认
- 用户登录页(用户登录)· 标注10:用户协议/隐私政策链接为空:- 协议链接「《用户协议》」「《隐私政策》」为无 href 的空链接,点击无响应;→ 建议确认:协议内容页与埋点(同意行为是否留痕)
- 我的预约页(我的预约)· 标注3:已到店 8 次 · VIP 客户等级口径:- 「已到店 8 次 · VIP 客户」:到店次数为累计完成预约数,VIP 等级由到店次数/消费额判定;- 口径:VIP 判定阈值未定义(8 次即 VIP?);等级数据与商家端「客户档案」「老客户偏好」同源;- 待确认:VIP 等级规则(次数/金额阈值、权益内容)
- 我的预约页(我的预约)· 标注4:预约统计:待服务/已完成/已取消:- 统计栏:待服务 2 / 已完成 8 / 已取消 0,与下方 Tab 数量一致;- 口径:- 待服务 = 已确认+待确认的未到期预约 - 已完成 = 到店完成 - 已取消 = 取消的预约;- 数据随预约状态变更实时更新
- 我的预约页(我的预约)· 标注8:「明天 12 周三」星期标注与日期刻度矛盾:- 预约卡日期「明天 12 周三」:明天=12 号,而选时段页日期刻度中周三=13 号,两者矛盾(12 应为周二);- 与确认预约页「明天(周三)」标注错误同源;→ 建议确认:日期-星期对应数据以选时段页日期刻度(今天 11 / 明天 12 / 周三 13)为准统一修正
- 我的预约页(我的预约)· 标注9:预约状态四态与状态机:- 预约状态四态:待确认(蓝 .upcoming) / 已确认(绿 .confirmed) / 已完成(灰 .done) / 已取消(红 .已取消);- 原型中出现待确认、已确认、已完成三态,已取消态样式已定义但无示例;- 口径:状态机 = 待确认 → 已确认 → 已完成(或 取消);与商家端「待确认」页联动
- 我的预约页(我的预约)· 标注10:同为待服务:已确认与待确认并存,确认规则未明:- 同为「待服务」预约:精剪(明天)已确认,头皮 SPA(9/22)仍待确认(可「催确认」),确认规则不明确;- 已确认者已发短信提醒、待确认者显示「商家会尽快回复」;→ 建议确认:预约确认机制——是商家逐单确认,还是到临近时间自动确认/按技师自动确认;「催确认」是否触发商家端提醒
- 我的预约页(我的预约)· 标注11:改约/取消/催确认按钮无动作:- 预约卡操作按钮:改约 / 取消(已确认卡)、催确认 / 取消(待确认卡);- 原型中改约、取消、催确认按钮均无 data-goto 与点击动作(纯样式占位);→ 建议确认:- 取消需满足「提前 2 小时」规则与二次确认弹窗 - 改约流程(复用选时段页还是直接调整时段) - 催确认的触发与商家端提醒机制
- 商家登录页(商家登录)· 标注4:天自动登录与忘记密码入口:- 登录辅助行:7 天内自动登录(checkbox 默认勾选)+「忘记密码?」链接(无 href);- 规则:- 勾选后 7 天内免登录(token 有效期 7 天) - 忘记密码跳找回流程(原型未覆盖);- 待确认:自动登录安全边界(管理端是否建议关闭)
- 商家登录页(商家登录)· 标注6:老板专用账号与员工免登录权限模型:- 提示:「这是老板专用账号,全店只有一个。员工无需登录。如忘记密码请用注册手机号找回」;- 权限模型:- 单店单老板账号,无员工账号体系 - 员工无需登录(店内共用看板?);- 待确认:员工是否真的无需账号(多员工场景如何区分操作人/技师排班)
- 商家登录页(商家登录)· 标注7:找回密码手机号与客户张小华手机号相同:- 找回密码手机号为 1386688,与用户端客户「张小华」脱敏手机号完全相同(确认预约页/我的预约页均为 138****6688);- 差异:商家老板账号绑定手机号与客户张小华手机号重合,若为真实数据存在账号归属冲突;→ 建议确认:商家账号绑定手机号与客户手机号是否应隔离(演示数据巧合需替换)
- 商家登录页(商家登录)· 标注8:商家端密码登录 vs 用户端验证码登录:- 认证体系对比:商家端 = 账号 + 密码;用户端(用户登录页)= 手机号 + 短信验证码;- 两端认证方式不同:用户端免密短信登录(自动建档),商家端密码登录(固定账号);- 规则:两端账号体系独立管理;商家账号在用户端不可见;- 待确认:是否需要统一账号体系(如商家也可用手机号+验证码)
- 商家登录页(商家登录)· 标注9:忘记密码链接未落地:- 「忘记密码?」链接为无 href 空链接,点击无响应;→ 建议确认:找回密码流程(用注册手机号 138****6688 短信重置?),与用户端验证码通道是否复用
- 待确认页(待确认)· 标注1:商家端侧边栏(待确认 正常):- 商家端侧边栏(与看板/周历/服务管理同布局):预约(今日看板/周日历/待确认 正常 角标 7) + 客户(客户档案/老客户偏好) + 配置(服务管理);- 角标 7 与页头「7 单等待中」、周历待确认 7 一致(本周待确认口径)
- 待确认页(待确认)· 标注2:页头:7 单等待中 · 已超时 1 单:- 页头:「待确认 · 需要你回复的预约请求 · 7 单等待中 · 已超时 1 单」;- 右侧按钮:🔄 刷新 + 📨 一键群发短信催确认(warn 橙色);- 口径:7 = 待确认总数(今日 5 + 明日 2),与侧边栏角标一致
- 待确认页(待确认)· 标注3:待确认统计:总数 7 / 2小时内 4 / 今日 5 / 明日 2:- 四张统计卡:待确认总数 7(比昨天+2)/ 2 小时内需回复 4(含 1 单超时)/ 今日时段 5(均可确认)/ 明日时段 2(需抢位);- 口径:- 7 = 今日 5 + 明日 2 - 「2 小时内需回复 4」的圈选规则未说明(按等待时长?按距服务时间?);- 待确认:「2 小时内需回复」与「今日时段/明日时段」的统计口径与圈选逻辑
- 待确认页(待确认)· 标注4:「2 小时内需回复 4」口径与超时判定:- 「2 小时内需回复 4(含 1 单超时)」:4 单的圈选对象不明(7 单中哪 4 单?);- 若按等待时长 >2 小时即超时,则陈芳(3h24m)与刘强(2h12m)均已超 2 小时,超时应为 2 而非 1;→ 建议确认:超时判定口径(提交后 2 小时未回复?)与「2 小时内需回复」的筛选逻辑,保证统计自洽
- 待确认页(待确认)· 标注5:超时判定不一致:刘强 2h12m 未标超时:- 等待时长徽标:黄色「已等 Xh Xm」(.wait)与红色「⚠ 已等 Xh Xm」(.wait.over 超时);- 差异:陈芳 3h24m 标红(over),刘强 2h12m 未标红——按「超 2 小时」口径刘强同样超时;→ 建议确认:超时阈值(2 小时)与 .over 触发条件一致,修正刘强等待徽标
- 待确认页(待确认)· 标注6:待确认卡结构与排序:- 待确认卡结构:左侧(日期 + 时间 + 时长 + 等待徽标)+ 头像 + 客户名(VIP·第N次) + 服务·技师·脱敏手机号 + 偏好/备注 + 操作按钮;- 7 张卡按提交时间倒序排列(3h24m → 5m);- 陈芳/刘强/孙先生/王芳 与今日看板待确认数据一致(服务/技师/手机号吻合)
- 待确认页(待确认)· 标注7:确认/拒绝/联系/详情操作:- 操作按钮:查看详情 / 📞 联系 / ✓ 确认(绿)/ 拒(红);- 规则:- 确认 = 通过预约并通知客户(与用户端待确认→已确认联动) - 拒 = 拒绝预约(需理由?未覆盖) - 联系 = 电话/短信联系客户 - 查看详情 = 完整预约信息;- 原型中 4 个按钮均无点击动作(占位)
- 待确认页(待确认)· 标注8:赵敏时段/状态与今日看板不一致:- 赵敏在此页为今天 19:30 待确认(精剪·王师傅),而今日看板页赵敏为 16:30 已确认(精剪·王师傅);- 同一客户同一服务,两页时间与状态不一致(若为两单需区分;若为同一单则矛盾);→ 建议确认:赵敏预约的真实时段与状态,修正跨页数据一致性
- 待确认页(待确认)· 标注9:超时催确认规则:2 小时发短信 / 4 小时再提醒:- 底部规则:「超过 2 小时未回复的预约,系统已自动发送 1 次催确认短信;超过 4 小时系统会再次提醒你」;- 规则:- 超 2 小时 → 自动发催确认短信 1 次(对客户?对商家?) - 超 4 小时 → 系统再次提醒商家;- 待确认:短信对象(催客户确认还是提醒商家处理)、提醒次数与渠道;与看板「3 单超 2 小时未确认已自动发短信 1 次」衔接
- 待确认页(待确认)· 标注10:一键群发短信催确认:- 「📨 一键群发短信催确认」:批量给全部待确认客户发催确认短信;- 规则:- 群发对象 = 当前筛选/全部待确认单 - 群发前应有确认弹窗(原型未覆盖);- 待确认:群发频率限制(防骚扰)、与单条催确认(看板短信催)的关系
- 待确认页(待确认)· 标注11:偏好与备注回显口径:- 待确认卡偏好/备注回显:陈芳「力道偏重、不聊天」、孙先生「冷烫」、王芳「染深棕色、头皮敏感」(偏好)与刘强「第一次来,希望短一点」、赵敏「剪刘海」(备注);- 口径:偏好来自客户档案沉淀,备注来自预约时填写;两字段同源展示,供商家确认前参考
- 客户档案页(客户档案)· 标注1:商家端侧边栏(客户档案 正常):- 商家端侧边栏(同布局):预约(今日看板/周日历/待确认角标 7) + 客户(客户档案 正常/老客户偏好) + 配置(服务管理);- 客户组两个入口:客户档案(全部客户)与老客户偏好(偏好分析)
- 客户档案页(客户档案)· 标注7:客户列表数据与全站各页一致:- 张小华列表数据跨页一致:第 8 次到店(我的预约页 8 次 ✓)、138****6688(确认预约/看板 ✓)、偏好「修短一点、鬓角修出形」(确认预约 .pref ✓);- 李雷「今天 10:30 已确认」(看板 ✓)、周丽「明天 16:30 待确认」(待确认页 ✓)、孙先生「冷烫」(待确认页 ✓);- 口径:客户档案为全站客户数据源,各页数据同源
- 客户档案页(客户档案)· 标注8:客户详情头:档案信息与消费:- 客户详情头:大号头像 + 姓名「张小华」+ ⭐VIP·第 8 次到店徽标 + 元信息(📞手机号 / 🎂1988 年·女 / 📅注册于 2023-03-15 / 💰累计消费 ¥1,860);- 口径:- 客户性别/生日为可选档案信息 - 注册日期 = 用户端手机号登录自动建档时间;- 待确认:性别/生日等隐私字段的采集与展示合规
- 客户档案页(客户档案)· 标注10:客户 KPI:到店/消费/距上次/确认率:- 客户 KPI 四格:到店次数 8 / 累计消费 ¥1,860 / 距上次 28 天 / 确认率 96%;- 距上次 28 天与看板「今日老客户 · 张小华 距上次 28 天」一致 ✓;- 待确认:- 确认率 96% 口径(8 次到店中 96%?含取消单分母) - 累计消费 ¥1,860 与历史明细(精剪×6 ¥528 + SPA×2 ¥336 + 染发 ¥380 ≈ ¥1,244)对账差异
- 客户档案页(客户档案)· 标注11:Tab 切换未生效:偏好与历史同时展示:- 详情 Tab 四个:偏好&备注(正常)/ 预约历史 / 短信记录 / 联系信息;- 差异:偏好&备注 Tab 激活时,下方「预约历史」区块(.hist)仍同时展示,Tab 切换逻辑未生效(短信记录/联系信息无对应内容);→ 建议确认:Tab 切换时仅展示对应区块内容,补齐短信记录/联系信息面板
- 老客户偏好页(老客户偏好)· 标注1:侧边栏与其他商家端页不一致:- 商家端侧边栏:预约(今日看板/周日历/待确认 7) + 客户(客户档案/老客户偏好 正常) + 配置(服务管理 / 营业时间 / 短信设置);- 差异:本页侧边栏与其他商家端页面不一致:- 图标用 emoji(📋📅⏳👥⭐🛠🕒📨)而非「•」 - 所有项无 data-goto(不可跳转) - 配置组多出「营业时间」「短信设置」两项;→ 建议确认:侧边栏统一样式与跳转,营业时间/短信设置是否本期页面
- 老客户偏好页(老客户偏好)· 标注4:老客户 163 与客户档案 186 口径关系:- 老客户总数 163 与客户档案页客户总数 186 的关系待明确(186 − 163 = 23 = VIP 数,疑为巧合);- 若 老客户 = 总客户 − 新客(14),应为 172;若 186 − 163 = 23 为其他口径需说明;→ 建议确认:老客户定义(首次到店 vs 有历史记录)与 186/163 的口径差异
- 老客户偏好页(老客户偏好)· 标注6:标签筛选:已选修短+刘海:- 标签筛选规则:已选「修短一点 + 刘海」两个标签(.ct.正常);- 规则:- 标签筛选为 AND(同时命中)逻辑 - 选中标签后联动下方群组卡(如第 2 张卡「偏好修短+刘海」) - 「已选 2」随选择实时更新;- 待确认:多标签组合的 AND/OR 规则与排除逻辑
- 老客户偏好页(老客户偏好)· 标注9:群发短信费用预估 ¥0.45:- 群组卡 1 底部:「已选 3 位 · 预估发送 ¥ 0.45」;- 口径:短信费用预估 = 已选人数 × 单价(3 条 × ¥0.15/条 = ¥0.45);- 待确认:短信单价 ¥0.15/条的计费来源(短信服务商价格)与费用扣减账户;与看板「短信发送统计」衔接
- 老客户偏好页(老客户偏好)· 标注11:群组口径重叠与非互斥关系:- 4 张群组卡:30 天未到店 38 位 / 偏好「修短+刘海」14 位 / VIP(10 次以上) 23 位 / 本月可激活(7-30 天) 17 位;- 差异:群组间口径存在重叠(张小华命中多组、李雷同时出现在第 1/2 组),群组非互斥;→ 建议确认:群组是否允许重叠(营销上重叠可接受,需明确不重复发短信的去重规则)
10. 决策依据
- 邻里换物业务模式:同小区业主开放平台(谁都能发布)、全品类、交易方式当面/快递二选一(发布时必选)、私聊砍价、平台轻搭台不抽成。 —— 来自同分组项目「邻里换物」的决策参考:用户原话:「业务已确认:邻里换物(同小区业主开放平台、当面/快递自选、私聊砍价、全品类)」
11. 未来演进规划(Roadmap)
- v1.0(当前交付):跑通核心流程(状态机 待确认→已确认→已完成→已取消 闭环)。
- 后续版本:数据看板、消息推送、多端联动等增强(按业务优先级排期)。
*本 PRD 由原型工作台自动导出,业务口径请人工复核。*
测试用例
- 在文本输入框「输入框」、文本输入框「输入框」、多行文本输入框中填写有效内容
- 点击保存/提交按钮
- 点击页面中的「获取验证码」按钮
- 点击页面中的「登 录」按钮
- 在文本输入框「请输入手机号」、文本输入框「6 位数字」中填写有效内容
- 点击保存/提交按钮
- 点击页面中的「改约」按钮
- 点击页面中的「取消」按钮
- 点击页面中的「催确认」按钮
- 点击页面中的「取消」按钮
- 点击页面中的「🔍」按钮
- 点击页面中的「🔔」按钮
- 点击页面中的「‹」按钮
- 点击页面中的「›」按钮
- 点击页面中的「‹」按钮
- 点击页面中的「›」按钮
- 点击页面中的「📥 导出」按钮
- 点击页面中的「📋 今日看板」按钮
- 点击页面中的「📥 导入」按钮
- 点击页面中的「+ 新建服务」按钮
- 点击页面中的「保存」按钮
- 点击页面中的「编辑」按钮
- 在文本输入框「如:男士精剪 / 染发 / 头皮 SPA」、文本输入框「一句话说明,让客户更好选」、文本输入框「搜索服务名…」中填写有效内容
- 点击保存/提交按钮
- 点击页面中的「登 录」按钮
- 在文本输入框「老板用户名 / 手机号」中填写有效内容
- 点击保存/提交按钮
- 点击页面中的「🔄 刷新」按钮
- 点击页面中的「📨 一键群发短信催确认」按钮
- 点击页面中的「查看详情」按钮
- 点击页面中的「📞 联系」按钮
- 点击页面中的「📥 导出」按钮
- 点击页面中的「+ 新增客户」按钮
- 点击页面中的「📞 联系」按钮
- 点击页面中的「📨 发短信」按钮
- 在文本输入框「搜索姓名 / 手机号 / 备注」中填写有效内容
- 点击保存/提交按钮
- 点击页面中的「📊 偏好报表」按钮
- 点击页面中的「+ 新建客户群」按钮
- 点击页面中的「📨 群发」按钮
- 点击页面中的「📨 给选中发短信」按钮
- 执行「商家确认」
- 执行「取消/拒单」
- 执行「到店签到」
- 执行「客户取消」
- 执行「改约重提」
- 点击跳转到我的预约的入口(按钮/链接)
- 点击跳转到确认预约的入口(按钮/链接)
- 点击跳转到选时段的入口(按钮/链接)
- 点击跳转到服务列表的入口(按钮/链接)
- 点击跳转到确认预约的入口(按钮/链接)
- 点击跳转到选时段的入口(按钮/链接)
- 点击跳转到服务列表的入口(按钮/链接)
- 点击跳转到今日预约看板的入口(按钮/链接)
- 点击跳转到周日历视图的入口(按钮/链接)
- 点击跳转到待确认的入口(按钮/链接)
- 点击跳转到客户档案的入口(按钮/链接)
- 点击跳转到老客户偏好的入口(按钮/链接)
- 点击跳转到服务管理的入口(按钮/链接)
- 点击跳转到今日预约看板的入口(按钮/链接)
- 点击跳转到周日历视图的入口(按钮/链接)
- 点击跳转到待确认的入口(按钮/链接)
- 点击跳转到客户档案的入口(按钮/链接)
- 点击跳转到老客户偏好的入口(按钮/链接)
- 点击跳转到服务管理的入口(按钮/链接)
- 点击跳转到今日预约看板的入口(按钮/链接)
- 点击跳转到周日历视图的入口(按钮/链接)
- 点击跳转到待确认的入口(按钮/链接)
- 点击跳转到客户档案的入口(按钮/链接)
- 点击跳转到老客户偏好的入口(按钮/链接)
- 点击跳转到服务管理的入口(按钮/链接)
- 点击跳转到服务列表的入口(按钮/链接)
- 点击跳转到服务列表的入口(按钮/链接)
- 点击跳转到确认预约的入口(按钮/链接)
- 点击跳转到今日预约看板的入口(按钮/链接)
- 点击跳转到今日预约看板的入口(按钮/链接)
- 点击跳转到周日历视图的入口(按钮/链接)
- 点击跳转到待确认的入口(按钮/链接)
- 点击跳转到客户档案的入口(按钮/链接)
- 点击跳转到老客户偏好的入口(按钮/链接)
- 点击跳转到服务管理的入口(按钮/链接)
- 点击跳转到今日预约看板的入口(按钮/链接)
- 点击跳转到周日历视图的入口(按钮/链接)
- 点击跳转到待确认的入口(按钮/链接)
- 点击跳转到客户档案的入口(按钮/链接)
- 点击跳转到老客户偏好的入口(按钮/链接)
- 点击跳转到服务管理的入口(按钮/链接)
- 不填写必填字段:phone、createdAt
- 提交表单
- 不填写必填字段:name、enabled
- 提交表单
- 不填写必填字段:name、durationMin、price、enabled
- 提交表单
- 不填写必填字段:customerId、serviceId、startAt、endAt、status、createdAt
- 提交表单
- 不填写必填字段:appointmentId、toStatus、changedAt
- 提交表单
- 不填写必填字段:customerId、tag、updatedAt
- 提交表单
- 不填写必填字段:customerId、content、status、sentAt
- 提交表单
- 不填写必填字段:name、ownerPhone
- 提交表单
- 复现标注描述的操作路径
- 观察系统行为是否符合规则
- 复现标注描述的操作路径
- 观察系统行为是否符合规则
- 复现标注描述的操作路径
- 观察系统行为是否符合规则
- 复现标注描述的操作路径
- 观察系统行为是否符合规则
- 复现标注描述的操作路径
- 观察系统行为是否符合规则
- 复现标注描述的操作路径
- 观察系统行为是否符合规则
- 复现标注描述的操作路径
- 观察系统行为是否符合规则
- 复现标注描述的操作路径
- 观察系统行为是否符合规则
- 复现标注描述的操作路径
- 观察系统行为是否符合规则
- 复现标注描述的操作路径
- 观察系统行为是否符合规则
- 复现标注描述的操作路径
- 观察系统行为是否符合规则
- 复现标注描述的操作路径
- 观察系统行为是否符合规则
- 复现标注描述的操作路径
- 观察系统行为是否符合规则
- 复现标注描述的操作路径
- 观察系统行为是否符合规则
- 复现标注描述的操作路径
- 观察系统行为是否符合规则
- 复现标注描述的操作路径
- 观察系统行为是否符合规则
- 复现标注描述的操作路径
- 观察系统行为是否符合规则
- 复现标注描述的操作路径
- 观察系统行为是否符合规则
- 复现标注描述的操作路径
- 观察系统行为是否符合规则
- 复现标注描述的操作路径
- 观察系统行为是否符合规则
- 复现标注描述的操作路径
- 观察系统行为是否符合规则
- 复现标注描述的操作路径
- 观察系统行为是否符合规则
- 复现标注描述的操作路径
- 观察系统行为是否符合规则
- 复现标注描述的操作路径
- 观察系统行为是否符合规则
- 复现标注描述的操作路径
- 观察系统行为是否符合规则
- 复现标注描述的操作路径
- 观察系统行为是否符合规则
- 复现标注描述的操作路径
- 观察系统行为是否符合规则
- 复现标注描述的操作路径
- 观察系统行为是否符合规则
- 复现标注描述的操作路径
- 观察系统行为是否符合规则
- 复现标注描述的操作路径
- 观察系统行为是否符合规则
- 复现标注描述的操作路径
- 观察系统行为是否符合规则
- 复现标注描述的操作路径
- 观察系统行为是否符合规则
- 复现标注描述的边界或冲突操作
- 复现标注描述的边界或冲突操作
- 复现标注描述的边界或冲突操作
- 复现标注描述的边界或冲突操作
- 复现标注描述的边界或冲突操作
- 复现标注描述的边界或冲突操作
- 复现标注描述的边界或冲突操作
- 复现标注描述的边界或冲突操作
- 复现标注描述的边界或冲突操作
- 复现标注描述的边界或冲突操作
- 复现标注描述的边界或冲突操作
- 复现标注描述的边界或冲突操作
- 复现标注描述的边界或冲突操作
- 复现标注描述的边界或冲突操作
- 复现标注描述的边界或冲突操作
- 复现标注描述的边界或冲突操作
- 复现标注描述的边界或冲突操作
- 复现标注描述的边界或冲突操作
- 复现标注描述的边界或冲突操作
- 复现标注描述的边界或冲突操作
- 复现标注描述的边界或冲突操作
- 复现标注描述的边界或冲突操作
- 复现标注描述的边界或冲突操作
- 复现标注描述的边界或冲突操作
- 复现标注描述的边界或冲突操作
- 复现标注描述的边界或冲突操作
- 复现标注描述的边界或冲突操作
- 复现标注描述的边界或冲突操作
- 复现标注描述的边界或冲突操作
- 复现标注描述的边界或冲突操作
- 复现标注描述的边界或冲突操作
- 复现标注描述的边界或冲突操作