FocusPet Alpha 阶段发布

1 minute read

Published:

🚀 FocusPet Alpha 版本正式发布

项目地址:https://github.com/YigesMx/pet-focus


📰 1. 交付产品:新闻稿回顾与高光时刻

在项目启动之初,我们撰写了一份雄心勃勃的新闻稿。今天,我们很高兴地宣布,我们在 Alpha 阶段兑现了核心承诺,并将想象变成了现实代码。

原新闻稿承诺: “FocusPet 的核心理念是,你的专注力是你宠物的唯一食粮……它巧妙地将番茄工作法、待办事项列表与电子宠物养成相结合。”

✅ Alpha 阶段交付成果 (Highlights):

  • 三位一体架构落地: 我们成功实现了 Tauri (Rust 后端) + React (主 UI) + Godot (宠物渲染) 的跨进程混合架构。
  • 跨平台支持: 尽管面临巨大的打包挑战,我们依然完成了 WindowsmacOS 双平台的构建与适配。
  • 核心闭环跑通:
    • 待办管理: 支持创建、删除、排序任务,甚至在最后几天冲刺中加入了 子任务 (Subtask) 功能。
    • 专注同步: 当你在主界面开启番茄钟,桌面上的宠物会睡眠进入“工作状态”;休息时,它会开心地在桌面上玩耍。
    • 情感反馈: 任务完成时,宠物会播放猫猫叫;在任务空闲阶段,宠物会在桌面上玩耍;专注时,宠物会睡觉。
  • 技术突破: 为了实现“无边框、不占用任务栏”的完美桌面宠物体验,我们攻克了 Godot C++ Extension 技术难关,实现了原生级别的窗口控制。
  • 数据可视化: 统计界面上线,展示专注记录。

🛠️ 2. 我们是如何交付的

我们的交付过程并非一帆风顺,而是通过每日的 Scrum (站立会议)燃尽图 (Burndown Chart) 驱动的。

利用 AI 辅助总结我们的 Daily Scrum,可以清晰地看到我们的开发轨迹:

  1. 第一周 (基础搭建):
    • 赵昱和毛一戈完成了 Rust 后端核心(计时器服务、数据库 Schema)。
    • 申鹏搭建了现代化的 React 前端骨架。
    • 李永康打通了 Godot 与 Tauri 之间的 WebSocket 通信,这是项目最关键的“大动脉”。
  2. 第二周 (功能爆发):
    • 待办事项 (Todo) 的增删改查与 CalDAV 同步尝试。
    • 宠物动画状态机(待机、行走、庆祝)的精细打磨。
    • 统计功能的后端接口与前端对接。
  3. 最后冲刺 (集成与修复):
    • 11.14 - 11.18: 这是最艰难的时刻。我们遇到了打包证书问题、统计数据重复 Bug 以及 UI 细节调整。
    • 团队进行了“全链路自测”,修复了从待办跳转到番茄钟的路由问题,并最终通过 C++ Extension 完美解决了窗口管理问题。

⚠️ 3. 风险管理:AI 说的对吗?

在项目启动时的 Pre-Mortem (事前验尸) 中,我们和 AI 共同识别了几个重大风险。现在回头看,这些预测非常准确:

风险 1:“集成地狱” (Integration Hell)

  • 预测: Tauri 和 Godot 之间的 WebSocket 通信不稳定,导致状态不同步。
  • 实际情况: 确实发生了。在 11.13 的日志中,我们记录了“WebSocket 在高频消息下的内存泄漏”和“断连问题”。
  • 应对方法:
    • 协议规范化: 我们没有盲目编码,而是先定义了清晰的 JSON 消息结构。
    • 心跳机制: 李永康在 Godot 端实现了心跳重连机制,确保后台运行时连接不中断。
    • 专项攻坚: 安排专人(李永康 & 毛一戈)进行了一整天的联调,而不是各自为战。

风险 2:“打包配置” (Packaging & Distribution)

  • 预测: 跨平台打包和签名会比预期复杂。
  • 实际情况: 这是一个被低估的风险。日志显示从 11.13 到 11.18,赵昱和毛一戈一直在处理 CI 流程、Code Signing 证书和打包脚本。
  • 应对方法:
    • 自动化 CI: 我们没有依赖本地打包,而是搭建了 GitHub Actions CI 流程,确保每次 Commit 都能在干净环境中构建。
    • 降级策略: 在 macOS 证书申请受阻时,我们优先保证了 Windows 版本的完整体验。

🎓 4. 导师与工程经验的学习

从工程导师和过往经验中,我们学到了“不要重复造轮子”“工程化标准”的重要性。

  1. 成熟生态的力量: 我们没有手写系统通知和数据库驱动,而是使用了 Rust-Tauri 生态中成熟的 Notification pluginSeaORM。这让我们能专注于业务逻辑。
  2. C++ Extension 的必要性: 导师曾强调“用户体验的最后 1% 往往需要 100% 的努力”。为了让宠物窗口不干扰用户(不显示在任务栏),我们没有妥协使用简陋方案,而是硬啃了 Godot C++ Extension 开发,这极大地提升了软件的专业感。
  3. CI/CD 是生命线: 在 Alpha 阶段就引入 CI (fmt check, build test) 看起来是“浪费时间”,但它在最后几天多人频繁合并代码时,挡住了至少 3 次可能导致主分支崩溃的错误提交。

📊 5. 项目管理:我们是每天前进 30 公里吗?

参考 《软件工程的“每天前进30公里”》,我们的项目管理呈现出明显的非线性特征

  • 特点: 我们的燃尽图并非一条完美的直线。
    • 前期 (Setup): 进展看似缓慢,因为在搭建架构和环境(Godot 环境、Rust 依赖)。
    • 中期 (Feature): 进展神速,大量功能(Todo, Timer)在几天内完成,燃尽图陡峭下降。
    • 后期 (Polish): 再次变缓。最后 20% 的工作量(打包、UI 微调、Bug 修复)花费了 50% 的时间。
  • 优点:
    • 每日站会 (Daily Scrum) 非常有效。它不是汇报流水账,而是通过“遇到的障碍 (Blockers)”这一栏,让我们迅速发现了“统计接口字段不一致”和“路由参数错误”等阻碍,并当天解决。
    • 角色分工明确: Godot 前端、Web 前端、Rust 后端三条线并行,互不干扰。
  • 缺点:
    • 低估了“最后一公里”: 我们在 11.14 认为只剩“文档整理”,结果 11.15-11.18 还在进行大量的代码修复和重构。软件工程中“完成”的定义需要更加严格(Done is Done)。

🤖 6. AI 工具的深度运用

在 FocusPet 项目中,AI 不仅仅是搜索引擎,更是我们的第五位团队成员

  1. 代码生成与样板消除:
    • Rust 宏: 毛一戈利用 AI 生成了复杂的 Rust Command 宏代码,将后端函数自动暴露给前端,减少了大量重复劳动。
    • Godot 脚本: 李永康使用 AI 将 WebSocket 协议逻辑从 Python 示例快速转换为 GDScript,并解决了 C++ Extension 编译环境的配置脚本问题。
  2. Bug 定位与修复:
    • 在 11.13 遇到的 Race Condition (竞态条件) 问题中,我们将出错的日志和代码片段喂给 AI,它迅速指出了 Mutex 锁的使用不当,帮助我们修复了死锁。
    • 申鹏在重构统计界面时,利用 AI 快速生成了新旧数据结构的映射函数,解决了 null/undefined 报错。
  3. 文档与总结:
    • 自动日报: 我们的 Daily Scrum 汇总和这篇博客的初稿,都是由 AI 根据 Git Log 和群聊记录辅助生成的,极大地节省了 PM 的时间。
    • CI 脚本: GitHub Actions 的 YAML 配置文件大部分由 AI 生成并优化,确保了跨平台构建的语法正确性。

FocusPet Alpha,期待你的体验与反馈! 🐶🍅

Leave a Comment