feat(admin-portal): 完整实现 admin-portal 管理端微前端

包含 src 全部实现、Dockerfile、配置文件等
This commit is contained in:
SpecialX
2026-07-10 19:09:12 +08:00
parent 02d09c47fa
commit b3511910d1
69 changed files with 11955 additions and 693 deletions

View File

@@ -0,0 +1,183 @@
/**
* 轻量 i18ncontract §1.7 命名空间admin.* / iam.error.* / bff.error.* / gateway.error.* / network.error.*
*
* 维护者ai16
* 仲裁F4 i18n key 模式 error.{{service}}.{{code_snake_case}}
*/
type MessageMap = Record<string, string>;
const messages: MessageMap = {
// 导航
"admin.nav.dashboard": "管理仪表盘",
"admin.nav.users": "用户管理",
"admin.nav.roles": "角色权限",
"admin.nav.permissions": "权限点",
"admin.nav.viewports": "视口配置",
"admin.nav.organization": "组织管理",
"admin.nav.system": "学校设置",
"admin.nav.classes": "班级管理",
"admin.nav.teachers": "教师管理",
"admin.nav.students": "学生管理",
"admin.nav.auditLogs": "审计日志",
// 通用
"admin.common.search": "搜索",
"admin.common.filter": "筛选",
"admin.common.create": "新建",
"admin.common.edit": "编辑",
"admin.common.delete": "删除",
"admin.common.save": "保存",
"admin.common.cancel": "取消",
"admin.common.confirm": "确认",
"admin.common.export": "导出",
"admin.common.actions": "操作",
"admin.common.status": "状态",
"admin.common.all": "全部",
"admin.common.loading": "加载中...",
"admin.common.empty": "暂无数据",
"admin.common.error": "加载失败",
"admin.common.retry": "重试",
"admin.common.page": "页",
"admin.common.total": "共",
"admin.common.records": "条",
"admin.common.active": "启用",
"admin.common.disabled": "禁用",
"admin.common.locked": "锁定",
"admin.common.yes": "是",
"admin.common.no": "否",
"admin.common.name": "姓名",
"admin.common.email": "邮箱",
"admin.common.role": "角色",
"admin.common.createdAt": "创建时间",
"admin.common.updatedAt": "更新时间",
"admin.common.lastLoginAt": "最后登录",
"admin.common.dataScope": "数据范围",
"admin.common.school": "学校",
"admin.common.grade": "年级",
"admin.common.class": "班级",
// 仪表盘
"admin.dashboard.title": "管理仪表盘",
"admin.dashboard.totalTeachers": "教师总数",
"admin.dashboard.totalStudents": "学生总数",
"admin.dashboard.totalClasses": "班级总数",
"admin.dashboard.totalSchools": "学校总数",
"admin.dashboard.schoolAvgScore": "全校平均分",
"admin.dashboard.activeUsersToday": "今日活跃用户",
"admin.dashboard.auditEventsToday": "今日审计事件",
"admin.dashboard.trend": "趋势",
"admin.dashboard.serviceHealth": "服务健康",
// 用户管理
"admin.users.title": "用户管理",
"admin.users.new": "新建用户",
"admin.users.edit": "编辑用户",
"admin.users.deleteConfirm": "确认删除该用户?",
"admin.users.toggleStatus": "切换状态",
"admin.users.assignRole": "分配角色",
"admin.users.password": "密码",
"admin.users.roles": "角色",
"admin.users.organization": "所属组织",
// 角色权限
"admin.roles.title": "角色权限管理",
"admin.roles.new": "新建角色",
"admin.roles.permissionMatrix": "权限矩阵",
"admin.roles.systemRole": "系统预置",
"admin.roles.userCount": "用户数",
"admin.roles.deleteConfirm": "确认删除该角色?",
"admin.roles.cannotDeleteSystem": "系统预置角色不可删除",
"admin.roles.cannotDeleteWithUsers": "角色下仍有用户,不可删除",
// 权限点
"admin.permissions.title": "权限点管理",
"admin.permissions.resource": "资源",
"admin.permissions.action": "操作",
"admin.permissions.code": "权限码",
// 视口配置
"admin.viewports.title": "视口配置",
"admin.viewports.key": "标识",
"admin.viewports.label": "标签",
"admin.viewports.route": "路由",
"admin.viewports.sortOrder": "排序",
"admin.viewports.requiredPermission": "所需权限",
"admin.viewports.scope": "作用域",
"admin.viewports.visible": "是否可见",
"admin.viewports.dragHint": "拖拽调整排序",
// 组织管理
"admin.organization.title": "组织管理",
"admin.organization.school": "学校",
"admin.organization.expand": "展开",
"admin.organization.collapse": "折叠",
// 学校设置
"admin.system.title": "学校设置",
"admin.system.schoolName": "学校名称",
"admin.system.schoolCode": "学校代码",
"admin.system.academicYear": "学年",
"admin.system.semester": "学期",
"admin.system.contactEmail": "联系邮箱",
"admin.system.contactPhone": "联系电话",
"admin.system.address": "地址",
"admin.system.timezone": "时区",
"admin.system.locale": "语言",
"admin.system.saveSuccess": "设置已保存",
// 班级管理
"admin.classes.title": "班级管理",
"admin.classes.headTeacher": "班主任",
"admin.classes.studentCount": "学生数",
// 教师管理
"admin.teachers.title": "教师管理",
"admin.teachers.subjects": "任教科目",
"admin.teachers.classCount": "班级数",
// 学生管理
"admin.students.title": "学生管理",
"admin.students.guardian": "家长",
"admin.students.guardianPhone": "家长电话",
// 审计日志
"admin.auditLogs.title": "审计日志",
"admin.auditLogs.actor": "操作人",
"admin.auditLogs.action": "操作",
"admin.auditLogs.resource": "资源",
"admin.auditLogs.resourceId": "资源ID",
"admin.auditLogs.ip": "IP地址",
"admin.auditLogs.time": "时间",
"admin.auditLogs.dateRange": "时间范围",
"admin.auditLogs.exportCsv": "导出CSV",
"admin.auditLogs.traceId": "追踪ID",
// 通知
"admin.notification.title": "通知中心",
"admin.notification.auditAlert": "审计告警",
"admin.notification.abnormalLogin": "异常登录",
"admin.notification.systemError": "系统异常",
// 退出
"admin.auth.logout": "退出登录",
"admin.auth.welcome": "Edu 管理端",
};
/**
* 翻译函数
* @param key i18n key如 "admin.nav.dashboard"
* @param params 模板参数(如 { count: 5 },替换 {{count}}
*/
export function t(
key: string,
params?: Record<string, string | number>,
): string {
let msg = messages[key] ?? key;
if (params) {
for (const [k, v] of Object.entries(params)) {
msg = msg.replace(new RegExp(`\\{\\{${k}\\}\\}`, "g"), String(v));
}
}
return msg;
}