1분반-둥지
프로젝트 개요
기술개발 과제
국문 : 시니어만성질환자 복약관리 에이전트 서비스· AI
영문 : AI Agent Service for Medication Management for Senior · Chronic Patients
과제 팀명
둥지
지도교수
이경재 교수님
개발기간
2026년 3월 ~ 2026년 6월 (총 4개월)
구성원 소개
서울시립대학교 컴퓨터과학부 20219200** 박*현(팀장)
서울시립대학교 컴퓨터과학부 20209200** 정*홍
서울시립대학교 경제학부 20222800** 조*현
서울시립대학교 컴퓨터과학부 20229200** 최*영
서론
개발 과제의 개요
개발 과제 요약
본 과제는 시니어 및 만성질환자의 복약 순응도를 높이고 보호자의 관리 부담을 줄여주는 '시니어·만성질환 환자 복약관리 AI 에이전트 서비스(삐약이)'를 개발하는 것이다. 본 시스템은 앱(App)을 별도로 개발하지 않고, 단일 앱 내에서 사용자의 계정 역할(시니어 또는 보호자)에 따라 맞춤형 UI/UX를 분기하여 제공하는 것을 특징으로 한다.
역할별로 제공되는 핵심 시스템 요약은 다음과 같다.
- 시니어 맞춤형 환경: 클라우드 네이티브 비전 AI 기반의 알약 객체 인식 및 수량 검증 모델(GPT-5.4-mini)을 도입하여 복약 데이터의 무결성을 확인한다. 또한, 대화형 AI 에이전트(GPT-4o-mini)와 리워드 시스템을 결합하여 시니어의 능동적인 복약 습관을 유도한다.
- 보호자 관리 환경: 텍스트 처리 전용 LLM(GPT-5.4-nano)을 활용한 처방전 자동 파싱(OCR) 파이프라인을 구축하여 복잡한 수동 입력 부담을 제거한다. 이 데이터는 캘린더 기반의 모니터링 대시보드와 연동되어 보호자가 시니어의 투약 상태를 한눈에 파악할 수 있다.
결과적으로 본 과제는 최신 인공지능 및 클라우드 기술을 융합하여 시니어와 보호자를 유기적으로 잇는 '통합 복약 관리 플랫폼'을 구축하는 것을 최종 목표로 한다.
개발 과제의 배경
가. 개발 과제의 배경
고령화 및 만성질환자의 급증
현대 사회의 초고령화 진입으로 매일 규칙적인 약물 복용이 필수적인 만성질환자가 급증하고 있으며, 이들의 낮은 복약 순응도는 질환 악화와 국가적 의료비 증가를 초래하고 있다.
기존 복약 관리 서비스의 한계
마이테라피, 메디세이프 등 기존 애플리케이션은 사용자가 직접 약품명과 시간을 텍스트로 입력해야 하므로 시니어 사용자의 접근성이 현저히 떨어진다. 또한, 보호자 역시 일일이 투약 정보를 타이핑하고 검수해야 하는 관리 부담을 안고 있다.
검증 불가능한 인증 방식
알람 발생 시 단순 버튼 클릭으로 복약을 인증하는 구조는 사용자의 수동 입력에 의존하므로, 실제 복약 여부를 시스템적으로 검증할 수 없다는 치명적인 기술적 한계가 존재한다.
나. 개발 과제의 효과
보건 및 안전 파급효과
시니어의 복약 순응도를 정량적으로 높여 질환 악화 및 불필요한 재입원을 방지한다. 특히 미복용 시 임계 시간(30분/60분)에 맞추어 보호자에게 긴급 지연 알림(FCM)을 발송하는 다중 계층 안전망을 통해 독거노인의 고독사와 같은 위급 상황을 선제적으로 예방한다. 이는 결과적으로 직장인 자녀 세대의 정서적 피로 및 노동 생산성 손실을 보전하는 효과를 창출한다.
경제 및 산업 파급효과
비전 AI를 통해 실제 복용 증거가 확보된 무결점 메디컬 데이터를 수집함으로써, 향후 제약 회사의 임상 추적이나 보험사의 맞춤형 헬스케어 상품 설계 등 고부가가치 B2B 데이터 비즈니스(Data-as-a-Service)로 확장할 수 있는 강력한 시장 경쟁력을 지닌다. 장기적으로는 국가 건강보험 재정 누수를 막고 의료비용을 절감하는 기대효과를 갖는다.
기술 및 환경적 지속가능성
무거운 딥러닝 연산 알고리즘을 로컬 단말기에서 처리하지 않고 백엔드를 거쳐 외부 클라우드 계층으로 위임하는 아키텍처를 도입했다. 이를 통해 시니어들이 주로 사용하는 저사양 모바일 기기의 심각한 발열과 배터리 자원 낭비를 막고, 하드웨어 수명을 보호하는 인프라의 지속가능성을 확보했다.
개발 과제의 목표 및 내용
가. 개발 과제의 목표
본 과제의 최종 목표는 최신 인공지능 및 클라우드 기술을 활용하여 기존 수동 복약 관리의 한계를 극복하고, 시니어 사용자와 보호자를 유기적으로 연결하는 '통합 복약 관리 AI 에이전트 플랫폼'을 개발하는 것이다.
디지털 기기 조작에 어려움을 겪는 시니어에게는 기술적 장벽을 낮춘 직관적인 복약 인증 환경을 제공하고, 보호자에게는 수동 데이터 입력의 번거로움을 없애고 원격 모니터링의 편의성을 극대화하여 궁극적으로 만성질환자의 정확하고 자발적인 복약 순응도를 달성하고자 한다.
나. 개발 과제의 내용
본 과제는 목표 달성을 위해 다음과 같은 5가지 핵심 시스템 및 기능을 구현한다.
1.단일 앱 기반 역할 분기 및 1:N 가족 연동 아키텍처
별도의 애플리케이션을 각각 개발하지 않고, 단일 앱 내에서 로그인 시 선택한 계정 역할(시니어/보호자)에 따라 사용자 인터페이스(UI)와 접근 권한을 동적으로 분기한다. 또한, 보호자가 발급한 6자리 초대 코드를 시니어가 입력하는 방식을 통해 다수의 시니어와 보호자를 논리적으로 연결하는 1:N 가족 연동 시스템을 구축한다.
2.비전 AI 기반 알약 객체 검증 및 자율적 에러 복구
시니어 사용자가 복약 전 약을 카메라로 촬영하면, 해당 이미지는 로컬 단말기가 아닌 백엔드 클라우드로 전송되어 Vision AI(GPT-5.4-mini)가 알약의 개수를 인식한다. 추출된 수량과 데이터베이스의 예정 처방량을 대조하는 검증 로직($Count_{AI} == Scheduled_{Dosage}$)을 수행하며, 수량 불일치 시 클라이언트에 즉각적인 재촬영 가이드라인을 제공하여 자율적인 에러 복구를 유도한다.
3.멀티모달 LLM과 OCR을 결합한 하이브리드 처방전 파싱
보호자의 일정 등록 편의성을 위해 처방전 이미지를 자동으로 데이터화하는 파이프라인을 구축한다. Naver Clova OCR을 통해 추출된 비정형 원시 텍스트를 경량화 언어 모델(GPT-5.4-nano)에 주입하여 약품명, 투여량, 총투약일수 등을 JSON 포맷으로 자동 구조화한다. 의료 데이터의 무결성을 위해, 데이터가 시스템에 즉시 커밋(Commit)되지 않고 보호자가 원본과 대조하여 '최종 승인'하는 사용자 개입형(Human-in-the-loop) 검증 단계를 포함한다.
4.다중 계층 복약 안전망 및 모니터링 대시보드
미복용 리스크를 방지하기 위해 백엔드의 분 단위 스케줄러(Spring Scheduler)가 작동한다. 시니어에게 지정된 시간에 1차 정규 알림을 발송하고, 복약 로그가 생성되지 않은 채 임계 시간(기본 60분, 집중 모드 30분)이 초과되면 보호자의 단말기로 지연 알림(FCM)을 자동 발송한다. 보호자 화면에서는 수집된 로그를 바탕으로 일간, 주간, 월간 단위의 통계 대시보드를 렌더링하여 효율적인 원격 관리를 지원한다.
5. 대화형 AI 및 실버 커머스 연계 리워드 시스템
시니어의 인지적 특성을 반영하여 STT(음성 인식) 및 TTS(음성 합성) 기반의 대화형 AI '삐약이' 에이전트를 제공한다. 또한, 사용자의 자발적인 복약을 유도하기 위해 연속 복약(Streak) 달성 시 애플리케이션 내 재화(황금알)를 보상으로 지급하고, 이를 기프티콘이나 맞춤형 간식으로 교환할 수 있는 인앱 상점('삐약이 상점') 기능을 구현하여 실버 커머스 비즈니스 모델과 연계한다.
관련 기술의 현황
관련 기술의 현황 및 분석(State of art)
가. 기술 및 연구 동향
최근 디지털 헬스케어 및 복약 관리 분야의 기술은 스마트 약통과 같은 물리적 하드웨어 중심의 방식에서 카메라 영상을 분석하는 비전 AI(Vision AI) 중심의 소프트웨어 기반 방식으로 빠르게 전환되고 있다. 또한, 비정형 의료 문서인 처방전 등에서 핵심 데이터를 추출하기 위해 멀티모달 대규모 언어 모델(Multimodal LLM)을 활용하는 기술이 적극 도입되고 있으며, 단순한 시간 알림(Push Alarm)을 넘어 사용자와 자연스럽게 상호작용하는 양방향 대화형 AI 기술이 상용화되는 추세다.
나. 관련 선행 특허 분석 및 차별화 전략
본 과제는 기존 복약 관리 및 시니어 케어 관련 특허들의 특징을 분석하고, 해당 특허들의 권리 범위를 우회함과 동시에 사용자 경험을 극대화하는 차별화 전략을 수립했다.
- AiCure사 (US 8605165 B2): 해당 특허는 영상(Video) 데이터 내에서 사용자의 얼굴과 알약 객체를 식별하여 복약 여부를 확인하는 기술에 초점이 맞춰져 있다. 본 과제는 얼굴 인식 기반의 영상 처리 대신, 멀티모달 LLM과 광학 문자 인식(OCR)을 이용한 처방전 자동 파싱 체계를 갖추었다. 또한, 정지 이미지 상에서의 비전 API 기반 알약 수량 정합성 검증, 그리고 이를 보호자 대시보드의 통계 리포트 생성으로 이어지게 하는 통합 프로세스를 구축하여 해당 특허의 권리 범위를 우회했다.
- (주)시야인사이트 (KR 10-2922272): 해당 특허는 사용자의 동작 분석을 통해 이상 징후를 탐지하는 기능에 주력하고 있다. 본 과제는 수동적인 동작 모니터링에 그치지 않고, 친근한 대화형 AI 에이전트와의 음성 상호작용 및 캘린더 기반 보상 시스템을 결합했다는 점에서 뚜렷한 차별성을 갖는다. 이는 단순한 위급 상황 탐지를 넘어, 시니어 사용자의 자발적인 복약 동기를 부여하고 긍정적인 행동 변화를 이끌어내는 데 목적이 있다.
시장상황에 대한 분석
가. 경쟁제품 조사 비교
현재 시장을 선점하고 있는 대표적인 복약 관리 애플리케이션(마이테라피, 메디세이프 등)은 대부분 텍스트 위주의 수동 입력 방식에 의존하고 있어, 디지털 기기 조작에 익숙하지 않은 시니어 사용자의 진입 장벽이 매우 높다. 또한, 단순 알람 발생 후 버튼을 클릭하는 방식은 사용자의 실제 복약 여부를 시스템적으로 검증할 수 없다는 치명적인 한계를 지닌다. 반면, 본 과제인 '삐약이'는 비전 AI를 통해 실제 투약 여부를 객관적으로 검증하며, 멀티모달 LLM과 대화형 AI를 활용하여 수동 입력의 번거로움을 완전히 제거함으로써 경쟁 제품 대비 압도적인 편의성과 데이터 신뢰성을 확보했다.
나. 마케팅 전략 제시
'삐약이'가 지닌 차별화된 데이터 신뢰성과 시니어 친화적 기능을 바탕으로, 시장 진입 및 자생적 수익 창출을 위한 세 가지 다각화된 마케팅 전략을 제시한다.
1. B2B 데이터 비즈니스(DaaS) 전략
비전 AI로 확보된 '실제 복용 증거가 포함된 무결점 메디컬 데이터'를 비식별화하여, 제약 회사의 신약 임상 추적 데이터나 보험사의 맞춤형 헬스케어 상품 개발을 위한 서비스형 데이터(Data-as-a-Service)로 제공하는 수익 모델을 구축한다.
2. 실버 커머스 연계(In-App Purchase) 전략
연속 복약(Streak)을 통해 사용자에게 지급되는 앱 내 재화 '황금알'을 활용하여 '삐약이 상점'을 운영한다. 보호자가 부모님을 위해 맞춤형 건강기능식품 등을 결제하거나, 시니어가 리워드를 실물 기프티콘으로 교환할 수 있는 인앱 커머스 생태계를 조성하여 활성 사용자를 유지하고 수수료 수익을 창출한다.
3. B2G 공공·복지 인프라 연계 전략
다중 계층 안전망(미복용 지연 FCM 알림)을 통한 독거노인 고독사 예방 및 만성질환 관리 효과를 강조하여, 지자체 보건소나 지역 노인 복지 센터의 스마트 돌봄 사업과 연계하는 기업-정부 간(B2G) 파트너십 마케팅을 추진한다.
개발과제의 기대효과
기술적 기대효과
본 과제인 '삐약이' 시스템의 도입은 다음과 같은 세 가지 측면에서 혁신적인 기술적 기대효과를 창출한다.
클라우드 네이티브 아키텍처를 통한 단말기 부하 최적화
무거운 비전 AI(GPT-5.4-mini) 및 멀티모달 LLM 연산을 모바일 기기 내부에서 처리하지 않고 백엔드 클라우드 계층으로 100% 위임하는 구조를 채택했다. 이를 통해 시니어 계층이 주로 사용하는 저사양 스마트폰에서도 기기 발열이나 심각한 배터리 소모 없이 원활하고 가벼운 서비스 구동이 가능해지며, 모바일 환경에서의 고성능 AI 서비스 지속가능성을 획기적으로 향상시켰다.
사용자 개입형 설계를 통한 AI 환각 방어 및 데이터 무결성 확보
AI 모델이 본질적으로 가질 수 있는 객체 인식 오류 및 텍스트 환각(Hallucination) 현상을 시스템 구조적으로 완벽하게 보완했다. 처방전 파싱 시 보호자가 직접 원본과 대조하여 승인하는 '사용자 개입형(Human-in-the-loop)' 인터페이스와, 알약 수량 불일치 시 시니어의 자율적인 재촬영을 유도하는 '에러 복구 루프'를 구현했다. 이는 AI의 기술적 한계를 UX 및 논리 흐름으로 극복하여, 100% 신뢰 가능한 무결점 의료 데이터를 구축하는 기술적 성과를 달성했다.
강력한 데이터 보안 및 비동기 처리 인프라 구축
처방전과 같은 민감한 대용량 의료 이미지 업로드 시, 클라이언트가 서버를 거치지 않고 클라우드 스토리지에 다이렉트로 업로드하는 5분 만료의 Presigned URL 방식을 도입하여 서버의 네트워크 병목 현상을 방지했다. 더불어, 데이터가 연산 프로세스에 진입하는 즉시 PiiMaskingService가 가동되어 주민등록번호 등 민감 정보를 실시간으로 비식별화함으로써, 의료 서비스에 필수적인 최고 수준의 데이터 보안 기술을 구현했다.
경제적, 사회적 기대 및 파급효과
본 과제의 도입은 우리 사회가 직면한 고령화 문제를 해결함과 동시에, 새로운 디지털 헬스케어 비즈니스 가치를 창출하는 두 가지 축에서 막대한 파급효과를 기대할 수 있다.
가. 경제 및 산업적 파급효과
고부가가치 B2B 데이터 비즈니스(DaaS) 창출
비전 AI를 통해 실제 복용 증거가 확보된 무결점 메디컬 데이터를 수집할 수 있다. 이렇게 확보된 신뢰도 높은 데이터는 철저한 비식별화(PiiMasking) 과정을 거쳐 제약 회사의 신약 임상 추적이나 보험사의 맞춤형 헬스케어 상품 설계를 위한 서비스형 데이터(Data-as-a-Service)로 활용되는 등 강력한 B2B 비즈니스 확장성을 지닌다.
국가 의료비 절감 효과
고령화 사회에서 만성질환자의 낮은 복약 순응도로 인해 발생하는 질환 악화 및 불필요한 재입원을 예방한다. 이는 장기적으로 국가 건강보험 재정의 누수를 방지하고 막대한 사회적 의료 비용을 절감하는 거시적인 경제 효과를 창출한다.
실버 커머스 기반의 자생적 수익 모델 구축
연속 복약을 달성한 시니어 사용자에게 앱 내 재화인 '황금알'을 지급하고, 이를 기프티콘이나 맞춤형 건강기능식품으로 교환할 수 있는 '삐약이 상점' 생태계를 기획했다. 가족 연동 시스템을 결합해 보호자의 대리 결제 등을 유도함으로써, 단순한 관리 도구를 넘어 상거래(Commerce) 결제 수수료 등을 창출하는 자생적인 경제 순환 구조를 확립했다.
나. 사회적 기대 및 파급효과
독거노인 고독사 및 의료 응급 상황 선제적 예방
미복용 시 임계 시간(기본 60분, 집중 모드 30분)에 맞추어 보호자에게 즉각적인 지연 알림(FCM)을 발송하는 다중 계층 안전망을 가동한다. 이를 통해 사회적 취약 계층인 독거노인의 고독사 및 약물 오남용으로 인한 위급 상황을 사전에 예방하는 사회적 안전망 역할을 충실히 수행한다.
돌봄 제공자(자녀 세대)의 정서적 피로도 완화
기존의 수동적인 확인 방식에서 벗어나 캘린더 기반의 모니터링 대시보드와 자동 알림을 통해 스마트한 원격 돌봄을 지원한다. 이를 통해 부모 부양의 책임을 지고 있는 직장인 자녀 세대의 일상적인 모니터링 피로도를 획기적으로 낮추고, 잦은 부양 활동으로 인해 발생하는 노동 생산성 손실을 보존하는 긍정적인 사회적 파급효과를 가진다.
기술개발 일정 및 추진체계
개발 일정
| 단계별 세부개발 내용 | 담당자 | 개발기간 (월단위) | 비고 | |||
|---|---|---|---|---|---|---|
| 3 | 4 | 5 | 6 | |||
| 주제 선정 및 요구사항 분석 | 전원 | ● | ||||
| 기능 명세서 작성 | 조우현 | ● | ||||
| 화면 Flow 확장 | 최진영 | ● | ||||
| DB 설계 | 박도현, 정구홍 |
● | ||||
| 개발환경 세팅 | 전원 | ● | ● | |||
| UI/UX 설계 | 최진영 | ● | ● | |||
| 비전 모델 생성 | 박도현 | ● | ● | |||
| OCR 모델 생성 | 정구홍 | ● | ● | |||
| API 설계 | 박도현, 정구홍, 최진영 |
● | ||||
| 서버 인프라 구축 | 정구홍 | ● | ||||
| 백엔드 개발 | 박도현, 정구홍 |
● | ● | |||
| 프론트엔드 개발 | 최진영 | ● | ● | |||
| 프로토타입 완성 | 전원 | ● | ||||
| 통합 테스트(실제 사용자 테스트) | 전원 | ● | ||||
| QA 및 최종 안정화 | 전원 | ● | ● | |||
| 배포 | 전원 | ● | ||||
| 유지보수 | 전원 | ● | ||||
구성원 및 추진체계
구성원
컴퓨터과학부 20219200** 박*현 (팀장)
컴퓨터과학부 20209200** 정*홍 (팀원)
컴퓨터과학부 20229200** 최*영 (팀원)
경제학부 20222800** 조*현 (팀원)
추친체계
박*현: 프로젝트 총괄 및 백엔드 아키텍처 설계. 클라우드 비전 위임 처리 및 다중 계층 안전망(FCM) 등 핵심 서버 로직을 구현하고 스크럼 및 일정 관리를 주도함.
정*홍: 데이터베이스(ERD) 최적화 및 AI 파이프라인 구축. 복약 인증 로그 처리 및 처방전 파싱을 위한 백엔드 API 시스템을 개발하여 서버 안정성을 확보함.
최*영: React Native 기반 크로스 플랫폼 클라이언트 개발. Figma로 안전 경고 UI 및 가족 연동 화면을 구현하고, 기획된 디자인을 실제 동작하는 앱 컴포넌트로 완벽하게 이식함.
조*현: Figma를 활용한 시니어 친화적 사용자 경험(UX) 기획. 복약 추적 및 대시보드 화면을 설계하고, 프로젝트 제안서부터 최종보고서까지 산출물 문서화를 총괄함.
설계
제품의 요구사항
가. 제품 요구사항
본 시스템은 객체지향 설계 원칙에 따라 애플리케이션 내외부에서 상호작용하는 모든 능동적 주체(Actor)를 식별하고 고유 식별자(ID)를 부여하였다. 액터는 서비스를 직접 이용하는 시니어, 보호자와 전체 시스템의 비즈니스 로직 및 외부 AI/인프라 연동을 총괄하는 관리자로 명확히 구분된다.
1. 액터(Actor) 정의 및 상세 명세
| 액터 ID | 액터명 | 상세 역할 및 시스템 내 상호작용 정의 (삐약이 핵심 기술 반영) |
|---|---|---|
| AC001 | 시니어 (Senior) |
[특성] [상세 역할]
|
| AC002 | 보호자 |
[특성] [상세 역할]
|
| AC003 | 삐약이 통합 서버 |
[상세 역할]
|
| AC004 | 외부 인증 서비스 |
카카오 OAuth 서버. 삐약이 시스템을 대신하여 사용자의 소셜 로그인 및 1차 자격 증명을 전담한다. |
| AC005 | 외부 AI 서비스 |
멀티모달 LLM (GPT-4o-mini, GPT-5.4-nano, GPT-5.4-mini, whisper-1 (ko)). 삐약이 서버(AC003)의 요청을 받아 비정형 텍스트의 JSON 정형화 및 알약 객체 인식(수량 추출), STT/TTS 변환 등 무거운 AI 추론을 전담하여 반환한다. |
2. 기능 요구사항 및 예외 처리 명세
| 기능 ID | 관련 액터 | 주요 기능 (도메인) | 세부 기능 명세 및 예외 처리 로직 (Exception Handling) | D/W |
|---|---|---|---|---|
| FR-01 | AC001, AC002, AC003, AC004 | 역할별 동적 UI 분기 (Auth / User) |
[세부] 외부 인증 서비스(AC004)의 Kakao OAuth 및 JWKS 캐싱 기반 자격 검증을 거쳐 자체 JWT를 발급한다. 가입 시 선택한 역할에 따라 Zustand 전역 상태를 업데이트하여 시니어/보호자 네비게이션 스택을 독립적으로 렌더링한다. |
D |
| FR-02 | AC001, AC002, AC003 | 시니어-보호자 연동 및 인앱 통합 관리 |
[세부] 보호자(AC002)가 앱 내에서 신규 연동 코드를 즉시 발급해 시니어를 자유롭게 추가하고, 시니어의 프로필(닉네임, 성별 등)을 능동적으로 수정한다. 시니어(AC001)가 앱 내에서 보호자(AC002)가 생성한 고유 코드를 입력하면, 서버가 일대일/일대다 계정 매칭을 수행한다. |
D |
| FR-03 | AC001, AC002, AC003, AC005 | 다각화된 약품 등록 및 백엔드 전담 마스킹 |
[보안] 시니어는 '처방전으로 등록'과 '약 직접등록(검색)' 방식을 자유롭게 선택할 수 있다. 처방전 촬영 시, 프론트엔드는 클라우드(NCP Object Storage) Presigned URL로 이미지를 직접 업로드(PUT)하며, 원본 이미지의 민감정보 마스킹 처리는 전적으로 백엔드 서버(PiiMasking Service)가 전담한다. |
D |
| FR-04 | AC003, AC005 | OCR 전문 추출 및 LLM 정형화 |
[세부] OCR 파싱을 통해 도출된 전문 텍스트(fullText) 데이터를 직접 활용하여 GPT-5.4-nano 모델에 주입하여 약품명, 용법 등을 JSON 구조로 정확히 추출받는다. |
D |
| FR-05 | AC001, AC002, AC003 | MCP 기반 DUR 점검 및 최종 검수 강제 |
[세부] 추출된 약품명을 바탕으로 MCP 환경 내에서 심평원 DUR API를 호출하여 금기 약물을 점검한다. |
D |
| FR-06 | AC001, AC003, AC005 | 유연한 복약 인증 시스템 (상태값 기반 UI 분기) |
[세부] 복약 인증 시 시니어는 '사진 찍으러 가기(비전 AI)' 방식과 '사진 없이 인증하기(수동)' 방식을 상황에 맞게 선택할 수 있다. 복약 카메라 촬영 후 통합 서버가 Vision LLM(GPT-5.4-mini)을 호출하여 이미지 내 알약 개수를 식별하고, DB의 예상 복용량과 일치할 경우 복약 완료로 판정한다. |
D |
| FR-07 | AC001, AC002, AC003 | 다중 계층 안전망 알림 (FCM) |
[세부] 통합 서버의 Spring Scheduler(분단위 주기)가 식사 슬롯에 맞춰 정규 복약 안내 푸시(FCM)를 시니어 기기로 발송한다. |
D |
| FR-08 | AC001, AC003, AC005 | 삐약이 멀티모달 상호작용 |
[세부] 시니어의 질의 시 프론트엔드는 녹음/전송/스트리밍 UI를 담당한다. AI(STT/MCP) 추론 처리는 백엔드가 전담하며, 프론트엔드는 expo-speech 기반의 로컬 TTS 등을 활용하여 삐약이 캐릭터의 음성 피드백과 칭찬 애니메이션을 송출한다. |
W |
| FR-09 | AC001, AC003 | 복약 Streak 보상 시스템 |
[세부] 당일 연속 복약 달성(Streak) 확인 시 카운트를 증가시키고, 앱 내에서 펫(삐약이)의 성장 단계 상승, 칭찬 뱃지, 포인트 지급 등 다각화된 게이미피케이션 보상을 제공하여 자발적 복약 동기를 부여한다. |
W |
| FR-10 | AC001, AC002, AC003 | 시니어 주도 상호 소통 (안부 전하기) |
[세부] 시니어(AC001)가 앱내 기능을 통해 능동적으로 자신의 안부와 상태 메시지를 선택하여 보호자(AC002)에게 단방향으로 전송함으로써, 일방적 모니터링을 넘어선 양방향 가족 소통 채널을 제공한다. |
D |
| FR-11 | AC001, AC002, AC003 | 앱 정보 및 서비스 약관 조회 |
[세부] 시니어 및 보호자 모두 앱 내 마이페이지의 '앱 정보' 메뉴를 통해 최신 버전의 이용약관 및 개인정보 처리방침을 상시 조회할 수 있도록 하여 서비스의 투명성과 신뢰성을 확보한다. |
D |
3. 유스케이스 상세 정의서
유스케이스(Use Case) 상세 정의서
[1] 유저 인증 및 계정 관리 도메인 (Auth & User)
| ID | 유스케이스명 | 관련 액터 | 설명 및 예외/대안 흐름 | 우선순위 |
|---|---|---|---|---|
| UC_U01 | 통합 회원가입 (카카오 및 인앱 로컬) | AC001, AC002, AC003, AC004 | [설명] 앱 최초 실행 시 외부 인증 서비스(AC004)를 통한 카카오 연동(JWKS 캐싱 검증) 또는 인앱 로컬 회원가입(아이디/비밀번호)을 통해 신규 회원으로 등록한다. 로컬 가입 시 비밀번호는 통합 서버(AC003)에서 안전하게 단방향 암호화(Bcrypt 등)되어 DB에 저장된다.[cite: 1] [예외-네트워크] 통신 불안정으로 서버 응답 지연 시 타임아웃 처리 및 안내 문구를 노출한다.[cite: 1] |
높음 |
| UC_U02 | 통합 로그인 및 JWT 발급 | AC001, AC002, AC003, AC004 | [설명] 기존 회원이 카카오 계정 또는 인앱 자체 계정으로 로그인 요청 시, 통합 서버(AC003)가 자격 증명을 거쳐 Access/Refresh Token을 발급한다.[cite: 1] [예외-토큰만료] 서비스 이용 중 Access Token 만료 시, Interceptor가 Refresh Token을 사용해 백그라운드에서 토큰을 자동 재발급(Silent Refresh)한다.[cite: 1] [예외-인증실패] 로컬 로그인 시 비밀번호가 틀릴 경우 "아이디 또는 비밀번호를 확인해 주세요" 경고를 노출한다.[cite: 1] |
높음 |
| UC_U03 | 로그아웃 | AC001, AC002, AC003 | [설명] 사용자가 로그아웃을 요청하면 클라이언트의 SecureStore에 안전하게 보관된 Access 및 Refresh Token을 완전히 파기하고, 서버 단의 세션/리프레시 토큰을 무효화(Redis 등)한다.[cite: 1] | 보통 |
| UC_U04 | 계정 탈퇴 | AC001, AC002, AC003 | [설명] 계정 탈퇴 요청 시 즉시 삭제하지 않고 isActive=false로 상태를 변경하여 30일간 보관한다.[cite: 1] [예외-연동계정] 보호자가 탈퇴할 경우, 연동된 시니어 앱에 "보호자의 연결이 해제되었습니다"라는 FCM 알림을 발송한다.[cite: 1] |
보통 |
| UC_U05 | 초기 온보딩 프로필 설정 | AC001, AC002, AC003 | [설명] 로그인 직후 프로필 API를 호출하여 역할, 닉네임, 성별, 알림 수신 동의 여부를 DB에 저장한다.[cite: 1] [예외-유효성] 필수 값 누락 시 "사용 목적을 선택해주세요" 경고 노출 및 다음 단계 진입을 차단한다.[cite: 1] |
높음 |
| UC_U06 | 계정 프로필 정보 수정 및 시니어 관리 | AC001, AC002, AC003 | [설명] 앱 내 마이페이지에서 닉네임 및 푸시 알림 수신 여부를 동적으로 수정하며, 보호자(AC002)는 연동된 시니어의 프로필(닉네임, 성별 등)도 인앱에서 직접 수정하여 통합 서버(AC003)에 동기화한다.[cite: 1] | 낮음 |
| UC_U07 | 시니어 연동 코드 조회 | AC001, AC002, AC003 | [설명] 보호자(AC002)가 온보딩을 완료하면, 통합 서버(AC003)가 생성한 6자리의 고유 연동 코드를 보호자 화면에 크게 렌더링한다.[cite: 1] | 높음 |
| UC_U08 | 보호자의 시니어 계정 연동 및 인앱 추가 | AC001, AC002, AC003 | [설명] 보호자(AC002)가 앱 내에서 신규 연동 코드를 즉시 발급해 시니어를 자유롭게 추가하거나, 시니어(AC001)가 보호자(AC002) 화면에 표시된 코드를 입력하여 계정 매칭을 수행한다.[cite: 1] [예외-무차별대입] 유효하지 않은 코드 5회 연속 입력 시, 보안을 위해 해당 계정의 연동 시도를 30분간 강제 차단한다.[cite: 1] |
높음 |
| UC_U09 | 연결된 시니어 목록 조회 | AC002, AC003 | [설명] 보호자가 로그인 시 자신이 관리 중인 시니어 목록(1:N 지원)을 배열로 받아와 대시보드에 렌더링한다.[cite: 1] | 높음 |
| UC_U10 | 시니어 연동 해제 | AC002, AC003 | [설명] 보호자가 특정 시니어와의 관리 관계를 끊기 위해 API를 호출하며, 연결이 해제되면 양측 앱에 상태 변경을 알린다.[cite: 1] | 보통 |
| UC_U11 | 비밀번호 찾기(변경) | AC001, AC002, AC003 | [설명] 인앱 로컬 계정으로 로그인한 사용자가 마이페이지에서 기존 비밀번호와 새 비밀번호를 입력하여 변경을 요청한다. 통합 서버(AC003)는 인증 토큰과 기존 비밀번호 일치 여부를 확인 후 변경 사항을 DB에 암호화하여 갱신한다.[cite: 1] [예외-불일치/유효성] 기존 비밀번호가 일치하지 않거나, 새 비밀번호가 보안 정책(길이, 특수문자 등)에 맞지 않을 경우 변경을 차단하고 경고 문구를 노출한다.[cite: 1] |
보통 |
| UC_U12 | 보호자 주도 모니터링/알림 모드 변경 | AC002, AC003 | [설명] 보호자(AC002)가 '내 정보 > 모니터링 / 알림 설정'에 진입하여, 연결된 시니어별로 안전망 알림 모드(기본 60분 대기 또는 집중 30분 대기)를 개별적으로 변경하고 서버에 동기화한다.[cite: 1] [예외-동기화 실패] 네트워크 단절로 서버 반영 실패 시 "설정 저장에 실패했습니다" 스낵바 메시지를 출력한다.[cite: 1] |
보통 |
| UC_U13 | 앱 정보 및 정책 조회 | AC001, AC002 | [설명] 시니어와 보호자 모두 마이페이지의 '앱 정보' 메뉴를 통해 서비스 이용약관 및 개인정보 처리방침을 상시 열람하여 서비스의 투명성과 신뢰성을 확인한다.[cite: 1] | 보통 |
[2] 처방전 파싱 및 약품 관리 도메인 (OCR & Medicine)
| ID | 유스케이스명 | 관련 액터 | 설명 및 예외/대안 흐름 | 우선순위 |
|---|---|---|---|---|
| UC_P01 | 약 등록 방식 선택 및 처방전 이미지 업로드 | AC001, AC003 | [설명] 시니어(AC001)가 '처방전으로 등록'과 '약 직접 등록(검색)' 중 원하는 방식을 선택한다. 처방전 촬영 시, 통합 서버로부터 Presigned URL(5분 TTL)을 발급받아 클라우드 스토리지(NCP)에 업로드한다. 이후 서버 단에서 PiiMasking Service를 통해 이미지를 다운로드하여 민감정보를 마스킹 처리한다.[cite: 1] [예외-확장자/용량] 포맷 오류나 10MB 초과 시 업로드 차단 팝업을 노출한다.[cite: 1] |
높음 |
| UC_P02 | 처방전 비동기 분석 요청 | AC001, AC003 | [설명] 분석 요청 시, 통합 서버(AC003)는 무거운 연산으로 인한 타임아웃을 막기 위해 HTTP 202 Accepted와 parseJobId를 즉시 반환하고 백그라운드 큐에 작업을 등록한다.[cite: 1] | 높음 |
| UC_P03 | OCR 전문(fullText) 추출 및 LLM 정형화 | AC003, AC005 | [설명] 통합 서버가 내부 인프라(Clova OCR)를 호출해 추출한 전문 텍스트(fullText)를 반환받는다. 이를 외부 AI 서비스의 GPT-5.4-nano 모델 프롬프트에 주입하여 약품 정보를 JSON으로 정형화한다.[cite: 1] [예외-인식불량] 신뢰도 미달 시 Job 상태를 'FAILED'로 기록하고 TTS로 재촬영을 안내하며, 3회 실패 시 보호자에게 대리 등록을 요청한다.[cite: 1] |
높음 |
| UC_P04 | 처방전 분석 결과 폴링 조회 | AC001, AC003 | [설명] 클라이언트 앱은 parseJobId를 이용해 서버에 결과를 주기적으로 폴링 요청하고 완료 시 추출된 약품 배열을 화면에 렌더링한다.[cite: 1] [예외-지연] 파싱 10초 초과 지연 시 안내 문구를 노출한다.[cite: 1] |
높음 |
| UC_P05 | 검수 강제화 및 처방전 상태 업데이트 | AC001, AC002, AC003 | [설명 및 법적 방어] AI 환각 리스크를 차단하기 위해 파싱 결과를 즉시 확정하지 않고, 보호자(또는 시니어)가 원본 이미지와 직접 대조하여 최종 승인(CONFIRMED) 하도록 사용자 확인 UI를 강제한다.[cite: 1] | 높음 |
| UC_P06 | MCP 기반 DUR 금기 약물 점검 | AC002, AC003 | [설명] 통합 서버는 MCP 환경을 통해 심평원 DUR API를 호출(24시간 TTL DB 캐시 연동)하여 연령/병용 금기를 확인한다.[cite: 1] [예외-명칭불일치] Fuzzy Matching 알고리즘으로 가장 유사한 약품 3개를 노출하여 수동 선택을 유도한다.[cite: 1] |
높음 |
| UC_P07 | 신규 약품 데이터 등록 | AC002, AC003 | [설명] DUR 검증 및 사용자 최종 검수가 끝난 약품 데이터(약 이름, 총 수량, DUR 경고 등)를 DB에 최종 등록한다.[cite: 1] | 높음 |
| UC_P08 | 연결 약 목록 및 상세 조회 | AC001, AC002, AC003 | [설명] 현재 복용 중인 약 목록을 조회하고, 특정 약 상세 클릭 시 남은 수량과 세부 주의사항을 조회한다.[cite: 1] | 보통 |
[3] 비전 AI 인증 및 알림/보상 도메인 (Vision, Schedule & Gamification)
| ID | 유스케이스명 | 관련 액터 | 설명 및 예외/대안 흐름 | 우선순위 |
|---|---|---|---|---|
| UC_V01 | 정규 복약 알림 수신 (FCM) | AC001, AC003 | [설명] 통합 서버(AC003)의 분 단위 Spring Scheduler가 트리거되어, 식사 슬롯에 맞춰 시니어 기기로 1차 복약 안내 푸시를 발송한다.[cite: 1] | 높음 |
| UC_V02 | 복약 인증 방식 선택 및 UX 가이드 송출 | AC001 | [설명] 복약 알림 터치 시 '사진 찍으러 가기'와 '사진 없이 인증하기' 중 하나를 선택한다. 사진 촬영 선택 시 카메라가 활성화되며 "알약을 겹치지 않게 바닥에 펼쳐주세요"라는 UX 및 음성 안내를 제공한다.[cite: 1] [예외-조도불량] 3초 이상 랜드마크 추출 실패 시 "주변을 더 밝게 해주세요"라는 TTS 안내를 송출한다.[cite: 1] |
높음 |
| UC_V03 | 비전 AI 알약 수량 추출 | AC001, AC003, AC005 | [설명] 촬영된 이미지를 통합 서버로 전송하고, 외부 AI 서비스의 Vision LLM (GPT-5.4-mini)을 호출하여 프롬프트 엔지니어링을 통해 이미지 내 총알약 개수(Count)를 숫자로 반환받는다.[cite: 1] | 높음 |
| UC_V04 | 추출 수량 정합성 검증 | AC001, AC003 | [설명] 반환받은 알약 개수를 DB의 예상 복용량과 대조하여 일치 시 복약 최종 승인(DONE) 처리한다. 불일치 시 백엔드 DB에 COUNT_MISMATCH 상태로 기록하고, 프론트엔드는 이를 기반으로 시니어 앱 화면을 분기하여 즉각적인 재촬영 안내 UI를 띄운다.[cite: 1] | 높음 |
| UC_V05 | 보호자 원격 복약 스케줄링 직접 설정 | AC001, AC002, AC003 | [설명] 보호자(AC002)가 '내 정보 > 복약시간 설정' 페이지에서 시니어(AC001)의 식사 시간 및 복약 시간을 직접 세팅하거나 수정한다. 설정된 시간은 백엔드 Spring Scheduler에 즉각 반영되어, 해당 시간에 시니어 기기로 정규 복약 알림(FCM)이 발송되도록 제어한다.[cite: 1] [대안-시니어 안내] 보호자가 시간을 변경했을 때, 시니어 앱에 "보호자가 복약 시간을 변경했습니다"라는 푸시 알림을 발송하여 일정 변동에 대한 혼선을 방지한다.[cite: 1] |
보통 |
| UC_S01 | 다중 계층 안전망 가동 (미복용 탐지) | AC002, AC003 | [설명] 1차 복약 알림 후 설정된 임계 시간(기본 60분 / 집중 모드 30분)이 초과할 때까지 복약 완료 로그가 없으면, 백엔드 스케줄러가 보호자(AC002)에게 즉각 긴급 지연 알림(FCM)을 발송한다.[cite: 1] | 높음 |
| UC_S02 | 기기 오프라인 및 단절 감지 | AC002, AC003 | [설명] FCM 발송 시 토큰이 유효하지 않거나 장기 미접속(네트워크 단절) 시, 토큰을 비활성화하고 보호자에게 '연결 끊김 경고'를 대체 발송한다.[cite: 1] | 보통 |
| UC_G01 | 멀티모달 삐약이 상호작용 (TTS) | AC001, AC003 | [설명] 복약 완료 시 외부 TTS-1 모델을 통해 삐약이 캐릭터가 칭찬 음성을 송출하고 기쁨 애니메이션을 렌더링한다.[cite: 1] | 선택 W |
| UC_G02 | 연속 복약(Streak) 보상 지급 | AC001, AC003 | [설명] 당일 설정된 복약 일정 100% 완료 시 서버가 Streak 카운트를 증가시키고 가상 재화(알)를 DB에 업데이트한다.[cite: 1] | 선택 W |
| UC_G03 | 대화형 약품 정보 질의응답 (STT) | AC001, AC003, AC005 | [설명] 시니어가 마이크로 질문 시 whisper-1 (ko) 모델(STT)로 텍스트 변환 후, MCP 기반 자율 에이전트(GPT-4o-mini)가 식약처 도구를 호출해 복용 정보를 추출하고 TTS-1으로 답변한다.[cite: 1] | 선택 W |
| UC_G04 | 시니어 안부 전하기 (양방향 소통) | AC001, AC002, AC003 | [설명] 시니어(AC001)가 앱내 기능을 통해 능동적으로 자신의 안부와 상태 메시지를 선택하여 보호자(AC002)에게 단방향으로 전송한다.[cite: 1] | 보통 |
나. 평가 내용
본 과제는 구현된 시스템이 요구사항(기능적/비기능적)을 완벽히 충족하는지 객관적으로 검증하기 위해, 소프트웨어 공학의 테스트 기준에 기반한 핵심 평가 항목과 정량적/정성적 검증 시나리오를 아래와 같이 수립하였다.
1. 핵심 평가 항목 및 목표치
| 번호 | 핵심 평가 항목 | 평가 내용 및 기준 | 최종 목표치 | 측정 및 평가 방법 |
|---|---|---|---|---|
| 1 | 처방전 약품 정보 파싱 정확도 |
처방전 이미지 업로드 시 Clova OCR을 통한 텍스트 추출 및 GPT-5.4-nano 모델을 거쳐 정형화된 JSON 데이터(약품명, 용법, 수량 등)의 정확도 검증 | 95% 이상 | 임의의 처방전 데이터 100건을 대상으로 원본 문서 내용과 파싱 결과 자동 비교 |
| 2 | 비전 AI 알약 인식 정확도 |
복약 인증 시 카메라로 촬영된 알약 이미지를 Vision LLM(GPT-5.4-mini) 모델이 분석하여 이미지 내 실제 알약 개수(Count)를 올바르게 식별하는지 여부 | 90% 이상 | 다양한 조도 및 배경 환경에서 알약 1~10알을 무작위 배치한 사진 200장 대상 일치율 측정 |
| 3 | 다중 계층 안전망 알림(FCM) 성공률 |
Spring Scheduler 기반의 정규 알림 및 미복용 상태 임계 시간(30분/60분) 초과 시 보호자에게 에스컬레이션되는 긴급 푸시 알림의 누락 없는 발송 비율 | 99% 이상 | 가상 복약 지연 시나리오 및 정규 스케줄러 트리거 100회 테스트 시 정상 발송 횟수 산정 |
| 4 | MCP 기반 DUR 금기 탐지율 |
Model Context Protocol(MCP) 환경 내에서 심사평가원 DUR API와 실시간 연동하여 연령 금기 및 병용 금기 약물이 포함된 처방 데이터 입력 시 시스템의 경고 차단율 | 100% | 금기 약물 성분이 포함된 테스트용 처방 데이터 50건 주입 시 경고 UI 정상 노출 여부 검증 |
| 5 | 멀티모달 AI 응답 지연 시간 (Latency) |
시니어 음성 질의 시 whisper-1 (ko) 모델(STT)의 인식 완료 시점부터 통합 서버(MCP/LLM) 연산을 거쳐 TTS-1 모델의 음성 피드백이 시작되기까지의 시간 | 3.0초 이하 | 일반적인 이동통신(LTE/5G) 네트워크 환경에서 음성 질의 응답 50회 수행 후 평균 지연 시간 측정 |
| 6 | 시니어 주도형 UI/UX 사용성 만족도 |
글자 크기 가독성, 직관적인 음성 가이드, '사진 없이 인증' 및 '약 직접 검색' 등 시니어 자율 선택권 중심의 화면 구성에 대한 정성적 만족도 평가 | 4.0점 이상 (5점 만점) |
65세 이상 시니어 피실험자 10인을 대상으로 주요 태스크 수행 완료율 측정 및 시스템 사용성 설문(SUS) 실시 |
2. 단위 및 통합 테스트 주요 방어 시나리오
단순 기능 점검을 넘어, 실제 서비스 배포 시 발생할 수 있는 주요 시스템 예외 상황 및 법적 리스크(컴플라이언스)에 대한 강력한 방어력을 평가한다.
- MCP 도구 자율 호출 및 인프라 장애 대응: 삐약이 통합 서버(AC003)가 통제하는 내부망 DUR 인프라 호출 또는 외부 카카오 인증 서버(AC004) 접속 지연 시, 혹은 GPT-4o-mini의 MCP(Model Context Protocol) 자율 호출 과정에서 타임아웃이 발생할 경우 전체 앱이 멈추지 않고 적절한 Fallback UI(안내 팝업 및 사용자 수동 전환 로직)를 제공하는지 평가한다.
- 네트워크 단절 및 FCM 토큰 만료 대응: 시니어의 기기가 오프라인 상태이거나 FCM 푸시 토큰이 만료되어 알림 발송이 실패할 경우, 백엔드 스케줄러가 마지막 접속 타임스탬프를 확인해 보호자에게 '연결 끊김 경고'를 즉각 대체 발송하는지 평가한다.
- LLM 환각(Hallucination) 방어 및 DUR 명칭 불일치 대응: AI 모델이 추출한 약품명에 오타가 포함되어 DUR DB와 불일치할 경우, 문자열 유사도를 통해 대체 약품 3개를 올바르게 추천하는지 평가한다. 더불어 AI 오판으로 인한 의료 사고를 방어하기 위해, 파싱된 데이터를 맹신하지 않고 사용자가 직접 원본과 대조 후 '최종 승인' 버튼을 누르도록 유도하는 강제화 로직이 정상 작동하는지 점검한다.
개념설계안
본 시스템은 모바일 클라이언트의 연산 부하를 최소화하고, 외부 인공지능 모듈과의 통신 안정성을 확보하기 위해 백엔드 중심의 비동기 마이크로서비스 아키텍처를 채택하였다. 주요 개념 설계는 다음과 같다.
가. 전체 서비스 유저 플로우
최초 실행 시 역할(시니어/보호자)에 따라 완벽히 분기되는 독립적인 사용자 경험(UX)을 제공한다. 처방전 등록 시 백엔드의 비동기 파싱과 보호자의 '최종 승인'을 거쳐야만 일정이 활성화되는 컴플라이언스(법적 방어) 로직을 갖추고 있다. 또한, 정규 알림 후 미복용 시 보호자에게 긴급 지연 알림이 발송되는 다중 계층 안전망 흐름을 시각화하였다.
나. 전체 시스템 아키텍처 다이어그램
시스템은 모바일 클라이언트(App), 삐약이 통합 백엔드(Spring Boot), 외부 시스템(External Systems)으로 철저히 분리된다. 통합 서버 내부에 In-memory 및 DB 기반의 다중 캐시 계층을 두어 외부 인프라 통신 부하를 줄이고, OpenAI(GPT-4o-mini, GPT-5.4-nano, GPT-5.4-mini), Clova OCR, 식약처(MFDS) API 등을 유기적으로 제어하는 중앙 중개자 역할을 수행한다.
다. 인증 및 시니어-보호자 계정 연동 (Auth & Care Relation)
외부 카카오 OIDC 인증 시 매번 카카오 서버를 거치지 않도록 JWKS(공개키) 캐싱을 도입하여 JWT 발급 및 자격 증명 속도를 최적화했다. 보호자가 발급한 TTL(유효시간) 기반 초대 코드를 시니어가 입력하면, 서버가 클라이언트 IP와 함께 검증하여 1:N 관계(Care Relation)를 안전하게 수립한다.
라. 처방전 비동기 파싱 및 파일 업로드 (Prescription & Upload)
서버 네트워크 병목을 원천 차단하기 위해, 클라이언트가 서버로부터 5분 TTL의 Presigned URL을 발급받아 클라우드(NCP Object Storage)에 처방전 이미지를 직접 업로드(PUT)한다. 이후 백엔드는 PII(개인정보) 마스킹 후 Clova OCR로 텍스트를 추출하며, 이를 GPT-5.4-nano 프롬프트에 주입해 약품명과 식사 슬롯(mealSlots)을 정형화(JSON)한다. 최종적으로 식약처 API 매칭과 보호자의 승인(Confirm)을 거쳐 실제 복약 스케줄을 자동 생성한다.
마. 가족 안전망 및 게이미피케이션 상호작용 흐름도
Spring Scheduler를 통한 정기 알림 발송부터, 시니어의 복약 결과에 따른 보상(게이미피케이션) 및 미복용 시의 보호자 연계까지 이어지는 전체 비즈니스 흐름이다. 복약 시간 경과 시 시니어 기기의 알림을 강제 유지하고, 미복용 지속 시 보호자에게 긴급 이상 탐지 푸시를 발송하는 고독사 방지 프로토콜을 가동한다. 복약 달성 시 삐약이의 칭찬 음성(TTS) 송출과 함께 연속 복약 카운트를 증가시켜 가상 재화(알) 보상을 지급함으로써 시니어의 능동적인 복약 습관 형성을 유도한다.
바. 의약품 검색 및 DUR 캐싱 전략 (Medicine & DUR)
외부망 호출로 인한 서비스 지연을 막기 위해 2단계 캐싱 전략을 가동한다. 약품 검색 시 In-memory MFDS 캐시를 우선 조회하며, DUR(금기 점검) 수행 시 활성 약품들의 SHA256 해시값을 조합해 DB-backed DUR 캐시(24시간 TTL)를 확인한다. 캐시 Miss 시에만 식약처의 3중 API(상호작용, 노인주의, 중복)를 병렬 호출하고 결과를 집계하며, 매주 일요일 새벽 정기 스케줄러를 통해 낱알 식별 데이터를 동기화한다.
사. 멀티모달 대화형 AI 및 비전 검증 (Chat & Vision)
본 시스템은 텍스트, 음성, 이미지를 모두 포괄하는 멀티모달 파이프라인을 구축하였다. 시니어의 음성이나 텍스트 입력 시 whisper-1 (ko) STT를 거쳐 LLM에 전달되며, 사용자 대기 시간을 최소화하기 위해 SSE(Server-Sent Events) 스트림으로 텍스트를 즉각 반환하거나 TTS-1을 통해 오디오 바이트로 송출한다. 특히 알약 사진 입력 시에는 Function Calling 기술을 활용하여 비전 AI(GPT-5.4-mini)가 자율적으로 식약처 낱알 식별 도구(identifyPillByAppearance)를 호출해 후보군을 찾고, 연쇄적으로 DUR(금기 사항) 검사까지 수행하여 최종 답변을 산출하는 스마트 에이전트 구조를 갖추었다.
아. 복약 알림 다중 계층 스케줄러 (Notification & FCM)
복약 알림 및 가족 안전망은 Spring Scheduler 기반의 다중 계층 스케줄러를 통해 빈틈없이 가동된다. 매분 작동하는 Reminder Dispatcher가 식사 시간에 도달한 시니어를 찾아 정규 푸시 알림을 발송하며, 미인증 상태가 설정된 임계 시간(기본 60분 또는 집중 관리 모드 30분) 이상 지속될 경우 Delay Dispatcher가 보호자에게 즉각 지연 알림을 발송한다. 더불어 매시간 작동하는 Family Safety Dispatcher가 장기 미복용 후보를 점검하여 안전망을 강화하며, 푸시 발송 과정에서 토큰이 만료(Invalid)된 기기가 발견되면 즉시 DB에서 비활성화 처리하여 불필요한 시스템 리소스 낭비를 원천 차단한다.
자. 클라우드 기반 보안 파일 업로드 (Presigned URL)
대용량 처방전 및 알약 이미지 업로드 시 발생할 수 있는 백엔드 서버의 네트워크 병목 현상을 원천 차단하기 위해, 클라우드 네이티브 기반의 아키텍처를 적용하였다. 클라이언트가 파일을 업로드하기 전 통합 서버에 먼저 요청하여 5분 후 만료(TTL)되는 Presigned URL을 발급받는다. 이후 클라이언트는 해당 URL을 사용하여 클라우드 스토리지(NCP Object Storage)에 직접 이미지를 업로드(PUT)하며, 완료 후 Object Key만 서버로 전달하여 후속 도메인 비즈니스 로직(AI 파싱 등)을 처리한다. 이를 통해 서버의 부하를 극적으로 경감시키고 민감 정보의 서버 내 체류 시간을 최소화하는 고도화된 보안 및 트래픽 제어 인프라를 완성하였다.
이론적 계산 및 시뮬레이션
본 과제는 시스템의 설계사양과 설계 아이디어의 타당성을 입증하기 위해, 실제 구현 환경과 동일한 시나리오를 설정하여 정량적인 시뮬레이션 및 부하 테스트를 수행했다.
가. 평가 기준
본 개념설계안은 요구사항 명세서를 기반으로 정리된 시스템 아키텍처, 유저 플로우차트, 유스케이스 정의서 등 전반적인 아키텍처 구성을 포함한다. 시스템의 엔지니어링 완성도를 다각도로 검증하기 위해 개념의 일관성, 사용자 중심 설계, 요구사항 대응성 등을 중심으로 절대 평가 분석을 수행하였다.
1) 평가 기준
개념설계안에 대한 평가는 다음과 같은 항목을 기준으로 진행하였다.
개념설계안 종합 평가
개념설계안의 4가지 평가 기준에 대한 종합 평가는 다음과 같다. 모든 지표에서 시스템의 목표 성능과 안정성을 충족하였다.
| 항목 | 평가 등급 | 비고 |
|---|---|---|
| 설계 일관성 | A | 전체 UI 흐름이 가상 재화 보상(Streak) 및 푸시 알림과 유기적으로 연결되어 있으며, 사용자(시니어)-보호자-통합 백엔드 간의 데이터 라우팅 및 1:N 매칭 구조가 흐름도상에 무결하게 설계됨. |
| 기능 정합성 | A | 멀티모달 AI 음성 질의응답, 비동기 처방전 파싱, 비전 기반 알약 수량 검증 등 핵심 아키텍처 구성 요소가 기능 요구사항 및 유스케이스 정의서와 대응하며 누락 없이 반영됨. |
| 기술 적합성 | A | 무거운 AI 추론 연산 시 HTTP 202 Accepted 기반의 비동기 큐잉(Job Queue)과 Presigned URL 다이렉트 업로드를 적용하여 백엔드 부하를 차단하고, 모바일 클라이언트의 경량화를 완벽히 달성함. |
| 운영 가능성 | A | 외부망(심평원 DUR 공공 API, 카카오 OIDC 등) 연동에 따른 지연 리스크를 방어하기 위해 In-memory 및 DB-backed 캐시 계층(24h TTL)을 완비함으로써, 외부 API 장애 시에도 흔들림 없는 독자적 운영 안정성과 가용성을 확보함. |
| 종합 | A | 구조적 완성도, 트래픽 병목 제어력, 개인정보 보안성을 모두 갖춘 무결점 아키텍처안으로, 본 안을 기준으로 상세설계 및 최종 구현 단계에 착수하는 것이 매우 적절함. |
AI 모델 평가 결과 분석 및 모델 선정 (처방전 파싱 LLM)
Clova OCR이 추출한 비정형 텍스트 데이터를 구조화된 JSON(약품명, 용법, 용량 등)으로 정형화하고, 시니어의 건강 질의에 '삐약이' 페르소나로 실시간 응답하기 위한 최적의 대형 언어 모델(LLM)을 정량 비교 평가하였다.
| 항목 (5점 만점) | GPT-5.4-nano | GPT-4o | GPT-3.5 Turbo |
|---|---|---|---|
| 의료 데이터 추출 정확도 | 5 | 5 | 3.5 |
| JSON 포맷 출력 일관성 | 5 | 5 | 3 |
| 실행 시간 (API 응답 속도) | 평균 약 0.8s | 평균 약 2.5s | 평균 약 1.2s |
| API Cost (경제성) | 5 | 2 | 4 |
의료 처방전 데이터는 특유의 다단 편집 레이아웃으로 인해 OCR 인식 시 텍스트 순서가 섞이는 노이즈가 심하며, 이를 완벽한 JSON 배열로 복원하기 위해서는 명령어 준수 능력이 요구된다.
과거 주로 사용되던 GPT-3.5 Turbo 모델의 경우, 복잡한 의료 프롬프트 주입 시 간헐적으로 필수 키 값을 누락하거나 존재하지 않는 약품명을 지어내는 환각 현상을 보였다. 반면 GPT-4o는 높은 정확도를 자랑하나, 단순 정형화 작업에 사용하기에는 파라미터가 과도하게 무거워 API 호출 비용이 비싸고 TTFT(Time To First Token, 첫 응답 대기 시간)가 길어지는 단점이 있다.
이에 본 프로젝트는 최신 경량화 텍스트 전용 모델인 GPT-5.4-nano를 최종 채택하였다. 이 모델은 GPT-4o 수준의 논리적 추론 능력을 유지하면서도 경량화 아키텍처를 통해 추론 속도를 0.8초대로 극적으로 단축시켰다. 결과적으로 시니어 사용자의 앱 이탈을 유발하는 대기 시간을 줄임과 동시에, 트래픽 폭증 시에도 B2C 서비스의 운영 유지비를 획기적으로 절감할 수 있는 완벽한 가성비와 안정성을 증명하였다.
AI 프레임워크 평가 결과 분석 및 모델 선정 (알약 객체 인식 및 카운팅)
시니어가 촬영한 알약 사진에서 약의 개수를 세어 처방량과 비교하기 위해, 최신 비전 인식 모델들을 비교 평가하였다.
| 항목 (5점 만점) | GPT-5.4-mini | YOLOv11 (Custom) | Instance Segmentation |
|---|---|---|---|
| 구현 및 도입 난이도 | 5 (API 호출만으로 구현) |
3 (데이터셋 라벨링 필수) |
2 (픽셀 단위 마스크 라벨링) |
| 알약 겹침(Overlap) 인식률 | 4 | 3.5 | 5 |
| 다양한 약품(캡슐, 정제) 유연성 | 5 (사전 학습 없이 인식) |
3 (학습된 형태만 인식) |
4 |
| 모바일 연산 부하 (가벼움) | 5 (서버/클라우드 위임) |
4 | 2 |
알약 수량 인식 도메인은 매년 수백 개의 신약(새로운 모양과 색상)이 출시되며, 시니어 사용자의 촬영 환경(조명 반사, 손떨림, 약봉지 텍스트 혼재 등)이 극도로 불규칙하다는 치명적인 변수가 존재한다.
실무에서 흔히 쓰이는 YOLOv11 모델은 추론 속도는 빠르나 수만 장의 Bounding Box 라벨링 구축 비용이 발생하며, 학습되지 않은 새로운 모양의 약이 등장하면 인식률이 급락하는 데이터 드리프트 현상에 매우 취약하다. Instance Segmentation(Mask R-CNN 등)은 알약이 겹쳐 있는 상황에서 객체를 잘 분리하지만, 학습 비용이 천문학적이며 무거운 텐서 연산으로 인해 시니어의 저사양 스마트폰에서는 심각한 발열과 배터리 소모를 유발한다.
반면, 멀티모달 비전 모델인 GPT-5.4-mini는 초거대 파운데이션 모델 기반의 제로샷 일반화 능력을 갖추고 있다. 즉, 별도의 데이터 수집이나 재학습(Fine-tuning) 없이도 프롬프트 엔지니어링만으로 배경 노이즈와 실제 알약을 논리적으로 구분하고 카운팅할 수 있는 압도적인 유연성을 발휘한다. 무엇보다 무거운 딥러닝 추론 연산을 모바일 단말기가 아닌 외부 클라우드 AI 계층으로 100% 위임함으로써, 시니어 스마트폰의 환경적 제약을 무력화하는 최적의 클라우드 네이티브 아키텍처를 달성하였다.
상세설계 내용
본 장에서는 삐약이 서비스의 구현을 위한 소프트웨어 전체 아키텍처와 주요 매니저(Manager) 컴포넌트의 역할, 그리고 활용되는 기술 스택을 정의한다.
가. 구성 요소 및 시술 스택 조립도
시스템의 목적 달성을 위해 모바일 클라이언트, 백엔드 서버, 그리고 외부 AI/API 계층으로 역할을 명확히 분리하여 설계하였다.
| 구성 요소 | 기능 요약 | 주요 기술 스택 (프레임워크) |
|---|---|---|
| Client (App) | 시니어/보호자 맞춤형 화면 렌더링, 카메라 제어, 보안 스토리지 관리 및 멀티모달 상호작용 UI 제공 | Expo 기반 React Native, Expo Router, React state/context, SecureStore, expo-speech |
| Server (Backend) | 비동기 큐잉 제어, 다중 계층 캐싱, 내부 인프라(OCR, DUR, FCM) 통합 제어 및 서비스 중개, 데이터 마스킹 | Spring Boot 3.5.3, Spring Data JPA, Naver Clova OCR, DUR, FCM, 다중 캐시 |
| Database | 사용자 1:N 매칭 정보, 건강 프로필, 처방약품 및 복약 사진(Log) 트랜잭션 관리 | MySQL 8.4.5 |
| External AI/API | 카카오 외부 인증 제공, 고부하 멀티모달 추론 전담 및 자율 도구 호출 | Kakao OAuth, GPT-4o-mini (Chat), GPT-5.4-nano (Text), GPT-5.4-mini (Vision), MCP |
나. 전체 소프트웨어 아키텍처 다이어그램
클라이언트와 백엔드 서버는 RESTful API를 통해 통신하며, 연산 부하 최소화 및 외부 장애 격리를 위해 다음과 같은 세부 아키텍처를 채택하였다.
1) Expo 기반 React Native Client (App)
- UI/State 및 라우팅 관리: Expo Router를 활용해 유연하게 화면을 전환하고, 상태 관리는 가벼운 React state/context API를 사용하여 클라이언트의 무게를 극적으로 덜어냈다. 가장 중요한 인증 토큰(Access/Refresh Token)은 Zustand나 일반 스토리지가 아닌, OS 레벨의 암호화 저장소인 SecureStore에 안전하게 보관하여 보안 수준을 극대화한다.
- Camera & Image Controller (보안 업로드 및 예외 화면 분기): 단말기 카메라에 접근하여 알약 및 처방전 사진을 촬영한 후, 프론트엔드에서는 불필요한 로컬 마스킹 처리 없이 서버로부터 발급받은 Presigned URL(5분 TTL)을 통해 클라우드(NCP)에 원본을 직접 업로드(PUT)한다. 이후 백엔드로부터 객체 수량 불일치(COUNT_MISMATCH) 등의 상태값을 전달받으면, 시니어에게 즉각적인 재촬영 및 문제 해결 안내 화면을 띄워 직관적인 흐름을 유도한다.
- 멀티모달 인터랙션 (음성/스트리밍 UI): 클라이언트 코드 내부에 특정 AI 모델명(GPT 등)을 하드코딩하지 않는다. 시니어의 음성 질의 시 프론트엔드는 녹음 데이터 전송과 SSE(Server-Sent Events) 기반 텍스트 스트리밍 UI 렌더링만을 담당하며, 무거운 AI(STT/MCP) 추론 처리는 백엔드에 완벽히 위임한다. 단, 삐약이 캐릭터의 즉각적인 음성 피드백은 expo-speech 모듈을 통한 로컬 TTS 재생으로 지연 없이 구현하였다.
2) Spring Boot Server (Backend)
- Async Job Manager, Caching & PiiMasking Service: 처방전 업로드 시 HTTP 202 Accepted를 즉시 반환하여 앱 타임아웃을 막고 백그라운드 큐(Job Queue)에서 파싱을 제어한다. 특히, 프론트엔드가 업로드한 원본 이미지의 민감정보 마스킹 처리를 서버 단에서 전적으로 전담하여 보안 무결성을 보장한다. 또한, 카카오 로그인용 JWKS 공개키 캐시와 심평원 연동용 DB-backed DUR 캐시(24시간 TTL)를 가동하여 외부 API 의존도와 통신 부하를 획기적으로 낮춘다.
- Notification Scheduler (다중 계층 안전망): Spring Scheduler를 통해 매분 식사 슬롯 정규 푸시 알림(Reminder) 및 미인증 지연 알림(Delay)을 발송하고, 매시간 장기 미복용자를 점검(Family Safety)한다. 발송 중 무효화(Invalid)된 FCM 토큰은 즉각 DB에서 비활성화하여 불필요한 시스템 리소스 낭비를 차단한다.
3) Database (MySQL)
- Relational Data Management: 시니어-보호자의 매칭 정보, 처방 약품 데이터, 그리고 실제 복약 사진 URL(photo_url)과 AI 인식 결과(detected_count)를 포함한 복약 로그를 무결성 있게 관리한다.
- Transaction Safety: 연속 복약 달성(Streak) 및 가상 재화(알) 지급 시, 그리고 펫(삐약이)의 성장 단계 및 칭찬 뱃지 업데이트 시 동시성 문제가 발생하지 않도록 서버의 트랜잭션과 연계하여 안전한 데이터 저장을 담당한다.
4) External AI/API Integration (MCP 기반 자율 제어)
- Vision AI & Parsing Engine 통합 제어: 백엔드에서 비용과 응답 속도가 최적화된 GPT-5.4-mini 및 GPT-5.4-nano 모델을 직접 호출하고 통괄하여 클라이언트의 연산 부하를 외부로 완벽히 격리한다. 특히 MCP(Model Context Protocol) 환경을 구축하여, 비전 이미지 입력 시 프론트엔드의 개입 없이 LLM이 자율적으로 식약처 낱알 식별 도구 및 DUR 검사 도구를 연쇄 호출(Function Calling)하도록 고도화하였다.
- Public/Infrastructure (OCR & DUR & FCM): Naver Clova OCR(텍스트 추출), 심평원 DUR(안전성 교차 검증), 그리고 FCM(OS 독립적 푸시) 인프라를 백엔드에서 안전하게 통합 제어한다.
결과 및 평가
완료 작품의 소개
프로토타입 사진 혹은 작동 장면
관련사업비 내역서
| 항목 (품명, 규격) | 수량 | 단가 | 금액 (계) | 금액 (현금) | 비고 |
|---|---|---|---|---|---|
| Claude | 3 | 329 | 986 | 986 | |
| 네이버클라우드(네이버파이낸셜(주)) | 3 | 242 | 726 | 726 | |
| 개발 관련 서적 구입비 | 1 | 479 | 479 | 479 | |
| 전문가 자문료 | 3 | 150 | 450 | 450 | |
| OPEN AI | 3 | 117 | 351 | 351 | |
| 개발 소모품 | 1 | 298 | 298 | 298 | |
| 애플코리아(유) | 1 | 129 | 129 | 129 | |
| Google Digital Inc | 1 | 39 | 39 | 39 | |
| 합 계 | 3,458 | 3,458 |
완료작품의 평가
| 평가 항목 | 평가 방법 | 평가 결과 (달성도) |
|---|---|---|
| 비전 AI 인식 성능 | 고의적 불량 환경(조명, 가림 등) 50회 테스트 | 최종 인식 성공률 92% 달성 |
| 시스템 반응 속도 | AI 추론 및 비동기 파싱 처리 시간 측정 | 평균 대기 시간 1,200ms 이내 |
| 안전망 신뢰성 | 미복용 가상 유저 동시 접속 시나리오 테스트 | 지연 알림(FCM) 도달률 100% |
| 사용자 개입 검증 | 처방전-데이터 대조 승인 플로우 평가 | 휴먼 에러(Hallucination) 리스크 방어 |
향후계획
가. 차후 구현할 내용
1) Fuzzy Matching 기반 동의어 사전(DB) 구축
음성 및 타이핑에서 발생하는 약어, 발음 변형을 정규화된 공식 약품명으로 맵핑해 주는 자연어 전처리 파이프라인을 도입하여 인식률 90%에 도전한다.
2) 스마트 모드 스위칭 및 UX/UI 개선
채팅 모드 영구 고정, 텍스트 복사, 상단 '다시 듣기' 버튼을 도입하여 사용자가 정보 수용 방식을 선택할 수 있게 한다. 더불어 메인 화면의 '복약 인증' 버튼 시인성을 높인다.
3) 보호자 능동 개입(Nudge) 기능 도입
신설된 시니어의 주도적 안부 전송 기능에 더해, 향후에는 보호자가 앱을 통해 "약 드실 시간이에요!"라는 안부/재촉 알림을 시니어에게 직접 보낼 수 있는 보호자 주도의 양방향 넛지(Nudge) 기능을 추가로 고도화하여 완벽한 상호 소통 환경을 구축할 계획이다.
4) 미구현 포인트 시스템 및 통합 돌봄 네트워크 연동
복약 성공 시 지급되는 포인트 리워드의 상세한 설계 구조와 데이터베이스 체계를 차후 구현할 예정이다. 나아가 이 리워딩 시스템과 모니터링 기능을 지역 요양 센터, 은퇴자 전용 실버타운, 1차 의료기관(동네 의원)의 전산망과 연계하여, 단일 앱을 넘어선 지역 사회 기반의 '통합 돌봄 모니터링 플랫폼'으로 인프라를 확장한다.
5) 서비스의 사회적 가치 지표(KPI) 트래킹 시스템
앱 내 행동 데이터를 분석하여, 시니어 복약 부주의로 인한 연간 의료비 낭비 절감 지표와 독거노인 돌봄 공백 해소로 인한 사회적 비용 절감 가치를 정량적으로 산출하는 대시보드를 추가 도입할 계획이다.
나. 안정적 고정 수익 창출 및 비즈니스 모델 구축
초기 API 호출 비용의 한계를 경험한 바, 서버 유지비 이상의 안정적인 월간 반복 수익(MRR, Monthly Recurring Revenue)을 고정적으로 창출하기 위해 다음과 같은 3단계 B2C/B2B/B2G 수익 모델을 전개한다. 특히 시니어 1인당 월 변동비가 약 150원에 불과한 고정비 중심의 효율적 원가 구조를 바탕으로, 서비스가 확장될수록 이익률이 극대화되는 생태계를 구축한다.
1) [B2G/B2B] 지자체 및 1차 의료망 연계 SaaS 구독 (핵심 고정 수익원)
가장 확실한 고정 수익 창출 방안으로, 독거노인 돌봄 사업을 추진하는 '지자체 보건소'나 '대형 요양원'에 삐약이 시스템을 B2G/B2B 형태의 SaaS(Software as a Service)로 납품한다. 타깃을 확장하여 지역 요양 센터 및 동네 의원(1차 의료기관)까지 모니터링 플랫폼을 연동한다.
- 수익 구조: 예시) 관리 대상 시니어 1인당 월 5,000원의 고정 라이선스/유지보수 비용 청구.
- 기대 효과: 기관은 기존 방문 요양보호사의 인건비 대비 극히 적은 비용으로 다수의 독거노인 복약 상태를 관제(대시보드 제공)할 수 있으며, 당사는 연 단위 계약을 통해 막대한 고정 수익을 안정적으로 확보할 수 있다.
2) [B2C] 프리미엄 가족 안심 구독 모델 (Freemium)
- 수익 구조: 기본 복약 알람 및 AI 대화 기능은 무료(Free)로 제공하되, 월 3,900원의 정기 구독료를 지불하면 '프리미엄 가족 안심 Plus' 기능을 활성화한다.
- 제공 가치: 다중 보호자(형제, 자매 동시 모니터링) 연동, 주간/월간 딥러닝 건강 분석 리포트, 그리고 피드백에서 요구된 약품별 개별 알림 시간 설정 기능을 프리미엄 전용으로 제공하여 자녀 세대의 정기 결제를 유도한다.
3) [B2B] 의료 데이터 비즈니스 파이프라인 (초과 수익 창출)
비전 AI를 통해 실제 복용이 검증된 '무결성 복약 순응도 데이터'를 철저히 익명화하여, 임상 시험 추적 관리가 필요한 제약 회사나 헬스케어 리워드 상품을 기획하는 보험사에 연 단위 데이터 구독(Data-as-a-Service) 형태로 제공하여 추가적인 고정 제휴 수익을 창출한다. 축적된 시니어의 장기 건강 데이터는 향후 맞춤형 헬스케어 가이드 및 리서치 데이터셋으로 높은 부가가치를 인정받을 것이다.
4) [B2B2C] 포인트 기반 실버 커머스 연계 및 결제 수수료 (신규 성장 동력)
게이미피케이션을 통해 유저가 획득한 리워드 포인트를 건강기능식품 및 실버 용품 구매에 사용할 수 있도록 인앱 커머스 환경을 조성한다. 축적된 포인트를 활용한 '실버 커머스 결제 시스템'을 도입하여 외부 브랜드 입점비 및 인앱 결제 수수료 수익 모델을 제시함으로써, 단순한 헬스케어 툴을 넘어 거대한 실버 경제 플랫폼으로 도약한다.
특허 출원 내용
해당사항 없음





