FocusPet Alpha 阶段发布
Published:
🚀 FocusPet Alpha 版本正式发布
项目地址:https://github.com/YigesMx/pet-focus
📰 1. 交付产品:新闻稿回顾与高光时刻
在项目启动之初,我们撰写了一份雄心勃勃的新闻稿。今天,我们很高兴地宣布,我们在 Alpha 阶段兑现了核心承诺,并将想象变成了现实代码。
原新闻稿承诺: “FocusPet 的核心理念是,你的专注力是你宠物的唯一食粮……它巧妙地将番茄工作法、待办事项列表与电子宠物养成相结合。”
✅ Alpha 阶段交付成果 (Highlights):
- 三位一体架构落地: 我们成功实现了 Tauri (Rust 后端) + React (主 UI) + Godot (宠物渲染) 的跨进程混合架构。
- 跨平台支持: 尽管面临巨大的打包挑战,我们依然完成了 Windows 和 macOS 双平台的构建与适配。
- 核心闭环跑通:
- 待办管理: 支持创建、删除、排序任务,甚至在最后几天冲刺中加入了 子任务 (Subtask) 功能。
- 专注同步: 当你在主界面开启番茄钟,桌面上的宠物会睡眠进入“工作状态”;休息时,它会开心地在桌面上玩耍。
- 情感反馈: 任务完成时,宠物会播放猫猫叫;在任务空闲阶段,宠物会在桌面上玩耍;专注时,宠物会睡觉。
- 技术突破: 为了实现“无边框、不占用任务栏”的完美桌面宠物体验,我们攻克了 Godot C++ Extension 技术难关,实现了原生级别的窗口控制。
- 数据可视化: 统计界面上线,展示专注记录。
🛠️ 2. 我们是如何交付的
我们的交付过程并非一帆风顺,而是通过每日的 Scrum (站立会议) 和 燃尽图 (Burndown Chart) 驱动的。
利用 AI 辅助总结我们的 Daily Scrum,可以清晰地看到我们的开发轨迹:
- 第一周 (基础搭建):
- 赵昱和毛一戈完成了 Rust 后端核心(计时器服务、数据库 Schema)。
- 申鹏搭建了现代化的 React 前端骨架。
- 李永康打通了 Godot 与 Tauri 之间的 WebSocket 通信,这是项目最关键的“大动脉”。
- 第二周 (功能爆发):
- 待办事项 (Todo) 的增删改查与 CalDAV 同步尝试。
- 宠物动画状态机(待机、行走、庆祝)的精细打磨。
- 统计功能的后端接口与前端对接。
- 最后冲刺 (集成与修复):
- 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. 导师与工程经验的学习
从工程导师和过往经验中,我们学到了“不要重复造轮子”与“工程化标准”的重要性。
- 成熟生态的力量: 我们没有手写系统通知和数据库驱动,而是使用了 Rust-Tauri 生态中成熟的
Notification plugin和SeaORM。这让我们能专注于业务逻辑。 - C++ Extension 的必要性: 导师曾强调“用户体验的最后 1% 往往需要 100% 的努力”。为了让宠物窗口不干扰用户(不显示在任务栏),我们没有妥协使用简陋方案,而是硬啃了 Godot C++ Extension 开发,这极大地提升了软件的专业感。
- 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 不仅仅是搜索引擎,更是我们的第五位团队成员。
- 代码生成与样板消除:
- Rust 宏: 毛一戈利用 AI 生成了复杂的 Rust
Command宏代码,将后端函数自动暴露给前端,减少了大量重复劳动。 - Godot 脚本: 李永康使用 AI 将 WebSocket 协议逻辑从 Python 示例快速转换为 GDScript,并解决了 C++ Extension 编译环境的配置脚本问题。
- Rust 宏: 毛一戈利用 AI 生成了复杂的 Rust
- Bug 定位与修复:
- 在 11.13 遇到的 Race Condition (竞态条件) 问题中,我们将出错的日志和代码片段喂给 AI,它迅速指出了
Mutex锁的使用不当,帮助我们修复了死锁。 - 申鹏在重构统计界面时,利用 AI 快速生成了新旧数据结构的映射函数,解决了
null/undefined报错。
- 在 11.13 遇到的 Race Condition (竞态条件) 问题中,我们将出错的日志和代码片段喂给 AI,它迅速指出了
- 文档与总结:
- 自动日报: 我们的 Daily Scrum 汇总和这篇博客的初稿,都是由 AI 根据 Git Log 和群聊记录辅助生成的,极大地节省了 PM 的时间。
- CI 脚本: GitHub Actions 的 YAML 配置文件大部分由 AI 生成并优化,确保了跨平台构建的语法正确性。
FocusPet Alpha,期待你的体验与反馈! 🐶🍅
Leave a Comment