v2.0.0
Система и авторизация (или как назвать раздел)
Мультитенантность
Мультитенантность - это модель организации работы системы, при которой в рамках одного стенда (установки) могут одновременно работать несколько независимых клиентов или подразделений. Каждый такой изолированный контур называется тенантом. Все данные (пользователи, потоки, подключения, лицензии и т.д.) внутри тенанта полностью отделены от других тенантов, что позволяет безопасно предоставлять доступ разным группам пользователей на одном сервере.
Основные понятия:
Тенант - логическая единица изоляции. У каждого тенанта есть название и уникальный идентификатор.
Администратор системы - пользователь с наивысшими правами, который управляет всеми тенантами и может назначать администраторов тенантов.
Администратор тенанта - пользователь, который управляет объектами внутри назначенных ему тенантов, но не имеет доступа к другим тенантам и не может создавать администраторов системы.
Пользователь - обычный участник (разработчик, аналитик, зритель), который работает с объектами своего тенанта при наличии лицензии.
Бизнес-требования
Цели:
- Внедрение новой сущности – тенанта, выполняющей роль закрытого контура в рамках стенда
- Разграничение доступа по тенантам с использованием новой роли – Администратор тенанта
- Предоставление администратору стенда возможности создавать и устанавливать тенант пользователям
- Лицензирование в рамках тенантов
Задачи:
- Создать сущность – "Тенант" и отдельную вкладку для неё в панели администратора
- Обеспечить доступ к вкладке только администратору стенда
- На вкладке реализовать создание, удаление, переименование тенанта
- Реализовать привязку к тенанту:
- Потоков (настраивается вручную)
- Подключений (настраивается вручную)
- Пользователей и групп пользователей (настраивается вручную)
- Лицензий (настраивается вручную распределением имеющихся лицензий)
- Лицензий на публикации (настраивается вручную распределением имеющихся лицензий)
- Активных директорий (настраивается вручную)
- Заданий на обновление (присоединяется к источникам)
- Добавить выбор тенанта при создании пользователя
- Добавить роль "Администратор тенанта" – с правами по умолчанию как у администратора, но в рамках выделенного тенанта, может создавать пользователей с ролью не выше админа тенанта
- Изменить роль "Администратор" – не привязывается к тенанту, может создавать любых пользователей
Сохранять состояние (положение/авторизацию) в системе (переделай название) и нужно объединить три таски и написать в общем о фиче
1) Сохранять состояние авторизации пользователя сразу на всех открытых вкладках одного браузера
Проблема
Пользовательский путь:
- Открыть стенд Fastboard (любой)
- Сделать дубликат вкладки (в рамках одного браузера)
- Разлогиниться на одной из вкладок
- Перейти на другую вкладку со стендом
Итог:
Если пользователь открыл один стенд сразу на нескольких вкладках одного браузера, то при выходе из учётной записи на одной из них он останется в своём аккаунте на всех других вкладках. При попытке обновить страницу или перейти в другую область стенда система разлогинит пользователя и на этой вкладке, но до этого он может выполнять любые действия (которые не сохранятся).
При этом на вкладке, на которой пользователь вышел из аккаунта, при повторном входе он останется в той же области стенда, из которой вышел. На всех других вкладках при повторной попытке авторизации он перенаправится в черновики
Решение
Необходимо выполнять выход из аккаунта на всех активных вкладках со стендом Fastboard:
- При выходе пользователя необходимо отправлять сигнал всем активным вкладкам одного браузера, что пользователь разлогинился (аналогично вызову функции "Выход" на каждом из стендов)
- Добавить реакцию системы на сигнал с другой вкладки – принудительно разлогинивать пользователя, если он вышел из аккаунта на других вкладках
Аналогичное действие для попытки входа, если одновременно открыто несколько вкладок с одним стендом:
- При входе на одной вкладке отправлять сигнал всем остальным вкладкам одного браузера, что пользователь вошёл в систему
- На других вкладках при получении сигнала выполнять вход в систему от имени данного пользователя
Итог – на всех активных вкладках всегда должно быть одинаковое состояние: пользователь либо везде авторизован, либо везде не авторизован
2) Разлогинивать пользователя через панель администратора
В работе
Проблема
Нет возможности завершить сессию определенного пользователя через интерфейс системы.
Необходимо уметь отслеживать текущий статус пользователя в системе через панель администратора.
Решение
Путь: Панель администратора –> Вкладка "Пользователи" –> Новая вкладка "Статус" (между вкладками "Данные" и "Черновики")
Интерфейс в рабочей области:
- Текст "Текущий статус"
- Под текстом надпись, отражающая статус:
- Активен – зелёным цветом ИЛИ
- Не активен – красным цветом
- При возможности рядом с "Не активен" вместо кнопки завершения сессии вычислять время последнего входа и писать "Был в системе n минут/часов/дней назад"
- Кнопка "Завершить сессию" – появляется только если текущий статус = "Активен"
- Модальное окно при завершении сессии:
- Текст "Вы действительно хотите завершить текущую сессию для выбранного пользователя? Будет выполнен выход из данного аккаунта со всех устройств."
- Кнопка "Отмена" – возвращает админа в рабочую область
- Кнопка "Подтвердить" – разлогинивает выбранного пользователя и возвращает админа в рабочую область
Логика:
- Текущий статус определяется по наличию входа пользователя хотя бы на одном устройстве
- Можно фиксировать и хранить дату и время последнего выхода пользователя на бэкенде, чтобы использовать их для оценки времени последнего сеанса
- Если время меньше часа, то округлять до минут и писать "Был в системе n минут назад"
- Если время меньше дня, то округлять до часов и писать "Был в системе n часов назад"
- Если время больше дня, то округлять до дней и писать "Был в системе n дней назад"
- При завершении сессии активировать для выбранного пользователя ручку на бэкенде для разлогинивания его на всех устройствах
- Разлогинивание должно выполняться моментально, без необходимости у конечного пользователя обновлять страницу
ВАЖНО! До повышения производительности системы решение будет разлогинивать пользователя после действия, а не моментально
Критерии приёмки:
- В админ панели можно выбрать пользователя и получит корректную информацию о его сессии в системе
- При завершении активной сессии выбранный пользователь при следующем активном действии (н-р, обновлении страницы или переходе в
3) Сохранять состояние в системе в URL
Проблема
Ограничена возможность поделиться текущим состоянием пользователя в системе с учётом текущей страницы, открытой вкладки и всех фильтров.
Также необходимо запоминать положение пользователя при выходе из системы до тех пор, пока не будет закрыта вкладка (подставлять последний URL при входе)
Решение
Общее описание
Необходимо изменять URL в зависимости от:
- Открытой области FB (уже реализовано)
- Открытой страницы (уже реализовано)
- Открытой вкладки страницы (уже реализовано)
- Выбранного пункта в меню (частично реализовано)
- Настроенных фильтров у зрителя
При переходе другого пользователя по такой ссылке должно сохраняться состояние пользователя в проекте согласно выбору указанных пунктов.
URL должен обновляться без перезагрузки страницы.
Дополнение к URL в панели администратора
В менеджере проектов реализовано сохранение положения пользователя в конкретном потоке (выбранный пункт меню слева). Необходимо в менеджере проектов при выборе пункта (пользователя, группы и т.д.) в левом меню добавлять этот пункт к URL.
AS-IS: https://fastbord-front-dev.fb-dev.winsolutions.ru/adminUser
TO-BE: https://fastbord-front-dev.fb-dev.winsolutions.ru/adminUser/Dima
Дополнения к URL в конструкторе дашбордов
Для пользователей с ролью "Зритель" должна быть доступна возможность поделиться ссылкой на проект с установленными в нём фильтрами. Необходимо сохранять состояния фильтров в query-параметрах URL.
Для восстановления состояния необходимо парсить URL, извлекать из него все необходимые параметры и восстанавливать согласно им фильтры.
AS-IS: https://fastbord-front-dev.fb-dev.winsolutions.ru/7f9f594b-0152-4a66-afb2-f7fbe7a697bb/board/dc056874-305d-11ee-8c70-04d4c47aef75
TO-BE: https://fastbord-front-dev.fb-dev.winsolutions.ru/7f9f594b-0152-4a66-afb2-f7fbe7a697bb/board/dc056874-305d-11ee-8c70-04d4c47aef75?фильтр1=значение1&фильтр2=значение2
Важно! Не включать пустые или неактивные фильтры в URL
Данный функционал доступен только при просмотре проекта пользователем с ролью "Зритель", любой редактор может сохранить нужное состояние фильтров и поделиться ссылкой на корректный результат
Восстанавливать состояние при повторном входе
Если пользователь (по любой причине) вышел из своей учётной записи, а потом, не закрывая вкладки браузера, снова вошёл в неё, то его необходимо перенаправлять в ту область системы, из которой был выполнен выход. Для это при выходе необходимо временно сохранять последний активный URL на вкладке до выхода, чтобы после повторного входа загрузить систему в точке выхода.
Уведомление пользователям о плановом обновлении стенда
Административная панель (или как назвать)
МХ доработка ролевого механизма (переделай название)
Расширился список ролей пользователей системы: Администратор системы, Разработчик, Администратор организации, Администратор тенанта, Аналитик, Зритель / Бизнес-пользователь. Роль администратор системы и администатор системы позволяют настроить разрешения к администрированию системы и ограничению доступа к управлению менеджера проектов. Подробнее о правах пользователей (тут будет ссылка).
В менеджере проектов добавлена матрица настройки доступов к Работа с потоком, Управление проектом, Работа с проектом, Работа с формами ввода
Просмотр действий пользователя
нет описания задачи
Графический редактор
Визуал для What-if анализа
- Новая визуализация, которая позволяет моделировать сценарии с помощью подстановки значений в другие визуализации
- Под капотом представляет собой один столбец с данными в указанном диапазоне с указанным шагом (не более 10000 значений)
- Снаружи представляет собой:
- При создании – модальное окно, где устанавливаются: модель данных, название переменной, тип её данных (целое/десятичное), минимальная и максимальная границы, шаг
- При работе – инпут для числа и ползунок
- В редакторе SQL-кода добавляется таблица для всех переменных What-if анализа (представлены списком) конкретной модели
- Принцип работы: при изменении значения на новом визуале во все визуалы, использующие эту переменную, подставляется указанное число
Визуализация позволяет пользователю моделировать гипотетические сценарии путём интерактивного задания значений переменной, которые затем подставляются во все связанные визуализации в SQL-запросы. Под капотом визуализация генерирует виртуальный столбец со значениями в указанном диапазоне и шаге.
Фоновое размытие контейнера
backdrop-filter: blur(10px);
- Визуализации
- Медиаблок
- Фильтры
Расширение возможностей кастомизации визуальных компонентов
Добавить возможность изменения цвета SVG в медиаблоке через правила и SQL
Вставка
Записывать и рулить SVG-вектором будем через функционал переменной. Для этого в переменной добавляем смену типа текст/вектор.
Так не нужно будет лепить иконки для кнопок отдельными виджетами
Соответственно, в контент блока вставляется через двойные скобки, также как текст. Это даст возможность вставлять в любое место и использовать внутри текста.
Загрузить можно только svg. Код парсится похожим образом на SVG-объект.
В соответствии с текущей реализацией переменные с SVG можно будет использовать в SQL выражении для динамической подстаноки в текст по условию.
При этом использовать SVG как отдельный объект также останется максимально просто
Фон медиаблока также остается доступен в паралель с вектором
Настройки
Принцип настройки вектора такой же как для текста. По умолчанию в общих настройках, но с возможностью переопределить внутри переменной.
Красится всегда в один цвет. Цвет по умолчанию равен цвету текста в главной секции.
Цвет меняется в секции редактирования (также как у текста). Режимы цвета стандартные
Размер по умолчанию равен размеру текста в главной секции
Размер меняется в секции редактирования (по аналогии с текстовой переменной)
Интеграция
Вектор должен быть доступен и на виртульных данных чтобы не требовались запросы в режиме простой иконки
Отдельно нужно будет обсудить с разработкой как хранить и подтягивать этот код. Способов много, сложностей нет, просто надо выбрать способ.
Добавить настройку отключения курсора “pointer” (палец) для медиаблока (тут кратко название и че добавили)
Добавить поддержку разноцветной линии в линейном графике с настройкой через правила и выражения
Подсекция «Цвет» у линии сейчас только Вручную, а нужно добавить остальные режимы. Ровно то же самое что и у столбиков. И находится оно будет там же где и у столбиков.
Переходу в состояние hover на всех виджетах где он срабатывает (пока это только фон) добавить плавность transition-duration = 200мс


Инвертация фильтров
В инвертированном режиме при выборе значения в фильтре это значение будет исключено из разрезов всех визуальных элементов, на которые влияет этот фильтр.
При выборе диапазона дат в исключающем режиме во всех визуальных элементах останутся данные на все даты, кроме выбранных в фильтре.
Конструктор дашбордов
Сетка на странице
Добавить простую сетку (без группировки шагов) – каждые n пикселей по горизонтали и вертикали должна рисоваться линия сетки (n задаёт пользователь)
МХ Все слова Слева, снизу, сверху, справа заменить на икноки везде в настройках визуалиации (переделай название)
Задача: В настройках заменить текстовые обозначения сторон (“Слева”, “Справа”, “Сверху”, “Снизу”) на соответствующие иконки во всех настройках, где они используются.
Цель: Сделать интерфейс более визуальным и интуитивно понятным за счёт замены текстов на иконки направлений.
Менеджер проектов
МХ потоки в потоках. Хочу иерархию папок (передлай название)
- Хранение потоков внутри потоков
- Хранение проектов на одном уровне с потоками внутри потока-дерева
- Неограниченная вложенность потоков-ветвей
- Навигация по "хлебным крошкам"
- Переключение между табличной и плиточной структурой
- Порядок внутри потока: сначала вложенные потоки, потом проекты
- Уникальные названия потоков-ветвей, расположенных на одном уровне вложенности
Вложенная структура для потоков с проектами по аналогии с файловыми хранилищами. Включает в себя дополнения для навигации, вида представления и сортировки.
Требуется обеспечить привязку дочерних потоков к родительским на уровне БД, передавать и отображать эти данные на клиенте, добавить новые управляющие элементы для дополнений.
Новые термины для пользовательской документации:
Поток-дерево – основной поток, отображаемый в списке потоков в левом меню в менеджере проектов. Не хранится рядом с проектами, а включает в себя потоки-ветви и проекты. На одном уровне потока-дерева должна быть обеспечена уникализация названий потоков-ветвей и проектов, входящих в него. Права пользователю выдаются именно к потоку-дереву и распространяются на все потоки-ветви, входящие в него.
Поток-ветвь – вложенный поток, который не отображается в списке потоков, а доступен только по навигации в потоке-дереве. Может быть расположен рядом с проектами. На одном уровне потока-ветви должна быть обеспечена уникализация названий потоков-ветвей и проектов.
Диспетчер данных
Интеграция с DIS (модуль ввода данных)
Кнопка массового выбора при загрузке данных

Коннектор к Битрикс. Добавление методов (переделай название)
Баги и мелчие фичи
Уведомление пользователям о плановом обновлении стенда

