fix(sensor): use published coordinates for custom SRIDs
Generic Container CI/CD / test-build-publish (push) Successful in 2m11s
Server CI/CD v2 / build-test-publish-and-deploy (push) Successful in 2m11s

Result validation bypassed the project-specific GIS transform and called ST_Transform on custom engineering SRIDs. Read project and map coordinates from gis.junctions so every project uses its configured publication transform.
This commit is contained in:
2026-09-11 11:29:51 +08:00
parent 90b02057bc
commit 0685f6dd17
2 changed files with 16 additions and 14 deletions
+10 -11
View File
@@ -130,18 +130,17 @@ def get_sensor_placement_nodes(
) AS incident_pipes ) AS incident_pipes
GROUP BY node_id GROUP BY node_id
) )
SELECT j.node_id, SELECT g.id AS node_id,
ipd.max_pipe_diameter, ipd.max_pipe_diameter,
j.elevation, g.elevation,
ST_X(g.geom) AS project_x, g.x AS project_x,
ST_Y(g.geom) AS project_y, g.y AS project_y,
ST_X(ST_Transform(g.geom, 3857)) AS map_x, ST_X(g.geom) AS map_x,
ST_Y(ST_Transform(g.geom, 3857)) AS map_y ST_Y(g.geom) AS map_y
FROM network.junctions AS j FROM gis.junctions AS g
JOIN gis.node_geometries AS g ON g.node_id = j.node_id LEFT JOIN incident_pipe_diameters AS ipd ON ipd.node_id = g.id
LEFT JOIN incident_pipe_diameters AS ipd ON ipd.node_id = j.node_id WHERE g.id = ANY(%s)
WHERE j.node_id = ANY(%s) ORDER BY g.id
ORDER BY j.node_id
""", """,
(node_ids, node_ids, node_ids), (node_ids, node_ids, node_ids),
) )
+6 -3
View File
@@ -122,7 +122,7 @@ def test_list_sensor_placements_batches_node_lookup(monkeypatch):
assert [len(run["sensor_points"]) for run in runs] == [2, 2] assert [len(run["sensor_points"]) for run in runs] == [2, 2]
def test_sensor_nodes_query_uses_new_network_and_gis_schemas(monkeypatch): def test_sensor_nodes_query_uses_published_junction_coordinates(monkeypatch):
cursor = _mock_project_cursor(monkeypatch) cursor = _mock_project_cursor(monkeypatch)
cursor.fetchall.return_value = [] cursor.fetchall.return_value = []
@@ -131,8 +131,11 @@ def test_sensor_nodes_query_uses_new_network_and_gis_schemas(monkeypatch):
query = cursor.execute.call_args.args[0] query = cursor.execute.call_args.args[0]
assert "network.pipes" in query assert "network.pipes" in query
assert "network.links" in query assert "network.links" in query
assert "gis.node_geometries" in query assert "FROM gis.junctions AS g" in query
assert "ST_Transform(g.geom, 3857)" in query assert "g.x AS project_x" in query
assert "ST_X(g.geom) AS map_x" in query
assert "gis.node_geometries" not in query
assert "ST_Transform" not in query
assert "l.start_node_id = ANY(%s)" in query assert "l.start_node_id = ANY(%s)" in query
assert "l.end_node_id = ANY(%s)" in query assert "l.end_node_id = ANY(%s)" in query
assert "CROSS JOIN LATERAL" not in query assert "CROSS JOIN LATERAL" not in query