refactor(grades,diagnostic): 成绩和学情诊断模块审计修复

P0-1: 10 个页面补充 requirePermission 权限校验
P0-2: diagnostic/data-access-reports.ts 移除直查 users 表,改用 getUserNamesByIds
P0-3: 新增 grade/grades/diagnostic 三组 i18n 翻译文件(zh-CN/en)
P0-4: 新增 /management/grade 重定向页面

P1-2: 抽取 toNumber/normalize/buildScopeClassFilter 到 lib/grade-utils.ts
P1-3: 为 12 个 Action 新增 Zod safeParse 校验(schema.ts +12 查询 schema)
P1-4: 修复 as 断言违规,改用类型守卫函数

P2-2: 移除 diagnostic 组件中 Tailwind 任意值

同步更新架构图文档 004 和 005
This commit is contained in:
SpecialX
2026-06-22 16:23:34 +08:00
parent 20691f53ce
commit 45ee1ae43c
29 changed files with 2276 additions and 186 deletions

View File

@@ -0,0 +1,87 @@
{
"title": {
"student": "学生学情诊断",
"class": "班级学情诊断",
"reportList": "诊断报告",
"myDiagnostic": "我的学情诊断"
},
"type": {
"individual": "个人",
"class": "班级",
"grade": "年级"
},
"status": {
"draft": "草稿",
"published": "已发布",
"archived": "已归档"
},
"filters": {
"reportType": "报告类型",
"status": "状态",
"allTypes": "全部类型",
"allStatuses": "全部状态"
},
"summary": {
"overallMastery": "总体掌握度",
"strengths": "强项",
"weaknesses": "弱项",
"students": "学生数",
"avgMastery": "平均掌握度",
"needAttention": "需重点关注",
"class": "班级",
"student": "学生"
},
"chart": {
"radarTitle": "知识点掌握度",
"radarDescription": "掌握度雷达图(学生 vs 班级平均)",
"heatmapTitle": "知识点掌握度热力图",
"rankingTitle": "知识点排名",
"noMasteryData": "暂无知识点掌握度记录"
},
"report": {
"generate": "生成诊断报告",
"generateStudent": "生成学生诊断报告",
"generateClass": "生成班级诊断报告",
"publish": "发布",
"delete": "删除",
"publishTitle": "发布报告",
"publishConfirmation": "确定要发布此报告吗?发布后将对相关人员可见。",
"deleteTitle": "删除报告",
"deleteConfirmation": "确定要删除此报告吗?此操作不可撤销。",
"confirm": "确认",
"cancel": "取消",
"publishing": "发布中...",
"deleting": "删除中...",
"recommendations": "学习建议",
"history": "报告历史",
"period": "周期",
"createdAt": "创建时间",
"generatedBy": "生成者",
"overallScore": "总体得分",
"actions": "操作"
},
"strengths": {
"title": "强项≥80%",
"practice": "练习",
"empty": "暂无强项知识点"
},
"weaknesses": {
"title": "弱项(<60%",
"practice": "练习",
"empty": "暂无弱项知识点"
},
"empty": {
"noData": "暂无诊断数据",
"noClassData": "无法加载班级掌握度摘要",
"noMastery": "暂无知识点掌握度记录",
"noReports": "暂无诊断报告"
},
"error": {
"generateFailed": "生成报告失败",
"generateClassFailed": "生成班级报告失败",
"publishFailed": "发布失败",
"deleteFailed": "删除失败",
"loadFailed": "加载失败",
"retry": "重试"
}
}

View File

@@ -0,0 +1,155 @@
{
"delete": {
"title": "删除年级",
"description": "确定要删除「{name}」吗?此操作不可撤销。",
"cancel": "取消",
"confirm": "删除"
},
"empty": {
"noGrades": {
"title": "暂无年级",
"description": "学校尚未创建任何年级,点击「新建年级」开始配置。"
},
"noMatch": {
"title": "无匹配结果",
"description": "尝试调整搜索条件或筛选器。"
},
"noAssignedGrades": {
"title": "未分配年级",
"description": "您尚未被分配管理任何年级。"
},
"selectGrade": {
"title": "请选择年级",
"description": "选择一个年级以查看洞察数据。"
},
"noInsights": {
"title": "暂无洞察数据",
"description": "所选年级暂无足够的作业或成绩数据生成洞察。"
}
},
"error": {
"loadFailed": "加载失败",
"deleteFailed": "删除失败",
"noPermission": {
"title": "无权限",
"description": "您没有权限执行此操作。"
}
},
"form": {
"create": {
"title": "新建年级"
},
"edit": {
"title": "编辑年级"
},
"field": {
"school": "学校",
"name": "年级名称",
"order": "排序",
"gradeHead": "年级主任",
"teachingHead": "教学主任"
},
"placeholder": {
"school": "选择学校",
"name": "如:一年级",
"gradeHead": "选择年级主任",
"teachingHead": "选择教学主任"
},
"button": {
"cancel": "取消",
"create": "创建",
"save": "保存"
},
"errors": {
"schoolRequired": "请选择学校",
"nameRequired": "请输入年级名称",
"nameTooLong": "年级名称不能超过 50 个字符",
"nameDuplicate": "该学校下已存在同名年级",
"orderInvalid": "排序必须为整数"
}
},
"insights": {
"assignments": {
"title": "作业列表",
"column": {
"assignment": "作业名称",
"status": "状态",
"createdAt": "创建时间",
"targeted": "目标人数",
"submitted": "已提交",
"graded": "已批改",
"avg": "平均分",
"median": "中位数"
}
},
"ranking": {
"title": "班级排名",
"column": {
"class": "班级",
"students": "学生数",
"latestAvg": "最新平均分",
"prevAvg": "上次平均分",
"delta": "变化",
"overallAvg": "总体平均分"
}
},
"stats": {
"classCount": "班级数",
"studentCount": "学生数",
"studentDetail": "共 {count} 名学生",
"overallAvg": "总体平均分",
"overallAvgDesc": "年级所有成绩的加权平均",
"latestAvg": "最新平均分"
}
},
"list": {
"title": "年级列表",
"notSet": "未设置",
"column": {
"school": "学校",
"grade": "年级",
"order": "排序",
"gradeHead": "年级主任",
"teachingHead": "教学主任",
"updatedAt": "更新时间",
"actions": "操作"
},
"actions": {
"insights": "洞察",
"edit": "编辑",
"delete": "删除"
}
},
"page": {
"insights": {
"title": "年级洞察"
}
},
"toast": {
"deleteSuccess": "删除成功",
"createSuccess": "创建成功",
"updateSuccess": "更新成功"
},
"toolbar": {
"search": "搜索年级...",
"reset": "重置",
"create": "新建年级",
"filter": {
"school": "学校",
"allSchools": "全部学校",
"head": "主任",
"allHeads": "全部主任",
"missingBoth": "缺少双主任",
"missingGradeHead": "缺少年级主任",
"missingTeachingHead": "缺少教学主任",
"sort": "排序",
"sortDefault": "默认排序",
"sortUpdatedDesc": "最近更新",
"sortUpdatedAsc": "最早更新",
"sortNameAsc": "名称升序",
"sortNameDesc": "名称降序",
"sortOrderAsc": "排序升序",
"sortOrderDesc": "排序降序"
}
}
}

View File

@@ -0,0 +1,143 @@
{
"title": {
"list": "成绩查询",
"entry": "成绩录入",
"analytics": "成绩分析",
"stats": "成绩统计",
"myGrades": "我的成绩",
"childrenGrades": "子女成绩"
},
"filters": {
"class": "班级",
"subject": "科目",
"type": "类型",
"semester": "学期",
"allClasses": "全部班级",
"allSubjects": "全部科目",
"allTypes": "全部类型",
"allSemesters": "全部学期",
"searchPlaceholder": "按标题搜索..."
},
"type": {
"exam": "考试",
"quiz": "测验",
"homework": "作业",
"other": "其他"
},
"semester": {
"s1": "第一学期",
"s2": "第二学期"
},
"list": {
"empty": "暂无成绩记录",
"columns": {
"student": "学生",
"class": "班级",
"subject": "科目",
"title": "标题",
"score": "分数",
"type": "类型",
"semester": "学期",
"recordedBy": "录入人",
"date": "日期"
}
},
"form": {
"title": "录入成绩",
"save": "保存",
"saving": "保存中...",
"cancel": "取消",
"selectClass": "选择班级",
"selectSubject": "选择科目",
"selectStudent": "选择学生",
"titlePlaceholder": "如期中考试",
"score": "分数",
"fullScore": "满分",
"remark": "备注(可选)",
"remarkPlaceholder": "关于此成绩的备注...",
"selectPrompt": "请选择班级、科目和学生"
},
"delete": {
"title": "删除成绩记录",
"confirmation": "确定要删除此成绩记录吗?此操作不可撤销。",
"confirm": "删除",
"cancel": "取消",
"deleting": "删除中..."
},
"export": {
"detail": "导出成绩明细",
"classReport": "导出班级成绩总表",
"success": "导出成功",
"failed": "导出失败"
},
"stats": {
"title": "统计",
"average": "平均分",
"median": "中位数",
"max": "最高分",
"min": "最低分",
"stdDev": "标准差",
"variance": "方差",
"passRate": "及格率",
"excellentRate": "优秀率",
"count": "人数"
},
"analytics": {
"trend": "成绩趋势",
"classComparison": "班级对比",
"subjectComparison": "科目对比",
"distribution": "分数分布",
"ranking": "排名",
"rankingTrend": "排名趋势",
"class": "班级",
"subject": "科目",
"grade": "年级",
"averageScore": "平均分",
"passRate": "及格率",
"excellentRate": "优秀率",
"studentCount": "学生数"
},
"batch": {
"title": "批量录入",
"saving": "保存中...",
"restored": "已恢复未保存的成绩草稿",
"invalidScores": "存在无效分数",
"fullScoreRequired": "满分必填",
"saved": "已录入",
"score": "分数",
"remark": "备注",
"fullScore": "满分",
"type": "类型",
"saveAll": "全部保存",
"cancel": "取消"
},
"trend": {
"title": "成绩趋势",
"empty": "暂无成绩记录",
"score": "分数",
"date": "日期"
},
"summary": {
"title": "成绩摘要",
"averageScore": "平均分",
"classRank": "班级排名",
"totalRecords": "总记录数",
"highestScore": "最高分",
"lowestScore": "最低分"
},
"empty": {
"noRecords": "暂无成绩记录",
"noData": "暂无数据",
"noClassSelected": "请选择班级",
"noStudentSelected": "请选择学生"
},
"error": {
"loadFailed": "加载失败",
"saveFailed": "保存失败",
"deleteFailed": "删除失败",
"exportFailed": "导出失败",
"failedToCreate": "创建失败",
"failedToDelete": "删除失败",
"retry": "重试"
}
}