feat(admin): account governance and user sync pages

Co-Authored-By: Claude Code <noreply@anthropic.com>
This commit is contained in:
浅念
2026-09-20 20:26:53 +08:00
parent 3681999667
commit 618d1d796c
21 changed files with 2261 additions and 1 deletions
+151
View File
@@ -230,6 +230,11 @@
"outside": {
"title": "Outside"
},
"system": {
"title": "Accounts & Sync",
"users": "Account Management",
"userSync": "User Sync"
},
"albums": {
"title": "Albums",
"manage": "Album Management",
@@ -436,6 +441,152 @@
"empty": "No photos"
}
},
"usersManage": {
"list": {
"title": "Account Management",
"loadMore": "Load more",
"noMore": "No more",
"empty": "No users",
"loadFailed": "Failed to load",
"retry": "Retry",
"selfTag": "Me",
"colAccount": "Account",
"colDisplayName": "Display Name",
"colRole": "Role",
"colSourceStatus": "Source",
"colCredentialStatus": "Credential",
"colLocalLocked": "Local Lock",
"colCreatedAt": "Created At",
"colActions": "Actions",
"locked": "Locked",
"unlocked": "Unlocked",
"actionEdit": "Edit",
"actionResetPassword": "Reset Password",
"actionActivate": "Activate",
"actionDeactivate": "Deactivate",
"actionUnlock": "Unlock"
},
"filter": {
"queryPlaceholder": "Account/name prefix",
"statusAll": "All statuses",
"search": "Search",
"reset": "Reset"
},
"role": {
"staff": "Staff",
"admin": "Admin"
},
"source": {
"local": "Local",
"active": "Active",
"disabled": "Upstream Disabled"
},
"credential": {
"active": "Active",
"pending": "Pending"
},
"bucket": {
"active": "Active",
"pending": "Pending",
"disabled": "Upstream Disabled",
"locked": "Locally Locked"
},
"edit": {
"title": "Edit account: {account}",
"displayNamePlaceholder": "Display name (1-128 chars)",
"lockedHint": "Locking equals deactivation: revokes all sessions of this user; independent of upstream status",
"selfGuardHint": "You cannot change your own role or lock yourself (server rejects likewise)",
"noChanges": "No changes",
"submit": "Save",
"success": "Saved"
},
"reset": {
"title": "Reset password: {account}",
"revokeHint": "All existing sessions of this user will be revoked immediately",
"modeLabel": "Mode",
"modeGenerate": "Generate random password",
"modeCustom": "Specify password",
"customLabel": "New password",
"customPlaceholder": "At least 8 characters",
"onceWarning": "Shown only once — copy and hand it over to the user",
"copy": "Copy",
"copied": "Copied to clipboard",
"submit": "Reset",
"handedOver": "Handed over",
"errors": {
"required": "Please enter a new password",
"length": "Password must be 8-128 characters"
}
},
"confirm": {
"activateBody": "Activate user {account}? An initial password must be issued via \"Reset Password\" before login",
"deactivateBody": "Deactivate user {account}? All sessions will be revoked (existing tokens fail immediately)",
"unlockBody": "Unlock {account}? Upstream disabled status is not affected"
},
"toast": {
"activated": "Activated (reset password to issue initial credentials)",
"deactivated": "Deactivated and all sessions revoked",
"unlocked": "Local lock released"
}
},
"userSync": {
"status": {
"title": "User Sync Status",
"state": "Engine state",
"lastRunAt": "Last run",
"lastSuccessAt": "Last success",
"sourceVersion": "Watermark",
"noRuns": "Sync has never run",
"trigger": "Sync Now",
"triggerAccepted": "Accepted, syncing…",
"runFinished": "Sync finished ({state})",
"runFailed": "Sync failed; check run history",
"waitFailed": "Timed out or failed waiting for the result; refresh status",
"loadFailed": "Failed to load status",
"retry": "Retry"
},
"state": {
"idle": "Idle",
"running": "Running",
"success": "Success",
"partial": "Partial",
"failed": "Failed"
},
"trigger": {
"cron": "Cron",
"manual": "Manual"
},
"counts": {
"added": "Added",
"updated": "Updated",
"disabled": "Disabled",
"failed": "Failed"
},
"runs": {
"title": "Run History (click a row for failures)",
"loadMore": "Load more",
"noMore": "No more",
"empty": "No runs yet",
"loadFailed": "Failed to load",
"retry": "Retry",
"colTrigger": "Trigger",
"colState": "State",
"colCounts": "Counts",
"colStartedAt": "Started At",
"colFinishedAt": "Finished At",
"colError": "Error"
},
"errors": {
"title": "Failures (run {runId})",
"loadFailed": "Failed to load",
"retry": "Retry",
"empty": "No failures in this run",
"colExternalId": "External User",
"colCode": "Code",
"colDetail": "Detail",
"colCreatedAt": "Recorded At"
}
},
"apiMsg": {
"AUTH_INVALID_CREDENTIALS": "Invalid account or password",
"AUTH_RATE_LIMITED": "Too many failed login attempts; try again later",
+151
View File
@@ -230,6 +230,11 @@
"outside": {
"title": "内嵌页面"
},
"system": {
"title": "账号与同步",
"users": "账号管理",
"userSync": "用户同步"
},
"albums": {
"title": "相册管理",
"manage": "相册管理",
@@ -436,6 +441,152 @@
"empty": "暂无照片"
}
},
"usersManage": {
"list": {
"title": "账号管理",
"loadMore": "加载更多",
"noMore": "没有更多了",
"empty": "暂无用户",
"loadFailed": "加载失败",
"retry": "重试",
"selfTag": "我",
"colAccount": "账号",
"colDisplayName": "展示姓名",
"colRole": "角色",
"colSourceStatus": "来源状态",
"colCredentialStatus": "凭据状态",
"colLocalLocked": "本地锁定",
"colCreatedAt": "创建时间",
"colActions": "操作",
"locked": "已锁定",
"unlocked": "未锁定",
"actionEdit": "编辑",
"actionResetPassword": "重置密码",
"actionActivate": "激活",
"actionDeactivate": "停用",
"actionUnlock": "解锁"
},
"filter": {
"queryPlaceholder": "账号/姓名前缀",
"statusAll": "全部状态",
"search": "查询",
"reset": "重置"
},
"role": {
"staff": "员工",
"admin": "管理员"
},
"source": {
"local": "本地",
"active": "正常",
"disabled": "上游停用"
},
"credential": {
"active": "已激活",
"pending": "待激活"
},
"bucket": {
"active": "正常",
"pending": "待激活",
"disabled": "上游停用",
"locked": "本地锁定"
},
"edit": {
"title": "编辑账号:{account}",
"displayNamePlaceholder": "展示姓名(1-128 字符)",
"lockedHint": "锁定即停用:撤销该用户全部会话;与上游状态独立",
"selfGuardHint": "不能修改自己的角色或锁定自己(服务端同口径拒绝)",
"noChanges": "没有变更",
"submit": "保存",
"success": "已保存"
},
"reset": {
"title": "重置密码:{account}",
"revokeHint": "重置后该用户全部既有会话立即失效",
"modeLabel": "重置方式",
"modeGenerate": "生成随机密码",
"modeCustom": "指定新密码",
"customLabel": "新密码",
"customPlaceholder": "至少 8 位",
"onceWarning": "新密码仅此一次展示,请复制转交给用户",
"copy": "复制",
"copied": "已复制到剪贴板",
"submit": "重置",
"handedOver": "我已转交",
"errors": {
"required": "请输入新密码",
"length": "密码长度须为 8-128 位"
}
},
"confirm": {
"activateBody": "激活用户 {account}?激活后需经「重置密码」出具初始凭据方可登录",
"deactivateBody": "停用用户 {account}?其全部会话将被撤销(既有令牌即刻失效)",
"unlockBody": "解除 {account} 的本地锁定?上游停用状态不受影响"
},
"toast": {
"activated": "已激活(待重置密码出初始凭据)",
"deactivated": "已停用并撤销全部会话",
"unlocked": "已解除本地锁定"
}
},
"userSync": {
"status": {
"title": "用户同步状态",
"state": "引擎状态",
"lastRunAt": "最近批次",
"lastSuccessAt": "最近成功",
"sourceVersion": "源水位",
"noRuns": "从未运行过同步",
"trigger": "手动补拉",
"triggerAccepted": "已受理,正在同步…",
"runFinished": "同步完成({state})",
"runFailed": "同步失败,请查看运行历史",
"waitFailed": "等待同步结果超时或出错,请刷新状态",
"loadFailed": "状态加载失败",
"retry": "重试"
},
"state": {
"idle": "空闲",
"running": "同步中",
"success": "成功",
"partial": "部分成功",
"failed": "失败"
},
"trigger": {
"cron": "定时",
"manual": "手动"
},
"counts": {
"added": "新增",
"updated": "更新",
"disabled": "停用",
"failed": "失败"
},
"runs": {
"title": "运行历史(点击行查看失败明细)",
"loadMore": "加载更多",
"noMore": "没有更多了",
"empty": "暂无运行记录",
"loadFailed": "加载失败",
"retry": "重试",
"colTrigger": "触发",
"colState": "状态",
"colCounts": "计数",
"colStartedAt": "开始时间",
"colFinishedAt": "结束时间",
"colError": "错误摘要"
},
"errors": {
"title": "失败明细(批次 {runId})",
"loadFailed": "加载失败",
"retry": "重试",
"empty": "该批次无失败记录",
"colExternalId": "上游用户",
"colCode": "分类码",
"colDetail": "详情",
"colCreatedAt": "记录时间"
}
},
"apiMsg": {
"AUTH_INVALID_CREDENTIALS": "账号或密码错误",
"AUTH_RATE_LIMITED": "登录失败次数过多,请稍后再试",