모바일 AI 분석이 멈춘 것처럼 보이던 문제
사진 촬영, 업로드, 분석 요청이 이어지는 모바일 AI 흐름에서 타임아웃과 재시도 기준을 나눈 기록입니다.
Code notes
코드에서 확인한 구현 포인트
배포 기준 2026.05.03
관련 파일
apps/mobile/app/trouble-check/index.tsxapps/mobile/app/eye-wrinkle/index.tsxapps/mobile/lib/server.ts구현 메모
모바일 분석 흐름은 세션 생성, 이미지 업로드, AI 분석 요청을 분리해 각 단계의 실패와 timeout을 다르게 처리한다.
카메라 preview, 재촬영, 이미지 선택 취소 같은 AI 이전 단계도 분석 실패처럼 보일 수 있어 상태를 나눠 관리한다.
사용자에게는 한 단계에서 멈춘 느낌보다 재시도 가능한 상태와 다음 행동을 보여주는 방향으로 정리했다.
사용자는 어느 단계에서 멈췄는지 모른다
AI 분석 흐름은 모바일에서 특히 길다. 카메라 권한을 받고, 사진을 찍고, 이미지를 업로드하고, 서버 분석을 기다리고, 리포트 화면으로 이동한다.
개발자는 로그를 보면 단계가 보이지만 사용자는 로딩 화면 하나만 본다. 그래서 어느 단계가 느린지 구분하지 않으면 사용자는 앱이 멈춘 것으로 느낀다.
업로드와 분석 타임아웃을 분리하다
모바일 코드에서는 세션 생성, 이미지 업로드, 분석 요청의 timeout을 각각 다르게 봤다. 업로드가 오래 걸리는 것과 AI 분석이 오래 걸리는 것은 원인도 대처도 다르기 때문이다.
또 실패 메시지도 한 문장으로 뭉개지 않고, 다시 촬영할지, 네트워크를 확인할지, 잠시 후 재시도할지를 사용자가 판단할 수 있는 방향으로 나눴다.
카메라와 미리보기는 재시도가 필요하다
AI 문제가 아니어도 분석이 시작되지 않을 수 있다. 카메라 preview가 준비되지 않았거나, 이미지 picker가 취소되었거나, 파일 크기와 네트워크 상태가 맞물릴 수 있다.
그래서 카메라 준비 상태와 재촬영 흐름을 분리했다. 분석 품질 이전에 사용자가 안정적으로 사진을 제출할 수 있어야 한다.
AI 기능의 UX 기준
AI 분석은 오래 걸릴 수 있다. 중요한 것은 시간이 걸린다는 사실을 숨기는 것이 아니라, 앱이 살아 있고 다음 행동이 있다는 느낌을 주는 것이다.
모바일 AI 디버깅은 모델 응답뿐 아니라 촬영, 업로드, 네트워크, 로딩 문구까지 함께 봐야 한다는 점을 다시 확인했다.
Keep reading
다른 글 이어서 보기
AI Debugging
2026.05.03
8 min read
AI JSON 응답이 흔들릴 때 sanitize 계층 만들기
AI 리포트가 화면에서 기대하는 형태와 다르게 돌아올 때, 응답 계약과 정규화 계층으로 제품을 지킨 기록입니다.
AI Debugging
2026.03.22
8 min read
주간 AI 리포트가 빈말이 되지 않게 fallback 만들기
주간 리포트에 충분한 데이터가 없거나 AI 생성이 실패해도 사용자에게 의미 있는 요약을 보여주기 위한 방어 로직입니다.
AI Debugging
2026.03.14
7 min read
AI 리포트 캐시가 오래된 모델 결과를 붙잡던 문제
중복 호출을 줄이기 위한 AI 캐시가 모델 변경과 충돌하지 않도록 provider, model, payload 저장 기준을 점검한 기록입니다.