feat(dashboard, i18n): enhance agent dashboard and localization support

Updated the agent dashboard to include new metrics for today's bets and payouts, improving visibility for users. Enhanced localization files with additional hints and labels for better user experience across English, Nepali, and Chinese. Introduced new functions for formatting business dates and improved the handling of analytics permissions in the dashboard components.
This commit is contained in:
2026-06-16 14:18:58 +08:00
parent a4454a54a4
commit d4cf4ff436
17 changed files with 534 additions and 415 deletions

View File

@@ -77,6 +77,7 @@
"todayPayout": "Today's payout",
"todayProfit": "Today's profit",
"todayBusinessDateHint": "Business date {{date}}",
"todayPayoutHint": "Payout {{amount}}",
"drawNoHint": "Draw {{drawNo}}",
"orderAndTicket": "{{orders}} orders · {{tickets}} items",
"marginRate": "Gross margin ~{{rate}}%",
@@ -94,6 +95,9 @@
"batchPendingDraws": "Draws involved",
"batchPendingDrawsCount": "{{count}} draws pending",
"platformLockedAndCap": "Site locked {{locked}} / cap {{cap}}",
"platformLockedLabel": "Locked",
"platformCapLabel": "Cap",
"platformCapUnset": "Not set",
"platformCapNotConfigured": "Site locked {{locked}} · cap not configured",
"platformOrderAndTicket": "Site-wide {{orders}} orders · {{tickets}} lines",
"platformBetTotal": "Lifetime bet",
@@ -162,6 +166,8 @@
"todayBet": "Today's bets",
"todayProfit": "Today's P/L",
"sevenDayTitle": "Last 7 days",
"sevenDayBet": "7-day bets",
"sevenDayPayout": "7-day payout",
"sevenDayProfit": "7-day P/L",
"profitScopeHint": "Site scope: bets minus payouts",
"activePlayersToday": "Active players today",
@@ -174,6 +180,8 @@
"agentCount": "Agent nodes",
"playerCount": "Players",
"topAgentToday": "Top agent today: {{name}} ({{amount}})",
"topAgentTodayLabel": "Top agent today",
"overviewEmpty": "No site operations data. Confirm the integration site is bound.",
"quickLinks": {
"tickets": "Tickets",
"players": "Players",
@@ -194,6 +202,7 @@
"creditAllocatedLabel": "Allocated credit",
"creditUsedLabel": "Used credit",
"shareRate": "Total share {{rate}}%",
"shareProfitScopeHint": "Share profit at this node (from bet share_snapshot)",
"settlementCycle": "Cycle {{cycle}}",
"teamTitle": "Team size",
"directChildren": "Direct child agents",
@@ -208,8 +217,11 @@
"todayProfit": "Today's profit",
"todayShareProfit": "Today's share profit",
"sevenDayTitle": "Last 7 days",
"sevenDayBet": "7-day bets",
"sevenDayPayout": "Payout {{amount}}",
"sevenDayPayoutLabel": "7-day payout",
"sevenDayProfit": "Profit {{amount}}",
"sevenDayShareProfitLabel": "7-day share profit",
"sevenDayShareProfit": "Share profit {{amount}}",
"pendingBills": "Open agent bills",
"pendingUnpaid": "Unpaid total {{amount}}",
@@ -230,6 +242,7 @@
"no": "No",
"viewBills": "View bills",
"lineMeta": "Depth {{depth}} · child agents {{childAgent}} · players {{player}}",
"overviewEmpty": "No line operations data. Confirm the agent binding is valid.",
"viewLine": "Agent line",
"quickLinks": {
"tickets": "Tickets",
@@ -242,6 +255,7 @@
"warnings": {
"drawPermission": "This account has no draw/dashboard view permission. Finance and risk data were not returned.",
"walletPermission": "This account has no wallet reconciliation permission. Abnormal transfer count was not returned.",
"analyticsUnavailable": "Trend and ranking analytics are unavailable. KPI cards above remain visible.",
"loadFailed": "Failed to load. Check the API and login state.",
"apiResourceMissing": "Dashboard analytics API is not registered. Run: php artisan lottery:admin-auth-sync (or apply the latest migration), then refresh."
}

View File

@@ -13,7 +13,7 @@
"exportSuccess": "Exported {{report}} ({{format}})",
"exportServerSuccess": "Job {{jobNo}} created and downloaded {{report}} ({{format}})",
"exportFailed": "Export failed",
"exportHint": "Server exports use the current filters to build a full file. Completed jobs can be downloaded again below.",
"exportHint": "Export uses the current filters to build the full dataset. Preview query is not required.",
"exportServerHint": "Full export via server job (preview query not required)",
"exportClientHint": "Export current preview page (run query first)",
"validation": {
@@ -281,19 +281,15 @@
},
"daily_profit": {
"title": "Daily P&L summary",
"summary": "Summarize bet amount, payout, and house P&L by business date. Refund and standalone net amount are not included yet."
"summary": "Betting P&L by business date; defaults to the last 30 days. Ticket amounts — not credit-line period settlement."
},
"player_win_loss": {
"title": "Player win/loss report",
"summary": "Track player win/loss over a selected period for finance and support review."
},
"profit_reports": {
"disclaimer": "These reports use ticket bet/win amounts (betting results), not credit-line period settlement. For share, rebate, and collections, use Settlement Center → Period reports."
"summary": "Win/loss by player and business date; defaults to the last 30 days. Ticket amounts — not credit-line settlement."
},
"player_transfer": {
"title": "Player transfer report",
"summary": "Review player transfers in, transfers out, reversals, and exception handling.",
"disclaimer": "Main-site wallet transfer orders only (wallet-mode players). Credit-line players have no such transfers — use Settlement Center for period ledger."
"summary": "Wallet-mode main-site transfers by record time; defaults to the last 30 days."
},
"hot_number_risk": {
"title": "Hot number risk report",
@@ -301,7 +297,7 @@
},
"play_dimension": {
"title": "Play dimension report",
"summary": "Break down betting volume, payout, rebate, and P&L structure by play."
"summary": "P&L by play and business date; defaults to the last 30 days. Ticket amounts — not credit-line settlement."
},
"sold_out_number": {
"title": "Sold-out number report",
@@ -309,12 +305,11 @@
},
"rebate_commission": {
"title": "Commission / rebate report",
"summary": "Summarize commission, rebate, and matched rules by play and period.",
"disclaimer": "Wallet-mode instant rebate/commission — not agent credit-line period settlement. Use Agent → Settlement bills for credit-line reports."
"summary": "Wallet-mode instant rebate by business date; defaults to the last 30 days. Not credit-line period settlement."
},
"admin_audit": {
"title": "Admin operation audit report",
"summary": "Export key admin operation traces by operator and period."
"summary": "Admin actions by operator and record time; defaults to the last 30 days."
}
}
}

View File

@@ -75,6 +75,7 @@
"todayPayout": "आजको भुक्तानी",
"todayProfit": "आजको नाफा/नोक्सान",
"todayBusinessDateHint": "व्यापार मिति {{date}}",
"todayPayoutHint": "भुक्तानी {{amount}}",
"drawNoHint": "ड्रअ {{drawNo}}",
"orderAndTicket": "{{orders}} अर्डर · {{tickets}} वस्तु",
"marginRate": "सकल मार्जिन ~{{rate}}%",
@@ -92,6 +93,9 @@
"batchPendingDraws": "सम्बन्धित ड्रअ",
"batchPendingDrawsCount": "{{count}} ड्रअ पेन्डिङ",
"platformLockedAndCap": "साइट लक {{locked}} / क्याप {{cap}}",
"platformLockedLabel": "लक",
"platformCapLabel": "क्याप",
"platformCapUnset": "सेट छैन",
"platformCapNotConfigured": "साइट लक {{locked}} · क्याप कन्फिगर गरिएको छैन",
"platformOrderAndTicket": "साइटव्यापी {{orders}} अर्डर · {{tickets}} लाइन",
"platformBetTotal": "जम्मा बेट",
@@ -159,6 +163,8 @@
"todayBet": "आजको बाजी",
"todayProfit": "आजको नाफा/नोक्सान",
"sevenDayTitle": "पछिल्लो ७ दिन",
"sevenDayBet": "७-दिने बाजी",
"sevenDayPayout": "७-दिने भुक्तानी",
"sevenDayProfit": "७-दिने नाफा/नोक्सान",
"profitScopeHint": "साइट दायरा: बाजी माइनस भुक्तानी",
"activePlayersToday": "आज सक्रिय खेलाडी",
@@ -171,6 +177,8 @@
"agentCount": "एजेन्ट नोड",
"playerCount": "खेलाडी संख्या",
"topAgentToday": "आजको शीर्ष एजेन्ट: {{name}} ({{amount}})",
"topAgentTodayLabel": "आजको शीर्ष एजेन्ट",
"overviewEmpty": "साइट सञ्चालन डाटा छैन। कृपया साइट बाइन्डिङ जाँच गर्नुहोस्।",
"quickLinks": {
"tickets": "टिकट",
"players": "खेलाडी",
@@ -179,9 +187,41 @@
"bills": "सेटलमेन्ट"
}
},
"agent": {
"title": "सञ्चालन सारांश",
"subtitle": "{{name}} · यो लाइन",
"creditTitle": "क्रेडिट सीमा",
"creditAvailable": "उपलब्ध {{amount}}",
"creditAllocatedLabel": "बाँडिएको क्रेडिट",
"creditUsedLabel": "प्रयोग भएको क्रेडिट",
"shareRate": "कुल शेयर {{rate}}%",
"shareProfitScopeHint": "यस नोडको शेयर नाफा (share_snapshot)",
"teamTitle": "टोली परिमाण",
"directChildren": "प्रत्यक्ष सन्तान एजेन्ट",
"directPlayers": "प्रत्यक्ष खेलाडी",
"subtreeAgents": "लाइन एजेन्ट",
"teamPlayers": "लाइन खेलाडी",
"activePlayersToday": "आज सक्रिय खेलाडी",
"betOrdersTodayHint": "आज {{count}} अर्डर",
"todayBet": "आजको बाजी",
"todayShareProfit": "आजको शेयर नाफा",
"sevenDayTitle": "पछिल्लो ७ दिन",
"sevenDayBet": "७-दिने बाजी",
"sevenDayPayoutLabel": "७-दिने भुक्तानी",
"sevenDayShareProfitLabel": "७-दिने शेयर नाफा",
"pendingBills": "बाँकी बिल",
"pendingUnpaid": "नतिरेको {{amount}}",
"latestBetAt": "पछिल्लो बाजी {{time}}",
"noBetToday": "आज अहिलेसम्म बाजी छैन",
"yes": "हो",
"no": "होइन",
"lineMeta": "गहिराइ {{depth}} · सन्तान एजेन्ट {{childAgent}} · खेलाडी {{player}}",
"overviewEmpty": "लाइन सञ्चालन डाटा छैन। एजेन्ट बाइन्डिङ जाँच गर्नुहोस्।"
},
"warnings": {
"drawPermission": "यो खातासँग ड्रअ/ड्यासबोर्ड हेर्ने अनुमति छैन। वित्तीय र जोखिम डाटा फिर्ता आएन।",
"walletPermission": "यो खातासँग वालेट मिलान हेर्ने अनुमति छैन। असामान्य ट्रान्सफर संख्या फिर्ता आएन।",
"analyticsUnavailable": "ट्रेन्ड/र्याङ्किङ विश्लेषण उपलब्ध छैन। माथिको KPI हेर्न सकिन्छ।",
"loadFailed": "लोड असफल भयो। API र लगइन अवस्था जाँच गर्नुहोस्।"
}
}

View File

@@ -13,7 +13,7 @@
"exportSuccess": "{{report}} ({{format}}) निर्यात भयो",
"exportServerSuccess": "कार्य {{jobNo}} सिर्जना भई {{report}} ({{format}}) डाउनलोड भयो",
"exportFailed": "निर्यात असफल भयो",
"exportHint": "सर्भर निर्यातले हालका फिल्टरअनुसार पूर्ण फाइल बनाउँछ। सम्पन्न कार्य तलबाट पुन: डाउनलोड गर्न सकिन्छ।",
"exportHint": "हालका फिल्टरअनुसार पूर्ण डाटा निर्यात; पूर्वावलोकन क्वेरी अनिवार्य छैन।",
"exportServerHint": "पूर्ण निर्यात सर्भर कार्यबाट (पूर्वावलोकन क्वेरी अनिवार्य छैन)",
"exportClientHint": "हालको पूर्वावलोकन पृष्ठ निर्यात (पहिले क्वेरी चलाउनुहोस्)",
"validation": {
@@ -278,19 +278,15 @@
},
"daily_profit": {
"title": "दैनिक P&L सारांश",
"summary": "व्यावसायिक मितिअनुसार बेट रकम, पेआउट र हाउस P&L सारांश गर्नुहोस्। रिफन्ड र छुट्टै नेट रकम अहिले समावेश छैन।"
"summary": "व्यावसायिक मितिअनुसार बेट P&L; मिति नचयेमा पछिल्लो ३० दिन। टिकट रकम — क्रेडिट-लाइन सेटलमेन्ट होइन।"
},
"player_win_loss": {
"title": "खेलाडी जित/हार रिपोर्ट",
"summary": "चयन गरिएको अवधिमा खेलाडीको जित/हार वित्त र सपोर्टका लागि हेर्नुहोस्।"
},
"profit_reports": {
"disclaimer": "यी रिपोर्ट टिकट बेट/जित रकम (बेटिङ नतिजा) मा आधारित छन्, क्रेडिट-लाइन अवधि सेटलमेन्ट होइन। शेयर, रिबेट र सङ्कलनका लागि सेटलमेन्ट सेन्टर → अवधि रिपोर्ट प्रयोग गर्नुहोस्।"
"summary": "खेलाडी र व्यावसायिक मितिअनुसार जित/हार; मिति नचयेमा पछिल्लो ३० दिन।"
},
"player_transfer": {
"title": "खेलाडी ट्रान्सफर रिपोर्ट",
"summary": "खेलाडी ट्रान्सफर इन, आउट, रिभर्सल र अपवाद रेकर्ड हेर्नुहोस्।",
"disclaimer": "मुख्य साइट वालेट ट्रान्सफर मात्र (वालेट-मोड खेलाडी)। क्रेडिट-लाइन खेलाडीमा यस्तो ट्रान्सफर हुँदैन — अवधि लेजरका लागि सेटलमेन्ट सेन्टर प्रयोग गर्नुहोस्।"
"summary": "वालेट-मोड मुख्य साइट ट्रान्सफर, रेकर्ड समय अनुसार; मिति नचयेमा पछिल्लो ३० दिन।"
},
"hot_number_risk": {
"title": "हट नम्बर जोखिम रिपोर्ट",
@@ -298,7 +294,7 @@
},
"play_dimension": {
"title": "खेल आयाम रिपोर्ट",
"summary": "खेल अनुसार बेट भोल्युम, पेआउट, रिबेट र P&L संरचना छुट्याउनुहोस्।"
"summary": "खेल र व्यावसायिक मितिअनुसार P&L; मिति नचयेमा पछिल्लो ३० दिन।"
},
"sold_out_number": {
"title": "सोल्ड-आउट नम्बर रिपोर्ट",
@@ -306,11 +302,11 @@
},
"rebate_commission": {
"title": "कमिसन / रिबेट रिपोर्ट",
"summary": "खेल र अवधिअनुसार कमिसन, रिबेट र मिलेको नियम सारांश गर्नुहोस्।"
"summary": "वालेट-मोड तत्काल रिबेट, व्यावसायिक मितिअनुसार; मिति नचयेमा पछिल्लो ३० दिन।"
},
"admin_audit": {
"title": "एडमिन अपरेशन अडिट रिपोर्ट",
"summary": "अपरेटर र अवधिअनुसार मुख्य एडमिन अपरेशन ट्रेस निर्यात गर्नुहोस्।"
"summary": "अपरेटर र रेकर्ड समय अनुसार; मिति नचयेमा पछिल्लो ३० दिन।"
}
}
}

View File

@@ -77,6 +77,7 @@
"todayPayout": "今日派彩",
"todayProfit": "今日盈亏",
"todayBusinessDateHint": "业务日 {{date}}",
"todayPayoutHint": "派彩 {{amount}}",
"drawNoHint": "期号 {{drawNo}}",
"orderAndTicket": "{{orders}} 单 · {{tickets}} 笔",
"marginRate": "毛利率约 {{rate}}%",
@@ -94,6 +95,9 @@
"batchPendingDraws": "涉及期数",
"batchPendingDrawsCount": "{{count}} 期待审",
"platformLockedAndCap": "全站已占用 {{locked}} / 封顶 {{cap}}",
"platformLockedLabel": "已占用",
"platformCapLabel": "封顶",
"platformCapUnset": "未配置",
"platformCapNotConfigured": "全站已占用 {{locked}} · 尚未配置封顶",
"platformOrderAndTicket": "全站 {{orders}} 单 · {{tickets}} 笔",
"platformBetTotal": "累计投注",
@@ -162,6 +166,8 @@
"todayBet": "今日下注",
"todayProfit": "今日盈亏",
"sevenDayTitle": "近 7 天走势",
"sevenDayBet": "近 7 天下注",
"sevenDayPayout": "近 7 天派彩",
"sevenDayProfit": "近 7 天盈亏",
"profitScopeHint": "站点口径:投注减派彩(不含占成拆分)",
"activePlayersToday": "今日活跃玩家",
@@ -174,6 +180,8 @@
"agentCount": "代理节点",
"playerCount": "玩家总数",
"topAgentToday": "今日投注最高代理:{{name}}{{amount}}",
"topAgentTodayLabel": "今日投注最高代理",
"overviewEmpty": "暂无站点经营数据,请确认已绑定接入站点。",
"quickLinks": {
"tickets": "注单查询",
"players": "玩家管理",
@@ -194,6 +202,7 @@
"creditAllocatedLabel": "已下发额度",
"creditUsedLabel": "已占用额度",
"shareRate": "总占成 {{rate}}%",
"shareProfitScopeHint": "本级占成口径(按注单 share_snapshot",
"settlementCycle": "账期 {{cycle}}",
"teamTitle": "团队规模",
"directChildren": "直属下级代理",
@@ -208,8 +217,11 @@
"todayProfit": "今日盈亏",
"todayShareProfit": "今日本级占成",
"sevenDayTitle": "近 7 天走势",
"sevenDayBet": "近 7 天下注",
"sevenDayPayout": "派彩 {{amount}}",
"sevenDayPayoutLabel": "近 7 天派彩",
"sevenDayProfit": "盈亏 {{amount}}",
"sevenDayShareProfitLabel": "近 7 日本级占成",
"sevenDayShareProfit": "本级占成 {{amount}}",
"pendingBills": "待结代理账单",
"pendingUnpaid": "未结合计 {{amount}}",
@@ -230,6 +242,7 @@
"no": "否",
"viewBills": "查看账单",
"lineMeta": "层级 {{depth}} · 可开下级 {{childAgent}} · 可开玩家 {{player}}",
"overviewEmpty": "暂无线路经营数据,请确认代理绑定有效。",
"viewLine": "代理线路",
"quickLinks": {
"tickets": "注单查询",
@@ -242,6 +255,7 @@
"warnings": {
"drawPermission": "当前账号无开奖/仪表盘查看权限,财务与风控数据未返回。",
"walletPermission": "当前账号无钱包对账查看权限,异常转账计数未返回。",
"analyticsUnavailable": "暂无趋势与排行分析权限,上方 KPI 仍可查看。",
"loadFailed": "加载失败,请检查 API 与登录状态。",
"apiResourceMissing": "仪表盘分析接口未注册。请在服务端执行php artisan lottery:admin-auth-sync或运行最新数据库迁移后重试。"
}

View File

@@ -13,7 +13,7 @@
"exportSuccess": "已导出 {{report}}{{format}}",
"exportServerSuccess": "已生成任务 {{jobNo}} 并下载 {{report}}{{format}}",
"exportFailed": "导出失败",
"exportHint": "服务端导出按当前筛选条件生成全量文件;任务完成后可在下方列表再次下载。",
"exportHint": "导出按当前筛选条件生成全量数据,无需先查询预览。",
"exportServerHint": "全量导出走服务端任务(无需先查询预览)",
"exportClientHint": "导出当前预览页数据(需先查询)",
"validation": {
@@ -281,19 +281,15 @@
},
"daily_profit": {
"title": "每日盈亏汇总",
"summary": "按业务日汇总投注、派彩与平台盈亏,当前不包含退款与单独净额字段。"
"summary": "按业务日汇总投注与盈亏;未选日期默认近 30 天。注单口径,非信用账期结算。"
},
"player_win_loss": {
"title": "玩家输赢报表",
"summary": "按玩家和时间段追踪输赢表现,适合客服与财务复核。"
},
"profit_reports": {
"disclaimer": "本组报表按注单下注/中奖金额统计投注结果,不等同于信用占成盘账期结算。占成、回水与收付请使用「结算中心 → 账期报表」。"
"summary": "按业务日与玩家汇总输赢;未选日期默认近 30 天。注单口径,非信用账期结算。"
},
"player_transfer": {
"title": "玩家转入转出报表",
"summary": "集中查看玩家转入、转出、冲正和异常处理记录。",
"disclaimer": "仅统计主站钱包划转单(钱包盘玩家)。信用盘玩家无此类转账,请使用结算中心查看账期账务。"
"summary": "钱包盘主站划转记录,按创建时间筛选;未选日期默认近 30 天。"
},
"hot_number_risk": {
"title": "热门号码风险报表",
@@ -301,7 +297,7 @@
},
"play_dimension": {
"title": "玩法维度报表",
"summary": "按玩法拆分投注量、派彩、回水和盈亏结构。"
"summary": "按玩法与业务日拆分盈亏;未选日期默认近 30 天。注单口径,非信用账期结算。"
},
"sold_out_number": {
"title": "售罄号码报表",
@@ -309,12 +305,11 @@
},
"rebate_commission": {
"title": "佣金/回水报表",
"summary": "按玩法与时间段汇总佣金、回水与配置命中情况。",
"disclaimer": "本报表为钱包盘「下注立减回水/佣金」口径,不属于信用占成盘账期结算。占成盘请使用「代理 → 代理账单」中的账期报表。"
"summary": "钱包盘下注立减回水,按业务日汇总;未选日期默认近 30 天。非信用占成账期。"
},
"admin_audit": {
"title": "后台操作审计报表",
"summary": "按操作人和时间段导出关键后台操作留痕。"
"summary": "按操作人与记录创建时间筛选;未选日期默认近 30 天。"
}
}
}