Compare commits

..

2 커밋

작성자 SHA1 메시지 날짜
6303831df3 Merge pull request 'fix: parent_resolution JOIN 타이밍 갭 허용' (#226) from hotfix/join-timing-tolerance into main
All checks were successful
Deploy KCG / deploy (push) Successful in 1m29s
2026-04-06 07:09:17 +09:00
dd9de6739c fix: parent_resolution JOIN 타이밍 갭 허용 — snapshot_time - 10분
5분 사이클에서 폴리곤 저장 → inference 실행 순서로 인해
latest snapshot_time > last_evaluated_at이 될 수 있음.
JOIN 조건에 10분 여유를 두어 이전 사이클 결과도 매칭되도록 수정.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-06 07:08:54 +09:00

파일 보기

@ -51,7 +51,7 @@ public class GroupPolygonService {
JOIN latest_groups lg
ON lg.group_key = c.group_key
AND lg.sub_cluster_id = c.sub_cluster_id
AND c.observed_at >= lg.snapshot_time
AND c.observed_at >= lg.snapshot_time - INTERVAL '10 minutes'
GROUP BY c.group_key, c.sub_cluster_id
),
candidate_counts AS (
@ -79,7 +79,7 @@ public class GroupPolygonService {
LEFT JOIN %s r
ON r.group_key = lg.group_key
AND r.sub_cluster_id = lg.sub_cluster_id
AND r.last_evaluated_at >= lg.snapshot_time
AND r.last_evaluated_at >= lg.snapshot_time - INTERVAL '10 minutes'
LEFT JOIN candidate_counts cc
ON cc.group_key = lg.group_key
AND cc.sub_cluster_id = lg.sub_cluster_id
@ -105,7 +105,7 @@ public class GroupPolygonService {
LEFT JOIN %s r
ON r.group_key = g.group_key
AND r.sub_cluster_id = g.sub_cluster_id
AND r.last_evaluated_at >= g.snapshot_time
AND r.last_evaluated_at >= g.snapshot_time - INTERVAL '10 minutes'
WHERE g.group_key = ?
ORDER BY g.snapshot_time DESC
LIMIT 1
@ -130,7 +130,7 @@ public class GroupPolygonService {
LEFT JOIN %s r
ON r.group_key = g.group_key
AND r.sub_cluster_id = g.sub_cluster_id
AND r.last_evaluated_at >= g.snapshot_time
AND r.last_evaluated_at >= g.snapshot_time - INTERVAL '10 minutes'
WHERE g.group_key = ? AND g.snapshot_time > NOW() - CAST(? || ' hours' AS INTERVAL)
ORDER BY g.snapshot_time DESC
""";
@ -186,7 +186,7 @@ public class GroupPolygonService {
JOIN latest_groups lg
ON lg.group_key = c.group_key
AND lg.sub_cluster_id = c.sub_cluster_id
AND c.observed_at >= lg.snapshot_time
AND c.observed_at >= lg.snapshot_time - INTERVAL '10 minutes'
GROUP BY c.group_key, c.sub_cluster_id
),
candidate_counts AS (
@ -215,7 +215,7 @@ public class GroupPolygonService {
JOIN %s r
ON r.group_key = lg.group_key
AND r.sub_cluster_id = lg.sub_cluster_id
AND r.last_evaluated_at >= lg.snapshot_time
AND r.last_evaluated_at >= lg.snapshot_time - INTERVAL '10 minutes'
LEFT JOIN candidate_counts cc
ON cc.group_key = lg.group_key
AND cc.sub_cluster_id = lg.sub_cluster_id
@ -247,7 +247,7 @@ public class GroupPolygonService {
JOIN latest_groups lg
ON lg.group_key = c.group_key
AND lg.sub_cluster_id = c.sub_cluster_id
AND c.observed_at >= lg.snapshot_time
AND c.observed_at >= lg.snapshot_time - INTERVAL '10 minutes'
WHERE c.group_key = ?
GROUP BY c.group_key, c.sub_cluster_id
),
@ -277,7 +277,7 @@ public class GroupPolygonService {
LEFT JOIN %s r
ON r.group_key = lg.group_key
AND r.sub_cluster_id = lg.sub_cluster_id
AND r.last_evaluated_at >= lg.snapshot_time
AND r.last_evaluated_at >= lg.snapshot_time - INTERVAL '10 minutes'
LEFT JOIN candidate_counts cc
ON cc.group_key = lg.group_key
AND cc.sub_cluster_id = lg.sub_cluster_id
@ -301,7 +301,7 @@ public class GroupPolygonService {
JOIN latest_groups lg
ON lg.group_key = c.group_key
AND lg.sub_cluster_id = c.sub_cluster_id
AND c.observed_at >= lg.snapshot_time
AND c.observed_at >= lg.snapshot_time - INTERVAL '10 minutes'
GROUP BY c.group_key, c.sub_cluster_id
)
SELECT c.group_key, c.sub_cluster_id, c.candidate_mmsi, c.candidate_name,