Skip to content

Conversation

@L-aros
Copy link

@L-aros L-aros commented Dec 20, 2025

📜 标题(Title)

请提供这个Pull Request中提议的更改的简洁描述:

  • 新增/扩展:飞书推送、下播提醒延迟、通知历史记录、窗口状态记忆、开机自启动与静默启动等核心功能。

🔍 描述(Description)

请描述这个PR做了什么/为什么这些更改是必要的:

  • 飞书推送集成
    • NotificationService 中实现飞书自定义机器人推送逻辑,支持 textpost 两种消息格式。
    • 实现符合飞书官方要求的签名算法:
      • 使用 timestamp + "\n" + secret 作为 HMAC-SHA256 的 key、空串作为消息体,结果做 Base64 编码并写入 sign 字段;
      • 优先从多家线上服务的 Date 头获取时间戳并缓存,超时或异常时回退到本机时间,降低 19021 sign match fail or timestamp is not within one hour 错误概率。
    • MessagePusher 中接入飞书通道,统一记录推送成功/失败日志。
  • 下播提醒延迟
    • 在录制结束逻辑中增加可配置的延迟时间,防止直播短暂掉线被误判为真正下播;
    • 延迟时间通过配置文件及设置页进行管理,支持用户按需求调整。
  • 通知历史记录
    • MessagePusher 中新增通知历史写入逻辑:
      • 记录时间、类型(开播/下播)、标题、内容、附加 meta 信息以及各推送通道结果;
      • 由配置项控制是否启用历史记录及最大保留条数,超出时自动裁剪旧记录;
      • 历史数据持久化到用户配置中,便于设置界面展示与后续排查。
  • 窗口状态记忆
    • 在应用启动与退出流程中保存并恢复窗口尺寸和位置:
      • 首次启动按屏幕尺寸给出合理默认值;
      • 后续启动时恢复用户上一次的大小与位置。
  • 开机自启动与静默启动
    • 新增配置项支持开机自启动与静默(仅托盘)启动;
    • UI 中提供对应开关,与平台相关实现集成(例如 Windows 下使用系统能力注册自启动)。
  • 配置与本地化更新
    • default_settings.json 中加入上述功能对应的配置项及默认值;
    • zh_CN.json 中增加飞书、下播延迟、通知历史、窗口状态、自启动/静默启动等中文说明;
    • en.json 中补充与中文对齐的英文文案,保证中英双语场景下 UI 文本完整。
  • 这些更改整体上提升了通知灵活性、应用体验(窗口状态和启动方式)、以及问题可观测性(通知历史)。

📝 类型(Type of Change)

这个PR引入了哪种类型的更改?(请勾选所有适用的选项)

  • 修复Bug
  • 新功能
  • 代码风格更新(格式化,局部变量)
  • 重构(改进代码结构)
  • 构建相关更改(依赖项,构建脚本等)
  • 其他:用户体验与配置能力增强

🏗️ 测试(Testing)

请描述您已经进行的测试:

  • 在本地虚拟环境中进行语法与编译检查:
    • 运行 python -m compileall app main.py,确保所有修改文件(包括通知服务、消息推送、配置与视图)均能成功编译,无语法错误。
  • 实际运行应用并验证核心功能行为:
    • 飞书推送
      • 在飞书群中创建自定义机器人,开启签名校验,配置 Webhook 与密钥;
      • 在应用设置中开启飞书推送并填入对应参数,触发直播开播/下播,观察飞书是否成功接收消息,以及日志中不再出现 19021 错误。
    • 下播提醒延迟
      • 配置一定的下播延迟时间(如 30–60 秒),拉起并终止一次直播;
      • 验证下播通知在延迟后发送,短时间的网络抖动不会立即触发通知。
    • 通知历史记录
      • 多次触发开播/下播通知,检查历史列表中是否按时间倒序记录各次推送及不同通道的结果;
      • 调整最大记录条数,确认超出后旧纪录被正确裁剪。
    • 窗口状态记忆
      • 调整主窗口大小和位置后退出应用,再次启动时确认窗口状态已恢复;
    • 开机自启动与静默启动
      • 在支持的平台上开启自启动和静默启动选项,重启系统或模拟启动流程,确认应用能随系统启动且支持托盘静默。

如果适用,请提供测试更改的说明:

  • 启动应用后:
    1. 在设置中配置至少一种推送通道(推荐同时验证飞书和钉钉/企业微信);
    2. 打开“开播通知、下播通知、通知历史记录、窗口状态记忆、自启动/静默启动”等相关开关;
    3. 增加一条直播任务并触发开播/下播,观察推送结果、历史记录以及窗口行为;
    4. 根据需要在飞书群中确认签名校验已通过、消息内容格式符合预期。

📋 检查清单(Checklist)

在您创建这个PR之前,请确保以下所有框都被勾选,方法是在每个框中放置一个x

  • 我已经阅读了贡献指南文档
  • 我的更改没有产生新的警告
  • 我已经添加了覆盖我更改的测试
  • 我已经相应地更新了文档(如果适用)
  • 我遵循了这个项目的代码风格

注意: 这个PR在所有复选框被勾选之前不会被合并。


感谢您的贡献!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant