feat(ui): третий исход в UI — возврат залога при ничьей

onBetClosed показывал бинарно: всё, что не payout_done, — «ПРОИГРАЛ (house_won)»
красным. Ничья (деньги вернулись игроку) выглядела как проигрыш.

Теперь три исхода + нейтральная заглушка:
- payout_done → ВЫИГРАЛ (ok)
- house_won  → ПРОИГРАЛ (err)
- refunded   → ВОЗВРАТ (ничья, ставка возвращена) (info)
- иное       → РАССЧИТАНА (<statusName>) (info), не валится в проигрыш

API.md: пример bet_closed со status 3 + описание refunded.
Проверено: node --check инлайн-JS OK, образ smart/test-front:5, раздача наружу.
This commit is contained in:
Caffeine
2026-09-14 02:09:15 +03:00
parent d9b1cc1ed8
commit 30a17f7d99
2 changed files with 19 additions and 5 deletions
+14 -4
View File
@@ -271,11 +271,21 @@ function onBetOpen(m){
/** Событие WS: ставка рассчитана — сервер закрыл её сам. */
function onBetClosed(m){
setLiveBet('liveBetId', String(m.id));
const won = m.statusName === 'payout_done';
setLiveBet('liveBetState', won ? 'ВЫИГРАЛ (payout_done)' : 'ПРОИГРАЛ (house_won)');
setLiveBet('liveBetExit', String(m.exitPrice));
const text = 'bet_closed: #'+m.id+', выход='+m.exitPrice+', '+(won?'ВЫИГРАЛ':'ПРОИГРАЛ');
if(won) log.ok(text); else log.err(text);
const sn = m.statusName;
if(sn === 'payout_done'){
setLiveBet('liveBetState', 'ВЫИГРАЛ (payout_done)');
log.ok('bet_closed: #'+m.id+', выход='+m.exitPrice+', ВЫИГРАЛ');
} else if(sn === 'house_won'){
setLiveBet('liveBetState', 'ПРОИГРАЛ (house_won)');
log.err('bet_closed: #'+m.id+', выход='+m.exitPrice+', ПРОИГРАЛ');
} else if(sn === 'refunded'){
setLiveBet('liveBetState', 'ВОЗВРАТ (ничья, ставка возвращена)');
log.info('bet_closed: #'+m.id+', выход='+m.exitPrice+', НИЧЬЯ — залог возвращён');
} else {
setLiveBet('liveBetState', 'РАССЧИТАНА ('+(sn||'?')+')');
log.info('bet_closed: #'+m.id+', выход='+m.exitPrice+', статус='+(sn||'?'));
}
}
function copyLog(){ const t=document.getElementById('log').innerText; navigator.clipboard?.writeText(t).then(()=>log.ok('лог скопирован')).catch(()=>{}); }