마지막 업데이트 2026-08-19
목표는 “LogRocket에 흩어진 진행자/아동 로그 + PPI 웹에서 내려받는 S3 병합 로그 + Grafana Loki 서버 로그”를 한 번에 교차 분석해, 영상재생 스텝 자동전환 실패를 재현 가능한 조건·타임라인·의심 코드 라인으로 자동 환원하는 개발 코치형 에이전트를 만드는 것이다.
S3 로깅 업로드 시스템은 단순 보관 기능이 아니라 AI 분석의 1차 데이터 레이크다. 이 위에 Grafana·LogRocket·코드 검증 루프를 얹는다.
| 데이터 | 현재 코드 진입점 | 에이전트가 읽는 신호 |
|---|---|---|
| S3 세션 로그 파트 | use-lesson-log-collector.ts:39-119, use-lesson-log-uploader.ts:48-99 | guest/monitor별 console·logger·전역 error를 NDJSON part로 수집·업로드 |
| 종료 시 final flush | use-lesson-log-uploader.ts:138-166, app/api/lesson-logs/append/route.ts:13-78 | pagehide/visibilitychange 직전의 마지막 로그. keepalive 단발 POST라 누락 리스크도 별도 체크 |
| 병합 아카이브 | lesson-log-merge.ts:59-133, lesson-logs/finalize/route.ts:35-103 | role/sessionId/instanceId/seq를 붙여 timestamp 순서로 정렬된 단일 JSONL |
| PPI 웹 다운로드 | lesson-log-archive-section.tsx:113-124, download-url/route.ts:31-48 | 선택 회기 최신 runDate의 presigned downloadUrl |
| Grafana/Loki | apps/socket/src/sfu-socket/handlers/session-handlers.ts:791-815 등 | Guest video play started, Guest video ended, step update, disconnect, mediasoup producer/consumer |
| 영상 자동전환 클라이언트 | guest-layout-content.tsx:159-164, meet-video.tsx:512-526, video-end-watchdog.ts:141-182 | ended/watchdog/onEnd → notifyVideoEnd + goToNextStep 경로가 실제 호출됐는지 |
Video play/canplay/timeupdate/ended/watchdog와 Notifying video ended, Moving to next step를 찾고, 서버 로그에서 guest-video-end, Guest step update를 찾는다.MeetVideo.handleEnded 미호출, VideoEndWatchdog progressed 조건 미충족, autoTransitionEnabled false/stale.guest-video-end는 있는데 guest-step-update가 없으면 onEnd가 아니라 step sync 문제다.| 로그 패턴 | 판정 | 우선 코드 |
|---|---|---|
Video play/canplay 있음, Video ended/watchdog backstop/guest-video-end 없음 | 게스트 클라이언트 onEnd 미도달 | meet-video.tsx, video-end-watchdog.ts |
Video ended 또는 watchdog backstop 있음, guest-video-end 없음 | notifyVideoEnd/socket uplink 누락 | guest-page-session, socket emit 경로 |
guest-video-end 있음, Moving to next step/guest-step-update 없음 | 자동전환 gate 또는 goToNextStep 문제 | guest-layout-content.tsx:159-164, autoTransition 상태 |
guest-step-update 서버 도달, 진행자만 화면 미변경 | host/monitor 수신·렌더링 문제 | monitor-dashboard/focus-view listener |
| 진행자 수동 전환 후에만 step update | 자동전환 실패 재현 강한 후보 | 게스트 video end → step update 체인 전체 |
guest-video-end와 guest-step-update를 반드시 분리해서 본다.