← ClaudeAtlas

single-file-dashboardlisted

把表格数据做成"一个 HTML 文件就是全部"的可传播看板——双击即开、离线可用、密码访问、数据加密、单元格就地可改、图表用原生 SVG 手绘。当交付物需要靠邮件/U盘/共享文件夹在同事之间传、且对方电脑上不能装任何东西时使用。也用于需要把经营数据锁在本地不外发的场景。
1231Johnny/claude-skills · ★ 1 · Data & Documents · score 74
Install: claude install-skill 1231Johnny/claude-skills
# 单文件数据看板 看板整体效果(示例数据,非真实主体): ![效果示例](assets/preview.png) ## 什么时候用 - 成果要**传给不会装环境的人**——对方双击就能看,不需要服务器、数据库、构建工具、也不联网; - 数据**不适合放到线上**(经营数据、内部排名),但又需要给多个人看; - 台账**还会持续更新**,希望接收方自己也能改几个数、改完还能再传出去。 如果只是给自己看、且不在乎离线,用常规的网页 + 后端更省事。这个 skill 的全部价值就在"**文件即数据、文件即应用**"这一条约束上。 ## 四条硬约束 违反任何一条,这个方案就不成立了: 1. **单文件**——HTML 里不能有外链的 CSS / JS / 图片 / 字体。CDN 一断、内网一隔离,页面就白屏。 2. **数据嵌在文件里**——不请求任何接口,数据以加密串的形式写在 `<script>` 里。 3. **零构建**——接收方拿到的是成品文件,不需要 `npm install`。 4. **保存 = 下载**——没有后端可写,用户点的"保存"是把当前状态序列化后**另存为一个新的 HTML 文件**。 ## 工作流 ### 第 1 步:先把数据摸清楚,再动手做界面 **不要拿到 Excel 就开始写 HTML。** 先跑 `excel-data-pipeline/scripts/inspect_excel.py`,它会把这个工作簿的真实结构 dump 成一个文本文件:sheet 名单、行列范围、逐列的列号与表头文字、前若干行的样例值。 这一步跳过,后面 90% 的返工都来自它。真实台账的常见形态:表头不在第一行、有合并单元格、中间夹着空行做视觉分隔、同一份数据里并排放着好几个"年度块"。 ### 第 2 步:定列契约,写进脚本 把上一步看出来的列位置显式写进提取脚本的**顶部配置区**,不要在代码中间散落魔法数字 `row[9]`。参考 `excel-data-pipeline` skill 的 `scripts/extract.py`。 同时在脚本开头加一道**列名校验**:读第 1 行的表头文字,和预期的列名逐个比,对不上就报错退出。台账被人删过两列、整体前移这种事,校验能在生成阶段拦住,而不是等交付后被人发现数字错了。 ### 第 3 步:从骨架开始,不要从零写 `assets/dashboard-skeleton.html` 是一个能跑的最小可用看板,已经打通了下面这条完整链路: ``` 输入密码 → PBKDF2 派生密钥 → AES-GCM 解密 → 解析 JSON → 渲染 KPI + SVG 图表 + 表格 ``` 把它复制成你的目标文件,然后只做三件事:改 `__META__` 里的标题机构等文案、改渲染函数贴合你的指标、调整配色。**不要**改加密与解密那一段——两端必须严格对称,改错一边就是永远解不开。 ### 第 4 步:��数据加密后注入 ```bash # 装依赖(只需要 xlsx 一个) npm install xlsx # 编辑 scripts/dashboard_build.js 顶部的可配置区,然后: node scripts/dashboard_build.js ``` 脚本做四件事:读 Excel → 按列契约解析成 JSON → 用 PBKDF2 + AES-GCM 加密 → 用正则把密文替换进 HTML 的两个标记位之间。**可以反复运行**,每次都用