추천 API가 sessionId를 못 찾던 문제
분석 세션 추천 API에서 동적 라우트 파라미터가 비어 보이던 상황을 URL 기반 보조 파싱으로 해결한 기록입니다.
Code notes
코드에서 확인한 구현 포인트
배포 기준 2025.12.15
관련 파일
apps/web/app/api/analysis-sessions/[sessionId]/recommendations/route.tsapps/web/lib/recommendations.tstsconfig.json구현 메모
추천 API가 sessionId를 받지 못하는 상황을 params와 request URL 기준으로 나눠 확인했다.
URL pathname에서 analysis-sessions 다음 조각을 읽어 sessionId를 복구하는 보조 함수를 추가했다.
상품 조회 컬럼과 추천 payload 타입을 맞춰 데이터 조합 단계의 실패 가능성을 줄였다.
증상은 단순했다
분석 세션 기반 추천 API는 sessionId를 기준으로 사진, OX 응답, 상품 데이터를 읽어 추천 payload를 만든다. 그런데 특정 상황에서 sessionId가 비어 있다고 판단되어 추천을 만들지 못했다.
데이터가 없는 문제처럼 보일 수도 있었지만, 실제로는 API가 어떤 세션을 조회해야 하는지 제대로 받지 못하는 쪽에 가까웠다.
좁혀간 방식
먼저 세션 테이블과 사진 테이블을 의심하기보다, 라우트 핸들러가 받은 params 값을 확인했다. 동적 라우트에서는 params가 기대대로 들어오는지가 가장 먼저다.
보조 장치로 요청 URL의 pathname에서 analysis-sessions 다음 조각을 읽어 sessionId를 추출하는 함수를 넣었다. params가 비어도 URL 구조에서 한 번 더 복구할 수 있게 한 것이다.
동시에 products 조회 컬럼도 실제 타입과 맞게 정리했다. 추천 payload는 여러 테이블을 합치기 때문에, 한 컬럼 이름만 어긋나도 전체 흐름이 멈출 수 있다.
API 디버깅의 기준
추천이 안 나올 때 바로 추천 로직을 의심하면 멀리 돌아갈 수 있다. 먼저 입력값이 들어왔는지, 그 입력값으로 세션을 찾는지, 그다음 사진과 응답 데이터를 읽는지를 순서대로 확인해야 한다.
이 문제 이후로는 API를 볼 때 입력 파라미터, 조회 대상, 조합 로직을 분리해서 생각하게 됐다.
Keep reading
다른 글 이어서 보기
Debugging
2026.05.05
6 min read
GitHub 푸시 후 Vercel 배포가 Blocked가 되었을 때
커밋은 올라갔지만 Vercel 자동 배포가 막혔던 상황에서, GitHub 작성자와 프로젝트 권한을 확인해 해결한 기록입니다.
Debugging
2026.05.04
7 min read
서브도메인은 연결됐는데 /admin이 404였던 이유
blog, ad, nacho 서브도메인을 나누는 과정에서 Vercel 404와 앱 내부 라우팅 문제를 구분해 해결한 기록입니다.
Debugging
2026.05.03
8 min read
도메인은 연결됐는데 접속이 거부될 때
tangly.kr과 www 도메인을 Vercel에 붙이며 DNS, 네임서버, SSL 발급 대기 상태를 구분해 해결한 기록입니다.