Skip to content

forblune/mindhub-mvp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

67 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MindHub

AI-assisted mental health record & pre-visit summary platform

MindHub는 환자가 진료실 밖에서 남긴 일상 대화를 바탕으로 수면·기분·복약·스트레스 요인 같은 임상 신호를 정리하고, 환자가 선택한 공유 범위 안에서 진료 전 요약 리포트로 전달하는 정신건강 AI 데모 플랫폼입니다.

⚠️ 데모/연구용. 진단·치료가 아닌 기록·요약·전달 도구. 의학적 판단은 의사가 합니다. 데모 데이터는 모두 가상 환자입니다.

AI Reboot Academy 21팀 MVP에서 시작한 데모 프로젝트.

라이브 데모

  • 제품 소개 · 무로그인 인터랙티브 데모: https://mindhub.forblune.com
  • 환자 앱(로그인 필요): /app.html · 의사 읽기전용 데모: /doctor.html?demo=1

구조

index.html          # 평가용 제품 설명 + 무로그인 인터랙티브 데모
app.html            # ChatGPT형 환자 대화 앱
doctor.html         # 읽기 전용 의사 리포트 대시보드
backend/            # Solar(Upstage) 프록시 — Render 배포용 (API 키 숨김)
  server.js
  package.json
  README_배포.md     # Render 배포 가이드
SUPABASE_보안강화_20260619.sql  # 역할 상승 차단 + 환자 공유 범위 RPC

실행 (데모)

  • 제품 설명·자동 시나리오: index.html
  • 기관용 AI 도입 상담: index.html도입 상담 버튼
  • 환자용 AI 대화 앱: app.html (로그인 필수)
  • 의사용 무로그인 가상 리포트: doctor.html?demo=1
  • 루트의 자동 시나리오는 Solar AI POST·DB 저장을 호출하지 않아 Solar 토큰과 실데이터를 사용하지 않음.

프로젝트 문서

  • 프로젝트_가치와_근거.md: 정신건강 기술, 환자 자기결정권, 안전한 대화 AI 구조에 대한 공식 근거와 MindHub의 가치.
  • 발표_후_보완내용과_조언요청.md: 발표 이후 보완한 내용과 교수님께 정중하게 조언을 구하는 메시지.
  • 3분_발표_구성안.md: 서비스 가치와 작동 흐름에 집중한 발표 대본.
  • 대화_스타일_가이드.md: 질문형 상담 챗봇이 아닌 의견을 가진 대화 상대를 위한 행동 원칙.
  • 대화_아키텍처_벤치마크.md: OpenAI·Rasa·Microsoft·Woebot 사례를 반영한 대화 시스템 구조.

실제 연동

  1. backend/ 를 Render에 배포 (backend/README_배포.md 참고).
  2. Render 환경변수: UPSTAGE_API_KEY, SOLAR_MODEL, 선택적으로 OPENAI_API_KEY, OPENAI_MODEL.
  3. app.html에서 Supabase 로그인 세션을 확인한 뒤 Bearer 토큰과 함께 Render /chat, /extract 호출.
  4. Solar 실패 시 로컬 폴백으로 대화와 안전 기능 유지.
  5. Supabase는 인증, 구조화 신호 저장, 환자/의사 역할 분리, 공유 범위 강제에 사용. 일반 대화 원문은 기기에만 두고 안전 근거 원문만 클라우드에 저장.
  6. 도입 상담은 기관 유형·목표·규모·우선순위만 받아 초기 파일럿 제안을 생성한다. 입력은 별도로 저장하지 않으며 OpenAI 키가 없으면 규칙 기반 가이드로 동작한다.

로컬 백엔드 실행

cd backend
npm ci
# 앱은 dotenv를 쓰지 않으므로 키는 환경변수로 주입한다
UPSTAGE_API_KEY=발급키 SOLAR_MODEL=solar-pro2 npm start   # http://localhost:3000
# 또는 Node 20.6+: node --env-file=../.env server.js
npm test   # 백엔드 회귀 테스트

키 없이 npm start만 해도 서버는 뜨지만 /chat·/extract는 503을 반환한다(대화 폴백은 프론트가 처리).

배포 (프론트)

  • GitHub Pages: Settings → Pages → Branch main / (root) → 저장.
  • 또는 Cloudflare Pages + 개인 도메인.

안전 설계

  • 위험 키워드(자살 사고 등) 감지는 규칙 기반(프론트) 으로 항상 동작 — API 의존 안 함.
  • 일반 환자는 자신의 역할을 의사로 바꿀 수 없음.
  • 의사 브라우저에는 환자가 비공개로 지정한 필드와 일반 대화 원문을 전송하지 않음.
  • 대화·설정·입력 초안은 데모/로그인 계정별로 브라우저 저장 영역을 분리하고, 지연된 AI 답변도 요청을 보낸 계정의 대화에만 저장.
  • Solar 프록시는 AI POST 요청에 허용 Origin을 필수로 요구하고, 요청 크기·입력 길이, IP별 호출 횟수, 업스트림 타임아웃을 제한.
  • 위험 시: 위로로 덮지 않고 위기 자원(자살예방상담 109) 안내 + 의사에게 우선 확인 신호.
  • 커밋된 Supabase 키는 공개용 anon 키(RLS가 접근을 제어). Upstage·OpenAI·service_role 등 실제 비밀 키는 환경변수에만 두며 저장소에 넣지 않음.
  • 실제 의료 적용 전 별도 동의·의료기관 검토·저장 위치와 로그 정책 검증이 필요함.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages