Skip to content

fix(my): 마이페이지 목록 API 페이지 엔벨로프 응답 대응 (develop 백포트) - #158

Merged
Emithen merged 1 commit into
mainfrom
fix/mypage-pagination-response-main
Aug 27, 2026
Merged

fix(my): 마이페이지 목록 API 페이지 엔벨로프 응답 대응 (develop 백포트)#158
Emithen merged 1 commit into
mainfrom
fix/mypage-pagination-response-main

Conversation

@Emithen

@Emithen Emithen commented Aug 27, 2026

Copy link
Copy Markdown
Collaborator

요약

#157(develop)에서 검증된 수정을 main으로 체리픽한 핫픽스입니다.

(cherry picked from commit 1b70f0fd45875b7fea5435c736e0adc1217f62ba)

🔥 왜 지금인가 — 운영이 이미 영향권입니다

지난 조사 시점엔 페이지네이션이 서버 dev에만 있었지만, 오늘 서버 devmain으로 머지되고 운영 배포까지 완료됐습니다.

09fd93e  2026-08-27 00:21  Merge pull request #268 from ValanSee/dev
deploy-prod.yml  00:40  completed/success  (5580cce)

운영 백엔드가 새 빌드로 서비스 중인 것도 확인했습니다 — /votes 응답에 신규 isBot 필드가 존재합니다.

프론트 main에는 대응이 없으므로 valanse.kr의 마이페이지 3개 화면이 현재 크래시 상태로 추정됩니다.

TypeError: h.map is not a function

⚠️ 해당 API가 모두 인증 필요라 직접 재현은 못 했습니다. 로그인 후 valanse.kr/my/created 확인으로 확정 가능합니다.

영향 범위 (main 기준 전수 점검)

엔드포인트 프론트 main 상태
/votes/mine/created · /mine/voted ❌ 배열 가정 → 크래시
/comments/mine ❌ 배열 가정 → 크래시
/member/point-history ⚠️ 10건 절삭 (크래시 없음)
/votes/{id}/comments · .../replies ✅ 이미 엔벨로프 대응
/report (CMS) ✅ 양쪽 형태 지원

댓글·대댓글·CMS는 이미 안전해서 이 커밋 하나가 남은 구멍을 정확히 덮습니다.

왜 develop 전체 머지가 아닌 체리픽인가

maindevelop14 / 60 커밋으로 갈라져 있습니다. 전체 머지는 리디자인·이미지 업로드·온보딩까지 함께 나가는 대형 릴리스라, 크래시 대응과 섞으면 문제 발생 시 원인 격리가 어렵습니다. 핫픽스는 최소 범위로 갑니다.

충돌 해결

point.ts 1건이며 prettier 줄바꿈 차이입니다. 로직 충돌이 아니라 develop 쪽을 그대로 채택했습니다.

수정된 5개 파일이 origin/develop바이트 단위로 동일함을 확인했습니다.

검증

  • tsc --noEmit 통과
  • eslint 통과
  • 변경 파일 5개 develop과 완전 일치 확인
  • /my, /my/created, /my/voted, /my/comment, /my/point 5개 화면 200, 서버 에러 없음
  • develop 배포(develop.valanse.kr)에서 선반영 완료

미검증: 로그인 상태의 실제 응답 처리 (인증 가드가 API 호출 전 /entry로 리다이렉트). 배포 후 로그인 확인이 필요합니다.

롤백

API 레이어만 변경하고 컴포넌트는 무변경입니다. 문제 시 이 PR revert 한 번으로 복구됩니다. unwrapList가 배열·엔벨로프를 모두 수용하므로 서버가 어느 형태를 주든 동작하며, size=50은 서버 상한(PaginationValidator.MAX_PAGE_SIZE)이라 400이 발생하지 않습니다.

🤖 Generated with Claude Code

서버 dev 브랜치에서 마이 계열 목록 응답이 배열에서
{ <목록키>, page, size, hasNext } 엔벨로프로 바뀌면서,
배열을 가정한 컴포넌트가 `.map is not a function`으로 크래시했다.

- unwrapList 유틸 추가: 배열/엔벨로프를 모두 배열로 정규화
  (서버 main은 아직 배열이라 두 형태를 동시에 지원해야 함)
- /votes/mine/created, /votes/mine/voted, /comments/mine 정규화 적용
- 페이지네이션 UI가 없으므로 size=50(서버 상한) 요청해 기존 동작 유지
- /member/point-history: 기본 size=10 절삭 방지 (크래시는 없었음)
- 화면 명세의 TODO/추정 엔드포인트를 확정된 값으로 갱신

컴포넌트는 계속 배열을 받으므로 화면 코드 변경 없음.
서버 전환이 전 환경에 끝나면 unwrapList를 제거한다.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
(cherry picked from commit 1b70f0f)
@vercel

vercel Bot commented Aug 27, 2026

Copy link
Copy Markdown
Contributor

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
valan-se-web Ready Ready Preview Aug 27, 2026 2:35pm
valan-se-web-cms-19s6 Ready Ready Preview Aug 27, 2026 2:35pm
valanse-origin-repo Ready Ready Preview Aug 27, 2026 2:35pm

@coderabbitai

coderabbitai Bot commented Aug 27, 2026

Copy link
Copy Markdown
Contributor

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 08843042-3c02-46c6-bc1a-f1a208aa0641

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant