krona-front/docs/handoff/control-center/UX-SPEC.md

88 lines
10 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Krona Control Center — UX Спецификация
## 1. Архитектура и Назначение
Krona Control Center (KCC) — изолированный закрытый инженерный пульт владельца платформы Krona и дежурной инженерно-эксплуатационной команды.
### Ключевые архитектурные принципы
- **Изоляция контура**: KCC полностью отделён от административного кабинета клиентской организации (`/app/*`) и публичных страниц (`/`, `/demo`). Доступ организован в отдельном пространстве путей `/control/*`.
- **Защита шлюзом**: Доступ закрыт через `ControlRouteGuard` и PIN-гейт (`/control/gate`), требующий подтверждения операторского доступа (сессионный токен `kcc_gate_pass` + `operator_session`).
- **Строгая модель ролей (RBAC)**: 6 специализированных инженерных ролей с гранулярными правами доступа (`control_center:read`, `control_center:write`, `control_center:billing_manage`, `control_center:node_evacuate`, `control_center:incident_manage`, `control_center:rollout_manage`, `control_center:operator_audit`).
- **Неизменяемый журнал аудита**: Любое опасное или мутирующее действие требует модального подтверждения с обязательным указанием причины (минимум 5 символов), фиксацией затронутых сущностей и записью в криптографически связанный SHA-256 хеш-блокчейн в IndexedDB (`krona_control_center_db`).
- **Устойчивость к сбоям инфраструктуры (Circuit Breaker)**: Поддержка offline-first и degraded режимов с кэшированием последнего снимка состояния в IndexedDB при недоступности внешних мониторов или сетевых сбоях.
---
## 2. Навигация и Визуальная Иерархия
### Навигационное древо
1. **Обзор платформы (`/control/overview`)**:
- Верхний статус-бар: Режим среды (Production), активная инженерная роль, индикатор синхронизации IndexedDB, кнопка аварийного режима (Maintenance), экстренный выход.
- Сводные KPI-метрики: активные организации, совокупный MRR, здоровье узлов кластера, активные инциденты и предупреждения.
- Виджеты оперативного контроля: критические алерты, статус rollout-конвейера, географическое распределение нагрузок.
2. **Организации и 360° Инспектор (`/control/organizations`)**:
- Таблица тенантов с фильтрацией по тарифным планам (`enterprise`, `business`, `starter`), статусам (`active`, `past_due`, `frozen`, `trial`) и быстрому поиску по названию/ИНН/домену.
- Вызов контекстного 360° инспектора (Drawer) без потери контекста таблицы.
3. **Биллинг и Подписки (`/control/billing`)**:
- Фильтры истекающих подписок (окно 7 дней, просроченные платежи).
- Сводка по Minor Units (копейки) с форматированием без плавающей точки.
- История платежей, выставление счетов, ручное продление trial.
4. **Инсталляции и Терминалы (`/control/installations`)**:
- Учёт парка POS/Android/Desktop терминалов и мобильных приложений.
- Мониторинг устаревших версий (flag `outdated`), времени последнего пинга и принудительный отзыв токенов сессий (`Revoke Token`).
5. **Инфраструктура и Узлы (`/control/nodes`)**:
- Мониторинг кластерных нод (CPU, RAM, Disk IO, p99 latency).
- Действие вывода ноды из ротации (`Drain / Evacuate Node`).
- Имитация сбоя сервера мониторинга для верификации Circuit Breaker.
6. **Rollout и Каталог модулей (`/control/modules`)**:
- Управление версиями модулей платформы.
- Фазы конвейера: `Canary (10%)`, `Pilot (30%)`, `Staged (50%)`, `GA (100%)`.
- Оперативные действия: `Start Rollout`, `Pause`, `Resume`, `Rollback`.
7. **Инциденты и Алерты (`/control/incidents`)**:
- Матрица тяжести: `P1 Critical`, `P2 Major`, `P3 Warning`, `P4 Info`.
- Эскалация, назначение дежурного инженера, перевод в `In Progress`, `Mitigated`, `Resolved`.
8. **Системные рассылки (`/control/broadcasts`)**:
- Таргетинг по тарифам и модулям тенантов.
- Уровни важности: `info`, `warning`, `critical_maintenance`.
9. **Журнал аудита (`/control/audit`)**:
- Хронологический реестр операций с проверкой валидности SHA-256 хеш-цепочки.
- Экспорт в CSV/JSON.
---
## 3. Контекстный 360° Инспектор (Drawer)
Шторка детального инспектирования вызывается с правой стороны экрана (600px на десктопе, 100% на мобильных экранах):
- **Вкладка «Обзор»**: Карточка организации, ИНН, домен, дата создания, активный SLA, текущий баланс и лимиты пользователей.
- **Вкладка «Модули»**: Список подключенных сервисных модулей с версиями и статусами работоспособности.
- **Вкладка «Инсталляции»**: Привязанные терминалы и кассы с версиями клиента.
- **Вкладка «Биллинг»**: График выставления счетов, статус продления и скидки.
- **Панель быстрых действий оператора**:
- `Выдать Trial +14 дней` (требует подтверждения с фиксацией причины).
- `Заморозить доступ` / `Разморозить` (критическая операция).
- `Сбросить 2FA администраторов` (операция безопасности).
- `Экспорт данных тенанта` (GDPR/152-ФЗ compliance).
---
## 4. Паттерн подтверждения опасных операций (ConfirmOperatorAction)
Любое деструктивное или влияющее на клиентов действие открывает диалоговое окно `ConfirmOperatorAction`:
1. **Предупреждение о последствиях**: Четкое перечисление затрагиваемых сущностей (например, «Будет заблокирован доступ 120 пользователей»).
2. **Обязательное обоснование (`action-reason-input`)**: Поле ввода причины выполнения с валидацией минимальной длины (не менее 5 символов).
3. **Кнопка подтверждения с семантическим цветом**: Красный (`bg-red-600`) для необратимых/блокирующих действий, янтарный (`bg-amber-600`) для сервисных операций.
4. **Хеширование записи аудита**: Запись немедленно хешируется с предыдущим хешем по схеме:
`hash = SHA-256(prevHash + timestamp + operatorRole + actionType + entityId + reason)`
и сохраняется в локальное постоянное хранилище IndexedDB.
---
## 5. Дизайн-система: Темная инженерная тема
Интерфейс спроектирован по канонам современных Mission-Control дашбордов:
- **Цветовая палитра**: Глубокий slate/zinc фон (`bg-zinc-950`, `bg-zinc-900`), контрастные границы (`border-zinc-800`), четкая типографика (`text-zinc-100`, `text-zinc-400`).
- **Семантические акценты**:
- `Зеленый (Emerald)`: Нормальная работа узла, активная подписка, GA-статус.
- `Янтарный (Amber)`: Предупреждение, истекающий trial, пауза раскатки.
- `Красный (Rose/Red)`: P1 инцидент, отказ узла, заблокированная организация.
- `Синий/Фиолетовый (Indigo/Violet)`: Канареечные релизы, системные оповещения.
- **Адаптивность (Zero Horizontal Overflow)**:
- Desktop (1440×900+): Полноразмерный сайдбар, многоколоночные таблицы, плавающий Drawer 600px.
- Tablet (768×1024): Сворачиваемый сайдбар, горизонтальная прокрутка таблиц внутри изолированных контейнеров.
- Mobile (390×844): Компактный мобильный заголовок, off-canvas навигация, карточный вид для таблиц.