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": "Student Diagnostic",
"class": "Class Diagnostic",
"reportList": "Diagnostic Reports",
"myDiagnostic": "My Diagnostic"
},
"type": {
"individual": "Individual",
"class": "Class",
"grade": "Grade"
},
"status": {
"draft": "Draft",
"published": "Published",
"archived": "Archived"
},
"filters": {
"reportType": "Report Type",
"status": "Status",
"allTypes": "All types",
"allStatuses": "All statuses"
},
"summary": {
"overallMastery": "Overall Mastery",
"strengths": "Strengths",
"weaknesses": "Weaknesses",
"students": "Students",
"avgMastery": "Avg Mastery",
"needAttention": "Need Attention",
"class": "Class",
"student": "Student"
},
"chart": {
"radarTitle": "Knowledge Point Mastery",
"radarDescription": "Radar chart of mastery level (student vs class average)",
"heatmapTitle": "Knowledge Point Mastery Heatmap",
"rankingTitle": "Knowledge Point Ranking",
"noMasteryData": "No knowledge point mastery records found."
},
"report": {
"generate": "Generate Diagnostic Report",
"generateStudent": "Generate Student Diagnostic Report",
"generateClass": "Generate Class Diagnostic Report",
"publish": "Publish",
"delete": "Delete",
"publishTitle": "Publish Report",
"publishConfirmation": "Are you sure you want to publish this report? It will be visible to relevant users.",
"deleteTitle": "Delete Report",
"deleteConfirmation": "Are you sure you want to delete this report? This action cannot be undone.",
"confirm": "Confirm",
"cancel": "Cancel",
"publishing": "Publishing...",
"deleting": "Deleting...",
"recommendations": "Recommendations",
"history": "Report History",
"period": "Period",
"createdAt": "Created At",
"generatedBy": "Generated By",
"overallScore": "Overall Score",
"actions": "Actions"
},
"strengths": {
"title": "Strengths (≥80%)",
"practice": "Practice",
"empty": "No strength knowledge points"
},
"weaknesses": {
"title": "Weaknesses (<60%)",
"practice": "Practice",
"empty": "No weakness knowledge points"
},
"empty": {
"noData": "No diagnostic data",
"noClassData": "Unable to load class mastery summary.",
"noMastery": "No knowledge point mastery records found.",
"noReports": "No diagnostic reports"
},
"error": {
"generateFailed": "Failed to generate report",
"generateClassFailed": "Failed to generate class report",
"publishFailed": "Failed to publish",
"deleteFailed": "Failed to delete",
"loadFailed": "Failed to load",
"retry": "Retry"
}
}