feat(admin,api,player): settlement stats, team crests, MS fields and list bet summary

This commit is contained in:
2026-06-04 17:30:48 +08:00
parent cc737e2924
commit 9fcee31a9a
27 changed files with 2296 additions and 427 deletions

View File

@@ -162,6 +162,7 @@ const zh: Record<string, string> = {
'match.status.PUBLISHED': '已发布',
'match.status.CLOSED': '已封盘',
'match.status.SETTLED': '已结算',
'match.status.PENDING_SETTLEMENT': '待结算',
...adminPagesZh,
};
@@ -314,6 +315,7 @@ const en: Record<string, string> = {
'match.status.PUBLISHED': 'Published',
'match.status.CLOSED': 'Closed',
'match.status.SETTLED': 'Settled',
'match.status.PENDING_SETTLEMENT': 'Pending settlement',
...adminPagesEn,
};
@@ -466,6 +468,7 @@ const ms: Record<string, string> = {
'match.status.PUBLISHED': 'Diterbitkan',
'match.status.CLOSED': 'Ditutup',
'match.status.SETTLED': 'Diselesaikan',
'match.status.PENDING_SETTLEMENT': 'Menunggu penyelesaian',
...adminPagesMs,
};

View File

@@ -129,6 +129,9 @@ export const adminPagesMs: Record<string, string> = {
'match.filter.keyword_ph': 'Nama kejohanan / kod pasukan',
'match.col.league': 'Kejohanan',
'match.col.fixture_count': 'Perlawanan',
'match.col.bet_count': 'Pertaruhan',
'match.col.total_stake': 'Jumlah stake',
'match.col.pending_bets': 'Menunggu',
'match.col.league_code': 'Kod',
'match.col.matchup': 'Perlawanan',
'match.col.kickoff': 'Masa mula',
@@ -227,8 +230,10 @@ export const adminPagesMs: Record<string, string> = {
'match.ph.kickoff': '2026-06-11T19:00:00Z',
'match.ph.home_en': 'Mexico',
'match.ph.home_zh': 'Mexico',
'match.ph.home_ms': 'Mexico',
'match.ph.away_en': 'South Africa',
'match.ph.away_zh': 'Afrika Selatan',
'match.ph.away_ms': 'Afrika Selatan',
'matchEditor.manage_btn': 'Maklumat asas',
'matchEditor.back': 'Kembali ke senarai',
@@ -294,11 +299,28 @@ export const adminPagesMs: Record<string, string> = {
'err.credit_negative': 'Had kredit tidak boleh negatif',
'err.kickoff_required': 'Sila isi masa mula',
'err.teams_required': 'Isi nama pasukan tuan rumah dan pelawat (ZH atau EN)',
'err.teams_same': 'Pasukan tuan rumah dan pelawat mesti berbeza',
'err.league_required': 'Sila isi nama liga',
'err.user_required': 'Sila pilih pengguna',
'err.agent_no_parent': 'Ejen peringkat 1 tidak boleh ada pemain induk',
'err.agent_no_initial_deposit': 'Jangan isi baki permulaan pemain apabila cipta ejen',
'settlement.back': 'Kembali ke senarai',
'settlement.kickoff': 'Masa kick-off',
'settlement.stats_title': 'Statistik pertaruhan',
'settlement.stats_total_bets': 'Bil. pertaruhan',
'settlement.stats_single': 'Tunggal',
'settlement.stats_parlay': 'Parlay',
'settlement.stats_total_stake': 'Jumlah stake',
'settlement.stats_potential': 'Menang maksimum',
'settlement.stats_by_market': 'Ikut pasaran / pilihan',
'settlement.bet_list': 'Semua pertaruhan',
'settlement.no_bets': 'Tiada pertaruhan untuk perlawanan ini',
'settlement.col.market': 'Pasaran',
'settlement.col.selection': 'Pilihan',
'settlement.col.legs': 'Kaki',
'settlement.col.single_stake': 'Stake tunggal',
'settlement.col.parlay_legs': 'Kaki parlay',
'settlement.ht_score': 'Skor separuh masa',
'settlement.ft_score': 'Skor penuh masa',
'settlement.record_score': 'Simpan skor',
@@ -405,12 +427,18 @@ export const adminPagesMs: Record<string, string> = {
'outright.col.country': 'Negara',
'outright.col.odds': 'Odds juara',
'outright.country_ph': 'Cari atau pilih negara',
'teamLogo.kind.flag': 'Bendera',
'teamLogo.kind.crest': 'Lambang',
'outright.err_country': 'Sila pilih negara',
'outright.btn.save_odds': 'Simpan semua odds',
'outright.btn.apply_canonical': 'Guna data jadual asas',
'msg.outright_canonical_applied': 'Odds 48 pasukan telah dikemas kini',
'outright.team_count': '{n} / {total} pasukan',
'outright.err_odds_min': 'Odds mesti lebih 1.00',
'outright.field.title_zh': 'Tajuk (ZH)',
'outright.field.title_en': 'Tajuk (EN)',
'outright.field.title_ms': 'Tajuk (MS)',
'outright.btn.create_event': 'Acara juara baharu',
'msg.load_matches_failed': 'Gagal memuatkan perlawanan',
'msg.cashback_issued': 'Rebat telah dikeluarkan',
'msg.freeze_confirm_title': '{action} akaun',

View File

@@ -129,6 +129,9 @@ export const adminPagesZh: Record<string, string> = {
'match.filter.keyword_ph': '赛事名 / 球队代码',
'match.col.league': '赛事',
'match.col.fixture_count': '单场',
'match.col.bet_count': '注单数',
'match.col.total_stake': '总投注额',
'match.col.pending_bets': '待结算',
'match.col.league_code': '代码',
'match.col.matchup': '对阵',
'match.col.kickoff': '开赛时间',
@@ -227,8 +230,10 @@ export const adminPagesZh: Record<string, string> = {
'match.ph.kickoff': '2026-06-11T19:00:00Z',
'match.ph.home_en': 'Mexico',
'match.ph.home_zh': '墨西哥',
'match.ph.home_ms': 'Mexico',
'match.ph.away_en': 'South Africa',
'match.ph.away_zh': '南非',
'match.ph.away_ms': 'Afrika Selatan',
'matchEditor.manage_btn': '基本信息',
'matchEditor.back': '返回列表',
@@ -294,11 +299,28 @@ export const adminPagesZh: Record<string, string> = {
'err.credit_negative': '授信额度不能为负',
'err.kickoff_required': '请填写开赛时间',
'err.teams_required': '请填写主客队名称(中文、英文或马来文至少一项)',
'err.teams_same': '主客队不能相同,请填写不同的队名',
'err.league_required': '请填写联赛名称(中文、英文或马来文至少一项)',
'err.user_required': '请选择用户',
'err.agent_no_parent': '一级代理不可设置上级玩家',
'err.agent_no_initial_deposit': '设为代理时请勿填写玩家初始余额',
'settlement.back': '返回赛事列表',
'settlement.kickoff': '开赛时间',
'settlement.stats_title': '下注统计',
'settlement.stats_total_bets': '注单数',
'settlement.stats_single': '单关',
'settlement.stats_parlay': '串关',
'settlement.stats_total_stake': '总投注额',
'settlement.stats_potential': '最大可赢',
'settlement.stats_by_market': '按玩法 / 选项汇总',
'settlement.bet_list': '全部注单',
'settlement.no_bets': '本场暂无注单',
'settlement.col.market': '玩法',
'settlement.col.selection': '选项',
'settlement.col.legs': '笔数',
'settlement.col.single_stake': '单关投注额',
'settlement.col.parlay_legs': '串关腿数',
'settlement.ht_score': '半场比分',
'settlement.ft_score': '全场比分',
'settlement.record_score': '录入比分',
@@ -405,6 +427,8 @@ export const adminPagesZh: Record<string, string> = {
'outright.col.country': '国家/地区',
'outright.col.odds': '夺冠赔率',
'outright.country_ph': '搜索或选择国家',
'teamLogo.kind.flag': '国旗',
'teamLogo.kind.crest': '队徽',
'outright.err_country': '请选择国家',
'outright.btn.save_odds': '保存全部赔率',
'outright.btn.save_meta': '保存赛事信息',
@@ -427,6 +451,7 @@ export const adminPagesZh: Record<string, string> = {
'outright.field.title_placeholder': '玩家端展示的冠军赛事名称',
'outright.field.title_zh': '标题(中文)',
'outright.field.title_en': '标题(英文)',
'outright.field.title_ms': '标题(马来)',
'outright.field.status': '发布状态',
'outright.status.draft': '草稿',
'outright.status.published': '已发布',
@@ -583,6 +608,9 @@ export const adminPagesEn: Record<string, string> = {
'match.filter.keyword_ph': 'Tournament / team code',
'match.col.league': 'Tournament',
'match.col.fixture_count': 'Fixtures',
'match.col.bet_count': 'Bets',
'match.col.total_stake': 'Total stake',
'match.col.pending_bets': 'Pending',
'match.col.league_code': 'Code',
'match.col.matchup': 'Matchup',
'match.col.kickoff': 'Kickoff',
@@ -681,8 +709,10 @@ export const adminPagesEn: Record<string, string> = {
'match.ph.kickoff': '2026-06-11T19:00:00Z',
'match.ph.home_en': 'Mexico',
'match.ph.home_zh': 'Mexico',
'match.ph.home_ms': 'Mexico',
'match.ph.away_en': 'South Africa',
'match.ph.away_zh': 'South Africa',
'match.ph.away_ms': 'Afrika Selatan',
'matchEditor.manage_btn': 'Basic info',
'matchEditor.back': 'Back to list',
@@ -748,11 +778,28 @@ export const adminPagesEn: Record<string, string> = {
'err.credit_negative': 'Credit limit cannot be negative',
'err.kickoff_required': 'Kickoff time is required',
'err.teams_required': 'Enter home and away team names (ZH or EN)',
'err.teams_same': 'Home and away teams must be different',
'err.league_required': 'League name is required',
'err.user_required': 'Please select a user',
'err.agent_no_parent': 'Tier-1 agents cannot have a parent player',
'err.agent_no_initial_deposit': 'Do not set initial player balance when creating an agent',
'settlement.back': 'Back to matches',
'settlement.kickoff': 'Kick-off',
'settlement.stats_title': 'Betting statistics',
'settlement.stats_total_bets': 'Bets',
'settlement.stats_single': 'Singles',
'settlement.stats_parlay': 'Parlays',
'settlement.stats_total_stake': 'Total stake',
'settlement.stats_potential': 'Max potential win',
'settlement.stats_by_market': 'By market / selection',
'settlement.bet_list': 'All bets',
'settlement.no_bets': 'No bets on this match',
'settlement.col.market': 'Market',
'settlement.col.selection': 'Selection',
'settlement.col.legs': 'Legs',
'settlement.col.single_stake': 'Single stake',
'settlement.col.parlay_legs': 'Parlay legs',
'settlement.ht_score': 'Half-time score',
'settlement.ft_score': 'Full-time score',
'settlement.record_score': 'Save score',
@@ -859,6 +906,8 @@ export const adminPagesEn: Record<string, string> = {
'outright.col.country': 'Country',
'outright.col.odds': 'Winner odds',
'outright.country_ph': 'Search or select country',
'teamLogo.kind.flag': 'Flag',
'teamLogo.kind.crest': 'Crest',
'outright.err_country': 'Please select a country',
'outright.btn.save_odds': 'Save all odds',
'outright.btn.save_meta': 'Save event info',
@@ -881,6 +930,7 @@ export const adminPagesEn: Record<string, string> = {
'outright.field.title_placeholder': 'Title shown on player outright tab',
'outright.field.title_zh': 'Title (ZH)',
'outright.field.title_en': 'Title (EN)',
'outright.field.title_ms': 'Title (MS)',
'outright.field.status': 'Status',
'outright.status.draft': 'Draft',
'outright.status.published': 'Published',