어떤 기능인가요?
타이머(심플·커스텀)의 원본을 기기로 옮기는 저장층입니다. 오프라인 생성을 지원하려면 기기가 원본이어야 합니다. 화면 전환은 별도 이슈에서 다룹니다.
- Entity에
syncState(생성 대기, 수정 대기, 삭제 대기, 동기화 완료), serverId, createRequestId(UUID), localEditedAt을 둡니다 - 연산을 쌓지 않고 행마다 현재 상태만 둡니다. 오프라인에서 여러 번 고쳐도 전송은 마지막 상태 한 번입니다
- 삭제는 행을 바로 지우지 않고 삭제 대기로 표시합니다. 바로 지우면 서버에 삭제를 알릴 방법이 없습니다
- 서버에 없는 행(생성 대기)을 수정하면 생성 대기를 유지하고, 지우면 즉시 삭제합니다. 수정 대기로 바꾸면 전송이 서버에 없는 항목에 수정 요청을 보냅니다
createRequestId는 행 생성 시 발급해 저장하고 재시도에도 같은 값을 보냅니다 (서버 멱등 처리의 키)localEditedAt은 로컬 정렬과 전송 순서에만 씁니다. 충돌 판정은 서버 시각만 씁니다
작업 상세 내용
참고할만한 자료(선택)
오프라인 1단계 디자인 문서의 원본 데이터 위치와 동기화 전략(로컬에서 서버로) 절 기준입니다. Room 골격 이슈가 선행입니다.
어떤 기능인가요?
타이머(심플·커스텀)의 원본을 기기로 옮기는 저장층입니다. 오프라인 생성을 지원하려면 기기가 원본이어야 합니다. 화면 전환은 별도 이슈에서 다룹니다.
syncState(생성 대기, 수정 대기, 삭제 대기, 동기화 완료),serverId,createRequestId(UUID),localEditedAt을 둡니다createRequestId는 행 생성 시 발급해 저장하고 재시도에도 같은 값을 보냅니다 (서버 멱등 처리의 키)localEditedAt은 로컬 정렬과 전송 순서에만 씁니다. 충돌 판정은 서버 시각만 씁니다작업 상세 내용
syncState전이 규칙 구현createRequestIdUUID 발급·저장참고할만한 자료(선택)
오프라인 1단계 디자인 문서의 원본 데이터 위치와 동기화 전략(로컬에서 서버로) 절 기준입니다. Room 골격 이슈가 선행입니다.