diff --git a/.gitea/workflows/deploy.yml b/.gitea/workflows/deploy.yml index 089ed48..a8ee76e 100644 --- a/.gitea/workflows/deploy.yml +++ b/.gitea/workflows/deploy.yml @@ -112,10 +112,11 @@ jobs: echo "--- Restarting kcg-backend ---" systemctl restart kcg-backend - # 기동 확인 (최대 30초) - for i in $(seq 1 30); do - if curl -sf http://localhost:8080/api/aircraft > /dev/null 2>&1; then - echo "Backend started successfully (${i}s)" + # 기동 확인 (최대 60초, 401=인증필요=정상 기동) + for i in $(seq 1 60); do + HTTP=$(curl -s -o /dev/null -w '%{http_code}' http://localhost:8080/api/aircraft 2>/dev/null) + if [ "$HTTP" = "200" ] || [ "$HTTP" = "401" ] || [ "$HTTP" = "403" ]; then + echo "Backend started successfully (${i}s, HTTP $HTTP)" exit 0 fi sleep 1 diff --git a/backend/src/main/java/gc/mda/kcg/collector/sensor/PressureCollector.java b/backend/src/main/java/gc/mda/kcg/collector/sensor/PressureCollector.java index cb27cff..a95e121 100644 --- a/backend/src/main/java/gc/mda/kcg/collector/sensor/PressureCollector.java +++ b/backend/src/main/java/gc/mda/kcg/collector/sensor/PressureCollector.java @@ -91,19 +91,16 @@ public class PressureCollector { try { // Open-Meteo 시간 형식: "2026-03-18T07:00" (Z 없음) → Z 추가 Instant readingTime = OffsetDateTime.parse(timeStr + "Z").toInstant(); - try { - repository.save(PressureReading.builder() - .station(station) - .lat(lat) - .lng(lng) - .pressureHpa(pressure) - .readingTime(readingTime) - .collectedAt(now) - .build()); - saved++; - } catch (Exception ignored) { - // unique constraint violation = 이미 존재, 무시 - } + if (repository.existsByStationAndReadingTime(station, readingTime)) continue; + repository.save(PressureReading.builder() + .station(station) + .lat(lat) + .lng(lng) + .pressureHpa(pressure) + .readingTime(readingTime) + .collectedAt(now) + .build()); + saved++; } catch (DateTimeParseException e) { log.debug("기압 시간 파싱 실패: {}", timeStr); } diff --git a/backend/src/main/java/gc/mda/kcg/domain/sensor/PressureReadingRepository.java b/backend/src/main/java/gc/mda/kcg/domain/sensor/PressureReadingRepository.java index 3c418c0..d6057d4 100644 --- a/backend/src/main/java/gc/mda/kcg/domain/sensor/PressureReadingRepository.java +++ b/backend/src/main/java/gc/mda/kcg/domain/sensor/PressureReadingRepository.java @@ -6,6 +6,7 @@ import java.time.Instant; import java.util.List; public interface PressureReadingRepository extends JpaRepository { + boolean existsByStationAndReadingTime(String station, Instant readingTime); List findByStationAndReadingTimeAfterOrderByReadingTimeAsc(String station, Instant since); List findByReadingTimeAfterOrderByReadingTimeAsc(Instant since); }