本司设备联网管理平台产品与交付基线(完善版)

来源:本司设备联网管理.md。原文件保持不变,本文件将原始构想整理为可设计、可开发、可测试的需求基线。

1. 产品目标

建设统一的设备联网管理平台,先完成本司设备从产品定义、出厂录入、设备注册、联网鉴权、状态监测、用户绑定到远程控制的业务闭环,再扩展客户自有设备接入、企业多租户 SaaS、OpenAPI 和低代码小程序。

首期交付同时包含三类使用端:

  1. 平台管理后台:供平台管理员、运维人员管理产品、设备、用户、告警和指令。
  2. 平台后端:提供用户、设备和管理 API,并承接 MQTT/HTTP/TCP 接入层的领域能力。
  3. 用户小程序:供个人用户登录、扫码或输入绑定码、查看状态、控制本人设备。

2. 角色与权限

角色核心权限数据边界
平台管理员产品与物模型、设备、用户、告警、指令、审计、系统参数平台全部数据
平台运维设备注册与诊断、状态、指令、告警处置平台授权数据;不能修改高危系统配置
个人用户登录、绑定、解绑申请、查看遥测、控制设备仅本人绑定设备
企业管理员(二/三期)成员、设备、应用、接口凭证、工单本企业租户
设备身份鉴权、上报属性/事件、接收指令并返回 ACK仅设备自身 Topic/接口

3. 第一期:本司设备管理闭环(当前实现目标)

3.1 产品与物模型

  • 管理产品名称、ProductKey、品类、默认接入协议和物模型版本。
  • 同一产品下的设备共享属性、服务、事件定义;设备只保存运行值和差异化配置。
  • MVP 内置智能开关、RS485 网关和温湿度传感器三个演示产品。

3.2 设备注册和接入

  • 支持后台逐台注册;批量导入列入一期增强项。
  • 每台设备生成不可重复的设备 ID、设备密钥和一次性交付语义的绑定码。
  • 设备以 deviceId + deviceSecret 鉴权;生产环境密钥只在创建时展示,服务端仅保存加密或哈希值。
  • 首期协议以 MQTT 为主,HTTP 遥测接口用于联调;TCP 通过独立适配器后续接入。
  • 平台记录在线/离线、最后活跃时间、固件版本、当前属性和遥测历史。

3.3 用户绑定

  • 小程序用户完成微信登录后,可扫码或手工输入绑定码。
  • 绑定必须原子执行:无效码失败;已经归属其他用户的设备禁止再次绑定;重复绑定给同一用户可幂等成功。
  • 所有小程序设备查询和控制必须同时校验登录身份与设备归属,不能仅凭设备 ID 操作。
  • 解绑、分享家庭成员、所有权转移列入一期增强项,并要求二次确认和审计。

3.4 设备控制

  • 管理后台和设备所有者可下发物模型服务或属性设置指令。
  • 完整状态机为 pending → sent → succeeded | failed | timeout | canceled。
  • 每条指令保留指令 ID、设备、操作人、参数、创建时间、完成时间、重试次数和失败原因。
  • 生产控制链路必须以设备 ACK 为最终结果,HTTP 请求成功不能等同于设备执行成功。
  • MVP 对在线设备同步模拟成功、离线设备保留为等待中,用于验证交互闭环。

3.5 告警与审计

  • 告警覆盖设备离线、遥测越限、设备故障事件、指令失败和平台链路异常。
  • 告警状态为待处理、处理中、已恢复;支持处理人、处理备注和通知策略扩展。
  • 登录、注册设备、修改设备、绑定设备、下发指令和处置告警等关键动作必须写审计日志。

3.6 首期验收场景

编号场景验收结果
AC-01管理员登录并查看总览返回设备总数、在线数、用户数、待处理告警和当日指令
AC-02创建产品并注册设备ProductKey、序列号保持唯一,设备初始为未绑定/离线
AC-03合法设备上报遥测保存遥测、合并设备影子、刷新在线和最后活跃时间
AC-04非法密钥上报返回 401,不保存数据、不改变设备状态
AC-05用户输入有效绑定码设备归属当前用户,小程序列表立即可见
AC-06用户访问他人设备返回 404/403,不泄露设备详情
AC-07用户控制在线设备创建指令,收到 ACK 后状态成功且影子值更新
AC-08控制离线设备指令进入等待/超时路径,不伪报成功
AC-09运维访问管理员审计接口返回 403
AC-10管理员处置告警告警转为已恢复并形成审计记录

4. 第二阶段:开放设备与应用能力

  • 发布设备接入规范、主题规范、签名算法、SDK 和自助联调工具。
  • 允许客户创建产品、定义物模型、接入自有设备,但所有数据必须进入租户隔离边界。
  • 提供应用配置能力:先以模板和主题变量实现白标小程序,再逐步演进到受约束的低代码页面编排。
  • 低代码配置采用版本化 DSL、组件白名单、预览/发布审批和回滚机制,避免直接执行用户脚本。

5. 第三阶段:企业 SaaS 与服务履约

  • 引入企业、部门、成员、角色、项目、站点和设备组等租户实体。
  • 支持企业管理员批量注册/绑定设备、创建服务账号、配置 Webhook 和 OpenAPI 凭证。
  • 现场安装服务以工单建模:派单、接单、签到、安装清单、现场图片、工时、验收和费用。
  • 对接 OEM/ERP 时提供租户级 API、限流、签名、幂等键、回调重试、调用日志和数据授权。
  • 第二阶段与第三阶段可并行,但租户隔离和 API 权限必须先于客户开放。

6. 非功能基线

维度MVP生产一期目标
API 可用性单实例可运行≥99.9%,无状态多实例
管理 API本地数据下 P95 < 500msP95 < 300ms(不含设备 ACK)
消息链路HTTP 模拟、JSON 文件EMQX + Kafka,至少一次投递,业务幂等
设备规模3 个演示设备1,000 台同时在线,可水平扩展至 10,000+
数据安全HMAC 令牌、PBKDF2 密码TLS、KMS、密钥轮换、字段加密、最小权限
可观测性健康接口、审计记录指标、日志、追踪、SLO 和分级告警
数据恢复可复制 JSON 数据文件PostgreSQL PITR;RPO≤15min,RTO≤60min

7. 明确边界

  • MVP 不直接模拟真实微信 code2Session、MQTT Broker、短信通知和支付。
  • JSON 文件仅用于单机需求验证,不用于多实例或生产数据。
  • 首期不承诺通用低代码平台、跨企业数据共享、任意脚本运行和全协议一次性交付。
  • 生产前必须完成企业租户隔离、密钥托管、真实设备 ACK、幂等、限流、备份恢复和安全测试。

8. 当前可运行交付

实现位于 物联网项目文档/iot-platform-mvp。执行 npm test 验证 API、角色边界、设备上报、绑定控制和三端静态完整性;执行 npm start 后访问 /admin/ 使用管理后台。小程序工程位于 mini-program,可直接导入微信开发者工具。