docs: ADR-009/010, карта деплоя, деплой-памятка фронта, задачи фронтендеру

Приёмка и починка 15.09.2026:
- ADR-009: один бэк на оба домена — прод-домен smart-updown.binom.pw переведён на тот же
  TS-шлюз (:8895), что и testfront; Kotlin-бэк (3NWEK) выключен обратимо. Разобраны расхождения
  API игры и шлюза (их должны править во фронте).
- ADR-010: две ловушки деплоя фронта — (1) чарт рендерит только path '/', поэтому helm-релиз
  сносит /api,/ws → вынесены в отдельный ingress smart-updown-api вне helm;
  (2) захардкоженный values.image.tag бьёт Chart.AppVersion → helm upgrade НЕ поднимает новый
  образ (новый RS не создаётся), на домене остаётся старый билд при 'Upgrade complete'.
  Приведена правильная команда (--reuse-values --set image.tag=<N>) и способ ПРОВЕРКИ по кубу
  и домену, а не по helm. Отмечен остаточный риск: Unity-ассеты immutable 7 суток при
  неизменяемых именах файлов → кэш браузера держит старый билд.
- README: карта деплоя (кто где живёт), статус проекта на 15.09, актуализирован блок
  безопасности (SEC-16 — утечка SOL, блокер перед mainnet), Kotlin-бэк помечен выключенным,
  добавлен TS-шлюз как боевой бэк, ссылки на tools/ и k8s/.
- TASKS.md: деплой-памятка фронта + задачи фронтендеру (убрать image.tag, хэш в именах
  ассетов, привести API игры к контракту шлюза).
This commit is contained in:
Hermes Agent
2026-09-15 12:13:23 +03:00
parent 101a4b60a9
commit 21a3a37a66
3 changed files with 138 additions and 13 deletions
+22
View File
@@ -106,6 +106,28 @@
- Кран зачисляет на цепь с лагом **8–13 с** (шлюз рапортует мгновенно) — отсюда ложный симптом
«SOL не обновился».
**Деплой-памятка фронта игры (`fun-game-front2`) — прочитать перед каждым релизом:**
```bash
helm repo update binom
helm upgrade fun-game-front2 binom/fun-game-front2 -n game \
--reuse-values --set image.tag=<N> --wait --timeout 4m # <N> = тег релиза, НЕ опираться на чарт
```
⚠️ Без явного `--set image.tag` образ НЕ обновится: в `helm/values.yaml` захардкожен `image.tag`,
он перебивает `Chart.AppVersion` → спека не меняется, новый под не создаётся, на домене остаётся
старый билд при «Upgrade complete» в helm. Полный разбор — `docs/DECISIONS.md` (ADR-010).
Проверять по кубу/домену: `kubectl get pod -n game -l app.kubernetes.io/name=fun-game-front2 \
-o custom-columns='NAME:.metadata.name,IMAGE:.spec.containers[0].image,CREATED:.metadata.creationTimestamp'`.
**Задачи фронтендеру (отдать во фронт-репо `fun-game-front2`):**
- [ ] **Убрать `image.tag` из `helm/values.yaml`** и опираться только на `Chart.AppVersion`
(в CI он уже подставляется из тега релиза) — тогда `helm upgrade` перестанет требовать `--set`.
- [ ] **Хэш содержимого в имени ассетов** (`WebGL.<hash>.data/.wasm/.framework.js`) на шаге сборки:
сейчас nginx отдаёт ассеты как `immutable, max-age=604800` при НЕизменяемых именах, поэтому
у уже игравших игроков до 7 суток держится старый билд в кэше браузера.
- [ ] **Привести API игры к контракту TS-шлюза** (`docs/API шлюза` / `test-front/API.md`):
тело ставки `{address, side, amountUnits}`; поля `minAmount`/`maxAmount` — строкой; `GET /api/bet/{id}`
у шлюза отсутствует (см. ADR-009).
**Фича на будущее — «ждать, если цена не изменилась» (НЕ ДОДЕЛАНА):**
- [ ] **TODO** `[pump.meta]` Если по сделанной ставке цена на момент экспирации **не изменилась**
(`exit == entry`, ничья), нужно **подождать ещё 15 секунд** и попробовать взять цену заново —