You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
실시간 수업 이해도 감지와 강의 분석을 위한 React 프론트엔드입니다.
학생 화면은 표정 기반 분석과 수동 도움 요청을 전송하고, 강사 화면은 실시간 알림을 받아 강의 구간을 기록·요약합니다. 대시보드는 반별 이해도 추이, 키워드, AI 코칭 리포트를 제공합니다.
기술 스택
항목
내용
번들러
Vite 8
프레임워크
React 19
라우팅
React Router DOM 7
HTTP
Axios
WebSocket
@stomp/stompjs, sockjs-client
차트
Recharts
워드클라우드
d3-cloud
아이콘
react-icons
음성 인식
Web Speech API
오디오 입력
MediaRecorder API
핵심 기능
학생 화면
수업 ID와 이름을 입력해 활성 세션에만 입장
웹캠 프레임을 20초마다 캡처하여 AI 분석 요청
3회 연속 confused 감지 시 이해도 이벤트 전송
자동 감지 쿨다운 2분 적용
모르겠어요 버튼으로 수동 도움 요청 전송
세션 종료 또는 비활성 상태 감지 시 자동 안내 및 화면 종료
페이지 이탈 시 학생 퇴장 API 전송
강사 화면
PIN 인증 후 수업 시작
커리큘럼, 반 이름, 감지 기준 퍼센트 설정
활성 학생 수와 최근 confused 이벤트를 기반으로 실시간 이해 어려움 정도 계산
STOMP/SockJS로 실시간 알림 수신
알림 구간 발생 시 Web Speech API로 약 2분간 강의 내용 기록
STT 결과를 요약 API에 보내 AI 요약, 추천 개념, 키워드 생성
알림별 키워드 수정 및 저장
마이크 음소거/해제, 30분 무음 경고 제공
페이지 종료 시 세션 종료 비콘 전송
대시보드
날짜, 커리큘럼, 반 기준 필터링
KPI, 반별 알림 수, 시간대별 이해 어려움 추이 제공
신호 유형 비율 시각화
키워드 워드클라우드 및 키워드별 리포트 조회
알림 이력 상세 조회
AI 코칭 리포트 생성
커리큘럼 생성/삭제 관리
사용자 흐름
flowchart TD
A[학생 홈] --> B[수업 ID 8자리 + 이름 입력]
B --> C{세션 ACTIVE 여부 확인}
C -- 아니오 --> D[입장 차단 및 안내]
C -- 예 --> E[학생 화면 입장]
E --> F[참가자 join API 호출]
F --> G[웹캠 시작]
G --> H[20초마다 프레임 분석]
H --> I{3회 연속 confused?}
I -- 예 --> J[confused 이벤트 전송]
I -- 아니오 --> H
E --> K[모르겠어요 버튼]
K --> L[수동 도움 요청 전송]
J --> M[Spring WebSocket 알림 발행]
L --> M
M --> N[강사 화면 알림 수신]
N --> O{실시간 혼란 비율 >= threshold?}
O -- 아니오 --> N
O -- 예 --> P[STT 2분 기록]
P --> Q[강의 구간 저장]
Q --> R[AI 요약 + 추천 개념 + 키워드 생성]
R --> S[알림 카드/대시보드 반영]
Loading
시스템 구성
flowchart LR
Student[StudentPage\n웹캠 + 수동 요청] -->|REST| Spring[Spring Boot API]
Student -->|REST| FastAPI[FastAPI AI]
Instructor[InstructorPage\nWebSocket + STT + 요약 확인] -->|REST| Spring
Instructor -->|REST| FastAPI
Spring -->|STOMP topic alert by sessionId| Instructor
Dashboard[DashboardPage\n통계/키워드/AI 코칭] -->|REST| Spring
Dashboard -->|REST| FastAPI
Loading
페이지 구성
경로
설명
/
학생 입장 화면. 수업 ID와 이름 입력
/student/:sessionId
학생 실시간 감지 화면
/instructor
강사 실시간 수업 관리 화면
/dashboard
관리자/강사용 대시보드
실행 방법
npm install
cp .env.example .env
npm run dev
개발 서버 기본 주소: http://localhost:5173
PowerShell에서는 cp 대신 Copy-Item .env.example .env 사용 가능