АРХ - МЕЖПРОЕКТНАЯ КОММУНИКАЦИЯ: правила витрины сервисов и security handoff

This commit is contained in:
Codex
2026-05-12 15:30:00 +03:00
parent 60e70bf86d
commit 61d373f076
4 changed files with 63 additions and 6 deletions
+56
View File
@@ -0,0 +1,56 @@
# 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 доступа.