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 사례를 반영한 대화 시스템 구조.
backend/를 Render에 배포 (backend/README_배포.md 참고).- Render 환경변수:
UPSTAGE_API_KEY,SOLAR_MODEL, 선택적으로OPENAI_API_KEY,OPENAI_MODEL. app.html에서 Supabase 로그인 세션을 확인한 뒤 Bearer 토큰과 함께 Render/chat,/extract호출.- Solar 실패 시 로컬 폴백으로 대화와 안전 기능 유지.
- Supabase는 인증, 구조화 신호 저장, 환자/의사 역할 분리, 공유 범위 강제에 사용. 일반 대화 원문은 기기에만 두고 안전 근거 원문만 클라우드에 저장.
- 도입 상담은 기관 유형·목표·규모·우선순위만 받아 초기 파일럿 제안을 생성한다. 입력은 별도로 저장하지 않으며 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등 실제 비밀 키는 환경변수에만 두며 저장소에 넣지 않음. - 실제 의료 적용 전 별도 동의·의료기관 검토·저장 위치와 로그 정책 검증이 필요함.