AI Studio + Claude code 조합으로 의료 AI 앱 만들어본 후기

조용한 메이커 · Claude Code MVP 공장 · · 좋아요 0 · 답글 0

연재 Claude Code MVP 공장 시즌 6 4/4편

배운 점

  • AI Studio로 초안 만들고 Claude로 리팩토링하는 방식이 저한테는 잘 맞았습니다.

  • 자동화가 잘 안 되면 반자동화로 빠지는 것도 방법인 것 같아요.

  • 전처리 여러 개 쌓는 것보다 하나만 쓰는 게 나을 때도 있었습니다.

시행착오

시도

결과

최종

Gemini + OpenCV 자동 영역 인식

인식률 실패

수동 4점 지정

여러 이미지 전처리

더 이상해짐

CLAHE만 사용

QFormer 토큰으로 Heatmap

공간 정보 섞임

ELIXR GradCAM

localhost:8000 직접 호출

모바일에서 실패

Vite Proxy (/api)

앞으로 해보고 싶은 것

  • 나이/성별 추정 같은 추가 기능 - 안되더라구요 ㅠㅡㅠ

  • PWA로 오프라인 지원

  • CT나 MRI로 확장

Vite Proxy로 모바일 접속 문제 해결

Cloudflare Tunnel로 외부 접속은 됐는데, 모바일에서 API 호출이 안 되는 문제가 있었습니다.

원인은 프론트엔드 코드에서 백엔드를 localhost:8000으로 호출하고 있었기 때문이에요. PC에서는 문제없지만, 스마트폰 입장에서 localhost는 스마트폰 자신을 가리키니까 당연히 안 되죠.

[스마트폰] → [Cloudflare Tunnel] → [localhost:3000 Frontend]
                                         ↓
                                   fetch('localhost:8000')  ← 여기서 실패!
                                   (스마트폰의 localhost를 찾음)

해결책은 Vite Proxy입니다. Vite 개발 서버가 중간에서 API 요청을 대신 전달해주는 거예요.

// vite.config.ts
export default defineConfig({
  server: {
    proxy: {
      '/api': {
        target: 'http://localhost:8000',
        changeOrigin: true,
        rewrite: (path) => path.replace(/^\/api/, ''),
      },
    },
  },
});

이제 프론트엔드에서 localhost:8000/analyze 대신 /api/analyze로 호출하면, Vite 서버가 받아서 백엔드로 전달합니다.

[스마트폰] → [Tunnel] → [Vite:3000] → /api/analyze
                              ↓
                        [Backend:8000] /analyze  ← 성공!

쉽게 말하면, 학생(스마트폰)이 직접 도서관(백엔드)에 갈 수 없을 때, 선생님(Vite)한테 "이 책 가져다주세요"라고 부탁하는 거예요. 선생님은 도서관에 갈 수 있으니까 대신 가져다주는 거죠.

태그: #CTO