# 澄湖智造产业园能耗日报

> 活页公开模板 `sample-energy-daily` · 场景: 监测日报 · 行业: 制造供应链 / 房产家居
> 任何人、任何 Agent 都可以读、照着改，不需要账号。示例内容均为虚构。
> 真页面: https://getlivepage.com/s/8DFhMZTNPkAN · 详情: https://getlivepage.com/examples/sample-energy-daily

## 这是什么

能耗日报 · 每天一期发进负责人群

## 什么时候用

要每天固定链接发一期带异常提醒和趋势图的运营数据日报（能耗、设备、产线）时选；只是一次性分析选 sample-analysis-report；舆情/政策监测选 sample-monitor-daily；门店经营大屏选 sample-ops-screen。

## 用户对助手说的原话

把园区每天的电、水、气读数做成一份「能耗日报」网页，每天更新一期、链接不变，发到负责人群里：最上面一条醒目的状态条「11月14日 4 处异常 · 2 红 2 黄」（红点脉冲），下面一句点名最需要先看的那一条；接着是园区名、日报期号（第几期）和日期；首屏三块大数字（总用电、用水、用气），各带较昨日的涨跌箭头、占定额的百分比和一条 30 天小折线（定额虚线、当天异常标红点）；然后是异常区，按「超过定额」和「较昨日涨跌 30% 以上」两类列出今天的异常点位（如「3 号楼空调 · 用电 +48%」），红黄两级，每条写一句可能原因、责任区域和读数/定额，旁边一个「我来处理」按钮，负责人填一句处理说明提交到一张数据表，提交后这条显示「已认领 · 署名：说明」；下面是近 30 天趋势折线图（入场时描线动画），能切换电/水/气和点位，定额画成虚线，有异常的日子标红点，点图上某天就切到那一期；最后是往期日历，点某一天在同一页切到那一期，网址记住选中的日期。所有数据来自一张每天追加一行的数据表（日期、点位、电/水/气读数、定额），异常由数据现算，总量等于各点位之和。电脑上排成值班大屏式的左右两栏（左边今日数字和异常，右边大趋势图和日历），手机上一栏、往期改成横向滑动的日期条，暗色模式也要好看。

如果你还没有活页连接器（MCP），先读 https://getlivepage.com/for-agents.md ，照里面的说明接入，或不登录直接发布。

## 照着做一份

1. 读入口文件 https://getlivepage.com/examples/sample-energy-daily/source/index.html（它引用的其他文件见下方列表）。
2. 保留结构、版式和交互，把内容**全部**换成用户自己的；模板里的公司、人名、数字都是虚构的，一样都别留。
3. 交付一个自包含的单文件 HTML：样式写在页面里，不引外部字体 / 脚本 / CDN；手机 375 宽和电脑 1440 宽都要好看，模板有暗色就保留暗色。
4. 要发成微信里能打开、改了链接不变的网页：接入活页（https://getlivepage.com/for-agents.md）后发布；没有账号也可以让用户在 https://getlivepage.com/quick 上传这个文件。
5. 没有活页工具、但能发 HTTPS 请求：把做好的 HTML 以 Content-Type: text/html POST 到 https://getlivepage.com/api/quick?client=template-sample-energy-daily ，返回预览链接、7 天分享与认领链接（登录后保留、链接不变）。

## 页面结构

- 今日用量
- 异常点位
- 近 30 天趋势
- 往期

## 文件（公开，纯文本）

- https://getlivepage.com/examples/sample-energy-daily/source/index.html（入口）

## 发成活页之后还能做的

- 同一链接每天更新一期，往期在同一页里翻（数据表 daily 每天追加，页面现算异常与趋势）
- 负责人在页面上认领异常并写处理说明（原生表单 POST ./_data/acks，微信署名读回）
- 阅读回执（谁看了、看到哪一节）

## 发之前要备好

- 数据表 daily（列 date / point / elec / water / gas / quota_elec / quota_water / quota_gas / note）：定时任务每天给每个点位追加一行；页面读 ./_data/daily.json，读不到时用页面里内联的快照
- 数据表 acks（列 date / point / note，identity: "wechat"、per_reader: "off"、append_open: true）：「我来处理」表单写进这里，读回用行的 _by.name 署名

## 模板说明（README）

虚构的「澄湖智造产业园」能源管理组，每天由自己的 Agent 定时任务汇总电表、水表、燃气表读数，发一期「能耗日报」到各楼栋 / 车间负责人群里。园区、人名、读数均为虚构。

## 演示哪个特色

**每天只写数据、链接不变 + 负责人在页面上认领异常。**

- 页面本身不用每天改：定时任务每天往数据表 `daily` 给每个点位追加一行，页面打开时 `fetch('./_data/daily.json')` 读回，
  现算出今天这一期的总量、异常、30 天趋势和往期日历；读不到（断网、表还没建）时用页面里内联的 `SNAPSHOT` 快照。
- 异常是**按数据现算**的，异常列表、趋势图红点、往期日历的红黄圆点出自同一份计算，不会对不上：
  - 超标：当天读数 > 定额；
  - 环比异常：较昨日 ±30% 以上（昨天本身已是异常时，今天回落不重复报）；
  - 红：超定额 10% 以上或环比 ±40% 以上，其余为黄。
- 往期在同一页里切换，URL hash 记住选中的日期（`#2026-11-03`），发链接时可以直接带上某一期。
- 每条异常有「我来处理」：原生表单 `POST ./_data/acks`（`date` / `point` / `note`），不跑脚本也能提交；脚本在时页内提交，
  该条变成「已认领 · 署名：说明」。署名取读回行里平台给的 `_by.name`（没有就显示「负责人」），用 `textContent` 渲染。
- 脚本不跑时：今天这一期、异常列表、全园用电趋势图都已是静态 HTML，内容完整。
- 记忆点：红色异常数字的轻脉冲 + 折线描边入场 + 定额虚线；`prefers-reduced-motion` 时停在终态。

## 改哪里变成我的

| 位置 | 改什么 |
|---|---|
| 数据表 `daily` | 每行一个点位一天：`{"date":"2026-11-14","point":"3 号楼空调","elec":3807,"water":0,"gas":0,"quota_elec":3000,"quota_water":0,"quota_gas":0,"note":"可能原因（有异常时写）"}`。某个点位没有该表计时读数与定额都写 0（图和点位下拉会自动跳过）。`note` 是给异常那条的「可能原因」，没写时显示「原因待查」 |
| 脚本里的 `SNAPSHOT` | 内联快照，格式与 `daily` 表的行完全相同（一个数组）。只用快照不建表也行：每天把新一行追加进快照再发一版，链接同样不变 |
| 脚本里的 `DEMO_ACKS` | 一条演示用的认领行（锅炉房 · 用气，王工 08:12），让没有真实认领时也能看到读回的样子；发自己的日报时删掉这一行 |
| 口径 | 每一期是某天 00:00–24:00 的全天读数，次日 07:30 发布（页头那句由 `srcText()` 按日期生成） |
| 脚本里的 `AREA` | 点位 → 责任区域（如「3 号楼 · 物业工程部」） |
| 脚本里的 `FIRST` | 期号起点：`{ date, no }`，之后每天 +1 |
| 页头 `.org` / `h1` / `#h-meta` | 园区名与标志（内联 SVG）、编制人、发送对象（`#h-meta` 由脚本按日期重写，改 `head()` 里那一句） |
| 阈值 | `build()` 里的 `0.3`（环比）与 `0.1` / `0.4`（红色线） |
| 页脚 | 平台标志与名称（与 `core/space/src/theme.ts` 逐字一致）+ 适用场景；发自己的日报时整段删掉 |
| `manifest.json` | `title` / `share.title` / `share.desc`；节增减时 `sections` 与页里的 `id` / `data-track-section` 三处同改 |

## 数据表

```
set_data  proposal_id: <id>  table: "daily"  columns: ["date","point","elec","water","gas","quota_elec","quota_water","quota_gas","note"]  rows: <快照数组>  revision: 0
set_data  proposal_id: <id>  table: "acks"   columns: ["date","point","note"]  rows: []  identity: "wechat"  per_reader: "off"  append_open: true  revision: 0
```

定时任务每天：`get_data table=daily` 取 revision → 追加当天各点位的行（有异常的点位顺手写一句 `note`）→ `set_data`。页面不用重发。
负责人认领后用 `list_data_rows table=acks` 读回。本地 `space-cli serve` 会把提交写进 `_data/acks.json`，试完改回 `[]`。

## 怎么发出去

```
publish_file
  filename: "index.html"
  content: <index.html 全文>
  title: "澄湖智造产业园能耗日报"
  manifest: <manifest.json 的内容，去掉 entry>
  hold: true            # 先看预览，确认后 publish_version
```

然后按上面建好两张表，`set_visibility` 设成负责人能看（口令或公开），把链接发进群；之后每天只写 `daily` 表。

## 素材

无位图；标志、箭头、图表都是内联 SVG。`thumb.webp` / `phone.webp` 由 `examples/verify-shots.mjs` 从成品截出，不进发布包。
