feat(api, i18n): add agent_node_id to various admin queries and enhance multi-language support
Introduced the agent_node_id field in AdminDrawListQuery, AdminPlayerListQuery, AdminSettlementBatchListQuery, TicketItemsListQuery, and TransferOrderListQuery to improve filtering capabilities. Updated the admin-breadcrumb and admin-sidebar components to include new translations for agent-related terms in English, Nepali, and Chinese, enhancing the overall user experience and multi-language support across the admin interface.
This commit is contained in:
61
src/i18n/locales/en/agents.json
Normal file
61
src/i18n/locales/en/agents.json
Normal file
@@ -0,0 +1,61 @@
|
||||
{
|
||||
"title": "Agents",
|
||||
"treeTitle": "Agent tree",
|
||||
"detailTitle": "Node details",
|
||||
"selectNode": "Select an agent node from the tree",
|
||||
"loadFailed": "Failed to load agent tree",
|
||||
"siteLabel": "Site",
|
||||
"createChild": "Add child agent",
|
||||
"editNode": "Edit node",
|
||||
"deleteNode": "Delete node",
|
||||
"deleteNodeConfirm": "This action cannot be undone. Make sure the node has no children, users, or roles.",
|
||||
"code": "Code",
|
||||
"name": "Name",
|
||||
"depth": "Depth",
|
||||
"path": "Path",
|
||||
"status": "Status",
|
||||
"isRoot": "Root",
|
||||
"createSuccess": "Created agent {{name}}",
|
||||
"updateSuccess": "Updated {{name}}",
|
||||
"deleteSuccess": "Deleted agent {{name}}",
|
||||
"saveFailed": "Save failed",
|
||||
"codeRequired": "Code and name are required",
|
||||
"tabs": {
|
||||
"overview": "Overview",
|
||||
"roles": "Roles",
|
||||
"users": "Accounts",
|
||||
"delegation": "Delegation ceiling"
|
||||
},
|
||||
"delegation": {
|
||||
"title": "Delegation ceiling",
|
||||
"hint": "Select actions this child agent may grant to its own subordinates. Agent roles cannot exceed this ceiling.",
|
||||
"permission": "Action",
|
||||
"canDelegate": "May delegate further",
|
||||
"save": "Save ceiling",
|
||||
"saveSuccess": "Delegation ceiling saved",
|
||||
"empty": "No actions available to assign",
|
||||
"rootDenied": "Root nodes do not use delegation ceilings"
|
||||
},
|
||||
"roles": {
|
||||
"title": "Agent roles",
|
||||
"create": "Create role",
|
||||
"permissions": "Permissions",
|
||||
"slug": "Slug",
|
||||
"userCount": "Users",
|
||||
"createSuccess": "Created role {{name}}",
|
||||
"updateSuccess": "Updated role {{name}}",
|
||||
"deleteSuccess": "Deleted role {{name}}",
|
||||
"permissionSaveSuccess": "Permissions updated",
|
||||
"readOnlyTemplate": "Read-only template",
|
||||
"permissionSubsetHint": "Only permissions you hold can be assigned"
|
||||
},
|
||||
"users": {
|
||||
"title": "Agent accounts",
|
||||
"create": "Create account",
|
||||
"username": "Username",
|
||||
"password": "Password",
|
||||
"roles": "Roles",
|
||||
"createSuccess": "Created account {{name}}",
|
||||
"roleSaveSuccess": "Roles updated for {{name}}"
|
||||
}
|
||||
}
|
||||
@@ -125,6 +125,11 @@
|
||||
"display": "Player",
|
||||
"sitePlayerId": "Player ID"
|
||||
},
|
||||
"agentColumns": {
|
||||
"agent": "Agent",
|
||||
"filter": "Agent",
|
||||
"filterAll": "All agents"
|
||||
},
|
||||
"toolbar": {
|
||||
"defaultAdmin": "Administrator",
|
||||
"notifications": "Notifications",
|
||||
@@ -155,10 +160,19 @@
|
||||
"settings": "Settings",
|
||||
"account": "Account settings",
|
||||
"integration": "Integration sites",
|
||||
"agents": "Agents",
|
||||
"config": "Operations config"
|
||||
},
|
||||
"sidebar": {
|
||||
"workspace": "Workspace"
|
||||
"workspace": "Workspace",
|
||||
"group": {
|
||||
"overview": "Overview",
|
||||
"agent": "Agent organization",
|
||||
"operations": "Operations",
|
||||
"finance": "Finance & reports",
|
||||
"rules": "Rules & parameters",
|
||||
"platform": "Platform"
|
||||
}
|
||||
},
|
||||
"auth": {
|
||||
"checking": "Checking sign-in status…",
|
||||
|
||||
@@ -178,7 +178,18 @@
|
||||
"loadFailed": "Failed to load system settings",
|
||||
"saveSuccess": "System settings saved",
|
||||
"saveRuntimeSuccess": "Draw and settlement parameters saved",
|
||||
"saveDrawSuccess": "Draw parameters saved",
|
||||
"saveCurrencyFormatSuccess": "Currency display format saved",
|
||||
"saveSettlementSuccess": "Settlement automation saved",
|
||||
"saveFrontendSuccess": "Front-end display settings saved",
|
||||
"sections": {
|
||||
"draw": "Draw schedule and review",
|
||||
"drawDescription": "Controls draw timing, close window, manual review, and cooldown. Only changed fields in this block are submitted.",
|
||||
"currencyFormat": "Currency display format",
|
||||
"currencyFormatDescription": "Decimals and separators for amounts across the site (separate from currency master data).",
|
||||
"settlement": "Settlement automation",
|
||||
"settlementDescription": "Controls whether tick auto-runs settlement, approval, and payout. Only changed fields in this block are submitted."
|
||||
},
|
||||
"saveFailed": "Failed to save system settings",
|
||||
"unsavedChanges": "Unsaved changes",
|
||||
"frontendConfig": "Front-end configuration",
|
||||
@@ -217,6 +228,12 @@
|
||||
"confirmSaveDescription": "This updates draw review, cooldown, auto settlement/approval/payout, and play-rules display. It may affect site-wide operation.",
|
||||
"confirmSaveRuntimeTitle": "Save draw and settlement parameters?",
|
||||
"confirmSaveRuntimeDescription": "This updates draw review, schedule timing, cooldown, and auto settlement/approval/payout. Play-rules HTML is not changed.",
|
||||
"confirmSaveDrawTitle": "Save draw parameters?",
|
||||
"confirmSaveDrawDescription": "This updates draw review, schedule timing, and cooldown in this block only.",
|
||||
"confirmSaveCurrencyFormatTitle": "Save currency display format?",
|
||||
"confirmSaveCurrencyFormatDescription": "This updates decimal places and separators.",
|
||||
"confirmSaveSettlementTitle": "Save settlement automation?",
|
||||
"confirmSaveSettlementDescription": "This updates auto settlement, approval, and payout switches.",
|
||||
"confirmSaveFrontendTitle": "Save front-end display settings?",
|
||||
"confirmSaveFrontendDescription": "This updates play-rules HTML on the player site. Draw and settlement logic are not changed."
|
||||
},
|
||||
|
||||
@@ -29,6 +29,7 @@
|
||||
"granularityDay": "By day",
|
||||
"playBreakdown": "Play breakdown",
|
||||
"playRanking": "Top 5 plays",
|
||||
"agentRanking": "Top 5 agents",
|
||||
"rankingMetricLabel": "Ranking metric",
|
||||
"rankingMetrics": {
|
||||
"bet": "By bet amount",
|
||||
@@ -37,6 +38,7 @@
|
||||
},
|
||||
"periodDistribution": "Period structure",
|
||||
"noPlayData": "No play data in this period",
|
||||
"noAgentData": "No agent data in this period",
|
||||
"periods": {
|
||||
"today": "Today",
|
||||
"last_7_days": "Last 7 days",
|
||||
@@ -90,6 +92,7 @@
|
||||
"batchPendingDraws": "Draws involved",
|
||||
"batchPendingDrawsCount": "{{count}} draws pending",
|
||||
"platformLockedAndCap": "Site locked {{locked}} / cap {{cap}}",
|
||||
"platformCapNotConfigured": "Site locked {{locked}} · cap not configured",
|
||||
"platformOrderAndTicket": "Site-wide {{orders}} orders · {{tickets}} lines",
|
||||
"platformBetTotal": "Lifetime bet",
|
||||
"platformNoFinanceActivity": "No bets site-wide yet",
|
||||
|
||||
@@ -2,10 +2,13 @@
|
||||
"title": "Reconcile",
|
||||
"createTitle": "Create reconcile job",
|
||||
"createDesc": "Manually check abnormal transfers by date range and optional player. Scheduled reconciliation still runs automatically.",
|
||||
"scopeTitle": "Define the reconcile scope",
|
||||
"scopeDescription": "Choose the business type and date range first, then decide whether to narrow it to one player.",
|
||||
"reconcileType": "Reconcile type",
|
||||
"reconcileTypeFixed": "Wallet transfer (main site ⇄ lottery)",
|
||||
"reconcileTypeHint": "Only wallet transfer is currently supported.",
|
||||
"dateRange": "Reconcile date range",
|
||||
"dateRangeHint": "Start with a shorter period to spot concentrated issues before widening the search.",
|
||||
"createTask": "Create reconcile job",
|
||||
"submitting": "Submitting…",
|
||||
"loadFailed": "Failed to load",
|
||||
@@ -20,13 +23,21 @@
|
||||
"createSuccess": "Reconcile job created",
|
||||
"createFailed": "Failed to create job",
|
||||
"noCreatePermission": "Current account cannot create reconcile jobs.",
|
||||
"playerScopeTitle": "Optionally narrow to one player",
|
||||
"playerAllPlayersHint": "If no player is selected, the reconcile job will cover all players in the chosen date range.",
|
||||
"createSummaryAll": "A manual reconcile will run for all players from {{from}} to {{to}}.",
|
||||
"createSummaryPlayer": "A manual reconcile will run for player {{player}} from {{from}} to {{to}}.",
|
||||
"jobsTitle": "Reconcile jobs",
|
||||
"jobsDesc": "Use the action on the right to open paginated item details.",
|
||||
"refresh": "Refresh",
|
||||
"jobNo": "Job no.",
|
||||
"type": "Type",
|
||||
"status": "Status",
|
||||
"itemCount": "Items",
|
||||
"mismatchCount": "Mismatches",
|
||||
"matchedCount": "Matched",
|
||||
"period": "Period",
|
||||
"finishedAt": "Finished at",
|
||||
"createdAt": "Created at",
|
||||
"operate": "Action",
|
||||
"view": "View",
|
||||
@@ -34,6 +45,7 @@
|
||||
"sideARef": "Lottery ref",
|
||||
"sideBRef": "Main site ref",
|
||||
"differenceAmount": "Difference (cent)",
|
||||
"detectedAt": "Detected at",
|
||||
"noDetails": "No details",
|
||||
"playerSearch": "Player (optional)",
|
||||
"playerSearchPlaceholder": "Search by player ID / username / nickname",
|
||||
|
||||
@@ -84,15 +84,109 @@
|
||||
"subtitle": "Results appear below. Export as CSV or Excel.",
|
||||
"empty": "No data. Adjust filters and try again.",
|
||||
"exportableRows": "rows exportable",
|
||||
"summaryScopeHint": "Except for the total record count, the stat cards above summarize the current preview page. Use full CSV/Excel export for full-range numbers.",
|
||||
"scope": {
|
||||
"currentPage": "Current page"
|
||||
},
|
||||
"columns": {
|
||||
"primary": "",
|
||||
"secondary": "",
|
||||
"metricA": "",
|
||||
"metricB": "",
|
||||
"metricC": "",
|
||||
"status": "",
|
||||
"extra": "",
|
||||
"time": ""
|
||||
"primary": "Primary",
|
||||
"secondary": "Secondary",
|
||||
"metricA": "Metric A",
|
||||
"metricB": "Metric B",
|
||||
"metricC": "Metric C",
|
||||
"status": "Status",
|
||||
"extra": "Extra",
|
||||
"time": "Time",
|
||||
"drawProfit": {
|
||||
"primary": "Draw / Batch",
|
||||
"secondary": "Draw / Settlement status",
|
||||
"metricA": "Orders / Tickets",
|
||||
"metricB": "Tickets / Winners",
|
||||
"metricC": "Bet / House P&L",
|
||||
"status": "Payout / Jackpot",
|
||||
"extra": "Batch count",
|
||||
"time": "Finished"
|
||||
},
|
||||
"dailyProfit": {
|
||||
"primary": "Business date",
|
||||
"secondary": "Note",
|
||||
"metricA": "Bet",
|
||||
"metricB": "Payout",
|
||||
"metricC": "House P&L",
|
||||
"status": "Refund",
|
||||
"extra": "Net",
|
||||
"time": "Updated"
|
||||
},
|
||||
"playerWinLoss": {
|
||||
"primary": "Player",
|
||||
"secondary": "Player ID",
|
||||
"metricA": "Bet",
|
||||
"metricB": "Payout",
|
||||
"metricC": "Net win/loss",
|
||||
"status": "Tier",
|
||||
"extra": "Note",
|
||||
"time": "Time"
|
||||
},
|
||||
"playerTransfer": {
|
||||
"primary": "Transfer no.",
|
||||
"secondary": "Player",
|
||||
"metricA": "Direction",
|
||||
"metricB": "Status",
|
||||
"metricC": "Amount",
|
||||
"status": "External ref",
|
||||
"extra": "Failure reason",
|
||||
"time": "Created"
|
||||
},
|
||||
"hotNumberRisk": {
|
||||
"primary": "Number / Log",
|
||||
"secondary": "Draw / Action",
|
||||
"metricA": "Cap / Amount",
|
||||
"metricB": "Locked / Play",
|
||||
"metricC": "Remaining / Ticket",
|
||||
"status": "Sold out / Player",
|
||||
"extra": "Usage / Reason",
|
||||
"time": "Version / Time"
|
||||
},
|
||||
"playDimension": {
|
||||
"primary": "Play",
|
||||
"secondary": "Dimension",
|
||||
"metricA": "Bet",
|
||||
"metricB": "Payout",
|
||||
"metricC": "House P&L",
|
||||
"status": "Share",
|
||||
"extra": "Note",
|
||||
"time": "Time"
|
||||
},
|
||||
"soldOut": {
|
||||
"primary": "Number",
|
||||
"secondary": "Draw",
|
||||
"metricA": "Cap",
|
||||
"metricB": "Locked",
|
||||
"metricC": "Remaining",
|
||||
"status": "Sold out",
|
||||
"extra": "Usage",
|
||||
"time": "Version"
|
||||
},
|
||||
"rebateCommission": {
|
||||
"primary": "Play",
|
||||
"secondary": "Orders",
|
||||
"metricA": "Rebate",
|
||||
"metricB": "Ticket items",
|
||||
"metricC": "Commission",
|
||||
"status": "Rule hit",
|
||||
"extra": "Note",
|
||||
"time": "Time"
|
||||
},
|
||||
"adminAudit": {
|
||||
"primary": "Log ID",
|
||||
"secondary": "Operator type",
|
||||
"metricA": "Operator ID",
|
||||
"metricB": "Module",
|
||||
"metricC": "Action",
|
||||
"status": "Target type",
|
||||
"extra": "IP",
|
||||
"time": "Time"
|
||||
}
|
||||
},
|
||||
"stats": {
|
||||
"records": "Records",
|
||||
@@ -179,7 +273,7 @@
|
||||
},
|
||||
"daily_profit": {
|
||||
"title": "Daily P&L summary",
|
||||
"summary": "Summarize bets, payouts, refunds, P&L, and net amount by date."
|
||||
"summary": "Summarize bet amount, payout, and house P&L by business date. Refund and standalone net amount are not included yet."
|
||||
},
|
||||
"player_win_loss": {
|
||||
"title": "Player win/loss report",
|
||||
|
||||
Reference in New Issue
Block a user