refactor(risk, navigation): update risk management redirects and enhance loading states

Changed default redirects in risk management pages to point to the new risk pools section. Removed unused risk lock log components and streamlined the admin reports page with a loading state for better user experience. Added a new DocFigure component for improved documentation visuals and updated localization files to include new figure descriptions.
This commit is contained in:
2026-06-16 13:50:58 +08:00
parent b774e22352
commit a4454a54a4
57 changed files with 981 additions and 1161 deletions

View File

@@ -46,6 +46,7 @@
"overview": {
"title": "Admin operations overview",
"description": "For your organization's super admins, site operators, and bound agent staff. This guide follows the actual admin menu and includes step-by-step instructions. For wallet-mode technical integration, see the API Integration Docs.",
"figureAlt": "Admin console capabilities overview diagram",
"loginNote": "Admin console: https://lotteryadmin.tanumo.com/admin (use the operations account assigned by your organization or our team)",
"scope": "System capabilities",
"scopeItems": [
@@ -122,6 +123,7 @@
"siteSetup": {
"title": "Integration sites (super admin)",
"description": "Wallet mode requires an integration site first. Save SSO and wallet secrets and have your technical team configure them on your main-site server. Credit-line agent line provisioning also creates a site.",
"figureAlt": "Integration site configuration diagram",
"path": "Create and configure",
"pathItems": [
"Sign in at https://lotteryadmin.tanumo.com/admin → Platform management → Integration sites",
@@ -153,6 +155,7 @@
"draws": {
"title": "Draws & results",
"description": "A draw is the basic betting unit. List times are shown in local timezone; the server stores UTC. Whether the hall accepts bets is determined live; the list shows database status, which may differ slightly from the player-side countdown.",
"figureAlt": "Draw status lifecycle diagram",
"lifecycle": "Draw statuses",
"statusRows": [
["Not started", "Before start time", "Edit, delete (no bets)"],
@@ -200,6 +203,7 @@
"settlementCenter": {
"title": "Settlement center (credit line)",
"description": "Manage agent settlement periods: open → close and generate bills → confirm → record payments. Bound agents can only view and operate bills for their own line. Wallet-mode players are not part of this module.",
"figureAlt": "Dual settlement systems diagram",
"entry": "Entry & permissions",
"entryItems": [
"Agent organization → Settlement center: period list",
@@ -264,6 +268,7 @@
"agents": {
"title": "Agent hierarchy",
"description": "The agent layer controls which data you can see and credit limits for downstream players; menu permissions still come from roles. Credit-line sites must maintain the agent tree before creating players under it.",
"figureAlt": "Agent organization and settlement periods diagram",
"structure": "Organization",
"structureItems": [
"Super admin: Agent organization → Agent lines → Provision line: create independent site + root node for external agents",
@@ -305,6 +310,7 @@
"players": {
"title": "Player management",
"description": "Manage wallet-mode and credit-mode players in one place. List and detail views show different balances and ledger tabs by funding mode.",
"figureAlt": "Wallet mode vs credit mode comparison diagram",
"list": "Player list",
"listItems": [
"Daily operations → Player list",
@@ -461,6 +467,7 @@
"fundOperations": {
"title": "Fund operations guide",
"description": "Explains how funds move during betting, draw settlement, and payment in wallet mode vs credit mode. Confirm the player's funding mode first, then check the matching ledger.",
"figureAlt": "Dual settlement systems diagram",
"twoSystems": "Two parallel systems (do not confuse them)",
"twoSystemsItems": [
"Per-draw settlement (Daily operations → Settlement): calculates win/loss for the draw; wallet mode pays out here, credit mode records release/period ledger here",
@@ -544,6 +551,7 @@
"manualReview": {
"title": "Manual review & payouts",
"description": "Covers draw result review, cooling period, per-draw payout settlement batches, and related system switches. This is separate from Settlement center credit-line periods.",
"figureAlt": "Draw review and payout flow diagram",
"distinction": "Difference from credit-line period settlement",
"distinctionItems": [
"This guide: per-draw payout settlement batches (Daily operations → Settlement) — wallet mode pays out, credit mode posts draw ledger; runs every draw",

View File

@@ -1,35 +1,25 @@
{
"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.",
"createTitle": "Run reconcile scan",
"createHint": "Scans transfer orders in the selected period, compares lottery wallet ledgers, and checks main-site idempotent records when the wallet API is configured.",
"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…",
"createTask": "Start scan",
"submitting": "Scanning…",
"loadFailed": "Failed to load",
"loadItemsFailed": "Failed to load details",
"periodRequired": "Enter both reconcile start and end dates",
"periodInvalid": "Invalid date range",
"periodOrderInvalid": "End time must be later than or equal to start time",
"confirmCreateTitle": "Create reconcile job?",
"confirmCreateDescription": "Start a manual reconcile for the selected date range{{playerHint}}.",
"confirmCreateTitle": "Start reconcile scan?",
"confirmCreateDescription": "Scan transfer orders in the selected date range{{playerHint}} and generate discrepancy items.",
"confirmCreatePlayer": " for the selected player",
"confirmCreateAllPlayers": " (all players)",
"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}}.",
"createSummaryPending": "Choose a complete reconcile date range before creating a job.",
"confirmCreateAllPlayers": " for all players",
"createSuccess": "Scan finished: {{count}} issue(s) found",
"createSuccessEmpty": "Scan finished: no issues found",
"createFailed": "Scan failed",
"noCreatePermission": "Current account cannot start reconcile scans.",
"jobsTitle": "Reconcile jobs",
"jobsDesc": "Use the action on the right to open discrepancy details and paginated results.",
"refresh": "Refresh",
"jobNo": "Job no.",
"type": "Type",
@@ -41,29 +31,21 @@
"finishedAt": "Finished at",
"createdAt": "Created at",
"operate": "Action",
"view": "View",
"viewDetails": "View discrepancy details",
"detailsTitle": "Discrepancy details",
"sideARef": "Lottery ref",
"sideBRef": "Main site ref",
"differenceAmount": "Difference (cent)",
"transferNo": "Transfer no.",
"walletTxnNo": "Lottery wallet txn",
"mainSiteRef": "Main-site ref",
"mainSiteCheck": "Main-site check",
"differenceAmount": "Difference (minor)",
"itemResult": "Check result",
"diagnosis": "Issue summary",
"suggestedAction": "Suggested action",
"processingStatus": "Processing status",
"quickAccess": "Quick access",
"actions": "Actions",
"openTransferOrder": "Open transfer order",
"openWalletTxn": "Open wallet ledger",
"detectedAt": "Detected at",
"noDetails": "No details",
"playerSearch": "Player (optional)",
"playerSearchPlaceholder": "Search by player ID / username / nickname",
"playerSearchHint": "After selection, reconciliation is limited to this player in the chosen date range.",
"playerSearchEmpty": "Enter a keyword to search players.",
"playerNoResults": "No matching players",
"playerChoose": "Choose",
"playerSelected": "Selected player",
"playerSelectedShort": "Selected",
"playerClear": "Clear",
"loadingPlayers": "Searching players…",
"statusCompleted": "Completed",
@@ -78,26 +60,13 @@
"itemUnexpectedWalletTxn": "Unexpected wallet ledger",
"itemMissingRefund": "Missing refund ledger",
"itemMissingReversal": "Missing reversal ledger",
"itemMainSiteRecordMissing": "Missing on main site",
"itemMainSiteFailed": "Failed on main site",
"itemResolved": "Resolved",
"itemUnresolved": "Unresolved",
"diagnosisStaleProcessing": "The transfer order has stayed in processing for too long and the system has no final success or failure result.",
"diagnosisPendingReconcile": "The transfer order is marked for manual reconciliation and needs a human-confirmed final result.",
"diagnosisMissingWalletTxn": "The transfer order status moved forward, but the matching lottery wallet ledger entry is missing.",
"diagnosisUnexpectedWalletTxn": "The lottery side contains extra wallet ledger entries that do not match the current transfer status.",
"diagnosisMissingRefund": "The transfer-out failed, but the expected refund ledger entry was not found.",
"diagnosisMissingReversal": "The transfer order was reversed, but the matching reversal ledger entry is missing on the lottery side.",
"diagnosisMatched": "This record is already balanced and needs no further action.",
"diagnosisPendingCheck": "This record still needs manual verification.",
"actionStaleProcessing": "Check whether the main site already debited successfully, then decide whether the lottery side needs a reversal or a compensating entry.",
"actionPendingReconcile": "Open the transfer order first, confirm the main-site outcome, then decide whether to credit, reverse, or close the case.",
"actionMissingWalletTxn": "Open both the transfer order and wallet ledger to confirm whether a compensating wallet entry should be added.",
"actionUnexpectedWalletTxn": "Check for duplicate posting or an incorrect compensation entry, and reverse it if needed.",
"actionMissingRefund": "Confirm whether the main site already refunded the player, then add the lottery-side refund entry or reverse the order.",
"actionMissingReversal": "Confirm the reversal result externally, then add the matching lottery-side reversal ledger entry.",
"actionMatched": "No action needed.",
"actionPendingCheck": "Continue verification with the transfer order and wallet ledger.",
"actionResolved": "This exception has already been handled. Current transfer-order status: {{status}}. Open the transfer order if you want to verify the result.",
"transferStatusSuccess": "Successful",
"transferStatusReversed": "Reversed",
"transferStatusManual": "Case closed"
"mainSiteMatched": "Main site OK",
"mainSiteNotFound": "Not on main site",
"mainSiteFailed": "Main site failed",
"mainSiteUnavailable": "Main site unavailable",
"mainSiteSkipped": "Not checked"
}

View File

@@ -68,7 +68,11 @@
"empty": "No matching reports",
"backendPending": "This report is temporarily unavailable",
"filterPanel": "Filters",
"queryHint": "Set filters and run a query to preview and export.",
"queryHint": "Set filters and run a query to preview and export. When no period is selected, the last 30 days are used.",
"timeAxis": {
"businessDate": "Time axis: lottery business date (the draws business day).",
"recordCreatedAt": "Time axis: record creation time."
},
"query": "Query",
"querying": "Querying…",
"reset": "Reset",
@@ -283,9 +287,13 @@
"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."
},
"player_transfer": {
"title": "Player transfer report",
"summary": "Review player transfers in, transfers out, reversals, and exception handling."
"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."
},
"hot_number_risk": {
"title": "Hot number risk report",