Files
crank/docs/demo-runbook.md
T
2026-03-28 00:58:56 +03:00

106 lines
3.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Demo Runbook
## 1. Цель документа
Этот документ фиксирует минимальный воспроизводимый сценарий запуска и демонстрации Crank без знания внутренней структуры кода.
## 2. Предусловия
- доступен `PostgreSQL`;
- задан `CRANK_DATABASE_URL`;
- задан `CRANK_STORAGE_ROOT`;
- доступны `CRANK_ADMIN_BIND` и `CRANK_MCP_BIND`;
- для UI установлен `Node.js`;
- для Rust-части установлен toolchain из `rust-toolchain.toml`.
## 3. Быстрый локальный запуск
### Backend
```bash
cargo run -p admin-api
```
Во втором терминале:
```bash
cargo run -p mcp-server
```
### UI
```bash
cd apps/ui
npm install
npm run dev
```
## 4. Контрольные health endpoints
```bash
curl http://127.0.0.1:3001/health
curl http://127.0.0.1:3002/health
```
Ожидаемо:
- `admin-api` возвращает `{"service":"admin-api","status":"ok"}`
- `mcp-server` возвращает `{"service":"mcp-server","status":"ok"}`
## 5. Demo flow
### REST
1. Создать REST operation через UI или `admin-api`.
2. Выполнить `test-run`.
3. Опубликовать operation.
4. Проверить появление tool в MCP через `tools/list`.
5. Выполнить `tools/call`.
### GraphQL
1. Создать GraphQL operation с фиксированным `query` или `mutation`.
2. Выполнить `test-run`.
3. Экспортировать YAML.
4. Импортировать YAML в режиме `upsert`.
5. Опубликовать operation и вызвать ее через MCP.
### gRPC
1. Создать gRPC operation.
2. Загрузить `descriptor set`.
3. Проверить `grpc/services` discovery summary.
4. Выполнить `test-run`.
5. Экспортировать YAML.
6. Импортировать YAML в режиме `upsert`.
7. Опубликовать operation и вызвать ее через MCP.
## 6. Проверка publish/reload flow
После публикации новой операции `mcp-server` не требует restart.
Проверка:
1. Открыть MCP session.
2. Вызвать `tools/list`.
3. Опубликовать новую operation через `admin-api`.
4. Повторно вызвать `tools/list`.
5. Убедиться, что новый tool появился после refresh interval.
## 7. Проверка YAML roundtrip
YAML roundtrip считается успешным, если:
1. operation экспортируется через `/api/admin/operations/{operation_id}/export`;
2. экспортированный YAML импортируется через `/api/admin/operations/import?mode=upsert`;
3. создается новая версия operation;
4. `test-run` новой версии проходит успешно.
## 8. Что считать готовым demo state
- все три протокола проходят сценарий `create -> test-run -> publish -> MCP call`;
- YAML export/import проходит хотя бы для `REST`, `GraphQL` и `gRPC`;
- `mcp-server` подхватывает published changes без restart;
- ошибки `admin-api` и runtime возвращаются в читаемом виде;
- логи позволяют понять, какая операция создавалась, тестировалась, публиковалась или импортировалась.