Кратко
- В HTML-предпросмотре схема выглядит нормально, а в SVG или PNG пропадают подписи, меняются отступы либо искажаются связи.
- Быстрое решение: сравните исходный HTML, предпросмотр и экспорт по отдельности, затем проверьте целостность файла и смысл каждой связи по первоисточнику.
- Предпросмотр сам по себе не доказывает, что экспорт корректен.
- Кому пригодится: инженерам, которые включают диаграммы от Claude Code, Codex или GitHub Copilot в документацию и репозитории.
- Документаторам: если вы проверяете разные форматы и читаемость схем перед публикацией.
В HTML-предпросмотре схема выглядит нормально, а в SVG или PNG пропадают подписи, меняются отступы либо искажаются связи. Быстрое решение: сравните исходный HTML, предпросмотр и экспорт по отдельности, затем проверьте целостность файла и смысл каждой связи по первоисточнику. Предпросмотр сам по себе не доказывает, что экспорт корректен.
Кому пригодится: инженерам, которые включают диаграммы от Claude Code, Codex или GitHub Copilot в документацию и репозитории. Документаторам: если вы проверяете разные форматы и читаемость схем перед публикацией. Специалистам платформенных команд: если вы хотите автоматизировать техническую проверку экспортированных файлов.
Поиск этапа возникновения ошибки diagram-design
Не начинайте с повторной генерации диаграммы. Если вы не сохраните исходный HTML и параметры предыдущего запуска, сравнивать будет не с чем: новый результат может отличаться из-за другой генерации, а не из-за исправленного экспорта.
Зафиксируйте входной файл, команду экспорта, путь результата и версию используемого инструмента. Далее откройте одну и ту же диаграмму в исходном HTML, в предпросмотре и в том файле, который должен попасть в документацию. Важно не смешивать эти проверки: предпросмотр может обрабатываться одним способом, а SVG или PNG — другим. В документации diagram-design и в описании команды экспорта проверьте актуальный порядок запуска и заявленные форматы. Не приписывайте инструменту поддержку конкретного рендерера или клиента, если документация этого не подтверждает.
Сравнивайте не впечатления, а наблюдаемые признаки: есть ли все узлы, не обрезаны ли края, сохранились ли подписи, совпадают ли цвета и направления стрелок. Если проблема уже видна в исходном HTML, причина предшествует экспорту. Если HTML верен, но SVG отличается, исследуйте SVG. Если векторный файл верен, а PNG нет, сосредоточьтесь на преобразовании в растровое изображение и среде, где оно выполнялось.
Почему PNG из diagram-design может отличаться от HTML-предпросмотра? Потому что эти результаты могут зависеть от разных условий отображения: используемых шрифтов, масштаба, размера области вывода, подгрузки стилей и конкретного пути рендеринга. Сначала проверьте, совпадает ли входной HTML; затем воспроизведите экспорт в целевой среде и сохраните полученное изображение. Не исправляйте расположение узлов, пока не выяснили, не создаёт ли различия сама среда.
Для проверки браузерного результата можно использовать снимок страницы: интерфейс Page.screenshot в Playwright описывает получение скриншота страницы. Это помогает сравнить браузерный вывод с поставляемым PNG, но не делает их эквивалентными: проверьте, что снимок и экспорт сделаны с сопоставимыми настройками и из одного исходного материала.
Первый шаг: исключите ошибку исходного файла
Просмотрите HTML до экспорта и найдите в нём фактическую структуру диаграммы: подписи, узлы, линии, стили и элементы, от которых они зависят. Если схема строится на связанных описаниях стилей или ссылках между элементами, проверьте, что эти зависимости присутствуют в исходнике, а не добавляются только при отображении в конкретном окружении.
Сохраните исходник рядом с результатом экспорта. Если HTML создаётся заново при каждом запуске, не перезаписывайте предыдущую версию, пока не зафиксировали входные данные и воспроизводимую команду. Это особенно полезно, когда генерация выполняется кодовым агентом: повторное обращение к агенту может изменить саму диаграмму и замаскировать первоначальный дефект экспорта.
Затем упростите сравнение. Выберите несколько заметных ориентиров — например, название компонента, подпись на стрелке и граничный узел — и проверьте каждый в HTML и итоговом файле. Если нужная подпись отсутствует уже в HTML, экспортер не обязан её «восстановить». Если она есть в исходнике, но теряется в результате, переходите к проверке структуры и оформления экспортированного файла.
Не считайте новый успешный экспорт доказательством, что старый сбой исчез. Для воспроизводимой проверки сохраняйте входной файл, команду и проблемный результат вместе.
Что искать внутри SVG?
SVG — не просто картинка с другим расширением. Векторный файл содержит элементы и ссылки, которые могут влиять на область просмотра, текст, оформление и отображение диаграммы. Сверьте корневой элемент и его область просмотра с содержимым файла, проверьте, присутствуют ли ожидаемые текстовые элементы и не потерялись ли стили или определения, на которые ссылаются другие элементы. Структуру документа описывает спецификация SVG 2, а поведение элемента <style> — документация MDN по стилям в SVG.
Как убедиться, что SVG из diagram-design выгружен полностью? Сопоставьте исходную схему и файл по содержимому, а не только по тому, открывается ли он. Проверьте, что в SVG есть ожидаемые подписи и узлы, определены используемые стили, ссылки на определения ведут к существующим элементам и видимая область не отсекает существенные части рисунка. Осмотрите файл в браузере и, если результат предназначен для конкретного редактора или публикационной системы, проверьте его именно там.
Отдельно проверьте идентификаторы элементов. Если в одном документе встречаются повторяющиеся id, ссылки по идентификаторам могут указывать не на тот элемент или отображаться не так, как вы рассчитывали. Это повод выяснить, где возник повтор: в исходном документе или при объединении нескольких фрагментов. Не исправляйте конфликт простым переименованием наугад: сначала выясните, какие ссылки зависят от каждого идентификатора.
Если стили в SVG заданы через <style>, посмотрите, сохранён ли соответствующий блок после экспорта и распознаёт ли его целевая система. Сам факт наличия стилей не гарантирует, что их применит любое приложение или механизм публикации. Так же осторожно относитесь к внешним ресурсам и зависимостям: выясните, доступны ли они в месте, где будут открывать диаграмму, вместо того чтобы предполагать, что они автоматически включены в SVG.
Плюсы и ограничения SVG для документации:
- Плюс: векторное представление удобно проверять как структуру и масштабировать без перехода к растровой копии.
- Плюс: текст и стили можно осмотреть в самом файле, если они представлены соответствующим образом.
- Ограничение: наличие элемента или ссылки в SVG ещё не гарантирует одинаковое отображение во всех целевых приложениях.
- Ограничение: визуально открывающийся файл может скрывать отсутствующие подписи, проблемы с областью просмотра или конфликты идентификаторов.
Не выводите из этого списка универсальную совместимость diagram-design со всеми редакторами. Причину подтверждайте документацией к экспортному процессу и фактическим содержимым файла. В официальном описании экспорта diagram-design сверяйте именно те возможности и команды, которые описаны для актуального проекта.
Почему PNG меняется при передаче в другую среду?
PNG фиксирует результат рендеринга, поэтому его вид зависит от условий, в которых сформировано изображение. Если у целевой среды нет нужного шрифта, текст может выглядеть иначе или занять больше места. Если изменились масштаб или область вывода, подписи могут стать трудночитаемыми, а края диаграммы — попасть под обрезку. Отличия фона или цвета также стоит проверять на самом файле, а не только в окне предпросмотра.
Проведите повторный экспорт одного и того же HTML в исходной и целевой среде. Сравните результаты на одном и том же масштабе и проверьте: совпадают ли шрифты, полностью ли видны границы, читаются ли подписи, не изменился ли контраст. Если HTML в обоих случаях одинаков, но PNG различается, это аргумент в пользу проблемы рендеринга или окружения. Если меняется и сам HTML, искать нужно раньше по цепочке.
Сохраняйте оба изображения как материалы приёмки и прикладывайте к ним команду экспорта и исходный файл. Такая фиксация помогает отличить повторяемую особенность среды от случайного различия и передать проблему платформенной команде с конкретными входными данными. Для публикации в документации также проверьте файл там, где его будут читать: изображение может быть корректным, но недостаточно читаемым в фактическом размере страницы.
Когда корректное изображение всё равно вводит в заблуждение?
Успешный экспорт подтверждает только то, что удалось создать файл. Он не доказывает, что диаграмма верно описывает систему. Аккуратная схема может содержать отсутствующий компонент, несуществующий вызов или стрелку с неверным направлением. Поэтому семантическую проверку нужно вести отдельно от визуальной.
Сверьте каждый узел и каждую значимую связь с проверяемым источником: кодом, соглашением интерфейса, утверждённым проектным описанием или требованиями. Например, если агент нарисовал обращение сервиса к хранилищу, найдите подтверждение такого обращения в коде или описании архитектуры. Если доказательства нет, не оставляйте связь в схеме как подтверждённый факт: явно отметьте её как гипотезу или запросите проверку у владельца системы.
Что делать, если экспорт нормальный, но смысл связи неверен? Не пытайтесь чинить проблему повторным рендерингом: экспорт уже выполнил свою задачу. Исправьте исходное описание диаграммы, укажите, какой источник подтверждает каждую спорную связь, и повторите проверку файла после изменения. Если происхождение связи установить нельзя, отделите её от подтверждённой части схемы и обозначьте как требующую проверки. Так вы не превращаете предположение агента в видимость установленного факта.
Для удобства ревью ведите краткую таблицу доказательств: название элемента или связи, источник подтверждения, состояние проверки и ответственный за уточнение. Код может быть источником доказательства для существующего вызова, а документированный контракт — для согласованного интерфейса. Но отсутствие найденного кода само по себе не доказывает, что связи нет: она может быть описана в другом источнике. Фиксируйте, что именно проверили, чтобы следующий редактор мог воспроизвести вывод.
В этом и состоит важное ограничение генерации AI-диаграмм: агент может помочь представить материал, который ему передали, но схема не становится проверенной архитектурой автоматически. Проверка содержания требует человеческой оценки и сопоставления с первичными данными; визуальная безупречность не заменяет эту работу.
Как включить проверку экспорта в CI?
Автоматизируйте то, что можно определить однозначно, а содержательную приёмку оставьте отдельным этапом. В рабочем процессе имеет смысл проверять, что файл создан по ожидаемому пути, он не пустой, SVG разбирается как XML, а обязательные материалы сохраняются вместе с журналом запуска. Для публикации также полезно автоматически загружать результат как артефакт, чтобы ревьюер мог открыть именно тот файл, который создала сборка. О механизме хранения артефактов в GitHub Actions рассказывает документация по артефактам рабочих процессов.
В простом задании CI можно сначала проверить существование ожидаемого файла и возможность разобрать SVG XML-парсером. Эти проверки находят часть ошибок создания и структуры, но не подтверждают, что подписи читаются или связи верны. Не называйте успешный XML-разбор полным тестом экспорта: он не доказывает визуальную корректность.
Для PNG автоматизация может проверить наличие файла и передать его на визуальную проверку в ревью. Если вы делаете сравнение с эталонным изображением, сначала обеспечьте повторяемость исходника и среды; иначе изменение шрифта или рендеринга может породить различие, не связанное с содержанием диаграммы. Не вводите жёсткие пороги визуального совпадения без понимания, что именно считается допустимым изменением в вашем процессе.
Как распределить проверки между CI и ревьюером? CI хорошо подходит для проверки наличия результата, разбора структуры и сохранения журнала. Ревьюер должен проверить читаемость, полноту и то, что важные компоненты и связи подтверждены источниками. Ошибка автоматической проверки должна сохранять достаточно данных для воспроизведения, а не только завершать сборку сообщением «не прошло».
Сохраняйте проблемный HTML, SVG или PNG и журнал экспорта до исправления. Без исходного результата вы можете потерять возможность установить, какой этап внёс изменение.
Выбор способа проверки для вашего случая
Сопоставьте тип расхождения с тем, что вы можете подтвердить. Таблица ниже помогает отделить техническую проверку файла от проверки смысла, а также выбрать подходящий способ фиксации результата.
| Ситуация | Что сравнить | Что можно проверить автоматически | Что должен подтвердить человек |
|---|---|---|---|
| HTML и экспорт визуально расходятся | Один и тот же исходник, параметры и результаты этапов | Сохранение файлов и журналов запуска | Где именно впервые изменилось отображение |
| SVG не содержит часть оформления | Структуру, тексты, стили и ссылки на определения | Разбор XML и наличие ожидаемых элементов | Корректность отображения в целевом приложении |
| PNG выглядит иначе в целевой среде | Шрифты, масштаб, обрезку и фон | Наличие экспортированного изображения | Читаемость и приемлемость результата для публикации |
| Файл выглядит правильно, но схема вызывает сомнения | Узлы и связи против кода, требований или договорённостей | Наличие ссылок на источники в ревью-процессе | Фактический смысл каждой важной связи |
| Экспорт включён в CI | Вход, выход и журнал запуска | Создание и базовую структурную проверку файлов | Семантическую и визуальную приёмку результата |
Выбирайте самый короткий путь, который способен подтвердить причину. При различии HTML и SVG начните с исходника и структуры SVG; при различии PNG — повторите экспорт в целевой среде и проверьте шрифты и размеры; при сомнительных связях — возвращайтесь к коду и спецификациям, даже если оба файла отображаются без ошибок.
Если проблема только в файле, смена вычислительной среды не является автоматически правильным решением: сначала выясните, не вызвана ли она исходником, настройкой экспорта или различиями рендеринга. Но если вы регулярно поручаете удалённому агенту подготовку документов, диаграмм и других файлов, имеет смысл отдельно выстроить проверку самих результатов: сохранять входы и журналы, а перед публикацией просматривать артефакты. О рабочих сценариях kvmboot можно узнать в справочном центре, а формат работы — на странице о kvmboot.
Аренда удалённого Mac от kvmboot может быть удобна, если вам нужна временная среда для работы агента и приёмки его файлов, а не постоянная покупка устройства. Однако она не исправит неверную связь в архитектурной схеме и не гарантирует совпадение рендеринга с вашей целевой системой. Если у вас уже есть подходящая локальная среда и работа выполняется регулярно, она может оказаться практичнее; если же вам нужно временно запускать удалённый рабочий процесс и проверять его результаты без отдельной покупки Mac, посмотрите доступный вариант аренды Mac. Сначала локализуйте сбой по исходнику, экспорту и проверке смысла — и только затем решайте, нужен ли вам удалённый Mac для самого рабочего процесса.
Проверьте экспорт диаграммы на удалённом Mac от kvmboot
Используйте выделенный Mac mini M4 с macOS, чтобы открыть SVG или PNG и сравнить результат с предпросмотром.