[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:
@@ -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.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user