feat(admin,api,player): smart score solver, disable settlement UI, misc fixes
This commit is contained in:
@@ -330,6 +330,24 @@ export const adminPagesMs: Record<string, string> = {
|
||||
'settlement.est_payout': 'Anggaran bayaran',
|
||||
'settlement.refund_amount': 'Jumlah bayaran balik',
|
||||
'settlement.confirm_btn': 'Sahkan penyelesaian',
|
||||
'settlement.smart.btn': 'Skor pintar',
|
||||
'settlement.smart.title': 'Cadangan skor pintar',
|
||||
'settlement.smart.hint': 'Berdasarkan pertaruhan tunggal menunggu; parlay tidak disertakan. Klik kad untuk guna skor.',
|
||||
'settlement.smart.target_hold': 'Sasaran pegangan',
|
||||
'settlement.smart.recalc': 'Kira semula',
|
||||
'settlement.smart.apply': 'Guna skor ini',
|
||||
'settlement.smart.applied': 'Skor telah diisi',
|
||||
'settlement.smart.no_bets': 'Tiada pertaruhan tunggal menunggu',
|
||||
'settlement.smart.empty': 'Tiada cadangan',
|
||||
'settlement.smart.meta': 'Tunggal {singles}, parlay {parlays} dilangkau, {n} skor dibanding',
|
||||
'settlement.smart.hold': 'Pegangan',
|
||||
'settlement.smart.payout': 'Bayaran',
|
||||
'settlement.smart.win_stake': 'Stake menang %',
|
||||
'settlement.smart.wl': 'Menang/Kalah',
|
||||
'settlement.smart.strategy.MIN_PAYOUT': 'Pegangan maks (bayaran min)',
|
||||
'settlement.smart.strategy.MAX_PAYOUT': 'Bayaran pemain maks',
|
||||
'settlement.smart.strategy.BALANCED': 'Seimbang (~50% stake menang)',
|
||||
'settlement.smart.strategy.TARGET_HOLD': 'Sasaran pegangan',
|
||||
'msg.score_recorded': 'Skor disimpan',
|
||||
'msg.settlement_confirmed': 'Penyelesaian disahkan',
|
||||
|
||||
|
||||
@@ -330,6 +330,24 @@ export const adminPagesZh: Record<string, string> = {
|
||||
'settlement.est_payout': '预计派彩',
|
||||
'settlement.refund_amount': '退款金额',
|
||||
'settlement.confirm_btn': '确认结算',
|
||||
'settlement.smart.btn': '智能比分',
|
||||
'settlement.smart.title': '智能推荐比分',
|
||||
'settlement.smart.hint': '根据本场待结算单关注单,在合理比分范围内穷举并计算派彩;串关仅统计不参与推荐。点击方案可填入录分框。',
|
||||
'settlement.smart.target_hold': '目标平台留存',
|
||||
'settlement.smart.recalc': '重新计算',
|
||||
'settlement.smart.apply': '采用此比分',
|
||||
'settlement.smart.applied': '已填入推荐比分',
|
||||
'settlement.smart.no_bets': '本场无待结算单关注单',
|
||||
'settlement.smart.empty': '未找到可用方案',
|
||||
'settlement.smart.meta': '单关 {singles} 笔,串关 {parlays} 笔未参与,已比对 {n} 组比分',
|
||||
'settlement.smart.hold': '留存',
|
||||
'settlement.smart.payout': '派彩',
|
||||
'settlement.smart.win_stake': '玩家赢注占比',
|
||||
'settlement.smart.wl': '赢/输单',
|
||||
'settlement.smart.strategy.MIN_PAYOUT': '平台最大留存(最低派彩)',
|
||||
'settlement.smart.strategy.MAX_PAYOUT': '玩家最大派彩',
|
||||
'settlement.smart.strategy.BALANCED': '投注均衡(约50%赢注额)',
|
||||
'settlement.smart.strategy.TARGET_HOLD': '目标留存率',
|
||||
'msg.score_recorded': '比分已录入',
|
||||
'msg.settlement_confirmed': '结算已确认',
|
||||
|
||||
@@ -809,6 +827,24 @@ export const adminPagesEn: Record<string, string> = {
|
||||
'settlement.est_payout': 'Est. payout',
|
||||
'settlement.refund_amount': 'Refund amount',
|
||||
'settlement.confirm_btn': 'Confirm settlement',
|
||||
'settlement.smart.btn': 'Smart score',
|
||||
'settlement.smart.title': 'Smart score suggestions',
|
||||
'settlement.smart.hint': 'Enumerates valid scores from pending single bets and estimates payout. Parlays are excluded. Click a card to apply.',
|
||||
'settlement.smart.target_hold': 'Target house hold',
|
||||
'settlement.smart.recalc': 'Recalculate',
|
||||
'settlement.smart.apply': 'Apply score',
|
||||
'settlement.smart.applied': 'Score applied',
|
||||
'settlement.smart.no_bets': 'No pending single bets',
|
||||
'settlement.smart.empty': 'No suggestion found',
|
||||
'settlement.smart.meta': 'Singles {singles}, parlays {parlays} skipped, {n} scores compared',
|
||||
'settlement.smart.hold': 'Hold',
|
||||
'settlement.smart.payout': 'Payout',
|
||||
'settlement.smart.win_stake': 'Win stake %',
|
||||
'settlement.smart.wl': 'W/L bets',
|
||||
'settlement.smart.strategy.MIN_PAYOUT': 'Max house hold (min payout)',
|
||||
'settlement.smart.strategy.MAX_PAYOUT': 'Max player payout',
|
||||
'settlement.smart.strategy.BALANCED': 'Balanced (~50% win stake)',
|
||||
'settlement.smart.strategy.TARGET_HOLD': 'Target hold rate',
|
||||
'msg.score_recorded': 'Score saved',
|
||||
'msg.settlement_confirmed': 'Settlement confirmed',
|
||||
|
||||
|
||||
@@ -59,6 +59,8 @@ const preview = ref<Record<string, unknown> | null>(null);
|
||||
const stats = ref<SettlementBetStats | null>(null);
|
||||
const statsLoading = ref(false);
|
||||
|
||||
// 智能比分推荐已暂时关闭(后端 smart-score.solver.ts 保留,恢复时接回 UI 与 POST /settlement/smart-score)
|
||||
|
||||
const matchId = computed(() => String(route.params.id ?? ''));
|
||||
|
||||
const statusSummary = computed(() => {
|
||||
@@ -263,6 +265,11 @@ onMounted(() => {
|
||||
</div>
|
||||
</div>
|
||||
<div class="action-row">
|
||||
<!-- 智能比分入口已关闭
|
||||
<el-button size="small" type="warning" plain @click="openSmartDialog">
|
||||
{{ t('settlement.smart.btn') }}
|
||||
</el-button>
|
||||
-->
|
||||
<el-button size="small" @click="recordScore">{{ t('settlement.record_score') }}</el-button>
|
||||
<el-button type="primary" size="small" @click="previewSettlement">
|
||||
{{ t('settlement.preview_btn') }}
|
||||
@@ -272,6 +279,8 @@ onMounted(() => {
|
||||
</div>
|
||||
</el-card>
|
||||
|
||||
<!-- 智能比分弹窗已关闭(见 Settlement.vue git 历史) -->
|
||||
|
||||
<el-card v-if="preview" class="preview-card" shadow="never">
|
||||
<div class="preview-title">{{ t('settlement.preview_title') }}</div>
|
||||
<el-row :gutter="20">
|
||||
@@ -665,4 +674,8 @@ onMounted(() => {
|
||||
.confirm-btn {
|
||||
margin-top: 24px;
|
||||
}
|
||||
|
||||
/* 智能比分弹窗样式(功能已关闭,保留便于恢复)
|
||||
.smart-hint { ... }
|
||||
*/
|
||||
</style>
|
||||
|
||||
Reference in New Issue
Block a user