feat(admin-portal): 完整实现 admin-portal 管理端微前端
包含 src 全部实现、Dockerfile、配置文件等
This commit is contained in:
906
apps/admin-portal/src/mocks/fixtures.ts
Normal file
906
apps/admin-portal/src/mocks/fixtures.ts
Normal file
@@ -0,0 +1,906 @@
|
||||
/**
|
||||
* Mock 数据库(开发期 fixtures)
|
||||
*
|
||||
* 仲裁 ARB-004 §4:MSW 拦截所有 GraphQL/HTTP 请求返回 mock 数据
|
||||
* 所有数据符合 src/types/view-models.ts 类型定义
|
||||
*/
|
||||
import type {
|
||||
UserViewModel,
|
||||
RoleViewModel,
|
||||
PermissionViewModel,
|
||||
ViewportConfigViewModel,
|
||||
OrganizationNode,
|
||||
AdminClassViewModel,
|
||||
AdminTeacherViewModel,
|
||||
AdminStudentViewModel,
|
||||
AuditLogViewModel,
|
||||
AdminDashboardViewModel,
|
||||
SystemSettingsViewModel,
|
||||
CurrentUser,
|
||||
} from "@/types/view-models";
|
||||
|
||||
export const mockCurrentUser: CurrentUser = {
|
||||
id: "u-admin-001",
|
||||
email: "admin@edu.test",
|
||||
name: "系统管理员",
|
||||
roles: ["system_admin"],
|
||||
permissions: [
|
||||
"ADMIN_DASHBOARD_VIEW",
|
||||
"ADMIN_SYSTEM_MANAGE",
|
||||
"ADMIN_AUDIT_READ",
|
||||
"ADMIN_CLASS_READ",
|
||||
"ADMIN_CLASS_MANAGE",
|
||||
"ADMIN_TEACHER_READ",
|
||||
"ADMIN_TEACHER_MANAGE",
|
||||
"ADMIN_STUDENT_READ",
|
||||
"ADMIN_STUDENT_MANAGE",
|
||||
"ADMIN_ORG_MANAGE",
|
||||
"ADMIN_SCHOOL_READ",
|
||||
"ADMIN_SCHOOL_MANAGE",
|
||||
"ADMIN_MONITORING_VIEW",
|
||||
"IAM_USER_READ",
|
||||
"IAM_USER_CREATE",
|
||||
"IAM_USER_UPDATE",
|
||||
"IAM_USER_DELETE",
|
||||
"IAM_ROLE_READ",
|
||||
"IAM_ROLE_CREATE",
|
||||
"IAM_ROLE_UPDATE",
|
||||
"IAM_ROLE_DELETE",
|
||||
"IAM_PERMISSION_READ",
|
||||
"IAM_VIEWPORT_READ",
|
||||
"IAM_VIEWPORT_UPDATE",
|
||||
],
|
||||
dataScope: "ALL",
|
||||
schoolId: null,
|
||||
schoolName: "Edu 实验学校",
|
||||
};
|
||||
|
||||
export const mockPermissions: PermissionViewModel[] = [
|
||||
{
|
||||
id: "p-001",
|
||||
code: "ADMIN_DASHBOARD_VIEW",
|
||||
name: "仪表盘查看",
|
||||
description: "查看管理仪表盘",
|
||||
resource: "admin.dashboard",
|
||||
action: "view",
|
||||
isSystem: true,
|
||||
},
|
||||
{
|
||||
id: "p-002",
|
||||
code: "ADMIN_SYSTEM_MANAGE",
|
||||
name: "系统设置",
|
||||
description: "管理系统设置",
|
||||
resource: "admin.system",
|
||||
action: "manage",
|
||||
isSystem: true,
|
||||
},
|
||||
{
|
||||
id: "p-003",
|
||||
code: "ADMIN_AUDIT_READ",
|
||||
name: "审计日志查看",
|
||||
description: "查看审计日志",
|
||||
resource: "admin.audit",
|
||||
action: "read",
|
||||
isSystem: true,
|
||||
},
|
||||
{
|
||||
id: "p-004",
|
||||
code: "ADMIN_CLASS_MANAGE",
|
||||
name: "班级管理",
|
||||
description: "管理班级",
|
||||
resource: "admin.class",
|
||||
action: "manage",
|
||||
isSystem: true,
|
||||
},
|
||||
{
|
||||
id: "p-005",
|
||||
code: "ADMIN_CLASS_READ",
|
||||
name: "班级查看",
|
||||
description: "查看班级",
|
||||
resource: "admin.class",
|
||||
action: "read",
|
||||
isSystem: true,
|
||||
},
|
||||
{
|
||||
id: "p-006",
|
||||
code: "ADMIN_TEACHER_MANAGE",
|
||||
name: "教师管理",
|
||||
description: "管理教师",
|
||||
resource: "admin.teacher",
|
||||
action: "manage",
|
||||
isSystem: true,
|
||||
},
|
||||
{
|
||||
id: "p-007",
|
||||
code: "ADMIN_TEACHER_READ",
|
||||
name: "教师查看",
|
||||
description: "查看教师",
|
||||
resource: "admin.teacher",
|
||||
action: "read",
|
||||
isSystem: true,
|
||||
},
|
||||
{
|
||||
id: "p-008",
|
||||
code: "ADMIN_STUDENT_MANAGE",
|
||||
name: "学生管理",
|
||||
description: "管理学生",
|
||||
resource: "admin.student",
|
||||
action: "manage",
|
||||
isSystem: true,
|
||||
},
|
||||
{
|
||||
id: "p-009",
|
||||
code: "ADMIN_STUDENT_READ",
|
||||
name: "学生查看",
|
||||
description: "查看学生",
|
||||
resource: "admin.student",
|
||||
action: "read",
|
||||
isSystem: true,
|
||||
},
|
||||
{
|
||||
id: "p-010",
|
||||
code: "ADMIN_ORG_MANAGE",
|
||||
name: "组织管理",
|
||||
description: "管理组织架构",
|
||||
resource: "admin.org",
|
||||
action: "manage",
|
||||
isSystem: true,
|
||||
},
|
||||
{
|
||||
id: "p-011",
|
||||
code: "ADMIN_SCHOOL_MANAGE",
|
||||
name: "学校管理",
|
||||
description: "管理学校",
|
||||
resource: "admin.school",
|
||||
action: "manage",
|
||||
isSystem: true,
|
||||
},
|
||||
{
|
||||
id: "p-012",
|
||||
code: "ADMIN_SCHOOL_READ",
|
||||
name: "学校查看",
|
||||
description: "查看学校",
|
||||
resource: "admin.school",
|
||||
action: "read",
|
||||
isSystem: true,
|
||||
},
|
||||
{
|
||||
id: "p-013",
|
||||
code: "ADMIN_MONITORING_VIEW",
|
||||
name: "监控查看",
|
||||
description: "查看系统监控",
|
||||
resource: "admin.monitoring",
|
||||
action: "view",
|
||||
isSystem: true,
|
||||
},
|
||||
{
|
||||
id: "p-101",
|
||||
code: "IAM_USER_READ",
|
||||
name: "用户查看",
|
||||
description: "查看用户",
|
||||
resource: "iam.user",
|
||||
action: "read",
|
||||
isSystem: true,
|
||||
},
|
||||
{
|
||||
id: "p-102",
|
||||
code: "IAM_USER_CREATE",
|
||||
name: "用户创建",
|
||||
description: "创建用户",
|
||||
resource: "iam.user",
|
||||
action: "create",
|
||||
isSystem: true,
|
||||
},
|
||||
{
|
||||
id: "p-103",
|
||||
code: "IAM_USER_UPDATE",
|
||||
name: "用户更新",
|
||||
description: "更新用户",
|
||||
resource: "iam.user",
|
||||
action: "update",
|
||||
isSystem: true,
|
||||
},
|
||||
{
|
||||
id: "p-104",
|
||||
code: "IAM_USER_DELETE",
|
||||
name: "用户删除",
|
||||
description: "删除用户",
|
||||
resource: "iam.user",
|
||||
action: "delete",
|
||||
isSystem: true,
|
||||
},
|
||||
{
|
||||
id: "p-105",
|
||||
code: "IAM_ROLE_READ",
|
||||
name: "角色查看",
|
||||
description: "查看角色",
|
||||
resource: "iam.role",
|
||||
action: "read",
|
||||
isSystem: true,
|
||||
},
|
||||
{
|
||||
id: "p-106",
|
||||
code: "IAM_ROLE_CREATE",
|
||||
name: "角色创建",
|
||||
description: "创建角色",
|
||||
resource: "iam.role",
|
||||
action: "create",
|
||||
isSystem: true,
|
||||
},
|
||||
{
|
||||
id: "p-107",
|
||||
code: "IAM_ROLE_UPDATE",
|
||||
name: "角色更新",
|
||||
description: "更新角色",
|
||||
resource: "iam.role",
|
||||
action: "update",
|
||||
isSystem: true,
|
||||
},
|
||||
{
|
||||
id: "p-108",
|
||||
code: "IAM_ROLE_DELETE",
|
||||
name: "角色删除",
|
||||
description: "删除角色",
|
||||
resource: "iam.role",
|
||||
action: "delete",
|
||||
isSystem: true,
|
||||
},
|
||||
{
|
||||
id: "p-109",
|
||||
code: "IAM_PERMISSION_READ",
|
||||
name: "权限查看",
|
||||
description: "查看权限点",
|
||||
resource: "iam.permission",
|
||||
action: "read",
|
||||
isSystem: true,
|
||||
},
|
||||
{
|
||||
id: "p-110",
|
||||
code: "IAM_VIEWPORT_READ",
|
||||
name: "视口查看",
|
||||
description: "查看视口",
|
||||
resource: "iam.viewport",
|
||||
action: "read",
|
||||
isSystem: true,
|
||||
},
|
||||
{
|
||||
id: "p-111",
|
||||
code: "IAM_VIEWPORT_UPDATE",
|
||||
name: "视口更新",
|
||||
description: "更新视口",
|
||||
resource: "iam.viewport",
|
||||
action: "update",
|
||||
isSystem: true,
|
||||
},
|
||||
];
|
||||
|
||||
export const mockRoles: RoleViewModel[] = [
|
||||
{
|
||||
id: "r-001",
|
||||
name: "系统管理员",
|
||||
code: "system_admin",
|
||||
description: "拥有所有权限",
|
||||
permissions: mockPermissions,
|
||||
userCount: 2,
|
||||
dataScope: "ALL",
|
||||
isSystem: true,
|
||||
createdAt: 1704067200000,
|
||||
updatedAt: 1706745600000,
|
||||
},
|
||||
{
|
||||
id: "r-002",
|
||||
name: "学校管理员",
|
||||
code: "school_admin",
|
||||
description: "管理本校资源",
|
||||
permissions: mockPermissions.filter((p) =>
|
||||
[
|
||||
"ADMIN_DASHBOARD_VIEW",
|
||||
"ADMIN_CLASS_MANAGE",
|
||||
"ADMIN_TEACHER_READ",
|
||||
"ADMIN_STUDENT_READ",
|
||||
"ADMIN_ORG_MANAGE",
|
||||
"ADMIN_SCHOOL_READ",
|
||||
"ADMIN_AUDIT_READ",
|
||||
].includes(p.code),
|
||||
),
|
||||
userCount: 5,
|
||||
dataScope: "SCHOOL",
|
||||
isSystem: true,
|
||||
createdAt: 1704067200000,
|
||||
updatedAt: 1706745600000,
|
||||
},
|
||||
{
|
||||
id: "r-003",
|
||||
name: "年级组长",
|
||||
code: "grade_leader",
|
||||
description: "管理本年级",
|
||||
permissions: mockPermissions.filter((p) =>
|
||||
[
|
||||
"ADMIN_DASHBOARD_VIEW",
|
||||
"ADMIN_CLASS_READ",
|
||||
"ADMIN_TEACHER_READ",
|
||||
"ADMIN_STUDENT_READ",
|
||||
].includes(p.code),
|
||||
),
|
||||
userCount: 8,
|
||||
dataScope: "GRADE",
|
||||
isSystem: false,
|
||||
createdAt: 1704153600000,
|
||||
updatedAt: 1706832000000,
|
||||
},
|
||||
{
|
||||
id: "r-004",
|
||||
name: "班主任",
|
||||
code: "head_teacher",
|
||||
description: "管理本班级",
|
||||
permissions: mockPermissions.filter((p) =>
|
||||
["ADMIN_DASHBOARD_VIEW", "ADMIN_STUDENT_READ"].includes(p.code),
|
||||
),
|
||||
userCount: 24,
|
||||
dataScope: "CLASS",
|
||||
isSystem: false,
|
||||
createdAt: 1704240000000,
|
||||
updatedAt: 1706918400000,
|
||||
},
|
||||
];
|
||||
|
||||
export const mockUsers: UserViewModel[] = [
|
||||
{
|
||||
id: "u-001",
|
||||
email: "admin@edu.test",
|
||||
name: "系统管理员",
|
||||
roles: [mockRoles[0]!],
|
||||
status: "active",
|
||||
dataScope: "ALL",
|
||||
organizationId: null,
|
||||
schoolName: "Edu 实验学校",
|
||||
lastLoginAt: 1706918400000,
|
||||
createdAt: 1704067200000,
|
||||
updatedAt: 1706745600000,
|
||||
},
|
||||
{
|
||||
id: "u-002",
|
||||
email: "principal@edu.test",
|
||||
name: "张校长",
|
||||
roles: [mockRoles[1]!],
|
||||
status: "active",
|
||||
dataScope: "SCHOOL",
|
||||
organizationId: "org-school-001",
|
||||
schoolName: "Edu 实验学校",
|
||||
lastLoginAt: 1706832000000,
|
||||
createdAt: 1704153600000,
|
||||
updatedAt: 1706832000000,
|
||||
},
|
||||
{
|
||||
id: "u-003",
|
||||
email: "gradeleader@edu.test",
|
||||
name: "李组长",
|
||||
roles: [mockRoles[2]!],
|
||||
status: "active",
|
||||
dataScope: "GRADE",
|
||||
organizationId: "org-grade-001",
|
||||
schoolName: "Edu 实验学校",
|
||||
lastLoginAt: 1706745600000,
|
||||
createdAt: 1704240000000,
|
||||
updatedAt: 1706745600000,
|
||||
},
|
||||
{
|
||||
id: "u-004",
|
||||
email: "teacher1@edu.test",
|
||||
name: "王老师",
|
||||
roles: [mockRoles[3]!],
|
||||
status: "active",
|
||||
dataScope: "CLASS",
|
||||
organizationId: "org-class-001",
|
||||
schoolName: "Edu 实验学校",
|
||||
lastLoginAt: 1706688000000,
|
||||
createdAt: 1704326400000,
|
||||
updatedAt: 1706688000000,
|
||||
},
|
||||
{
|
||||
id: "u-005",
|
||||
email: "teacher2@edu.test",
|
||||
name: "赵老师",
|
||||
roles: [mockRoles[3]!],
|
||||
status: "disabled",
|
||||
dataScope: "CLASS",
|
||||
organizationId: "org-class-002",
|
||||
schoolName: "Edu 实验学校",
|
||||
lastLoginAt: 1704326400000,
|
||||
createdAt: 1704412800000,
|
||||
updatedAt: 1706601600000,
|
||||
},
|
||||
{
|
||||
id: "u-006",
|
||||
email: "teacher3@edu.test",
|
||||
name: "钱老师",
|
||||
roles: [mockRoles[2]!, mockRoles[3]!],
|
||||
status: "locked",
|
||||
dataScope: "GRADE",
|
||||
organizationId: "org-grade-002",
|
||||
schoolName: "Edu 实验学校",
|
||||
lastLoginAt: 1706515200000,
|
||||
createdAt: 1704499200000,
|
||||
updatedAt: 1706515200000,
|
||||
},
|
||||
];
|
||||
|
||||
export const mockViewports: ViewportConfigViewModel[] = [
|
||||
{
|
||||
id: "v-001",
|
||||
key: "dashboard",
|
||||
label: "工作台",
|
||||
route: "/dashboard",
|
||||
icon: "home",
|
||||
sortOrder: 1,
|
||||
requiredPermission: null,
|
||||
scope: "teacher",
|
||||
isVisible: true,
|
||||
},
|
||||
{
|
||||
id: "v-002",
|
||||
key: "classes",
|
||||
label: "我的班级",
|
||||
route: "/classes",
|
||||
icon: "users",
|
||||
sortOrder: 2,
|
||||
requiredPermission: "TEACHER_CLASS_READ",
|
||||
scope: "teacher",
|
||||
isVisible: true,
|
||||
},
|
||||
{
|
||||
id: "v-003",
|
||||
key: "exams",
|
||||
label: "考试管理",
|
||||
route: "/exams",
|
||||
icon: "file-text",
|
||||
sortOrder: 3,
|
||||
requiredPermission: "TEACHER_EXAM_READ",
|
||||
scope: "teacher",
|
||||
isVisible: true,
|
||||
},
|
||||
{
|
||||
id: "v-004",
|
||||
key: "homework",
|
||||
label: "作业管理",
|
||||
route: "/homework",
|
||||
icon: "book",
|
||||
sortOrder: 4,
|
||||
requiredPermission: "TEACHER_HOMEWORK_READ",
|
||||
scope: "teacher",
|
||||
isVisible: true,
|
||||
},
|
||||
{
|
||||
id: "v-005",
|
||||
key: "students",
|
||||
label: "学生中心",
|
||||
route: "/students",
|
||||
icon: "user",
|
||||
sortOrder: 5,
|
||||
requiredPermission: "STUDENT_READ",
|
||||
scope: "student",
|
||||
isVisible: true,
|
||||
},
|
||||
{
|
||||
id: "v-006",
|
||||
key: "parent",
|
||||
label: "家长视口",
|
||||
route: "/parent",
|
||||
icon: "heart",
|
||||
sortOrder: 6,
|
||||
requiredPermission: "PARENT_VIEW",
|
||||
scope: "parent",
|
||||
isVisible: true,
|
||||
},
|
||||
{
|
||||
id: "v-007",
|
||||
key: "admin",
|
||||
label: "管理端",
|
||||
route: "/admin",
|
||||
icon: "settings",
|
||||
sortOrder: 7,
|
||||
requiredPermission: "ADMIN_DASHBOARD_VIEW",
|
||||
scope: "admin",
|
||||
isVisible: true,
|
||||
},
|
||||
];
|
||||
|
||||
export const mockOrganization: OrganizationNode[] = [
|
||||
{
|
||||
id: "org-school-001",
|
||||
name: "Edu 实验学校",
|
||||
type: "school",
|
||||
parentId: null,
|
||||
childrenCount: 3,
|
||||
sortOrder: 1,
|
||||
},
|
||||
{
|
||||
id: "org-grade-001",
|
||||
name: "一年级",
|
||||
type: "grade",
|
||||
parentId: "org-school-001",
|
||||
childrenCount: 4,
|
||||
sortOrder: 1,
|
||||
},
|
||||
{
|
||||
id: "org-grade-002",
|
||||
name: "二年级",
|
||||
type: "grade",
|
||||
parentId: "org-school-001",
|
||||
childrenCount: 4,
|
||||
sortOrder: 2,
|
||||
},
|
||||
{
|
||||
id: "org-grade-003",
|
||||
name: "三年级",
|
||||
type: "grade",
|
||||
parentId: "org-school-001",
|
||||
childrenCount: 3,
|
||||
sortOrder: 3,
|
||||
},
|
||||
{
|
||||
id: "org-class-001",
|
||||
name: "一年级一班",
|
||||
type: "class",
|
||||
parentId: "org-grade-001",
|
||||
childrenCount: 0,
|
||||
sortOrder: 1,
|
||||
},
|
||||
{
|
||||
id: "org-class-002",
|
||||
name: "一年级二班",
|
||||
type: "class",
|
||||
parentId: "org-grade-001",
|
||||
childrenCount: 0,
|
||||
sortOrder: 2,
|
||||
},
|
||||
{
|
||||
id: "org-class-003",
|
||||
name: "一年级三班",
|
||||
type: "class",
|
||||
parentId: "org-grade-001",
|
||||
childrenCount: 0,
|
||||
sortOrder: 3,
|
||||
},
|
||||
{
|
||||
id: "org-class-004",
|
||||
name: "一年级四班",
|
||||
type: "class",
|
||||
parentId: "org-grade-001",
|
||||
childrenCount: 0,
|
||||
sortOrder: 4,
|
||||
},
|
||||
{
|
||||
id: "org-class-005",
|
||||
name: "二年级一班",
|
||||
type: "class",
|
||||
parentId: "org-grade-002",
|
||||
childrenCount: 0,
|
||||
sortOrder: 1,
|
||||
},
|
||||
{
|
||||
id: "org-class-006",
|
||||
name: "二年级二班",
|
||||
type: "class",
|
||||
parentId: "org-grade-002",
|
||||
childrenCount: 0,
|
||||
sortOrder: 2,
|
||||
},
|
||||
{
|
||||
id: "org-class-007",
|
||||
name: "二年级三班",
|
||||
type: "class",
|
||||
parentId: "org-grade-002",
|
||||
childrenCount: 0,
|
||||
sortOrder: 3,
|
||||
},
|
||||
{
|
||||
id: "org-class-008",
|
||||
name: "二年级四班",
|
||||
type: "class",
|
||||
parentId: "org-grade-002",
|
||||
childrenCount: 0,
|
||||
sortOrder: 4,
|
||||
},
|
||||
];
|
||||
|
||||
export const mockClasses: AdminClassViewModel[] = [
|
||||
{
|
||||
id: "c-001",
|
||||
name: "一年级一班",
|
||||
gradeName: "一年级",
|
||||
schoolName: "Edu 实验学校",
|
||||
headTeacherName: "王老师",
|
||||
studentCount: 36,
|
||||
createdAt: 1704067200000,
|
||||
},
|
||||
{
|
||||
id: "c-002",
|
||||
name: "一年级二班",
|
||||
gradeName: "一年级",
|
||||
schoolName: "Edu 实验学校",
|
||||
headTeacherName: "赵老师",
|
||||
studentCount: 35,
|
||||
createdAt: 1704067200000,
|
||||
},
|
||||
{
|
||||
id: "c-003",
|
||||
name: "一年级三班",
|
||||
gradeName: "一年级",
|
||||
schoolName: "Edu 实验学校",
|
||||
headTeacherName: "钱老师",
|
||||
studentCount: 34,
|
||||
createdAt: 1704067200000,
|
||||
},
|
||||
{
|
||||
id: "c-004",
|
||||
name: "二年级一班",
|
||||
gradeName: "二年级",
|
||||
schoolName: "Edu 实验学校",
|
||||
headTeacherName: "孙老师",
|
||||
studentCount: 38,
|
||||
createdAt: 1704067200000,
|
||||
},
|
||||
{
|
||||
id: "c-005",
|
||||
name: "二年级二班",
|
||||
gradeName: "二年级",
|
||||
schoolName: "Edu 实验学校",
|
||||
headTeacherName: "周老师",
|
||||
studentCount: 37,
|
||||
createdAt: 1704067200000,
|
||||
},
|
||||
{
|
||||
id: "c-006",
|
||||
name: "三年级一班",
|
||||
gradeName: "三年级",
|
||||
schoolName: "Edu 实验学校",
|
||||
headTeacherName: "吴老师",
|
||||
studentCount: 33,
|
||||
createdAt: 1704067200000,
|
||||
},
|
||||
];
|
||||
|
||||
export const mockTeachers: AdminTeacherViewModel[] = [
|
||||
{
|
||||
id: "t-001",
|
||||
email: "teacher1@edu.test",
|
||||
name: "王老师",
|
||||
schoolName: "Edu 实验学校",
|
||||
subjects: ["语文", "阅读"],
|
||||
classCount: 1,
|
||||
status: "active",
|
||||
lastLoginAt: 1706688000000,
|
||||
},
|
||||
{
|
||||
id: "t-002",
|
||||
email: "teacher2@edu.test",
|
||||
name: "赵老师",
|
||||
schoolName: "Edu 实验学校",
|
||||
subjects: ["数学"],
|
||||
classCount: 1,
|
||||
status: "disabled",
|
||||
lastLoginAt: 1704326400000,
|
||||
},
|
||||
{
|
||||
id: "t-003",
|
||||
email: "teacher3@edu.test",
|
||||
name: "钱老师",
|
||||
schoolName: "Edu 实验学校",
|
||||
subjects: ["英语"],
|
||||
classCount: 2,
|
||||
status: "locked",
|
||||
lastLoginAt: 1706515200000,
|
||||
},
|
||||
{
|
||||
id: "t-004",
|
||||
email: "teacher4@edu.test",
|
||||
name: "孙老师",
|
||||
schoolName: "Edu 实验学校",
|
||||
subjects: ["物理", "科学"],
|
||||
classCount: 1,
|
||||
status: "active",
|
||||
lastLoginAt: 1706601600000,
|
||||
},
|
||||
{
|
||||
id: "t-005",
|
||||
email: "teacher5@edu.test",
|
||||
name: "周老师",
|
||||
schoolName: "Edu 实验学校",
|
||||
subjects: ["化学"],
|
||||
classCount: 1,
|
||||
status: "active",
|
||||
lastLoginAt: 1706688000000,
|
||||
},
|
||||
{
|
||||
id: "t-006",
|
||||
email: "teacher6@edu.test",
|
||||
name: "吴老师",
|
||||
schoolName: "Edu 实验学校",
|
||||
subjects: ["生物"],
|
||||
classCount: 1,
|
||||
status: "active",
|
||||
lastLoginAt: 1706745600000,
|
||||
},
|
||||
];
|
||||
|
||||
export const mockStudents: AdminStudentViewModel[] = [
|
||||
{
|
||||
id: "s-001",
|
||||
email: "student1@edu.test",
|
||||
name: "小明",
|
||||
className: "一年级一班",
|
||||
gradeName: "一年级",
|
||||
schoolName: "Edu 实验学校",
|
||||
guardianName: "大明",
|
||||
guardianPhone: "13800000001",
|
||||
status: "active",
|
||||
},
|
||||
{
|
||||
id: "s-002",
|
||||
email: "student2@edu.test",
|
||||
name: "小红",
|
||||
className: "一年级一班",
|
||||
gradeName: "一年级",
|
||||
schoolName: "Edu 实验学校",
|
||||
guardianName: "大红",
|
||||
guardianPhone: "13800000002",
|
||||
status: "active",
|
||||
},
|
||||
{
|
||||
id: "s-003",
|
||||
email: "student3@edu.test",
|
||||
name: "小华",
|
||||
className: "一年级二班",
|
||||
gradeName: "一年级",
|
||||
schoolName: "Edu 实验学校",
|
||||
guardianName: "大华",
|
||||
guardianPhone: "13800000003",
|
||||
status: "active",
|
||||
},
|
||||
{
|
||||
id: "s-004",
|
||||
email: "student4@edu.test",
|
||||
name: "小芳",
|
||||
className: "二年级一班",
|
||||
gradeName: "二年级",
|
||||
schoolName: "Edu 实验学校",
|
||||
guardianName: "大芳",
|
||||
guardianPhone: "13800000004",
|
||||
status: "disabled",
|
||||
},
|
||||
{
|
||||
id: "s-005",
|
||||
email: "student5@edu.test",
|
||||
name: "小军",
|
||||
className: "三年级一班",
|
||||
gradeName: "三年级",
|
||||
schoolName: "Edu 实验学校",
|
||||
guardianName: "大军",
|
||||
guardianPhone: "13800000005",
|
||||
status: "active",
|
||||
},
|
||||
];
|
||||
|
||||
export const mockAuditLogs: AuditLogViewModel[] = [
|
||||
{
|
||||
id: "al-001",
|
||||
eventId: "evt-001",
|
||||
occurredAt: 1706918400000,
|
||||
actorUserId: "u-001",
|
||||
actorName: "系统管理员",
|
||||
action: "USER_LOGIN",
|
||||
resourceType: "iam.user",
|
||||
resourceId: "u-001",
|
||||
ip: "192.168.1.100",
|
||||
userAgent: "Mozilla/5.0",
|
||||
beforeState: null,
|
||||
afterState: null,
|
||||
traceId: "trace-001",
|
||||
},
|
||||
{
|
||||
id: "al-002",
|
||||
eventId: "evt-002",
|
||||
occurredAt: 1706832000000,
|
||||
actorUserId: "u-001",
|
||||
actorName: "系统管理员",
|
||||
action: "USER_CREATE",
|
||||
resourceType: "iam.user",
|
||||
resourceId: "u-006",
|
||||
ip: "192.168.1.100",
|
||||
userAgent: "Mozilla/5.0",
|
||||
beforeState: null,
|
||||
afterState: '{"email":"teacher3@edu.test","name":"钱老师"}',
|
||||
traceId: "trace-002",
|
||||
},
|
||||
{
|
||||
id: "al-003",
|
||||
eventId: "evt-003",
|
||||
occurredAt: 1706745600000,
|
||||
actorUserId: "u-002",
|
||||
actorName: "张校长",
|
||||
action: "ROLE_UPDATE",
|
||||
resourceType: "iam.role",
|
||||
resourceId: "r-002",
|
||||
ip: "192.168.1.101",
|
||||
userAgent: "Mozilla/5.0",
|
||||
beforeState: '{"permissions":["ADMIN_DASHBOARD_VIEW"]}',
|
||||
afterState: '{"permissions":["ADMIN_DASHBOARD_VIEW","ADMIN_CLASS_MANAGE"]}',
|
||||
traceId: "trace-003",
|
||||
},
|
||||
{
|
||||
id: "al-004",
|
||||
eventId: "evt-004",
|
||||
occurredAt: 1706688000000,
|
||||
actorUserId: "u-001",
|
||||
actorName: "系统管理员",
|
||||
action: "USER_TOGGLE_STATUS",
|
||||
resourceType: "iam.user",
|
||||
resourceId: "u-005",
|
||||
ip: "192.168.1.100",
|
||||
userAgent: "Mozilla/5.0",
|
||||
beforeState: '{"status":"active"}',
|
||||
afterState: '{"status":"disabled"}',
|
||||
traceId: "trace-004",
|
||||
},
|
||||
{
|
||||
id: "al-005",
|
||||
eventId: "evt-005",
|
||||
occurredAt: 1706601600000,
|
||||
actorUserId: "system",
|
||||
actorName: "系统",
|
||||
action: "ABNORMAL_LOGIN_BLOCKED",
|
||||
resourceType: "iam.user",
|
||||
resourceId: "u-006",
|
||||
ip: "10.0.0.99",
|
||||
userAgent: "curl/7.68",
|
||||
beforeState: null,
|
||||
afterState: null,
|
||||
traceId: "trace-005",
|
||||
},
|
||||
];
|
||||
|
||||
export const mockDashboard: AdminDashboardViewModel = {
|
||||
totalTeachers: 6,
|
||||
totalStudents: 213,
|
||||
totalClasses: 6,
|
||||
totalSchools: 1,
|
||||
schoolAvgScore: 85.6,
|
||||
activeUsersToday: 28,
|
||||
auditEventsToday: 12,
|
||||
trend: [
|
||||
{ date: "2026-07-04", teachers: 4, students: 198, avgScore: 84.2 },
|
||||
{ date: "2026-07-05", teachers: 5, students: 205, avgScore: 84.8 },
|
||||
{ date: "2026-07-06", teachers: 5, students: 210, avgScore: 85.1 },
|
||||
{ date: "2026-07-07", teachers: 6, students: 211, avgScore: 85.3 },
|
||||
{ date: "2026-07-08", teachers: 6, students: 213, avgScore: 85.6 },
|
||||
{ date: "2026-07-09", teachers: 6, students: 213, avgScore: 85.5 },
|
||||
{ date: "2026-07-10", teachers: 6, students: 213, avgScore: 85.6 },
|
||||
],
|
||||
serviceHealth: [
|
||||
{ serviceName: "api-gateway", status: "healthy", latencyMs: 12 },
|
||||
{ serviceName: "iam", status: "healthy", latencyMs: 28 },
|
||||
{ serviceName: "teacher-bff", status: "healthy", latencyMs: 45 },
|
||||
{ serviceName: "classes", status: "healthy", latencyMs: 35 },
|
||||
{ serviceName: "core-edu", status: "healthy", latencyMs: 52 },
|
||||
{ serviceName: "msg", status: "degraded", latencyMs: 280 },
|
||||
{ serviceName: "data-ana", status: "healthy", latencyMs: 120 },
|
||||
],
|
||||
};
|
||||
|
||||
export const mockSystemSettings: SystemSettingsViewModel = {
|
||||
schoolName: "Edu 实验学校",
|
||||
schoolCode: "EDU-001",
|
||||
academicYear: "2025-2026",
|
||||
semester: "second",
|
||||
contactEmail: "contact@edu.test",
|
||||
contactPhone: "010-88888888",
|
||||
address: "北京市海淀区中关村大街 1 号",
|
||||
timezone: "Asia/Shanghai",
|
||||
locale: "zh-CN",
|
||||
};
|
||||
|
||||
/** 生成简单 ID */
|
||||
export function genId(prefix: string): string {
|
||||
return `${prefix}-${Date.now()}-${Math.random().toString(36).slice(2, 6)}`;
|
||||
}
|
||||
Reference in New Issue
Block a user