feat(lesson-preparation): 备课模块审计重构 — 跨模块解耦 + i18n + 纯函数抽取 + 错误边界
P0-1 跨模块直查修复:publish-service 不再直查 examQuestions 表,新增 exams/data-access.addExamQuestions 接口,复用 classes/data-access.getStudentIdsByClassIds P0-2 i18n 接入:新增 zh-CN/en 翻译文件,注册 lessonPreparation 命名空间,17 个组件改造为 useTranslations/getTranslations P1 纯函数抽取:lib/document-migration.ts(类型守卫替代 as 断言)、lib/node-summary.ts(翻译函数注入)、lib/rf-mappers.ts P1 错误边界+骨架屏:新增 LessonPlanErrorBoundary 和 4 个 Skeleton 组件 P1 Block 注册表:新增 config/block-registry.tsx(BlockRenderer 组件),node-edit-panel 重构为配置驱动渲染 P1 其他修复:exercise-block 改用 router.refresh(),node-editor/lesson-node 复用 lib/ 纯函数 架构图同步:更新 004 和 005 文档 Refs: docs/architecture/audit/lesson-preparation-audit-report.md
This commit is contained in:
@@ -713,3 +713,22 @@ export const getExamSubmissionsForExam = async (
|
||||
.where(eq(examSubmissions.examId, examId))
|
||||
return rows
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量插入考试题目(跨模块写接口)。
|
||||
* 供 lesson-preparation 模块发布课案为作业时使用,避免直接操作 examQuestions 表。
|
||||
*/
|
||||
export const addExamQuestions = async (
|
||||
examId: string,
|
||||
items: Array<{ questionId: string; score: number; order: number }>
|
||||
): Promise<void> => {
|
||||
if (items.length === 0) return
|
||||
await db.insert(examQuestions).values(
|
||||
items.map((it) => ({
|
||||
examId,
|
||||
questionId: it.questionId,
|
||||
score: it.score,
|
||||
order: it.order,
|
||||
}))
|
||||
)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user