Скриншоты и визуальная проверка

Сочетайте чтение данных, реальные изображения и проверки макета слайдов.

Визуальная проверка превращает модели в изображения и доказательства раскладки. Agent проверяет данные и формулы, затем реально отрисованные текст, фигуры и страницы, исправляет их через Facade и проверяет новое состояние.

Три вида доказательств

ДоказательствоЧто проверяет
Структурированное чтениеИсходные значения, формулы и результаты, абзацы и свойства.
PNGВидимое содержимое, обрезку, диаграммы, цвета и композицию.
Диагностика раскладкиПравила, ID, границы и позиции из отрисованной геометрии для точных исправлений.

Подготовка состояния и зависимостей

Screenshot и Layout Lint получают материализованные UnitData, не подключают удалённые цели и не интерпретируют changesets. Для совместного содержимого выполните pull(), дождитесь расчётов после изменения формул и вызовите exportUnitData(). В Worktree экспортируйте нужный черновик; приложение может записать target, revision и область рядом с отчётом.

Родительский Snapshot не содержит всех зависимостей. Передайте Sheet/Relational Table-источники в formulaReferenceUnits, дочерние Unit — в embeddedUnits. Render Page материализует их до родителя. UUID-изображения подготавливают через resolveUnitScreenshotImageAssets() и resolver приложения. Это best-effort-разрешение: проверяйте отсутствующие ресурсы.

От содержимого к стабильному изображению

100%

univer-render-runtime размещает собранную приложением Render Page и запускает браузер из Node.js. Плагины восстанавливают содержимое, обе стороны проверяют версию протокола. Операции идут в последовательную очередь Runtime, который можно использовать повторно; владелец в итоге вызывает close().

Условия зависят от продукта. Фигуры с формулами ожидают выхода из pending и при необходимости стабильных пикселей нескольких кадров. Relational Table ожидает шрифты, расчёты, активные table/view и стабильную DOM/Canvas-раскладку. Выход из pending может означать ошибку: проверяйте значение и статус.

Текущая реализация хеширует сериализованные UnitData, источники формул и дочернее содержимое. При изменении данных меняется key сеанса даже с прежним Unit ID, исключая повторное использование старого изображения только по идентификатору.

Выбор области по продукту

ПродуктОбласть и результат
SheetЛист и явный диапазон A1 для PNG области; важные результаты выбирайте явно.
DocВыбор или перечисление страниц с отдельными PNG.
SlideНомер от 1 либо page ID, дополнительный contact sheet.
Relational TableРабочая область активной таблицы/представления после открытия, DOM + Canvas.
CanvasesПолные границы либо взаимоисключающие region / elementIds, padding и геометрические доказательства.

unit-screenshot возвращает bytes, размеры, идентификатор страницы/области и рекомендуемые имена; сохраняет приложение. Scale допускает 0.1–4, настраиваются maxPages и maxPixels на изображение. Двойной масштаб даёт примерно вчетверо больше пикселей, поэтому большие данные проверяют по областям. PDF не входит в этот интерфейс пяти продуктов.

Общие данные для снимка и lint

Пример снимает и проверяет одни данные Slide и источники формул. renderRuntime уже создан, slideData — подготовленный снимок. Возможности сами не пишут файлы. Сборка страницы и закрытие ресурсов описаны в визуальной проверке AI SDK.

TypeScript
import { createUnitScreenshot } from '@univer-cli/unit-screenshot'import { createUnitLayoutLint } from '@univer-cli/unit-layout-lint'const source = {  unitType: 'slide' as const,  unitData: slideData,  formulaReferenceUnits,}const screenshot = createUnitScreenshot({ runtime: renderRuntime })const lint = createUnitLayoutLint({ runtime: renderRuntime })const capture = await screenshot.capture({  ...source,  target: { kind: 'slide-pages', pages: [1], scale: 2 },})const report = await lint.lint({ ...source, pages: [1] })

Slide: поиск проблем по границам глифов

Layout Lint использует факты браузера. declared — рамка модели, ink — реальные границы нарисованных глифов в координатах страницы с учётом раскладки, выравнивания и поворота. Рамка внутри страницы не гарантирует, что текст также помещается.

Текущее правилоОснование
text-off-pageРеальная область текста выходит за страницу.
text-escapes-containerТекст явно выходит из найденного небольшого непрозрачного контейнера.
text-overlaps-textДве реальные области текста существенно перекрываются.

coverage.pages и coverage.rules описывают охват. Finding содержит pageId, id, text.ink и соответствующие overflow, container, other; стабильный fingerprint помогает сравнивать исправления. Сейчас все findings — warnings для проверки вместе со снимками. Пустой список означает лишь отсутствие срабатываний выбранных правил в выбранной области.

Canvases: проверка отрисованных соединителей

Снимки Canvases дополнительно возвращают layoutAnalysis: routes, issues и summary, разрешённые браузером. Это отдельный интерфейс от unit-layout-lint, поддерживающего только Slide. Автоматические пути могут быть не разрешены в модели; проверяйте итог с source: 'rendered'.

Диагностика находит пересечения элементов, линий, стрелок и подписей с connectorIds, elementIds, focusBounds. Исправьте нужные объекты, снимите region или elementIds, затем проверьте весь холст. Так визуальная проблема связывается с конкретной правкой Facade.

Передача доказательств

100%

Храните результаты, область, страницы, снимки и диагностику вместе. Снимок не доказывает верность формул, а lint не заменяет визуальную оценку. Панели, фокус и всплывающие меню проверяйте в Web-редакторе; убедитесь, что зависимости между Unit загружены.

Завершите проверку до Ready в Worktree. См. исполнение без интерфейса и серверные вычисления и Agent и автоматизация.

К списку возможностей

Насколько полезно это руководство?

© 2026 DreamNum Co., Ltd.