选择题训练系统 v2.0
在线编辑器操作与服务器维护说明
新版在线 H5 扫码版。原系统、原教师端、原学生端、旧二维码和旧任务链接保持不变。
一、在线编辑器操作说明
1. 访问地址
新版在线编辑器: https://next.hofor881.cn/online-editor.html 原系统: https://hofor881.cn/
在线编辑器只生成新任务,不修改原任务。“应用修改”只修改当前浏览器内存;必须点击“另存为新任务”才会创建新任务。
2. 导入教师工程
- 打开新版在线编辑器并登录教师账号。
- 选择原始教师工程 JSON 文件。
- 等待“工程读取成功”。
- 先查看工程诊断,再开始编辑。
必须导入包含 originalQuestions 数组的教师工程 JSON。
3. 工程诊断
| 颜色 | 含义 |
|---|---|
| 绿色 | 未发现明显结构问题。 |
| 黄色 | 存在建议检查的警告,例如未引用的图片池图片。 |
| 红色 | 存在必须修复的问题,例如重复题号、空选项或无效图片引用。 |
4. 编辑普通题
- 可以编辑题干 HTML、选项 HTML、正确答案、解析和分值。
- 源码模式适合修改 HTML,可视模式用于查看效果。
- 选项下方会实时预览。
- 单选题答案填写一个字母,例如
A。 - 多选题答案填写多个字母,例如
ACF。 - 答案会转为大写并去重。
- 分值必须是大于或等于 0 的数字。
5. 复制和删除题目
- 普通题支持复制和删除。
- 操作只修改浏览器内存。
- 删除后题号会重新整理。
- 图片题不建议复制或删除。
6. 图片题查看和替换
- “图片引用关系(只读)”表示不能直接修改图片 ID 和挂接关系。
- 点击“选择新图片”可以替换已经找到的图片池图片。
- 支持 PNG、JPG/JPEG、GIF、WebP。
- 单张图片最大 10 MB。
- 替换后会同步图片池缩略图、题干图片和选项图片。
- 图片池 ID 和
data-img-id保持不变。
当前暂不支持删除图片、修改图片池 ID、修改图片挂接关系或直接编辑任意 Base64。
7. 另存为新任务
保存前会检查题目、题号、选项、答案、分值、图片池和图片引用。
校验失败时不会调用保存接口,也不会创建新任务。保存成功后请记录新任务 ID,并打开学生端检查。
8. 学生端验证
- 普通题、单选题、多选题和图片题显示正常。
- 练习模式提交后显示答案和解析。
- 测试模式提交后只显示成绩。
- “查看作答”功能正常。
二、服务器维护说明
1. 项目基本信息
项目目录:/var/www/quiz Node 服务:127.0.0.1:3000 PM2 应用:quiz 数据库:PostgreSQL / quiz 新版域名:https://next.hofor881.cn 原域名:https://hofor881.cn
2. 维护规则
- 每次只做一个小补丁。
- 修改前必须备份。
- 测试通过后再提交。
- 禁止使用
git add .或git add -A。 - 不要提交
backups/、storage/和.env。 - 不要修改原系统、原教师端、原学生端和旧任务链接。
3. 修改前检查
cd /var/www/quiz git status --short git log --oneline -12 pm2 status
要求工作区干净、PM2 为 online,并确认当前提交。
4. 文件备份
mkdir -p backups backup="backups/<文件名>.before-<功能>-$(date +%Y%m%d-%H%M%S)" cp -p <文件名> "$backup" sha256sum <文件名> "$backup"
5. 语法和差异检查
node --check server.js git diff --check git diff --stat git status --short
修改前端内嵌脚本后,也要提取脚本并执行 node --check。
6. 服务检查
pm2 status
curl -sS -o /tmp/quiz-health.json \
-w 'health_http=%{http_code}\n' \
https://next.hofor881.cn/api/health
cat /tmp/quiz-health.json
curl -sS -o /tmp/online-editor-status.json \
-w 'status_http=%{http_code}\n' \
https://next.hofor881.cn/api/online-editor/status
cat /tmp/online-editor-status.json
期望健康接口 HTTP 200,并返回 {"ok":true};在线编辑状态应为 enabled=true。
7. PM2 重启和异常处理
pm2 restart quiz sleep 2 pm2 status curl -sS -i https://next.hofor881.cn/api/health
PM2 重启瞬间可能短暂出现 502。等待几秒后再次检查。如果仍异常,再检查本地 3000 端口、PM2 日志和 Nginx 日志。
curl -sS -i http://127.0.0.1:3000/api/health pm2 logs quiz --lines 80 --nostream ss -ltnp | grep ':3000' || true sudo tail -80 /var/log/nginx/error.log
8. 精准提交
git add public/online-editor.html git commit -m "feat: describe the change" git status --short git log -1 --oneline pm2 status
只暂存本次明确修改的文件,不使用 git add .。
9. 回滚
cp -p backups/<备份文件> <原文件> node --check server.js git diff --check pm2 restart quiz
已提交的版本先确认影响范围,再进行针对性回滚,不直接删除数据库数据。
10. 当前暂不做的高风险操作
- 删除图片池图片。
- 修改图片池 ID。
- 修改图片挂接关系。
- 重写图片存储结构。
- 修改原系统和旧任务数据。
三、当前稳定版本
0d2ae28 feat: enhance teacher project diagnostics
继续遵守:一次一个小补丁、修改前备份、测试通过再提交。