그럼 위 내용대로 프로그램쪽에 준비시키면 되는건가? 아니면 다른 것도 해야하니?




네—거의 다 준비됐고, “프로그램(서버) 쪽”에서 아래 체크만 하면 바로 붙일 수 있어요. 필요한 것만 콕 집어 정리할게요.

지금 꼭 준비해야 할 것(필수)

  1. API 서버 기동 + 엔드포인트 고정

  • /captions/process POST로 JSON 수신하도록 동작 확인

  • 로컬에서 curl로 모의 요청 테스트(200 OK 확인)

  1. CORS/네트워크

  • FastAPI에 CORS 미들웨어 적용(POST/OPTIONS 허용)

  • (확장은 background에서 fetch하니 대개 문제 없지만 안전하게 켜두기)

  1. 인증(간단 토큰)

  • 서버: AUTH_TOKEN 환경변수로 Bearer 토큰 검사

  • 확장 팝업: 토큰 저장 → background에서 Authorization: Bearer … 헤더 추가

  1. 구글 시트 쓰기

  • 서비스계정 JSON 준비(환경변수 SHEETS_CREDENTIALS_JSON)

  • 대상 스프레드시트를 서비스계정 이메일에 공유(편집권한)

  • SHEET_ID, SHEET_NAME 환경변수 설정

  • 서버에서 요약행 append 로직 탑재(대본 제외)

  1. 오케스트레이터 연결(선택)

  • 분석/새대본 자동 트리거 원하면 ORCH_URL 세팅 → /captions/process에서 비동기 호출

  1. 로깅/관찰성

  • 요청 ID/비디오ID/응답코드 로그 남기기(실패 사유 120자 프리뷰 정도)

  • 예외는 잡고 200/207로 응답(시트 실패가 전체 흐름을 막지 않게)

  1. 요청 크기 제한

  • 긴 자막 대비 서버 Request body 제한(예: 10–20MB) 명시

  • 너무 큰 경우 413으로 거절 + 확장에서 경고 토스트


권장 추가 준비(있으면 안정성↑)

  • 업서트 정책: 시트에 video_id 중복 시 업데이트가 필요하면 Apps Script Web App로 교체(원하시면 템플릿 드림)

  • 스키마 버전 필드: schema_version: "1.0.0" 추가(향후 필드 확장 용이)

  • 재시도/아이덴포턴시: 서버가 같은 video_id+extracted_at 반복 수신 시 Skip 처리

  • 카테고리 매핑: YouTube API가 주는 categoryId → 한글 카테고리명 맵핑 테이블(옵션)

  • Cloud Run 대비: Dockerfile, PORT=8080, 지역 asia-northeast3, --max-instances/--timeout 설정


최종 진행 순서(추천)

  1. 로컬에서 E2E: 확장(CAP) → http://localhost:8000/captions/process → 시트 Append 확인

  2. 스테이징 Cloud Run 배포: 확장 팝업 엔드포인트를 스테이징 URL로 변경 → 10~20건 실테스트

  3. 문제 없으면 프로덕션 Cloud Run으로 복제 배포 → 확장 엔드포인트만 prod로 교체


짧은 Go/No-Go

  • 위 “필수 7개” 체크 끝났으면 바로 스테이징에 올려 테스트 하셔도 됩니다.

  • 업서트/카테고리명 매핑은 나중에 붙여도 OK.

필요하시면 토큰 입력 UI(팝업) + 서버 토큰검증 코드 스니펫, Apps Script 업서트 버전도 바로 드릴게요.

댓글 남기기