概要
Virtual Driver (VD) のランタイム設定を Web GUI から編集可能にする。現状 VD の設定はコード同梱の GT_esmini/config/virtual_driver.json を直接編集するか、シナリオ xosc に <Property name="policies" value="lead,..."/> を埋め込む経路しか無く、GUI からは触れない。ManualDrive / AutoLight (F6) には既に GUI 設定パネルがあるのに VD だけ欠落しているため、これを ManualDrive 設定画面と同等のUX で揃える。
関連KG-ID: policy:lead policy:traffic_light policy:stop_yield policy:conflict policy:crosswalk commit:293613ec
現状(調査結果)
- VD設定は完全に非GUI:
policy_lead_enabled 等のPhase3ポリシーフラグ・IDMパラメータ (idm_time_headway 等)・planner/driver ゲインはすべて config/virtual_driver.json にのみ存在。フロント(React)はこれらのキーを一切参照していない。
- 唯一のGUI経由の有効化は、バックエンド
simulation_runner.py がシナリオ xosc の <Property name="policies" value="..."> を読み per-run config へ畳み込む経路(_write_virtual_driver_config / _VD_POLICY_FLAG)。ユーザーがGUIフォームからトグルする手段は無い。
commit:293613ec で入った "policy GUI" は 表示専用(PolicyTimelinePanel / ActivePolicyPanel = 実行中にどのポリシー制約が効いているかの可視化)であり、設定UIではない。
- 踏襲すべき既存パターン(2件):
- ManualDrive:
api/manual_drive_api.py(GET/PUT /api/manual-drive/config + presets)↔ components/simulation/ManualDrivePanel.tsx(SlidePanel + 歯車アイコン、React Query の useQuery/useMutation で読み書き)。
- AutoLight (F6):
api/auto_light_api.py(GET/PUT /api/auto-light/config + /defaults。docstring に "Mirrors manual_drive_api" と明記)。
- 欠落:
virtual_driver_api.py が無く、client.ts に VirtualDriverConfig 型も無い。
要求(このIssueのスコープ)
- バックエンド:
api/virtual_driver_api.py を新設し、manual_drive_api / auto_light_api と同じ規約で GET/PUT /api/virtual-driver/config(+ /defaults)を提供する。config/virtual_driver.json を単一真実源とし、GET フォールバック/defaults リセットも既存2 APIに揃える。
- フロント: ManualDrive 設定画面と同等の設定パネル(
SlidePanel + 歯車起動、React Query で読み書き、defaults リセット)を VD 用に追加。最低限、5つのPhase3ポリシー(policy:lead / policy:traffic_light / policy:stop_yield / policy:conflict / policy:crosswalk)の On/Off トグルと、各ポリシーのパラメータ(IDM: time_headway / min_gap / max_accel / comfort_decel / lookahead / lateral_tol 等)を編集可能にする。
- 実行への反映: GUI で設定した内容が per-run config(
_write_virtual_driver_config)に反映される経路を通す。既存のシナリオ Property 経路とは矛盾なく共存させる(GUI設定 vs シナリオ埋め込みの優先順位を定義)。
- client.ts:
VirtualDriverConfig 型と API ラッパー(getVirtualDriverConfig / updateVirtualDriverConfig / defaults)を追加。
追加要求(今後のVD開発の恒久要件)
VD-GUI-PARITY: 今後 Virtual Driver に追加する「設定で On/Off できる項目・調整可能なパラメータ」は、すべて GUI(Web UI)から設定できることを実装完了の要件とする。config JSON にキーを足すだけで GUI 露出が無い状態を新たに作らない(既存の未露出項目は本Issueで解消する)。
この恒久要件は VD ロードマップの受け入れ基準に組み込む(PolicyやPlannerをJSON追加する際、対応するGUIフォーム項目とAPIスキーマ更新をセットで行う)。
受け入れ基準
概要
Virtual Driver (VD) のランタイム設定を Web GUI から編集可能にする。現状 VD の設定はコード同梱の
GT_esmini/config/virtual_driver.jsonを直接編集するか、シナリオ xosc に<Property name="policies" value="lead,..."/>を埋め込む経路しか無く、GUI からは触れない。ManualDrive / AutoLight (F6) には既に GUI 設定パネルがあるのに VD だけ欠落しているため、これを ManualDrive 設定画面と同等のUX で揃える。関連KG-ID:
policy:leadpolicy:traffic_lightpolicy:stop_yieldpolicy:conflictpolicy:crosswalkcommit:293613ec現状(調査結果)
policy_lead_enabled等のPhase3ポリシーフラグ・IDMパラメータ (idm_time_headway等)・planner/driver ゲインはすべてconfig/virtual_driver.jsonにのみ存在。フロント(React)はこれらのキーを一切参照していない。simulation_runner.pyがシナリオ xosc の<Property name="policies" value="...">を読み per-run config へ畳み込む経路(_write_virtual_driver_config/_VD_POLICY_FLAG)。ユーザーがGUIフォームからトグルする手段は無い。commit:293613ecで入った "policy GUI" は 表示専用(PolicyTimelinePanel/ActivePolicyPanel= 実行中にどのポリシー制約が効いているかの可視化)であり、設定UIではない。api/manual_drive_api.py(GET/PUT /api/manual-drive/config+ presets)↔components/simulation/ManualDrivePanel.tsx(SlidePanel+ 歯車アイコン、React Query の useQuery/useMutation で読み書き)。api/auto_light_api.py(GET/PUT /api/auto-light/config+/defaults。docstring に "Mirrors manual_drive_api" と明記)。virtual_driver_api.pyが無く、client.tsにVirtualDriverConfig型も無い。要求(このIssueのスコープ)
api/virtual_driver_api.pyを新設し、manual_drive_api/auto_light_apiと同じ規約でGET/PUT /api/virtual-driver/config(+/defaults)を提供する。config/virtual_driver.jsonを単一真実源とし、GET フォールバック/defaults リセットも既存2 APIに揃える。SlidePanel+ 歯車起動、React Query で読み書き、defaults リセット)を VD 用に追加。最低限、5つのPhase3ポリシー(policy:lead/policy:traffic_light/policy:stop_yield/policy:conflict/policy:crosswalk)の On/Off トグルと、各ポリシーのパラメータ(IDM: time_headway / min_gap / max_accel / comfort_decel / lookahead / lateral_tol 等)を編集可能にする。_write_virtual_driver_config)に反映される経路を通す。既存のシナリオ Property 経路とは矛盾なく共存させる(GUI設定 vs シナリオ埋め込みの優先順位を定義)。VirtualDriverConfig型と API ラッパー(getVirtualDriverConfig/updateVirtualDriverConfig/ defaults)を追加。追加要求(今後のVD開発の恒久要件)
この恒久要件は VD ロードマップの受け入れ基準に組み込む(PolicyやPlannerをJSON追加する際、対応するGUIフォーム項目とAPIスキーマ更新をセットで行う)。
受け入れ基準
GET/PUT /api/virtual-driver/config(+ defaults)が manual-drive / auto-light と同規約で動作<Property name="policies">の優先順位がドキュメント化されている