fix: remove non-existent DeviceInfo fields from ach_server log and dict

calibration_date, aux_trigger, setup_name etc. don't exist directly on
DeviceInfo — they live in DeviceInfo.compliance_config (ComplianceConfig).
_device_info_to_dict now accesses them via cc = d.compliance_config.
Log line updated to show serial/firmware/model/event_count instead.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-04-10 01:43:02 -04:00
committed by serversdown
parent 9b50ec9133
commit 8688d815a0
+18 -14
View File
@@ -210,10 +210,11 @@ class AchSession:
serial = device_info.serial serial = device_info.serial
_save_json(session_dir / "device_info.json", _device_info_to_dict(device_info)) _save_json(session_dir / "device_info.json", _device_info_to_dict(device_info))
log.info( log.info(
" [OK] Device: serial=%s firmware=%s calibration=%s", " [OK] Device: serial=%s firmware=%s model=%s events=%d",
serial, serial,
device_info.firmware_version, device_info.firmware_version,
device_info.calibration_date, device_info.model,
device_info.event_count or 0,
) )
except Exception as exc: except Exception as exc:
log.error(" [FAIL] Device info failed: %s", exc) log.error(" [FAIL] Device info failed: %s", exc)
@@ -319,21 +320,24 @@ def _save_json(path: Path, obj: object) -> None:
def _device_info_to_dict(d: DeviceInfo) -> dict: def _device_info_to_dict(d: DeviceInfo) -> dict:
cc = d.compliance_config
return { return {
"serial": d.serial, "serial": d.serial,
"firmware_version": d.firmware_version, "firmware_version": d.firmware_version,
"calibration_date": str(d.calibration_date) if d.calibration_date else None, "dsp_version": d.dsp_version,
"aux_trigger": d.aux_trigger, "model": d.model,
"setup_name": d.setup_name, "event_count": d.event_count,
"sample_rate": d.sample_rate, # compliance config fields (None if 1A read failed)
"record_time": d.record_time, "setup_name": cc.setup_name if cc else None,
"trigger_level_geo": d.trigger_level_geo, "sample_rate": cc.sample_rate if cc else None,
"alarm_level_geo": d.alarm_level_geo, "record_time": cc.record_time if cc else None,
"max_range_geo": d.max_range_geo, "trigger_level_geo": cc.trigger_level_geo if cc else None,
"project": d.project, "alarm_level_geo": cc.alarm_level_geo if cc else None,
"client": d.client, "max_range_geo": cc.max_range_geo if cc else None,
"operator": d.operator, "project": cc.project if cc else None,
"sensor_location": d.sensor_location, "client": cc.client if cc else None,
"operator": cc.operator if cc else None,
"sensor_location": cc.sensor_location if cc else None,
} }