chore(tools): оставить решающий тест + README, убрать дубли

This commit is contained in:
2026-09-13 14:48:14 +03:00
parent 6e7132e935
commit 4c0b5caed6
3 changed files with 45 additions and 224 deletions
+45
View File
@@ -0,0 +1,45 @@
# Инструменты проверки игрового контура
Скрипты для **живой** приёмки механик ставок (не заменяют `npm test` в репозитории релейера,
а проверяют боевой стенд).
## `exploit-decisive.cjs` — решающая проверка окна закрытия
Проверяет главное: **цена закрытия берётся из истории на момент экспирации, а не в момент клика.**
Как запускать (внутри пода шлюза — там есть `node_modules` и доступ к RPC):
```bash
P=$(kubectl -n game get pod -l app.kubernetes.io/instance=testfront-gateway -o jsonpath='{.items[0].metadata.name}')
kubectl -n game cp tools/exploit-decisive.cjs "$P:/app/data/probe/exploit-decisive.cjs" -c gateway
kubectl -n game exec "$P" -c gateway -- sh -c "cd /app && node /app/data/probe/exploit-decisive.cjs 300"
```
### Питфоллы (каждый пойман вживую)
- **Нельзя просто сравнивать `exitPrice` с текущей ценой.** Цена часто стоит на месте, и сравнение
вырождается в «совпало» — ложный успех. Скрипт ждёт, пока цена на экспирации и текущая
**разойдутся**, и только тогда закрывает. Первый прогон без этого дал ложное «совпало» дважды.
- **Копировать только в `/app/data/`**, не в `/app` (`Permission denied`, под не root).
- **Запускать с `cd /app`**, иначе `Cannot find module '@solana/web3.js'` (из `/tmp`/`/app/data`
без cwd `node_modules` не виден).
- Ставка при `exit == entry` остаётся `open` — это ожидаемо (равные цены, отдельная задача),
а не сбой проверки.
Читает `bet_time` / `expire_time` прямо из аккаунта Bet (сырые байты) — off-chain данными не
верим. Раскладка аккаунта (Anchor, после 8-байтового дискриминатора): `amount u64 @8`,
`bet_time i64 @16`, `expire_time i64 @24`, `entry_price u64 @32`, `exit_price u64 @40`,
`side u64 @48`, `status u64 @56`, `bettor Pubkey @64`.
## `price-history-probe.cjs` — разбор истории цены
Смотрит, что реально накопилось в `binance-market` (Postgres `192.168.76.182:5434`, БД
`binance_market`) вокруг конкретной ставки: сделки в окне, цена на входе, цена на экспирации,
и что было бы при «ждать выгодной цены».
```bash
node tools/price-history-probe.cjs <programId> <betId>
```
⚠️ **Символ в БД — в нижнем регистре** (`solusdt`, не `SOLUSDT`). Запрос с верхним регистром
вернёт пусто, и это легко принять за «данных нет».