분석 세션을 제품의 중심 흐름으로 만들기
사진 업로드부터 분석 결과, 추천, 리포트까지 이어지는 흐름을 하나의 세션 단위로 묶어간 기록입니다.
Code notes
코드에서 확인한 구현 포인트
배포 기준 2025.12.10
관련 파일
apps/web/app/api/analysis-sessions/route.tsapps/web/app/api/analysis-sessions/[sessionId]/route.tsapps/web/app/api/analysis-sessions/[sessionId]/recommendations/route.ts구현 메모
analysis-sessions API는 source, status, userId를 받아 분석 흐름의 시작점을 만든다.
sessionId가 없으면 서버에서 새 id를 만들고, 이후 사진, OX 응답, 추천, 리포트가 같은 세션에 연결된다.
세션 상태를 capturing 같은 중간 단계로 시작해 분석 과정이 한 번의 결과가 아니라 흐름으로 남게 했다.
분석은 한 번의 API 호출이 아니다
피부 분석 기능을 만들다 보면 처음에는 사진을 보내고 결과를 받는 일처럼 보인다. 하지만 실제 제품 경험은 그보다 길다. 사용자는 사진을 올리고, 분석을 기다리고, 결과를 읽고, 추천과 루틴으로 이어진다.
그래서 Tangly에서는 분석을 하나의 세션 흐름으로 바라봤다. 세션은 사용자의 한 번의 분석 경험을 묶어주는 기준점이고, 이후 리포트나 추천이 같은 맥락 안에서 이어질 수 있게 해준다.
중간 상태를 남겨야 운영할 수 있다
분석 과정은 언제나 성공만 하는 것이 아니다. 업로드가 늦어질 수도 있고, 결과 생성이 지연될 수도 있고, 특정 케이스에서 다시 확인이 필요할 수도 있다.
그래서 중요한 것은 최종 결과만 저장하는 것이 아니라 중간 상태를 이해할 수 있게 만드는 것이다. 운영자가 흐름을 확인할 수 있어야 사용자 문의에도 대응할 수 있고, 제품 품질도 개선할 수 있다.
공개 기록에서는 경계를 지키기
분석 흐름은 사용자 사진과 가까운 영역이다. 그래서 블로그에서는 저장 경로나 내부 식별 방식, 접근 권한 같은 민감한 내용은 남기지 않는다.
대신 어떤 제품 흐름을 만들었고, 왜 세션이라는 단위를 선택했는지를 남겨두는 편이 안전하고 오래 쓸 수 있는 기록이다.