跳转到内容

授权状态页与额度

社区版代码里同样有这一页——「机构开通了什么」从来不是靠界面上的开关决定,而是由一条授权记录决定:装了哪些积木、买了哪些积木、到什么时候。这条记录默认全开、不限额,所以自建自用的机构平时根本不会碰到本页说的那些限制;但页面本身、到期横幅、额度判定的全部代码都在社区版仓库里,不是专业版才有的隐藏功能。

页面上有什么

章节:页面上有什么

入口在「设置 → 机构 → 授权状态」(/settings/license),只有机构所有者或拥有「管理机构设置」权限的管理员能看到,其他成员看不到这个菜单项。页面分三块:

  • 状态摘要:授权状态(有效 / 未配置授权 / 已过期 / 授权记录无效)、客户名、到期日(有效时额外显示「还剩 N 天」)、授权来源(云端 SaaS / 本地授权文件 / 无)、最近加载时间。
  • 功能模块:逐块列出已开通哪些积木(花名册、排课、收集、点名与课消、成绩与曲线等),以及各积木的加购项状态。如果一块积木「已购买,但本部署未安装」,会单独列一条警告——这种买了没装的错配不会被吞掉,因为它对应的往往是「运维还没升级到带这块积木的版本」。
  • 额度:见下一节。

授权记录里的额度分两种性质完全不同的东西,处理方式也完全不同:

存量类——「此刻有多少个」的东西,比如校区数、成员数、班级数。这类额度写入时现数、超限硬拦、没有任何宽限:机构买了 5 个校区名额,已经建了 5 个,第 6 个校区在保存的那一刻就会被拦下,不会先放行再事后清理。判定与创建动作在同一个数据库事务里完成,避免两个人同时点「新建」时都数到「还差一个」而一起放行。

用量类——「这个自然月用了多少次」的东西,目前对应的是排课积木上「智能排课」这个加购项的调用次数(scheduling.agent.monthlyCalls)。它走的是三档缓冲策略,而不是存量类那种一步到位的硬拦:

  1. 用到额度的 80%,给管理员提示一次(页面上的进度条变提醒色,同时顶部横幅弹一次,按自然月自动重置,提示可以关掉)。
  2. 超过 100%,请求照常放行,但会记一条告警(私有化部署落在实例日志与管理员横幅里,没有专门的运营后台盯着看)。
  3. 只有超过 120%,才会真正拦下来——而且被拦下的那次调用不计入用量流水,因为它本来就没有发生。

两类额度不能混为一谈:存量类超了是当场拒绝,用量类超了是先放行、留出缓冲期再拦,理由是「一次调用中途被打断」的体验成本比多用一点更糟,这段缓冲期也是机构和交付方商量续费的窗口,不是防滥用的口子。

另外还有一条容易被忽略的规则:续费如果降低了某项额度,已经超出新上限的存量不会被清掉或锁住,只是从此不能再新增,直到自然回落到新上限以下为止——比如把校区名额从 5 降到 3、机构已经建了 4 个,那第 4 个校区不会被强制关停,但在降到 3 个以内之前建不出第 5 个。

到期前 30 / 7 / 1 天,机构所有者与其他管理员登录后会在顶部看到续费提醒横幅,普通成员看不到、也不会被打扰。真到期之后,横幅会变成一条不能关闭的「授权已失效,仅底座可用」提示,点进去就是这个页面。

关停不删数据

章节:关停不删数据

这是最容易被误解的一点:授权到期或某块积木被停用,都不会删除任何数据,也不会让机构进入某种「只读」的降级状态

  • 停用一块积木(比如收集),它名下的任务、图片、提交记录原样留在数据库里,界面上暂时看不到也点不进去,但一旦重新开通,这些数据会原样出现,不需要恢复、不需要重新导入。
  • 授权过期同理:过期只是「锁上」,不是「清空」,也不会把系统整体切成一个只能看不能改的只读模式——那意味着要为每一块积木单独设计一套降级界面,成本远大于收益,所以没有做。
  • 数据库结构改动(迁移)从来不按授权状态做条件判断,永远整体执行,不管某块积木有没有被哪个客户买过。开通或停用一块积木因此是纯配置层面的动作,不会带来任何数据库结构风险。
  • 唯一不受这一切影响的是底座:登录、成员、角色权限、机构与校区信息、设置字典,不管授权过期、缺失还是验签失败,永远照常可用——被锁住的只是各块能力积木本身。

这页能改吗? 不能。授权记录没有任何写入接口,这页从设计上就是只读的——机构所有者账号也改不了自己的授权记录,改动只能通过重新签发一份新的授权单来完成,这是刻意的:写入口一开,等于给了一条绕开授权直接自助开通的后门。

授权过期了,之前录的数据还在吗? 在。上一节「关停不删数据」已经说明:到期只锁功能,不动数据库里的任何一行。哪怕过期很久之后才续费,重新开通的瞬间数据就会完整地回到你面前。

社区版这套逻辑要自己配吗? 不需要。种子数据默认写入一条不限额、长期有效的全开授权记录,社区版机构不会撞到本页描述的任何一条限制;这套判定代码存在,只是为了同一套系统既能支撑私有化部署也能支撑云端多租户,不代表社区版被人为设了限。

「智能排课」这类用量类额度是社区版自带的吗? 不是。它是排课积木上的一个加购项,需要额外安装对应的闭源加购包才会真正产生用量数据;社区版本身自带的额度(校区数、成员数、班级数)全都是前面说的存量类,不涉及 80/100/120 这套用量分档逻辑。

想知道社区版和专业版具体差在哪里,见社区版与专业版对照;授权与部署的关系见环境变量参考