Ветки настроек
Механизм создания веток настроек:
- Создание веток:
- Вводится механизм создания отдельных веток настроек для конкретных задач.
- Ветки можно мержить с основными настройками по завершении задач (аналогично git).
- Основные настройки:
- Все базовые настройки относятся к ветке main.
- Процесс работы:
- При начале новой задачи создается новая ветка настроек с заданным именем на основе родительской ветви.
- По умолчанию новая ветка наследует все настройки из родительской.
- Изменения настроек:
- При изменении настройки и ее сохранении формируется новая настройка с тем же ID в новой ветке.
- Это исключает перезатирание одной настройки другой.
- Тестирование:
- В любой момент можно указать тестировщику ветку с новыми настройками для тестирования.
- Тестировщик может протестировать настройки, просто переключив ветку.
- Завершение работы:
- По завершении задачи все изменения мержатся с родительской веткой.
- Созданная ветка удаляется.
Базовая ветка всегда остается чистой, не содержит лишних настроек и готова к синхронизации с продакшеном.
Техническая реализация:
- Структура таблицы branches:
- title: имя ветви.
- parent: родительская ветвь.
- Доступ к данным:
Данные из таблицы доступны через запрос branches с привилегиями:
- app:branches:view
- web:branches:view
- Связь с другими таблицами:
- В таблицы user_profile и settings добавлено поле branch, ссылающееся на таблицу branches.
- Получение настроек:
- При получении настроек:
- Сначала берутся настройки из текущей ветки пользователя.
- Затем из родительской ветки.
- Далее из родительской ветки по отношению к родительской и так далее, вплоть до ветки main или до settingTypes, если настройки отсутствуют и там.
- При получении настроек:
- Редактирование настроек:
- При редактировании настройки через левую панель:
- Формируется новая настройка с заданным ID в текущей ветке пользователя, если она не существует.
- Если настройка уже создана, она обновляется.
- Если настройки с таким ID нет и в родительских ветвях, создается новая настройка с новым ID, который записывается в settings текущего пользователя.
- При редактировании настройки через левую панель:
- Уведомление:
- Информация о сохраненной настройке отображается во всплывающем сообщении.
В Retool добавлена задача Settings позволяющая формировать новые ветви и мержить их с родительскими: http://10.1.241.240:3000/apps/9fd9f242-3dd2-11ef-a965-8b7ae0e8ee4e/Settings
Панели управления ветвями и настройками:
- Панель Branch:
- Позволяет:
- Выбрать ветвь.
- Изменить родительскую ветвь.
- Создать новую ветвь при необходимости.
- Позволяет:
- Панель Settings:
- Отображает настройки, созданные в данной ветви.
- Поле Branch:
- Отражает ветвь с родительской настройкой.
- Если поле пусто, значит базовой настройки нет, и используется settingTypes.defaultValue.
- Поле eq:
- Отражает равенство базовой и модифицированной настроек.
- Панель Users:
- Отображает пользователей, использующих данную ветвь настроек.
- Панель редактора:
- Отображает:
- Исходный вид выбранной настройки (слева).
- Модифицированную настройку в выбранной ветви (справа).
- Отображает:
- Слияние ветвей:
- Перед слиянием необходимо устранить все отличия в настройках между ветвями:
- В панели Settings в поле Eq для каждой настройки должна стоять галочка.
- Устранить различия можно:
- Приведя родительскую настройку к состоянию дочерней (левая панель редактора).
- Или дочернюю к состоянию родительской (правая панель редактора).
- Кнопка Save сохраняет изменения в настройках.
- Если у настройки нет родительской, изменения сохраняются в settingTypes.defaultValue.
- После устранения всех изменений становится доступной кнопка Merge branch, которая:
- Удаляет все настройки из данной ветви.
- Переключает всех пользователей на родительскую ветвь.
- Удаляет ветвь из таблицы branches.
- Перед слиянием необходимо устранить все отличия в настройках между ветвями:
- Дополнительные предложения:
- Предлагается переключать текущую ветвь пользователя через форму редактирования.
- Информация о текущей ветви может отображаться в футере.
No Comments