交互式数据预演沙盘
把一份静态数据表变成一个「能拖滑块、实时看结果」的交互页面,让非技术同事也能自己调参做决策。
核心原则
- 先算清楚,再做页面:所有指标必须先用Python从源数据算出来,页面只是可视化和参数联动,不在页面里藏未验证的计算逻辑。
- 离线可用:ECharts必须用本地文件引用,禁止CDN(内网/受限浏览器加载失败是第一大坑)。
- 全量替换渲染:
setOption(option, true)第二个参数必须为true,避免增量合并导致图表不刷新。 - 错误可见:页面顶部留红色错误框,JS异常时直接显示,不要静默失败。
五步工作流
第一步:数据探查与口径确认
- 用
openpyxl/pandas完整读取源文件,列出所有sheet、字段、数据范围 - 确认关键口径:计量单位、时间粒度、聚合方式、是否有汇总行需剔除
- 识别「方案/配置维度」(有哪些可对比的对象)和「指标维度」(要算哪些数)
- 多sheet/多文件时先建立字段映射,确认可比口径一致
第二步:分析计算(Python,结果存JSON)
- 对每个方案计算所有指标,输出为结构化JSON
- 必须包含:方案ID/名称/来源/备注、各参数点下的指标值、效率/符合性等辅助字段
- 关键计算用
calculator工具或Python脚本复算,禁止手算 - 计算结果保存为
sandbox_data.json,作为页面的唯一数据源
第三步:沙盘设计(一页纸规划)
在写代码前先确定以下内容(写在临时笔记里即可):
| 设计项 | 要回答的问题 | |---|---| | 滑块参数 | 哪些参数用户会调?(风量/电价/运行小时/数量/折扣率…)每个的min/max/step/default | | KPI卡片 | 顶部展示哪4个核心指标?每个的颜色标识和单位 | | 曲线图 | 什么参数作为X轴?几条曲线(每个方案一条)? | | 构成图 | 饼图/环形图展示什么的占比?(当前方案的成本构成/阻力构成/能耗构成) | | 柱状图 | 各方案的什么指标横向对比?是否标最优线? | | 对比表 | 哪些列?是否高亮最优行? | | 结论区 | 页面顶部放哪3-5条核心洞察? |
第四步:生成HTML
- 复制
assets/template.html到输出目录,改名为业务相关名称 - 把第二步的JSON数据内嵌到HTML的
<script>中(替换/* DATA_PLACEHOLDER */) - 按第三步的设计定制:
- 滑块定义(
PARAMS数组) - 方案数据(
SCENARIOS数组) - 计算函数(
calcMetrics()根据当前滑块值重算) - KPI更新(
updateKPIs()) - 三个图表的
updateXxxChart() - 对比表
updateTable()
- 滑块定义(
- 运行
scripts/ensure_echarts.py <输出目录>把echarts.min.js放到同目录 - 禁止:CDN引用、内嵌1MB大文件(会有
</script>截断风险)、setOption不加true
第五步:验证与交付
- 用浏览器打开HTML,逐项检查:滑块拖动时KPI和图表是否实时变化、6个方案切换是否正常、图表有无空白
- 运行
scripts/verify_sandbox.py <html路径>做静态检查(ECharts引用、关键函数存在、数据完整性) - 交付时必须同时给
xxx.html和echarts.min.js,并说明「两个文件放同一文件夹,双击HTML打开」 - 用
present_files交付两个文件
常见坑与避坑指南
| 坑 | 现象 | 解法 |
|---|---|---|
| CDN加载失败 | 图表区域全白,坐标轴都没有 | 必须用本地echarts.min.js,scripts/ensure_echarts.py |
| 内嵌大文件截断 | 坐标轴有但数据线没有 | 禁止内嵌,用独立JS文件引用 |
| setOption增量合并 | 切换方案后图表数据不刷新或重叠 | 所有setOption必须加第二参数 true |
| 线条颜色缺失 | 曲线点有但线看不见 | 必须同时设 lineStyle.color 和 itemStyle.color |
| 透明背景异常 | 图表区域白底/黑底异常 | 用实色背景如 #162230,不用 transparent |
| 初始化时机不对 | 偶发图表不渲染 | 包在 DOMContentLoaded 或 if(document.readyState==='loading') 里 |
| 滑块步长不合理 | 拖半天数值不变 | step要合理(风量125、电价0.05、数量1) |
| 只给HTML不给JS | 同事打开全白 | 交付必须两个文件一起,说明放同目录 |
参考文件
- 计算模式:
references/calculation-patterns.md— 风机功率/年能耗/成本节省/线性插值/效率穿透等常用公式 - 图表配方:
references/chart-recipes.md— 折线图/饼图/柱状图的ECharts配置模板,直接复制改数据 - 页面模板:
assets/template.html— 完整的沙盘HTML模板,含深色主题布局、滑块、KPI、三图表、表格框架
脚本
scripts/ensure_echarts.py <目录>— 下载echarts.min.js到指定目录(已存在则跳过)scripts/verify_sandbox.py <html路径>— 静态检查HTML是否符合沙盘规范
Scan to join WeChat group