Files
NextEdu/src/shared/i18n/messages/zh-CN/textbooks.json
SpecialX e2e0487a3b feat(attendance,elective): 实现所有 P2 长期改进项
P2 修复(来自审计报告):
- 2.4.4: Server Action 错误消息 i18n 化(attendance/elective 全部 Action)
- 2.5.3: 抽取 AttendancePageLayout 组件复用(admin/teacher 页面)
- 2.5.4: 抽取 ElectivePageLayout 组件复用(admin/teacher 列表页)
- 2.6.3: 考勤月历键盘导航(tabIndex + 方向键 + Home/End + role=grid)
- 2.8.2: getStudentAttendanceSummary 分页优化(SQL 聚合统计 + LIMIT 分页)
- 2.8.3: resolveCourseDisplayNames 缓存优化(React cache 去重)
- 2.1.4: elective data-access 跨模块依赖接口抽象(resolvers.ts 可注入)

P2 建议项:
- 选课时间冲突检测(parseSchedule + isScheduleConflict 纯函数 + checkScheduleConflict)
- 学分上限校验(MAX_CREDIT_PER_TERM + checkCreditLimit)
- 考勤/选课数据导出 Excel(export.ts + API 路由扩展)

新增文件:
- src/modules/attendance/components/attendance-page-layout.tsx
- src/modules/elective/components/elective-page-layout.tsx
- src/modules/elective/resolvers.ts
- src/modules/attendance/export.ts
- src/modules/elective/export.ts

校验:
- npm run lint 通过(exit 0)
- npx tsc --noEmit attendance/elective/parent 相关零错误
2026-06-23 09:02:41 +08:00

269 lines
9.5 KiB
JSON

{
"list": {
"title": "教材",
"subtitle": "管理数字课程资源与章节。",
"add": "新建教材",
"empty": {
"withFilters": "没有匹配的教材",
"withoutFilters": "暂无教材",
"withFiltersDesc": "请尝试清除筛选或调整关键词。",
"withoutFiltersDesc": "创建你的第一本教材以开始组织章节。"
},
"clearFilters": "清除筛选",
"chapters": "章节"
},
"student": {
"list": {
"title": "教材",
"subtitle": "浏览你的课程教材。",
"empty": {
"withFilters": "没有匹配的教材",
"withoutFilters": "暂无教材",
"withFiltersDesc": "请尝试清除筛选或调整关键词。",
"withoutFiltersDesc": "暂时没有可用的教材。"
}
},
"noUser": "未找到用户",
"noUserDesc": "请创建学生用户以查看教材。"
},
"reader": {
"back": "返回教材列表",
"tabs": {
"chapters": "章节目录",
"knowledge": "知识点",
"graph": "图谱"
},
"selectChapter": "请选择一个章节开始阅读。",
"selectChapterDesc": "从左侧目录中选择一个章节以查看内容。",
"selectChapterKnowledge": "请选择一个章节查看知识点。",
"selectChapterKnowledgeDesc": "从左侧目录中选择一个章节以查看关联的知识点。",
"selectChapterGraph": "请选择一个章节查看知识图谱。",
"selectChapterGraphDesc": "从左侧目录中选择一个章节以查看知识图谱关系。",
"emptyKnowledge": "该章节暂无知识点。",
"emptyKnowledgeDesc": "在阅读内容时选中文本即可创建知识点。",
"emptyContent": "暂无内容",
"emptyContentDesc": "点击「编辑内容」开始编写本章正文。",
"loadingKnowledge": "正在加载知识点...",
"editContent": "编辑内容",
"cancel": "取消",
"save": "保存",
"saving": "保存中...",
"saveFailed": "保存失败",
"createFailed": "创建失败",
"updateFailed": "更新失败",
"deleteFailed": "删除失败",
"questionCreatorDefaultContent": "请讲解知识点:{name}",
"addKnowledgePoint": "添加知识点",
"clickToViewKp": "点击查看知识点详情",
"noChapters": "暂无章节",
"noChaptersDesc": "这本教材还没有章节。",
"sidebar": "目录与知识点",
"openSidebar": "打开目录",
"prepareLesson": "为此课文备课"
},
"dialog": {
"create": {
"title": "新建教材",
"description": "创建一本新的数字教材。完成后点击保存。",
"submit": "保存",
"saving": "保存中..."
},
"settings": {
"title": "教材设置",
"description": "更新教材信息或删除此教材。",
"delete": "删除教材",
"deleteConfirmTitle": "确认删除教材?",
"deleteConfirmDesc": "此操作无法撤销。将永久删除该教材及其所有章节和知识点。",
"save": "保存修改",
"processing": "处理中...",
"trigger": "设置"
},
"chapter": {
"createTitle": "新建章节",
"createDesc": "创建一个新章节或小节。",
"submit": "创建章节",
"creating": "创建中...",
"deleteTitle": "删除章节?",
"deleteDesc": "将永久删除 {title}。此操作无法撤销。",
"delete": "删除",
"deleting": "删除中...",
"cannotDeleteWithSubchapters": "无法删除含有子章节的章节",
"addSubchapter": "添加子章节",
"titlePlaceholder": "例如:第一章:入门",
"toggle": "展开/折叠",
"orderUpdated": "顺序已更新",
"orderUpdateFailed": "顺序更新失败",
"cancel": "取消",
"dragHandle": "拖拽排序"
},
"knowledge": {
"createTitle": "添加知识点",
"createDesc": "从选中的文本创建知识点。",
"editTitle": "编辑知识点",
"editDesc": "修改知识点的名称和描述。",
"name": "名称",
"description": "描述(可选)",
"descriptionPlaceholder": "请输入描述...",
"displayName": "显示名称",
"anchorText": "高级:关联文本(影响文中高亮)",
"anchorTextHint": "修改此字段会改变文中被高亮匹配的文字。通常保持与原文一致。",
"create": "创建",
"creating": "创建中...",
"save": "保存",
"saving": "保存中...",
"cancel": "取消",
"deleteTitle": "确认删除",
"deleteDesc": "确定要删除这个知识点吗?此操作无法撤销。",
"delete": "删除",
"createQuestion": "创建相关题目",
"editKp": "编辑知识点",
"deleteKp": "删除知识点"
}
},
"field": {
"title": "标题",
"subject": "学科",
"grade": "年级",
"publisher": "出版社",
"titlePlaceholder": "例如:高等数学",
"publisherPlaceholder": "例如:人教社",
"subjectPlaceholder": "选择学科",
"gradePlaceholder": "选择年级"
},
"filters": {
"searchPlaceholder": "按标题、出版社搜索...",
"allSubjects": "全部学科",
"allGrades": "全部年级"
},
"card": {
"chapters": "章节",
"updated": "更新于",
"gradeNA": "暂无年级",
"publisherNA": "暂无出版社",
"editContent": "编辑内容",
"delete": "删除",
"moreOptions": "更多操作"
},
"panel": {
"knowledgePoints": "知识点",
"noPointsYet": "暂无知识点",
"noPointsDesc": "添加知识点以标记本章内容。",
"selectChapter": "选择一个章节以管理知识点",
"level": "等级"
},
"subject": {
"chinese": "语文",
"mathematics": "数学",
"physics": "物理",
"chemistry": "化学",
"biology": "生物",
"english": "英语",
"history": "历史",
"geography": "地理"
},
"grade": {
"grade1": "一年级",
"grade2": "二年级",
"grade7": "七年级",
"grade8": "八年级",
"grade9": "九年级",
"grade10": "高一",
"grade11": "高二",
"grade12": "高三"
},
"error": {
"loadFailed": "教材加载失败",
"loadFailedDesc": "加载教材内容时发生错误,请重试。",
"retry": "重试"
},
"action": {
"createSuccess": "教材创建成功。",
"createFailed": "创建教材失败。",
"updateSuccess": "教材更新成功。",
"updateFailed": "更新教材失败。",
"deleteSuccess": "教材删除成功。",
"textbookDeleteFailed": "删除教材失败。",
"chapterCreateSuccess": "章节创建成功",
"chapterCreateFailed": "创建章节失败",
"chapterDeleteSuccess": "章节删除成功",
"chapterDeleteFailed": "删除章节失败",
"contentUpdateSuccess": "内容更新成功",
"contentUpdateFailed": "更新内容失败",
"kpCreateSuccess": "知识点创建成功",
"kpCreateFailed": "创建知识点失败",
"kpUpdateSuccess": "知识点更新成功",
"kpUpdateFailed": "更新知识点失败",
"kpDeleteSuccess": "知识点删除成功",
"kpDeleteFailed": "删除知识点失败",
"reorderSuccess": "排序已更新",
"reorderFailed": "章节排序失败",
"fillRequired": "请填写所有必填字段。",
"titleRequired": "标题为必填项",
"nameRequired": "名称为必填项",
"invalidContent": "章节内容数据无效",
"errorOccurred": "发生错误",
"deleteFailed": "删除失败",
"updateFailedGeneric": "更新失败",
"chapterNotBelong": "章节不属于该教材",
"kpNotBelong": "知识点不属于该教材",
"chaptersReordered": "章节排序成功",
"ok": "成功",
"kpLoadFailed": "加载知识点失败",
"graphLoadFailed": "图谱加载失败",
"invalidInput": "输入无效",
"cyclicDependency": "不能添加循环依赖",
"prerequisiteCreated": "前置依赖已添加",
"prerequisiteCreateFailed": "添加前置依赖失败",
"prerequisiteDeleted": "前置依赖已删除",
"prerequisiteDeleteFailed": "删除前置依赖失败"
},
"graph": {
"viewMode": {
"structure": "结构图",
"studentMastery": "个人掌握度",
"classMastery": "班级掌握度"
},
"node": {
"questions": "题目",
"mastery": "掌握度",
"prerequisite": "前置",
"successor": "后置"
},
"detail": {
"title": "知识点详情",
"noDescription": "暂无描述",
"viewAllQuestions": "查看全部题目",
"editPrerequisite": "编辑前置依赖",
"addPrerequisite": "添加前置",
"addPrerequisiteTitle": "添加前置知识点",
"addPrerequisiteDesc": "选择一个知识点作为当前知识点的前置依赖。",
"selectPrerequisite": "请选择前置知识点",
"removePrerequisite": "移除",
"noPrerequisites": "暂无前置知识点",
"noSuccessors": "暂无后置知识点",
"masteryNotAssessed": "未测评",
"correctRate": "正确率",
"totalQuestions": "总题数",
"prerequisiteAdded": "前置依赖已添加",
"prerequisiteRemoved": "前置依赖已移除",
"cancel": "取消",
"confirm": "确认",
"saving": "保存中..."
},
"toolbar": {
"search": "搜索知识点",
"filterByChapter": "按章节筛选",
"resetView": "重置视图",
"refreshing": "刷新中..."
},
"empty": {
"noPrerequisites": "暂无前置依赖关系",
"noData": "暂无图谱数据"
},
"error": {
"cyclicDependency": "不能添加循环依赖",
"loadFailed": "图谱加载失败"
}
}
}