Skip to content

[Feat] 타이머 생성 API 멱등 처리 #575

Description

@edv-Shin

어떤 기능인가요?

오프라인에서 만든 타이머를 재시도 전송할 때 중복 생성을 막습니다. 클라이언트가 응답을 받기 전에 앱이 종료되면, 재시도로 서버에 같은 타이머가 두 개 생깁니다.

  • 타이머 생성 요청(심플·커스텀)에 createRequestId(UUID) 필드를 추가합니다. 클라이언트는 행 생성 시 발급해 저장하고 재시도에도 같은 값을 보냅니다
  • (memberId, createRequestId)에 유니크 제약을 겁니다
  • 같은 식별자의 요청이 다시 오면 새로 만들지 않고 기존 타이머의 id를 그대로 돌려줍니다
  • createRequestId가 없는 요청(구버전 앱)은 기존대로 생성합니다

작업 상세 내용

  • 생성 요청 DTO에 createRequestId 추가 (심플·커스텀)
  • (memberId, createRequestId) 유니크 제약 추가
  • 중복 요청이면 기존 id 반환
  • createRequestId 없으면 기존 동작 유지
  • 테스트 (중복 요청 시 같은 id, 다른 식별자는 별도 생성, 필드 없음 통과)

참고할만한 자료(선택)

안드로이드 오프라인 1단계 디자인 문서의 위험 요소 2(전송 응답 유실 시 중복 생성) 기준입니다. 안드로이드 TimerSyncWorker 작업이 이 변경의 prod 배포에 의존합니다.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions