프로젝트 소개 — Yaksok

알약이나 약 상자를 찍으면 무슨 약인지 알려 주고, AI "프로미"가 내 상황에 맞춰 먹는 법과 주의사항을 설명한다

핵심 소주제

1

비전 → 속성 → 낱알식별 파이프라인

식약처 낱알식별 DB는 이미지가 아니라 모양·색·각인·분할선 같은 텍스트 속성으로 검색된다. 그래서 Gemini Vision이 사진에서 속성을 뽑고, DB 후보를 가중치(각인 5.0 등)로 점수 매겨 돌려준다. 점수가 2.0 미만이면 재촬영을 요청한다.

2

포장 박스 제품명 인식

낱알이 아니라 약 상자를 찍으면 Vision이 제품명을 읽고, 속성 매칭 대신 이름 검색으로 바로 찾는다.

3

공식 데이터에 근거한 AI 복약 상담

상담 AI "프로미"는 사용자 건강정보(임신·수유·복용약·알레르기), 스캔 결과, e약은요의 효능·용법·주의사항, 현재 시각을 맥락으로 받아 답한다. 진단·처방은 하지 않는다.

4

개인정보를 서버에 두지 않는 구조

건강정보, 복약 목록, 인식 기록은 모두 브라우저 localStorage에 둔다. 촬영 이미지도 서버에 저장하지 않는다.

5

병렬 개발을 위한 헥사고날 구조

백엔드를 인식(pill)·상담(guidance) 도메인으로 나누고, 레이어 의존 규칙을 import-linter 계약 5개로 CI에서 강제했다. 백엔드는 4트랙(기반·데이터 매칭·Vision·상담)으로 나눠 동시에 개발하고 통합했다.

주요 기능

기능설명상태
알약 사진 인식POST /api/pill/identify — 속성 추출 → 후보 점수순 반환, 낮으면 needs_retry구현
포장 박스 인식제품명이 읽히면 이름 검색으로 분기구현
카메라 촬영셔터 버튼, 1:1 촬영 후 바로 상담 화면으로구현
알약사전27,330건 검색·상세 조회구현
프로미 복약 상담대화방 생성, 메시지 전송·조회구현
내 정보건강정보 입력, 기기 내 저장구현
내 기록인식한 약 자동 저장, 최대 50건구현
오늘의 약속복용 시점·횟수·용량 수정·추가·삭제구현
증상별 약 추천일반의약품 한정 추천 (화면만, 더미 데이터)설계
DUR 병용금기함께 먹으면 안 되는 약 경고 (API 활용신청 대기)설계
회원 · 로그인빈 스캐폴드설계

기술 스택

FRONTENDReact 19 · Vite 5 · TypeScript · React Router 7 · CSS Modules
BACKENDPython 3.12 · FastAPI · SQLAlchemy 2 · Alembic · uv
AIGoogle Gemini 2.5 Flash (Vision · 상담)
DATA식약처 의약품 낱알식별 · e약은요 (data.go.kr)
INFRANeon PostgreSQL · Vercel · Cloudflare Tunnel · GitHub Actions

아키텍처

계층기술배포
프론트엔드React + Vite (13개 화면)Vercel · yaksok.cloverky.cloud
APIFastAPI, 헥사고날 (pill · guidance)Cloudflare Tunnel · yaksok-api.cloverky.cloud
DBPostgreSQL (pills · conversations · messages)Neon
AIGemini Vision · LLM (키 없으면 fake 어댑터)Google API
CIruff · mypy · import-linter · pytest / tsc · lint · buildGitHub Actions