feat(school,classes): 实现 P2 长期问题全量改进项

P2-2: 新增 OrgTreeNav 组件(学校→年级→班级三级树形导航,支持搜索过滤/选中高亮/展开折叠)

P2-3: 新增 promoteGradesAction 年级升级功能(中文数字/阿拉伯数字识别,按 order 降序避免冲突)

P2-4: 新增 bulkEnrollStudentsAction(CSV 批量导入学生)+ bulkAssignSubjectTeachersAction(CSV 批量分配教师)

P2-5: 为 department/academicYear/grade 的 9 个 CRUD Action 补充 logAudit 审计日志

同步更新架构图文档 004/005
This commit is contained in:
SpecialX
2026-06-23 08:55:21 +08:00
parent 4da9194a5e
commit c766951374
11 changed files with 761 additions and 81 deletions

View File

@@ -122,7 +122,15 @@
"optional": "Optional",
"failedCreate": "Failed to create grade",
"failedUpdate": "Failed to update grade",
"failedDelete": "Failed to delete grade"
"failedDelete": "Failed to delete grade",
"promote": {
"title": "Promote Grades",
"description": "Promote all grades of the selected school by one level (e.g., Grade 1 → Grade 2). Historical archives are preserved.",
"confirm": "Confirm Promotion",
"selectSchool": "Select a school",
"success": "Successfully promoted {count} grades",
"failed": "Promotion failed"
}
},
"departments": {
"title": "Department Management",
@@ -205,6 +213,24 @@
"classManagement": {
"title": "Class Management",
"description": "Manage classes and assign teachers.",
"bulk": {
"importStudents": {
"title": "Bulk Import Students",
"description": "One email per line, format: name,email or email only",
"placeholder": "John,john@example.com\njane@example.com",
"submit": "Import",
"success": "Imported {imported} students, {failed} failed",
"failed": "Bulk import failed"
},
"assignTeachers": {
"title": "Bulk Assign Teachers",
"description": "One row per line: class name,subject,teacher email",
"placeholder": "Class 1,Math,john@example.com\nClass 2,English,jane@example.com",
"submit": "Assign",
"success": "Updated {updated} assignments, {failed} failed",
"failed": "Bulk assignment failed"
}
},
"grade": {
"title": "Class Management",
"description": "Manage classes for your grades.",
@@ -253,5 +279,12 @@
"description": "An error occurred while loading data. Please retry.",
"retry": "Retry"
}
},
"orgTree": {
"title": "Organization",
"search": "Search school/grade/class...",
"empty": "No data",
"expandAll": "Expand All",
"collapseAll": "Collapse All"
}
}

View File

@@ -122,7 +122,15 @@
"optional": "可选",
"failedCreate": "创建年级失败",
"failedUpdate": "更新年级失败",
"failedDelete": "删除年级失败"
"failedDelete": "删除年级失败",
"promote": {
"title": "年级升级",
"description": "将选定学校的所有年级升级一级(如一年级→二年级),保留历史档案。",
"confirm": "确认升级",
"selectSchool": "请选择学校",
"success": "成功升级 {count} 个年级",
"failed": "升级失败"
}
},
"departments": {
"title": "部门管理",
@@ -205,6 +213,24 @@
"classManagement": {
"title": "班级管理",
"description": "管理班级并分配教师。",
"bulk": {
"importStudents": {
"title": "批量导入学生",
"description": "每行一个邮箱格式name,email 或仅 email",
"placeholder": "张三,zhangsan@example.com\nlisi@example.com",
"submit": "导入",
"success": "成功导入 {imported} 个学生,{failed} 个失败",
"failed": "批量导入失败"
},
"assignTeachers": {
"title": "批量分配教师",
"description": "每行格式:班级名称,科目,教师邮箱",
"placeholder": "一班,语文,zhangsan@example.com\n二班,数学,lisi@example.com",
"submit": "分配",
"success": "成功更新 {updated} 个分配,{failed} 个失败",
"failed": "批量分配失败"
}
},
"grade": {
"title": "班级管理",
"description": "管理你所在年级的班级。",
@@ -253,5 +279,12 @@
"description": "数据加载时发生错误,请重试",
"retry": "重试"
}
},
"orgTree": {
"title": "组织架构",
"search": "搜索学校/年级/班级...",
"empty": "暂无数据",
"expandAll": "全部展开",
"collapseAll": "全部折叠"
}
}