소개
평소 허리가 좋지 않았던 나에게 척추측만증이라는 병에 대해서 접하게 되었다.
관련기사를 보아도 척추측만증이 청소년들에게도 문제가 되는 것 같았습니다.
관련해서 스마트폰 카메라로 진단할수 있으면 좋겠다라는 생각에 시도하게 되었습니다.
진행 방법
ChatGPT에게 먼저 척추측만즈에 대해서 질문을 던져주었습니다. 아래와 같은 설명을 해주어서 대충 어떤 질병인지 파악해보았습니다.
이정도가 되면 저희 항상궁금해하는 기전이 무엇인지도 조사를 해보아야겠죠? 조사한 결과는 다음과 같았습니다.
참 다양한 원인이고 무엇인가 관리를 통해서 완화를 하면서 잘 조절해야 하는 질병으로 파악은 하였습니다. 몇가지 신경 또는 유전적인 요인을 제외하고 말이죠..
역시 조기진단과 치료가 중요하다는 말이 제일 머리에 꽂지힙니다. 공부할 시간이 항상 부족한 학생들이 병원 가랴 약 처방받으랴 시간이 절대적으로 부족한 수험생들을 위해서 5분내에 관리 가능한 어플을 만들어보고자 결심을 하였습니다.
그래서 사용했던 AI tool 은 Cursor AI 입니다. 먼저 Cursor AI 스터디에서 배운대로 몇가지 사례를 소개해달라고 요구해보았습니다.
위의 것을 기반으로 PRD를 작성해달라고 요청합니다.
이렇게 해서 작성한 MD 는 다음과 같았습니다.
# 척추측만증 자가진단 웹 앱 PRD (Product Requirements Document)
## 1. 제품 개요
### 1.1 제품 목적
척추측만증 자가진단 웹 앱은 사용자가 간단한 방법으로 척추측만증을 자가진단하고 관리할 수 있도록 도와주는 웹 기반 애플리케이션입니다.
### 1.2 목표 사용자
- 척추측만증이 의심되는 일반인
- 척추측만증 진단을 받은 환자
- 자세 개선이 필요한 사용자
## 2. 핵심 기능
### 2.1 자가진단 시스템
#### 2.1.1 아담스 테스트
- 사용자가 앞으로 굽혀서 등 사진을 업로드
- OpenCV 기반 이미지 분석으로 척추 만곡도 측정
- 측정 결과에 따른 위험도 표시
#### 2.1.2 기본 자세 체크
- 어깨 높이 비교 (이미지 분석)
- 골반 기울기 확인 (이미지 분석)
- 척추 정렬 상태 분석 (이미지 분석)
### 2.2 운동 가이드
#### 2.2.1 운동 프로그램
- 진단 결과에 따른 운동 추천
- 난이도별 운동 분류
- 운동 동작 가이드 이미지 제공
#### 2.2.2 운동 일정 관리
- 운동 스케줄러
- 운동 완료 체크
- 운동 통계 및 진행 상황 표시
### 2.3 진단 기록 관리
#### 2.3.1 데이터 저장
- 정기적인 측정 결과 저장
- 진행 상황 그래프화 (Plotly)
- PDF 리포트 생성 기능
#### 2.3.2 데이터 공유
- PDF 리포트 다운로드
- 데이터 백업 및 복원
## 3. 기술 스택
### 3.1 프론트엔드
- Streamlit
- Plotly (데이터 시각화)
- Streamlit Components
### 3.2 백엔드
- Python
- FastAPI (API 서버)
- SQLite (로컬 데이터베이스)
### 3.3 이미지 처리
- OpenCV
- MediaPipe
- NumPy
### 3.4 인프라
- GitHub Pages (배포)
- Streamlit Cloud (배포 옵션)
## 4. 사용자 경험 (UX)
### 4.1 디자인 원칙
- 직관적인 인터페이스
- 단계별 가이드
- 명확한 피드백
- 반응형 디자인
### 4.2 주요 페이지
1. 메인 대시보드
2. 자가진단 페이지
3. 운동 가이드 페이지
4. 기록 관리 페이지
5. 설정 페이지
## 5. 보안 및 개인정보
### 5.1 데이터 보안
- 로컬 데이터 저장
- 안전한 파일 업로드
- 세션 관리
### 5.2 개인정보 처리
- 개인정보 수집 동의
- 데이터 보관 기간 설정
- 데이터 삭제 기능
## 6. 성능 요구사항
### 6.1 웹 앱 성능
- 페이지 로딩 시간: 3초 이내
- 이미지 분석 시간: 10초 이내
- 오프라인 데이터 저장 지원
### 6.2 서버 성능
- 동시 접속자: 100명 이상
- 응답 시간: 2초 이내
- 99% 가동률
## 7. 개발 일정
### 7.1 1단계 (MVP)
- 기본 자가진단 기능
- 간단한 운동 가이드
- 기본 데이터 저장
### 7.2 2단계
- 이미지 분석 개선
- 상세 운동 프로그램
- 데이터 시각화
### 7.3 3단계
- 고급 분석 기능
- PDF 리포트 생성
- 데이터 백업/복원
## 8. 성공 지표 (KPI)
### 8.1 사용자 지표
- 일일 방문자 수
- 페이지 체류 시간
- 사용자 만족도
### 8.2 기능 지표
- 자가진단 완료율
- 운동 프로그램 참여율
- 데이터 기록 지속성
## 9. 제한사항 및 고려사항
### 9.1 법적 고려사항
- 개인정보보호법 준수
- 의료법 관련 규정 준수
### 9.2 기술적 제한사항
- 카메라 품질에 따른 정확도
- 브라우저 성능에 따른 제약
- 네트워크 환경 의존성
##그리고 스터디장님이 항상 강조하신 requirements.txt 는 아래와 같았구요.
이제 코드를 생성해서 만들어본 UI 입니다.
자 이것을 스트림릿으로 구성하는데 에러가 발생중이라서 조치가 필요합니다.
임시로 IP 주소로 올려놓고 이번주내로 조치해볼께요.
Local URL: http://localhost:8501
Network URL: http://172.30.1.8:8501
그래서 스트림릿으로 구현을 성공해보았습니다. ㅎㅎㅎ
여기서 갑자기 진단테스트가 제대로 될지 아래와 같은 이미지 2개로 비교를 해보았습니다.
척추곡률이 1.00 이라고 좀 이상한데? ㅎㅎ
정상이미지도 척추곡률이 1.00 인데 무엇이 문제인지 조치를 해달라고 Cursor AI한테 알려달라고 했습니다. 분석한 결과 다음과 같습니다.
조치한 결과 제대로 곡률이 계산이 되것을 확인하였습니다. ㅎㅎ
25.3/31일자 2번째 업그레이드 버젼입니다. 좀 더 고민하고 만들께요.. 배포버젼 만들때마다 구멍만 보입니다. ㅎㅎ
SpineCheck - 척추측만증 자가진단 · Streamlit
결과와 배운 점
아이디어도출 어플로 만들고 쉽게 배포하는 형태의 순서에 따라 실행해봄.
스트림릿으로 구현시 에러가 상당히 많이 발생함. 에러발생 조치 재배포에 대한 노하우 습득필요.
웹 주소로 만들어보니 배포 --> 피드백 --> 지속업그레이드할 수 있는 형태로 만들어보는 재미가 있었음
도움 받은 글 (옵션)
참고한 지피터스 글이나 외부 사례를 알려주세요.
오쌤님 강의글 참고함.