digraph MushroomHikeApp { rankdir=TB; fontsize=12; node [shape=rectangle, style=rounded, fontsize=11, margin="0.2,0.1"]; edge [fontsize=9]; // --- Основные состояния (соответствуют пунктам меню и задачам) --- main [label="Главная\n(выбор похода, архив)"]; route [label="Маршрут\n(планирование, навигация)"]; basket [label="Корзина\n(находки группы)"]; chat [label="Чат\n(координация)"]; guide [label="Справочник\n(виды грибов)"]; // --- SOS (красный, доступен отовсюду) --- sos [label="SOS\n(экстренный вызов)", color="red", fontcolor="red", style="rounded,bold", penwidth=2]; // --- Невидимая точка для SOS --- anyToSOS [shape=point, width=0, height=0, style=invis]; anyToSOS -> sos [label="из любого\nсостояния", style=dashed, color="red", fontcolor="red"]; // --- Переходы между основными состояниями --- main -> route [label="создать/\nначать поход"]; route -> main [label="завершить\nпоход"]; // Нижняя навигация (доступна из активного похода) route -> basket [label=""]; basket -> route [label=""]; route -> chat [label=""]; chat -> route [label=""]; route -> guide [label=""]; guide -> route [label=""]; basket -> chat [label=""]; chat -> basket [label=""]; basket -> guide [label=""]; guide -> basket [label=""]; chat -> guide [label=""]; guide -> chat [label=""]; // Фиксация находки (внутри маршрута) route -> basket [label="добавить\nнаходку", style=dashed]; }