接口分析 · 多周期趋势 · 本地凭据存储 · Cloudflare 部署
校园用电数据分析平台
解决学校平台只读且无法导出的痛点。逆向分析接口并构建自然日重采样与 7 日移动平均算法,采用凭据零落盘无服务器架构,支持 365 天趋势分析、CSV/JSON 导出与游客演示。
为什么要在微信充值页面之外,再做一套用电看板?
中南大学宿舍的水电平台运行在微信端。学校平台能查到充值和扣费记录,但最大的痛点是数据完全无法导出。记录只能在小屏幕上一页页翻,想知道电费到底是哪几天花掉的、或者想拉进 Excel 里做个长期分析,根本没有导出入口。
最开始我的动机非常纯粹:我只是想把自己的用电数据导出来。
有了把接口数据抓出来、导出为 CSV/JSON 的脚本之后,我发现每次跑脚本依然不够直观。既然数据已经清洗好了,便顺手用 Next.js 搭了一个干净的在线看板。这样不仅自己随时看趋势更方便,室友和其他同学也能零门槛直接用。
关键难题:离散数据重采样与 0 存储架构
分析接口拿到数据后,遇到的第一个实际问题是扣费记录不均匀。官方平台是按抄表轮询结算的,一天内可能结算多次,也可能几天才结算一次。如果直接画成图,线条会忽高忽低极其混乱。
为了解决这个问题,我构建了时间序列重采样逻辑,将离散的扣费重新按自然日归一化,算出了每日的真实用电度数。同时为了消除天气突变带来的短期波动,引入了 7 天移动平均算法,平滑掉随机噪声,这才还原出宿舍相对稳定的基线用电水平。
另一个核心考量是账号隐私安全: 第三方工具最忌讳托管用户的统一身份凭据。为了彻底杜绝安全风险,看板设计为纯前端处理架构——用户从调试工具复制的凭据仅在当前浏览器的内存中暂存,关闭页面即销毁。所有数据清洗、指标计算、图表渲染全在浏览器内完成,没有任何后端服务器存储凭据或用电数据。
看板长什么样:最终完成的功能与界面
经过多轮迭代,最终做出来的用电看板包含以下完整模块:
- 多周期趋势与移动平均视图:顶部可一键切换 30 天、90 天与 365 天跨度。主图展示每日用电度数(kWh)柱状图,实时叠加 7 日移动平均线。开空调导致的用电陡增点与日常底噪用电一目了然。
- 星期规律与阶段对比:将扣费数据按周一至周日聚合,用柱状图对比宿舍一周的用电习惯分布(如周末人员集中时的用电峰值);同时对比不同月份的日均电费,反映用电基线变化。
- 充值账单与明细导出:结构化展示充值流水与扣费明细,支持筛选和汇总,指定周期的数据可一键导出为标准的 CSV 或 JSON 文件,方便导入 Excel 或 Python 深加工。
- 打卡海报与游客演示:点击“生成海报”可直接在浏览器绘制一张精致的用电总结海报,抹去了所有敏感凭据,可直接分享至宿舍群;考虑到初次使用获取凭据繁琐,内置了“游客演示”模式,点击即可加载脱敏数据集,零门槛体验完整功能。
静态页面构建后部署在 Cloudflare Pages 边缘节点,响应极快且零服务器运维成本。
开源仓库与在线体验
项目源码、接口分析说明与部署配置已在 GitHub 仓库 全量开源。
如果你想直接体验,无需任何登录凭据,点击游客演示即可完整操作趋势图、账单与数据导出: