M8-T03: adopt DSMR history into meter sources
This commit is contained in:
@@ -363,7 +363,7 @@ T01~T06 先把现有 DSMR 安全迁到统一 source/binding;T07~T11 再接
|
||||
|
||||
### M8-T03 — 将 DSMR 历史迁入 Source / Binding [structural]
|
||||
|
||||
- **Status**: `todo`
|
||||
- **Status**: `done`
|
||||
- **Depends**: M8-T02
|
||||
- **Context**: 先把既有电力链路安全迁到统一模型,之后才能让 runtime 和计费真正按 source 工作。
|
||||
|
||||
@@ -373,6 +373,7 @@ T01~T06 先把现有 DSMR 安全迁到统一 source/binding;T07~T11 再接
|
||||
- `modify scripts/app_db_adopt.py`
|
||||
- `create tests/test_dsmr_source_migration.py`
|
||||
- `modify tests/test_energy_models.py`
|
||||
- `modify tests/test_meter_sources.py`
|
||||
|
||||
**Steps**
|
||||
1. 把 ORM `DsmrReading.source_id` 重命名为 nullable `telegram_id`,新增 non-null
|
||||
@@ -385,6 +386,8 @@ T01~T06 先把现有 DSMR 安全迁到统一 source/binding;T07~T11 再接
|
||||
5. 用 revision 14 的历史 fixture 覆盖单 Meter、多次换表、跨界成本、无读数 Meter 和无旧 config。
|
||||
6. 把 `APP_BASELINE_REVISION` 同步到 revision 16;所有升级 fixture 仅在 `tmp_path` 中构造,不读取
|
||||
真实 app DB 或 volume。
|
||||
7. 把 T01 自身的 revision 14→15 schema 对账测试固定升级到明确 revision 15,不以可继续前进的
|
||||
`head` 作为 T01 终点;T03 的新 fixture 单独负责 revision 14/15→16 历史回填对账。
|
||||
|
||||
**Out of scope / 不要碰**
|
||||
- 不删除旧 DSMR `app_config` 行,不改变 MQTT subscription,不改 API 响应。
|
||||
@@ -395,11 +398,13 @@ T01~T06 先把现有 DSMR 安全迁到统一 source/binding;T07~T11 再接
|
||||
- [ ] 两个 source 可在同一 timestamp 各存一条 DSMR reading;同 source 重复 timestamp 被拒绝。
|
||||
- [ ] `telegram_id` 不参与幂等唯一键,旧 telegram id 完整保留。
|
||||
- [ ] `APP_BASELINE_REVISION` 等于唯一 revision 16 head,升级重复运行幂等。
|
||||
- [ ] T01 schema-only fixture 固定停在 revision 15,T03 fixture 到 revision 16,二者职责不随 head 漂移。
|
||||
- [ ] 历史升级 fixture、空库升级、`pytest`、`ruff check .` 全绿。
|
||||
|
||||
**Reviewer checklist**
|
||||
- 对账是否在 migration 中真实执行,而不只是测试断言;失败能否原子回滚。
|
||||
- baseline 常量是否随 revision 16 同步,fixture 是否完全隔离于真实生产路径。
|
||||
- 前序 migration 测试是否使用明确 revision 边界,而非把历史阶段误写为永久 `head`。
|
||||
- 是否存在“把所有历史强绑当前 Meter/source”的静默错误或任何 destructive cleanup。
|
||||
|
||||
### M8-T04 — DSMR runtime 改为多 Source 配置 [structural]
|
||||
|
||||
Reference in New Issue
Block a user