AI Debugging/2025.12.16/7 min read

눈가주름 분석이 일반 피부 리포트로 섞이던 문제

눈가주름 분석 세션이 일반 피부 분석 리포트와 다른 데이터 형태를 가지면서 생긴 API 분기 문제를 정리했습니다.

Eye WrinkleAI ReportRoute

Code notes

코드에서 확인한 구현 포인트

배포 기준 2025.12.16

관련 파일

apps/web/app/api/reports/[sessionId]/route.tsapps/web/app/api/eye-wrinkle-analysis/[sessionId]/route.tsapps/mobile/app/eye-wrinkle/index.tsx

구현 메모

리포트 API에서 analysis session source를 확인해 eye_wrinkle 세션을 일반 피부 분석과 분리한다.

눈가주름 분석은 전용 상세 payload를 만들어 일반 피부 리포트의 OX/추천 구조와 섞이지 않게 했다.

모바일 눈가주름 흐름은 촬영, 업로드, 분석, 결과 표시를 별도 분석 타입으로 유지한다.

같은 리포트처럼 보여도 데이터가 다르다

초기에는 분석 세션이라는 큰 흐름 안에서 피부 분석과 눈가주름 분석을 비슷하게 다룰 수 있다고 생각했다. 하지만 실제로는 입력 사진, 결과 payload, 사용자에게 보여줄 문장이 달랐다.

눈가주름 분석은 일반 피부 고민처럼 OX 응답과 제품 추천을 바로 섞기보다, 눈 주변 상태와 관리 팁을 중심으로 보여줘야 했다. 같은 API로 억지로 맞추면 결과가 어색해졌다.

session source로 흐름을 나누다

리포트 API에서는 세션의 source를 확인해 눈가주름 세션인지 먼저 판단하도록 바꿨다. 눈가주름이면 일반 report payload 대신 eye wrinkle 전용 상세 payload를 만든다.

이렇게 분기하니 화면은 같은 리포트 상세처럼 열리더라도, 내부 데이터는 분석 종류에 맞는 형태를 유지할 수 있었다.

AI 문장도 같은 톤이면 안 된다

눈가주름은 민감한 표현이 많다. 사용자가 나이 듦이나 주름을 부정적으로 받아들이지 않도록, 조심스럽고 관리 가능한 행동 중심으로 문장을 구성해야 했다.

일반 트러블 리포트의 문장 구조를 그대로 쓰지 않고, 눈 주변 습관과 보습, 자외선 관리처럼 실제로 할 수 있는 관리 포인트를 중심에 두었다.

다음부터 확인할 것

새 분석 타입을 만들 때는 화면 재사용보다 데이터 계약을 먼저 본다. 같은 상세 화면으로 보여줄 수 있어도 API payload가 같다는 뜻은 아니다.

분석 source, payload shape, fallback 문장, 추천 연결 여부를 초기에 분리해두면 나중에 리포트가 뒤섞이는 일을 줄일 수 있다.

Keep reading

다른 글 이어서 보기

전체 글 보기