Skip to content

非功能需求

性能需求

后端服务

指标要求备注
API 响应时间(P95)< 200ms(读)/ < 500ms(写)非数据看板类接口
API 并发处理能力单实例 500 QPS4 核 8G 配置
MQTT 消息吞吐单实例 2000 msg/s遥测数据上报
WebSocket 并发连接单实例 5000设备在线状态推送

数据看板

指标要求备注
时序数据查询(24h)< 500msInfluxDB 聚合查询
时序数据查询(7d)< 1s使用降采样数据
时序数据查询(30d+)< 2s使用 1h 聚合数据

端到端延迟

指标要求备注
控制指令(云端 → 设备)< 1s局域网环境
设备状态上报 → 前端刷新< 2s经 MQTT → 后端 → WebSocket
设备上线/离线状态变更< 5s属性上报驱动 + Redis TTL 超时检测

扩展性

指标v1.0 目标备注
支持产品数100
支持设备数10,000
单产品最大设备数5,000
单设备属性数50物模型属性定义上限

安全需求

通信安全

编号需求优先级
SEC-001生产环境强制 HTTPS + WSSP0
SEC-002MQTT 连接使用 TLS 加密(MQTTS)P0
SEC-003MQTT 设备认证使用 ClientId + Username + Password,由 EMQX 直连 PostgreSQL 认证P0
SEC-004API 请求使用 JWT Bearer Token 认证P0
SEC-005API 速率限制:默认 60 次/分钟/用户P1

数据安全

编号需求优先级
SEC-006用户密码使用 bcrypt + salt 哈希存储,不可逆P0
SEC-007JWT Secret 和 Salt Secret 通过环境变量注入,不硬编码P0
SEC-008敏感操作(删除设备、修改权限)记录审计日志P1
SEC-009数据库连接使用 TLS,不暴露公网端口P1

权限与隔离

编号需求优先级
SEC-010用户只能访问自己被授权的设备和数据P1
SEC-011接口级权限校验,所有非公开端点必须声明权限P0
SEC-012设备间数据隔离:设备 A 不能订阅设备 B 的 TopicP1

防护措施

编号需求优先级
SEC-013防暴力破解:登录失败 5 次锁定 15 分钟P1
SEC-014SQL 注入防护:使用 Prisma 参数化查询P0
SEC-015XSS 防护:前端输出转义 + CSP 头P1
SEC-016请求体大小限制:API 默认 10MB,文件上传 50MBP1

可用性需求

指标要求
系统可用性99.5%(月宕机时间 < 3.6 小时)
数据持久性99.9%
故障恢复时间(RTO)< 1 小时
数据恢复点(RPO)< 1 小时

兼容性需求

平台要求
Web 浏览器Chrome 90+, Edge 90+, Safari 15+
微信小程序微信 8.0+,基础库 3.0+
移动端 H5iOS 15+ Safari, Android Chrome 90+
嵌入式ESP32-C3 (ESP-IDF v5.2), 通用 ESP32 系列

可维护性需求

编号需求优先级
MAIN-001结构化日志(Winston):JSON 格式,按天轮转,保留 30 天P1
MAIN-002健康检查端点:GET /api/v1/ 返回服务状态P0
MAIN-003系统状态端点:GET /api/v1/system/status 返回 DB/Redis/MQTT 连接状态P1
MAIN-004Docker Compose 一键部署P0
MAIN-005PM2 进程管理,支持自动重启P1
MAIN-006数据库迁移脚本版本化管理(Prisma Migrate)P0