AI 컨텍스트 로그 대시보드 구현 현황 진행 중

마지막 업데이트 2026-08-04

세션 리플레이는 제외하고, LiveKit/TTS 수업의 AI 컨텍스트를 S3 원본과 DynamoDB 메타데이터로 관리하며 기존 로그 화면에서 조회하는 작업의 현재 상태입니다.

기준 브랜치: feat/ai-context-log-dashboard · 기준 커밋: ba0997cc 이후 작업 트리 변경 포함 · 작성일: 2026-08-04

결정된 구조

수업 런타임LiveKit / TTS
Context API검증·세션 상태
S3actor별 JSONL.gz
DynamoDB세션 목록·포인터

아동·진행자·Agent·서버 이벤트는 하나의 파일에 동시 기록하지 않습니다. actor별 원본 파일로 보관하고, 같은 contextSessionId와 시간축으로 조회·분석에서 통합합니다.

ai-context/session/{contextSessionId}/
  child/events-0001.ndjson.gz
  monitor/events-0001.ndjson.gz
  agent/events-0001.ndjson.gz
  server/events-0001.ndjson.gz

구현 완료·진행 중 항목

영역상태현재 구현
이벤트 계약완료actor, runtime, contextSessionId, 시각·순번·이벤트 유형을 정규화한다. transcript/prompt/text 원문은 저장 계약에서 제외하고 길이만 남긴다.
S3 키·청크 직렬화완료actor별 immutable JSONL gzip 키 생성과 gzip 직렬화 모듈을 추가했다.
DynamoDB 세션 모델진행 중ACTIVE 세션, actor/chunk 포인터, 이벤트 수, 수업·활동 식별자를 저장하는 접근 모듈을 추가했다. 실제 테이블·TTL·lifecycle rule 배포는 별도 인프라 작업이다.
LiveKit 시작연결됨/api/livekit/call이 성공적으로 세션을 발급한 뒤 voiceSessionId를 context session으로 사용해 시작 레코드를 만든다.
TTS 시작·종료미구현TTS 세션 lifecycle의 시작/종료 지점에 같은 context session 생성·완료 처리가 필요하다.
이벤트 실제 적재미구현LiveKit agent 및 TTS API의 lifecycle 이벤트를 배치해 S3 청크로 올리는 ingestion 연결이 필요하다.
대시보드진행 중기존 /main/log수업 로그AI 컨텍스트 탭을 분리했다. AI 탭은 세션 목록과 actor별 원본 다운로드 URL을 제공한다.

현재 데이터 흐름

LiveKit 수업 시작
  → /api/livekit/call 권한·활동 검증
  → voiceSessionId 발급
  → DynamoDB: AI context session = ACTIVE
  → LiveKit 연결 정보 반환

향후 lifecycle 적재
  → Agent / TTS / child / monitor 이벤트 버퍼
  → actor별 S3 JSONL.gz 청크
  → DynamoDB chunk 포인터·eventCount 갱신
  → 수업 종료: COMPLETED + manifest 확정
현재 주의: 시작 레코드만으로는 S3 로그가 자동 업로드되지 않습니다. 실제 이벤트 청크 적재와 정상·비정상 종료 처리를 연결한 뒤에 운영 로그로 사용할 수 있습니다.

검증

다음 구현 순서

  1. LiveKit agent lifecycle event를 내부 ingestion API로 배치 전송한다.
  2. TTS 세션 시작·종료와 TTS API 성공/실패/지연 이벤트를 같은 session에 연결한다.
  3. 종료 시 manifest, COMPLETED/FAILED 상태, actor별 event count를 확정한다.
  4. AI 컨텍스트 탭에 통합 타임라인·세션 상세·통합 export를 추가한다.
  5. 전용 DynamoDB 테이블, GSI, TTL 및 S3 lifecycle·암호화 정책을 인프라에 배포한다.