feat: multi-tier agent hierarchy, wallet ledger, and player UX polish

Add configurable agent max level and default sub-agent credit ratio, per-agent block direct player login on suspend, admin/agent wallet transaction views, and match detail my-bets section with refreshed player card styling.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-06-10 16:15:34 +08:00
parent 641c92a5f5
commit ef6b15f119
39 changed files with 2398 additions and 410 deletions

View File

@@ -100,13 +100,21 @@ export const adminPagesMs: Record<string, string> = {
'user.field.account_type': 'Jenis akaun',
'user.type.player': 'Pemain',
'user.type.tier1_agent': 'Ejen peringkat 1',
'user.type.sub_agent': 'Sub-ejen',
'user.type.sub_agent': 'Ejen peringkat 2',
'user.hint.account_type': 'Ejen guna had kredit; pemain boleh di bawah ejen',
'agent.create_btn': '+ Ejen peringkat 1 baharu',
'agent.create_sub_btn': '+ Ejen peringkat 2 baharu',
'agent.create_sub': 'Cipta sub-ejen',
'agent.hint.sub_agent_parent': 'Ejen peringkat 2 mesti di bawah ejen peringkat 1',
'agent.create_sub': 'Cipta ejen peringkat 2',
'agent.create_child_btn': '+ Sub-ejen baharu',
'agent.dialog.create_child_agent': 'Sub-ejen baharu',
'agent.create_level_agent': 'Cipta ejen peringkat {level}',
'agent.create_level_agent_btn': '+ Ejen peringkat {level} baharu',
'agent.level_name': 'Ejen peringkat {level}',
'agent.level_tab': 'Ejen peringkat {level}',
'agent.dialog.create_level_agent': 'Ejen peringkat {level} baharu',
'agent.hint.select_parent_for_level': 'Pilih ejen peringkat {level} sebagai induk',
'agent.err.parent_level_mismatch': 'Peringkat induk tidak sah untuk cipta ejen peringkat {level}',
'agent.hint.creating_under_agent': 'Cipta akaun di bawah ejen ini',
'agent.filter.username_ph': 'Nama pengguna',
'agent_mgr.tab.players': 'Pemain',
@@ -150,6 +158,37 @@ export const adminPagesMs: Record<string, string> = {
'agent.credit_tx.view_all': 'Lihat semua lejar kredit',
'finance.tab.credit': 'Lejar kredit',
'finance.tab.transfer': 'Lejar pemindahan',
'finance.tab.wallet': 'Lejar dompet',
'finance.filter.type_category': 'Jenis transaksi',
'finance.filter.type_category_all': 'Semua',
'finance.filter.type_category_deposit': 'Pemindahan',
'finance.filter.type_category_bet': 'Pertaruhan',
'finance.filter.type_category_cashback': 'Rebat',
'finance.col.frozen_before': 'Beku sebelum',
'finance.col.frozen_after': 'Beku selepas',
'finance.col.reference': 'Pertaruhan berkaitan',
'finance.tx.adjust': 'Pelarasan baki',
'finance.tx.bet_freeze': 'Beku pertaruhan',
'finance.tx.bet_deduct': 'Potong pertaruhan',
'finance.tx.bet_win': 'Bayaran pertaruhan',
'finance.tx.bet_lose': 'Penyelesaian pertaruhan',
'finance.tx.bet_push': 'Refund seri',
'finance.tx.bet_refund': 'Refund pertaruhan',
'finance.tx.bet_void': 'Pertaruhan batal',
'finance.tx.cashback': 'Rebat',
'finance.tx.resettle': 'Penyelesaian semula',
'user.action.view_wallet_ledger': 'Lihat lejar dompet',
'user.wallet_ledger_dialog_title': 'Lejar dompet — {name}',
'agent.hierarchy.settings_title': 'Hierarki ejen',
'agent.hierarchy.settings_hint': '0 bermaksud tanpa had. Ejen di had atas tidak boleh cipta sub-ejen.',
'agent.hierarchy.max_level': 'Tahap ejen maksimum',
'agent.hierarchy.default_sub_credit_ratio': 'Nisbah kredit sub-ejen lalai',
'agent.hierarchy.create_credit_default_hint': 'Lalai {ratio}% ({amount}), tidak melebihi kredit induk; boleh diselaraskan',
'agent.hierarchy.create_credit_quick_hint': 'Kredit induk tersedia {amount} — klik nisbah untuk isi',
'agent.hierarchy.create_level_hint': 'Akan dicipta sebagai ejen peringkat {n}',
'agent.field.parent_agent': 'Ejen induk',
'agent.col.parent_chain': 'Rantaian induk',
'role.agent_level': 'Ejen peringkat {n}',
'finance.filter.date_range': 'Julat tarikh',
'finance.filter.player_ph': 'Nama pengguna pemain',
'finance.filter.parent_agent_ph': 'Nama/ID ejen induk',