一、我们收集什么
我们不收集、不上传、不存储任何个人身份信息。
- 课表数据:你导入的课程信息(课程名、教师、地点、周次、时间等)仅保存在你的设备本地数据库中。
- 教务账号凭据:网页导入时,你在内嵌浏览器里输入的教务账号与密码仅在浏览器会话内使用,App 不读取、不保存、不上传;导入完成后可一键清除该会话。
- 云莓(宿舍开门)凭据与门锁密钥:仅保存在本机,并使用 Android Keystore 的 AES-256/GCM 密钥加密;登录与同步请求由手机直连云莓服务器,App 不中转、不上传、不备份。
- 适配器脚本仓库数据:App 会从导入源仓库下载学校适配脚本索引与脚本文件(默认指向开源适配仓库,也可自定义),下载内容仅为公开脚本代码,不含你的个人信息。
- 考试安排:校园页读取的考试信息(课程、考试时间、考场、座位、考试方式)由 App 在你本人已登录教务系统的内嵌浏览器会话内解析,并加密缓存在本机。其中不含账号与密码,不上传、不参与云备份,可随时在页面内「清空」。
- 洗衣房:你选定的默认门店(名称/地址/公开坐标)与楼栋设备状态快照(空闲/运行中/剩余时间)缓存在本机,均为非敏感的公开信息,明文存储、可随换门店覆盖;不含任何账号、订单或支付数据。定位坐标不落盘。
二、联网行为
联网仅用于:
- 下载学校适配器索引与脚本(来自导入源仓库);
- 在内嵌浏览器中加载你主动选择的教务网站并完成课表导入;
- 宿舍开门的首次登录与手动「同步门锁」(直连云莓服务器);
- 校园页「考试安排」的读取(在你本人的教务系统内嵌浏览器会话内完成,App 不中转);
- 洗衣房的门店与设备状态查询(直连顺水平台
batch.shunshuikj.cn,只读,无需登录、不上传任何用户数据;下单跳转由微信/支付宝客户端完成,App 不碰支付与设备控制)。
宿舍开门在登录一次后,门锁密钥保存在本机,日常开门完全在本机通过蓝牙完成,不再联网。除此之外,App 不会发起任何数据上报、统计埋点、广告或远程配置请求。
内嵌浏览器的传输安全由你访问的教务网站自身决定:部分学校站点仍为 http,此时该页面内的通信不受加密保护,请留意所处网络环境。
三、权限说明
| 权限 | 用途 |
|---|---|
| 网络(INTERNET) | 下载适配脚本(GitHub / jsDelivr)、加载教务网页、宿舍开门首次登录与同步(云莓 base.yunmeitech.com)、洗衣房只读查询(顺水 batch.shunshuikj.cn) |
| 蓝牙(扫描/连接,Android 12+ 为 BLUETOOTH_SCAN/CONNECT) | 连接宿舍门锁并发送开门指令,仅在你点击「开门」时使用,不在后台运行 |
| 位置(仅 Android 11 及以下声明) | 旧版系统的蓝牙扫描机制要求;不读取、不上传你的位置 |
| 大致位置(可选,洗衣房) | 仅在你点「附近门店」时使用一次,用于列出附近门店;不后台采集、不留存轨迹、不上传;拒绝授权不影响任何功能 |
| 指纹/面容(可选) | 开启「开门前验证」后开门本机校验,验证由系统完成 |
| 通知(POST_NOTIFICATIONS) | 课前上课提醒(可关闭) |
| 振动 | 操作反馈(底栏切换、调课落位等) |
| 精确闹钟 | 让课前提醒准点触发 |
| 开机自启 | 重启后恢复课前提醒闹钟 |
| 日历(可选,需授权) | 将课表写入系统日历「不挂科课表」、考试写入「不挂科考试」,并支持分别清空 |
| 文件/照片选择器(无对应系统权限) | 通过系统照片选择器只读你主动选择的背景图片;导出 .ics 时写入你指定的位置。不申请存储权限 |
四、数据存储与删除
- 课程数据保存在应用私有数据库(Room),参与系统备份/换机迁移——这是有意设计,方便换机保留课表,其中不含任何账号凭据;背景图与适配脚本缓存在应用私有目录。
- 云莓凭据、门锁密钥与考试安排缓存均经 Android Keystore AES-256/GCM 加密后存于
campus_prefs.xml;该文件不参与系统云备份与换机迁移(已通过data_extraction_rules.xml/backup_rules.xml显式排除),适配脚本缓存同样排除。 - 写入系统的课程与考试分别保存在系统日历「不挂科课表」「不挂科考试」中,可在 App 内分别清空。
- 卸载 App 即删除全部本地数据。
五、校园功能(宿舍开门、考试安排与洗衣房)
宿舍开门基于开源项目 yunmei_unintelligent(MIT)移植的第三方接口实现。蓝牙仅在你点击「开门」时启动,用于扫描并连接宿舍门锁、发送开门指令,不采集蓝牙轨迹。该接口通过逆向官方客户端获得,可能随官方更新而失效;本功能与云莓智能官方无关联,使用产生的任何后果由使用者自行承担。
「考试安排」兼容正方教务(V9)的学校(实测基准:中国计量大学):在 App 内嵌浏览器里登录教务系统后,读取你本人的考试时间、考场与座位,凭据不落盘(仅浏览器会话),结果加密缓存在本机。该能力向任何第三方不上报。
「洗衣房」直连第三方顺水平台(batch.shunshuikj.cn)只读查询门店与洗衣机/烘干机等设备状态:无需登录、无用户身份、不上传任何数据;定位仅用于一次「附近门店」请求。下单/支付/启动设备均跳转官方小程序完成,App 不调用任何写接口。该接口通过逆向获得,可能随官方更新而失效;本功能与顺水官方无关联。
六、第三方内容
教务网页导入能力基于开源项目「拾光课程表」(Apache-2.0)的桥协议设计与社区适配脚本仓库(MIT),详见仓库 THIRD_PARTY_NOTICES.md。适配脚本在内嵌浏览器中解析你本人有权访问的教务页面内容,解析结果仅写入本地课表。
七、未成年人
本 App 面向在校学生的课表管理场景,不设年龄限制,也不收集未成年人信息。
八、联系方式
- 邮箱:[email protected]
- GitHub Issues:salt-fishes/buguake-timetable
九、声明的可核验性
本项目为开源软件(MIT),政策中的关键声明均有对应实现,可对照仓库 ComposeApp/app/src/main/java/com/buguake/timetable/ 核验:凭据加密(campus/LocalCrypto.kt)、备份排除(res/xml/backup_rules.xml)、会话清除(webimport/ui/ImportWebViewScreen.kt)、离线开门(campus/BleUnlocker.kt)、联网端点(campus/laundry/ShunshuiClient.kt 等)、日历写入(data/CalendarSync.kt)。完整对照表见仓库 PRIVACY_POLICY.md 第九节。
变更记录
- v1.6(2026-09-26):表述修正——考试安排适配范围修正为「兼容正方教务(V9)的学校(实测基准:中国计量大学)」;明确课表数据库参与系统备份/换机(不含凭据),凭据与缓存类文件不参与;联网域名清单补全。无新增数据收集、无新增权限。
- v1.5(2026-09-18):校园页新增「洗衣房」;新增可选「大致位置」权限(仅一次「附近门店」查询用)与第三方域名说明。
- v1.2(2026-09-11):校园页新增「考试安排」;补充对应数据、联网与权限说明。
- v1.1(2026-09-09):宿舍开门改为离线优先;新增可选「开门前验证指纹/面容」与「长按应用图标快速开锁」。
- v1.0(2026-09-08):随 App 1.0 校正,补充网络权限用于连接云莓服务器。
- v0.1(2026-09-08):初稿。
PRIVACY_POLICY.md 的官网镜像;如两处出现歧义,以仓库文件与 App 内呈现为准。