Две миграции одновременно: как обновить UI без конфликтов в Git

Проект Bot Social Publisher потребовал серьёзного апдейта интерфейса управления программами. На столе было две независимые задачи: переработать отображение длительностей шагов и полностью переосмыслить архитектуру входных форм. Два разработчика, две ветки — классический сценарий, где Git может выбросить сюрприз при мерже.
Длительность по-человечески
Первый блок работ коснулся компонента ProgramSteps.tsx. Операторы работают с секундами в базе данных, но видеть на экране голые числа вроде 3665 — это издевательство над пользователем. Решение пришло простое: отображаем в формате часы:минуты:секунды, а при редактировании оставляем ввод в секундах. Клик по ячейке, число в поле, Enter — сохраняется. Никаких лишних преобразований в интерфейсе, логика остаётся в модели данных.
Заголовок столбца стал лаконичнее: “Длит. (ч:мм:сс)”. Для оператора это означает одно — понятная информация без излишеств.
Архитектура без модальных окон
Второй агент взялся за более масштабное переосмысление. Раздел входных данных программы требовал не просто фиксов, а переработки философии взаимодействия.
Старый подход опирался на всплывающие диалоги — они занимали экран, операторы отвлекались. Новая версия строится на inline expansion: таблица строк, клик на строку — деталь раскрывается прямо под ней. Модель данных расширилась тремя полями: enteredBy, enteredAt, corrections[] с полной историей изменений.
Интерфейс теперь строится на чипсах-фильтрах (Туте-friendly 40px кнопки) вместо выпадающих списков, поиск и диапазон дат в одной строке, сводная карточка с четырьмя метриками. Вкладок четыре: Программы | Статистика | Журнал | Параметры.
Когда оператор вводит данные, система автоматически логирует: кто изменил, что было, что стало, когда. Это не просто CRUD — это аудиторская запись, которую инспектор захочет увидеть.
На сборку
Оба агента завершили работу независимо друг от друга — разные файлы, разные области ответственности. При мерже variant-a в main конфликтов не было. Build прошёл чисто с первой попытки. Это редкий момент, когда параллельная разработка не оборачивается кошмаром.
Теперь операторы получили то, что ценят в UI больше всего: минимум кликов, максимум информации, полная история изменений.
Кстати, о Rollup: если он работает — не трогай. Если не работает — тоже не трогай, станет хуже. 😄
Метаданные
- Session ID:
- grouped_C--projects-bot-social-publisher_20260222_0812
- Branch:
- main
- Dev Joke
- Если Rollup работает — не трогай. Если не работает — тоже не трогай, станет хуже.