これはADAMANT TradeBotのシナリオA(プライベートセルフホストWebUI、directHttpトランスポート)に関する進捗報告です。WebUIは取引所に直接接続することはありません。すべての市場、アカウント、およびパラメータデータは、ボットの /api/v1 APIを通じて取得されます。
ボットごとのダッシュボードは、ボットタブを選択した後のメイン画面となりました。ここでは GET /api/v1/status から取得したペア、取引所、マーケットメイキング(MM)の状態に加え、24時間の価格と出来高の概要が表示されます。機能エディションのバッジは、アクティブなモジュールではなく、インストールされているボットの機能に基づいて決定されます。ダッシュボードには、形成中のローソク足を表示するコンパクトな価格チャート、色分けされたモジュールグリッド、取引パラメータのサマリー、およびオープンオーダーを含む構造化された残高情報が含まれています。MMを開始する際、戦略のオーバーライドを送信しなくなったため、ボットは現在のポリシーを維持できるようになりました。

市場ビューも洗練されました。OHLCチャート上の形成中のローソク足、オーダーブック上のボット注文マーカー、オープンオーダーのオーバーレイなどが追加されています。キャンセル操作は { id, market, side } を送信し、すでに存在しない注文はオペレーターにとって成功として扱われます。

パラメータビューには、オペレーターのタイムゾーンでインベントリのUSD構成比と目的別のオープンオーダー想定元本を表示する、12時間のライブ状況ストリップが追加されました。ローカルの健全性履歴に基づく時間枠は、パフォーマンスが低下した時間帯や停止した時間帯を示します。ボットが安全のためにMMを自動停止したり、ラダーを一時停止したりすると、WebUIはボットの通知テキストからダイアログを表示し、緊急状態を反映します。

イベントボードは、パラメータ変更の監査ログを提供します。これには変更時の残高スナップショット、安全バッジ、および安全イベント行から直接実行できるラダー再開アクションが含まれます。

管理用の設定(Config)ビューには、ランタイムの健全性、ペアのメタデータ、およびライブの取引パラメータツリーが同じ高さで表示されます。秘密情報を公開することなく、サニタイズされた config.json サマリーと生のJSONタブを提供します。

フリートシェルの改善として、ラベルとアカウントの編集可能なレジストリフィールドが追加され、ヘッダータブにこれらの情報が表示されるようになりました。キープアライブペインはボットタブの切り替え後も維持され、空の状態に崩れることなく、フリーズされたReduxスナップショットを読み込むようになります。
今回の更新により、WebUIはメッセンジャー風のインターフェースから、チャート、モジュール、パラメータを備えた永続的なダッシュボードへと移行しました。安全イベントには残高コンテキストと再開アクションが含まれるようになり、MMがなぜ停止したのかという以前の推測を排除します。キープアライブペインを備えたマルチボットタブとフリート概要により、ボット切り替え時のコンテキスト喪失を防ぎます。管理用設定ビューでは、ランタイムの健全性とサニタイズされた設定スナップショットを確認できます。MMの品質ドット(working、degraded、stopped)は /status から導出され、開始後10分間の猶予期間が設けられています。システムは完全にセルフホストされた状態を維持します。WebUIはリバースプロキシの背後に配置され、ボットはオペレーターのインフラ上で実行され、取引所のAPIキーはWebUIに保存されず、2FA(二要素認証)が必須となります。
スタックは、Vite、React 18、Chakra UI、Fastify BFF、およびSQLiteイベントログで構築されたWebUI v0.2.0で構成されています。ボットは GET /api/v1/bot、/status、/params、/account/* などのエンドポイントと、params:updated WebSocketを公開します。トランスポートは DirectHttpTransport に限定されています。シナリオAのプライベートセルフホストは、MVPスコープにおいて機能が完結しています。今後の作業は、アウトバウンドリレーとライセンストークンを介したパブリックサブスクリプションWebUIであるシナリオBに焦点を当てます。