ADR-012: именованные сборки (zip) рядом с номерными — /sol/; ^~ для служебных путей; два дефекта сборки фронтендера

This commit is contained in:
Porfiry
2026-09-15 19:29:54 +03:00
parent d66c5f8893
commit b9799bf091
5 changed files with 175 additions and 17 deletions
+24
View File
@@ -226,3 +226,27 @@ curl -s -o /dev/null -w '%{http_code} -> %{redirect_url}\n' https://smart-updown
**TODO:**
- [ ] `[pump.meta]` Автоматизировать шаг 3 (сейчас ручная команда после CI).
- [ ] `[pump.meta]` Ретеншен старых сборок на 152 (сейчас 27, 28, 29 = ~200 МБ; политика за владельцем).
## ⭐ 2026-09-15 (4) — именованная сборка `sol` из zip + два дефекта в ней
**Сделано:** фронтендер прислал `build_sol.zip` (вне релизного цикла, без номера). Выложил под именем
`sol` → **https://smart-updown.binom.pw/sol/** (см. ADR-012, `tools/proxmox-nginx/publish-zip.sh`).
Активная сборка не тронута — корень по-прежнему `/29/`. Адрес: `/sol/`.
**Правки в nginx (иначе не работало):**
- локейшн сборок расширен с чисел до имён → **обязательно вернуть `^~` служебным путям**
(`/api`, `/ws`, `/solana-rpc/`), иначе расширенный regex перехватывает `/api/...` и ломает бэк;
- `immutable` — только для номерных каталогов; именованные кэшировать нельзя (могут перезалить);
- в маску добавлен `unityweb` (сборки фронтендера на `.unityweb`-ассетах).
**⚠️ Два дефекта в присланной сборке (отдать фронтендеру):**
- [ ] **`[pump.front]` Двойной префикс API: игра зовёт `/api/api/state` → 404.**
`SmartUpdownConfig.ApiBase()` для WebGL = `Origin()+"/api"`, а `BackendClient.HttpGetAsync("/api/state")`
добавляет `/api/...` ещё раз. Лечится в одном месте: либо `ApiBase()` без `/api`, либо пути без `/api`.
- [ ] **`[pump.front]` `ReferenceError: getProvider is not defined`** — падение при подключении Phantom.
В `framework.js` есть вызовы `getProvider()`/`errMsg()`/`loadWeb3()`, но нет определений: в
`Assets/Plugins/WebGL/SolanaBridge.jslib` они объявлены внутри IIFE, а через `mergeInto` экспортированы
только `SolanaBridge*`-методы. Не регресс от nginx — воспроизводится и на сборке 29.
**Важное подтверждение:** билд `sol` в браузере **дошёл до игрового цикла** (`Phase -> Idle` →
`Phase -> Approach`) — раньше в headless ни одна сборка так далеко не шла. Статика с nginx отдаётся корректно.