feat(api, i18n): add admin report job functionalities and enhance locale support

- Introduced new API functions for managing admin report jobs, including download and post operations.
- Updated English, Nepali, and Chinese locale files to include new messages related to report job actions and rollback confirmations.
- Enhanced user experience by providing clearer instructions and feedback in the admin interface.
- Refactored related components to integrate new functionalities and improve overall usability.
This commit is contained in:
2026-05-26 11:48:51 +08:00
parent 7fb5ec6dff
commit a76b681828
21 changed files with 1139 additions and 118 deletions

View File

@@ -64,7 +64,14 @@
"refresh": "Refresh versions",
"newDraft": "New draft",
"saveDraft": "Save draft",
"saveFailed": "Failed to save configuration"
"saveFailed": "Failed to save configuration",
"rollbackSuccess": "Cloned v{{fromVersion}} into new draft v{{version}}",
"rollbackFailed": "Rollback failed",
"rollbackDialog": {
"title": "Confirm rollback",
"description": "A new draft will be cloned from version v{{version}}. The active version will not be overwritten directly.",
"confirm": "Confirm rollback"
}
},
"wallet": {
"title": "Wallet transfer limit settings",
@@ -327,7 +334,8 @@
},
"winEnjoy": {
"label": "Apply rebate on winning tickets",
"description": "Placeholder field. It can later be aligned with risk and settlement rules and persisted."
"description": "Placeholder field. It can later be aligned with risk and settlement rules and persisted.",
"pendingNote": "Required by the product spec, but the API has no field yet. This row is informational only—you cannot change it here."
},
"effectiveTime": "Effective time (current active odds version)"
},
@@ -372,12 +380,21 @@
"actions": "Actions"
},
"occupancy": {
"title": "All number occupancy",
"description": "Placeholder view: filters and exports still need ticket-summary integration. Data below still comes from the current draft list.",
"searchLabel": "Search number",
"searchPlaceholder": "e.g. 8888",
"filterPending": "Sold-out / high-risk preset filter is pending integration",
"exportPending": "CSV export is pending integration"
"searchPlaceholder": "e.g. 8888"
},
"runtime": {
"title": "Per-draw occupancy (live)",
"description": "Loaded from the draw risk-pool API, not from the version draft above. Select a draw to see used, remaining, and sold-out state.",
"drawLabel": "Draw",
"drawPlaceholder": "Select draw",
"filterAll": "All",
"filterSoldOut": "Sold out only",
"filterHighRisk": "High usage",
"manageHint": "Use the links above for full risk operations on this draw.",
"noDraws": "No draws available; cannot load occupancy.",
"soldYes": "Yes",
"soldNo": "No"
},
"actions": {
"update": "Update",

View File

@@ -155,6 +155,7 @@
"finance": "Draw finance",
"review": "Review & publish",
"riskOccupancy": "Risk occupancy",
"riskLockLogs": "Lock logs",
"riskHot": "Hot numbers",
"riskSoldOut": "Sold-out numbers",
"riskPools": "Risk pools"

View File

@@ -10,8 +10,11 @@
"dimension": "Dimension",
"exportPending": "{{report}} {{format}} export API is not connected yet",
"exportSuccess": "Exported {{report}} ({{format}})",
"exportServerSuccess": "Job {{jobNo}} created and downloaded {{report}} ({{format}})",
"exportFailed": "Export failed",
"exportHint": "Once export APIs are connected, the current filters will generate the selected file format.",
"exportHint": "Server exports use the current filters to build a full file. Completed jobs can be downloaded again below.",
"exportServerHint": "Full export via server job (preview query not required)",
"exportClientHint": "Export current preview page (run query first)",
"validation": {
"drawNoRequired": "Please enter a draw number",
"drawNoNotFound": "Draw number «{{drawNo}}» was not found",
@@ -19,7 +22,43 @@
},
"formats": {
"csv": "CSV",
"excel": "Excel"
"excel": "Excel",
"csvServer": "Export CSV (full)",
"excelServer": "Export Excel (full)"
},
"tasks": {
"refresh": "Refresh",
"download": "Download",
"loadFailed": "Failed to load export jobs",
"downloadSuccess": "Downloaded {{jobNo}}",
"downloadFailed": "Download failed",
"columns": {
"jobNo": "Job no.",
"report": "Report",
"format": "Format",
"status": "Status",
"createdAt": "Created",
"actions": "Actions"
},
"status": {
"pending": "Pending",
"processing": "Processing",
"completed": "Completed",
"failed": "Failed"
}
},
"jobTypes": {
"draw_profit_summary": "Draw P&L",
"daily_profit_summary": "Daily P&L",
"player_win_loss": "Player win/loss",
"wallet_transfer_report": "Wallet transfers",
"wallet_txns_daily": "Wallet txns (daily)",
"transfer_orders_daily": "Transfer orders (daily)",
"hot_number_risk_report": "Hot number risk",
"play_dimension_report": "Play dimension",
"sold_out_number_report": "Sold-out numbers",
"rebate_commission_report": "Rebate / commission",
"audit_operation_report": "Admin audit"
},
"empty": "No matching reports",
"backendPending": "This report is temporarily unavailable",