feat(exams,homework,parent): V3 审计深度修复 — 批量批改/考试分析/提交反馈/家长视图/移动端优化

V3-5: exam-actions.tsx 集成 useExamHomeworkFeatures hook,按角色控制菜单项可见性
V3-7: 批量批改 — 新增 batchAutoGradeSubmissions data-access + Server Action + HomeworkBatchGradingView 组件
V3-8: 考试分析仪表盘 — 新增 getExamAnalytics stats-service + ExamAnalyticsDashboard 组件 + /teacher/exams/[id]/analytics 路由
V3-9: 提交后即时反馈页 — 新增 HomeworkSubmissionResult 组件 + /student/learning/assignments/[id]/result 路由
V3-11: 家长考试详情 — 新增 ChildExamDetail 组件 + getStudentExamResults data-access + child-detail-panel exams Tab
V3-12: 移动端触控优化 — 题目导航与考试操作按钮 44px 最小触控目标

修复: instrumentation.ts 适配器补全 questionCount/averageScore/overdueCount 字段
修复: exam-homework-port.ts 类型导入对齐 ExamWithQuestionsForHomework
修复: trend-line-chart.tsx 数据类型允许 undefined(classAverage 可选场景)

同步更新 004/005 架构文档
This commit is contained in:
SpecialX
2026-06-23 01:06:27 +08:00
parent 21c5eba96c
commit a60105455e
23 changed files with 2407 additions and 263 deletions

View File

@@ -96,6 +96,33 @@
"error": {
"notFound": "Exam not found",
"loadFailed": "Failed to load exam"
},
"analytics": {
"title": "Exam Analytics",
"description": "View score distribution and per-question analysis",
"totalStudents": "Total Students",
"submitted": "Submitted",
"gradedCount": "Graded",
"assignmentCount": "Assignments",
"averageScore": "Average Score",
"passRate": "Pass Rate",
"scoreDistribution": "Score Distribution",
"scoreDistributionDesc": "Student count by percentage range",
"questionAnalysis": "Question Analysis",
"questionAnalysisDesc": "Error rate and difficulty (error rate >= 70% is hard)",
"questionType": "Type",
"questionText": "Question",
"maxScore": "Max Score",
"errorCount": "Errors",
"errorRate": "Error Rate",
"difficulty": "Difficulty",
"difficultyEasy": "Easy",
"difficultyMedium": "Medium",
"difficultyHard": "Hard",
"highErrorWarning": "High Error Rate Warning",
"highErrorWarningDesc": "The following questions have an error rate above 70% and are recommended for focused review",
"noData": "No analytics data yet. Data will be available after students submit and grading is complete.",
"viewAnalytics": "View Analytics"
}
},
"homework": {
@@ -249,7 +276,13 @@
"nextStudent": "Next Student",
"prev": "Prev",
"next": "Next",
"gradesAutoSaveNote": "Grades are saved automatically when you click Submit. Students will see their grades and feedback immediately after you submit."
"gradesAutoSaveNote": "Grades are saved automatically when you click Submit. Students will see their grades and feedback immediately after you submit.",
"batchAutoGrade": "Batch Auto-Grade",
"batchSelected": "{{count}} submissions selected",
"batchSelectAtLeastOne": "Please select at least one submission",
"batchFailed": "Batch grading failed",
"selectAll": "Select All",
"selectRow": "Select this row"
},
"review": {
"title": "Review",
@@ -269,7 +302,23 @@
"responseSummary": "Response Summary",
"description": "Description",
"noDescription": "No description provided.",
"totalScore": "Total Score"
"totalScore": "Total Score",
"correctAnswerTrue": "True",
"correctAnswerFalse": "False"
},
"result": {
"title": "Submission Result",
"scoreRate": "Score Rate",
"fullyGraded": "All questions have been graded",
"partiallyGraded": "Objective questions auto-graded. Subjective questions awaiting teacher review.",
"correctCount": "Correct",
"incorrectCount": "Incorrect",
"partialCount": "Partial",
"pendingCount": "Pending",
"wrongAnswersTitle": "Wrong Answers Preview",
"wrongAnswersDesc": "These questions need focused review",
"backToList": "Back to Assignments",
"viewErrorBook": "View Error Book"
},
"status": {
"draft": "Draft",