{
  "version": "1.0",
  "updated": "2026-10-17",
  "languages": {
    "zh-Hans": {
      "privacy": {
        "title": "雨水提醒隐私政策",
        "intro": "雨水提醒需要由提醒服务持续连接雨课堂并向你的设备推送消息。因此，它会在服务端处理账号授权、课程与通知数据。请在连接和授权前了解以下范围。",
        "sections": [
          {
            "title": "1. 适用范围与维护者",
            "paragraphs": [
              "雨水提醒是 Sparkle 旗下的独立课堂动态提醒 Web App，由唐梓耀 / AdrianSparkle、丁铭 / EliasSparkle 共同创作和维护。本政策适用于 Sparkle 提供的雨水提醒实例、其设备连接、雨课堂扫码授权、课堂监测与 Web Push 通知。",
              "它不是雨课堂官方产品，也不代表学校、教师、雨课堂、微信、Apple 或浏览器厂商。你使用这些独立服务时，还需阅读相应服务的隐私规则。其他人自行部署的实例由实际运营者另行说明，不当然适用本实例的托管地点和管理安排。"
            ]
          },
          {
            "title": "2. 账号资料、课程与登录凭证",
            "paragraphs": [
              "在你使用管理员提供的连接码并通过官方二维码确认登录后，服务接收雨课堂返回的账号 ID、姓名或昵称、学校及学号（以平台实际返回为准），以及所听课程、课堂 ID、名称、教师与相关组织标识，用于识别你的账号和展示课程。",
              "服务还会在服务端保存官方登录 Cookie、会话授权与必要的课堂令牌，以便在你关闭页面后继续查询。我们不要求、也不存储你的雨课堂或微信密码。Cookie 和令牌能够代表登录权限，属于需要特别保护的凭证；扫码不是仅在手机本地保存授权。"
            ]
          },
          {
            "title": "3. 课堂动态及其他人的信息",
            "paragraphs": [
              "服务查询正在上课状态、必要的学习日志及签到方式，并在你启用课内提醒后接收官方课堂事件流。保留字段包括课程与课堂名称、事件类型、事件标识、平台时间或发现时间及通知所需摘要。",
              "随机点名事件可能包含教师向课堂公布的被点名者姓名和学号；这些内容可能存入加密事件记录并出现在通知正文中，可能涉及同班其他人。请谨慎使用锁屏预览及共享设备，不要将这些内容继续公开传播。服务不以这些数据建立学生画像。",
              "当前实现不将题目正文或答案作为持久化提醒内容保存，不代答题、不响应点名或抢答，也不获取设备定位。但启用课内提醒后，平台明确为普通签到的课堂可能由服务自动发送进入课堂请求，该操作可能改变官方出勤状态；受限签到规则见服务条款。"
            ]
          },
          {
            "title": "4. 设备连接、通知与技术信息",
            "paragraphs": [
              "我们处理随机设备标识、连接会话的哈希、设备名称、创建时间、最近打开时间、30 天有效期、账号关联及各项提醒开关。默认设备类别根据浏览器 User-Agent 判断，你可自行修改名称。",
              "开启通知时，浏览器提供推送端点、p256dh 公钥及 auth 密钥；服务保存订阅，用于向该设备推送。我们还保存发送次数、接受或失败状态、时间和随机回执的哈希，以排错、去重和确认系统处理情况。回执不证明你本人看见、听见或阅读了通知。",
              "提供网络服务必然处理 IP 地址、请求头、来源、连接时间和错误信息；IP 也用于内存中的防滥用限流。当前应用没有广告或行为分析 SDK，不以这些信息进行跨站跟踪或出售个人信息。基础设施和通信提供方可以依其自身规则处理技术日志。"
            ]
          },
          {
            "title": "5. 处理目的与授权边界",
            "paragraphs": [
              "上述信息用于建立设备连接、识别你授权的账号、查询和展示课堂、推送所选事件、维护会话、迁移入口、保护安全、排障和灾难恢复。账号与课程不是用于广告、商业画像或 AI 训练。拒绝扫码授权则无法读取课程；拒绝通知权限仍可在已登录页面查看信息，但不能向该设备发送系统通知。",
              "敏感凭证、其他学生信息以及跨地区处理应按适用法律履行必要的告知、合法性基础及同意程序。本政策说明实际数据流，不将浏览本页、输入连接码或扫描二维码一概视为已经完成所有依法需要的单独同意。你不应授权自己无权提供的账号或资料。"
            ]
          },
          {
            "title": "6. Cookie、浏览器存储与权限",
            "paragraphs": [
              "设备连接使用 rain_session Cookie。服务端保存其哈希；在 HTTPS 下该 Cookie 带有 Secure、HttpOnly 及 SameSite=Strict 属性，最长随设备连接维持 30 天，续期会重新设置。它用于认证，不是广告 Cookie；退出雨课堂账号不等于自动清除此设备连接 Cookie。",
              "Service Worker 用于 Web Push 和通知点击，不缓存账号页面作为离线课堂状态。通知订阅由浏览器维护；添加到主屏幕与允许通知是独立操作。当前页面不申请相机、麦克风、定位或通讯录权限。官方客户端扫码、签到所用权限由其自行管理。"
            ]
          },
          {
            "title": "7. 接收方、处理位置与跨地区传递",
            "paragraphs": [
              "Sparkle 当前提供的实例运行在腾讯云中国香港节点。若你位于中国内地或其他地区，提交给该实例的账号资料、Cookie、课程、课堂事件及设备订阅会传到香港处理和保存。授权请求还会与雨课堂官方接口及课堂事件服务通信。",
              "Web Push 根据浏览器使用 Apple、Google、Mozilla 或 Microsoft 等推送基础设施，相关服务可能位于其他国家或地区；服务会向订阅端点发送加密推送载荷及必要路由信息，浏览器和操作系统负责呈现。通知明文最终可出现在设备上，推送加密不表示整个提醒服务端无法读取。",
              "当前域名由 Cloudflare 提供注册与 DNS 服务，按现有配置业务流量不经过其 CDN 代理；DNS 服务仍可能处理解析所需信息。我们不出售或出租个人信息。依法披露、必要的安全处置或你明确指示的其他传递，应限于相应必要范围。"
            ]
          },
          {
            "title": "8. 加密与安全措施的限度",
            "paragraphs": [
              "账号资料、课程缓存、登录 Cookie、课堂凭证、事件载荷和推送订阅以 AES-256-GCM 加密保存。账号与设备标识、关联关系、开关、时间、状态及其他运行字段并非整库逐项加密。数据库与主密钥由同一服务主机管理，因此这不是能抵御服务器完全失陷的端到端加密。",
              "服务采用 HTTPS、会话哈希、来源校验、请求限流及限定推送端点等措施。管理者进行授权运维时可能具备解密所需权限。若发生个人信息安全事件，我们会采取补救措施，并依适用法律向受影响者和有关机关通知；通知会说明所涉信息、可能影响、处置措施及联系途径。我们不承诺绝对安全；请只在你信任的设备上连接，不转交连接码、Cookie、迁移链接或系统通知。"
            ]
          },
          {
            "title": "9. 在线数据的保存期限",
            "paragraphs": [
              "设备连接自创建或手动续期起为 30 天；到期后不能继续用该会话访问。官方登录失效会暂停相关监测。当账号最后一个仍有效的关联设备退出、被撤销或到期后，服务会在相应退出处理或定期维护中清空该账号的登录 Cookie 及已保存课堂凭证，并暂停连接。",
              "已结束课堂及其提醒记录、非当前课堂的历史事件和模拟推送记录，按代码中的 90 天阈值在定期维护时清理；活跃课堂及受保护的相关记录可能超过该期限。迁移凭证一次有效、5 分钟到期。",
              "当前实现没有为所有账号档案、课程缓存、设备元数据、状态字段及备份设置统一的自动删除期限。30 天连接或 90 天历史规则不等于整账号在该时点彻底删除；如不再使用并希望删除其余数据，请向维护者提出请求。没有自动清理机制不等于获得无限期保留的授权；处理目的不再必要或依法应当删除时，我们会依法处理，并核对需人工清理的范围。"
            ]
          },
          {
            "title": "10. 备份、支持资料与清理范围",
            "paragraphs": [
              "为恢复服务，备份任务保存数据库快照、服务密钥、推送密钥及来源配置。导出备份采用随机 AES-256-GCM 数据密钥与独立 RSA-OAEP 公钥封装，解密私钥另行保管；但云端还可能保留受文件权限保护的 SQLite 快照，且同机运行数据可由主机权限访问。备份的保护程度因此取决于副本类型及存放位置。",
              "现有备份流程未设置统一自动过期时间，离线导出副本也可能继续保留。删除在线数据不立即清除历史备份。提出删除请求时可要求说明剩余备份、保留理由及处置安排；需人工核实，不能承诺尚未实现的一键即时抹除。支持对话和你主动提交的附件按处理事项的必要范围保留，不用于广告或训练。"
            ]
          },
          {
            "title": "11. 关闭、退出、撤销与删除请求",
            "paragraphs": [
              "你可分别关闭五类提醒、在系统中撤销通知、退出本设备的雨课堂登录、查看并撤销同账号其他设备，或不再续期连接。关闭某个开关仅停止该设备该类提醒；其他设备开启时账号仍可能继续监测。退出会解绑本设备并清除其服务端推送订阅，浏览器本身的授权或订阅状态可能仍需在系统设置中管理。",
              "在最后一个有效关联设备退出后释放登录凭证，不代表账号档案、历史、其他设备元数据或备份全部删除。当前产品没有整账号自动删除按钮。你可联系维护者申请了解、访问、复制、更正、删除、限制处理、撤回授权或处理其他人的信息异议。"
            ]
          },
          {
            "title": "12. 请求核实、法定义务与救济",
            "paragraphs": [
              "我们会以与风险相称的方式确认请求与账号的关系，仅索取处理该请求所必要的信息；不要发送登录 Cookie、密码或迁移凭证。请求应依法及时处理。因技术隔离、备份、争议或法定保留义务不能立即全部处理时，应说明原因、范围及后续安排；法律要求停止其他处理时，保留的数据仅用于必要存储与安全保护，不恢复用于日常监测。备份恢复需核对已经处理的权利请求。产品现有按钮不限制法律赋予的权利。你可向有管辖权的监管机关投诉。"
            ]
          },
          {
            "title": "13. 未成年人及学习场景",
            "paragraphs": [
              "本服务面向能够合法授权其账号与设备的使用者。未成年人应在监护人及适用学校规则允许的范围内使用；不面向未满 14 周岁儿童主动提供账号连接服务。当前没有年龄核验机制；如发现未经所需授权处理儿童信息，可联系维护者核实并依法处置。",
              "课堂中的姓名、学号与动态只用于提醒目的，不应据此评价他人的出勤或学习表现；实际学校与教师记录以官方渠道为准。"
            ]
          },
          {
            "title": "14. 政策更新与语言版本",
            "paragraphs": [
              "新增数据类别、处理目的、托管地点或接收方等重要变化，会反映在本页并更新日期。依法需要额外告知、单独同意或其他程序时，不能仅以修改文字或继续使用替代。三个语言版本旨在表达相同范围；差异不减损适用法律赋予你的权利。"
            ]
          },
          {
            "title": "15. 联系我们",
            "paragraphs": [
              "隐私咨询、权利请求、产品支持或侵权通知，可联系维护者唐梓耀 / AdrianSparkle：QQ 2410710390；开发者公开主页为 https://github.com/Tang1206cc。请说明产品名称、所用版本及请求事项。首次联系请勿发送账号密码、登录 Cookie、连接码、完整录制或其他不必要的个人信息。",
              "请在请求中注明“雨水提醒”和希望处理的范围；涉及其他被点名者信息时，可提供最小化的事件时间与课程线索，无需公开完整姓名和学号。"
            ]
          }
        ],
        "links": []
      },
      "terms": {
        "title": "雨水提醒服务条款",
        "intro": "雨水提醒提供辅助性的课堂动态提示。请特别留意账号授权、普通签到可能发生的实际操作，以及推送无法保证及时送达的边界。",
        "sections": [
          {
            "title": "1. 范围、提供者与条款接受",
            "paragraphs": [
              "本条款适用于 Sparkle 由唐梓耀 / AdrianSparkle、丁铭 / EliasSparkle 维护的雨水提醒 Web App 与提醒实例。请在连接服务、授权账号和开启提醒前阅读；不同意时不要进行这些操作。依法需要单独同意或监护人同意的事项，不能仅由继续使用推定。"
            ]
          },
          {
            "title": "2. 独立工具及官方渠道",
            "paragraphs": [
              "雨水提醒不是雨课堂、学校或教师的官方产品，与雨课堂、微信、Apple 及浏览器厂商不存在由本页面声明的合作、代理或背书。课程安排、作业、考勤和成绩以学校、教师及雨课堂官方记录为准。",
              "本产品只作辅助提醒，不替代官方客户端、课堂通知、手动核查和本人参加课程的义务。当前并非对所有课前、课后作业、考试或学校通知提供全覆盖提醒。"
            ]
          },
          {
            "title": "3. 使用资格与可信连接",
            "paragraphs": [
              "你应有权使用相应雨课堂账号和设备，并遵守学校、教师及上游平台的使用规则。不得代为连接未授权账号、借用他人会话或传播管理员连接码。未成年人使用须具备适用法律要求的监护授权；未满 14 周岁请勿连接账号。",
              "只确认由你发起的官方登录二维码；不要向维护者、网页输入框或陌生人提交账号密码。获得服务连接码并不等于已经取得雨课堂账号访问权。"
            ]
          },
          {
            "title": "4. 你授予的处理范围",
            "paragraphs": [
              "扫码确认后，提醒服务需要在服务端保存并使用官方登录凭证，以查询账号、课程、正在上课状态和通知所需课堂事件，并向你登记的设备发送消息。详细数据、接收方、香港托管和保存规则见隐私政策。",
              "启用提醒前，请确认理解该处理范围。维护者不会把服务授权解释为读取所有无关资料、对外发布你的课程信息、营销或 AI 训练的许可。"
            ]
          },
          {
            "title": "5. 课内提醒与签到的实际影响",
            "paragraphs": [
              "开启课堂内练习、随机点名、抢答或弹幕提醒后，服务会按平台返回的规则取得课堂授权。平台明确标记普通签到时，服务可能自动发送进入课堂请求，该请求可能在官方平台产生进入或签到记录；不能将本服务描述为完全没有写入操作的只读工具。",
              "动态二维码、位置或未确认方式等受限签到，须等待你在官方客户端完成相应要求后再监听；服务不伪造位置、破解二维码或代替必要的本人确认，不代答题、不响应点名或代为抢答。学校或教师不允许自动进入时，请不要启用相关课内提醒。官方记录始终由平台决定。"
            ]
          },
          {
            "title": "6. 通知开关、测试与显示内容",
            "paragraphs": [
              "五类提醒分别按设备设置；开启系统通知与具体提醒开关是不同授权。推送测试会发送标注为模拟的五类消息，即使相应开关关闭也可能发送，但不会改变开关。测试可达不证明真实课堂事件源已经接通。",
              "点名通知可能显示课堂公开的被点名者姓名和学号，其他通知会显示课程和事件摘要。请管理锁屏预览和共享设备，不公开转发其他学生的信息。平台未提供可信开课时间时，页面显示的是发现时间。"
            ]
          },
          {
            "title": "7. 及时性与可靠性边界",
            "paragraphs": [
              "正常情况下约 5 秒查询与课堂事件连接并行工作，但它不是送达时限或服务等级承诺。平台接口变化、网络、服务维护、系统省电、通知权限、推送厂商、浏览器退出策略、登录失效及连接到期，均可能造成延迟、遗漏、重复或停止。",
              "“推送服务已接受”表示请求被其接受；“设备已接收”表示系统处理回执，不等于用户已阅读或听见。请持续检查官方渠道，勿将本工具作为考勤、考试或重要截止日期的唯一保障。"
            ]
          },
          {
            "title": "8. 多设备、有效期与入口迁移",
            "paragraphs": [
              "设备连接通常为 30 天，可手动续期。你应检查同账号设备并撤销陌生连接；更换连接码不自动撤销已经连接的设备。官方授权失效或连接到期会影响监测与提醒。",
              "正式入口与保留的旧入口属于不同浏览器来源。迁移使用 5 分钟内一次有效的凭证，转移账号、设置及所需历史；新来源通知权限仍需重新授权。迁移链接具有临时访问能力，不应转发。旧订阅停用规则以新订阅实际登记状态为准。"
            ]
          },
          {
            "title": "9. 合理使用与禁止行为",
            "paragraphs": [
              "不得借本服务绕过学校或平台的访问控制、伪造出勤、窃取或共享凭证、抓取无关人员资料、实施骚扰或侵权、恶意刷推送、攻击接口或转售未经授权的访问。不得把课程、姓名、学号及学习动态用于广告画像或公开曝光。",
              "正常使用仍应符合上游平台及学校规则；本产品无法替你取得第三方授权。发现异常设备或错误发送时，请及时关闭相关提醒、撤销设备并联系维护者。"
            ]
          },
          {
            "title": "10. 可用性、费用、支持与变更",
            "paragraphs": [
              "当前为公测阶段，不承诺永久可用、永久免费、固定响应时间或特定容量。任何实际收费、订阅或新增重要使用条件都应在生效前明确展示并履行必要程序，本条款本身不创建付款义务。",
              "为维护、安全、资源约束或上游变更，可能调整或暂停服务；在可合理预见的情况下，应提供适当说明与迁移、导出或停止使用的指引。紧急风险处置可先采取必要措施，并在适当时说明，不以此排除法定义务。"
            ]
          },
          {
            "title": "11. 退出、暂停与终止",
            "paragraphs": [
              "你可以关闭提醒、退出账号、撤销设备或停止使用。最后一个有效设备解绑后释放登录凭证，但账号档案、历史和备份的删除规则另见隐私政策；停止使用不自动完成整账号删除。",
              "对于明显滥用、侵权或安全风险，可在必要范围限制相关连接；适当时应说明理由并允许反馈或纠正。服务终止后依法存续的保密、知识产权与数据保护义务仍有效。"
            ]
          },
          {
            "title": "12. 权利、保证与责任",
            "paragraphs": [
              "你保留自己资料的权利；第三方课程资料归相应权利人。本服务不会因处理数据而取得任意使用或再授权的权利。产品使用许可与开源组件另见“许可证”和“第三方声明”。",
              "在法律允许范围内，服务按实际可用状态提供，不保证无错、持续运行或每条消息及时送达。损失责任依实际事实、过错及适用法律确定。本条款不免除故意、重大过失、人身损害、违法处理个人信息或其他依法不得免责的责任，不削减强制性消费者救济。"
            ]
          },
          {
            "title": "13. 争议、解释与更新",
            "paragraphs": [
              "有疑问或争议可先联系维护者；你仍可向依法有管辖权的法院或监管机关寻求救济，不受强制仲裁、指定境外法院或放弃法定权利的限制。个别条款不能执行时，其余独立有效条款继续适用。",
              "重要修订会更新日期并按适用法律履行通知或同意程序。三个语言版本力求同义，不以翻译差异排除当地法律保护。"
            ]
          },
          {
            "title": "14. 联系方式",
            "paragraphs": [
              "隐私咨询、权利请求、产品支持或侵权通知，可联系维护者唐梓耀 / AdrianSparkle：QQ 2410710390；开发者公开主页为 https://github.com/Tang1206cc。请说明产品名称、所用版本及请求事项。首次联系请勿发送账号密码、登录 Cookie、连接码、完整录制或其他不必要的个人信息。"
            ]
          }
        ],
        "links": []
      },
      "licenses": {
        "title": "雨水提醒软件与服务许可证",
        "intro": "本许可说明 Web App 自有代码和界面可如何使用。访问服务不等于获得源码再分发、独立部署或使用 Sparkle 品牌的授权；第三方开源组件另按各自许可证处理。",
        "sections": [
          {
            "title": "1. 权利人与适用范围",
            "paragraphs": [
              "雨水提醒的原创代码、界面、图形及文档由其各自权利人保留权利，Sparkle 由唐梓耀 / AdrianSparkle、丁铭 / EliasSparkle 共同维护。本许可适用于维护者提供的 Web App 客户端与服务访问，不改变第三方内容及开源软件的授权。"
            ]
          },
          {
            "title": "2. 有限访问与客户端使用",
            "paragraphs": [
              "在遵守服务条款的情况下，授予你有限、非独占、不可转让、不可再许可的权利，在你拥有或获准使用的设备上访问实际开放的服务、加载运行随页面提供的客户端代码，并使用浏览器“添加到主屏幕”等正常安装功能。可按产品支持的方式连接本人有权授权的账号。"
            ]
          },
          {
            "title": "3. 未授予的自有代码权利",
            "paragraphs": [
              "浏览器能够查看或下载脚本，不等于原创代码已按开源许可证发布。除法律允许或另有书面授权外，不得复制分发产品本体、修改并运营自有服务、将其打包销售、出租、再许可、移除权利声明，或将后台接口作为未经许可的商业服务提供。使用自己账号合法产生的数据不受此项软件权利保留限制。"
            ]
          },
          {
            "title": "4. 法定例外与安全研究",
            "paragraphs": [
              "本许可不限制适用法律允许的备份、互操作性、安全研究或其他不可被合同排除的权利。研究不得以非法取得账号凭证、侵害他人隐私或破坏线上服务为手段；报告漏洞时请提供最小必要的复现信息，不公开有效密钥或用户资料。"
            ]
          },
          {
            "title": "5. 第三方开源许可的优先效力",
            "paragraphs": [
              "服务使用 Express、qrcode、tough-cookie、web-push 及其依赖。具体版本、版权和许可文本见第三方声明；其中包含 MIT、ISC、BSD-3-Clause、Apache-2.0 与 MPL-2.0，不能把它们一概称为 MIT。",
              "各组件可依法依其许可证使用、修改或分发，本许可对自有软件的限制不适用于与组件独立许可冲突的范围。web-push 适用 MPL-2.0；本页提供其所用版本的组件源码副本。组件源码的提供不包含对整个雨水提醒项目的开源授权。"
            ]
          },
          {
            "title": "6. 数据、平台与商标",
            "paragraphs": [
              "本许可不授予雨课堂课程内容、其他学生资料或官方平台接口的额外使用权。你对自己资料依法享有的权利保持不变。Sparkle、雨水提醒及第三方品牌、标识的权利各自保留；不得冒用官方身份或声称获得未存在的合作、认证或背书。"
            ]
          },
          {
            "title": "7. 无独立部署或转售承诺",
            "paragraphs": [
              "本服务的访问许可不包含后台源码交付、服务器运维、服务转售或独立部署授权。需要这些权利时，应另行取得明确许可。开发目录中存在 package.json、依赖清单或可阅读源码，不等于自有项目已经授予通用开源许可。"
            ]
          },
          {
            "title": "8. 期限、终止与更新",
            "paragraphs": [
              "本许可在你依法使用所提供客户端与服务期间适用。你可以停止使用并移除主屏幕入口；严重违反许可或服务条款时，可依法限制相关访问，在适当且可补救时给予合理改正机会。终止不影响你的法定数据权利、此前责任及独立开源许可证的效力。",
              "更新未另附条款时继续适用本许可。服务访问不保证永久在线、任何特定版本持续维护或无限期兼容；重要变更应依服务条款和适用法律处理。"
            ]
          },
          {
            "title": "9. 保证与责任",
            "paragraphs": [
              "在法律允许范围内，软件和服务按实际可用状态提供，保证和责任范围以服务条款、实际承诺及适用法律确定。任何表述均不排除法定消费者保护、不得免责的个人信息保护义务、故意或重大过失责任及其他强制性权利。"
            ]
          },
          {
            "title": "10. 许可咨询",
            "paragraphs": [
              "隐私咨询、权利请求、产品支持或侵权通知，可联系维护者唐梓耀 / AdrianSparkle：QQ 2410710390；开发者公开主页为 https://github.com/Tang1206cc。请说明产品名称、所用版本及请求事项。首次联系请勿发送账号密码、登录 Cookie、连接码、完整录制或其他不必要的个人信息。",
              "团队部署、源码授权、商业合作或品牌使用请说明具体用途并联系权利人；未明确授予的自有软件权利予以保留。"
            ]
          }
        ],
        "links": []
      },
      "notices": {
        "title": "雨水提醒第三方与开源声明",
        "intro": "组件清单依据当前工程的 package-lock.json 与实际安装包核对，收录 110 个生产依赖包。原始版权声明和许可条件可在下方完整下载；它们不代表整个产品采用相同许可。",
        "sections": [
          {
            "title": "1. 主要依赖与用途",
            "paragraphs": [
              "Express 5.3.0（MIT）用于 HTTP 路由；qrcode 1.5.4（MIT）用于生成登录二维码；tough-cookie 6.0.2（BSD-3-Clause）用于官方会话 Cookie 管理；web-push 3.6.7（MPL-2.0）用于 Web Push 请求与加密。完整传递依赖按安装位置分别列入原始声明，不以四个主依赖代替全部清单。"
            ]
          },
          {
            "title": "2. 原文、对应源码与适用范围",
            "paragraphs": [
              "下载文件保留所核对安装包中的 LICENSE、LICENCE、COPYING 或 NOTICE 原文。http_ece 1.2.0 安装包未附独立许可文本，其 MIT 文本取自对应上游 v1.2.0 标签并记录来源。web-push 的实际组件源码、README、package.json 和许可证另以 ZIP 提供，便于查阅 MPL 覆盖文件。",
              "清单描述当前工程使用的生产依赖，不表示每个服务器依赖都会被发送到浏览器，也不替代日后分发 Node.js、操作系统或其他新增软件时需要随附的声明。上游原文保留原语言，以相应许可证文本确定组件权利。"
            ]
          },
          {
            "title": "3. 平台关系与数据处理",
            "paragraphs": [
              "雨课堂、微信及浏览器通知基础设施由各自权利人运营。本产品通过账号授权和相关技术接口提供独立提醒，不代表这些主体认可本产品。使用 Apple 设备、主屏幕 Web App 或 Web Push 不表示产品由 Apple 制作、审核或担保。各平台的个人信息处理和本服务的数据流分别见相应政策及本产品隐私政策。"
            ]
          },
          {
            "title": "4. 权利与安全反馈",
            "paragraphs": [
              "如你认为组件清单、署名、源码提供或版权说明存在遗漏，请向维护者说明包名、版本和依据，我们会核实并更正。报告安全问题时请勿公开用户凭证。",
              "隐私咨询、权利请求、产品支持或侵权通知，可联系维护者唐梓耀 / AdrianSparkle：QQ 2410710390；开发者公开主页为 https://github.com/Tang1206cc。请说明产品名称、所用版本及请求事项。首次联系请勿发送账号密码、登录 Cookie、连接码、完整录制或其他不必要的个人信息。"
            ]
          }
        ],
        "links": []
      }
    },
    "en": {
      "privacy": {
        "title": "Rain Alert Privacy Policy",
        "intro": "Rain Alert connects to Rain Classroom through a reminder service and sends notifications to your devices. It therefore processes account authorization, course information, and notification data on a server. Review this scope before connecting or authorizing an account.",
        "sections": [
          {
            "title": "1. Scope and maintainers",
            "paragraphs": [
              "雨水提醒 (Rain Alert) is an independent classroom-event reminder Web App under Sparkle, created and maintained by 唐梓耀 / AdrianSparkle and 丁铭 / EliasSparkle. This policy covers the Sparkle-operated instance, device pairing, Rain Classroom QR authorization, classroom monitoring, and Web Push.",
              "It is not an official product of Rain Classroom and does not represent schools, teachers, Rain Classroom, WeChat, Apple, or browser vendors. Their services have separate privacy rules. Independently operated instances require disclosures from their own operators; our hosting and administration arrangements do not automatically apply to them."
            ]
          },
          {
            "title": "2. Account details, courses, and credentials",
            "paragraphs": [
              "After you enter an administrator-provided connection code and confirm login through the official QR flow, the service receives the account ID, name or nickname, school, and student number returned by Rain Classroom, along with enrolled courses, classroom IDs, names, teachers, and related organization identifiers. These identify the account and display courses.",
              "The server also stores official login cookies, session authorization, and necessary classroom tokens to continue querying after you close the page. We neither request nor store your Rain Classroom or WeChat password. Cookies and tokens can represent login authority and require special protection. Scanning does not keep authorization solely on your phone."
            ]
          },
          {
            "title": "3. Classroom events and information about others",
            "paragraphs": [
              "The service queries ongoing classes, necessary learning logs, and check-in modes. With in-class reminders enabled, it receives the official classroom event stream. Stored notification fields include course and classroom names, event types and identifiers, platform or detection times, and necessary summaries.",
              "Random-selection events can contain names and student numbers announced to the class by the teacher. These may be stored in encrypted event records and shown in notification bodies, including information about classmates. Manage lock-screen previews and shared devices carefully and do not republish these details. The service does not use them to profile students.",
              "The current implementation does not persist question bodies or answers as reminder content, answer questions, respond to roll calls or rapid answers, or obtain device location. However, enabling in-class reminders can cause an automatic classroom-entry request for a platform-confirmed ordinary check-in; it may change official attendance status. Restricted check-in rules are explained in the Terms of Service."
            ]
          },
          {
            "title": "4. Devices, notifications, and technical information",
            "paragraphs": [
              "We process random device identifiers, hashed connection sessions, device labels, creation and last-opened times, 30-day expiry, account associations, and reminder switches. The initial device category is derived from the browser User-Agent; you may rename it.",
              "When you enable notifications, the browser supplies a push endpoint, p256dh public key, and auth secret. The server stores the subscription to send to that device. Delivery attempts, accepted or failed status, timestamps, and hashes of random receipts support troubleshooting, deduplication, and confirmation of system handling. A receipt does not prove that you saw, heard, or read a notification.",
              "Providing a network service involves processing IP addresses, request headers, origins, connection times, and error information. IP addresses also support in-memory abuse-rate limiting. The current app has no advertising or behavioral analytics SDK and does not use these data for cross-site tracking or selling personal information. Infrastructure and communication providers may process technical logs under their own rules."
            ]
          },
          {
            "title": "5. Purposes and authorization boundaries",
            "paragraphs": [
              "These data support pairing, identifying your authorized account, querying and displaying classes, sending selected events, maintaining sessions, migrating origins, protecting security, troubleshooting, and recovery. Account and course data are not used for advertising, commercial profiling, or AI training. Without QR authorization, courses cannot be read. Without notification permission, a signed-in page can still display information but cannot send system notifications to that device.",
              "Sensitive credentials, information about classmates, and cross-region processing require the notices, lawful grounds, and consent procedures applicable under law. This policy explains actual flows. Viewing it, entering a code, or scanning a QR code is not treated as satisfying every separately required consent. Do not authorize accounts or information you have no right to provide."
            ]
          },
          {
            "title": "6. Cookies, browser storage, and permissions",
            "paragraphs": [
              "Device connection uses a rain_session cookie; the server stores its hash. Over HTTPS it has Secure, HttpOnly, and SameSite=Strict attributes and lasts up to 30 days with the device connection, resetting upon renewal. It is an authentication cookie, not an advertising cookie. Signing out of Rain Classroom does not automatically clear this device-connection cookie.",
              "A Service Worker handles Web Push and notification clicks. It does not cache account pages as an offline representation of live classroom state. The browser maintains its push subscription. Adding to the home screen and allowing notifications are separate actions. The current page does not request camera, microphone, location, or contacts access. Official clients separately manage permissions used for scanning and check-in."
            ]
          },
          {
            "title": "7. Recipients, hosting, and international transfers",
            "paragraphs": [
              "The current Sparkle-operated instance runs on Tencent Cloud in Hong Kong, China. If you are in mainland China or another region, account details, cookies, courses, events, and device subscriptions sent to this instance are transferred to and stored in Hong Kong. Authorization and monitoring also communicate with official Rain Classroom APIs and classroom-event services.",
              "Depending on the browser, Web Push uses infrastructure such as Apple, Google, Mozilla, or Microsoft, which may process data in other countries or regions. The service sends encrypted push payloads and necessary routing information to the subscription endpoint; browsers and operating systems display them. Plaintext notifications can appear on the device. Push encryption does not mean the reminder server cannot read the underlying data.",
              "Cloudflare currently provides domain registration and DNS. Under the existing configuration, application traffic does not pass through its CDN proxy; DNS processing still involves necessary query information. We do not sell or rent personal information. Disclosures required by law, necessary security handling, or other transfers you expressly direct should be limited to the relevant purpose."
            ]
          },
          {
            "title": "8. Encryption and security limits",
            "paragraphs": [
              "Account profiles, course caches, login cookies, classroom credentials, event payloads, and push subscriptions are stored using AES-256-GCM. Account and device identifiers, associations, switches, times, statuses, and other operational fields are not all individually encrypted. The database and master key are managed on the same host; this is not end-to-end encryption that withstands full server compromise.",
              "The service uses HTTPS, session hashing, origin checks, rate limiting, and restricted push endpoints. Authorized administrators may have access needed for decryption. For a personal-information security incident, we will take remedial action and notify affected people and authorities as required by applicable law, explaining the information involved, possible impact, measures taken, and contact routes. Absolute security is not promised. Connect only trusted devices and do not share connection codes, cookies, migration links, or private notifications."
            ]
          },
          {
            "title": "9. Online retention",
            "paragraphs": [
              "Device connections last 30 days from creation or manual renewal; an expired session no longer grants access. Invalid official authorization pauses relevant monitoring. When the last valid associated device signs out, is revoked, or expires, logout handling or periodic maintenance clears the account’s login cookies and stored classroom credentials and pauses connections.",
              "Completed classes and their delivery records, historical events outside active classes, and simulated push records are cleaned during periodic maintenance using a 90-day threshold in the code. Active classes and protected related records may remain longer. Migration credentials are single-use and expire after five minutes.",
              "The current implementation has no uniform automatic deletion period for all account profiles, course caches, device metadata, status fields, or backups. The 30-day connection and 90-day history rules do not erase an entire account at those times. Contact maintainers if you stop using the service and want remaining data removed. The absence of automated cleanup is not permission for indefinite retention. When data are no longer necessary or deletion is legally required, we will act under applicable law and verify the scope requiring manual handling."
            ]
          },
          {
            "title": "10. Backups, support material, and cleanup scope",
            "paragraphs": [
              "Recovery backups include database snapshots, service keys, push keys, and origin configuration. Exported backups use a random AES-256-GCM data key wrapped with a separate RSA-OAEP public key; the decryption private key is held separately. However, cloud storage can also retain SQLite snapshots protected by file permissions, and host privileges can access operational data. Backup protection therefore depends on the type of copy and where it is held.",
              "The existing backup process has no uniform automatic expiry; offline exports may remain. Removing online data does not immediately erase historical backups. A deletion request may ask about remaining backups, retention reasons, and disposition arrangements. This requires manual verification; no unimplemented instant one-click erasure is promised. Support conversations and submitted attachments are retained as needed for the matter, not for advertising or training."
            ]
          },
          {
            "title": "11. Disable, sign out, revoke, and request deletion",
            "paragraphs": [
              "You can disable each of five reminder types, revoke system notifications, sign out of Rain Classroom on this device, view and revoke other devices for the same account, or stop renewing a connection. A switch stops only that device’s corresponding reminders. Monitoring may continue when another device has reminders enabled. Sign-out unlinks this device and removes its server-side push subscription; browser permissions or subscription state may require separate system management.",
              "Releasing login credentials after the last valid device leaves does not erase all profiles, history, other device metadata, or backups. There is no automatic whole-account deletion button in the current product. Contact maintainers to request information, access, a copy, correction, deletion, restriction, withdrawal of authorization, or handling of an objection concerning another person’s information."
            ]
          },
          {
            "title": "12. Verification, legal retention, and remedies",
            "paragraphs": [
              "We verify the relationship between a request and an account in proportion to risk and ask only for necessary information. Do not send cookies, passwords, or migration credentials. Requests should be handled promptly as required by law. If technical separation, backups, disputes, or legal retention obligations prevent immediate completion, reasons, scope, and subsequent arrangements should be explained. Where law requires other processing to stop, retained data are restricted to necessary storage and security rather than returned to ordinary monitoring. Restoration requires checking previously handled rights requests. Statutory rights are not limited to existing interface buttons. You may complain to the competent regulator."
            ]
          },
          {
            "title": "13. Minors and learning contexts",
            "paragraphs": [
              "The service is for users able to lawfully authorize their accounts and devices. Minors require appropriate guardian authorization and must follow school rules. Account connection is not directed to children under 14. There is currently no age-verification mechanism; contact maintainers if children’s information may have been processed without required authorization so it can be investigated and handled under law.",
              "Names, student numbers, and classroom events are used for reminders, not to judge another person’s attendance or performance. School and teacher records through official channels remain authoritative."
            ]
          },
          {
            "title": "14. Changes and language versions",
            "paragraphs": [
              "Material changes to data categories, purposes, hosting, or recipients will be described here and dated. Updating text or continued use cannot replace legally required additional notice, separate consent, or other procedures. The three language versions aim to describe the same scope; differences do not diminish your rights under applicable law."
            ]
          },
          {
            "title": "15. Contact",
            "paragraphs": [
              "For privacy questions, rights requests, support, or infringement reports, contact maintainer 唐梓耀 / AdrianSparkle on QQ at 2410710390. The developer’s public profile is https://github.com/Tang1206cc. Identify the product, version, and your request. Do not include passwords, login cookies, connection codes, entire recordings, or unnecessary personal information in your initial message.",
              "Specify “Rain Alert / 雨水提醒” and the scope of your request. For another selected student’s information, provide minimal event-time and course context rather than publicly posting a full name and student number."
            ]
          }
        ],
        "links": []
      },
      "terms": {
        "title": "Rain Alert Terms of Service",
        "intro": "Rain Alert provides supplementary classroom-event notifications. Pay particular attention to account authorization, the actual effect of ordinary check-in requests, and the limits of push delivery.",
        "sections": [
          {
            "title": "1. Scope, provider, and acceptance",
            "paragraphs": [
              "These terms apply to the Rain Alert Web App and reminder instance maintained under Sparkle by 唐梓耀 / AdrianSparkle and 丁铭 / EliasSparkle. Read them before connecting, authorizing an account, or enabling reminders. Do not take those actions if you disagree. Continued use alone does not establish separately required consent or guardian authorization."
            ]
          },
          {
            "title": "2. Independent tool and official channels",
            "paragraphs": [
              "Rain Alert is not an official product of Rain Classroom, a school, or a teacher. This page claims no partnership, agency, or endorsement by Rain Classroom, WeChat, Apple, or browser vendors. Schools, teachers, and official Rain Classroom records determine schedules, assignments, attendance, and grades.",
              "The product supplements official clients, classroom announcements, manual checking, and your own attendance responsibilities. It does not currently provide comprehensive reminders for all pre-class or post-class assignments, examinations, or school announcements."
            ]
          },
          {
            "title": "3. Eligibility and trusted connections",
            "paragraphs": [
              "You must be authorized to use the account and device and follow school, teacher, and platform rules. Do not connect unauthorized accounts, borrow sessions, or distribute administrator connection codes. Minors require guardian authorization as required by law; children under 14 should not connect accounts.",
              "Confirm only official QR logins you initiated. Do not give passwords to maintainers, web forms, or strangers. A reminder-service connection code does not itself grant access to a Rain Classroom account."
            ]
          },
          {
            "title": "4. Authorized processing",
            "paragraphs": [
              "After QR confirmation, the server needs to store and use official login credentials to query account details, courses, ongoing classes, and necessary classroom events and notify registered devices. The Privacy Policy explains data, recipients, Hong Kong hosting, and retention.",
              "Understand that scope before enabling reminders. Authorization is not permission to read unrelated material, publish your courses, perform marketing, or train AI models."
            ]
          },
          {
            "title": "5. In-class reminders and check-in effects",
            "paragraphs": [
              "Enabling exercise, random-selection, rapid-answer, or comment-availability reminders allows the service to obtain classroom authorization according to platform rules. Where the platform explicitly identifies an ordinary check-in, the service may automatically send a classroom-entry request. That request can create entry or check-in records on the official platform. The service is not entirely read-only.",
              "For dynamic QR, location, or unconfirmed check-in modes, monitoring waits for required actions in the official client. It does not fake location, defeat QR restrictions, replace required personal confirmation, answer questions, respond to roll calls, or enter rapid answers for you. Do not enable related in-class reminders if your school or teacher prohibits automatic entry. The platform determines official records."
            ]
          },
          {
            "title": "6. Switches, testing, and notification content",
            "paragraphs": [
              "Five reminder types are controlled per device. System permission and individual reminder switches are different settings. Push testing sends five clearly labeled simulated messages even if corresponding switches are off, without changing them. Successful testing does not verify the live classroom event source.",
              "Random-selection notifications may show names and student numbers announced to the class. Other notifications show course and event summaries. Manage previews and shared devices and do not publicly forward classmates’ information. If no trustworthy start time is supplied by the platform, displayed detection time is not the class start time."
            ]
          },
          {
            "title": "7. Timing and reliability",
            "paragraphs": [
              "Polling at approximately five seconds under normal conditions works alongside classroom-event connections. This is not a delivery deadline or service-level guarantee. Platform changes, networks, maintenance, power saving, permissions, push vendors, browser policies, invalid login, or expired pairing can delay, omit, repeat, or stop messages.",
              "“Accepted by push service” confirms acceptance of a request. A device receipt confirms system handling, not that a person read or heard the notification. Continue checking official channels; do not rely solely on this tool for attendance, exams, or important deadlines."
            ]
          },
          {
            "title": "8. Devices, expiry, and origin migration",
            "paragraphs": [
              "Device connections normally last 30 days and can be manually renewed. Review associated devices and revoke unfamiliar ones. Changing the connection code does not revoke existing devices. Expired official authorization or pairing affects monitoring and reminders.",
              "The main and retained legacy entry points are distinct browser origins. A single-use, five-minute credential migrates the account, settings, and necessary history; notification permission must be granted again on the new origin. A migration link confers temporary access and must not be shared. Deactivation of the old subscription depends on successful registration of the new one."
            ]
          },
          {
            "title": "9. Acceptable use",
            "paragraphs": [
              "Do not bypass school or platform controls, falsify attendance, steal or share credentials, collect unrelated people’s data, harass or infringe rights, abuse push delivery, attack interfaces, or resell unauthorized access. Do not use courses, names, student numbers, or learning activity for advertising profiles or public exposure.",
              "Ordinary use must still satisfy platform and school rules; the product cannot obtain third-party permission for you. If you find an unfamiliar device or incorrect delivery, disable relevant reminders, revoke devices, and contact maintainers."
            ]
          },
          {
            "title": "10. Availability, fees, support, and changes",
            "paragraphs": [
              "The service is currently in public testing. Permanent availability, permanent free access, fixed response times, and specific capacity are not promised. Any charge, subscription, or material new condition should be clearly disclosed before taking effect and follow required procedures. These terms alone create no payment obligation.",
              "Maintenance, security, capacity, and upstream changes may require adjustment or suspension. Where reasonably foreseeable, appropriate explanations and guidance for migration, export, or discontinuation should be provided. Urgent risks may require necessary action first and an explanation when appropriate, without removing legal duties."
            ]
          },
          {
            "title": "11. Sign-out, suspension, and termination",
            "paragraphs": [
              "You may disable reminders, sign out, revoke devices, or stop using the service. Unlinking the last valid device releases login credentials. The Privacy Policy separately explains remaining profiles, history, and backups; discontinuation does not automatically delete an entire account.",
              "Clear abuse, infringement, or security risk may justify restricting relevant connections to the necessary extent, with reasons and an opportunity for feedback or correction where appropriate. Applicable confidentiality, intellectual-property, and data-protection duties survive termination."
            ]
          },
          {
            "title": "12. Rights, warranties, and responsibility",
            "paragraphs": [
              "You retain rights in your information. Course materials belong to their rights holders. Processing does not grant the service unrestricted use or sublicensing rights. Product licensing and component terms appear in the Software License and Third-party Notices.",
              "To the extent permitted by law, service is provided in its available condition without a promise of error-free, continuous operation or timely delivery of every message. Responsibility depends on facts, fault, and applicable law. Liability for intentional misconduct, gross negligence, personal injury, unlawful personal-information processing, and other non-excludable matters remains, as do mandatory consumer remedies."
            ]
          },
          {
            "title": "13. Disputes, interpretation, and revisions",
            "paragraphs": [
              "Contact maintainers about questions or disputes. You remain free to seek relief from a court or regulator with lawful jurisdiction, without mandatory arbitration, a designated foreign court, or waiver of statutory rights. An unenforceable provision does not invalidate independently effective provisions.",
              "Material revisions will be dated and follow required notice or consent procedures. Language versions aim to be equivalent; translation differences do not exclude local legal protection."
            ]
          },
          {
            "title": "14. Contact",
            "paragraphs": [
              "For privacy questions, rights requests, support, or infringement reports, contact maintainer 唐梓耀 / AdrianSparkle on QQ at 2410710390. The developer’s public profile is https://github.com/Tang1206cc. Identify the product, version, and your request. Do not include passwords, login cookies, connection codes, entire recordings, or unnecessary personal information in your initial message."
            ]
          }
        ],
        "links": []
      },
      "licenses": {
        "title": "Rain Alert Software and Service License",
        "intro": "This license explains permitted use of the Web App’s original code and interface. Access does not grant source redistribution, independent deployment, or Sparkle branding rights. Open-source components retain their own licenses.",
        "sections": [
          {
            "title": "1. Rights holders and scope",
            "paragraphs": [
              "Rights in Rain Alert’s original code, interface, graphics, and documentation remain with their respective rights holders. Sparkle is maintained by 唐梓耀 / AdrianSparkle and 丁铭 / EliasSparkle. This license covers access to the supplied Web App client and service, without changing third-party content or open-source permissions."
            ]
          },
          {
            "title": "2. Limited client and access permission",
            "paragraphs": [
              "Subject to the Terms of Service, you receive a limited, nonexclusive, nontransferable, nonsublicensable right to access the service actually made available, load and run the client code supplied with its pages, and use ordinary browser installation such as adding to the home screen on devices you own or are authorized to use. You may connect accounts you are entitled to authorize through supported features."
            ]
          },
          {
            "title": "3. Rights not granted in original code",
            "paragraphs": [
              "Visibility or downloadability of browser scripts does not place original code under an open-source license. Except as law permits or separately authorized in writing, do not redistribute the product, modify and operate an independent service, package it for sale, rent, sublicense, remove rights notices, or offer backend interfaces as an unauthorized commercial service. These software reservations do not restrict lawful use of data from your own account."
            ]
          },
          {
            "title": "4. Statutory exceptions and research",
            "paragraphs": [
              "This license does not restrict backups, interoperability, security research, or other rights that applicable law does not allow a contract to exclude. Research must not involve unlawful credential access, privacy violations, or disruption of the live service. Report vulnerabilities with minimal necessary reproduction details, without publishing valid keys or user data."
            ]
          },
          {
            "title": "5. Priority of component licenses",
            "paragraphs": [
              "The service uses Express, qrcode, tough-cookie, web-push, and their dependencies. Exact versions, copyright statements, and texts are in Third-party Notices. They include MIT, ISC, BSD-3-Clause, Apache-2.0, and MPL-2.0; they are not all MIT.",
              "Each component may be used, modified, or distributed under its own license. Restrictions on proprietary software do not override conflicting independent component permissions. web-push uses MPL-2.0; a source copy of the version used is provided here. Supplying component source does not release the entire Rain Alert project as open source."
            ]
          },
          {
            "title": "6. Data, platforms, and trademarks",
            "paragraphs": [
              "No additional right is granted to Rain Classroom course content, other students’ information, or official platform APIs. You retain lawful rights in your information. Sparkle, Rain Alert, and third-party brands and marks retain their respective protections. Do not impersonate an official operator or claim nonexistent partnerships, certifications, or endorsements."
            ]
          },
          {
            "title": "7. Independent deployment and resale",
            "paragraphs": [
              "Access does not include delivery of backend source, server administration, service resale, or independent deployment permission. Obtain explicit separate authorization if needed. The presence of package.json, dependency lists, or readable code in a development directory is not a general open-source grant for the original project."
            ]
          },
          {
            "title": "8. Duration, termination, and updates",
            "paragraphs": [
              "This license applies during lawful use of the supplied client and service. You may stop use and remove the home-screen entry. Material violations may result in lawful access restrictions with a reasonable opportunity to correct where appropriate and remediable. Termination does not extinguish statutory data rights, accrued responsibilities, or independent open-source licenses.",
              "Updates remain subject to this license unless different terms accompany them. Access does not guarantee perpetual operation, maintenance of a particular version, or indefinite compatibility. Material changes follow the Terms of Service and applicable law."
            ]
          },
          {
            "title": "9. Warranties and responsibility",
            "paragraphs": [
              "To the extent permitted by law, software and service are provided in their available condition. Warranties and responsibility are determined by the Terms of Service, actual commitments, and applicable law. Mandatory consumer protection, non-excludable data-protection duties, liability for intentional misconduct or gross negligence, and other compulsory rights remain."
            ]
          },
          {
            "title": "10. Licensing inquiries",
            "paragraphs": [
              "For privacy questions, rights requests, support, or infringement reports, contact maintainer 唐梓耀 / AdrianSparkle on QQ at 2410710390. The developer’s public profile is https://github.com/Tang1206cc. Identify the product, version, and your request. Do not include passwords, login cookies, connection codes, entire recordings, or unnecessary personal information in your initial message.",
              "For team deployment, source licensing, commercial cooperation, or brand use, explain the intended use and contact rights holders. Proprietary software rights not expressly granted are reserved."
            ]
          }
        ],
        "links": []
      },
      "notices": {
        "title": "Rain Alert Third-party and Open-source Notices",
        "intro": "The inventory was checked against the current package-lock.json and installed packages and includes 110 production dependency packages. Original copyright and license conditions are available below. They do not license the entire product on the same terms.",
        "sections": [
          {
            "title": "1. Principal dependencies",
            "paragraphs": [
              "Express 5.3.0 (MIT) handles HTTP routing; qrcode 1.5.4 (MIT) generates login QR images; tough-cookie 6.0.2 (BSD-3-Clause) manages official session cookies; web-push 3.6.7 (MPL-2.0) handles Web Push requests and encryption. The full inventory includes transitive dependencies by installation location, rather than only these four packages."
            ]
          },
          {
            "title": "2. Original texts, source, and scope",
            "paragraphs": [
              "The downloadable notice retains LICENSE, LICENCE, COPYING, and NOTICE texts found in the checked packages. The installed http_ece 1.2.0 package lacks a separate license file; its MIT text is taken from the matching upstream v1.2.0 tag with the source recorded. A ZIP separately contains the web-push component source, README, package.json, and license for examining MPL-covered files.",
              "This is the current project’s production dependency inventory. It does not imply that every server dependency is delivered to the browser or replace notices required when redistributing Node.js, operating systems, or additional software. Upstream texts retain their original language and govern component rights."
            ]
          },
          {
            "title": "3. Platform relationships and processing",
            "paragraphs": [
              "Rain Classroom, WeChat, and browser notification infrastructure are operated by their respective rights holders. Independent reminders using account authorization and relevant interfaces do not imply their endorsement. Use on Apple devices, as a home-screen Web App, or through Web Push does not mean Apple created, reviewed, or guarantees this product. Platform processing and this service’s data flows are described in the respective policies and this product’s Privacy Policy."
            ]
          },
          {
            "title": "4. Rights and security reports",
            "paragraphs": [
              "If an attribution, inventory, source provision, or copyright notice appears incomplete, tell maintainers the package, version, and evidence so it can be checked and corrected. Do not publish user credentials when reporting security issues.",
              "For privacy questions, rights requests, support, or infringement reports, contact maintainer 唐梓耀 / AdrianSparkle on QQ at 2410710390. The developer’s public profile is https://github.com/Tang1206cc. Identify the product, version, and your request. Do not include passwords, login cookies, connection codes, entire recordings, or unnecessary personal information in your initial message."
            ]
          }
        ],
        "links": []
      }
    },
    "zh-Hant": {
      "licenses": {
        "intro": "本許可說明 Web App 自有代碼和界面可如何使用。訪問服務不等於獲得原始碼再分發、獨立部署或使用 Sparkle 品牌的授權；第三方開源組件另按各自授權條款處理。",
        "links": [],
        "sections": [
          {
            "paragraphs": [
              "雨水提醒的原創代碼、界面、圖形及文件由其各自權利人保留權利，Sparkle 由唐梓耀 / AdrianSparkle、丁銘 / EliasSparkle 共同維護。本許可適用於維護者提供的 Web App 客戶端與服務訪問，不改變第三方內容及開源軟體的授權。"
            ],
            "title": "1. 權利人與適用範圍"
          },
          {
            "paragraphs": [
              "在遵守服務條款的情況下，授予你有限、非獨佔、不可轉讓、不可再許可的權利，在你擁有或獲准使用的設備上訪問實際開放的服務、加載運行隨頁面提供的客戶端代碼，並使用瀏覽器“添加到主畫面”等正常安裝功能。可按產品支持的方式連接本人有權授權的帳號。"
            ],
            "title": "2. 有限訪問與客戶端使用"
          },
          {
            "paragraphs": [
              "瀏覽器能夠查看或下載指令碼，不等於原創代碼已按開源授權條款發佈。除法律允許或另有書面授權外，不得複製分發產品本體、修改並運營自有服務、將其打包銷售、出租、再許可、移除權利聲明，或將後台介面作為未經許可的商業服務提供。使用自己帳號合法產生的資料不受此項軟體權利保留限制。"
            ],
            "title": "3. 未授予的自有代碼權利"
          },
          {
            "paragraphs": [
              "本許可不限制適用法律允許的備份、互操作性、安全研究或其他不可被合同排除的權利。研究不得以非法取得帳號憑證、侵害他人隱私或破壞線上服務為手段；報告漏洞時請提供最小必要的復現信息，不公開有效金鑰或使用者資料。"
            ],
            "title": "4. 法定例外與安全研究"
          },
          {
            "paragraphs": [
              "服務使用 Express、qrcode、tough-cookie、web-push 及其依賴。具體版本、版權和許可文字見第三方聲明；其中包含 MIT、ISC、BSD-3-Clause、Apache-2.0 與 MPL-2.0，不能把它們一概稱為 MIT。",
              "各組件可依法依其授權條款使用、修改或分發，本許可對自有軟體的限制不適用於與組件獨立許可衝突的範圍。web-push 適用 MPL-2.0；本頁提供其所用版本的組件原始碼副本。組件原始碼的提供不包含對整個雨水提醒項目的開源授權。"
            ],
            "title": "5. 第三方開源許可的優先效力"
          },
          {
            "paragraphs": [
              "本許可不授予雨課堂課程內容、其他學生資料或官方平台介面的額外使用權。你對自己資料依法享有的權利保持不變。Sparkle、雨水提醒及第三方品牌、標識的權利各自保留；不得冒用官方身份或聲稱獲得未存在的合作、認證或背書。"
            ],
            "title": "6. 資料、平台與商標"
          },
          {
            "paragraphs": [
              "本服務的訪問許可不包含後台原始碼交付、伺服器運維、服務轉售或獨立部署授權。需要這些權利時，應另行取得明確許可。開發目錄中存在 package.json、依賴清單或可閱讀原始碼，不等於自有項目已經授予通用開源許可。"
            ],
            "title": "7. 無獨立部署或轉售承諾"
          },
          {
            "paragraphs": [
              "本許可在你依法使用所提供客戶端與服務期間適用。你可以停止使用並移除主畫面入口；嚴重違反許可或服務條款時，可依法限制相關訪問，在適當且可補救時給予合理改正機會。終止不影響你的法定資料權利、此前責任及獨立開源授權條款的效力。",
              "更新未另附條款時繼續適用本許可。服務訪問不保證永久在線、任何特定版本持續維護或無限期兼容；重要變更應依服務條款和適用法律處理。"
            ],
            "title": "8. 期限、終止與更新"
          },
          {
            "paragraphs": [
              "在法律允許範圍內，軟體和服務按實際可用狀態提供，保證和責任範圍以服務條款、實際承諾及適用法律確定。任何表述均不排除法定消費者保護、不得免責的個人信息保護義務、故意或重大過失責任及其他強制性權利。"
            ],
            "title": "9. 保證與責任"
          },
          {
            "paragraphs": [
              "隱私咨詢、權利請求、產品支持或侵權通知，可聯繫維護者唐梓耀 / AdrianSparkle：QQ 2410710390；開發者公開主頁為 https://github.com/Tang1206cc。請說明產品名稱、所用版本及請求事項。首次聯繫請勿發送帳號密碼、登入 Cookie、連接碼、完整錄制或其他不必要的個人信息。",
              "團隊部署、原始碼授權、商業合作或品牌使用請說明具體用途並聯繫權利人；未明確授予的自有軟體權利予以保留。"
            ],
            "title": "10. 許可咨詢"
          }
        ],
        "title": "雨水提醒軟體與服務授權條款"
      },
      "notices": {
        "intro": "組件清單依據當前工程的 package-lock.json 與實際安裝包核對，收錄 110 個生產依賴包。原始版權聲明和許可條件可在下方完整下載；它們不代表整個產品採用相同許可。",
        "links": [],
        "sections": [
          {
            "paragraphs": [
              "Express 5.3.0（MIT）用於 HTTP 路由；qrcode 1.5.4（MIT）用於生成登入二維碼；tough-cookie 6.0.2（BSD-3-Clause）用於官方工作階段 Cookie 管理；web-push 3.6.7（MPL-2.0）用於 Web Push 請求與加密。完整傳遞依賴按安裝位置分別列入原始聲明，不以四個主依賴代替全部清單。"
            ],
            "title": "1. 主要依賴與用途"
          },
          {
            "paragraphs": [
              "下載文件保留所核對安裝包中的 LICENSE、LICENCE、COPYING 或 NOTICE 原文。http_ece 1.2.0 安裝包未附獨立許可文字，其 MIT 文字取自對應上游 v1.2.0 標籤並記錄來源。web-push 的實際組件原始碼、README、package.json 和授權條款另以 ZIP 提供，便於查閱 MPL 覆蓋文件。",
              "清單描述當前工程使用的生產依賴，不表示每個伺服器依賴都會被發送到瀏覽器，也不替代日後分發 Node.js、操作系統或其他新增軟體時需要隨附的聲明。上游原文保留原語言，以相應授權條款文字確定組件權利。"
            ],
            "title": "2. 原文、對應原始碼與適用範圍"
          },
          {
            "paragraphs": [
              "雨課堂、微信及瀏覽器通知基礎設施由各自權利人運營。本產品通過帳號授權和相關技術介面提供獨立提醒，不代表這些主體認可本產品。使用 Apple 設備、主畫面 Web App 或 Web Push 不表示產品由 Apple 製作、審核或擔保。各平台的個人信息處理和本服務的資料流分別見相應政策及本產品隱私權政策。"
            ],
            "title": "3. 平台關係與資料處理"
          },
          {
            "paragraphs": [
              "如你認為組件清單、署名、原始碼提供或版權說明存在遺漏，請向維護者說明包名、版本和依據，我們會覈實並更正。報告安全問題時請勿公開使用者憑證。",
              "隱私咨詢、權利請求、產品支持或侵權通知，可聯繫維護者唐梓耀 / AdrianSparkle：QQ 2410710390；開發者公開主頁為 https://github.com/Tang1206cc。請說明產品名稱、所用版本及請求事項。首次聯繫請勿發送帳號密碼、登入 Cookie、連接碼、完整錄制或其他不必要的個人信息。"
            ],
            "title": "4. 權利與安全反饋"
          }
        ],
        "title": "雨水提醒第三方與開源聲明"
      },
      "privacy": {
        "intro": "雨水提醒需要由提醒服務持續連接雨課堂並向你的設備推送消息。因此，它會在服務端處理帳號授權、課程與通知資料。請在連接和授權前瞭解以下範圍。",
        "links": [],
        "sections": [
          {
            "paragraphs": [
              "雨水提醒是 Sparkle 旗下的獨立課堂動態提醒 Web App，由唐梓耀 / AdrianSparkle、丁銘 / EliasSparkle 共同創作和維護。本政策適用於 Sparkle 提供的雨水提醒實例、其設備連接、雨課堂掃碼授權、課堂監測與 Web Push 通知。",
              "它不是雨課堂官方產品，也不代表學校、教師、雨課堂、微信、Apple 或瀏覽器廠商。你使用這些獨立服務時，還需閱讀相應服務的隱私規則。其他人自行部署的實例由實際運營者另行說明，不當然適用本實例的托管地點和管理安排。"
            ],
            "title": "1. 適用範圍與維護者"
          },
          {
            "paragraphs": [
              "在你使用管理員提供的連接碼並通過官方二維碼確認登入後，服務接收雨課堂返回的帳號 ID、姓名或暱稱、學校及學號（以平台實際返回為準），以及所聽課程、課堂 ID、名稱、教師與相關組織標識，用於識別你的帳號和展示課程。",
              "服務還會在服務端保存官方登入 Cookie、工作階段授權與必要的課堂令牌，以便在你關閉頁面後繼續查詢。我們不要求、也不存儲你的雨課堂或微信密碼。Cookie 和令牌能夠代表登入權限，屬於需要特別保護的憑證；掃碼不是僅在手機本地保存授權。"
            ],
            "title": "2. 帳號資料、課程與登入憑證"
          },
          {
            "paragraphs": [
              "服務查詢正在上課狀態、必要的學習日誌及簽到方式，並在你啓用課內提醒後接收官方課堂事件流。保留字段包括課程與課堂名稱、事件類型、事件標識、平台時間或發現時間及通知所需摘要。",
              "隨機點名事件可能包含教師向課堂公佈的被點名者姓名和學號；這些內容可能存入加密事件記錄並出現在通知正文中，可能涉及同班其他人。請謹慎使用鎖屏預覽及共享設備，不要將這些內容繼續公開傳播。服務不以這些資料建立學生畫像。",
              "當前實現不將題目正文或答案作為持久化提醒內容保存，不代答題、不響應點名或搶答，也不獲取設備定位。但啓用課內提醒後，平台明確為普通簽到的課堂可能由服務自動發送進入課堂請求，該操作可能改變官方出勤狀態；受限簽到規則見服務條款。"
            ],
            "title": "3. 課堂動態及其他人的信息"
          },
          {
            "paragraphs": [
              "我們處理隨機設備標識、連接工作階段的雜湊、設備名稱、創建時間、最近打開時間、30 天有效期、帳號關聯及各項提醒開關。預設設備類別根據瀏覽器 User-Agent 判斷，你可自行修改名稱。",
              "開啓通知時，瀏覽器提供推送端點、p256dh 公鑰及 auth 金鑰；服務保存訂閱，用於向該設備推送。我們還保存發送次數、接受或失敗狀態、時間和隨機回執的雜湊，以排錯、去重和確認系統處理情況。回執不證明你本人看見、聽見或閱讀了通知。",
              "提供網路服務必然處理 IP 地址、請求頭、來源、連接時間和錯誤信息；IP 也用於內存中的防濫用限流。當前應用沒有廣告或行為分析 SDK，不以這些信息進行跨站跟蹤或出售個人信息。基礎設施和通信提供方可以依其自身規則處理技術日誌。"
            ],
            "title": "4. 設備連接、通知與技術信息"
          },
          {
            "paragraphs": [
              "上述信息用於建立設備連接、識別你授權的帳號、查詢和展示課堂、推送所選事件、維護工作階段、遷移入口、保護安全、排障和災難恢復。帳號與課程不是用於廣告、商業畫像或 AI 訓練。拒絕掃碼授權則無法讀取課程；拒絕通知權限仍可在已登入頁面查看信息，但不能向該設備發送系統通知。",
              "敏感憑證、其他學生信息以及跨地區處理應按適用法律履行必要的告知、合法性基礎及同意程序。本政策說明實際資料流，不將瀏覽本頁、輸入連接碼或掃描二維碼一概視為已經完成所有依法需要的單獨同意。你不應授權自己無權提供的帳號或資料。"
            ],
            "title": "5. 處理目的與授權邊界"
          },
          {
            "paragraphs": [
              "設備連接使用 rain_session Cookie。服務端保存其雜湊；在 HTTPS 下該 Cookie 帶有 Secure、HttpOnly 及 SameSite=Strict 屬性，最長隨設備連接維持 30 天，續期會重新設置。它用於認證，不是廣告 Cookie；退出雨課堂帳號不等於自動清除此設備連接 Cookie。",
              "Service Worker 用於 Web Push 和通知點擊，不快取帳號頁面作為離線課堂狀態。通知訂閱由瀏覽器維護；添加到主畫面與允許通知是獨立操作。當前頁面不申請相機、麥克風、定位或通訊錄權限。官方客戶端掃碼、簽到所用權限由其自行管理。"
            ],
            "title": "6. Cookie、瀏覽器存儲與權限"
          },
          {
            "paragraphs": [
              "Sparkle 當前提供的實例運行在騰訊雲中國香港節點。若你位於中國內地或其他地區，提交給該實例的帳號資料、Cookie、課程、課堂事件及設備訂閱會傳到香港處理和保存。授權請求還會與雨課堂官方介面及課堂事件服務通信。",
              "Web Push 根據瀏覽器使用 Apple、Google、Mozilla 或 Microsoft 等推送基礎設施，相關服務可能位於其他國家或地區；服務會向訂閱端點發送加密推送載荷及必要路由信息，瀏覽器和操作系統負責呈現。通知明文最終可出現在設備上，推送加密不表示整個提醒服務端無法讀取。",
              "當前域名由 Cloudflare 提供註冊與 DNS 服務，按現有配置業務流量不經過其 CDN 代理；DNS 服務仍可能處理解析所需信息。我們不出售或出租個人信息。依法披露、必要的安全處置或你明確指示的其他傳遞，應限於相應必要範圍。"
            ],
            "title": "7. 接收方、處理位置與跨地區傳遞"
          },
          {
            "paragraphs": [
              "帳號資料、課程快取、登入 Cookie、課堂憑證、事件載荷和推送訂閱以 AES-256-GCM 加密保存。帳號與設備標識、關聯關係、開關、時間、狀態及其他運行字段並非整庫逐項加密。資料庫與主金鑰由同一服務主機管理，因此這不是能抵御伺服器完全失陷的端到端加密。",
              "服務採用 HTTPS、工作階段雜湊、來源校驗、請求限流及限定推送端點等措施。管理者進行授權運維時可能具備解密所需權限。若發生個人信息安全事件，我們會採取補救措施，並依適用法律向受影響者和有關機關通知；通知會說明所涉信息、可能影響、處置措施及聯繫途徑。我們不承諾絕對安全；請只在你信任的設備上連接，不轉交連接碼、Cookie、遷移連結或系統通知。"
            ],
            "title": "8. 加密與安全措施的限度"
          },
          {
            "paragraphs": [
              "設備連接自創建或手動續期起為 30 天；到期後不能繼續用該工作階段訪問。官方登入失效會暫停相關監測。當帳號最後一個仍有效的關聯設備退出、被撤銷或到期後，服務會在相應退出處理或定期維護中清空該帳號的登入 Cookie 及已保存課堂憑證，並暫停連接。",
              "已結束課堂及其提醒記錄、非當前課堂的歷史事件和模擬推送記錄，按代碼中的 90 天閾值在定期維護時清理；活躍課堂及受保護的相關記錄可能超過該期限。遷移憑證一次有效、5 分鐘到期。",
              "當前實現沒有為所有帳號檔案、課程快取、設備元資料、狀態字段及備份設置統一的自動刪除期限。30 天連接或 90 天歷史規則不等於整帳號在該時點徹底刪除；如不再使用並希望刪除其餘資料，請向維護者提出請求。沒有自動清理機制不等於獲得無限期保留的授權；處理目的不再必要或依法應當刪除時，我們會依法處理，並核對需人工清理的範圍。"
            ],
            "title": "9. 在線資料的保存期限"
          },
          {
            "paragraphs": [
              "為恢復服務，備份任務保存資料庫快照、服務金鑰、推送金鑰及來源配置。導出備份採用隨機 AES-256-GCM 資料金鑰與獨立 RSA-OAEP 公鑰封裝，解密私鑰另行保管；但雲端還可能保留受文件權限保護的 SQLite 快照，且同機運行資料可由主機權限訪問。備份的保護程度因此取決於副本類型及存放位置。",
              "現有備份流程未設置統一自動過期時間，離線導出副本也可能繼續保留。刪除在線資料不立即清除歷史備份。提出刪除請求時可要求說明剩餘備份、保留理由及處置安排；需人工覈實，不能承諾尚未實現的一鍵即時抹除。支持對話和你主動提交的附件按處理事項的必要範圍保留，不用於廣告或訓練。"
            ],
            "title": "10. 備份、支持資料與清理範圍"
          },
          {
            "paragraphs": [
              "你可分別關閉五類提醒、在系統中撤銷通知、退出本設備的雨課堂登入、查看並撤銷同帳號其他設備，或不再續期連接。關閉某個開關僅停止該設備該類提醒；其他設備開啓時帳號仍可能繼續監測。退出會解綁本設備並清除其服務端推送訂閱，瀏覽器本身的授權或訂閱狀態可能仍需在系統設置中管理。",
              "在最後一個有效關聯設備退出後釋放登入憑證，不代表帳號檔案、歷史、其他設備元資料或備份全部刪除。當前產品沒有整帳號自動刪除按鈕。你可聯繫維護者申請瞭解、訪問、複製、更正、刪除、限制處理、撤回授權或處理其他人的信息異議。"
            ],
            "title": "11. 關閉、退出、撤銷與刪除請求"
          },
          {
            "paragraphs": [
              "我們會以與風險相稱的方式確認請求與帳號的關係，僅索取處理該請求所必要的信息；不要發送登入 Cookie、密碼或遷移憑證。請求應依法及時處理。因技術隔離、備份、爭議或法定保留義務不能立即全部處理時，應說明原因、範圍及後續安排；法律要求停止其他處理時，保留的資料僅用於必要存儲與安全保護，不恢復用於日常監測。備份恢復需核對已經處理的權利請求。產品現有按鈕不限制法律賦予的權利。你可向有管轄權的監管機關投訴。"
            ],
            "title": "12. 請求覈實、法定義務與救濟"
          },
          {
            "paragraphs": [
              "本服務面向能夠合法授權其帳號與設備的使用者。未成年人應在監護人及適用學校規則允許的範圍內使用；不面向未滿 14 週歲兒童主動提供帳號連接服務。當前沒有年齡核驗機制；如發現未經所需授權處理兒童信息，可聯繫維護者覈實並依法處置。",
              "課堂中的姓名、學號與動態只用於提醒目的，不應據此評價他人的出勤或學習表現；實際學校與教師記錄以官方渠道為準。"
            ],
            "title": "13. 未成年人及學習場景"
          },
          {
            "paragraphs": [
              "新增資料類別、處理目的、托管地點或接收方等重要變化，會反映在本頁並更新日期。依法需要額外告知、單獨同意或其他程序時，不能僅以修改文字或繼續使用替代。三個語言版本旨在表達相同範圍；差異不減損適用法律賦予你的權利。"
            ],
            "title": "14. 政策更新與語言版本"
          },
          {
            "paragraphs": [
              "隱私咨詢、權利請求、產品支持或侵權通知，可聯繫維護者唐梓耀 / AdrianSparkle：QQ 2410710390；開發者公開主頁為 https://github.com/Tang1206cc。請說明產品名稱、所用版本及請求事項。首次聯繫請勿發送帳號密碼、登入 Cookie、連接碼、完整錄制或其他不必要的個人信息。",
              "請在請求中注明“雨水提醒”和希望處理的範圍；涉及其他被點名者信息時，可提供最小化的事件時間與課程線索，無需公開完整姓名和學號。"
            ],
            "title": "15. 聯繫我們"
          }
        ],
        "title": "雨水提醒隱私權政策"
      },
      "terms": {
        "intro": "雨水提醒提供輔助性的課堂動態提示。請特別留意帳號授權、普通簽到可能發生的實際操作，以及推送無法保證及時送達的邊界。",
        "links": [],
        "sections": [
          {
            "paragraphs": [
              "本條款適用於 Sparkle 由唐梓耀 / AdrianSparkle、丁銘 / EliasSparkle 維護的雨水提醒 Web App 與提醒實例。請在連接服務、授權帳號和開啓提醒前閱讀；不同意時不要進行這些操作。依法需要單獨同意或監護人同意的事項，不能僅由繼續使用推定。"
            ],
            "title": "1. 範圍、提供者與條款接受"
          },
          {
            "paragraphs": [
              "雨水提醒不是雨課堂、學校或教師的官方產品，與雨課堂、微信、Apple 及瀏覽器廠商不存在由本頁面聲明的合作、代理或背書。課程安排、作業、考勤和成績以學校、教師及雨課堂官方記錄為準。",
              "本產品只作輔助提醒，不替代官方客戶端、課堂通知、手動核查和本人參加課程的義務。當前並非對所有課前、課後作業、考試或學校通知提供全覆蓋提醒。"
            ],
            "title": "2. 獨立工具及官方渠道"
          },
          {
            "paragraphs": [
              "你應有權使用相應雨課堂帳號和設備，並遵守學校、教師及上游平台的使用規則。不得代為連接未授權帳號、借用他人工作階段或傳播管理員連接碼。未成年人使用須具備適用法律要求的監護授權；未滿 14 週歲請勿連接帳號。",
              "只確認由你發起的官方登入二維碼；不要向維護者、網頁輸入框或陌生人提交帳號密碼。獲得服務連接碼並不等於已經取得雨課堂帳號訪問權。"
            ],
            "title": "3. 使用資格與可信連接"
          },
          {
            "paragraphs": [
              "掃碼確認後，提醒服務需要在服務端保存並使用官方登入憑證，以查詢帳號、課程、正在上課狀態和通知所需課堂事件，並向你登記的設備發送消息。詳細資料、接收方、香港托管和保存規則見隱私權政策。",
              "啓用提醒前，請確認理解該處理範圍。維護者不會把服務授權解釋為讀取所有無關資料、對外發佈你的課程信息、營銷或 AI 訓練的許可。"
            ],
            "title": "4. 你授予的處理範圍"
          },
          {
            "paragraphs": [
              "開啓課堂內練習、隨機點名、搶答或彈幕提醒後，服務會按平台返回的規則取得課堂授權。平台明確標記普通簽到時，服務可能自動發送進入課堂請求，該請求可能在官方平台產生進入或簽到記錄；不能將本服務描述為完全沒有寫入操作的唯讀工具。",
              "動態二維碼、位置或未確認方式等受限簽到，須等待你在官方客戶端完成相應要求後再監聽；服務不偽造位置、破解二維碼或代替必要的本人確認，不代答題、不響應點名或代為搶答。學校或教師不允許自動進入時，請不要啓用相關課內提醒。官方記錄始終由平台決定。"
            ],
            "title": "5. 課內提醒與簽到的實際影響"
          },
          {
            "paragraphs": [
              "五類提醒分別按設備設置；開啓系統通知與具體提醒開關是不同授權。推送測試會發送標注為模擬的五類消息，即使相應開關關閉也可能發送，但不會改變開關。測試可達不證明真實課堂事件源已經接通。",
              "點名通知可能顯示課堂公開的被點名者姓名和學號，其他通知會顯示課程和事件摘要。請管理鎖屏預覽和共享設備，不公開轉發其他學生的信息。平台未提供可信開課時間時，頁面顯示的是發現時間。"
            ],
            "title": "6. 通知開關、測試與顯示內容"
          },
          {
            "paragraphs": [
              "正常情況下約 5 秒查詢與課堂事件連接並行工作，但它不是送達時限或服務等級承諾。平台介面變化、網路、服務維護、系統省電、通知權限、推送廠商、瀏覽器退出策略、登入失效及連接到期，均可能造成延遲、遺漏、重復或停止。",
              "“推送服務已接受”表示請求被其接受；“設備已接收”表示系統處理回執，不等於使用者已閱讀或聽見。請持續檢查官方渠道，勿將本工具作為考勤、考試或重要截止日期的唯一保障。"
            ],
            "title": "7. 及時性與可靠性邊界"
          },
          {
            "paragraphs": [
              "設備連接通常為 30 天，可手動續期。你應檢查同帳號設備並撤銷陌生連接；更換連接碼不自動撤銷已經連接的設備。官方授權失效或連接到期會影響監測與提醒。",
              "正式入口與保留的舊入口屬於不同瀏覽器來源。遷移使用 5 分鐘內一次有效的憑證，轉移帳號、設置及所需歷史；新來源通知權限仍需重新授權。遷移連結具有暫存訪問能力，不應轉發。舊訂閱停用規則以新訂閱實際登記狀態為準。"
            ],
            "title": "8. 多設備、有效期與入口遷移"
          },
          {
            "paragraphs": [
              "不得借本服務繞過學校或平台的訪問控制、偽造出勤、竊取或共享憑證、抓取無關人員資料、實施騷擾或侵權、惡意刷推送、攻擊介面或轉售未經授權的訪問。不得把課程、姓名、學號及學習動態用於廣告畫像或公開曝光。",
              "正常使用仍應符合上游平台及學校規則；本產品無法替你取得第三方授權。發現異常設備或錯誤發送時，請及時關閉相關提醒、撤銷設備並聯繫維護者。"
            ],
            "title": "9. 合理使用與禁止行為"
          },
          {
            "paragraphs": [
              "當前為公測階段，不承諾永久可用、永久免費、固定響應時間或特定容量。任何實際收費、訂閱或新增重要使用條件都應在生效前明確展示並履行必要程序，本條款本身不創建付款義務。",
              "為維護、安全、資源約束或上游變更，可能調整或暫停服務；在可合理預見的情況下，應提供適當說明與遷移、導出或停止使用的指引。緊急風險處置可先採取必要措施，並在適當時說明，不以此排除法定義務。"
            ],
            "title": "10. 可用性、費用、支持與變更"
          },
          {
            "paragraphs": [
              "你可以關閉提醒、退出帳號、撤銷設備或停止使用。最後一個有效設備解綁後釋放登入憑證，但帳號檔案、歷史和備份的刪除規則另見隱私權政策；停止使用不自動完成整帳號刪除。",
              "對於明顯濫用、侵權或安全風險，可在必要範圍限制相關連接；適當時應說明理由並允許反饋或糾正。服務終止後依法存續的保密、知識產權與資料保護義務仍有效。"
            ],
            "title": "11. 退出、暫停與終止"
          },
          {
            "paragraphs": [
              "你保留自己資料的權利；第三方課程資料歸相應權利人。本服務不會因處理資料而取得任意使用或再授權的權利。產品使用許可與開源組件另見“授權條款”和“第三方聲明”。",
              "在法律允許範圍內，服務按實際可用狀態提供，不保證無錯、持續運行或每條消息及時送達。損失責任依實際事實、過錯及適用法律確定。本條款不免除故意、重大過失、人身損害、違法處理個人信息或其他依法不得免責的責任，不削減強制性消費者救濟。"
            ],
            "title": "12. 權利、保證與責任"
          },
          {
            "paragraphs": [
              "有疑問或爭議可先聯繫維護者；你仍可向依法有管轄權的法院或監管機關尋求救濟，不受強制仲裁、指定境外法院或放棄法定權利的限制。個別條款不能執行時，其餘獨立有效條款繼續適用。",
              "重要修訂會更新日期並按適用法律履行通知或同意程序。三個語言版本力求同義，不以翻譯差異排除當地法律保護。"
            ],
            "title": "13. 爭議、解釋與更新"
          },
          {
            "paragraphs": [
              "隱私咨詢、權利請求、產品支持或侵權通知，可聯繫維護者唐梓耀 / AdrianSparkle：QQ 2410710390；開發者公開主頁為 https://github.com/Tang1206cc。請說明產品名稱、所用版本及請求事項。首次聯繫請勿發送帳號密碼、登入 Cookie、連接碼、完整錄制或其他不必要的個人信息。"
            ],
            "title": "14. 聯繫方式"
          }
        ],
        "title": "雨水提醒服務條款"
      }
    }
  }
}
