改造为 SQLite 原生读写

This commit is contained in:
Codex
2026-07-06 16:51:14 +08:00
parent 9884e91612
commit 73d7d766eb
23 changed files with 2974 additions and 893 deletions
+7 -15
View File
@@ -91,7 +91,7 @@ make migrate-sqlite
/root/新时空教务管理系统/archives/text-source-before-sqlite-<时间>.tar.gz.sha256
```
学生表包含 `primary_entry_year` 字段,用于维护“小学一年级入学年份”。排课系统只读该字段并按课程日期动态推算年级。管理后台的学生档案编辑页可以维护该字段;运行时 `学生课时账户.md` 缓存会导出为 7 列格式,同时仍兼容旧 6 列缓存导入
学生表包含 `primary_entry_year` 字段,用于维护“小学一年级入学年份”。排课系统只读该字段并按课程日期动态推算年级。管理后台的学生档案编辑页可以维护该字段;旧 6/7 列 `学生课时账户.md` 仅作为一次性迁移输入兼容
## 课程小结推送
@@ -119,26 +119,19 @@ python3 /Users/yangdawei/Desktop/新时空业务源数据/新时空课程记录
## 历史小结导入
把本机历史课程小结目录同步或上传到 VPS 后,可在容器内执行一次性导入。历史导入只重建小结库和状态;历史 `classnotes缺失.txt` 默认转为审核任务,不自动扣课时。
把本机历史课程小结目录同步或上传到 VPS 后,可在容器内执行一次性导入。历史导入直接写入 SQLite 课程小结表;历史 `classnotes缺失.txt` 默认转为审核任务,不自动扣课时。
```bash
cd /root/新时空教务管理系统/app
docker compose exec xsk-education-management python scripts/import_course_summaries.py \
--source /data/import/课程小结采集 \
--target /data/course_summaries \
--state /data/course_summary_state.json \
--tasks /data/admin_tasks.json \
--operation-logs /data/operation_logs.jsonl \
--db-path /data/xsk_education.db \
--missing-table /data/import/课程小结采集/classnotes缺失.txt
```
## 数据备份
通过登记 API、课程小结自动入账或审核批准修改正式课时数据时,服务会以 SQLite 事务写入 `/data/xsk_education.db`。旧纯文本事实源已封存为归档包;运行时文本缓存位于:
```text
/root/新时空教务管理系统/data/runtime_text_cache/
```
通过登记 API、课程小结自动入账或审核批准修改正式课时数据时,服务会以 SQLite 事务写入 `/data/xsk_education.db`。旧纯文本事实源已封存为归档包,不再作为运行时缓存参与读写。
备份目录位于:
@@ -146,7 +139,7 @@ docker compose exec xsk-education-management python scripts/import_course_summar
/root/新时空教务管理系统/data/backups/
```
每次登记生成一个事务备份目录,目录内包含变更前的业务文件副本`metadata.json`。系统自动保留最近 50 次备份,超过后删除最旧备份。
每次写业务数据前生成一个 SQLite 快照备份目录,目录内包含变更前的数据库快照`metadata.json`。系统自动保留最近 50 次备份,超过后删除最旧备份。
查看备份:
@@ -154,13 +147,12 @@ docker compose exec xsk-education-management python scripts/import_course_summar
ls -lt /root/新时空教务管理系统/data/backups/
```
恢复某次备份时,先停止服务,再把对应备份目录里的文件复制回数据目录,最后重启服务:
恢复某次备份优先使用后台“操作记录”里的撤回按钮。手工恢复时先停止服务,再把对应备份目录里的 `xsk_education.db` 作为数据库恢复源,最后重启服务:
```bash
cd /root/新时空教务管理系统/app
docker compose stop
cp /root/新时空教务管理系统/data/backups/<备份目录>/classnotes.txt /root/新时空教务管理系统/data/classnotes.txt 2>/dev/null || true
cp /root/新时空教务管理系统/data/backups/<备份目录>/学生课时账户.md /root/新时空教务管理系统/data/学生课时账户.md 2>/dev/null || true
cp /root/新时空教务管理系统/data/backups/<备份目录>/xsk_education.db /root/新时空教务管理系统/data/xsk_education.db
docker compose up -d
```