Большой консолидирующий коммит после поднятия studio.rublox.pro (28 мая 2026). Содержит изменения которые делались в процессе подготовки прод-окружения: Фиксы импортов после выноса из minecraftia: - Массовая замена путей ../../components → ../components (40+ файлов в src/community/, src/admin-preview/) - Замена ../KubikonEditor/ → ../editor/, ../KubikonStudio/ → ../community/, ../AdminPreview/ → ../admin-preview/ - API.js скопирован из минки целиком (было 8 экспортов, стало 312) - Добавлены PLAYER_URL, MyButton_1, недостающие компоненты - Заменены require() на статические ES-imports в BabylonScene, PrimitiveManager, GameRuntime (Vite не поддерживает CJS require) Структура ассетов: - public/kubikon-templates/ → public/assets/kubikon-templates/ - public/kubikon-learn/ → public/assets/kubikon-learn/ - (код искал в /assets/, файлы лежали без /assets/) Навигация роутов внутри студии: - /kubikon-studio/docs → /docs (90+ навигационных вызовов sed-replaced) - /kubikon-editor/X → /edit/X, /kubikon/play/X → /play/X, /kubikon/gd/X → /gd/X UI: - Новый компонент StudioHeader (61px, как в минке) + копия favicon - WithHeader wrapper в App.jsx для всех страниц кроме fullscreen-редактора/плеера - SSO ticket-flow в AuthContext (auto-redeem #ticket= при загрузке) - Тёмная тема карточек игр в ВИКИ (фон #1c2231 вместо #fff, картинка впритык) Документация: - docs/ONBOARDING.md — путь нового контрибьютора от нуля до PR - docs/TUTORIAL_ADD_SCRIPT_API.md — как добавить game.* API - API_USAGE.md — список эндпоинтов backend - README в подпапках engine/, engine/terrain/, engine/voxel/, engine/robloxterrain/, engine/types/ .gitignore: - public/wiki/ исключён (73МБ PNG, будут на CDN отдельной задачей) Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
102 lines
5.5 KiB
Markdown
102 lines
5.5 KiB
Markdown
# API, которые использует студия
|
||
|
||
Студия = редактор игр. Дёргает много API: загрузка моделей, сохранение проектов, публикация, ассеты, админ-функции. Этот документ — полный список.
|
||
|
||
## Базовый URL
|
||
|
||
В prod: `https://api.rublox.pro` (alias на `minecraftia-school.ru/api-storys`)
|
||
В dev: `https://dev-api.rublox.pro` (staging)
|
||
Локально: `http://localhost:8674` (storys-микросервис)
|
||
|
||
## Эндпоинты — список
|
||
|
||
### Проекты (CRUD)
|
||
|
||
| Method | Path | Когда |
|
||
|---|---|---|
|
||
| GET | `/kubikon3d/projects/<id>` | при открытии проекта в редакторе |
|
||
| POST | `/kubikon3d/projects` | при сохранении нового проекта |
|
||
| PUT | `/kubikon3d/projects/<id>` | при auto-save (каждые 60с) и при manual-save |
|
||
| DELETE | `/kubikon3d/projects/<id>` | юзер удалил свой проект |
|
||
| GET | `/kubikon3d/my-projects` | страница «Мои проекты» |
|
||
| POST | `/kubikon3d/projects/<id>/publish` | юзер жмёт «Опубликовать» |
|
||
|
||
**Размер `project_data` JSON:** обычно 100 КБ - 5 МБ. Лимит на бэке — **20 МБ** (settings, может меняться). Если проект больше — split на несколько (НЕ реализовано пока).
|
||
|
||
### Модели и ассеты
|
||
|
||
| Method | Path | Когда |
|
||
|---|---|---|
|
||
| GET | `/kubikon3d/models/public` | при открытии редактора, список общих GLB-моделей |
|
||
| GET | `/kubikon3d/models/mine` | панель «Мои модели» |
|
||
| GET | `/kubikon3d/models/<id>` | при первом упоминании модели в проекте |
|
||
| POST | `/kubikon3d/models` | юзер залил свою GLB-модель |
|
||
| DELETE | `/kubikon3d/models/<id>` | юзер удалил свою |
|
||
|
||
### Лента и поиск (как в плеере)
|
||
|
||
| Method | Path | Когда |
|
||
|---|---|---|
|
||
| GET | `/kubikon3d/feed` | главная редактора |
|
||
| GET | `/kubikon3d/trending` | главная |
|
||
| GET | `/kubikon3d/search?q=...` | поиск чужих проектов (для копирования идей) |
|
||
| GET | `/kubikon3d/collections` | секции |
|
||
| GET | `/kubikon3d/top-authors` | топ авторов |
|
||
| GET | `/kubikon3d/events` | мероприятия |
|
||
|
||
### Скины и аватары
|
||
|
||
| Method | Path | Когда |
|
||
|---|---|---|
|
||
| GET | `/kubikon3d/rublox/equipped-skin/<user_id>` | превью аватара текущего юзера в редакторе |
|
||
| GET | `/kubikon3d/rublox/owned-skins` | панель «Скины» |
|
||
| POST | `/kubikon3d/rublox/equipped-skin` | юзер сменил скин |
|
||
|
||
### Материалы для дизайнера
|
||
|
||
| Method | Path | Когда |
|
||
|---|---|---|
|
||
| GET | `/api-storys/designer/materials/list` | панель «Материалы» — текстуры и материалы для блоков |
|
||
|
||
### Чат и комментарии
|
||
|
||
| Method | Path | Когда |
|
||
|---|---|---|
|
||
| POST | `/kubikon3d/chat/<game_id>` | юзер пишет сообщение в чат своей игры (preview) |
|
||
|
||
### Telemetry (как в плеере)
|
||
|
||
| Method | Path | Когда |
|
||
|---|---|---|
|
||
| POST | `/kubikon3d/play/heartbeat` | при тесте игры через Play в редакторе |
|
||
| POST | `/kubikon3d/activity` | вход/выход в тестовый Play |
|
||
| POST | `/kubikon3d/perf-log` | при просадке FPS в тестовом Play |
|
||
| POST | `/kubikon3d/bug-reports` | юзер жмёт «Сообщить о баге» |
|
||
| POST | `/kubikon3d/reports` | репорт на чужой проект (из поиска) |
|
||
|
||
### Админка (для роли admin)
|
||
|
||
Все `/kubikon3d/admin/*` доступны только админам. Не админ → 403.
|
||
|
||
Список — см. [rublox-player/API_USAGE.md#админка](../rublox-player/API_USAGE.md). Студия использует тот же набор, что и плеер.
|
||
|
||
## Аутентификация
|
||
|
||
JWT в заголовке `Authorization: Bearer <token>`. Получение — через `/api-user/auth/login` (см. [rublox-player/API_USAGE.md#аутентификация](../rublox-player/API_USAGE.md#аутентификация)).
|
||
|
||
## Особенности студии vs плеера
|
||
|
||
- **Студия дополнительно** имеет CRUD на `/projects` (плеер только читает).
|
||
- **Студия загружает модели**: POST `/models` с multipart/form-data. Лимит 50 МБ на файл.
|
||
- **Auto-save**: студия каждые 60 секунд молча шлёт `PUT /projects/<id>`. Без этого проекты теряются при сбое браузера.
|
||
- **Conflict resolution**: если двое редактируют один проект, бэк возвращает 409 на PUT. Студия показывает диалог «Кто-то открыл проект параллельно, перезагрузить?».
|
||
|
||
## Изменения API
|
||
|
||
**Breaking changes** (изменение сигнатур, удаление полей) — объявление в `#разработка` за 48 часов + запись в `API_CHANGELOG.md` админ-репо.
|
||
|
||
## Контакты
|
||
|
||
- Issue tracker: https://git.rublox.pro/rublox/studio/issues
|
||
- Чат: `#разработка` на https://team.rublox.pro
|