接入 Studio 多点标定的会话置零与状态记录

支持显式无载荷置零、处理线程内切换模型及完整标定包快照。shared、界面检查与兼容测试通过;Studio 全量仍有一项回放停止时序测试失败。
This commit is contained in:
ykcheungab
2026-10-19 09:47:51 +08:00
parent bc5dfc035d
commit 31750f0f84
19 changed files with 514 additions and 32 deletions
@@ -0,0 +1,36 @@
"""Unloaded confirmation is separate from reset and model failures stay visible."""
from types import SimpleNamespace
import pytest
from PySide6.QtWidgets import QMessageBox
from orisys_studio.app_window import StudioMainWindow
from orisys_studio.ui.toolbar import ToolbarWidget
@pytest.mark.parametrize("confirmed", [False, True])
def test_unloaded_zero_requires_operator_confirmation(monkeypatch, confirmed):
requested = []
messages = []
host = SimpleNamespace(
_session_phase="running",
_active_worker=SimpleNamespace(request_calibration_zero=lambda: requested.append(True)),
statusBar=lambda: SimpleNamespace(showMessage=messages.append))
monkeypatch.setattr(QMessageBox, "question", lambda *args: QMessageBox.StandardButton.Yes
if confirmed else QMessageBox.StandardButton.No)
StudioMainWindow._on_calibration_zero(host)
assert bool(requested) == confirmed
def test_model_status_and_zero_control_are_cleared_on_playback(qt_app):
toolbar = ToolbarWidget()
toolbar.set_reset_enabled(True)
toolbar.set_model_calibration_status({"fn": "zero_unavailable"})
assert not toolbar.btn_calibration_zero.isHidden()
assert "FN" in toolbar.model_state.text()
assert toolbar.btn_calibration_zero.isEnabled()
toolbar.set_run_role("playback")
assert toolbar.btn_calibration_zero.isHidden()
assert toolbar.model_state.isHidden()
toolbar.close()