核心概念
这九个词贯穿全部文档。先花五分钟弄懂,后面每一页都会顺很多。
班级 vs 课次(最容易搞混的一组)
章节:班级 vs 课次(最容易搞混的一组)- 班级是档案——「初一数学A班」是一条记录,有学生名单、有任课老师、有教室。
- 课次是时间轴上的实例——「10 月 8 日 18:00–19:30 的那一节」。
中间隔着一层:节奏。你在班级上排的是「每周三 18:00」这个规则,系统把它在学期范围内物化成 18 个具体课次。
班级「初一数学A班」 └─ 节奏「每周三 18:00–19:30」 └─ 物化 ──▶ 课次 9/3、9/10、9/17 …(跳过假期周)共 18 节这一层理解错,后面调课、停课、补课、打印全会跟着错。三个最常见的后果:
- 想改「以后每周都挪到周四」,却一节一节地拖——那是改课次,不是改节奏。
- 改了节奏,奇怪为什么已经手工调过的那节课没跟着变。
- 停一次课和停整段课,操作入口不一样。
展开见学期节奏与物化。
报读 ≠ 编班(第二组最容易搞混的)
章节:报读 ≠ 编班(第二组最容易搞混的)- 编班是把学生放进班级的花名册,决定他出现在哪张课表上。
- 报读是给学生的课时账户入一笔账,决定他有多少课时可以消耗。
- 两件事互不触发:编了班不等于买了课时,买了课时也不等于进了班。
点名产生课消
章节:点名产生课消- 课时不是手工扣的,是点名的副产品。
- 点名保存的同一个事务里,课消行就写进台账了;台账里
kind='attendance'的行没有别的写口。 - 改点名记录,课消跟着增改删。
展开见点名与课消。
课时分桶
章节:课时分桶- 课时不是一个总数,是按学生 × 学科分开的几个桶。
- 没指定学科的那个桶叫「通用课时」。
- 所以会出现「合计余额是正的,但数学桶已经欠着了」这种情况,预警名单会把那一桶单独标红。
展开见课时余额与预警。
校区
章节:校区校区是底座概念,不是花名册的一部分。它是权限范围的锚:一个校区管理员「只能管西湖校区」,这个「只能」是靠校区实现的。
技术上校区(scope_units)住在 modules/identity,不隶属于任何业务积木——这就是为什么权限总是「按校区划」的。教室、学生、成员都挂在校区下面,周网格也按校区筛选。建法见建校区。
机构
章节:机构一个机构 = 一个租户。数据隔离在数据库层面用行级安全(RLS)强制,不是靠应用层过滤。见多租户与行级安全。
角色与权限
章节:角色与权限四个内置角色:总部超管 / 校区管理员 / 教务 / 老师。
角色决定能做什么(权限点),校区决定能对谁做(范围)。两者是正交的:
| 能做什么 | 能对谁做 | |
|---|---|---|
| 总部超管 | 全部权限点 | 全部校区 |
| 校区管理员 | 排课 / 看板 / 基础档案 / 打印 | 限一个校区 |
| 教务 | 排课 / 基础档案 / 打印 | 限一个校区 |
| 老师 | 查看课表 + 收集提交 + 打印 | 可跨多个校区 |
所以「教务」和「校区管理员」的差别不在校区数量,在权限点——前者没有看板。
学期与校历
章节:学期与校历学期划定时间范围(名称 + 起止日期)——周数由起止日期算出来,不用你填;校历在这个范围里一天一条地登记节假日,没有「按周标上课周 / 假期周 / 调休」这种粒度。
物化课次时两者都会被算进去——国庆七天各登记一条,那七天就不会凭空多出课。建法见定学期与校历。
模块开通
章节:模块开通OpSkool 是「一个底座 + 一组可拼装的能力积木」。哪些积木能用,由开通状态决定,安全默认是「什么都没开通」——所以新装的实例不跑种子会看起来是空的,见首次初始化必读。
社区版的种子数据里写了一条全开的长效记录,完整对照见社区版与专业版对照。
© 2026 OpSkool 办学帮 · 苏ICP备2025224982号-3