# Дерево условий восприятия (_7_perception_tree)

## Назначение

Модуль реализует **дерево условий восприятия** — иерархию из 6 уровней, по которой определяется текущая «ветка» условий. Узлы дерева используются ориентировочным рефлексом, эпизодической памятью (perceptionNodeId в кадре) и в перспективе — более сложными рефлексами и автоматизмами.

## Уровни

1. **BaseID** — базовое состояние (1=Плохо, 2=Норма, 3=Хорошо).
2. **EmotionID** — эмоция (сочетание активных базовых контекстов).
3. **ActivityID** — ID образа из FinalImages (активные стимулы), не ID кнопки.
4. **ToneMoodID** — тон и настроение (в данной реализации не используется; вербальный ввод и вербальные деревья в проект не входят).
5. **SimbolID** — первый символ первой фразы (не используется).
6. **PhraseID** — ID распознанной фразы (не используется).

Активная ветка определяется по уровням 1–3 (BaseID, EmotionID, ActivityID). Уровни 4–6 сохранены в структуре для совместимости с теорией и могут оставаться 0 или использоваться в будущем для иных невербальных измерений.

По полному пути из 6 ID выполняется быстрый поиск узла (pathIndex); по nodeId можно восстановить весь путь.

## Персистенция и интерфейс

- Компактный формат: одна строка на узел — `ID|ParentNode|BaseID|EmotionID|ActivityID|ToneMoodID|SimbolID|PhraseID`. Сохранение в IndexedDB (по пульсу при изменениях) и в файл (Сохранить/Загрузить).
- В интерфейсе отображается **активная ветка** (жёлтый блок): BaseID → EmotionID → ActivityID, актуальный стимул, последние 10 кадров ЭП, прогресс периода ожидания ЭП, кнопки копирования и тестового режима ЭП.

## Файлы

- **perception_tree.js** — узлы (nodes), pathIndex, getOrCreateTerminalNode, обновление вида активной ветки, расшифровка имён стимулов/действий для ЭП, сохранение/загрузка дерева.

Дерево обновляется по пульсу; терминальный узел по текущему пути (baseID, emotionID, activityID, 0, 0, 0) передаётся в ОР и в save_episodic_memory.
