feat(scada): add calibrated monitoring and incident recovery
This commit is contained in:
@@ -215,14 +215,17 @@ async def sync_once(client: httpx.AsyncClient, settings: WorkerSettings, periphe
|
||||
evidence_summary = order["summary"]
|
||||
if notes:
|
||||
evidence_summary += "\n现场反馈:\n" + "\n".join(notes[-10:])
|
||||
field_times = [activity["occurred_at"] for activity in order.get("activity", [])
|
||||
if activity.get("kind") == "feedback" and activity.get("occurred_at")]
|
||||
feedback_time = field_times[-1] if order["status"] == "completed" and field_times else order["updated_at"]
|
||||
feedback = {
|
||||
"request_id": str(uuid5(NAMESPACE_URL, event_id)), "source_event_id": external_id,
|
||||
"source_revision": order["revision"], "status": STATUS[order["status"]],
|
||||
"occurred_at": order["updated_at"],
|
||||
"occurred_at": feedback_time,
|
||||
"detail": f"{source_label} {order['work_order_id']}:{order['status']}",
|
||||
"evidence": {"evidence_id": event_id, "kind": "external_feedback", "summary": evidence_summary,
|
||||
"source_label": source_label, "source_ref": external_id,
|
||||
"observed_at": order["updated_at"]},
|
||||
"observed_at": feedback_time},
|
||||
}
|
||||
# A child order's creation is already represented by its dispatch
|
||||
# receipt. Only a subsequent source revision is new field input.
|
||||
|
||||
Reference in New Issue
Block a user