eHome App 端详细需求设计文档
M05 数据可视化与导出(对应需求:FR-1401~1406)
| 项目 | 内容 |
|---|---|
| 所属项目 | eHome 智能家居硬件配套 APP + 云端后台定制开发项目 |
| 设计依据 | 《eHome智能家居项目需求文档(PRD V1.1)》数据可视化章节、第8章、NFR-02(响应≤3s)/NFR-06(兼容性);《eHome项目页面功能工时费用明细表》M05模块 |
| 范围说明 | 本模块覆盖家庭/房间/设备三级能耗与传感器数据的聚合看板、多维对比分析、自定义报表生成、CSV/PDF导出、数据订阅推送;不包含单设备实时监测详情页(属 M04)、告警规则配置(属 M04-R03)、场景自动化(属 M06) |
| 优先级 | P0(MVP必须;数据价值感知是用户留存核心驱动力,导出能力为B端/高级用户刚需) |
| 里程碑 | M2 完整功能期开发(依赖 M01 账号、M02 家庭/房间、M04 传感器历史数据、M10 推送通道) |
| 文档用途 | 直接交付 UI 设计、Flutter 开发(APP端)、云端开发、数据工程师、测试QA |
需求编号映射(以工时表 M05 功能项为准):
| 需求编号 | 功能项 |
|---|---|
| FR-1401 | 家庭数据总览看板(能耗/环境/设备健康三维聚合卡片) |
| FR-1402 | 多维对比分析页(时间环比/房间横向/设备TOP N、钻取联动) |
| FR-1403 | 自定义报表生成器(指标/维度/时间/筛选条件模板化保存) |
| FR-1404 | 数据导出(CSV原始数据/PDF可视化报告、异步生成+通知) |
| FR-1405 | 数据订阅与定时推送(日报/周报/月报、渠道选择、退订) |
| FR-1406 | 数据可视化 UI 规范(图表组件库、双主题、7语种、无障碍) |
1. 模块概述与设计原则
1.1 模块范围
| 序号 | 页面/功能项 | 需求编号 | 类型 | 优先级 |
|---|---|---|---|---|
| 1 | 家庭数据总览看板 | FR-1401 | APP+云端 | P0 |
| 2 | 多维对比分析页 | FR-1402 | APP+云端 | P0 |
| 3 | 自定义报表生成器 | FR-1403 | APP+云端 | P0 |
| 4 | 导出任务管理与下载页 | FR-1404 | APP+云端 | P0 |
| 5 | 数据订阅配置页 | FR-1405 | APP+云端 | P0 |
| 6 | 数据可视化 UI 规范 | FR-1406 | UI | P0 |
边界与衔接说明:
- 入口A:首页 Tab「数据」→ 本模块 D01(家庭总览);
- 入口B:M02 房间详情页【查看数据分析】→ D02(预填房间维度);
- 入口C:M04-R02 历史趋势页【深度分析】→ D02(预填设备+时间范围);
- 出口:D01/D02/D03 均支持跳转导出(D04)与订阅(D05);D04 下载完成推送点击 → 直达下载页;D05 推送点击 → D01 或 D02 对应报表视图。
1.2 设计原则
- 聚合优先,细节按需:首页看板只展示聚合指标(日均/周均/TOP3),避免信息过载;用户主动钻取才加载明细,平衡体验与性能。
- 异步导出,不阻塞主线程:大数据量导出(>1万点/10MB)走异步任务队列,完成后推送通知+APP内下载中心领取;小数据量(<1000点)支持同步即时下载。
- 模板化复用:自定义报表支持保存为模板,避免重复配置;模板可分享(P2预留),支撑团队协作场景。
- 数据权限隔离:家庭级数据仅家庭成员可见;房间级数据按房间权限过滤;导出文件加密(AES-256),下载链接有效期24h,防泄露。
- 可视化一致性:全模块图表组件统一封装(与 M04 共享基础组件库),配色/交互/无障碍规范一致,降低用户认知成本。
- 双主题 + 7语种:所有图表标签、轴标题、导出文件名、订阅文案走多语言资源;深色模式图表自动适配高对比度色板。
1.3 用户与前置条件
- 用户状态:必须已登录(M01);未登录拦截跳转登录页。
- 数据前置:当前家庭至少绑定1台传感器/能耗设备(M03/M04);无数据时展示引导态("添加设备后即可查看数据分析")。
- 权限前置:导出文件存储需系统存储权限;订阅推送需 M10 推送权限;未授权时对应功能置灰+引导开启。
- 受限账号(M01-P09):允许查看数据与生成报表,但导出/订阅时提示"账号未补绑手机/邮箱,通知可能无法送达"。
2. 页面结构与流程图
2.1 页面导航结构
入口A:首页Tab[数据] ──► D01
入口B:M02房间详情[查看数据分析] ──► D02(预填房间)
入口C:M04-R02[深度分析] ──► D02(预填设备+时间)
D01 家庭数据总览看板
├─ 能耗聚合卡(今日/本周/本月 kWh + 环比箭头)
├─ 环境聚合卡(平均温湿度/空气质量 + 异常房间数)
├─ 设备健康卡(在线率/低电量数/离线数)
├─ [进入多维分析] ──► D02
├─ [生成自定义报表] ──► D03
└─ [我的订阅] ──► D05
D02 多维对比分析页
├─ 维度切换Tab(时间环比/房间横向/设备TOP N)
├─ 筛选栏(时间范围/房间/设备品类/指标)
├─ 主图表区(柱状图/折线图/热力图,按维度动态切换)
├─ 数据表格区(可排序/分页,与图表联动高亮)
├─ [钻取] 点击图表元素 ──► 下级维度(如房间→设备)
├─ [导出此视图] ──► D04(预填当前筛选条件)
└─ [保存为报表模板] ──► D03(预填配置)
D03 自定义报表生成器
├─ 报表名称输入
├─ 指标多选(能耗/温度/湿度/光照/设备在线率等)
├─ 维度选择(时间粒度/房间/设备)
├─ 时间范围(固定/滚动窗口)
├─ 筛选条件(设备品类/阈值过滤)
├─ [预览] ──► 弹窗预览图表+摘要
├─ [保存模板] ──► POST /reports/templates
└─ [立即导出] ──► D04(携带完整配置)
D04 导出任务管理与下载页
├─ 任务列表(进行中/已完成/失败)
├─ 已完成项:文件名+大小+生成时间+[下载](本地存储/分享)
├─ 进行中项:进度条+预计剩余时间
├─ 失败项:错误原因+[重试]
└─ 自动清理:已完成任务7天后自动删除(本地+云端)
D05 数据订阅配置页
├─ 订阅列表(日报/周报/月报/自定义)
├─ 新建订阅:报表模板选择+推送频率+推送时间+渠道(APP/邮件)
├─ 编辑/删除/暂停订阅
└─ 推送历史记录(最近10条,点击跳转对应报表视图)
2.2 核心状态机一:导出任务生命周期
[用户发起导出]
│
├──(数据量 <1000点)──► [同步生成]
│ │
│ ├──(成功)──► [已完成] ──► 即时弹出系统分享面板/保存到本地
│ └──(失败)──► [失败] ──► Toast错误原因 + [重试]
│
└──(数据量 ≥1000点)──► [异步任务创建]
│
├──(云端队列处理中)──► [进行中](APP轮询/MQTT推送进度)
│ │
│ ├──(成功)──► [已完成] ──► M10推送"导出完成" + D04列表刷新
│ │ │
│ │ ├──(用户点击下载)──► 本地保存/分享
│ │ └──(24h未下载)──► 链接过期,标记[已过期],需重新生成
│ │
│ └──(失败)──► [失败] ──► M10推送"导出失败" + D04显示原因 + [重试]
│
└──(任务超时30min)──► [失败·超时] ──► 同上
2.3 核心状态机二:数据订阅生命周期
[创建订阅]
│
├──(校验:模板存在+渠道可用+时间合法)──► [已启用]
│ │
│ ├──(到达推送时间)──► [触发推送]
│ │ │
│ │ ├──(生成报表快照)──► [快照生成]
│ │ │ │
│ │ │ ├──(推送成功)──► [已推送](记录推送日志)
│ │ │ └──(推送失败)──► [推送失败](重试3次,仍失败标记+告警运维)
│ │ │
│ │ └──(快照生成失败)──► [生成失败](跳过本次,下次正常触发;连续3次失败暂停订阅+通知用户)
│ │
│ ├──(用户暂停)──► [已暂停](保留配置,停止触发)
│ ├──(用户删除)──► [已删除]
│ └──(模板被删除)──► [已失效] ──► 通知用户重新选择模板
│
└──(校验失败)──► [创建失败] ──► Toast具体原因
3. 页面级详细需求
D01 家庭数据总览看板(FR-1401)
页面目标:3秒内让用户掌握家庭整体数据健康度,驱动深度探索。
页面元素:
| 元素 | 规格与规则 |
|---|---|
| 顶部导航 | 标题"数据总览";右侧[订阅管理]→D05;下拉刷新 |
| 时间范围选择器 | 今日/本周/本月/自定义;默认"本周";切换后所有卡片联动刷新 |
| 能耗聚合卡 | 主数值:总能耗(kWh)+环比百分比(↑绿/↓红);副指标:峰值功率(W)+高峰时段;迷你折线图(7日趋势);点击→D02预填能耗维度 |
| 环境聚合卡 | 主数值:平均温度(℃)+平均湿度(%);副指标:异常房间数(超阈值)+空气质量优/良/差分布;点击→D02预填环境维度 |
| 设备健康卡 | 主数值:设备在线率(%);副指标:低电量设备数+离线设备数+固件待升级数;点击→M02设备列表(筛选异常设备) |
| 快捷操作组 | [进入多维分析]→D02;[生成自定义报表]→D03 |
| 无数据引导态 | 插画+"暂无数据,请先添加传感器或智能设备"+[去添加]→M03配网 |
逻辑规则:
- 数据来源:GET /analytics/dashboard?familyId=&range=week;返回预聚合指标(云端T+1小时更新缓存,实时性要求不高);下拉刷新强制拉最新;
- 环比计算:与上一同长度周期对比(本周vs上周、今日vs昨日);无上一周期数据时显示"—";
- 异常判定:环境异常=超出M04-R03配置的告警阈值;设备健康异常=离线>5min/电量<20%/固件版本<最低兼容版;
- 权限过滤:仅展示当前用户有权限的房间/设备数据(M02房间权限联动);
- 埋点:卡片点击率、时间范围切换分布、无数据引导转化率。
验收要点:三卡片数据准确(与M04历史数据对账);环比箭头方向与颜色正确;无数据引导跳转闭环;权限过滤生效。
D02 多维对比分析页(FR-1402)
页面目标:支持用户自主探索数据规律,发现异常与优化空间。
页面元素:
| 元素 | 规格与规则 |
|---|---|
| 维度切换Tab | 时间环比/房间横向/设备TOP N;默认时间环比;切换时图表平滑过渡 |
| 筛选栏 | 时间范围选择器+房间多选+设备品类多选+指标下拉;筛选变更防抖500ms后自动刷新 |
| 主图表区 | 时间环比→折线图(多周期叠加);房间横向→柱状图(分组/堆叠);设备TOP N→水平条形图;支持手势缩放/平移/长按查值(复用M04图表组件) |
| 数据表格区 | 与图表同数据源;列:维度名+指标值+环比+排名;点击行高亮图表对应元素;支持列排序+分页(每页20条) |
| 钻取交互 | 点击房间柱→下钻到该房间设备列表;点击设备TOP项→跳转M04-R01设备详情;面包屑导航支持返回上级 |
| [导出此视图] | 携带当前筛选+维度+图表配置→D04 |
| [保存为报表模板] | 预填当前配置→D03 |
逻辑规则:
- 数据拉取:GET /analytics/compare?dimension=time|room|device&metric=&rooms=&devices=&start=&end=;返回结构化数据(图表+表格共用);本地缓存最近5次查询;
- 钻取层级:最多3级(家庭→房间→设备);超过3级禁止下钻,Toast"已达最细粒度";
- 图表自适应:数据点>100自动降采样(LTTB);房间>10个时柱状图切换为滚动视图;TOP N默认10,可切换20/50;
- 联动高亮:表格hover/点击→图表对应元素高亮+tooltip常驻;图表点击→表格滚动到对应行并高亮;
- 空数据处理:筛选结果为空→图表区显示"无匹配数据"+[调整筛选];部分维度无数据→图表标注"N/A",表格显示"—"。
验收要点:三维度切换流畅;钻取3级闭环+面包屑正确;图表-表格联动高亮精准;大数据量降采样不失真;空状态友好。
D03 自定义报表生成器(FR-1403)
页面目标:让高级用户零代码构建个性化报表,沉淀为可复用资产。
页面元素:
| 元素 | 规格与规则 |
|---|---|
| 报表名称 | 文本输入框,1~50字符,必填;重名校验(同用户模板名唯一) |
| 指标选择器 | 多选芯片组(能耗/温度/湿度/光照/门窗开合次数/设备在线率等);至少选1项;按设备能力动态过滤不可用指标 |
| 维度选择 | 单选:时间粒度(1h/1d/1w)/房间/设备;与指标联动(如"设备在线率"不可选"时间粒度1h") |
| 时间范围 | 固定范围(起止日期) / 滚动窗口(最近N天/周/月);默认滚动7天 |
| 筛选条件 | 设备品类多选+阈值过滤(如"温度>30℃");可选;阈值输入校验量程 |
| [预览] | 弹窗展示报表缩略图+摘要统计;预览数据为模拟/缓存数据,非实时 |
| [保存模板] | POST /reports/templates;成功Toast"模板已保存"+[查看我的模板] |
| [立即导出] | 携带完整配置→D04;未保存模板时提示"是否同时保存为模板?" |
| 模板列表 | 底部折叠区:已保存模板列表;点击加载配置;支持重命名/删除 |
逻辑规则:
- 配置校验:保存/导出前校验指标-维度兼容性、时间范围合法性、筛选条件有效性;冲突项红色边框+错误文案;
- 模板存储:云端存储(用户级),上限20个/用户;超限提示"模板已满,请删除旧模板";
- 预览性能:预览使用轻量聚合接口(≤500ms返回),不触发全量计算;预览数据标注"预览数据,实际导出以实时数据为准";
- 模板版本:修改已保存模板后版本号+1,旧版本保留7天(防误改回滚,P2实现);
- 受限账号:保存模板时若账号未补绑,弹窗提示"模板仅在当前设备可用,补绑后可跨设备同步"。
验收要点:配置校验全覆盖;模板CRUD闭环;预览≤500ms;指标-维度兼容性规则正确;受限账号提示准确。
D04 导出任务管理与下载页(FR-1404)
页面目标:透明化管理导出任务,安全便捷获取数据文件。
页面元素:
| 元素 | 规格与规则 |
|---|---|
| 任务列表 | 分Tab:进行中/已完成/失败;每任务:报表名+格式(CSV/PDF)+大小+创建时间+状态 |
| 进行中项 | 进度条(0~100%)+预计剩余时间;支持[取消] |
| 已完成项 | [下载]按钮;点击→系统分享面板(微信/邮件/云盘等)+[保存到本地];文件大小>50MB二次确认 |
| 失败项 | 错误原因(数据量超限/生成超时/权限不足)+[重试];重试继承原配置 |
| 自动清理提示 | 底部说明"已完成文件7天后自动清理,请及时下载" |
| 空态 | 各Tab独立空态:"暂无进行中任务"/"暂无导出记录"/"暂无失败任务" |
逻辑规则:
- 文件格式:CSV=原始时序数据(UTF-8 BOM头,Excel兼容);PDF=可视化快照(含图表+摘要+水印"eHome Data Export");
- 异步任务:≥1000点或预估>5MB走异步;任务ID全局唯一;进度通过MQTT export/progress/
{taskId}推送+HTTP轮询兜底; - 下载安全:下载链接带签名token,有效期24h;过期后状态变[已过期],需重新生成;文件AES-256加密,密钥随下载链接下发(一次性);
- 本地存储:Android MediaStore/ iOS Files app;存储权限未授→引导开启;存储空间不足→Toast提示+清理建议;
- 并发限制:单用户同时进行中的导出任务≤3个;超限排队,队列满拒绝新任务+提示"任务繁忙,请稍后再试"。
验收要点:同步/异步双链路正确;进度推送实时;下载链接过期机制生效;文件加密验证;并发限流准确;存储权限降级可用。
D05 数据订阅配置页(FR-1405)
页面目标:让用户被动接收数据洞察,提升产品粘性与数据消费频次。
页面元素:
| 元素 | 规格与规则 |
|---|---|
| 订阅列表 | 卡片式:报表模板名+推送频率(每日/每周/每月)+推送时间+渠道图标+开关;开关控制启停 |
| [新建订阅] | 表单:选择报表模板(下拉)+频率+时间(时间选择器)+渠道(APP推送/邮件,多选);邮件未绑定置灰+引导 |
| 编辑/删除 | 左滑/长按菜单:[编辑][删除];删除二次确认 |
| 推送历史 | 折叠区:最近10条推送记录(时间+模板名+状态);点击→跳转对应报表视图(D02预填参数) |
| 全局开关 | 顶部"数据订阅总开关";关闭后所有订阅暂停,保留配置 |
逻辑规则:
- 推送时间校验:同一渠道同一时间点不允许重复订阅(防骚扰);冲突时提示"该时段已有订阅,请选择其他时间";
- 渠道可用性:APP推送需M10权限;邮件需M01已绑定验证;短信一期不支持(P2评估);
- 推送内容:APP推送=摘要文案+深链;邮件=HTML报表快照+PDF附件;推送失败重试3次(间隔5min/15min/30min);
- 模板联动:模板被删除→订阅自动标记[已失效]+推送通知"模板已删除,请重新配置";模板更新→下次推送使用新版本;
- 退订:删除订阅或关闭总开关即时生效,已排期未推送的任务取消;
- 受限账号:创建订阅时提示"账号未补绑,邮件推送可能无法送达"。
验收要点:订阅CRUD+启停闭环;推送时间冲突校验;渠道置灰与引导正确;模板删除联动失效;推送历史跳转准确。
4. 通用交互与视觉规范(UI设计输入,FR-1406)
- 双主题:浅色/深色两套;图表色板深色模式自动切换高对比度配色(WCAG AA);卡片背景/分割线/文字色跟随主题;导出PDF强制浅色背景(打印友好)。
- 组件清单:聚合卡片(主数值+环比+迷你图)、维度Tab、筛选栏(时间/房间/品类/指标)、主图表区(折线/柱状/条形/热力图)、数据表格(排序/分页/高亮)、钻取面包屑、报表配置表单(芯片选择器/时间选择器/阈值输入)、任务列表(进度条/状态标签)、订阅卡片(开关/渠道图标)、空态插画。
- 动效规范:卡片入场交错动画(100ms间隔);图表切换淡入200ms;钻取下推/上拉过渡300ms;进度条平滑更新;列表项删除滑动动画。
- 多语言:单位符号(kWh/℃/%/lux)跟随locale;图表轴标签/图例/导出文件名/订阅文案全部资源文件;德/法预留1.4倍空间;PDF报表支持多语言字体嵌入。
- 无障碍:图表提供"数据摘要"文本替代(读屏可读关键指标/趋势/异常);表格支持读屏逐行朗读;筛选器焦点顺序合理;颜色不作为唯一信息载体(环比用箭头+文字辅助)。
- 响应式:平板/折叠屏宽屏模式下D02采用左右分栏(左筛选+右图表/表格);D03配置表单双列布局;D04任务列表网格视图。
5. 客户端技术要求(Flutter)
- 图表组件库:封装 EhomeChartWidget 统一组件(基于 syncfusion_flutter_charts),支持折线/柱状/条形/热力图、手势交互、降采样、双主题色板、无障碍语义树;与M04共享,避免重复造轮子。
- 状态管理:Riverpod/BLoC;看板数据用 FutureProvider + T+1h缓存;分析页数据用 StateNotifierProvider + 防抖;导出任务用 StreamProvider(MQTT) + 轮询兜底;订阅列表用 Provider + 乐观更新。
- 异步导出:任务创建 POST /exports;进度监听 MQTT export/progress/
{taskId};下载用 dio + 断点续传;文件加密用 pointycastle(AES-256-GCM);存储用 path_provider + MediaStore/Files API。 - 本地缓存:Hive 存储看板缓存、分析页最近5次查询、模板列表;TTL 1h(看板)/10min(分析);缓存键=familyId+paramsHash。
- 深链路由:注册 ehome://data/report?templateId=&date= 路由;D02/D05 接收参数预填配置;路由参数校验防注入。
- 性能优化:大数据量图表渲染隔离到 Isolate;表格虚拟滚动(sliver);筛选防抖500ms;图片/图表离屏渲染。
- 安全:下载链接token校验;文件加密密钥内存持有不落盘;Sentry上报脱敏;导出文件不含用户PII。
- 埋点:看板卡片点击率、分析页维度切换分布、模板保存成功率、导出完成率、订阅创建/退订率;性能埋点(图表渲染耗时、导出任务时长)。
6. 云端需求(数据分析与导出服务)
6.1 接口清单
| 接口 | 方法 | 说明 |
|---|---|---|
| /analytics/dashboard | GET | 家庭总览看板数据;参数 familyId, range;返回三维聚合指标;T+1h缓存 |
| /analytics/compare | GET | 多维对比分析;参数 dimension, metric, rooms, devices, start, end;返回图表+表格结构化数据 |
| /reports/templates | GET/POST/PUT/DELETE | 报表模板CRUD;POST校验配置合法性;返回模板ID+版本 |
| /reports/preview | POST | 报表预览;轻量聚合,≤500ms返回;返回缩略图URL+摘要 |
| /exports | POST | 创建导出任务;参数 templateId/config/format;返回 taskId;≥1000点异步,<1000点同步返回文件URL |
/exports/{taskId} | GET | 查询任务状态+进度+下载URL;下载URL带签名token(24h有效) |
/exports/{taskId}/cancel | POST | 取消进行中任务 |
| /subscriptions | GET/POST/PUT/DELETE | 订阅CRUD;POST校验模板存在+渠道可用+时间冲突 |
/subscriptions/{id}/toggle | POST | 启停订阅 |
| /subscriptions/history | GET | 推送历史记录;参数 subscriptionId, limit |
(MQTT)export/progress/{taskId} | — | 导出进度推送;QoS1 |
| (内部)定时调度器 | — | 扫描到期订阅→生成报表快照→推送;失败重试3次 |
| (内部)导出任务队列 | — | Celery/RabbitMQ; worker并发控制;超时30min自动失败 |
6.2 关键策略
- 预聚合层:看板数据T+1h预计算存入Redis;分析页常用维度组合预聚合(物化视图);减少实时计算压力。
- 导出任务队列:Celery + RabbitMQ;worker数按负载弹性伸缩;大文件分片生成+合并;失败自动重试3次(指数退避);超时30min强制失败。
- 文件安全:生成后AES-256加密存储OSS;下载链接带HMAC签名+24h过期;密钥随链接下发(一次性);OSS生命周期7天自动清理。
- 订阅调度:Quartz/Cron调度器;推送前校验订阅有效性+渠道可用性;生成快照失败跳过本次+计数;连续3次失败暂停订阅+通知用户+告警运维。
- 数据权限:所有接口校验用户-家庭-房间-设备权限链;导出数据按权限过滤,越权访问返回403。
- 性能SLA:看板接口P99 ≤300ms;分析接口P99 ≤1s(缓存命中≤100ms);导出任务创建≤500ms;订阅推送延迟≤5min。
- 监控看板:导出任务成功率/平均时长、订阅推送成功率/失败原因、接口延迟/错误率、缓存命中率;异常自动告警。
7. 验收标准核对表
| 需求 | 验收标准 | 本设计落点 |
|---|---|---|
| FR-1401 | 三卡片数据准确;环比正确;无数据引导闭环;权限过滤生效 | D01;预聚合接口;M02权限联动 |
| FR-1402 | 三维度切换流畅;钻取3级闭环;图表-表格联动精准;大数据降采样 | D02;compare接口;EhomeChartWidget |
| FR-1403 | 配置校验全覆盖;模板CRUD;预览≤500ms;受限账号提示 | D03;templates接口;预览接口 |
| FR-1404 | 同步/异步双链路;进度实时;下载安全;并发限流 | D04;exports接口;MQTT进度;加密下载 |
| FR-1405 | 订阅CRUD+启停;时间冲突校验;模板删除联动;推送历史跳转 | D05;subscriptions接口;调度器 |
| FR-1406 | 双主题/7语种/无障碍/响应式全达标 | 第4章;UI组件清单;无障碍规范 |
QA测试要点(专项):
- 数据准确性:看板/分析页数据与M04历史数据对账(抽样100条);环比计算边界(首日/首周无上一周期);
- 导出全链路:同步导出(<1000点)即时下载;异步导出(>1000点)进度推送+24h过期+加密验证;并发3任务限流;取消任务生效;
- 订阅推送:日报/周报/月报准时推送(误差≤1min);推送失败重试3次;模板删除联动失效;渠道不可用置灰;
- 性能压测:看板接口100并发P99≤300ms;分析页10万数据点图表渲染≤1s;导出任务队列100并发无积压;
- 权限与安全:非家庭成员访问返回403;下载链接过期后拒绝访问;文件解密验证;Sentry无敏感数据泄露;
- 弱网与离线:2G网络下看板加载≤3s;导出下载断点续传;MQTT断连后轮询兜底;
- 多语言与无障碍:7语种文案无截断;读屏可朗读图表摘要/表格数据;键盘可操作筛选器;
- 兼容性:iOS 13+/Android 7.0+真机覆盖;折叠屏/平板分栏布局;深色模式全组件走查。
8. 依赖与风险
| 项 | 说明 | 责任/时点 |
|---|---|---|
| M04 传感器历史数据 | 本模块数据源;聚合口径需与M04对齐 | M1接口契约冻结;M2联调 |
| M02 家庭/房间/设备模型 | 权限过滤、维度钻取、设备能力动态过滤 | M1已交付 |
| M01 账号体系 | 受限账号标记、手机/邮箱绑定状态(订阅渠道校验) | M1已交付 |
| M10 推送通道 | 导出完成通知、订阅推送、失败告警 | M1并行 |
| M03 配网绑定 | 无数据引导跳转配网流程 | M1已交付 |
| 时序数据库 | TDengine/InfluxDB聚合查询性能影响分析页体验 | M0技术评审确定 |
| 导出文件存储 | OSS/S3选型+CDN加速;海外节点部署影响下载速度 | M0基础设施确定 |
| PDF生成库 | iText/Aspose licensing;中文/日文等多语言字体嵌入 | M0完成采购/评估 |
| 数据合规 | GDPR/CCPA数据导出权(Right to Access);导出文件是否含个人数据需法务确认 | M1法务评审 |
| 大数据量性能 | 10万+数据点图表渲染/导出耗时可能超预期;需预设降级策略(自动降采样/拆分文件) | M2压测验证 |
以上为 M05 数据可视化与导出(FR-1401~1406)完整详细需求设计:三级聚合看板、多维钻取分析、模板化报表、异步安全导出、订阅推送闭环均已落点;与 M01/M02/M03/M04/M10 文档格式及衔接协议一致(数据同源、权限联动、推送复用),可直接交付 UI 与开发。如确认无误,可按同样格式继续输出 M06 场景自动化、M07 定时任务等后续模块。