docs: redesign architecture around workspaces and agents

This commit is contained in:
a.tolmachev
2026-03-29 21:11:04 +03:00
parent df2974bafa
commit 2219d1249b
11 changed files with 1321 additions and 3270 deletions
+49 -48
View File
@@ -2,9 +2,7 @@
![Crank](./Crank.png)
Crank - это low-code платформа для публикации внешних API в виде MCP tools без написания нового backend-обработчика под каждую интеграцию. Система предоставляет единый административный UI, в котором оператор может подключать REST, GraphQL и gRPC операции, настраивать маппинг входных и выходных данных, выполнять тестовый вызов и публиковать результат как MCP tool.
На текущем этапе репозиторий содержит проектную документацию и архитектурные решения, которые задают границы MVP и подход к реализации.
Crank - платформа для публикации внешних API в виде MCP tools без написания отдельного backend-кода под каждую интеграцию. Целевая модель проекта строится вокруг связки `workspace -> agent -> operations`.
## Цели
@@ -12,75 +10,78 @@ Crank - это low-code платформа для публикации внеш
- Поддержать динамическое добавление интеграций через UI или конфигурацию.
- Обеспечить единый сценарий работы оператора для REST, GraphQL и gRPC.
- Нормализовать внешние протоколы в единую внутреннюю модель операции.
- Избежать генерации и деплоя нового backend-кода при добавлении каждого нового инструмента.
- Ограничивать набор tools на уровне конкретного агента, а не отдавать один глобальный каталог.
- Поддержать workspace-изоляцию, platform access и observability.
## Состав MVP
## Целевая модель продукта
- `Workspace` как tenant boundary.
- `Operation` как интеграционный контракт.
- `Agent` как curated MCP surface для LLM.
- Поддержка REST для `GET`, `POST`, `PUT`, `PATCH` и `DELETE`.
- Поддержка GraphQL для `query` и `mutation` на основе шаблонов и переменных.
- Поддержка GraphQL для `query` и `mutation`.
- Поддержка только unary-методов gRPC.
- Загрузка примеров `JSON` для ускоренного создания схем и чернового маппинга.
- Загрузка `.proto` файлов или descriptor set для обнаружения схемы gRPC.
- Импорт и экспорт конфигураций операций в `YAML`.
- Использование `JSONPath` для точечного маппинга вложенных параметров и ответа.
- Настройка маппинга запроса и ответа через UI.
- Публикация tools в MCP без пересборки backend.
- Platform API keys и membership layer.
- Observability: invocation logs, usage aggregates, latency/error metrics.
- Импорт и экспорт operation-конфигураций в `YAML`.
- Использование `JSONPath` для точечного маппинга.
## Структура документации
- `docs/architecture.md` - архитектура системы, модули, потоки данных и стек.
- `docs/module-decomposition.md` - детальная декомпозиция crates и внутренних модулей.
- `docs/data-model.md` - формальная модель данных и JSON-структуры сущностей.
- `docs/database-schema.md` - схема БД, связи и versioning конфигураций.
- `docs/admin-api.md` - HTTP-контракты административного API.
- `docs/diagrams.md` - структурные диаграммы компонентов, сущностей, БД и потоков.
- `docs/mcp-interface.md` - транспорт и контракт публикации MCP tools.
- `docs/testing-strategy.md` - стратегия тестирования до и во время разработки.
- `docs/runtime-config.md` - конфигурация окружения, storage и секретов.
- `docs/deployment.md` - контейнерный деплой, reverse proxy и CI/CD.
- `docs/demo-runbook.md` - пошаговый сценарий локального запуска и воспроизводимого демо.
- `docs/rust-design.md` - распределение методов, `impl`, `trait` и service-слоя без god-struct.
- `docs/development-rules.md` - правила разработки, TDD-процесс и git workflow.
- `docs/rust-code-rules.md` - Rust-specific правила кода, toolchain и linting.
- `docs/implementation-plan.md` - последовательность модулей и фич по этапам реализации.
- `docs/protocols/rest.md` - функциональные требования и ограничения для REST.
- `docs/protocols/graphql.md` - функциональные требования и ограничения для GraphQL.
- `docs/protocols/grpc.md` - функциональные требования и ограничения для gRPC.
- `docs/architecture.md` - целевая архитектура системы.
- `docs/as-is-to-be.md` - переход `as is -> to be`, page-by-page gap analysis и архитектурные конфликты.
- `docs/module-decomposition.md` - декомпозиция crates и модулей.
- `docs/data-model.md` - целевая модель данных.
- `docs/database-schema.md` - целевая схема БД.
- `docs/admin-api.md` - целевые HTTP-контракты административного API.
- `docs/diagrams.md` - диаграммы компонентов, сущностей и БД.
- `docs/mcp-interface.md` - модель MCP transport и agent-scoped publishing.
- `docs/testing-strategy.md` - стратегия тестирования.
- `docs/runtime-config.md` - конфигурация окружения.
- `docs/deployment.md` - деплой, reverse proxy и CI/CD.
- `docs/demo-runbook.md` - демонстрационный сценарий.
- `docs/rust-design.md` - правила распределения поведения в Rust.
- `docs/development-rules.md` - правила разработки и workflow.
- `docs/rust-code-rules.md` - Rust-specific coding rules.
- `docs/implementation-plan.md` - порядок перехода от текущего состояния к целевой модели.
- `docs/protocols/rest.md` - требования и ограничения для REST.
- `docs/protocols/graphql.md` - требования и ограничения для GraphQL.
- `docs/protocols/grpc.md` - требования и ограничения для gRPC.
## Ключевая идея продукта
Система строится вокруг унифицированной сущности `Operation`. Каждая операция описывает:
Система строится вокруг трех уровней:
- внешний протокол,
- целевой endpoint или метод,
- входную схему,
- правила маппинга входных данных,
- параметры выполнения,
- правила маппинга выходных данных,
- `Workspace` - граница данных и доступа команды.
- `Agent` - curated MCP endpoint для конкретного сценария LLM.
- `Operation` - низкоуровневый интеграционный контракт.
`Operation` описывает:
- внешний протокол;
- целевой endpoint или метод;
- входную схему;
- правила маппинга входных данных;
- параметры выполнения;
- правила маппинга выходных данных;
- метаданные MCP tool.
За счет этого MCP runtime работает с единой внутренней моделью, а протокольные адаптеры уже выполняют конкретные вызовы REST, GraphQL или gRPC.
Для GraphQL это означает, что в MCP публикуется не "универсальный GraphQL endpoint", а конкретная операция с фиксированным шаблоном запроса, фиксированным набором входных параметров и предсказуемой структурой ответа.
Для упрощения настройки оператор может загружать примеры входного и выходного `JSON`, а для gRPC - `.proto` или descriptor set. На основе этих артефактов система строит черновую схему и стартовый маппинг, который затем вручную уточняется через `JSONPath`.
Конфигурации операций должны импортироваться и экспортироваться в `YAML`, чтобы их можно было переносить между окружениями, хранить в git и редактировать вне UI.
`Agent` собирает ограниченный набор опубликованных операций в одну MCP-поверхность. Именно это решает проблему, когда один агент теряется в слишком большом наборе tools.
## CI/CD статус
В репозитории настроены:
- `CI` для Rust, UI и deployment artifacts;
- `CI` для Rust, UI container и deployment artifacts;
- `CD`, который запускается после успешного `CI` на `main` или вручную;
- containerized production-like deployment через `docker compose`.
- containerized deployment через `docker compose`.
## Поддерживаемые протоколы
В MVP платформа ориентируется на три основных протокольных сценария интеграции:
В целевой модели платформа ориентируется на:
- REST
- GraphQL
- gRPC
`SOAP` сознательно не входит в MVP. Он остается актуальным для части корпоративных и государственных интеграций, но требует отдельного адаптера с поддержкой WSDL, XML Schema, SOAP envelope, namespaces и XML-oriented mapping. Для первой версии это слишком большой отдельный пласт сложности.
`SOAP` сознательно не входит в текущий scope.