🎟️ 상위 작업 (Ticket Number)
BOOK-10
♻️ 리팩토링 설명
알라딘 API totalResults와 실제 필터링 데이터 수 불일치로 인한 페이지네이션 오류
🧹 리팩토링 작업 목록
문제 상황
알라딘 API에서 제공하는 totalResults가 실제 UX 정책 및 필터링 로직 적용 후의 데이터 개수와 불일치함.
API가 330개를 반환해도 UX 정책상 최대 200개까지만 표시하며, ISBN 검증/변환 과정에서 일부 데이터가 제거되어 실제 표시 가능한 데이터 수가 더 적어짐(예: 150개).
이로 인해 마지막 페이지 계산이 잘못되어, 마지막 페이지가 아닌데도 빈 결과가 발생하는 문제가 있음.
원인
totalResults가 원본 데이터 기준으로만 제공됨.
UX 정책(최대 200개 제한)과 필터링 로직 적용 후 실제 데이터 수가 줄어듦.
페이지네이션이 원본 데이터 수를 기준으로 계산되므로 불필요한 빈 페이지가 노출됨.
해결 방향
1단계 - 빠른 첫 페이지 응답
첫 요청 시 해당 페이지 데이터만 API에서 가져와 즉시 필터링 후 반환.
총 개수는 null 또는 -1로 응답해 "아직 계산 중"임을 표시.
searchId를 발급하여 추후 개수 조회 가능하도록 함.
2단계 - 비동기 전체 개수 계산
백그라운드에서 최대 200개까지 모든 데이터를 순차적으로 가져와 필터링.
실제 필터링된 데이터 총 개수를 searchId와 함께 캐시에 저장.
3단계 - 클라이언트 후속 처리
클라이언트는 초기 응답을 표시 후, searchId로 총 개수를 재조회.
조회 완료 시 페이지네이션 UI를 정확한 개수로 갱신.
🔗 참고 링크
No response