[Merge] #46 트래킹 사진 푸시 머지#79
Conversation
…photo-push # Conflicts: # src/main/java/com/semosan/api/common/status/ErrorStatus.java # src/main/java/com/semosan/api/domain/tracking/service/TrackingSessionService.java # src/main/java/com/semosan/api/domain/tracking/service/TrackingStreamConsumer.java
- 003_tracking_photos.sql → V10__create_tracking_photos.sql Flyway 컨벤션 통일 - BIGSERIAL → bigint identity, FK 제약 이름 명시(fk_tracking_photos_session) - timestamp(6), DEFAULT now() 제거 (BaseEntity 가 채움) - notifications.type CHECK 갱신 동봉 (TRACKING_PHOTO_MILESTONE 추가)
|
Caution Review failedThe pull request is closed. ℹ️ Recent review info⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (16)
📝 WalkthroughWalkthroughThis PR implements a complete photo milestone tracking feature. It adds photo upload/list endpoints secured by user ownership, calculates distance-based milestones from GPS sessions, stores photos in a new entity, and triggers WebSocket and FCM notifications when users enter distance windows during active tracking. ChangesTracking Photo Feature
Sequence Diagram(s)sequenceDiagram
participant GPSStream
participant StreamConsumer
participant StatsService
participant ActivityService
participant TriggerService
participant Redis
participant WebSocket
participant FCM
GPSStream->>StreamConsumer: GPS point {lat, lng, userId}
StreamConsumer->>StatsService: recordPoint(sessionId, lat, lng, altitude, time)
StatsService->>Redis: update distance in session hash
StatsService-->>StreamConsumer: return distanceTotal
StreamConsumer->>ActivityService: markActive(sessionId)
StreamConsumer->>TriggerService: evaluate(sessionId, userId, distanceTotal)
TriggerService->>Redis: load milestones and state sets
alt distanceTotal enters milestone window
TriggerService->>Redis: mark milestone as OPEN
TriggerService->>WebSocket: send OPEN event {index, distance, status, timestamp}
TriggerService->>FCM: sendNotification(distance, userId)
FCM-->>TriggerService: ok or exception (caught, logged)
end
alt OPEN milestone exceeds exit threshold
TriggerService->>Redis: mark milestone as CLOSED
TriggerService->>WebSocket: send CLOSED event {index, distance, status, timestamp}
end
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~25 minutes Possibly related PRs
Suggested labels
Suggested reviewers
Poem
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Comment |
🧾 요약
🔗 이슈
✨ 변경 내용
✅ 확인
Summary by CodeRabbit
Release Notes