виджет · согласие и запись
Один вопрос: на что посетитель должен согласиться и что ему разрешено. Требование согласия, его уведомление, временное послабление по телефону и приём файлов по умолчанию — четыре консольные панели (согласие, уведомление, бронирование, вложения), сведённые в один экран. Открывается из хаба «Виджет на сайте».
Слева — уведомление уже задано, показано в режиме чтения с «Изменить». Справа — уведомление в режиме правки (текст + ссылка), плюс переключатель согласия и его [JsonRequired]-природа.
Уведомление сохраняет консольную форму «сначала прочитать, потом править» (25-24): экран сообщает, что сейчас в силе, прежде чем предложить редактор. «Требовать согласие» и «что говорит уведомление» — два разных решения, и разделение сохранено внутри экрана.
«Принимать непроверенные телефоны» намеренно сформулировано как временное послабление (14-15 / 25-39), а не как обычный тумблер функции.
Принцип (teaching mode): консоль получает безопасность полного DTO бесплатно — у неё одна форма и один «Сохранить» над всеми полями. Приложение восстанавливает эту безопасность через три экрана, держа закоммиченное целое в одной общей ViewModel и мержа по одному срезу. Поэтому requireContactConsent и любой другой булев всегда уходят на сервер и никогда не сбрасываются молча.
Приём файлов по умолчанию засевает скрепку в композере треда (25-104, см. навигацию). Отказ сервера (InvalidNoticeText / InvalidNoticeUrl) показывается дословно; черновик остаётся, committed не меняется.