Appearance
产品与规格
本文档介绍产品(SPU)与规格(SKU)的概念及其在智能设备中的应用。
基本概念
产品(SPU)
产品(SPU,Standard Product Unit) 是指功能相同的一类设备,不区分具体规格。
- 同一产品下的设备,核心功能完全一致
- APP 可以使用相同的控制逻辑和界面
- 用户无需关心具体是哪个规格
示例:
| 产品 | 说明 |
|---|---|
| 智能门锁 X100 | 一款支持指纹、密码、卡片的智能门锁 |
| 智能猫眼 M200 | 一款支持视频通话的智能猫眼 |
规格(SKU)
规格(SKU,Stock Keeping Unit) 是指产品的具体配置,区分外观、性能等差异。
- 同一产品下可以有多个规格
- 规格之间的差异通常是外观、材质、性能参数等
- 这些差异不影响核心功能
示例:
| 产品 | 规格 | 差异 |
|---|---|---|
| 智能门锁 X100 | X100-BK | 黑色款 |
| 智能门锁 X100 | X100-SV | 银色款 |
| 智能门锁 X100 | X100-GD | 金色款 |
| 智能猫眼 M200 | M200-1080P | 1080P 分辨率 |
| 智能猫眼 M200 | M200-2K | 2K 分辨率 |
型号
型号是"某产品的某规格"的泛称。当我们说"某个型号"时,指的是一个具体的产品规格组合。
例如:"X100-BK"是智能门锁 X100 的黑色款型号。
划分原则
什么应该作为规格区分
以下差异应通过不同规格来区分:
| 类型 | 示例 |
|---|---|
| 外观 | 颜色、材质、尺寸 |
| 性能参数 | 分辨率、电池容量、存储空间 |
| 配置等级 | 标准版、高配版、旗舰版 |
核心判断标准: 这些差异在设备出厂后固定不变,且不影响核心功能。
什么不应该作为规格区分
以下差异不应该通过规格来区分,而应该通过设备能力字段来判断:
| 类型 | 示例 | 原因 |
|---|---|---|
| 可选模块 | 是否有摄像头、是否有 WiFi 模块 | 模块化设计,可能后期加装 |
| 功能开关 | 是否启用某功能 | 可通过固件配置 |
| 传感器配置 | 是否有指纹模块、是否有人脸识别 | 影响功能可用性,需动态判断 |
为什么模块化配置不用规格区分?
考虑一个模块化智能门锁:
- 基础版:指纹 + 密码
- 升级版:指纹 + 密码 + 摄像头
- 完整版:指纹 + 密码 + 摄像头 + WiFi
如果用规格区分,会导致:
- 规格数量爆炸(颜色 × 模块组合)
- 用户后期加装模块后,规格信息与实际不符
- APP 需要维护复杂的规格 → 功能映射表
正确做法是:通过设备能力字段动态判断设备具备哪些模块。
协议中的应用
BLE 广播
BLE 广播中只包含产品ID(deviceProductId):
- APP 据此判断设备类型,展示对应图标和名称
- 同一产品的不同规格使用相同的产品ID
设备信息响应
设备信息响应中包含型号(model):
- 型号标识具体的产品规格
- 用于售后服务、固件升级等场景
设备能力
设备的模块化能力通过专门的能力字段返回:
protobuf
message DeviceCapabilities {
bool has_camera = 1; // 是否有摄像头
bool has_wifi = 2; // 是否有 WiFi 模块
bool has_fingerprint = 3; // 是否有指纹模块
bool has_face = 4; // 是否有人脸识别
bool has_nfc = 5; // 是否有 NFC 读卡器
// ...
}APP 应根据能力字段动态调整界面和功能,而非根据规格硬编码。
总结
| 概念 | 说明 | 协议字段 |
|---|---|---|
| 产品 | 功能相同的一类设备 | deviceProductId |
| 规格 | 产品的具体配置(外观、性能等) | - |
| 型号 | 某产品的某规格(泛称) | model |
| 设备能力 | 模块配置,决定可用功能 | DeviceCapabilities |
设计原则
- 产品决定"能做什么":同一产品的设备功能一致
- 规格决定"长什么样":外观、性能参数等静态差异
- 能力字段决定"有什么":模块化配置等动态差异
