需求说明书 · Requirements Specification
打开可交互原型在现有拼豆小程序中新增「拼豆板」链路:用户从「我的图库」或「官方图纸」里选一张图纸,把它接到线下蓝牙 LED 拼豆板上, 实现「哪里亮灯拼哪里」:用户在小程序点一个色号,拼豆板上属于该颜色的格位全部亮起,照着灯位放豆即可, 不再需要对照纸质图纸逐格数、逐格找色。
现有小程序已具备完整的图纸生产能力:用户上传图片,小程序转换为拼豆图纸,存进「我的图库」;平台另外提供一批「官方图纸」供用户直接取用。 到此为止,用户拿到的是一张静态图纸。
拼豆的实际操作发生在图纸之外。用户拿着图纸坐到桌前后,真正耗时的不是放豆,而是对位:
这三点共同构成了新手的入门门槛,也是老玩家最主要的疲劳来源。
引入蓝牙 LED 拼豆板作为「会发光的图纸」,把对位这件事从用户的眼睛转移到硬件上。 用户在小程序里点选一个色号,板子上属于该颜色的所有格位同时亮起,用户只需要把这个颜色的豆子放到亮着的位置。
| 目标 | 衡量方式 |
|---|---|
| 降低对位成本 | 用户无需再逐格数行列,只需识别亮灯位置 |
| 缩短开拼路径 | 从点击「发送到拼豆板」到板上第一次亮灯,≤ 3 步、≤ 20 秒 |
| 点亮响应及时 | 点击色号到板上亮灯,< 300 毫秒 |
| 硬件带动 | 为已购板用户提供完整闭环,形成小程序与硬件的互相引流 |
| 名词 | 含义 |
|---|---|
| 拼豆板 | 本项目对接的蓝牙 LED 硬件,板面为 104 × 104 个可独立点亮的灯位,每个灯位对应一颗豆的位置。 |
| 图纸 | 小程序把用户图片转换后得到的像素图,每个像素对应一颗豆,携带色号信息。 |
| 色号 | 豆子的颜色编号,如 A12、B16、E1,与实物豆瓶盖上的标签一致。 |
| 格位 | 板面上的一个坐标点,用 (X, Y) 表示,取值 0–103。 |
| 点亮 | 把某个色号在图纸中出现的全部格位坐标下发给板子,使这些灯位发光。 |
| 清屏 | 熄灭板面上当前所有亮着的灯位。切换色号前必须执行。 |
| 画板模式 | 板子接受手机实时绘制指令的工作状态,进入与退出由小程序控制。 |
图纸大于 104 × 104:本期在入口处直接拦截并引导用户缩小尺寸,不做分区拼接。 护眼模式:现行协议未提供独立指令,若做成开关实质上只是降低亮度,会误导用户,因此本期不做,柔光需求由亮度滑块承担。
下列事实来自《拼豆屏 BLE 通信协议 V1.4》与硬件方确认,是本期所有交互设计的前提条件,不可协商。
| 前提 | 对产品的影响 |
|---|---|
| 板面固定 104 × 104 | 图纸等于该尺寸时一一对应;小于时居中放置、四周留空;大于时无法使用。 |
| 板子无法回读插豆状态 | 硬件不上报哪些格位已经插了豆,因此拼豆进度只能由用户手动确认。这决定了「拼完这色」必须顺手、可撤销、不怕误触。 |
| 一条点亮指令只携带一个颜色 | 同一时刻板上只能亮一个色号。这不是产品取舍,而是协议形状。 |
| 点亮指令没有回执 | 小程序发出点亮指令后收不到硬件确认,界面只能采用乐观更新,无法给出「本次点亮失败」的精确提示。用户以实物板子上的亮灯为准,手机端不做板面模拟。 |
| 切换色号不会自动清屏 | 切色必须先发清屏再发新色,板上会出现一次「熄灭→亮起」。界面需要把这次闪烁处理成有意的切换动效,避免被理解为设备故障。 |
| 亮度取值 10–100 | 亮度滑块下限为 10,不能拖到 0。「全部熄灭」是独立的关显示指令,不是把亮度调到零。 |
| 广播包携带设备尺寸 | 搜索阶段即可读出对方是 104 × 104 还是 52 × 52,因此设备列表可以在连接之前就标注尺寸并拦截不匹配的板子。 |
设备名格式 PDD_<MAC后6位> |
设备列表、状态条中统一按此格式展示,例如 PDD_A1B2C3。 |
| 指令 | 用途 | 说明 |
|---|---|---|
| 0x8001 | 读取硬件信息 | 连接后读取屏幕尺寸、显示角度、当前亮度,用于初始化界面 |
| 0x8005 | 读取版本号 | 连接成功页展示固件版本 |
| 0x8004 | 设置亮度 | 取值 10–100,有回执 |
| 0x8006 | 屏显旋转 | 0° / 90° / 180° / 270°,有回执 |
| 0x0104 | 进入 / 退出画板 | 进入并清空、进入不清空、退出仍显示、退出还原,共四种 |
| 0x0109 | 点亮指定色号 | 携带一个 RGB 与该色全部格位坐标;超过 4096 字节自动分包,包间隔 50 毫秒;无回执 |
| 0x0107 | 开关屏幕显示 | 用于「全部熄灭 / 恢复显示」,有回执 |
用户从图纸库选定一张图纸进入,经过用料确认与设备连接,进入拼豆操作。三个页面之间可以自由回退。
| 步骤 | 页面 | 用户在做什么 | 原型 |
|---|---|---|---|
| 0 | 图纸库 我的图库 / 官方图纸 | 挑一张想拼的图纸,点进去 | 打开 → |
| 1 | 拼豆预览页 | 确认这张图要用哪些颜色、每种多少颗,决定开拼还是回去改 | 打开 → |
| 2 | 蓝牙连接页 | 把手机和板子连上(已连接过的设备会自动重连,此页不出现) | 打开 → |
| 3 | 拼豆板操作页 | 点色号 → 板上亮灯 → 放豆 → 标记完成 → 自动跳到下一色 | 打开 → |
用户点击「发送到拼豆板」后直接进入拼豆预览页,即使没有连接设备也能查看完整用料清单; 只有在点击「开始拼豆」时才要求连接。这样,没带板子、或只想核对用料的用户不会被一道连接墙挡住。
共 17 项功能。「验收标准」一列可直接用于开发自测与交付走查,每组下方附对应的原型入口。
| 编号 | 功能 | 说明 | 验收标准 |
|---|---|---|---|
| F1 | 图纸库入口 | 「我的图库」与「官方图纸」两个来源,均可选中一张图纸直接进入拼豆流程。 | 两个来源均可进入;卡片展示缩略图、名称、尺寸与颗数;对全部用户开放,无会员门槛。 |
| F2 | 我的图库 | 分「草稿」与「图纸」两栏,带标题搜索、图纸额度与分页。 | 额度显示「已用 N/10,剩余 M」;草稿栏明确说明未生成图纸不能拼豆;图纸卡展示图纸码与创建时间。 |
| F3 | 图纸尺寸校验 | 图纸任一边长超过 104 时无法发送,在入口处即拦截。 | 超尺寸时按钮置灰不可点,并给出「请先缩小尺寸」的提示;≤ 104 时按钮正常可点。 |
| 编号 | 功能 | 说明 | 验收标准 |
|---|---|---|---|
| F4 | 图纸信息展示 | 展示图纸预览、格数、总颗数、成品实物尺寸。 | 格数、总颗数与图纸数据一致;成品尺寸按 2.57mm/格 换算并保留一位小数。 |
| F5 | 用料清单 | 列出图纸用到的全部颜色,每行含色块、色号、色名、用量占比条、颗数。 | 颜色种类数与图纸一致;各色颗数之和等于总颗数;支持「按用量 / 按色号」两种排序。 |
| F6 | 小图纸居中示意 | 图纸小于 104 × 104 时,展示板面范围虚线框,图纸居中、四周留白。 | 虚线框代表 104 × 104 板面;图纸在框内居中;给出「将居中显示在 104×104 拼豆板上」的说明。 |
| 编号 | 功能 | 说明 | 验收标准 |
|---|---|---|---|
| F7 | 设备搜索与尺寸识别 | 过滤广播包,列出附近的拼豆板,并在连接前标注各设备的屏幕尺寸。 | 设备名按 PDD_xxxxxx 展示;每台设备带尺寸徽章;显示信号强度。 |
| F8 | 不匹配设备处理 | 尺寸与当前图纸不匹配的设备置灰但仍然列出。 | 不匹配设备可见但标注「尺寸不匹配」;误点后给出明确说明并引导换一台,不静默失败。 |
| F9 | 连接状态处理 | 覆盖未授权、蓝牙未开、搜索中、搜到、未搜到、连接中、连接成功、连接失败、尺寸不匹配共 9 种状态。 | 9 种状态均有独立文案;每种状态都提供明确的下一步操作按钮,不存在死路。 |
| F10 | 设备记忆与自动重连 | 连接成功后记住设备,下次自动静默重连。 | 已配对设备再次进入时不展示连接页;仅在自动重连失败时才展示。 |
| F11 | 连接成功信息 | 展示屏幕尺寸、电量、固件版本。 | 三项信息均来自设备实际读取,非写死。 |
| 编号 | 功能 | 说明 | 验收标准 |
|---|---|---|---|
| F12 | 色号点亮 | 点击色号,板上该颜色的全部格位亮起。 | 同一时刻只有一个色号处于点亮态;切色时先清屏再点亮;点击到亮灯 < 300ms;连点做防抖,不出现频闪。 |
| F13 | 图纸参照 | 手机上始终显示同一张固定的图纸,不做板面模拟,也不随选色、亮度、旋转变化。 | 图纸完整彩色显示且始终不变;不提供「只看当前色 / 全图」切换;点亮效果只发生在实物拼豆板上。 |
| F14 | 亮度调节 | 滑块调节板面亮度。 | 取值范围 10–100,下限不可拖到 0;初始值取自设备当前亮度;拖动结束后才下发指令。 |
| F15 | 屏显旋转 | 切换板面显示方向,适配板子横放 / 竖放。 | 支持 0° / 90° / 180° / 270°;手机预览图同步旋转;设置被记住。 |
| F16 | 全部熄灭 / 恢复 | 一键熄灭板面,便于拍照或休息。 | 走关显示指令而非亮度归零;再次点击可恢复;点击任一色号自动恢复显示。 |
| F17 | 进度管理 | 「拼完这色」标记当前颜色完成并自动跳到下一个待拼色号;支持按待拼 / 已完成 / 全部筛选。 | 进度按已完成色号的颗数累计;标记完成后 5 秒内可撤销;长按色号可直接切换完成状态;提供整体重置;界面明确标注「按你的勾选统计,拼豆板不会自动识别」。 |
以下截图取自可交互原型。原型的图纸、颗数与色号统计均为程序实算,色号点亮使用与协议载荷同源的坐标集合, 因此界面上出现的数字与行为可以直接作为开发参照。 下方每张卡片均可点击,会直接打开原型中对应的那个状态。
本版改动较大(入口改为图纸库、去掉板面模拟等),原有静态截图已与界面不符,暂以实时原型链接代替;界面定稿后会补回截图。评审时请直接点开原型查看。
拼豆板的入口。顶部分「我的图库」与「官方图纸」两个来源:前者是用户自己做的图纸,受图纸额度约束, 并分「草稿 / 图纸」两栏;后者由平台提供,不占额度。任选一张卡片即进入拼豆预览页。
打开原型 · 图纸库开拼前的确认页,回答用户一个问题:这张图要用哪些豆、每种多少颗。 页面同时提供「开始拼豆」和「返回修改图纸」两个出口,让用户在这里就能决定是继续还是回头调整。
打开原型 · 拼豆预览页这一页的价值全部在异常态。连不上蓝牙是硬件类功能最高频的流失点, 因此 9 种状态每一种都给出具体原因和明确的下一步动作,不出现「连接失败」四个字就结束的情况。
打开原型 · 蓝牙连接页点击任一状态直接进入原型中的该状态,也可在原型页面右侧的调试栏中切换。
核心页面。设计原则是一次只处理一个颜色:用户的注意力应该在实物板子上, 手机只负责「现在拼哪个色」和「这个色拼完了」两件事,因此这两个动作被放在常驻的底部操作区。
打开原型 · 拼豆板操作页| 场景 | 处理方式 |
|---|---|
| 未授权蓝牙权限 | 说明用途并提供授权入口,授权后自动开始搜索。 |
| 系统蓝牙未开启 | 提示打开蓝牙;iOS 无法直接跳转时说明在控制中心开启。 |
| 搜索不到设备 | 展开四条排查建议(电源与配对模式、被其他手机占用、蓝牙权限、距离),提供重新搜索。 |
| 连接失败 | 说明可能原因,提供重试与查看帮助。 |
| 搜到的是 52×52 板子 | 设备卡置灰并标注「本期不支持」;误点后说明本期只对接 104×104,引导换一台设备。 |
| 拼豆中途断线 | 顶部橙色提示条「已断开,正在重连」;色号面板不禁用,用户仍可查看色号手动对照;点击色号时提示当前无法点亮。 |
| 断线后重连成功 | 使用「进入画板不清空」,保留断线前的灯光,避免闪断。 |
| 切后台 / 熄屏后返回 | 恢复上次选中的色号、进度、亮度与旋转设置。 |
| 用户误点「拼完这色」 | 提供 5 秒撤销;也可长按色号手动切回未完成。 |
| 图纸中某色数量极大 | 坐标数据自动分包下发,包间隔 50 毫秒,对用户透明;界面不做分批。 |
| 用户没有拼豆板 | 在「未搜到设备」状态底部提供不占主视觉的购买引导文字链。 |
| 项 | 要求 |
|---|---|
| 运行平台 | 仅微信小程序移动端,不兼容 PC / 桌面端;页面按手机竖屏设计,不提供桌面布局。 |
| 适配设备 | 本期仅对接 104 × 104 拼豆板;其他尺寸设备在搜索阶段即识别并拦截。 |
| 响应性能 | 点击色号到板上亮灯 < 300 毫秒(含清屏步骤)。 |
| 传输 | 连接后协商 MTU 至 512;单色坐标超过 4096 字节时分包,包间隔 50 毫秒。 |
| 离线可用 | 未连接设备时,用料清单仍可完整查看。 |
| 状态持久化 | 拼豆进度不持久化:退出页面即清空,本期不支持「拼一半下次继续」。仅亮度、屏显方向等设备侧偏好保存在本地。 |
| 触控目标 | 主要操作控件不小于 44 × 44 点;色号格子不小于 64 点见方(用户手持镊子,操作精度低)。 |
| 视觉一致性 | 沿用现有小程序的浅色薄荷绿观感;橙色仅用于断连、超尺寸、图纸额度三类提示,每屏不超过一处。 |
| 色彩准确性 | 色号色块使用豆子实际颜色实色填充,不加渐变或装饰,保证用户肉眼比色准确。 |
| 文案 | 全部为简体中文;不出现协议指令号等技术术语。 |
| 交付物 | 说明 |
|---|---|
| 本需求说明书 | requirements.html,含功能清单与验收标准 |
| 可交互原型 | 图纸库index.html,入口 + 3 个页面全部合并为单文件,从 原型导览 进入 |
| 设计规划文档 | 设计决策与协议约束的推导过程,随交付单独提供 |
| 页面截图 | 界面定稿后补齐;当前以可交互原型为准 |
以第六章功能清单的「验收标准」列为准,逐条走查。其中下列九条为关键验收项, 任一不通过即视为未达交付标准: