Skip to content
ADA-quartPublic

About

ITDC · 成都理工大学课表与智能待办(Android + Web):教务课表导入 → 上课提醒 / 桌面小组件 → LLM 智能排程(非官方 · PolyForm 非商用)

Topics

Resources

Contributing

Security policy

Stars

4 stars

Watchers

0 watching

Forks

Latest commit

 

History

224 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

日日新 应用图标:日历与对勾

智能待办课表 —— 日日新

Day Day New · 本地优先的「智能待办 + 课表」应用
待办按艾森豪威尔四象限管理,交给算法或大模型自动排进课表空档;
教务课表一键导入,提醒、桌面小组件与离线 OCR 图片转待办都在本机完成

苟日新,日日新,又日新。 —— 《礼记·大学》

下载 Android APK · English · 架构说明 · 更新日志

CI 状态 最新版本 平台:Web / Android / PWA 许可证:PolyForm Noncommercial 1.0.0

名字取自《礼记·大学》。本项目是个人开发的课表与待办工具,与商汤科技及其「日日新」(SenseNova)大模型没有任何关系。


这是什么

一个把待办和课表打通的工具:别的待办软件不知道你什么时候有课,别的课表软件不知道你还有多少事要做。

  • 课表侧:从教务系统导入真实课表(周一到周日、七节大节 + 夜间时段),周/日视图、课内待办、上课提醒。
  • 待办侧:四象限管理,写完之后点「智能规划」,算法(或大模型)把待办自动排进课表空档,并遵守作息规则——不排早八前、不排午饭晚饭、课间不足 30 分钟不硬塞、22:00 前必须结束(只有「紧急重要」能用 22:00–22:30 的加时窗口)。
  • 两边合起来:排进课堂的待办会融合进那节课显示;临时有事的待办可以拖到别的时段;一节课上到底要做什么,长按课程就能看到。

默认数据只在本机,网络只在三种情况下用到:调用大模型、拉取教务课表、以及你自己开启的跨设备同步。

界面

日历视图 待办(四象限) 智能规划
日历视图 待办 智能规划
回顾(周报 / streak) 桌面小组件(今天 / 明天 + 待办)
回顾 小组件

核心能力

待办:四象限 + 自动排程

  • 四象限看板:紧急重要 / 重要不紧急 / 紧急不重要 / 普通,每格显示剩余数量,点进去看具体有哪些;点一下看详情、长按删除。
  • 两种排程引擎:配了大模型就走「AI 拆解 + 排程」(返回结果会被客户端算法逐条校验),没配或没网时自动降级为本地规则算法——纯算法也能把待办排进空档。
  • 作息规则四处同口径(客户端算法 / 服务端算法 / 提示词 / 结果校验共用 shared/schedule-policy.ts):
规则 值
最早开始 08:00(更早属于打扰)
最晚开始 21:00;「紧急重要」可放宽到 22:30
最晚结束 22:00;「紧急重要」可到 22:30
课间下限 30 分钟(5 分钟、25 分钟的课间不硬塞)
与下一日程缓冲 5 分钟
保护时段 午餐 11:50–13:00、晚餐 18:00–19:00
单段上限 90 分钟,超出自动拆分并插入休息
  • 课内可做:待办可以标记「可以在上课时做」,排程会把它放进课堂时间并融合到课程块上。
  • 拆分明细:一个 3 小时的待办会拆成多段排,每段都能单独勾掉。
  • 两类提醒各管各的:上课提醒按导入课表在课前 N 分钟推送(课程名 + 时间 + 教室 + 教师,可设静默);待办提醒在已排程开始时间 / 截止时间前推送,提前量用数字框自由填(0 = 到点提醒)。两者是独立通道,互不影响。

课表:教务导入 + 周视图

  • 一键导入:在设置里选「成都理工大学」,填学号密码,走统一认证抓取本学期课表(不需要手动整理 Excel)。
  • 每天首次打开自动同步:开学初课表有变动时不用手动重导;也可以随时点「更新教务课表」。
  • 周视图就是课表格子:七节大节按真实时长分配行高(95/60/40 分钟不再等高),外加一节 21:35–22:30 的「夜」行——在图书馆待到十点半也能排。
  • 课程块:显示课名 + 教室 + 时间;同一节课出现在多行时连起来看;点开看详情,长按可拖动改时间或删除。
  • 补课与调课:课表之外的安排落在「课外」兜底行,不会和上一节课挤在同一格。

图片转待办(多模态 + 离线 OCR)

待办页的「图片」按钮支持把截图直接变成待办,走一条逐级降级的链路:

  1. 多模态直发:把图交给支持视觉的大模型提取待办(一次可出多条,自动跳过已截止的)。
  2. 本机 OCR:模型不支持图片或没网时,用PP-OCRv4(PaddleOCR / RapidOCR 的 ONNX 版,跑在 onnxruntime-web 上)在本机读字,再走文本解析——全程离线,不需要 Google 服务。
  3. 存原文:解析也失败时,把识别到的文字原样存成一条待办,等有网再整理。

OCR 的模型(检测 4.7MB + 识别 10.9MB)不随包分发,在「设置 → 通用设置 → 离线 OCR 扩展」里按需下载,可随时删除。

去掉大模型也能用的纯算法解析覆盖到聊天记录:群聊 / 群公告截图按「消息块」聚合(人名、时间戳、公告控件当作分隔符,OCR 拆行的长消息会重新拼回一条),"收到 / 写错了"这类寒暄与提问不建待办;群公告里没有年份的日期以公告发布日为锚(09/26 发的"10月8日"就是同年 10-08),已截止的按规则跳过,而不是算到明年。

桌面小组件

  • 今天 / 明天两栏课表 + 待办清单,可滚动,待办能直接在桌面打勾。
  • 点任意位置(除打勾区)都能打开 App。
  • 上色与明暗可单独设置:面板色、透明度、浅色 / 深色 / 跟随系统(跟随系统时配色交给 values-night 资源,切主题即时生效,不依赖 App 进程被唤醒)。
  • 背景可以用 App 里选的那张图:边框固定、图片等比裁切,和 App 内看到的画面一致。

回顾与周报

  • 「回顾」页有今天 / 本周两个视图:今天上了多少课、完成了哪些待办、还有哪些逾期。
  • 周报统计本周完成数、投入时长、每天分布、与上周对比,并记录连续记录周数(streak)。
  • 逾期与补账分开算:逾期清单里补上的欠账会单独标注。

个性化外观

  • 背景图:等比裁切 + 焦点拖动,缩放 0.5–3 倍(小于 1 倍时四周用同图模糊放大版填充,不会露底)。
  • 玻璃拟态:日历卡片、课表格子、底部导航可调透明度与模糊;纯透明时自动按背景图明暗切换文字深浅,保证可读。
  • 两层分开调:外观页按「裁切与取景 / 壁纸层 / 面板层」分组——背景图不透明度只管壁纸,面板不透明度管日历、卡片与底部导航;数字输入框(提前量等)在透明模式下与输入框本体同材质,不会一截实一截透。
  • 主题色:内置 8 个预设 + 取色器,App 与小组件可分别设置。
  • 排版:控件高度 44px(对齐 Apple HIG 44pt)、圆角统一为一套 token(6 / 12·8 / 12 / 14),底部导航整块可点。

数据、导入导出与离线

  • 离线优先:断网照常读写,所有操作先落本机,联网后再处理。
  • 导入导出:iCal(.ics)导入导出、导出本周为 Excel(手机端走系统分享面板)。
  • 跨设备同步(可选):填一个同步 ID 即可按记录合并两端数据;也可以自建服务器,或仅用本机模式。

快速开始

  1. 装 APK:到 Releases 下载 itdc-vX.Y.Z.apk,首次安装需允许「未知来源」,通常可以直接覆盖升级。
  2. 导入课表:设置 → 通用设置 → 学校选「成都理工大学」→ 填学号密码 → 导入本学期课表。
  3. 配模型(可选):设置 → LLM 服务配置里填服务商 + API Key。填了就能用 AI 拆解、AI 排程与图片直发;不填也能用本地规则解析与本地排程。
  4. 加待办并排程:待办页新建(或「AI 添加」「图片」)→ 回到「智能规划」点生成。

小组件不刷新时:把「设置 → 应用 → 日日新 → 省电策略」设为无限制(澎湃 OS / MIUI 等默认限制后台,会冻结小组件刷新)。

三种使用模式

模式 数据在哪 需要什么 适用
仅本机(默认) 手机本地数据库 什么都不用配 只想自己用,数据不出手机
跨设备同步 本机 + 同步服务 一个同步 ID 手机 + 平板/网页一起用
自建服务器 自己的服务器 部署 server/ 想完全自己掌控数据

数据与隐私

  • 课表、待办、事件、外观设置默认只存在本机(IndexedDB / 本地数据库)。
  • 大模型 API Key 与教务密码存在系统加密存储(Android Keystore)里,不写进普通配置文件。
  • 只有「调用大模型」「拉取教务课表」「开启同步」这三种操作会联网,且只发送该操作必需的内容。
  • 项目不包含任何统计、埋点或第三方上报 SDK。

技术栈

层 选型
壳与打包 Capacitor 8(Android + PWA 共用一套前端)
前端 React + TypeScript + Vite + Ant Design 5
日历 FullCalendar(月/周/日)+ 自研课表格子组件
桌面小组件 Android 原生 RemoteViews(Java)+ 可滚动列表
离线 OCR PP-OCRv4 ONNX + onnxruntime-web(模型按需下载)
排程算法 本地规则引擎(TypeScript),与服务端共用同一份策略
可选服务端 Node + 同步 / 排程 / 大模型代理(见 server/)
测试 Vitest(覆盖排程、课表解析、同步合并等关键逻辑)

项目结构

src/                 前端(React)
  api/               本地存储、排程引擎、大模型、OCR 安装器
  components/        页面与组件(课表格子、四象限、设置、外观…)
  i18n/              中英文文案
shared/              前后端共用的策略与解析(课表解析、排程策略、提示词)
server/              可选服务端(同步、排程、LLM 代理)
plugins/itdc-widget/ 桌面小组件原生插件(Java)
android/             Capacitor Android 工程
docs/                架构、部署、小组件实现、调研笔记

开发

npm install
npm run dev                 # 浏览器里开发(前端全部功能可跑)
npm run test                # 单元测试
npm run android:sync        # 构建前端并同步到 android/
npm run android:open        # 用 Android Studio 打开

# 直接出 debug APK
./android/gradlew.bat -p android assembleDebug

需要 Node 20+、JDK 21(Android 构建)。发布流程见 docs/DEPLOYMENT.md。

文档

常见问题

小组件不刷新 / 早上显示「打开 App 刷新」? 把省电策略设为「无限制」。刷新时机已对齐课程结束、跨天、解锁与 2 小时兜底,但系统冻结后台时仍要等下一次刷新。

检查更新提示查询频繁? GitHub 接口对匿名请求限流,等一段时间再点,或直接去 Releases 页面看。

教务导入失败? 确认学号密码正确、且当前网络能访问教务系统;导入失败不会影响已有课表。

OCR 要下载多大? 检测 4.7MB + 识别 10.9MB ≈ 15.6MB,装好后完全离线可用,可随时删除。

为什么没排到 22:00 之后? 默认 21:00 后不新开、22:00 前必须结束;只有标成「紧急重要」的待办能用 22:00–22:30 的加时窗口。

已知限制

  • 教务导入目前只适配成都理工大学(其他学校可参考 shared/cdut-parser.ts 扩展)。
  • 本机 OCR 面向手机截图(横排文字);倾斜与竖排文字不支持。
  • 桌面小组件是 Android 原生实现,iOS 端暂无计划。

贡献

欢迎提 Issue 与 PR:报 bug 请附版本号、机型与复现步骤;改动请保持 npm run test 与 npx tsc --noEmit 通过,并在 CHANGELOG.md 的未发布段落记录。

开源许可

  • 本项目代码采用 PolyForm Noncommercial License 1.0.0:允许个人非商业使用与修改,禁止商业用途。
  • 第三方依赖与模型许可见 THIRD-PARTY-NOTICES.md(OCR 模型为 PaddleOCR / RapidOCR,Apache-2.0)。
  • 应用名「日日新」取自《礼记·大学》,与商汤科技及其「日日新」(SenseNova)大模型无任何关联。

About

ITDC · 成都理工大学课表与智能待办(Android + Web):教务课表导入 → 上课提醒 / 桌面小组件 → LLM 智能排程(非官方 · PolyForm 非商用)

Topics

Resources

Contributing

Security policy

Stars

4 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages