MSG-498 feat: 행사 운영자가 콘솔에서 행사를 신청하고 반려본을 다시 낸다 - #243
Conversation
|
Claude finished @s13121312's task in 4m 17s —— View job 리뷰 완료
확인 범위: 병렬 경합: 마이그레이션 스펙·실행 결함: 재제출의 "조건부 UPDATE → 0행이면 소유 조회 분기 → 재로드"가 P3 (참고): PR 본문은 테스트 59건(통합 34)이라 하지만 실제 라인 단위로 지적할 결함은 찾지 못해 인라인 코멘트는 남기지 않았습니다. |
Codex 교차 리뷰 반영 2건. 보상 등록이 복사 뒤면 응답 유실 시 original 고아가 남고, 건수 GROUP BY와 목록이 다른 스냅숏이면 카드 합과 목록이 어긋나 보인다.
Codex 교차 리뷰 2라운드 반영. 원소 null이 검증을 통과해 위치 자리는 500, 사각형 자리는 형식 오류가 13431로 잘못 보고되던 것을 공통 400으로 회복(스펙 명문 준수).
e40a4ed to
1110d53
Compare
|
V47 재번호가 필요합니다. MSG-499(PR #242, V48__org_account_requests)가 방금 먼저 머지돼서 develop 최신 마이그레이션이 V48입니다. 이 브랜치의 V47__event_submissions가 그대로 머지되면 CI(새 DB)는 버전 순서대로 적용돼 통과하지만, V48이 이미 적용된 dev·prod에서는 Flyway가 낮은 번호의 새 마이그레이션을 out-of-order로 무시해 event_submissions 테이블이 만들어지지 않습니다. V49로 재번호 후 머지해야 합니다. 🤖 AI 컨텍스트: 두 레인이 같은 날 V47을 잡은 경합 — 공유 로컬 DB에는 498의 V47이 먼저 적용돼 499가 V48로 밀었고(MSG-499 스펙 작업 로그), 머지는 499가 먼저였으므로 나중 쪽인 498이 재번호할 차례입니다(pr-base-sync 규칙). |
09ba5e7 to
1110d53
Compare
테스트 커버리지
|
테스트 커버리지
|
테스트 커버리지
|
PR 리뷰 지적 반영. MSG-499(V48)가 먼저 머지돼 V47은 dev·prod에서 out-of-order로 무시된다(CI는 새 DB라 순서 적용돼 못 잡는 문제). 파일 내용 불변, 번호와 참조만 교체.
테스트 커버리지
|
🎫 관련 티켓
작업 내용
/api/org/event-submissions아래라 인가 코드는 새로 만들지 않았다(MSG-496 matcher와 MSG-497 첫 로그인 게이트가 프리픽스로 자동 커버 — 인가 테스트 4건은 그 전제 확인).V49__event_submissions.sql— 신청·위치·영역 사각형·상태 이력 4테이블 + 신청 번호 전역 시퀀스(FM-{KST연도}-{4자리}). 반려 사유의 저장 원천은 이력 테이블 하나이고, CHECK 제약이 REJECTED 행에만 사유를 강제한다.docs/explainers/MSG-498-submission-flow.html신규.🤔 고민한 내용
@ManyToOne이 연관 주인, 부모는 mappedBy 컬렉션 + 편의 메서드. 중간에 단방향@OneToMany + @JoinColumn으로 갔다가 주류 관행(일대다 단방향 지양)으로 되돌렸다. 왕복에서 실측 하나를 건졌다:@JoinColumn(nullable = false)면 단방향도 FK가 자식 INSERT에 함께 실려 NOT NULL에 걸리지 않는다 — 통설("INSERT 후 UPDATE")은 nullable 미지정 경우의 이야기다. 설명서 4절에 대비표로 정리했다.UPDATE ... WHERE id = ? AND user_id = ? AND status = 'REJECTED'한 문장이 유일한 판정자다. 술어에 userId가 있어 남의 행은 어떤 경로로도 수정되지 않고, 영향 0행이면 소유 조회로 분기해 존재 은닉(13430)을 유지한다.clearAutomatically = true+ 재로드가 UPDATE 뒤라 스테일 REJECTED가 복원될 경로가 없다(실 DB 동시성 테스트로 실증).RepresentativeGridResolver로 승격해 시더와 같은 값 하나를 쓴다.👀 리뷰 포인트
event-submissions/pending/프리픽스에 S3 라이프사이클 만료 규칙 추가(확정 없이 버려진 업로드 회수 — 작업 로그 런북 참조). 확정본 original은 공개 읽기를 열지 않는다(presigned GET만).