Часть расхождений между кодом и дизайн-системой FISYCO умеет исправлять сам и присылает правку как pull request. Насколько далеко он заходит, решаете вы, и отдельно для каждого класса изменений. На этой странице описаны уровни автономности, то, как FISYCO доказывает правку до выпуска, и что приходит в pull request.
Перед началом
- Для проекта настроена дизайн-система в коде. См. Подключение дизайн-системы.
- Репозиторий на GitHub. GitLab и Bitbucket индексируются и получают проверку pull request, но патчи FISYCO пока открывает только на GitHub.
- У приложения FISYCO на GitHub есть право Contents: write. Для чтения кода хватает права на чтение, запись нужна только для патчей.
Автономность по классам изменений
Автономность устроена как лестница, а не один переключатель. У каждого класса изменений свой уровень, потому что и доказывается каждый по-своему:
У всех классов исходно стоит Выключено. Уровни означают:
Как выставить уровни:
- Откройте проект, затем Дизайн-система в коде в разделе Из кода.
- Перейдите на вкладку Настройки и найдите блок Автономность.
- Выберите уровень для каждого класса. Там же видно, сколько pull request открыто за последние сутки.
Менять автономность может maintainer проекта, администратор или владелец пространства.
Начните с Предлагает. Посмотрите, что FISYCO стал бы менять, и первыми переведите на Действует сам замены токенов и ассетов. Их доказательство точное, поэтому им проще всего доверять.
На уровне Предлагает исправимое расхождение лежит в разделе Ждут вас на вкладке Расхождения. Нажмите в его строке Исправить сейчас, и FISYCO подготовит эту правку с тем же доказательством и в том же суточном бюджете. Двойники, то есть компоненты, сделанные мимо системы, автоматически не исправляются никогда: для них есть Передать агенту. Подробнее в статье Расхождения кода и макета.
Как FISYCO доказывает правку
FISYCO никогда не исполняет ваш код. Он читает файлы через API провайдера Git и разбирает их статически: без сборки, рендера и скриншотов. Правка, которую не удалось доказать, не выпускается ни на каком уровне.
Замены токенов и ассетов: равенство
Обходом токена FISYCO называет литерал, значение которого равно значению токена. Копией ассета называется вставленный рисунок с той же геометрией, что у ассета библиотеки. Правка следует из самой находки, поэтому ИИ-модель здесь не участвует.
FISYCO читает текущие файлы целевой ветки и накладывает замены. Замену, которую нельзя доказать равенством, пакет не берёт.
Расхождения с макетом: значения
Для компонента, который расходится со своей парой в макете, правку пишет ИИ-модель по фактам с числами обеих сторон. Затем FISYCO заново вычисляет компонент из исправленного исходника и сверяет его с макетом слой за слоем.
Правка проходит, только если расхождений стало меньше и ничто из совпадавшего раньше не разошлось ни в одном варианте. Иначе FISYCO отказывается от правки и сохраняет отказ с причиной.
У доказательства есть предел, и FISYCO называет его прямо: значения совпадают внутри компонента. Стиль, переопределённый снаружи темой приложения или обёрткой, сюда не попадает.
Вкладка «Патчи»
На вкладке Патчи видно, что FISYCO сделал и от чего отказался. Отбор: Все, Выпущенные или Отказы. В строке видны Исход (Сошлось, Отказ или Правка не нужна), Инициатор, Класс правки, Чем доказано, число правок в колонке Правок и pull request.
Откройте строку, чтобы увидеть правки в виде дифа и блок Проверка: вариант, чем доказано, класс правки и коммит. Кнопка Посмотреть сверку с макетом открывает компонент рядом с его парой в Figma. Об этом экране рассказано в статье Сравнение компонентов с макетом.
Если патчам что-то мешает, вкладка показывает блок До патчей не хватает с тем, что исправить: например, выключенную автономность или приложение без права писать в код.
Что приходит в pull request
FISYCO коммитит в новую ветку и открывает pull request в вашу целевую ветку, а если она не задана, то в ветку репозитория по умолчанию. Напрямую в ваши ветки он не пишет.
- Замены токенов и ассетов собираются в пакет, поэтому один pull request может закрыть много мест в нескольких файлах. В описании перечислено, что и где заменено, и названо доказательство: каждый литерал равен своему токену или каждый фрагмент совпадает с ассетом по геометрии.
- Правка по макету приходит отдельным pull request на один компонент. В описании таблица с колонками Variant, Property, Design и Code now, способ проверки, что ещё расходится, и оговорка, что код не исполнялся. Описание pull request FISYCO пишет на английском.
Одобрить патч значит смержить его pull request. Кнопки одобрения в FISYCO нет, поэтому решает ревью вашей команды.
Если в pull request кто-то оставит комментарий, FISYCO ответит фактами о том, что эта правка меняет. Код по замечаниям он не переписывает: ветка принадлежит команде.