AI/2026.03.07/9 min read

AI 피부 리포트가 만들어지는 흐름

사진, OX 응답, 추천 데이터, 사용자 프로필을 모아 Tangly의 AI 피부 코치 리포트를 생성하는 과정을 정리했습니다.

AI ReportSkin AnalysisOpenAI

Code notes

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

배포 기준 2026.03.07

관련 파일

apps/web/lib/ai-report.tsapps/web/app/api/reports/[sessionId]/route.tsapps/web/lib/recommendations.tsapps/web/lib/ox-storage.tsapps/web/lib/profile-details.ts

구현 메모

ensureAiReport는 먼저 ai_reports 캐시를 확인하고, 필요한 경우에만 AI 리포트 생성을 요청한다.

프롬프트 입력은 추천 payload, 사진 reference, OX 응답, 셀프 체크 고민, 프로필, 장기 메모리로 구조화된다.

AI 응답은 JSON 객체로 제한하고 sanitizeAiPayload를 거쳐 화면에서 기대하는 필드로 정규화한다.

AI는 결과를 예쁘게 말하는 장치가 아니다

Tangly에서 AI는 단순히 분석 결과를 그럴듯한 문장으로 바꾸는 도구가 아니다. 사용자의 사진 기반 분석, OX 응답, 셀프 체크 고민, 프로필 정보, 추천 후보를 함께 읽고 다음 행동을 제안하는 피부 코치 역할을 맡는다.

그래서 AI 리포트 생성은 한 번의 프롬프트 호출이라기보다 여러 제품 신호를 정리해 하나의 안전한 응답으로 만드는 과정에 가깝다.

입력 데이터를 먼저 구조화하기

AI에게 모든 것을 자유롭게 맡기면 결과가 흔들리기 쉽다. 그래서 먼저 추천 payload, 사진 reference, OX 응답, 셀프 체크 고민, 프로필 상세, 장기 메모리를 구조화해서 전달한다.

사진도 단순 URL 목록이 아니라 shot type, focus area, captured time 같은 맥락과 함께 reference로 묶는다. 이렇게 해야 AI가 어떤 이미지를 어떤 맥락으로 봐야 하는지 이해하기 쉽다.

응답은 JSON으로 제한한다

리포트 화면은 oneLiner, resultBadge, keyFindings, focus, actions, warnings 같은 정해진 구조를 기대한다. 그래서 AI 응답도 자유 텍스트가 아니라 JSON 객체로 받는다.

이 방식은 화면과 서버가 같은 계약을 바라보게 만든다. AI가 문장을 생성하더라도 제품은 필요한 필드만 안정적으로 꺼내 쓸 수 있다.

의료적 단정은 피한다

피부 분석은 민감한 영역이다. 그래서 시스템 프롬프트에서는 진단, 겁주기, 과장, 수치 단정을 피하도록 제한한다.

사용자에게 필요한 것은 공포가 아니라 다음에 할 수 있는 작은 행동이다. Tangly의 AI 문장은 따뜻하고 현실적인 피부 관리 코치 톤을 유지해야 한다.

Keep reading

다른 글 이어서 보기

전체 글 보기