Skip to content

Mashiro0619/Sked

Repository files navigation

Sked

课表与日程管理工具

English   |   简体中文

GitHub release GitHub all releases GitHub Repo stars Flutter License

Get it on Google Play
Get it on GitHub Releases

Sked 是一个面向学生课表和日常安排的管理工具。你可以用它整理课程、周次、节次时间和学校站点,也可以切换到通用日程模式记录事件、提醒和重复安排。应用支持课表导入导出、完整备份恢复,以及通过自定义解析接口辅助导入学校网页或文本 / HTML 课表内容。

截图

主要功能

  • 学生课表:创建、切换、编辑和删除多个课表,按周查看课程安排,并显示当前课程、下一节课程和学期进度。
  • 课程编辑:维护课程名称、地点、教师、周次、节次、关联时间、备注和自定义字段。
  • 节次时间集:复用、编辑、导入和导出节次模板,并在多个课表之间共享。
  • 通用日程:使用独立日程模式管理事件、日历、提醒、重复规则、月视图、日视图、周视图和列表视图。
  • 导入导出:支持课表 JSON 文件、课表 JSON 文本导入 / 导出、通用日程 JSON / ICS、学校站点 JSON、节次模板、分享和完整应用备份 / 恢复。
  • 文本 / HTML 解析导入:在应用内打开学校站点,或粘贴普通课表文本、页面文本、HTML 源码,并通过你自己配置的 OpenAI 兼容接口解析课表。
  • 导入预览:保存前查看解析结果,选择节次时间集,并决定导入为新课表或替换当前课表。
  • 主题与界面:支持浅色、深色、跟随系统、主题色和多彩界面配置,并持续迁移到 Material 3 Expressive 风格。
  • 数据控制:课表、日程和设置默认保存在当前设备;完整备份不包含自定义解析 API 密钥。

数据与隐私

Sked 会在设备或浏览器本地保存学生课表、通用日程、应用设置、节次时间集和学校站点配置。完整应用备份会导出这些数据,但不会包含自定义解析 API 密钥。

只有在你主动执行导入、导出、分享、打开外部链接、检查更新、获取模型列表、学校网页导入或解析课表文本 / HTML 内容时,应用才会访问相关文件、调用系统功能或连接你配置的外部接口。

首次启动应用时会显示隐私政策确认。完整隐私政策可在 https://sked.mashiro.tech/privacy.html 查看。

自定义解析接口

Sked 不内置课表解析接口。学校网页导入和文本 / HTML 解析导入只会使用你在应用内“课表解析设置”填写的 OpenAI 兼容接口。

解析配置包括:

  • Base URL:OpenAI 兼容接口地址,例如 https://api.example.com/v1 或可信内网 http://192.168.1.10:8000/v1
  • API 密钥:发送到该接口的 Bearer Token,应用会尽可能通过平台安全存储保存
  • 模型名称:聊天补全模型名称,可手动填写,也可从自定义接口获取模型列表
  • 自定义提示词:可选;留空时使用应用内置课表解析提示词

请求行为:

  • 获取模型列表会请求你填写的 Base URL 下的 /models
  • 解析课表会请求你填写的 Base URL 下的 /chat/completions
  • 请求会携带你主动提交的普通课表文本、页面文本或 HTML 内容、可选页面标题、页面 URL、当前应用语言和解析提示词
  • 如果使用 http:// Base URL,请只在可信设备、可信网络和可信接口服务中使用,因为内容和 API 密钥可能不受传输层加密保护

贡献

欢迎提交 Issue 和 Pull Request。也欢迎为 assets/school_sites.json 补充学校站点配置。提交前请尽量保持现有隐私边界、数据兼容性和导入导出行为。

开源协议与第三方说明

  • 源码基于 GNU Affero General Public License v3.0 开源。
  • 项目内分发的启动图标及相关平台图标资源包含第三方授权内容,详见 NOTICE
  • Flutter 依赖与第三方库许可可在应用内“设置 -> 开源许可”查看。