Skip to content

fix(repo): 웹 서비스 테스트에서 발견한 오류 개선 [#100]#109

Merged
baekyutae merged 30 commits into
mainfrom
fix/100-testing-bugfixes
Jul 22, 2026
Merged

fix(repo): 웹 서비스 테스트에서 발견한 오류 개선 [#100]#109
baekyutae merged 30 commits into
mainfrom
fix/100-testing-bugfixes

Conversation

@baekyutae

@baekyutae baekyutae commented Jul 22, 2026

Copy link
Copy Markdown
Collaborator

요약

웹 서비스를 배포하고 실제로 써보면서 발견한 오류들을 정리한다.

문제는 크게 세 갈래였다.

  1. 20분이 넘는 영상이 STT에서 조용히 실패했다
  2. 영상 임베딩이 진행되는 동안 검색이 503으로 실패했다
  3. 무엇이 왜 실패했는지 화면에서 알 수 없었다

세 갈래를 각각 하위 브랜치에서 처리하고 이 브랜치로 통합했다.

이슈 항목별 처리

# 항목 결과 위치
1 다운로드·전처리 실패 사유를 프론트에 표기 해결 #107
3 Chirp 3 단어 단위 타임스탬프에서 20분 초과 영상 실패 해결 #102
4 임베딩 작업 시간이 HTTP 타임아웃보다 길어 실패 해결 #102
5 장시간 대기 후 DB 재연결 실패 해결 #101 (별도 머지)
6 업로드·전처리 완료 상태가 새로고침해야 표시됨 해결 #107
8 임베딩 슬롯이 하나라 검색이 장시간 대기 부분 해결 #108 → 후속 #103
7 YouTube 다운로드 진행도 미표시 이월
9 답변과 무관한 청크가 함께 표시됨 이월
10 프록시를 써도 간헐적 봇 차단 이월

주요 작업 단위

1. STT 장시간 오디오 분할 처리 (#102)

  • Chirp 3에 단어 단위 타임스탬프를 켜면 20분 제한이 걸린다. 파서가 파일별 오류를 검사하지 않아 이를 빈 결과로 인식 청크 0개 → 실패로 이어졌다
  • 20분 초과 오디오를 15분 경계 + 5초 겹침으로 분할하고, 겹치는 구간에 있는 단어는 양쪽 조각(오디오)에서 중복 인식되므로, 겹치는 오디오 시간대 한가운데를 경계선으로 두고 단어의 중간 시각이 속한 쪽만 남겨 중복 없이 병합한다
  • STT가 돌려준 오류를 다시 시도할 것과 그러지 않을 것으로 나눈다. 응답 시간 초과, 요청량 초과, 서버 일시 중단은 다시 시도하고, 20분 초과처럼 요청 자체가 잘못된 경우는 재시도 없이 실패로 확정한다
  • 타임스탬프가 어긋난 단어는 앞뒤 단어 기준으로 보정하고, 두 단어 이상 연속으로 어긋나면 기준이 없으므로 실패 처리
  • 임베딩 호출의 타임아웃과 재시도 정책 보완
  • infra: 컴포넌트별로 이미지 태그를 분리해 frontend 변경이 임베딩 VM 교체까지 전파되던 문제 해결

대안이던 long(V2) 모델은 같은 29분 56초 오디오에서 417.97초가 걸리고 인식 정확도도 낮아
(이산수학계산 수학) 채택하지 않았다. 분할 방식은 106.12초였다.

2. 임베딩 슬롯 경합 완화 (#108)

  • candidate 즉 후보 모델 배포 준비 기간에 후보모델과 현재 서비스중인 모델의 이중 색인을 제거해 영상 1건당 임베딩 호출을 절반으로 줄임=> 후보모델의 색인을 제거, 배포과 완전히 완료된후에만 작동하도록 수정
  • 임베딩 서버에 작업 유형별 대기열을 두고, 슬롯이 반환되면 검색을 영상보다 먼저 선택
  • 청크 크기 축소(300 → 150)도 실험했으나 통신 횟수가 늘어 영상 처리 시간이 19.1% 증가해 원복

3. 실패 사유 저장과 표시 (#107)

  • video 테이블에 failure_code·failure_trace_id 추가. 실패 원인이 로그에만 남고 사라지던 문제 해결
  • 파이프라인 워커 단계별 예외를 실패 코드로 분류하고, 로그와 DB가 같은 trace ID를 사용
  • 워커 실패 시 사유와 문의용 추적 번호를 화면에 표시하고, 실패 단계는 API 응답으로 전달
  • frontend가 API 오류 응답 본문을 보존하고 사용자 문구로 연결
  • 5초 간격 polling으로 상태 전환을 새로고침 없이 반영
  • /complete 재호출로 큐 발행 실패를 복구

검증

  • core-api unit 97 / API 61
  • pipeline-worker unit 139·155, 관련 integration 17
  • search-service 핵심 44, managed-embedding-endpoint 122
  • frontend 136 + lint + production build
  • gcp-perf 배포 후 실제 화면에서 20분 초과 영상 처리, SOURCE_UNAVAILABLE·AUDIO_EXTRACTION_FAILED 표시, 상태 자동 전환 확인

이월 항목

이번 범위에서 처리하지 않았고, 별도 이슈로 옮긴다.

  • 임베딩 슬롯 경합의 완전 해소 (검색 단계 계측과 임베딩 자원 분리 #103) — 우선순위 게이트는 슬롯이 반환될 때만 동작하고 실행 중인 추론을 중단시키지 못한다. 검색용과 배치용 실행 자원 분리가 필요하다
  • YouTube 다운로드 진행도, 무관 청크 표시, 봇 차단 — 사용자 영향이 상대적으로 작아 우선순위를 낮춘다

이슈

Closes #100

baekyutae added 30 commits July 14, 2026 15:11
  - 고립된 역전 단어는 앞뒤 정상 단어를 기준으로 보정합니다.
  - 여러 고립 이상치도 모두 보정합니다.
  - 첫·마지막 단어, 연속 역전, 겹친 인접 경계는 비재시도 오류로 실패합니다.
  - 보정 시 원본값·보정값을 경고 로그로 남깁니다.
  - 보정 불가 시 인접값과 실패 사유를 오류 로그로 남깁니다.
  - 외부 응답 형식은 변경하지 않았습니다.
Fix(pipeline worker ) stt model(chirp3) 20min word time stamp limit 해결  [#100]
fix(repo): 검색과 영상 임베딩의 슬롯 경합을 완화 [#100]
@baekyutae baekyutae self-assigned this Jul 22, 2026
@baekyutae baekyutae linked an issue Jul 22, 2026 that may be closed by this pull request
@sonarqubecloud

Copy link
Copy Markdown

@baekyutae baekyutae changed the title Fix/100 testing bugfixes fix(repo): 웹 서비스 테스트에서 발견한 오류 개선 [#100] Jul 22, 2026
@baekyutae
baekyutae merged commit 53cf4fe into main Jul 22, 2026
6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

웹 테스트 과정에서 발견한 오류 개선

1 participant