feat: complete dual-seat whole-vehicle orchestration

This commit is contained in:
vee
2026-08-12 15:12:40 +08:00
parent 32379a1573
commit 9ce64b3a01
62 changed files with 9741 additions and 3950 deletions
@@ -510,6 +510,113 @@ class MultiDomainServiceTests(unittest.TestCase):
[],
)
def test_build_named_mode_executes_and_persists_in_one_turn(self) -> None:
mode_root = Path(self.temporary_directory.name) / "modes"
self.service.mode_profiles = ModeProfileRegistry(mode_root)
model_output = {
"detected_domains": ["ambient_light", "climate"],
"requests": [
{
"domain": "ambient_light",
"capability": "ambient_light.set_illumination",
"target_scope": "vehicle",
"operation": "set",
"parameters": [
{"name": "color_hex", "value": "#B040FF"},
{"name": "brightness_pct", "value": 60},
],
"reason": "营造K歌氛围。",
},
{
"domain": "climate",
"capability": "climate.set_temperature",
"target_scope": "vehicle",
"operation": "set",
"parameters": [{"name": "temperature_c", "value": 24}],
"reason": "保持K歌时的座舱舒适度。",
},
],
"ambiguities": [],
"decision_summary": ["已构建K歌场景。"],
"confidence": 0.94,
}
with patch.object(self.service.openai, "interpret", return_value=model_output):
built = self.service.process(
"构建一个K歌模式",
"openai",
"conv-build-karaoke-mode",
vehicle_id="denza_n7",
)
self.assertEqual(built["status"], "succeeded")
self.assertEqual(built["mode_profile"]["name"], "K歌模式")
self.assertEqual(built["mode_creation"]["source_status"], "succeeded")
self.assertEqual(built["mode_creation"]["operation_count"], 2)
self.assertIn(
"K歌模式",
{
mode["name"]
for mode in self.service.runtime_info()["modes"]
},
)
matched = self.service.mode_profiles.match_text(
"进入K歌模式", vehicle_id="denza_n7"
)
self.assertEqual([profile.name for profile in matched], ["K歌模式"])
self.assertTrue(Path(built["mode_profile"]["source"]).is_file())
def test_build_named_mode_is_always_a_dry_run_configuration_workflow(self) -> None:
mode_root = Path(self.temporary_directory.name) / "hardware-modes"
self.service.mode_profiles = ModeProfileRegistry(mode_root)
model_output = {
"detected_domains": ["ambient_light"],
"requests": [
{
"domain": "ambient_light",
"capability": "ambient_light.set_illumination",
"target_scope": "vehicle",
"operation": "set",
"parameters": [
{"name": "color_hex", "value": "#B040FF"},
{"name": "brightness_pct", "value": 60},
],
"reason": "构建K歌氛围。",
}
],
"ambiguities": [],
"decision_summary": ["构建K歌灯光。"],
"confidence": 0.95,
}
with patch.object(self.service.openai, "interpret", return_value=model_output):
built = self.service.process(
"构建一个K歌模式",
"openai",
"conv-build-karaoke-hardware-mode",
execution_mode="hardware",
vehicle_id="denza_n7",
hardware_access_bypass=False,
)
self.assertEqual(built["status"], "succeeded")
self.assertEqual(built["execution_mode"], "dry_run")
self.assertFalse(built["hardware_execution_allowed"])
self.assertEqual(built["mode_profile"]["name"], "K歌模式")
def test_create_mode_language_does_not_match_ordinary_mode_execution(self) -> None:
self.assertEqual(
self.service._parse_mode_profile_create_name("创建一个K歌模式"),
"K歌模式",
)
self.assertEqual(
self.service._parse_mode_profile_create_name("新增冥想空间模式"),
"冥想空间模式",
)
self.assertIsNone(
self.service._parse_mode_profile_create_name("进入K歌模式")
)
def test_update_and_restore_long_term_mode_profile_are_control_plane_only(self) -> None:
self.service.mode_profiles = ModeProfileRegistry(
self.service.artifact_root / "modes"