v1.3.0 — マルチルート並列呼び出し + ダッシュボード全面再設計
· 約3分で読めます
85 コミットにわたる全面的な UX/機能アップグレードです。複合質問時の 1~3 個の Gateway 並列呼び出し + Bedrock 応答合成が核心です。
主要数値
85 コミット · 18 のダッシュボードカード · マルチルート (1~3 Gateway 並列) · SSE リアルタイムストリーミング · 3 つの新規ページ
マルチルート AI アーキテクチャ
複合質問を分析して最大 3 個の Gateway を同時に呼び出し、Bedrock が応答を合成します。
| 項目 | Before (v1.2.0) | After (v1.3.0) |
|---|---|---|
| 質問処理 | 単一 Gateway のみ呼び出し | 1~3 個の Gateway を並列呼び出し |
| 複合質問 | 最初にマッチしたルートのみ使用 | すべての関連ルートを並列処理 |
| 応答合成 | なし | Bedrock synthesizeResponses() |
| ストリーミング | なし | SSE chunk イベントのリアルタイム送信 |
マルチルートの動作原理
src/app/api/ai/route.ts のインテント分類器が質問を分析して routes: string[] 配列を返します。
配列の長さが 2 以上の場合は Promise.allSettled() で並列呼び出しし、成功した応答を synthesizeResponses() で合成します。
ダッシュボード全面再設計
18 のカードを 6x3 レイアウトで配置し、サイドバーメニューと 1:1 でマッピングしました。
- カード下部の sub-metrics:
18 running · 4 stoppedの形式で主要数値を表示 - CIS Compliance Pass Rate: 全ベンチマーク通過率のゲージ
- Monthly Cost: 今月のコスト + MoM 変化率
- Resource Distribution + K8s Pod Status: Recharts チャートで可視化
SSE ストリーミング AI 応答
AI 応答をリアルタイムでストリーミングして UX を改善しました。
statusイベント: 分析中 → Gateway 接続 → ツール呼び出しの段階を表示chunkイベント: 応答テキストをリアルタイム送信doneイベント: 最終結果 + 使用ツール + 応答時間 + トークン数- 応答時間表示、クリップボードコピー、関連推奨質問機能を追加
新規ページ (3 つ)
| ページ | パス | 主要機能 |
|---|---|---|
| CloudFront | /cloudfront-cdn | Distribution 一覧、Origin、Behavior、キャッシュポリシー |
| WAF | /waf | WebACL ルール、IP Set、ブロックログ |
| ECR | /ecr | リポジトリ、イメージタグ、脆弱性スキャン結果 |
VPC & Network の強化
- VPC Resource Map: AWS コンソールスタイルの 4 カラムレイアウト
VPC → Subnets → Route Tables → Connections (IGW/NAT/TGW/VPN) - Route Table タブ: サブネット関連付け、ルーティングルールテーブル
- TGW Route Tables: Transit Gateway ルートテーブルの詳細
- Resource Topology: React Flow ベースの Graph View / Map View 切り替え
EKS & Cost の強化
EKS 改善:
- K8s Overview ノードカード: CPU/Memory プログレスバー
- ノード詳細: ENI カード + per-ENI トラフィック + Pods テーブル
- EKS Explorer: Status/Node フィルター、ページネーション
Cost Explorer 改善:
- 期間/サービスフィルター、Projected 月末コスト、MoM Change
- Monthly Trend ライン、Cost by Service パイチャート
Steampipe Cost クエリの注意
Cost Explorer データは MSP(Managed Service Provider) Payer アカウントでのみ使用可能です。
checkCostAvailability() で事前確認し、利用できない場合は cost-snapshot.ts のフォールバックデータを使用します。