feat: 完善课表档案、课件归档、提醒与客户端更新并发布 1.4.1

- 重写课表档案工作区并合并时间表、课表与完整档案导入导出
- 修复课前/上下课提醒遮罩与通知收回冲突
- 增加课件文件夹分类、教师归档路径和客户端本机归档
- 打通客户端下载/安装/完成状态上报并在管理端展示更新过程
- 修复侧栏折叠裁切、课时多选与上传控件样式
- 统一版本到 1.4.1
This commit is contained in:
LoveChengke committed 2026-10-18 17:39:54 +08:00
1 parent 2612a912ef
commit 6347d1e5aa
59 files changed
+2251 -584

No files matched your search

+21
View File
@@ -421,6 +421,27 @@ try {
assert.equal(rows[0].weekCountDivTotal, 4);
assert.equal(rows[0].layout.points.length, 4);
});
const archive = await request(`/class-plans/profile?classId=${cls.id}`);
const beforeArchive = imported.find((p: { name: string }) => p.name === '上游四周');
const exportedPlan = archive.ClassPlans[beforeArchive.id];
check('完整档案导出保留四种时间点、空课位置与轮换规则', () => {
assert.equal(archive.TimeLayouts[exportedPlan.TimeLayoutId].Layouts.length, 4);
assert.equal(exportedPlan.TimeRule.WeekCountDivTotal, 4);
assert.equal(
exportedPlan.Classes.length,
beforeArchive.layout.points.filter((p: { timeType: string }) => p.timeType === 'LESSON').length,
);
});
await request('/class-plans/import/profile', 'POST', { classId: cls.id, payload: archive }, undefined, 201);
const afterArchive = await request(`/class-plans?classId=${cls.id}`);
check('导出档案可重新导入且保留课程与周次范围', () => {
const restored = afterArchive.find(
(p: { id: string; name: string }) => p.name === '上游四周' && p.id !== beforeArchive.id,
);
assert.equal(restored.weekStart, beforeArchive.weekStart);
assert.equal(restored.weekEnd, beforeArchive.weekEnd);
assert.equal(restored.entries.length, beforeArchive.entries.length);
});
let enabled = false;
const os = {
platform: 'win32',