[2026-09-17] eagle: family/how-to/zont-config-compiler.md family/tech/zont-scenario-logic-11109.md work/projects/cpm-m3-telemetry-privacy-triage.md

This commit is contained in:
Alexey Martemyanov
2026-09-17 15:33:05 +06:00
parent d0dfc989e6
commit 4eae38bab8
3 changed files with 214 additions and 172 deletions
+20 -17
View File
@@ -19,7 +19,7 @@ tags:
- homeautomation
title: 🔁 ZONT — сценарная логика и конструктор (11/46/47/48/49/50/59/45)
type: tech
updated: '2026-09-17e'
updated: '2026-09-17f'
---
# 🔁 ZONT — сценарная логика и конструктор логики
@@ -441,10 +441,15 @@ python3 dump_new_types.py # все сценарные объекты
> внутри кавычек (`objcmd 9102 "6,%0";#a` разваливалось). Новый `split_top()` учитывает
> кавычки, экранирование `\` и вложенные `[]` — теперь скрипты печатаются как есть.
### 8.10. ⏳ НЕПРОЗРАЧНЫЕ ЭЛЕМЕНТЫ СЦЕНАРИЯ 8456 (вопросы заданы Alex 2026-09-17, ответа нет)
### 8.10. ⏳ НЕПРОЗРАЧНЫЕ ЭЛЕМЕНТЫ СЦЕНАРИЯ 8456 (✅ разблокированы raw-стратегией)
Alex спросил: «а по всем действиям в "Простой тестовый сценарий" — тебе всё кристально прозрачно?»
Ответ — **нет**. Ниже ровно то, что не выводится из конфига. **Не строить гипотезы — ждать ответа.**
Ответ был**нет**. Ниже ровно то, что не выводится из конфига.
> ✅ **Разблокировано 2026-09-17.** Alex решил: «допиливаешь парсер с известными типами, а неизвестные
> — пусть в yml будут raw values, и тогда я доразберу». После этого конвертер дописан, round-trip
> чистый, **эти вопросы больше не блокируют работу** (§8.9). Семантику доразбирает Alex в YAML
> через `raw`-поля. **Гипотезы по-прежнему не строить** — открытые пункты остаются открытыми.
| # | Элемент | Что неясно |
|---|---|---|
@@ -472,23 +477,21 @@ Alex спросил: «а по всем действиям в "Простой т
(type 59 как сырые строки с `arg1..arg3`, отсутствующие id — как есть). Round-trip останется
байт-точным независимо от того, понята семантика или нет.
### 8.9. Состояние: конвертер на новом конфиге ПАДАЕТ
### 8.9. Состояние: конвертер новый конфиг РАЗБИРАЕТ (2026-09-17)
```bash
$ python3 config-to-yml.py zont_config/config_local_2026-09-17_14-16-35.txt > /tmp/new.yml
Ошибка: Условие 8496: не type 49
EXIT=2
```
> ✅ **ИСПРАВЛЕНО.** Все пять пунктов ниже реализованы в конвертерах (§5c в
> [[family/how-to/zont-config-compiler]]). Round-trip чистый на 6/6 конфигах.
> Ранее падал с `Ошибка: Условие 8496: не type 49` (exit 2) — **больше не падает**.
**Причина:** `config-to-yml.py` в блоке сценариев требует `cond[0] == 49` и
`step[4] == []`. Новые типы (47/48/50/59) и непустое поле 4 не поддерживаются.
**Что было нужно — ВСЁ СДЕЛАНО:**
**Что нужно (после ответов Alex на §8.7):**
1. Парсер типов **47/48/50/59** + рекурсивная сборка дерева условий
2. Поле 5 типа 11 — хранить как **тип запуска** (0/1/8/9/10) + поле 6 (параметр), не как `enabled`
3. Поле 4 шага — принимать непустые списки
4. Ссылки в поле 2 — допускать не-46 типы (45, 11, 3, 5, 9)
5. Round-trip всех 5 конфигов (боевой + 3 архива + новый локальный)
| # | Было нужно | Статус |
|---|---|---|
| 1 | Парсер типов **47/48/50/59** + рекурсивное дерево условий | ✅ `dump_condition`/`dump_leaf`/`dump_action` |
| 2 | Поле 5 типа 11 — **тип запуска** (0/1/8/9/10), не `enabled` | ✅ `trigger: {type, days, time, interval_ms}` |
| 3 | Поле 4 шага — принимать непустые списки | ✅ `blocks[].else` |
| 4 | Ссылки в поле 2 — допускать не-46 типы (45, 11, 3, 5, 9) | ✅ `extra_links` + `_raw_links` |
| 5 | Round-trip всех 5 конфигов | ✅ **6/6** (боевой + 3 архива + новый локальный + live) |
**Счётчики нового конфига (для сверки):** `660 #Z`, `25 #S`, байт — 34 907.