feat(autocal): 完善标定记录检查流程与UV轮廓显示

补齐传感器身份、稳定段检查引导和未完成试验诊断,并保存采集轮廓快照。通过60项相关测试、已有记录读取及代码和文档检查。
This commit is contained in:
ykcheungab
2026-10-11 20:15:04 +08:00
parent 432f45325f
commit d06501d7d5
17 changed files with 719 additions and 141 deletions
+24
View File
@@ -111,6 +111,27 @@ def test_uv_coordinates_are_centered_and_masked(flat):
site_at(flat, -3, 0)
def test_trial_persists_colour_region_outline_and_rejects_mismatched_mapping(trial_setup, flat):
from orisys_autocal.sensor.uv_outline import outline_snapshot
flat.textured = True
flat.image_rgb[:] = 255
flat.image_rgb[2:4, 2:5] = [20, 80, 200]
snapshot = outline_snapshot(flat)
worker = Worker()
trial = ManualTrial(worker)
with pytest.raises(ValueError, match="outline"):
trial.start(**trial_setup, uv_outline={**snapshot, "mapping_sha256": "wrong"})
directory = trial.start(**trial_setup, uv_outline=snapshot)
worker.emit()
trial.finish(aborted=True, reason="test ended")
trial.recorder.stop(wait=True)
trial.poll()
manifest = json.loads((directory.parent.parent / "session.json").read_text(encoding="utf-8"))
assert manifest["uv_outline"] == snapshot and snapshot["patch"]
trial.finish_session()
def test_manual_trial_records_video_stamps_and_load_unload_events(trial_setup, clock):
worker = Worker()
trial = ManualTrial(worker)
@@ -277,6 +298,9 @@ def test_gui_hold_controls_and_session_lifecycle(make_window, trial_setup, clock
panel.levels.setText("5, 10")
panel.start_button.click()
assert panel.trial.status == "recording"
manifest = json.loads((panel.trial.session.directory / "session.json").read_text(encoding="utf-8"))
assert manifest["uv_outline"]["surface"]
assert manifest["uv_outline"]["mapping_sha256"] == manifest["uv_definition"]["mapping_sha256"]
worker.emit()
assert panel.views.currentWidget() is panel.source_panel
assert not panel.sensor_sn.isEnabled()