NODEDC_PLATFORM/docs/SERVICE_CATALOG_UX_RULES.md

3.2 KiB
Raw Permalink Blame History

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 доступа.