最初的描述
« 我经营一所小型音乐学校:钢琴、吉他、声乐。学员报名参加每周一次、有指定老师和时段的课程。每节课我都记录出勤;缺勤可在本学期内补课。家庭按学期缴费。我想看到本周的出勤、待补的课以及逾期的缴费。 »
生成前已确认的方案
根据这段描述,Blueprint Maker 提出一份待审阅的方案:五个实体——学员、课程、时段、考勤、缴费——及其关联:一名学员报名一门课程,一门课程有一位老师和一个时段,一条考勤把学员与某个有日期的课时相连,一笔缴费把家庭与某个学期相连。
从文本推断出的状态被列入方案:考勤为出勤、缺勤或已补;缴费为已缴、待缴或逾期。所要求的三个指标——本周出勤、待补课、逾期缴费——在任何生成之前就已出现。此刻正是补上遗漏概念(比如暑期班)的时机;此后所构建的即是所确认的。
- 实体:学员、课程、时段、考勤、缴费
- 关系:学员 → 课程;课程 → 老师、时段;考勤 → 学员;缴费 → 学员
- 状态:出勤 / 缺勤 / 已补;已缴 / 待缴 / 逾期
- 指标:本周出勤、应补课、逾期缴费
导航:五个板块中的学校
侧边栏沿用这些板块:仪表盘、学员、课程、考勤、缴费。学员列表显示姓名、所报课程、老师、时段——并带即时搜索:家长来电时,输入「Mar」就足以找到 Margaux 和 Martin。
课程列表按科目或老师筛选;缴费列表按状态筛选,彩色徽章完成其余:一枚橙色的「逾期」不会淹没在众多「已缴」之中。
学员档案,含考勤与缴费
Margaux Lefèvre 的档案汇集了一本本子会散落的内容:她与家庭的联系方式、她的课程(吉他,周二 17:30,可点击跳转到课程档案),随后是两段关联的历史——她逐课时的考勤,含缺勤及其可能的补课,以及她逐学期的缴费。
「这个家庭进展如何?」这个问题在一屏之内解决:可以看到 5 月 12 日尚未补的缺勤,以及已缴的春季学期。正是关系型数据库把一切串联起来——无需在一本本子和另一本之间手工转抄。
考勤表:三十秒,不多不少
考勤录入界面为课堂而设计:打开当天的时段,报名学员列表出现,为每人勾选出勤或缺勤,保存。在手机或平板上,点名在三十秒内完成——这是任何考勤表存活的前提。
一条记录的缺勤会自动汇入待补课计数;当补课发生时,把该考勤切换为「已补」,计数随之下降。
仪表盘:校长的三个问题
仪表盘回答日常的三个问题:本周出勤率、待补课数量、逾期缴费金额——并辅以按科目的在读人数,由报名计算得出。
每个数字都是对数据库的一次查询:18:00 填好的考勤表,18:01 就体现在本周出勤率中。按科目的分布一眼看出学校在哪里成长。
演示数据:一所鲜活的学校
Pupitre 交付时即已充实:约五十名姓名合理的学员、三个科目、老师、分布于一周的时段,尤其还有一段历史——数月的考勤及其应有的缺勤,有的已补有的没补,三种状态俱全的缴费。
如此便可在巡航状态而非第一天评估应用:列表是满的,计数显示真实的数值。演示数据会在正式投用前清除。应用运行在自己的专属 URL 上,其完整代码可以导出(ZIP、GitHub)——标准的 Next.js + Prisma。