feat: 管理端 RBAC 权限体系与员工管理
新增多角色权限控制(赛事/财务/客服管理员),支持员工 CRUD、路由菜单按权限显隐、审计日志范围过滤;登录返回角色与权限列表。玩家端赛事列表增加静默刷新避免图片闪烁。Seed 补充演示员工账号与充值相关权限。附带 RBAC/审计范围单元测试及 UAT 文档更新。 Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -27,6 +27,14 @@ const zh: Record<string, string> = {
|
||||
'login.quick_admin': '管理员',
|
||||
'login.quick_agent': '一级代理',
|
||||
'login.quick_agent2': '二级代理',
|
||||
'login.quick_match_admin': '赛事管理员',
|
||||
'login.quick_finance_admin': '财务管理员',
|
||||
'login.quick_support': '客服查询员',
|
||||
'staff.create_btn': '创建后台账号',
|
||||
'staff.col.role': '角色',
|
||||
'staff.col.last_login': '最近登录',
|
||||
'staff.dialog.create': '创建后台账号',
|
||||
'staff.dialog.edit': '编辑后台账号',
|
||||
'login.captcha_ph': '验证码',
|
||||
'login.captcha_refresh': '点击刷新',
|
||||
|
||||
@@ -50,6 +58,7 @@ const zh: Record<string, string> = {
|
||||
'nav.payment_methods': '收款方式',
|
||||
'nav.deposit_orders': '充值审核',
|
||||
'nav.deposit_manage': '充值管理',
|
||||
'nav.staff': '后台账号',
|
||||
'nav.players': '直属玩家',
|
||||
|
||||
'deposit.payment_methods_title': '收款方式管理',
|
||||
@@ -132,6 +141,10 @@ const zh: Record<string, string> = {
|
||||
'breadcrumb.match_markets': '盘口管理',
|
||||
'breadcrumb.outright_edit': '编辑优胜冠军',
|
||||
'role.admin': '系统管理员',
|
||||
'role.super_admin': '超级管理员',
|
||||
'role.match_admin': '赛事管理员',
|
||||
'role.finance_admin': '财务管理员',
|
||||
'role.support': '客服查询员',
|
||||
'role.agent': '代理账号',
|
||||
'role.tier1_agent': '一级代理',
|
||||
'role.tier2_agent': '二级代理',
|
||||
@@ -209,6 +222,8 @@ const zh: Record<string, string> = {
|
||||
'dash.user_direct': '直属',
|
||||
'dash.user_agents': '代理',
|
||||
'dash.section_matches_hint': '投注经营与赛事状态分布',
|
||||
'dash.section_match_ops_hint': '赛事状态与待办',
|
||||
'dash.trend_bet_count_caption': '近 7 日注单量趋势',
|
||||
'dash.section_players_hint': '玩家、代理与资金概况',
|
||||
'dash.kpi_match_total': '赛事总数',
|
||||
'dash.kpi_match_total_sub': '草稿 {draft} · 已发布 {published}',
|
||||
@@ -308,6 +323,14 @@ const en: Record<string, string> = {
|
||||
'login.quick_admin': 'Admin',
|
||||
'login.quick_agent': 'Tier-1 agent',
|
||||
'login.quick_agent2': 'Tier-2 agent',
|
||||
'login.quick_match_admin': 'Match admin',
|
||||
'login.quick_finance_admin': 'Finance admin',
|
||||
'login.quick_support': 'Support',
|
||||
'staff.create_btn': 'Create staff account',
|
||||
'staff.col.role': 'Role',
|
||||
'staff.col.last_login': 'Last login',
|
||||
'staff.dialog.create': 'Create staff account',
|
||||
'staff.dialog.edit': 'Edit staff account',
|
||||
'login.captcha_ph': 'Captcha',
|
||||
'login.captcha_refresh': 'Click to refresh',
|
||||
|
||||
@@ -331,6 +354,7 @@ const en: Record<string, string> = {
|
||||
'nav.payment_methods': 'Payment Methods',
|
||||
'nav.deposit_orders': 'Deposit Review',
|
||||
'nav.deposit_manage': 'Deposit Mgmt',
|
||||
'nav.staff': 'Staff accounts',
|
||||
'nav.players': 'My Players',
|
||||
'nav.subAgents': 'Tier-2 agents',
|
||||
'nav.myBets': 'Bet Search',
|
||||
@@ -413,6 +437,10 @@ const en: Record<string, string> = {
|
||||
'breadcrumb.match_markets': 'Markets',
|
||||
'breadcrumb.outright_edit': 'Edit outright',
|
||||
'role.admin': 'Administrator',
|
||||
'role.super_admin': 'Super admin',
|
||||
'role.match_admin': 'Match admin',
|
||||
'role.finance_admin': 'Finance admin',
|
||||
'role.support': 'Support',
|
||||
'role.agent': 'Agent',
|
||||
'role.tier1_agent': 'Tier-1 Agent',
|
||||
'role.tier2_agent': 'Tier-2 Agent',
|
||||
@@ -490,6 +518,8 @@ const en: Record<string, string> = {
|
||||
'dash.user_direct': 'Direct',
|
||||
'dash.user_agents': 'Agents',
|
||||
'dash.section_matches_hint': 'Betting performance and match distribution',
|
||||
'dash.section_match_ops_hint': 'Match status and pending work',
|
||||
'dash.trend_bet_count_caption': '7-day bet volume trend',
|
||||
'dash.section_players_hint': 'Players, agents, and wallet summary',
|
||||
'dash.kpi_match_total': 'Total matches',
|
||||
'dash.kpi_match_total_sub': 'Draft {draft} · Published {published}',
|
||||
@@ -589,6 +619,14 @@ const ms: Record<string, string> = {
|
||||
'login.quick_admin': 'Admin',
|
||||
'login.quick_agent': 'Ejen peringkat 1',
|
||||
'login.quick_agent2': 'Ejen peringkat 2',
|
||||
'login.quick_match_admin': 'Pentadbir perlawanan',
|
||||
'login.quick_finance_admin': 'Pentadbir kewangan',
|
||||
'login.quick_support': 'Sokongan',
|
||||
'staff.create_btn': 'Cipta akaun kakitangan',
|
||||
'staff.col.role': 'Peranan',
|
||||
'staff.col.last_login': 'Log masuk terakhir',
|
||||
'staff.dialog.create': 'Cipta akaun kakitangan',
|
||||
'staff.dialog.edit': 'Edit akaun kakitangan',
|
||||
'login.captcha_ph': 'Captcha',
|
||||
'login.captcha_refresh': 'Klik untuk muat semula',
|
||||
|
||||
@@ -612,6 +650,7 @@ const ms: Record<string, string> = {
|
||||
'nav.payment_methods': 'Kaedah Pembayaran',
|
||||
'nav.deposit_orders': 'Semakan Deposit',
|
||||
'nav.deposit_manage': 'Urus Deposit',
|
||||
'nav.staff': 'Akaun kakitangan',
|
||||
'nav.players': 'Pemain saya',
|
||||
'nav.subAgents': 'Ejen peringkat 2',
|
||||
'nav.myBets': 'Carian pertaruhan',
|
||||
@@ -694,6 +733,10 @@ const ms: Record<string, string> = {
|
||||
'breadcrumb.match_markets': 'Pasaran',
|
||||
'breadcrumb.outright_edit': 'Edit juara',
|
||||
'role.admin': 'Pentadbir',
|
||||
'role.super_admin': 'Super pentadbir',
|
||||
'role.match_admin': 'Pentadbir perlawanan',
|
||||
'role.finance_admin': 'Pentadbir kewangan',
|
||||
'role.support': 'Sokongan',
|
||||
'role.agent': 'Ejen',
|
||||
'role.tier1_agent': 'Ejen Peringkat 1',
|
||||
'role.tier2_agent': 'Ejen Peringkat 2',
|
||||
@@ -771,6 +814,8 @@ const ms: Record<string, string> = {
|
||||
'dash.user_direct': 'Terus',
|
||||
'dash.user_agents': 'Ejen',
|
||||
'dash.section_matches_hint': 'Prestasi pertaruhan dan taburan perlawanan',
|
||||
'dash.section_match_ops_hint': 'Status perlawanan dan tugasan',
|
||||
'dash.trend_bet_count_caption': 'Trend bilangan pertaruhan 7 hari',
|
||||
'dash.section_players_hint': 'Pemain, ejen, dan ringkasan dana',
|
||||
'dash.kpi_match_total': 'Jumlah perlawanan',
|
||||
'dash.kpi_match_total_sub': 'Draf {draft} · Diterbitkan {published}',
|
||||
|
||||
Reference in New Issue
Block a user