# Service Catalog UX Rules Актуализировано: 2026-05-12. Этот документ фиксирует обязательное правило Launcher-витрины NODE.DC. ## Главное правило Все authenticated users видят карточки всех сервисов, добавленных в каталог Launcher, независимо от текущего app access. Видимость карточки сервиса не означает право запуска сервиса. ## Зачем это нужно Launcher — это не только access gate, но и витрина платформы. Пользователь должен видеть, какие приложения существуют в NODE.DC, даже если доступ к конкретному приложению ещё не выдан. Это нужно для: - демонстрации состава платформы; - ручного запроса доступа; - будущих тарифов и paid access; - понимания, какие модули доступны в экосистеме. ## Как должен работать UI Для сервиса без доступа: - карточка сервиса остаётся видимой в нижней/сервисной панели; - описание, медиа и карточка доступны для чтения; - статус/chip показывает отсутствие доступа; - кнопка открытия сервиса disabled или ведёт в controlled request/access flow; - прямой запуск через `/api/services/:serviceSlug/launch` обязан возвращать deny. Для сервиса с доступом: - карточка сервиса видима; - кнопка открытия активна; - launch идёт только через Launcher BFF, а не прямым trust из UI. ## Realtime правило Изменение доступа должно обновлять состояние карточки без hard refresh: - выдали доступ — кнопка открытия становится активной; - сняли доступ — карточка остаётся видимой, но кнопка открытия выключается; - direct launch после снятия доступа остаётся запрещённым server-side. Нельзя чинить безопасность через скрытие карточек. Безопасность обеспечивается server-side launch deny, Tasker middleware и internal access enforcement. ## Что запрещено - Фильтровать `/api/apps` только до доступных пользователю приложений, если это ломает витрину. - Убирать карточку сервиса из UI только потому, что у пользователя нет app access. - Считать скрытие карточки security control. - Ломать realtime-переключение кнопки `Открыть` при approve/revoke доступа.