Skip to content

✨ [Feature] 포커스 시작·종료 API 연동 #394

Description

@p1001q

📄 이슈 내용

테마 선택 화면에서 포커스를 시작하고, 진행 세션 화면에서 종료할 때까지의 흐름을 실제 API로 연동한다. 테마는 서버와 주고받지 않고 기존 로컬 asset·localStorage 방식을 유지한다.

범위

  • POST /api/v1/focuses/start에 선택한 bookId를 보내 포커스를 시작한다.
  • 시작 응답의 focusId, bookId, bookTitle, author, startedAt을 세션 화면 상태와 타이머 기준으로 사용한다.
  • POST /api/v1/focuses/endfocusId, 선택 입력 page, isFinished를 보내 포커스를 종료한다.
  • 종료 성공 시 포커스 메인으로 이동하고 홈 조회 데이터를 갱신한다.
  • 시작·종료 중 중복 요청과 API 오류 상태를 처리한다.

범위 제외

  • 테마 API 연동: 테마는 프론트 로컬 asset과 localStorage로만 관리한다.
  • 도서 선택 화면 API 연동: #363에서 별도 진행한다.
  • 진행 중 세션의 서버 복구: 현재 활성 세션 조회 endpoint가 없어 별도 백엔드 계약이 필요하다.

⚠️ 착수 전 확인 필요

  • 시작 API는 bookId를 받으므로, 메인·도서 선택 화면에서 테마 선택 화면까지 선택 도서 ID를 일관되게 전달해야 한다.
  • 새로고침·탭 재진입은 현재 서버 기반 복구를 지원할 수 없다. 같은 탭의 UI 상태 보존 범위만 별도 결정한다.
  • API 오류 문구와 재시도 UX를 확인한다.

✅ 해야 할 항목 체크리스트

  • src/api에 포커스 시작·종료 API 함수 작성
  • src/hooks/mutations에 시작·종료 mutation 작성
  • mockActiveFocusSession 제거 및 시작 응답 기반 세션 상태 연결
  • 타이머 기준을 서버 startedAt으로 교체
  • 종료 성공 시 포커스 메인 query 무효화 및 Toast 흐름 연결
  • 시작·종료 중복 요청 및 실패 상태 처리
  • QA: 시작 → 진행 → 기록 작성 이동·복귀 → 종료 → 메인 갱신

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions