课程详情页的日历排课模式,按月展示课程记录
双排课模式:每周规律与手选日历,写入层用并发版本号防冲突
AI 陪伴课业打卡Android

轻课记 CourseNote

不是提醒你打卡,是陪你把这件事做下去

面向多门课程并行学习场景的应用。核心不是把课程排成日程,而是让大模型以教练身份进入日常学习动线——它知道你的排课、出勤与薄弱环节,用对话帮你打卡、解读趋势、在坚持不下去的时候说话。日程与统计是它的记忆,不是它的功能。

这个系统证明我们能

  • 大模型产品化落地
  • 对话式交互设计
  • 场景化 AI 分流
  • 复杂排课规则引擎

5

AI 场景分流

1600

对话界面行数

1300+

测试用例

技术实现

具体做了什么

01

AI 陪伴教练

打卡不是点按钮,是跟一个认识你学习状况的角色对话。它能感知你今天有几节课、上周哪些时段总迟到、哪门课在掉队,并据此决定说什么。对话界面在两个场景里独立存在:日常打卡的对话室,以及日程页的每日聊天房间,合计约 1600 行交互代码。

02

五个场景各自的分流

不是把全部历史塞进提示词。AI 服务按每日对话、图表解读、分享文案、统计摘要、断学鼓励五个场景分别构建上下文,各自决定喂哪些数据、用什么语气、返回什么形式。同一套模型在不同场景下表现完全不同,靠的是上下文构建层而不是提示词技巧。

03

排课与不变量

支持每周规律与手选日历两种排课模式,写入层引入并发版本号与断言模块,把重复日期、超出配额、模式冲突等非法状态挡在事务内部,不让脏数据落库。

04

账号体系与服务端鉴权

手机号验证码登录,JWT 安全存储,30 天有效期并支持滑动续期。权限判定与日调用上限在服务端统一裁决,客户端不自行判断权限。

05

工程规模

本地数据库三张集合,Riverpod 状态管理,三Tab 应用骨架,约 1300 个自动化测试用例覆盖核心不变量与边界场景。

技术栈

下面是这套系统实际使用的技术。同一套能力可以直接用于承接企业项目。

FlutterRiverpodIsargo_router云函数MySQLRedis

产品核心

AI 陪伴是差异点,不是附加功能

多门课并行时,真正难的不是把课程排进日历,是让人坚持下去。 提醒类工具的失效点在于它要求用户主动响应; 而对话是被动参与的——它先开口,用户接一句,打卡就在这个过程里完成了。

这里展示的是能力结构而非界面截图:对话内容由模型实时生成, 没有固定形态可以截取,写成界面就成了对产品行为的伪造。

核心能力

大模型场景化分流

同一套模型,五种完全不同的对话方式

差异不在提示词,而在每个场景各自构建的上下文与返回形式

输入

每日对话

掌握当日课次与出勤状态,承接打卡与复盘

干预

断学鼓励

连续缺勤时触发,语气与强度随中断天数调整

分析

图表解读

读取出勤趋势数据,解释变化而非罗列数字

输出

统计摘要

按周期汇总学习状态,生成可读的阶段结论

转化

分享文案

把统计结果转成可对外分享的表达

日程类工具的做法

到点推送提醒,打卡是点一个按钮。用户不点,功能就失效。

CourseNote 的做法

对话本身就是入口。它根据你今天几节课、上周哪些时段总迟到决定说什么, 打卡在对话里完成。

界面实录

实际跑起来的样子

以下截图直接来自项目的界面验证产物,未经修饰。 其中对话类界面的文案为演示数据——AI 回复由模型实时生成, 没有固定的「官方示例」。

课程详情页的日历排课模式,按月展示课程记录
双排课模式:每周规律与手选日历,写入层用并发版本号防冲突
批量排课界面,月历上多选日期标记
批量排课:月历多选、剩余节数提示、软冲突提醒不阻断操作
日历排课界面下方展开当日已有的四条课程记录,并提示时间冲突仍可排课
当天已有 4 条记录:时间冲突只提醒不阻断,非法状态在写入前被拦住
打卡完成后的复盘对话界面,上方是打卡数据回顾,中间是对话记录,底部是输入栏
复盘对话:AI 引用本次打卡数据作答(界面为真实组件渲染,对话内容为演示数据)

关于这套系统的定位

我们是软件开发团队,自研系统主要用于验证工程能力,不是面向公众的商业化产品, 因此不会做推广运营。它的作用是让潜在客户看到—— 我们具备把一个想法完整做成系统的能力。如果你有需要落地的项目, 我们更愿意聊你的具体需求。

讨论你的项目

下一套系统

听词记 AudioVocab

语音辅助单词背诵