fix(k1): simplify response-gated launch UX
This commit is contained in:
@@ -113,7 +113,7 @@ def test_xgrids_frontend_uses_semantic_acquisition_actions_and_stable_identity()
|
||||
assert 'id: "xgrids-k1-rerun-live"' not in runtime_source
|
||||
|
||||
|
||||
def test_xgrids_live_copy_exposes_only_explicit_canonical_control_steps() -> None:
|
||||
def test_xgrids_live_copy_exposes_one_response_gated_launch_intent() -> None:
|
||||
repository_root = Path(__file__).resolve().parents[1]
|
||||
connection_source = (
|
||||
repository_root
|
||||
@@ -125,11 +125,14 @@ def test_xgrids_live_copy_exposes_only_explicit_canonical_control_steps() -> Non
|
||||
/ "K1AcquisitionPipeline.tsx"
|
||||
).read_text("utf-8")
|
||||
|
||||
assert "Подключить управление K1" in connection_source
|
||||
assert "Открыть рабочее пространство K1" in connection_source
|
||||
assert "Сохранить проект и подготовить локальный приём" in connection_source
|
||||
assert "Запустить сканирование K1" in connection_source
|
||||
assert "никаких временных автопереходов и повторов нет" in connection_source
|
||||
assert "Запустить сканирование и локальный приём" in connection_source
|
||||
assert "Имя войдёт в единственный канонический START" in connection_source
|
||||
assert "этапы идут строго по записанному порядку и только после ответов K1" in (
|
||||
connection_source
|
||||
)
|
||||
assert "Подключить управление K1" not in connection_source
|
||||
assert "Открыть рабочее пространство K1" not in connection_source
|
||||
assert "Сохранить проект и подготовить локальный приём" not in connection_source
|
||||
assert "Остановить локальный приём" in connection_source
|
||||
assert "Физическое состояние сканера остаётся неизвестным" in connection_source
|
||||
|
||||
|
||||
@@ -16,6 +16,7 @@ from k1link.device_plugins.xgrids_k1.facade import (
|
||||
CameraPreviewSelectRequest,
|
||||
CompatibilityAttestationRequest,
|
||||
ConnectRequest,
|
||||
OpenApplicationControlSessionRequest,
|
||||
OperatorPresenceRequest,
|
||||
PrepareAcquisitionRequest,
|
||||
ShadowApplicationControlArmRequest,
|
||||
@@ -169,6 +170,19 @@ PHYSICAL_ACCEPTANCE = OperatorPresenceRequest(
|
||||
)
|
||||
|
||||
|
||||
def test_control_session_transport_metadata_does_not_leak_into_confirmation() -> None:
|
||||
request = OpenApplicationControlSessionRequest(
|
||||
operator_present=True,
|
||||
owner_controlled_device=True,
|
||||
lixelgo_closed=True,
|
||||
battery_storage_confirmed=True,
|
||||
expected_physical_state_confirmed=True,
|
||||
timezone_name="Europe/Moscow",
|
||||
)
|
||||
|
||||
assert request.confirmation() == PHYSICAL_ACCEPTANCE.confirmation()
|
||||
|
||||
|
||||
def service_with_fake_runtime(
|
||||
tmp_path: Path,
|
||||
) -> tuple[XgridsK1CompatibilityService, FakeVisualizationRuntime]:
|
||||
|
||||
Reference in New Issue
Block a user