Skip to content

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

1 watching

Forks

Repository files navigation

灵动课堂 (Smart Classroom)

课堂互动管理工具 — 教师专用,Android 与 Windows 双端可用。

本项目采用 AGPL-3.0 协议。 你可以自由使用、修改、分发,包括商用, 但若分发修改版、或把它作为网络服务提供给他人使用,必须以同样协议公开完整源代码。


核心功能

  • 三层管理:班级 / 小组 / 成员,完整的增删改查
  • 随机抽取:个人与小组两种模式,带滚动动画与音效;支持锁定小组、排除已抽过的人
  • 积分与段位:8 个段位 × 5 个小段(倔强青铜 → 荣耀王者),个人榜与小组榜实时排行,支持撤销
  • 题库管理:Excel 导入导出,支持风险题标识、已答标记与重置
  • 倒计时器:预设一键启动,支持小数分钟,最后 10 秒红色告警 + 结束铃声
  • 教材仓库:索引内置 1905 本(学段 / 科目 / 版本 / 年级),PDF 按需下载并本地缓存
  • PDF 阅读与批注:翻页、页码跳转、缩放;批注为独立图层,不写入 PDF 文件, 因此翻页与缩放都不会位移,教材原件永不被改动
  • WebDAV 云同步:坚果云 / Nextcloud 等,按修改时间增量比对,覆盖前先备份
  • 本地存档:改动后 5 秒防抖写入,切到后台立即保存

说明:早期文档曾宣传「PDF 批注」与「U盘备份」。前者在 v1.23 被删除、现已重新实现; 后者从未实现(对应的 UsbDetector 从未被调用),已从所有文案中移除。

平台支持

平台 状态 安装方式
Android ✅ APK(arm64-v8a / armeabi-v7a / x86_64)
Windows ✅ ZIP 绿色版 / Setup.exe 安装包

数据存放

应用使用一个你自选的工作目录,结构固定:

<你选的目录>/
├── 学生信息/            名单与积分,每个班级一个 xlsx(可直接用 Excel 打开核对)
├── 题库/                题库 xlsx,启动时自动扫描
└── 数据存档/
    ├── 运行日志.log      出问题时可直接提供给开发者
    ├── 批注/             PDF 批注(每份文档一个 JSON)
    ├── <时间>-xxx.xlsx   被淘汰的旧名单
    └── 同步冲突-xxx.xlsx 同步覆盖前的本地备份

名单文件命名:建议写成 三年级1班.xlsx 这类形式。应用会从文件名识别年级与班级, 用于两件事:把同年级同班级的名单归为一组、以及云端按年级分目录。 同一年级班级只保留最旧 1 份 + 最新 5 份,其余自动淘汰(识别不出年级班级的文件不参与淘汰, 避免误删)。

云同步

推荐坚果云,连接参数固定:

项 值
服务地址 https://dav.jianguoyun.com/dav/(HTTPS,端口 443)
用户名 坚果云注册邮箱 / 手机号
密码 第三方应用密码(在「账户信息 → 安全选项 → 添加应用密码」生成)

用登录密码填进去只会得到 401,而界面上表现为「无法连接云端」——这是最常见的踩坑点。

云端目录结构(英文路径,避免不同服务端对中文路径处理不一致):

<你的远端目录>/SmartClassroom/
├── students/<年级班级>/<班级>.xlsx
└── questions/<题库>.xlsx

同步行为说明:

  • 按 lastModified 增量比对,只传需要传的,不会把整个目录来回覆盖
  • 覆盖之前会把被覆盖的那一份复制到本地「数据存档」,不静默丢数据
  • 上传失败不会被后续步骤覆盖成「同步完成」——失败就是失败

开发

Flutter 3.44 / Dart 3.12。构建与验证全部在 GitHub Actions 完成,本地无需配置工具链。

CI 包含:

  • Build & Release:先跑 flutter analyze(编译级错误会导致失败)与 flutter test, 两者通过才出包;分析结果写入 docs/analyzer-report.md 并回提交
  • Maintenance:清理教材索引、dart fix --apply、生成第三方协议清单。 其中 dart fix 的自动改动只有在 analyze + test 都通过时才会保留,否则自动回滚
  • License text:从 SPDX 取 AGPL-3.0 权威正文写入 LICENSE(不手打法律文本)
  • Workflow lint:校验 .github/workflows/*.yml 是否合法。 GitHub 对语法无效的 workflow 不会让 push 报错,只会静默禁用那一个文件, 所以需要一个独立的校验器来兜住这类问题

辅助脚本:

python3 tools/make_icons.py          # 从主图派生各平台图标(幂等)
python3 tools/fix_textbook_index.py  # 清理教材索引里的非学段顶层键
python3 tools/gen_third_party.py     # 生成第三方协议清单
python3 tools/check_workflows.py     # 校验 workflow YAML

许可与义务

AGPL-3.0。详见 LICENSE、应用内「开源项目说明」页, 以及由 CI 生成的 第三方协议清单。

完整协议原文由 Flutter 框架在构建时自动收集,应用内点击「查看完整开源许可」即可看到, 不经过人手维护,因此不会与依赖实际状态脱节。

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages