Some checks failed
lotteryadmin CI / build (push) Has been cancelled
- Simplified share rate calculation in AgentsConsole by removing unnecessary checks and directly setting the profile share rate. - Updated the use of `profileParentCaps` to always return total share rate in the agent profile. - Removed unused variables and memoized calculations for improved performance. - Cleaned up imports in various files, removing unused components and optimizing the code structure. - Added `tRef` dependency to several useEffect hooks to ensure proper reactivity to translation changes. - Enhanced report preview tables with better label handling for various statuses and actions. - Updated wallet filter options to align with player-side transaction types. - Introduced new properties in types for better type safety and clarity.
428 lines
19 KiB
JSON
428 lines
19 KiB
JSON
{
|
||
"addChildNeedParent": "Select a parent agent before adding a subordinate",
|
||
"bindAccountHint": "No login account is bound yet. Saving will create and bind one automatically.",
|
||
"bindAccountPasswordRequired": "This agent has no login account yet. Enter an initial password to create one.",
|
||
"childrenCount": "Direct downline",
|
||
"code": "Code",
|
||
"agentCode": "Agent code",
|
||
"agentName": "Agent name",
|
||
"loginUsername": "Login name",
|
||
"codeRequired": "Code and name are required",
|
||
"createChild": "Add child agent",
|
||
"createSuccess": "Created agent {{name}}",
|
||
"delegation": {
|
||
"canDelegate": "May delegate further",
|
||
"empty": "No actions available to assign",
|
||
"hint": "Select actions this child agent may grant to its own subordinates. Agent roles cannot exceed this ceiling.",
|
||
"permission": "Action",
|
||
"rootDenied": "Root nodes do not use delegation ceilings",
|
||
"save": "Save ceiling",
|
||
"saveSuccess": "Delegation ceiling saved",
|
||
"title": "Delegation ceiling"
|
||
},
|
||
"deleteBlocked": {
|
||
"children": "{{count}} child agent(s) remain",
|
||
"roles": "{{count}} role(s) must be removed in the Roles tab first",
|
||
"users": "{{count}} bound account(s) remain"
|
||
},
|
||
"deleteNode": "Delete node",
|
||
"deleteNodeBlockedHint": "Remove child agents, roles, and accounts before deleting this node",
|
||
"deleteNodeBlockedPrefix": "Cannot delete yet: ",
|
||
"deleteNodeConfirm": "This action cannot be undone. Make sure the node has no children, users, or roles.",
|
||
"deleteSuccess": "Deleted agent {{name}}",
|
||
"depth": "Depth",
|
||
"detailTitle": "Node details",
|
||
"detailTabs": "Agent details",
|
||
"directoryStatus": {
|
||
"all": "All statuses",
|
||
"disabled": "Disabled only",
|
||
"enabled": "Enabled only"
|
||
},
|
||
"downlineAgentsSection": "Sub-agents",
|
||
"downlineDialogTitle": "{{name}} — sub-agents and players",
|
||
"downlineNoAgents": "No sub-agents yet",
|
||
"downlinePlayersSection": "Direct players",
|
||
"editNode": "Edit node",
|
||
"filterParent": "Parent agent",
|
||
"filterParentAll": "All subordinates",
|
||
"includeRoots": "Include root nodes",
|
||
"includeRootsHint": "Root nodes represent site boundaries and are excluded from operating agent counts by default.",
|
||
"isRoot": "Root",
|
||
"lineFilter": "Level-1 agent",
|
||
"lineProvision": {
|
||
"description": "Creates the level-1 agent, admin login, and line settings (share, credit, rebate, settlement cycle) in one step.",
|
||
"link": "Create level-1 agent",
|
||
"name": "Level-1 agent name",
|
||
"noUnboundSite": "No sites without a level-1 agent",
|
||
"openIntegrationSites": "Go to integration sites",
|
||
"password": "Initial password",
|
||
"passwordHint": "at least 6 characters",
|
||
"secretsOnce": "Integration secrets are shown once — save them now",
|
||
"siteCode": "Integration site",
|
||
"siteCodePlaceholder": "Select site",
|
||
"siteRequired": "Select an integration site",
|
||
"submit": "Create level-1 agent",
|
||
"success": "Level-1 agent created",
|
||
"title": "Create level-1 agent",
|
||
"username": "Admin login",
|
||
"walletUrl": "Wallet API URL (optional technical field)"
|
||
},
|
||
"lineUi": {
|
||
"agentCount": "{{count}} agents in this group",
|
||
"allocatedCredit": "Allocated",
|
||
"availableCredit": "Available",
|
||
"collapse": "Collapse",
|
||
"currentSite": "Site",
|
||
"directChildren": "{{count}} direct downline",
|
||
"downlineColumns": {
|
||
"downlineCount": "Downline count",
|
||
"email": "Email"
|
||
},
|
||
"downlineEmpty": "No direct downline yet. Child agents will appear here after creation.",
|
||
"downlineEmptyShort": "No direct downline yet.",
|
||
"downlineEmptyTitle": "No direct downline yet",
|
||
"editAccount": "Account & status",
|
||
"editAgent": "Edit",
|
||
"parentMeta": "Parent {{name}}",
|
||
"editCurrent": "Edit this agent",
|
||
"expand": "Expand",
|
||
"kicker": "Credit share · Agent tree",
|
||
"nextSteps": "Suggested next steps",
|
||
"noDelegatedTabs": "This agent cannot create downline agents or players; only share and credit settings apply.",
|
||
"overviewDownlineCard": "View and manage direct downline agents",
|
||
"overviewDownlineCount": "{{count}}",
|
||
"overviewDownlineHint": "{{count}} direct downline agent(s). Manage them in the Downline tab.",
|
||
"overviewPlayersHint": "View direct players and credit status",
|
||
"overviewPlayersSummary": "Player management",
|
||
"playersNoPermissionHint": "This account does not have player management permission on this node.",
|
||
"playersUnavailableHint": "This agent cannot create players. Enable “Allow create player” in the agent profile first.",
|
||
"profileFootnote": "Rebate cap {{rebate}}% · Default {{defaultRebate}}%",
|
||
"profileReadOnlyHint": "Share, credit, and rebate are configured by your upline. Contact your parent agent or the platform to request changes.",
|
||
"profileTabHint": "Maintain share, credit, rebate, and risk tags here. Use Account & status for login name and password.",
|
||
"saveProfile": "Save share & credit",
|
||
"searchPlaceholder": "Search name or login",
|
||
"selectAgent": "Select an agent to view share & credit",
|
||
"selectAgentHint": "Settlement boundaries follow the agent tree; share, credit and rebate are configured per node.",
|
||
"selfAgentOverviewHint": "Credit below is allocated by your upline. Share and rebate are maintained upstream; this account cannot view or edit them.",
|
||
"shareRebateCap": "Rebate cap {{rate}}%",
|
||
"sidebarAvailableCredit": "Available to grant {{amount}}",
|
||
"sidebarShareRate": "Share {{rate}}%",
|
||
"stepDownline": "Manage direct downline ({{count}} now)",
|
||
"stepPlayers": "Create or maintain direct players",
|
||
"stepProfile": "Configure share, credit, and rebate",
|
||
"tabDownline": "Downline",
|
||
"tabOverview": "Overview",
|
||
"tabPlayers": "Players",
|
||
"tabProfileShort": "Share & credit",
|
||
"openInTree": "Open in tree",
|
||
"createDirectPlayer": "Create direct player",
|
||
"createDownline": "Create child agent",
|
||
"editDownline": "Edit agent",
|
||
"deleteDownline": "Delete agent",
|
||
"addChildUnavailableHint": "This agent has not enabled \"Allow creating sub-agents\". Adjust the agent profile first.",
|
||
"addChildNoPermissionHint": "Your account does not have permission to create sub-agents on this node.",
|
||
"lineRootProfileReadOnlyHint": "Level-1 agent share, site credit, and rebate are configured by the platform super admin. You can grant credit to downline agents and players.",
|
||
"tabProfile": "Share & credit",
|
||
"tabProfileReadOnly": "Share & credit (read-only)",
|
||
"viewAll": "View all"
|
||
},
|
||
"listFlatHint": "All operating agents in a flat list. Use row actions to add a child under a specific agent.",
|
||
"listSearch": "Search name / code / login",
|
||
"viewModes": {
|
||
"label": "View",
|
||
"tree": "Tree",
|
||
"list": "List"
|
||
},
|
||
"listTitle": "Agents",
|
||
"loadFailed": "Failed to load agent tree",
|
||
"modelGuide": "Agent layer controls data scope and delegation ceiling. Account permissions are assigned through roles.",
|
||
"name": "Name",
|
||
"namePlaceholder": "Enter agent name",
|
||
"nameRequired": "Agent name is required",
|
||
"noAccess": "You do not have permission to manage agents. Contact an administrator.",
|
||
"pageGuide": "Manage the agent tree, agent roles, agent accounts, and delegation ceilings here. Platform accounts and platform roles stay in platform governance pages.",
|
||
"parentAgent": "Parent",
|
||
"passwordMinLength": "Password must be at least 6 characters",
|
||
"passwordOptionalHint": "Leave empty to keep unchanged, or enter a 6-character password",
|
||
"passwordPlaceholder": "Enter a 6-character password",
|
||
"passwordRequired": "Password is required",
|
||
"path": "Path",
|
||
"playersPanel": {
|
||
"allUnderSite": "Players visible on this site",
|
||
"authSource": "Auth source",
|
||
"availableToGrant": "Agent available to grant: {{amount}}",
|
||
"create": "Create player",
|
||
"createSuccessNative": "Player {{name}} created — use lottery /login",
|
||
"creditLimit": "Credit limit",
|
||
"creditLimitAvailable": "Credit limit / available",
|
||
"creditLimitExceeded": "Credit limit cannot exceed this agent’s available grant",
|
||
"creditLimitInvalid": "Credit limit must be an integer ≥ 0",
|
||
"creditListHint": "Credit line: below shows player credit limits and available credit, not main-site wallet balance.",
|
||
"externalIdHint": "Leave blank to auto-generate",
|
||
"externalIdOptional": "External ID (optional)",
|
||
"filterHint": "Filter direct players by parent agent.",
|
||
"fundingMode": "Funding mode",
|
||
"initialPassword": "Initial password",
|
||
"loginRequired": "Enter login username and initial password",
|
||
"loginUsername": "Login username",
|
||
"passwordHint": "at least 6 characters",
|
||
"passwordMinLength": "Initial password must be at least 6 characters",
|
||
"playerRef": "Player ref",
|
||
"rebateInherited": "Inherit agent default rebate",
|
||
"rebateRate": "Rebate rate (%)",
|
||
"rebateRateHint": "Enter percent, e.g. 5 = 5%",
|
||
"rebateRateInvalid": "Rebate rate must be between 0 and 100%",
|
||
"riskTags": "Risk tags",
|
||
"riskTagsPlaceholder": "Comma-separated",
|
||
"scopedTo": "Direct players: {{agent}}",
|
||
"siteCode": "Line site",
|
||
"usernameNickname": "Username / nickname",
|
||
"searchPh": "Search player account / ID",
|
||
"manageSettlement": "Process bill",
|
||
"noPendingBillsGoCenter": "No pending bills for this player. Opened settlement center.",
|
||
"billingLoadFailed": "Failed to load bills"
|
||
},
|
||
"profile": {
|
||
"availableCredit": "Available to grant {{amount}}",
|
||
"canCreateChildAgent": "Allow creating sub-agents",
|
||
"canCreatePlayer": "Allow creating players",
|
||
"canGrantExtraRebate": "Allow extra rebate",
|
||
"capabilityHint": "Takes effect on this agent’s primary account after save. If the platform Agent role included player/node management, login permissions are now tightened by these switches.",
|
||
"creditLimit": "Credit limit",
|
||
"cycleDaily": "Daily",
|
||
"cycleMonthly": "Monthly",
|
||
"cycleWeekly": "Weekly",
|
||
"defaultPlayerRebate": "Default player rebate (%)",
|
||
"loadFailed": "Failed to load share and credit settings. Close and try again.",
|
||
"loading": "Loading share and credit settings…",
|
||
"loadingBlocked": "Share and credit settings are still loading. Please wait before saving.",
|
||
"parentCaps": "Parent share {{share}}%, available to grant {{credit}}",
|
||
"rebateLimit": "Rebate ceiling (%)",
|
||
"relativeShareRate": "Share rate (% of parent)",
|
||
"relativeShareRateValue": "{{rate}}% of parent",
|
||
"actualShareRate": "Effective share {{rate}}%",
|
||
"relativeShareCapHint": "Up to 100% of parent (parent total share {{parent}}%)",
|
||
"riskTags": "Risk tags",
|
||
"riskTagsPlaceholder": "Comma-separated, e.g. overdue, high_turnover",
|
||
"saveSuccess": "Share and credit settings saved",
|
||
"section": "Share & credit",
|
||
"settlementCycle": "Settlement cycle",
|
||
"totalShareRate": "Share rate (%)",
|
||
"validation": {
|
||
"creditBelowAllocated": "Credit limit cannot be below allocated credit (minimum {{min}})",
|
||
"creditExceedsParentWithMax": "Credit limit cannot exceed {{max}}",
|
||
"creditInvalid": "Credit limit cannot be negative",
|
||
"defaultExceedsLimit": "Default player rebate cannot exceed the rebate ceiling",
|
||
"defaultExceedsLimitWithMax": "Default player rebate cannot exceed {{max}}%",
|
||
"shareExceedsParent": "Share rate cannot exceed parent (max {{max}}%)",
|
||
"rebateExceedsParent": "Rebate ceiling cannot exceed parent (max {{max}}%)",
|
||
"defaultRebateRange": "Default player rebate must be between 0 and 100%",
|
||
"rebateLimitRange": "Rebate ceiling must be between 0 and 100%",
|
||
"shareRange": "Share rate must be between 0 and 100"
|
||
}
|
||
},
|
||
"roles": {
|
||
"create": "Create role",
|
||
"createSuccess": "Created role {{name}}",
|
||
"deleteSuccess": "Deleted role {{name}}",
|
||
"groupSelectedCount": "{{selected}} / {{total}}",
|
||
"inUse": "{{count}} in use",
|
||
"noAssignablePermissions": "No permissions available to assign",
|
||
"permissionSaveSuccess": "Permissions updated",
|
||
"permissionSubsetHint": "Only permissions you hold can be assigned",
|
||
"permissions": "Permissions",
|
||
"readOnlyTemplate": "Read-only template",
|
||
"selectGroup": "Select all in group",
|
||
"selectedCount": "{{selected}} / {{total}} selected",
|
||
"slug": "Slug",
|
||
"title": "Agent roles",
|
||
"updateSuccess": "Updated role {{name}}",
|
||
"userCount": "Users"
|
||
},
|
||
"saveFailed": "Save failed",
|
||
"selectNode": "Select an agent node from the tree",
|
||
"settlementBills": {
|
||
"allPeriods": "All periods",
|
||
"clearPeriodFilter": "Show all periods",
|
||
"columns": {
|
||
"counterparty": "Counterparty",
|
||
"grossWinLoss": "Win/Loss",
|
||
"id": "ID",
|
||
"net": "Net",
|
||
"party": "Party",
|
||
"period": "Period",
|
||
"status": "Status",
|
||
"type": "Type",
|
||
"unpaid": "Unpaid"
|
||
},
|
||
"confirm": "Confirm bill",
|
||
"confirmed": "Confirmed",
|
||
"description": "Bills appear after a period is closed; latest period is selected by default.",
|
||
"detail": "Details",
|
||
"emptyNoClosed": "No closed period yet. Bills are generated after close.",
|
||
"emptyNoPeriodsAgent": "No bills yet. Your upline or platform will close periods; you do not need to enter dates.",
|
||
"emptyNoPeriodsManage": "No periods or bills yet. Use quick presets under Period management, then close the period.",
|
||
"filteredByPeriod": "Showing bills for period #{{id}} only",
|
||
"filteredByPeriodRange": "Bills for {{range}}",
|
||
"grossWinLoss": "Win/Loss (gross_win_loss)",
|
||
"paid": "Payment recorded",
|
||
"paymentAmount": "Payment amount",
|
||
"periodLabel": "Period",
|
||
"periodPlaceholder": "Select period",
|
||
"platform": "Platform",
|
||
"platformRounding": "Platform rounding",
|
||
"rebateAmount": "Rebate",
|
||
"recordPayment": "Record payment",
|
||
"shareProfit": "Share profit",
|
||
"subtreeSummary": "Subtree summary",
|
||
"title": "Agent bills",
|
||
"typeAgent": "Agent bill",
|
||
"typePlayer": "Player bill"
|
||
},
|
||
"settlementPeriods": {
|
||
"close": "Close period and generate bills",
|
||
"closeFailed": "Failed to close period",
|
||
"closed": "Period closed; bills generated",
|
||
"datesRequired": "Enter start and end dates",
|
||
"empty": "No periods yet. Choose a quick preset and open a period.",
|
||
"end": "End",
|
||
"endDate": "End date",
|
||
"hideAdvanced": "Hide custom dates",
|
||
"invalidRange": "End date cannot be before start date",
|
||
"manageHint": "Open and close periods here; bills above update automatically. Quick presets are usually enough.",
|
||
"manageTitle": "Period management",
|
||
"open": "Open period",
|
||
"openFailed": "Failed to open period",
|
||
"openHint": "Local dates ({{tz}})",
|
||
"openWithPreset": "Apply quick preset",
|
||
"opened": "Period opened",
|
||
"presetHint": "Quick period presets (recommended)",
|
||
"presetLastWeek": "Last week",
|
||
"presetThisMonth": "This month",
|
||
"presetThisWeek": "This week",
|
||
"range": "Period",
|
||
"showAdvanced": "Custom start/end dates",
|
||
"start": "Start",
|
||
"startDate": "Start date",
|
||
"status": "Status",
|
||
"statusClosed": "Closed",
|
||
"statusOpen": "Open",
|
||
"title": "Agent periods",
|
||
"viewBills": "Bills"
|
||
},
|
||
"settlementReports": {
|
||
"columns": {
|
||
"agentId": "Agent ID",
|
||
"allocated": "Allocated",
|
||
"amount": "Amount",
|
||
"available": "Available",
|
||
"billId": "Bill",
|
||
"billType": "Type",
|
||
"code": "Code",
|
||
"count": "Count",
|
||
"creditLimit": "Credit limit",
|
||
"drawNo": "Draw no.",
|
||
"frozen": "Frozen",
|
||
"gameType": "Play",
|
||
"grossWinLoss": "Win/Loss",
|
||
"name": "Name",
|
||
"overdueDays": "Overdue days",
|
||
"player": "Player",
|
||
"rebate": "Rebate",
|
||
"rebateType": "Rebate type",
|
||
"status": "Status",
|
||
"unpaid": "Unpaid",
|
||
"used": "Used"
|
||
},
|
||
"credit": {
|
||
"agents": "Agent credit",
|
||
"players": "Player credit"
|
||
},
|
||
"description": "Report set: player win/loss, agent share, rebate, credit, unpaid/overdue bills, and platform P/L.",
|
||
"footnote": "These reports use credit-line period semantics, not legacy wallet commission/rebate reports.",
|
||
"noPeriodHint": "When no specific period is selected, the last 7 days are used. Platform P/L requires a period.",
|
||
"platformPnl": {
|
||
"billNet": "Platform bill net",
|
||
"periodRequired": "Select a specific period to view platform P/L.",
|
||
"rounding": "Rounding adjustment",
|
||
"shareProfit": "Share profit (metadata)"
|
||
},
|
||
"rebate": {
|
||
"accrued": "Accrued",
|
||
"allocated": "Allocated",
|
||
"inBill": "In bill",
|
||
"settled": "Settled"
|
||
},
|
||
"summary": {
|
||
"billCount": "Bill count",
|
||
"overdueCount": "Overdue bills",
|
||
"platformRounding": "Total platform rounding",
|
||
"totalNet": "Total net",
|
||
"totalUnpaid": "Total unpaid"
|
||
},
|
||
"title": "Period reports (credit share line)",
|
||
"type": "Report type",
|
||
"types": {
|
||
"agent_share": "Agent share",
|
||
"credit": "Credit",
|
||
"draw_period": "By draw",
|
||
"overdue": "Overdue",
|
||
"platform_pnl": "Platform P/L",
|
||
"player_win_loss": "Player win/loss",
|
||
"rebate": "Rebate",
|
||
"summary": "Summary",
|
||
"unpaid_bills": "Unpaid bills"
|
||
}
|
||
},
|
||
"siteSearch": "Search site name",
|
||
"sitesListHint": "For integration keys and callbacks, go to",
|
||
"sitesListLink": "Config · Connected sites",
|
||
"status": "Status",
|
||
"subnav": {
|
||
"label": "Agent management navigation",
|
||
"noPermission": "No permission",
|
||
"operations": "Line & agent tree",
|
||
"provision": "Provision level-1 agent",
|
||
"provisionHint": "One-time onboarding; use Line & agent tree for daily work",
|
||
"settlementBills": "Periods & bills"
|
||
},
|
||
"summary": {
|
||
"currentSiteAgents": "Current site operating agents",
|
||
"currentSiteNodes": "Current site nodes",
|
||
"enabledAgents": "Enabled operating agents",
|
||
"globalAgents": "All-site operating agents",
|
||
"globalNodes": "All-site node total",
|
||
"rootNodes": "Root node count",
|
||
"visibleAgents": "Current visible operating agents",
|
||
"visibleList": "Current flat list rows"
|
||
},
|
||
"tabs": {
|
||
"accounts": "Primary account",
|
||
"delegation": "Delegation ceiling",
|
||
"overview": "Overview",
|
||
"players": "Players",
|
||
"roles": "Roles",
|
||
"subordinates": "Subordinates",
|
||
"users": "Accounts"
|
||
},
|
||
"title": "Agent management",
|
||
"treeTitle": "Agent tree",
|
||
"updateSuccess": "Updated {{name}}",
|
||
"usernamePlaceholder": "Enter login username",
|
||
"usernameRequired": "Login name is required",
|
||
"usernameInvalidCharset": "Login name may only contain letters, digits, dots (.), underscores, and hyphens",
|
||
"users": {
|
||
"create": "Create account",
|
||
"createSuccess": "Created account {{name}}",
|
||
"deleteConfirm": "This admin will no longer be able to sign in. This cannot be undone.",
|
||
"deleteSuccess": "Deleted account {{name}}",
|
||
"email": "Email",
|
||
"password": "Password",
|
||
"roleSaveSuccess": "Roles updated for {{name}}",
|
||
"roles": "Roles",
|
||
"title": "Agent accounts",
|
||
"username": "Username"
|
||
},
|
||
"viewDownline": "View sub-agents and players"
|
||
}
|