[2026-09-17] eagle: family/how-to/zont-config-compiler.md

This commit is contained in:
Alexey Martemyanov
2026-09-17 13:05:26 +06:00
parent 78c04ea1fe
commit 25bc002566
+10 -5
View File
@@ -144,6 +144,10 @@ updated: '2026-09-17g'
### Как это выглядит в YAML ### Как это выглядит в YAML
> ⚠️ **ТЕКУЩАЯ форма (коммит `199f2b1`).** Переделывается по **§5c** — там одна вложенная форма
> `blocks[].if/then` для всех сценариев вместо плоского дубля и отдельных секций. Ниже — как есть
> сейчас, чтобы читать работающий код; целевая форма — в §5c.
Одношаговые сценарии (64 из 65) сохраняют плоский вид `when`/`then` — старые YAML не ломаются. Одношаговые сценарии (64 из 65) сохраняют плоский вид `when`/`then` — старые YAML не ломаются.
Многошаговые получают список `steps`, а хвостовые задержки — `extra_links`: Многошаговые получают список `steps`, а хвостовые задержки — `extra_links`:
@@ -376,7 +380,7 @@ diff A.txt B.txt # пусто = round-trip чистый
--- ---
## 5c. 🔄 Переработка структуры YAML сценариев — ПЛАН, ждёт апрува (2026-09-17) ## 5c. 🔄 Переработка структуры YAML сценариев — СОГЛАСОВАНО, в работе (2026-09-17)
**Задача Alex:** «переписать блок парсинга/сборки сценариев чтобы он составлял синтаксис как у Home Assistant automations вместо текущей разбросанной структуры. с опциональными айдишниками у операторов». **Задача Alex:** «переписать блок парсинга/сборки сценариев чтобы он составлял синтаксис как у Home Assistant automations вместо текущей разбросанной структуры. с опциональными айдишниками у операторов».
@@ -425,11 +429,12 @@ scenarios:
| `wait` лежит отдельной секцией верхнего уровня | `wait`**внутри** `then`, по месту срабатывания | | `wait` лежит отдельной секцией верхнего уровня | `wait`**внутри** `then`, по месту срабатывания |
| `extra_links: [11828]` — голые id | `tail:` с блоками `wait` | | `extra_links: [11828]` — голые id | `tail:` с блоками `wait` |
**Открытые вопросы (заданы Alex, ответа ещё нет):** **Имена ключей и нулевые паузы — решено, не переспрашивать:**
1. Имена ключей: `blocks`/`if`/`then`или ближе к терминам ZONT `steps`/`condition`/`actions`? - Ключи: **`blocks` / `if` / `then`**ближе к формулировке Alex «вложенные инструкции если … то …».
2. Пауза в конце (`11826`, `ms: 0`) — оставлять как `wait` (честно для round-trip) или схлопывать? - Нулевые паузы (`ms: 0`) — **остаются как `wait`**. Честно отражают конфиг, нужны для round-trip.
- `id` у операторов — **опциональные**: пишутся, когда есть в конфиге; отсутствуют, когда нет.
**План работ (после апрува):** **План работ:**
1. `config-to-yml.py` — блок type 11: генерировать `blocks[].if/then`; `wait` (45) встраивать в `then`; `tail` для хвостовых 1. `config-to-yml.py` — блок type 11: генерировать `blocks[].if/then`; `wait` (45) встраивать в `then`; `tail` для хвостовых
2. `yml-to-config.py` — обратный разбор `blocks`; **поддержать старые формы** (`when`/`then`, `steps`) для совместимости 2. `yml-to-config.py` — обратный разбор `blocks`; **поддержать старые формы** (`when`/`then`, `steps`) для совместимости
3. `test_roundtrip.py` — все 4 конфига должны остаться чистыми 3. `test_roundtrip.py` — все 4 конфига должны остаться чистыми