P0-1/P0-2: 删除 grade-management 死模块,年级 CRUD 统一由 school 模块负责 P0-3: classes/actions.ts 从 974 行拆分为 6 个职责文件 + barrel re-export P0-5: 13 个页面 i18n 全量接入(grades/departments/academic-year/classes/insights) P1-1: 角色硬编码改为 hasAdminScope/hasTeacherScope/hasStudentScope 基于 dataScope.type P1-3: 新增 SchoolErrorBoundary + SchoolListSkeleton/SchoolCardSkeleton,4 个页面包裹 Error Boundary P1-4: classes/types.ts 跨领域类型添加归属决策注释 P1-5: schools-view.tsx 拆分为组合模式(SchoolFormDialog + SchoolDeleteDialog + SchoolListToolbar) P1-6: 新增 getSchoolsForUser/getGradesForUser 权限感知查询函数 P2-1: 抽取 useSchoolData hook,对话框状态管理与 UI 分离 同步更新架构图文档 004/005
258 lines
7.8 KiB
JSON
258 lines
7.8 KiB
JSON
{
|
|
"schools": {
|
|
"title": "School Management",
|
|
"description": "Manage schools across multiple campuses.",
|
|
"new": "New school",
|
|
"all": "All schools",
|
|
"empty": {
|
|
"title": "No schools",
|
|
"description": "Create your first school to get started."
|
|
},
|
|
"column": {
|
|
"name": "Name",
|
|
"code": "Code",
|
|
"updated": "Updated",
|
|
"actions": "Actions"
|
|
},
|
|
"form": {
|
|
"createTitle": "New school",
|
|
"editTitle": "Edit school",
|
|
"name": "Name",
|
|
"namePlaceholder": "e.g. First Primary School",
|
|
"code": "Code",
|
|
"codePlaceholder": "Optional",
|
|
"cancel": "Cancel",
|
|
"create": "Create",
|
|
"save": "Save"
|
|
},
|
|
"delete": {
|
|
"title": "Delete school",
|
|
"description": "This will permanently delete {name} and its grades.",
|
|
"cancel": "Cancel",
|
|
"confirm": "Delete"
|
|
},
|
|
"actions": {
|
|
"edit": "Edit",
|
|
"delete": "Delete"
|
|
}
|
|
},
|
|
"grades": {
|
|
"title": "Grade Management",
|
|
"description": "Manage grades and assign grade heads.",
|
|
"new": "New grade",
|
|
"all": "All grades",
|
|
"empty": {
|
|
"title": "No grades",
|
|
"description": "Create your first grade to get started."
|
|
},
|
|
"column": {
|
|
"school": "School",
|
|
"grade": "Grade",
|
|
"order": "Order",
|
|
"gradeHead": "Grade Head",
|
|
"teachingHead": "Teaching Head",
|
|
"updated": "Updated",
|
|
"actions": "Actions"
|
|
},
|
|
"form": {
|
|
"createTitle": "New grade",
|
|
"editTitle": "Edit grade",
|
|
"school": "School",
|
|
"schoolPlaceholder": "Select school",
|
|
"name": "Grade name",
|
|
"namePlaceholder": "e.g. Grade 1",
|
|
"order": "Order",
|
|
"gradeHead": "Grade Head",
|
|
"gradeHeadPlaceholder": "Select grade head",
|
|
"teachingHead": "Teaching Head",
|
|
"teachingHeadPlaceholder": "Select teaching head",
|
|
"cancel": "Cancel",
|
|
"create": "Create",
|
|
"save": "Save"
|
|
},
|
|
"delete": {
|
|
"title": "Delete grade",
|
|
"description": "Are you sure you want to delete {name}? This action cannot be undone.",
|
|
"cancel": "Cancel",
|
|
"confirm": "Delete"
|
|
},
|
|
"actions": {
|
|
"edit": "Edit",
|
|
"delete": "Delete",
|
|
"insights": "Insights"
|
|
},
|
|
"notSet": "Not set",
|
|
"filters": {
|
|
"search": "Search grade/school/head...",
|
|
"school": "School",
|
|
"allSchools": "All schools",
|
|
"head": "Head",
|
|
"allHeads": "All",
|
|
"missing": "Both missing",
|
|
"missingGradeHead": "Missing grade head",
|
|
"missingTeachingHead": "Missing teaching head",
|
|
"sort": "Sort",
|
|
"defaultSort": "Default",
|
|
"updatedDesc": "Updated (new→old)",
|
|
"updatedAsc": "Updated (old→new)",
|
|
"nameAsc": "Name (A→Z)",
|
|
"nameDesc": "Name (Z→A)",
|
|
"orderAsc": "Order (low→high)",
|
|
"orderDesc": "Order (high→low)",
|
|
"reset": "Reset"
|
|
},
|
|
"list": {
|
|
"title": "Grade list",
|
|
"noSchools": "No schools",
|
|
"noSchoolsDescription": "Please create a school first, then create grades under it.",
|
|
"noGrades": "No grades",
|
|
"noGradesDescription": "Create a grade to manage heads and classes.",
|
|
"noMatch": "No matching results",
|
|
"noMatchDescription": "Try adjusting filters or clearing the search."
|
|
},
|
|
"validation": {
|
|
"selectSchool": "Please select a school",
|
|
"enterName": "Please enter a grade name",
|
|
"nameTooLong": "Grade name must be at most 100 characters",
|
|
"orderInvalid": "Order must be a non-negative integer",
|
|
"duplicateName": "A grade with this name already exists in this school",
|
|
"fixForm": "Please complete the form",
|
|
"noChanges": "No changes to save"
|
|
},
|
|
"optional": "Optional",
|
|
"failedCreate": "Failed to create grade",
|
|
"failedUpdate": "Failed to update grade",
|
|
"failedDelete": "Failed to delete grade"
|
|
},
|
|
"departments": {
|
|
"title": "Department Management",
|
|
"description": "Manage school departments.",
|
|
"new": "New department",
|
|
"all": "All departments",
|
|
"empty": {
|
|
"title": "No departments",
|
|
"description": "Create your first department to get started."
|
|
},
|
|
"column": {
|
|
"name": "Name",
|
|
"description": "Description",
|
|
"updated": "Updated",
|
|
"actions": "Actions"
|
|
},
|
|
"form": {
|
|
"createTitle": "New department",
|
|
"editTitle": "Edit department",
|
|
"name": "Name",
|
|
"namePlaceholder": "e.g. Chinese Teaching Group",
|
|
"description": "Description",
|
|
"descriptionPlaceholder": "Optional",
|
|
"cancel": "Cancel",
|
|
"create": "Create",
|
|
"save": "Save"
|
|
},
|
|
"delete": {
|
|
"title": "Delete department",
|
|
"description": "Are you sure you want to delete {name}? This action cannot be undone.",
|
|
"cancel": "Cancel",
|
|
"confirm": "Delete"
|
|
},
|
|
"actions": {
|
|
"edit": "Edit",
|
|
"delete": "Delete"
|
|
}
|
|
},
|
|
"academicYear": {
|
|
"title": "Academic Year Management",
|
|
"description": "Manage academic year periods.",
|
|
"new": "New academic year",
|
|
"all": "All academic years",
|
|
"active": "Active",
|
|
"empty": {
|
|
"title": "No academic years",
|
|
"description": "Create your first academic year to get started."
|
|
},
|
|
"column": {
|
|
"name": "Name",
|
|
"startDate": "Start date",
|
|
"endDate": "End date",
|
|
"status": "Status",
|
|
"updated": "Updated",
|
|
"actions": "Actions"
|
|
},
|
|
"form": {
|
|
"createTitle": "New academic year",
|
|
"editTitle": "Edit academic year",
|
|
"name": "Name",
|
|
"namePlaceholder": "e.g. 2025-2026",
|
|
"startDate": "Start date",
|
|
"endDate": "End date",
|
|
"isActive": "Set as active year",
|
|
"cancel": "Cancel",
|
|
"create": "Create",
|
|
"save": "Save"
|
|
},
|
|
"delete": {
|
|
"title": "Delete academic year",
|
|
"description": "Are you sure you want to delete {name}? This action cannot be undone.",
|
|
"cancel": "Cancel",
|
|
"confirm": "Delete"
|
|
},
|
|
"actions": {
|
|
"edit": "Edit",
|
|
"delete": "Delete"
|
|
}
|
|
},
|
|
"classManagement": {
|
|
"title": "Class Management",
|
|
"description": "Manage classes and assign teachers.",
|
|
"grade": {
|
|
"title": "Class Management",
|
|
"description": "Manage classes for your grades.",
|
|
"insights": {
|
|
"title": "Grade Insights",
|
|
"description": "View grade-level homework statistics for grades you lead.",
|
|
"filters": "Filters",
|
|
"grade": "Grade",
|
|
"apply": "Apply",
|
|
"selectGrade": "Select a grade",
|
|
"noGrades": "No grades assigned",
|
|
"noGradesDescription": "You are not assigned as a grade head or teaching head for any grade.",
|
|
"selectToView": "Select a grade to view insights",
|
|
"selectToViewDescription": "Pick a grade to see latest homework and historical score statistics.",
|
|
"notFound": "Grade not found",
|
|
"notFoundDescription": "This grade may not exist or has no accessible data.",
|
|
"noData": "No homework data for this grade",
|
|
"noDataDescription": "No homework assignments were targeted to students in this grade yet.",
|
|
"classes": "Classes",
|
|
"students": "Students",
|
|
"overallAvg": "Overall Avg",
|
|
"latestAvg": "Latest Avg",
|
|
"homeworkTimeline": "Homework timeline",
|
|
"classRanking": "Class ranking",
|
|
"assignment": "Assignment",
|
|
"status": "Status",
|
|
"created": "Created",
|
|
"targeted": "Targeted",
|
|
"submitted": "Submitted",
|
|
"graded": "Graded",
|
|
"avg": "Avg",
|
|
"median": "Median",
|
|
"class": "Class",
|
|
"latestAvgCol": "Latest Avg",
|
|
"prevAvg": "Prev Avg",
|
|
"delta": "Δ",
|
|
"overallAvgCol": "Overall Avg",
|
|
"active": "Active",
|
|
"inactive": "Inactive"
|
|
}
|
|
}
|
|
},
|
|
"errors": {
|
|
"boundary": {
|
|
"title": "Loading Failed",
|
|
"description": "An error occurred while loading data. Please retry.",
|
|
"retry": "Retry"
|
|
}
|
|
}
|
|
}
|