fix(burst-detection): sync target monitoring flow

This commit is contained in:
2026-07-30 10:42:20 +08:00
parent 18253f2fe0
commit d3eea23e27
6 changed files with 639 additions and 29 deletions
@@ -54,6 +54,27 @@ class ScadaRepository:
)
return cur.fetchall()
@staticmethod
def get_latest_scada_time_sync(
conn: Connection,
device_ids: List[str],
before_time: datetime | None = None,
) -> datetime | None:
with conn.cursor(row_factory=dict_row) as cur:
if before_time is None:
cur.execute(
"SELECT max(time) AS time FROM scada.scada_data WHERE device_id = ANY(%s)",
(device_ids,),
)
else:
cur.execute(
"SELECT max(time) AS time FROM scada.scada_data "
"WHERE device_id = ANY(%s) AND time <= %s",
(device_ids, before_time),
)
row = cur.fetchone()
return row["time"] if row else None
@staticmethod
async def get_scada_field_by_id_time_range(
conn: AsyncConnection,