От концепции к пилоту
Минимальный архитектурный пилот и путь к промышленной поставке, включая план поставки Embedding API.
| Вопрос | Варианты | Результат решения |
|---|---|---|
| Где выполняется Rust? | WASM у пользователя / native desktop / server worker. | Deployment topology. |
| Кто владеет файлом? | DMS storage / local file / object storage. | Open/save protocol и versioning. |
| Какие объекты доступны? | Cells, formulas, tables, charts, shapes, imports и др. | Capability matrix пилота. |
| Какой интерфейс? | Готовый Web Shell / ограниченный white label / собственный UI. | Public SDK и scope UI customization. |
| Как передаются права? | Read-only/edit, protection, tenant, source permissions. | Session/auth contract. |
| Как живёт сессия? | Одна вкладка, desktop process, server job, mobile resume. | Timeout, cancellation, recovery. |
| Кто эксплуатирует? | Партнёр / совместно / managed delivery. | SLA, monitoring, updates, support. |
Минимальный архитектурный пилот
Заголовок раздела «Минимальный архитектурный пилот»-
Один реальный обезличенный XLSX и один бизнес-маршрут.
-
Одна выбранная topology: Browser/WASM либо Desktop/native; server/mobile не смешивать в первый spike.
-
Host создаёт IntegrationSession, передаёт bytes и права; F1 возвращает SavedArtifact и события.
-
Проверяются повторное открытие, конкурентная revision, отказ без частичной записи, память и время ответа.
-
По результату фиксируются public API v1, capability matrix, deployment package, SLA и план productization.
| Объектное понимание в одной строке DMS создаёт IntegrationSession → Rust создаёт WorkbookSession → Web показывает Viewport → пользователь отправляет Operation → Rust меняет Revision/History → Save создаёт SavedArtifact → DMS создаёт новую версию. Иными словами, F1 — это Web-поверхность вокруг единого Rust-процессора между пользовательской сессией партнёра и его хранилищем. |
|---|
Готовая формулировка и план поставки API
Заголовок раздела «Готовая формулировка и план поставки API»Короткий ответ внешнее приложение
Заголовок раздела «Короткий ответ внешнее приложение»| Текст для отправки Да, F1 имеет внутренний программный доступ к структуре рабочей книги: листам, диапазонам, ячейкам, таблицам и графическим объектам. Ядро на Rust возвращает типизированные проекции и выполняет изменения через единый compute contract. Web-часть уже обрабатывает выбор, click, double-click, context menu и выбор объектов. Для внешней интеграции мы предоставляем это не как доступ к внутреннему DOM, а как стабильный Embedding SDK: Read API, Semantic Event API, Command API и Context Menu Contributions. Конкретный состав SDK и поддерживаемые объекты фиксируются в capability matrix пилота. |
|---|
Что входит в SDK v1
Заголовок раздела «Что входит в SDK v1»| Пакет | Минимальный состав |
|---|---|
| @F1/embed | create/open/close, mount, session state, backend selection. |
| @F1/document | WorkbookInfo, Selection, CellDetails, RangeSnapshot, ObjectInventory. |
| @F1/events | selectionChanged, activated, doubleClicked, objectSelected, contextMenuOpening, changed. |
| @F1/commands | execute, undo/redo, revision guard, typed results/refusals. |
| @F1/ui-extensions | context menu providers, command registry, bounded panels/actions. |
Что нужно закончить до промышленной передачи
Заголовок раздела «Что нужно закончить до промышленной передачи»-
Отделить публичные типы и имена от большого внутреннего compute contract.
-
Зафиксировать event ordering, cancelability, timeout и teardown semantics.
-
Создать ContextTarget taxonomy и permission/capability filters.
-
Добавить versioning, compatibility window, examples, test harness и migration guide.
-
Провести пилот на реальных cell/table/chart/shape сценариях внешнее приложение в выбранной среде.
| Граница стабильности API Во внешнем API следует обещать саму модель API и согласованный v1 scope, но не стабильность текущих внутренних CustomEvent, data-* атрибутов и __f1 hooks. Они являются реализацией продукта, а не контрактом поставки. |
|---|