From 25bc00256625b1a2375d3452836dc2b952895341 Mon Sep 17 00:00:00 2001 From: Alexey Martemyanov Date: Thu, 17 Sep 2026 13:05:26 +0600 Subject: [PATCH] [2026-09-17] eagle: family/how-to/zont-config-compiler.md --- family/how-to/zont-config-compiler.md | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/family/how-to/zont-config-compiler.md b/family/how-to/zont-config-compiler.md index 6c4b3de1..357495d3 100644 --- a/family/how-to/zont-config-compiler.md +++ b/family/how-to/zont-config-compiler.md @@ -144,6 +144,10 @@ updated: '2026-09-17g' ### Как это выглядит в YAML +> ⚠️ **ТЕКУЩАЯ форма (коммит `199f2b1`).** Переделывается по **§5c** — там одна вложенная форма +> `blocks[].if/then` для всех сценариев вместо плоского дубля и отдельных секций. Ниже — как есть +> сейчас, чтобы читать работающий код; целевая форма — в §5c. + Одношаговые сценарии (64 из 65) сохраняют плоский вид `when`/`then` — старые YAML не ломаются. Многошаговые получают список `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 вместо текущей разбросанной структуры. с опциональными айдишниками у операторов». @@ -425,11 +429,12 @@ scenarios: | `wait` лежит отдельной секцией верхнего уровня | `wait` — **внутри** `then`, по месту срабатывания | | `extra_links: [11828]` — голые id | `tail:` с блоками `wait` | -**Открытые вопросы (заданы Alex, ответа ещё нет):** -1. Имена ключей: `blocks`/`if`/`then` — или ближе к терминам ZONT `steps`/`condition`/`actions`? -2. Пауза в конце (`11826`, `ms: 0`) — оставлять как `wait` (честно для round-trip) или схлопывать? +**Имена ключей и нулевые паузы — решено, не переспрашивать:** +- Ключи: **`blocks` / `if` / `then`** — ближе к формулировке Alex «вложенные инструкции если … то …». +- Нулевые паузы (`ms: 0`) — **остаются как `wait`**. Честно отражают конфиг, нужны для round-trip. +- `id` у операторов — **опциональные**: пишутся, когда есть в конфиге; отсутствуют, когда нет. -**План работ (после апрува):** +**План работ:** 1. `config-to-yml.py` — блок type 11: генерировать `blocks[].if/then`; `wait` (45) встраивать в `then`; `tail` для хвостовых 2. `yml-to-config.py` — обратный разбор `blocks`; **поддержать старые формы** (`when`/`then`, `steps`) для совместимости 3. `test_roundtrip.py` — все 4 конфига должны остаться чистыми