fix(scada): preserve observation fields in chart evidence
Generic Container CI/CD / test-build-publish (push) Successful in 4m10s
Server CI/CD v2 / build-test-publish-and-deploy (push) Successful in 4m10s

This commit is contained in:
2026-11-12 12:22:07 +08:00
parent 2e8fe86f3f
commit 1892b1d1f0
5 changed files with 75 additions and 3 deletions
+4 -1
View File
@@ -77,7 +77,8 @@ class ScadaObservations:
if "time" in row and "device_id" in row:
at = datetime.fromisoformat(row["time"])
if start <= at <= end:
self.values[(str(row["device_id"]), at)] = row
observed = self.values.setdefault((str(row["device_id"]), at), {})
observed.update({field: row[field] for field in ("monitored_value", "cleaned_value") if field in row})
def absent_reason(self, device: str, at: datetime) -> str | None:
for ids, outside, start, end in self.windows:
@@ -206,6 +207,8 @@ def verify_chart(task: dict, chart: dict, evidence: list[dict], refs: list[str])
"历史散点只保留每日末三个对应时刻")
continue
record = observations.values.get((device, at))
require(record is None or field in record, "SCADA_CHART_EVIDENCE_REQUIRED",
f"设备 {device} 的证据未标明 {field},请重新读取明确的监测字段", refs=[device])
actual = record.get(field) if record is not None else None
if actual is None:
absent = observations.absent_reason(device, at)