VPS-78: hass 主机文档同步 v5(归档不经过 HA + 新口径 + 自愈 job + check 9)
- 澄清 csg_history 归档全部在 pgdb 侧:HA scribe 集成只写 states_raw, 1010/1011 在 pgdb 读 states_raw 落表 → 口径/job 变更不需要动 HA 配置或重启 Core - 区分模板传感器 sensor.csg_history(读集成 attributes)与同名表 - 口径:日期+用量同源 latest_day_kwh;日费用 = csg_ladder_cost_raw 边际差分 + round(...,2) - 指向 runbooks/pgdb-health.md check 9 与 hosts/pgdb.md Known issues 2026-09-22
This commit is contained in:
+26
-10
@@ -348,16 +348,32 @@ supervisor 代理 WS 被拒(loop prevention),用
|
||||
经 WS `lovelace/config/save` 写回;再扫描 helper 引用,确认无消费者后才可删除
|
||||
配置入口,勿直改 `.storage/`。
|
||||
|
||||
**CSG 长期归档(W1N-243, 2026-08-29;任务改号 2026-09-21):** scribe 库新增
|
||||
`csg_history` 表(逐日 usage/cost/ladder/balance + 逐月累计;2026-07-01 起回填,
|
||||
永久),由 TimescaleDB 每日任务 **1010**(原 1008,2026-09-21 重建)
|
||||
`csg_daily_snapshot()`(**14:30 UTC = 22:30 Asia/Shanghai**;**TS job 非 pg_cron**)
|
||||
upsert 维护;计费用 `csg_ladder_cost(kwh, month)`。日行 usage 取集成
|
||||
`yesterday_kwh`,日费用在原生 `latest_day_cost` 缺失时回退 = 昨日用电 ×
|
||||
当前档费率(模板 `csg_current_ladder_tariff`);月行由阶梯助手重算。**语义**:
|
||||
day 行 usage/cost 为该日值,ladder/balance 为快照值。详见
|
||||
[hosts/pgdb.md](../hosts/pgdb.md) § Known issues 2026-09-21(含原 1008 从未成功
|
||||
的根因与回填)。
|
||||
**CSG 长期归档(W1N-243, 2026-08-29;任务改号 2026-09-21;口径统一 v5 2026-09-22):**
|
||||
scribe 库 `csg_history` 表(逐日 usage/cost/ladder/balance + 逐月累计;2026-07-01 起
|
||||
回填,永久),由 TimescaleDB **两个**任务维护(**均为 TS job,非 pg_cron**):
|
||||
**1010** `csg_daily_snapshot()`(14:30 UTC = 22:30 Asia/Shanghai)写当日行;
|
||||
**1011** `csg_backfill_missing_days()`(15:10 UTC = 23:10 Asia/Shanghai)是
|
||||
**断档自愈**——只 `INSERT` 缺失日期、`ON CONFLICT DO NOTHING`,**绝不覆盖既有行**。
|
||||
|
||||
> **归档逻辑全部在 pgdb 侧,不经过 HA。** HA 的 scribe 集成只往 `states_raw` 写状态,
|
||||
> 上面两个任务在 pgdb 侧读 `states_raw` 落表。因此 `csg_history` 相关的口径/job 变更
|
||||
> **不需要改 HA 配置、不需要重启 Core**。另注意:模板传感器
|
||||
> `sensor.csg_history`(state = 天数「51 条」)读的是集成 attributes
|
||||
> `this_month_by_day` / `last_month_by_day`,**与这张同名表无关**,别混淆。
|
||||
|
||||
**v5 口径(2026-09-22)**:数据日期与当日用量取**同一实体同一行**
|
||||
`sensor.0800041935246530_latest_day_kwh`(`latest_day_date` 属性 + `value`;v3 曾用它的
|
||||
属性定日期却用 `yesterday_kwh` 取值,两实体可能错配,且后者归档少一条 09-06 = 9.29)。
|
||||
日费用 = `round(csg_ladder_cost_raw(c1) − csg_ladder_cost_raw(c0), 2)`,即**当月累积的
|
||||
边际差分**,与 v3 回填同口径;`csg_ladder_cost_raw` 是新增的**无舍入**版助手(直接用
|
||||
`csg_ladder_cost(c1) − csg_ladder_cost(c0)` 会二次舍入,7 月实测 1 天差 0.01)。月行由
|
||||
`csg_ladder_cost` 单次舍入重算。**语义**:day 行 usage/cost 为该日值,ladder/balance 为
|
||||
快照值;各月 `|sum(day cost) − month cost| ≤ 0.05` 元是**逐日舍入的累积**(非缺陷),
|
||||
月行才是权威值。脚本 `compose/pgdb/csg-snapshot-v5.sql`,快照 `csg_history_bak_20260922`。
|
||||
健康检查:[pgdb-health](../runbooks/pgdb-health.md) 第 9 项专查归档新鲜度——**上游停更时
|
||||
job 会反复 upsert 同一行、`last_run_status` 仍是 `Success`、日期上也没有缺口,只有
|
||||
「最新 day 行日期」这条断言能发现**。详见 [hosts/pgdb.md](pgdb.md) § Known issues
|
||||
2026-09-21(1008 从未成功的根因与回填)与 **2026-09-22**(v5 口径统一 + 自愈 + 校验)。
|
||||
|
||||
**CSG 预测值复核(2026-09-21,只读):** 对
|
||||
`sensor.csg_*` 全部 14 个派生值用独立 Python 实现按同一输入重算,逐个与 HA
|
||||
|
||||
Reference in New Issue
Block a user