Skip to content

功能需求

🟢 已完成 🟡 基础完成 🔵 计划中 ⚪ 待排期

1. 用户认证与权限

1.1 账号认证

编号需求优先级状态
AUTH-001支持账号+密码登录,密码 bcrypt 加盐存储P0🟡 基础完成
AUTH-002登录后颁发 JWT Token,默认有效期 7 天P0🟡 基础完成
AUTH-003支持 Token 刷新机制,避免频繁登录P1🔵 计划中
AUTH-004支持微信小程序 code 登录(wx.loginP0🟡 基础完成
AUTH-005支持微信手机号授权登录P1🟡 基础完成

1.2 权限控制

编号需求优先级状态
AUTH-006基于 RBAC 模型:用户 → 角色 → 权限P0🟡 基础完成
AUTH-007支持菜单级权限控制(前端路由过滤)P0🟡 基础完成
AUTH-008支持接口级权限控制(后端守卫装饰器)P0🟡 基础完成
AUTH-009设备级权限:用户只能查看/控制自己的设备P1🔵 计划中

验收条件

  • 无 Token 请求 API 返回 401
  • 无权限用户访问受保护接口返回 403
  • 角色权限变更后,用户下次请求立即生效

2. 产品管理

2.1 产品定义

编号需求优先级状态
PROD-001创建产品:名称、描述、分类、厂商信息P0🔵 计划中
PROD-002编辑产品信息和物模型 JSONP0🔵 计划中
PROD-003产品列表:支持搜索、分类筛选、分页P0🔵 计划中
PROD-004物模型版本管理,支持版本回滚P2🔵 计划中

2.2 物模型

编号需求优先级状态
PROD-005支持定义属性(Property):数据类型、取值范围、读写权限P0🔵 计划中
PROD-006支持定义事件(Event):事件类型、参数列表P1🔵 计划中
PROD-007支持定义服务(Service):输入参数、输出参数P1🔵 计划中
PROD-008物模型 JSON 格式校验,拒绝非法定义P0🔵 计划中

验收条件

  • 物模型 JSON 通过 Schema 校验后保存
  • 修改物模型不影响已注册设备,新设备使用新版本

3. 设备管理

3.1 设备注册

编号需求优先级状态
DEV-001设备首次上电通过 MQTT 上报物理 ID(MAC),平台分配逻辑 ID(UUID)P0🔵 计划中
DEV-002设备注册时校验产品密钥,防止未授权设备接入P0🔵 计划中
DEV-003设备激活后生成 MQTT 连接凭证(Username + Password)P0🔵 计划中

3.2 设备管理

编号需求优先级状态
DEV-004设备列表:显示名称、产品、在线状态、最近上报时间P0🔵 计划中
DEV-005设备搜索:按名称、ID、MAC 模糊搜索P1🔵 计划中
DEV-006设备筛选:按产品类型、在线状态筛选P1🔵 计划中
DEV-007设备详情:基本信息、实时状态、设备影子P0🔵 计划中
DEV-008设备删除:解绑设备并清除影子数据P1🔵 计划中

3.3 设备影子

编号需求优先级状态
DEV-009每个设备维护一份影子 JSON(期望状态 + 实际状态)P0🔵 计划中
DEV-010云端修改期望状态后,通过 MQTT 下发至设备P0🔵 计划中
DEV-011设备上报实际状态后,更新影子并比对差异P0🔵 计划中
DEV-012影子变更记录保留 30 天,支持审计追溯P2🔵 计划中

验收条件

  • 设备注册成功后,数据库和设备端均可获取逻辑 ID
  • 设备在线/离线状态更新延迟 < 5 秒
  • 设备影子与实际设备状态最终一致

4. 数据采集与存储

4.1 数据上报

编号需求优先级状态
DATA-001设备按标准 Topic 上报遥测数据:sys/{pid}/{did}/thing/event/property/postP0🔵 计划中
DATA-002支持 QoS 1(至少一次送达),确保数据不丢失P0🔵 计划中
DATA-003上报频率限制:单设备默认 60 秒最小间隔,防刷P1🔵 计划中

4.2 数据存储

编号需求优先级状态
DATA-004遥测数据写入 InfluxDB,按设备 ID + 时间索引P0🔵 计划中
DATA-005原始数据保留 90 天,1 分钟聚合保留 1 年,1 小时聚合永久保留P1🔵 计划中
DATA-006设备日志(上下线、指令)写入 PostgreSQL,保留 180 天P1🔵 计划中

4.3 数据查询

编号需求优先级状态
DATA-007支持按时间范围查询设备历史数据P0🔵 计划中
DATA-008支持多属性叠加曲线展示(如温度+湿度)P1🔵 计划中
DATA-009支持数据导出(CSV),单次最多 10 万条P2🔵 计划中

验收条件

  • 设备属性上报到数据可查询延迟 < 2 秒
  • InfluxDB 降采样任务按配置自动执行

5. 远程控制

5.1 指令下发

编号需求优先级状态
CTRL-001通过 MQTT 下发属性设置指令P0🔵 计划中
CTRL-002每条指令包含唯一 msgId,用于追踪和去重P0🔵 计划中
CTRL-003指令超时时间 30 秒,超时未回复标记为失败P0🔵 计划中
CTRL-004支持批量指令:一次下发控制多个设备P1🔵 计划中

5.2 指令反馈

编号需求优先级状态
CTRL-005设备执行后回复 set_reply,包含执行结果和最新状态P0🔵 计划中
CTRL-006指令状态(已发送/已执行/超时/失败)在前端实时更新P0🔵 计划中

验收条件

  • 指令从 Web/小程序发起到设备执行延迟 < 1 秒(局域网)
  • 指令成功率 > 99%

6. 告警通知

6.1 告警规则

编号需求优先级状态
ALERT-001支持属性阈值告警(如温度 > 80°C)P1🔵 计划中
ALERT-002支持设备离线告警(超时未上报心跳)P1🔵 计划中
ALERT-003支持告警分级:警告/严重/紧急P2🔵 计划中

6.2 通知渠道

编号需求优先级状态
ALERT-004小程序消息推送P1🔵 计划中
ALERT-005邮件通知P2🔵 计划中
ALERT-006Web 后台告警列表与已读/未读管理P1🔵 计划中

7. Web 管理后台

编号需求优先级状态
WEB-001Dashboard 首页:概览统计卡片P0🟡 基础完成
WEB-002用户管理:CRUD + 角色分配P0🟡 基础完成
WEB-003角色管理:CRUD + 权限树配置P0🟡 基础完成
WEB-004菜单管理:动态路由配置P0🟡 基础完成
WEB-005部门/字典/配置/通知/日志管理P1🟡 基础完成
WEB-006产品管理页:列表 + 创建/编辑 + 物模型编辑器P0🔵 计划中
WEB-007设备列表页:分页、搜索、筛选、状态标签P0🔵 计划中
WEB-008设备详情页:状态卡片 + 控制面板 + 影子数据P0🔵 计划中
WEB-009数据看板:时间范围选择器 + ECharts 时序曲线P1🔵 计划中

8. 微信小程序

8.1 登录与注册

编号需求优先级状态
MP-001账号密码登录:调用后端认证接口,返回 JWT Token 并持久化存储P0🟡 基础完成
MP-002微信 code 登录:调用 wx.login() 获取 code,后端换取 TokenP0🟡 基础完成
MP-003微信手机号登录:通过手机号授权按钮获取加密手机号,后端解密并登录P1🟡 基础完成
MP-004注册页:填写账号/密码/确认密码,校验格式后调用注册接口P0🟡 基础完成
MP-005登录状态持久化:Token 存入本地 Storage,下次启动自动登录P0🟡 基础完成
MP-006登录过期处理:Token 过期后自动跳转登录页P1🟡 基础完成

8.2 首页(设备列表)

编号需求优先级状态
MP-010设备列表作为 TabBar 首页,展示用户名下所有设备P0🔵 计划中
MP-011设备卡片显示:设备图标/名称、在线状态(绿/灰点)、最新一条遥测数据摘要P0🔵 计划中
MP-012下拉刷新设备列表和在线状态P0🔵 计划中
MP-013设备搜索:按名称模糊搜索P1🔵 计划中
MP-014设备筛选:按产品类型、在线状态筛选P1🔵 计划中
MP-015空状态提示:无设备时显示引导添加设备的入口P0🔵 计划中

8.3 设备添加(配网)

编号需求优先级状态
MP-020配网入口:首页空状态引导 + 右上角添加按钮P0🔵 计划中
MP-021配网方式选择:BLE 配网 / WiFi 配网 / 扫码配网P1🔵 计划中
MP-022BLE 配网流程:扫码 → 蓝牙搜索设备 → 连接 → 发送 WiFi SSID + 密码 → 等待设备上线P1🔵 计划中
MP-023配网进度展示:实时显示当前步骤和进度动画P0🔵 计划中
MP-024配网成功:展示设备信息,引导用户命名设备P0🔵 计划中
MP-025配网失败:明确提示失败原因(WiFi 密码错误/信号弱/设备未响应)P0🔵 计划中

8.4 设备详情

编号需求优先级状态
MP-030设备详情页:顶部设备名称 + 在线状态 + 最后上报时间P0🔵 计划中
MP-031实时状态展示:根据物模型定义的属性渲染对应的 UI 组件(开关/Slider/数值等)P0🔵 计划中
MP-032控制交互:点击开关/按钮下发控制指令,操作后显示 Loading 直到收到 set_replyP0🔵 计划中
MP-033实时刷新:设备上报数据后自动更新页面状态(WebSocket 推送)P0🔵 计划中
MP-034数据历史入口:跳转设备数据历史页P1🔵 计划中

8.5 设备设置

编号需求优先级状态
MP-040设备名称编辑:修改设备别名P0🔵 计划中
MP-041设备信息展示:产品名称、设备 ID(逻辑/物理)、固件版本、注册时间P1🔵 计划中
MP-042设备解绑:二次确认后解绑设备,清除本地和云端关联P1🔵 计划中
MP-043固件版本检查与 OTA 升级入口P2⚪ 待排期
MP-044设备分享:分享设备给其他用户(扫码/账号)P2⚪ 待排期

8.6 家庭管理

编号需求优先级状态
MP-050家庭列表:用户可创建多个家庭(如"家"、"公司"、"农场")P1🔵 计划中
MP-051家庭创建/编辑/删除:名称、图标、房间信息P1🔵 计划中
MP-052设备归属:设备添加到指定家庭,按房间分组展示P1🔵 计划中
MP-053家庭切换:首页顶部切换当前家庭,设备列表随之变化P1🔵 计划中

8.7 个人中心

编号需求优先级状态
MP-060用户信息展示:头像、昵称、账号P0🟡 基础完成
MP-061个人资料编辑:修改昵称、头像(微信头像/自定义)P1🟡 基础完成
MP-062消息中心:系统通知、告警消息、设备上下线提醒P2🔵 计划中
MP-063关于页面:版本号、用户协议、隐私政策P1🟡 基础完成

8.8 设置

编号需求优先级状态
MP-070主题切换:深色/浅色模式P2🟡 基础完成
MP-071账号设置:修改密码、绑定/解绑微信P1🔵 计划中
MP-072账号注销:二次确认后永久注销账号P1🔵 计划中
MP-073语言切换:中文/英文(预留)P2⚪ 待排期
MP-074缓存清理:清除本地图片和状态缓存P2🟡 基础完成

验收条件

  • 从打开小程序到首页加载完成 < 2 秒
  • 配网成功率 > 95%,失败时有明确错误提示
  • 设备控制操作后 Loading 状态 < 3 秒(超时提示失败)

9. 硬件(四路继电器)

编号需求优先级状态
HW-0014 路继电器独立控制(开/关/翻转)P0🟢 已完成
HW-002断电状态记忆(NVS 持久化)P0🟢 已完成
HW-003物理按键控制(短按翻转,长按 1s 触发)P1🟢 已完成
HW-004MQTT 标准 Topic 迁移(v2 → v3 协议)P0🔵 计划中
HW-005Bluetooth 配网P2⚪ 待排期
HW-006OTA 固件升级P1⚪ 待排期