fix(scada): verify first sample after field completion
Generic Container CI/CD / test-build-publish (push) Failing after 47s
Server CI/CD v2 / build-test-publish-and-deploy (push) Failing after 47s

This commit is contained in:
2026-11-07 19:50:31 +08:00
parent ff8aba4964
commit dc83cf5c88
7 changed files with 131 additions and 71 deletions
+25 -1
View File
@@ -1,5 +1,5 @@
import asyncio
from datetime import datetime, timezone
from datetime import datetime, timedelta, timezone
import importlib.util
from pathlib import Path
@@ -172,3 +172,27 @@ def test_get_latest_scada_readings_skips_database_for_empty_page():
assert asyncio.run(ScadaRepository.get_latest_scada_readings(conn, [])) == {}
assert conn.cursor_instance.calls == []
def test_recovery_read_selects_first_raw_frame_strictly_after_feedback_and_bounded_reference():
ScadaRepository = _load_scada_repository()
incident = datetime(2026, 7, 16, 0, 0, tzinfo=timezone.utc)
feedback = incident + timedelta(hours=5, minutes=7)
through = feedback + timedelta(hours=2)
rows = [{"time": incident - timedelta(days=1), "device_id": "P1", "monitored_value": 100., "cleaned_value": None},
{"time": incident + timedelta(hours=5, minutes=15), "device_id": "P1", "monitored_value": 100., "cleaned_value": None}]
conn = _ReadingConnection(rows)
result = asyncio.run(ScadaRepository.get_recovery_scada_readings(conn, ["P1"], incident, feedback, through))
assert result == rows
query, parameters = conn.cursor_instance.calls[0]
assert "min(time)" in query and "time>%s AND time<=%s" in query
assert "time>=%s AND time<%s" in query and "JOIN next_frame" in query
assert parameters == (["P1"], feedback, through, ["P1"], incident - timedelta(days=15), incident, 100_001, ["P1"])
def test_recovery_read_does_not_query_when_feedback_is_not_in_the_past():
ScadaRepository = _load_scada_repository()
at = datetime(2026, 7, 16, tzinfo=timezone.utc)
conn = _ReadingConnection([])
assert asyncio.run(ScadaRepository.get_recovery_scada_readings(conn, ["P1"], at, at, at)) == []
assert conn.cursor_instance.calls == []