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"
}
}