apps/audio-analysis/src/config.ts:13-25 | 분석 서비스 admission 기본값: 동시 8, 대기 16, 대기 3초 | 그룹 수업 피크에서 24개 초과 요청이 몰리면 429 가능 |
apps/audio-analysis/src/admission-controller.ts:37-55 | active가 꽉 차면 queue에 넣고, queue가 꽉 차거나 3초 초과 시 reject | queue_full/queue_timeout 재현 조건 |
apps/audio-analysis/src/server.ts:200-209 | AdmissionRejectedError를 429 ANALYSIS_SERVER_BUSY로 변환 | 운영 Loki 429와 코드 경로 일치 |
apps/web/hooks/use-turn-analysis.ts:300-357 | 분석 API 호출 후 !res.ok면 throw. 429 재시도 없음 | 일시 포화에도 해당 턴은 성공 결과로 회복되지 않음 |
apps/web/hooks/use-turn-analysis.ts:408-431 | catch에서 errResult를 만들고 onResult만 호출 | 실패 분석은 onLogData로 저장되지 않음 |
apps/web/lib/audio-correction-alert.ts:16-24 | result.error가 있으면 alert null | 실패 결과는 진행자 오인식 알림으로도 노출되지 않음 |
apps/web/hooks/use-audio-analysis-logger.ts:117-147 | 성공 분석만 type: audio_analysis 세션 로그로 저장 | 실패 원인이 사후 세션 로그에 남지 않는 관측 공백 |
apps/web/lib/audio-analysis/session-log-audio-analysis.ts:9-15 | 분석 로그를 assistant audio 대상에만 병합 | user/no-response 관련 성공 분석은 UI에서 빠질 수 있음 |
apps/web/components/pages/session-log.tsx:121-128 | relatedToLogId가 있는 audio_analysis 독립 행을 숨김 | DB에는 있어도 세션 로그 화면에서는 누락처럼 보임 |