Lesson Pack(课时包管家)v1.0 交付说明
对应需求:~/workspace/app-demand-shortlist-v1.md 第 5 名「课时包管家(创意库 i104)」。
产物
- APK:
~/workspace/your_files/LessonPack-v1.0.apk(15.6 MB,debug 签名,可直接安装)
- 源码:
~/workspace/lesson-pack-android/
- 包名:
com.lessonpack.app;versionCode 1 / versionName 1.0;minSdk 24 / targetSdk 34
- 技术栈:Kotlin + Jetpack Compose 纯原生(无 WebView),SQLite 本地存储,英文 UI 优先
- aapt 校验:仅 POST_NOTIFICATIONS + RECEIVE_BOOT_COMPLETED 两个权限,未申请 INTERNET,零联网、无账号属实
需求复核结论(开工前已做)
空位判断未反转,照计划开工,但如实标注一个新竞品。
- 机构端 SaaS 依然是市场主体(Jackrabbit、iClassPro、Class Manager、ProgramChamp 等):家长看到的只是机构系统的附属门户,只能查这一家机构的账,跨机构、无机构系统的小培训班都覆盖不到——这正是清单原来的判断。
- 新发现一个家长端独立产品 Recur(getrecur.app,免费,iOS/Android):多孩子、课程日程、出勤、剩余节数、双人共享都做,定位偏「课程日程与付款周期管理」。另有 Cadence 是更宽的家庭活动/费用中枢。也就是说家长端不再是完全空白,但仍属「竞品稀少」:直接以「预付课时包余额 + 到期作废预警」为核心的极简账本仍未见成型产品。
- 本版差异化据此押在:机构无关的课时包账本(不管机构有没有系统都能记)、到期日一等公民(课時包过期作废是 Recur 这类日程型产品不强调的痛点)、三路提醒(核销即时低量提醒 + 到期前 30 天提醒 + 每日汇总)、完全离线无账号。
第一版 2 个功能(按需求文档原样落地)
- 课时包登记与一键核销:登记字段含机构名、课程名、总课时、有效期、孩子名(可选);首页卡片大字显示剩余课时(X of Y left)+ 进度条 + 状态徽标(正常/剩余不足/即将过期/已过期/已用完),卡片上直接有 Check in 按钮,一键核销一节;详情页可看完整信息、核销、撤销上一次核销(防误点)、核销历史(逐条带时间)、编辑、删除(带确认)。需要关注的包自动排在列表前面。
- 双提醒(本地通知):① 剩余不足——核销后剩余 ≤3 节立即发一条通知(剩余 0 时提示已用完);② 临近过期——到期前 30 天上午 9:00 发提醒;另有每日 9:00 汇总提醒兜底(剩余 ≤3、7 天内到期、已过期但还有课没上的包合并成一条)。全部用 AlarmManager 非精确闹钟实现(不申请精确闹钟权限),开机自动重排、每次打开 App 自愈重排。Android 13+ 首次打开有权限请求,首页横幅 + 设置页双入口引导(含跳转系统通知设置)。
未做(按 v1 范围砍掉)
付费墙/会员、广告、云同步与双人共享、机构端任何功能、课程日程/日历、续费购买入口、多语言 UI、release 签名包。后续迭代候选:多孩子视图筛选、数据导出备份、续费时一键新建包。
已知问题(如实)
- 未做真机/模拟器实测(环境无模拟器),仅完成编译打包 + APK 结构校验。建议真机首验一条链:「新增课时包 → 核销到剩 3 节看即时通知 → 把有效期改到 30 天内看次日 9 点汇总提醒」。
- 提醒为非精确闹钟 + 每日汇总模式,可能有分钟级漂移;强省电 ROM 可能延迟,打开 App 会自愈重排。
- 每日汇总提醒在问题包存在期间每天都会发(有意设计,防遗忘),包处理完(用完/删除/续新包)即停。
- 与机构系统的课时数若有出入,以本 App 的核销历史为家长侧凭证去和机构核对——这是产品定位,不是缺陷,但文案上已在设置页 About 里说明。