Skip to content

feat: 공유 사진첩 및 일정 재진입 복원 - #15

Merged
Heyaaz merged 6 commits into
mainfrom
feature/shared-photo-album-db
May 17, 2026
Merged

feat: 공유 사진첩 및 일정 재진입 복원#15
Heyaaz merged 6 commits into
mainfrom
feature/shared-photo-album-db

Conversation

@Heyaaz

@Heyaaz Heyaaz commented May 17, 2026

Copy link
Copy Markdown
Owner

Summary

  • 여행 종료 후 장소별 공유 사진첩 구현
  • DB BYTEA 기반 사진 저장 및 S3 확장 대비 조회 경계 보강
  • 방 재진입 시 생성/확정 일정 상태 복원

Changes

  • trip_photos 스키마·엔티티·리포지토리 추가
  • 멤버 전용 사진첩 조회/업로드/수정/삭제 API 추가
  • 사진 목록 projection 조회, 업로드 용량·MIME·quota 검증 추가
  • room 조회 응답에 scheduleState 포함
  • 일정 생성 상태와 확정 상태 분리
  • 사진첩 마이그레이션 V5 체크섬 보존 및 V6 제약 추가

Verification

  • Not run
  • Build
    • ./gradlew compileKotlin --no-daemon
  • Test
    • ./gradlew test --tests com.tripsync.domain.repository.TripPhotoRepositoryTest --no-daemon
    • ./gradlew test --tests com.tripsync.application.schedule.ScheduleServiceTest --no-daemon
  • Manual
    • Docker compose server/web 재빌드 및 재시작
    • /api/schedules/{id}/album 라우트 404 해소 확인

Notes

Heyaaz added 6 commits May 17, 2026 20:37
Shared photo album P0 stores image bytes in PostgreSQL bytea, so the repository test covers visible-photo filtering, soft-delete exclusion, and byte-array round trips. The entity mapping now binds content as binary data instead of a PostgreSQL large-object OID.

Constraint: P0 stores photo files in DB bytea while object storage is deferred

Rejected: Keep @lob mapping | Hibernate persisted an OID/bigint and failed against bytea

Confidence: high

Scope-risk: narrow

Tested: ./gradlew testClasses --no-daemon

Tested: ./gradlew test --tests com.tripsync.domain.repository.TripPhotoRepositoryTest --no-daemon

Not-tested: Full ./gradlew test suite due leader instruction to finish current slice with focused evidence
The album UI needs authenticated endpoints for listing slot-grouped memories, uploading DB-backed image bytes, returning inline image content, and applying uploader/host moderation rules.

Constraint: P0 stores files in DB bytea and excludes public album sharing

Constraint: S3/object storage remains a future extension boundary rather than a P0 dependency

Rejected: Public /share photo endpoints | photo consent and moderation model are not ready for P0

Confidence: high

Scope-risk: moderate

Tested: ./gradlew compileKotlin --no-daemon

Tested: ./gradlew test --tests com.tripsync.domain.repository.TripPhotoRepositoryTest --no-daemon

Not-tested: Full end-to-end multipart upload through browser
@Heyaaz

Heyaaz commented May 17, 2026

Copy link
Copy Markdown
Owner Author

Nogada PR Review

Verdict

  • 승인 가능: blocking 이슈 없음

Blocking issues

  • 없음

Non-blocking notes

  • 사진 원본을 DB bytea에 저장하는 구조라 MVP/소규모 운영에는 단순해서 괜찮지만, 사용량이 늘면 DB 용량·백업·응답 지연 부담이 빠르게 커질 수 있음. 이후 S3/오브젝트 스토리지 전환 여지를 별도 이슈로 남겨두면 좋음.
  • 테스트 종료 시 Testcontainers/Hikari PostgreSQL 연결 종료 경고가 로그에 남았지만, Gradle 결과와 XML 기준 실패는 없음.

Checked scope

  • 공유 사진첩 도메인/서비스/컨트롤러/마이그레이션 변경 검토
  • 일정 재진입 복원용 room/schedule 응답 변경 검토
  • git diff --check origin/main...pr-15 통과
  • /tmp/tripsync_server-pr-15 worktree에서 ./gradlew clean test --no-daemon --no-build-cache 실행: 40 tests, 0 failures, 0 errors

@Heyaaz
Heyaaz merged commit 425a1f1 into main May 17, 2026
1 check passed
@Heyaaz
Heyaaz deleted the feature/shared-photo-album-db branch May 17, 2026 12:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant