Перейти к содержимому
FastOffice

Что доступно сейчас и что фиксируется до интеграции

Граница между реализованным и пилотным, чек-лист договорённостей до старта и готовая формулировка ответа внешней команде.

Возможность Статус на 26.08.2026 Как использовать / условие
Семантическая структура Доступно model в Rust session; model-docx standalone
Layout / страницы / scene Доступно compose, paginate, print, print-window/delta
Review / styles Доступно review и style projections
Текстовые изменения Доступно mutate или apply-text-transaction
Selection / history / save Доступно set-selection, undo/redo, save/checkpoint
Standalone D6 hit-test Bounded Body line/edge/caret; capability расширяется по типам
Text/table hit-test в Electron Внутренне доступно Не импортировать; завернуть в публичный target DTO
Контекстные меню текста/таблицы Внутренне доступно Есть продуктовые маршруты; внешний provider не заморожен
Surface host events Bounded доступно ready, dirty, saved, error, unmounted
selection/content/command events Пилотный контракт Заморозить schema, ordering, retry и lifecycle
context-menu provider Пилотный контракт Декларативные items + typed command dispatch
Direct DOM / raw OOXML mutation Запрещённая граница Только session API и canonical writeback

Внутренние механизмы, подтверждающие реализуемость

Заголовок раздела «Внутренние механизмы, подтверждающие реализуемость»
  • Text hit. editorV0TextSurfaceHitForCanvasPoint → pageIndex, lineLocation, slotIndex, text.

  • Table-cell hit. d37TableCellHitForCanvasEvent → page/bodyBlock/row/column identity, включая nested table context.

  • Context menus. В продукте есть маршруты openEditorV0TextContextMenuForCanvasEvent и openD37TableContextMenuForCanvasEvent.

  • Double-click. Внутренние маршруты обслуживают текст, таблицы, границы/auto-fit и другие продуктовые действия.

Важно для договора Эти имена — evidence внутренней реализации, а не публичные symbols. В контракт следует вынести стабильные схемы target/event/command, версионирование и capability matrix, не пути исходников.
Решение Что указать внешнее приложение
Типы targets paragraph/run/table/tableCell/image/comment/field + внешний объекты
События click, doubleClick, contextMenu, keyboard activation; ordering и cancellation
Menu contract provider timeout, merge order, reserved IDs, localization, icons, separators
Command contract expectedRevision, idempotency key, atomic batch, receipt/error taxonomy
Persistence save path, checkpoints, conflict policy, save/reopen acceptance
Security loopback token, capability grants, logging/redaction, no DOM/OOXML escape hatch
Versioning schema versions, compatibility window, deprecation policy
Platforms какой desktop/WebView/server/mobile профиль принимается в первом пилоте
  • Открыть реальный документ внешнее приложение и получить semantic snapshot без потери неизвестного OOXML.

  • Клик по тексту и ячейке даёт корректный semantic target и selection.

  • Double-click выполняет согласованное действие один раз и не меняет документ самопроизвольно.

  • Контекстное меню меняется по target/capabilities и остаётся доступным с клавиатуры.

  • Команда с актуальным revision сохраняется; устаревшая команда возвращает revision_conflict.

  • Undo/redo восстанавливает результат; save/reopen подтверждает DOCX-истину.

  • Unmount/close освобождает listeners, WebSocket и Rust process без зависших Electron/Rust процессов.

  • 5–10 реальных документов и перечень элементов, по которым нужны действия.

  • Матрицу «тип элемента → click → double-click → пункты меню → документная команда».

  • Требования к desktop/server/WebView, offline, storage, identity и аудиту.

  • Список бизнес-объектов и способ связывать их с nodeId/hostData без внедрения второй модели DOCX.

Готовый ответ, который можно отправить внешнее приложение

Заголовок раздела «Готовый ответ, который можно отправить внешнее приложение»
Текст для письма / мессенджера Да, API доступа к структуре документа в A4 есть. Документом владеет долгоживущая Rust-сессия: через неё можно получить семантическую модель (абзацы, runs, таблицы и ссылки на стили), layout/страницы/scene, данные review/style и текущее состояние редактирования; через ту же сессию выполняются типизированные изменения, selection, undo/redo и save. Отдельно реализован hit-test, который связывает координату на странице с позицией документа; сегодня он доступен как bounded CLI и внутри полного редактора, а его стабильный session method входит в профиль пилота. В полном редакторе уже работают внутренние маршруты click/double-click и контекстные меню для текста и таблиц. Для внешней -интеграции мы не предлагаем импортировать внутренний DOM или Electron-функции. Вместо этого фиксируем стабильный Interaction Extension Profile: semantic target, события elementActivated/contextMenuRequested/selectionChanged, декларативный provider пунктов меню и typed command dispatch с revision/capability checks. То есть базовый процессор и необходимые механизмы существуют; предмет пилота — заморозить публичную схему нужных вам типов элементов и событий, подключить ваши пункты меню и подтвердить это на ваших документах через save/reopen. Первый пилот рекомендуем строить через локальный Rust-процесс с JSONL или защищённым loopback WebSocket и Web Surface в системном WebView/Electron.
  • 60–90 минут: согласовать target/event/menu matrix на одном реальном документе.

  • Зафиксировать a4.-interaction-context.v1 и capability profile пилота.

  • Собрать вертикальный пример: tableCell right-click → partner menu → typed edit → save/reopen.

  • После acceptance расширять типы объектов пакетами, не обещая весь Word API одной декларацией.

Контракт Версия
Persistent session descriptor A4.session-protocol-descriptor.v1
JSONL session ready A4.session-serve.v1
WebSocket bootstrap A4.session-ws-bootstrap.v1
Surface bootstrap A4.surface-host-bootstrap.v1
Browser mount A4.surface-mount.v1
Surface host event A4.surface-host-event.v1
Предлагаемый interaction context a4.-interaction-context.v1 (to freeze)
Документ для принятия решения Этот материал описывает проверенные текущие границы и рекомендуемый внешний контракт. Он не заменяет подписанную API specification: финальные типы targets, support matrix и SLA должны войти в capability profile пилота.

F1 · EMBEDDING API

Ассистент документации

Ответ собран из документации и может быть неточным — сверяйтесь с источниками.