Skip to content

[bug] 올리브영 조회 전면 실패 및 운영 점검 원인 은폐 (Zyte 중지 후 릴레이 미연결) #189

Closed

Description

@chuuminggg

요약

운영 서버(mcp.aka.page)에서 올리브영 조회가 전부 실패하고, 9/11부터 Health Checks와 External Smoke도 매일 실패하고 있습니다.

원인은 #157과 같습니다. 원본 서버가 Cloudflare Worker 같은 데이터센터에서 오는 요청을 봇으로 보고 막습니다. 다만 #157처럼 Zyte 폴백을 붙이는 방식으로는 지금 복구할 수 없습니다.

  • Zyte를 쓸 수 없습니다. 9/13까지 Zyte 계정이 정지되어 403이 났고(Your account has been suspended), 9/15 커밋 5d96ec5(feat: Zyte 유료 호출 중지와 무료 조회 경로 추가 #185)부터는 requestByZyte()가 항상 비용 정책 오류만 던집니다.
  • 올리브영이 쓸 수 있는 경로가 없습니다. 직접 요청은 403 보안 검증 페이지를 받고, 대체 경로인 브라우저 릴레이는 운영 Worker에 연결되어 있지 않습니다.
  • fix: 편의점 Zyte 폴백과 운영 점검 복구 #157 폴백이 사실상 꺼졌습니다. #157에서 CU·세븐일레븐에 붙인 zyteJsonFallback이 이제 원본 서버의 오류 대신 비용 정책 오류를 던집니다. 그래서 운영 점검에서 실제 원인이 보이지 않습니다.

재현 절차

  1. curl "https://mcp.aka.page/api/oliveyoung/products?keyword=%EB%A6%BD%EB%B0%A4&size=1"
  2. curl https://mcp.aka.page/health를 호출하고 config를 확인합니다.
  3. 최근 Health Checks 실행(예: 35379906516)과 External Smoke 실행(예: 35381196874)의 로그를 확인합니다.

기대 동작

  • 올리브영 상품·매장·재고 조회가 정상 응답해야 합니다.
  • 운영 점검은 실패한 서비스와 실제 원인(원본 서버 차단인지, 비용 정책 때문인지, 설정 누락인지)을 모두 보여줘야 합니다.

실제 동작

올리브영

OLIVEYOUNG_PRODUCT_SEARCH_FAILED: 올리브영 직접 요청 실패. 운영자는 OY_RELAY_URL과 OY_RELAY_TOKEN으로 브라우저 릴레이를 설정해주세요.
  • 이 메시지는 src/services/oliveyoung/transport.ts에서 relayUrl이 없을 때만 나옵니다. 즉 운영 Worker에 OY_RELAY_URL이 설정되어 있지 않습니다.
  • docs/oliveyoung-free-relay.md에 따르면 일반 HTTP와 headless 브라우저는 막히고, 화면이 있는 Chromium만 통과합니다. 따라서 직접 요청은 복구 경로가 될 수 없습니다.
  • .github/workflows/sync-worker-secrets.yml이 OY_RELAY_URL, OY_RELAY_TOKEN, OY_ACCESS_CLIENT_ID, OY_ACCESS_CLIENT_SECRET을 동기화하지 않습니다.
  • 1.2.1에서 릴레이 코드는 배포됐지만 운영 연결(Mac 전용 GUI 계정, Tunnel, Access, DNS, Worker secrets)은 구성되지 않았습니다.
  • 실패 시 쓰는 30분 stale 캐시는 한 번도 성공한 적이 없고 Worker 인스턴스마다 따로 저장되므로 도움이 되지 않습니다.

운영 점검

  • 9/18 Health Checks 결과는 status=fail failed=12 degraded=1입니다. cu.stores, gs25.products, seveneleven.*, cli.contract 체크가 모두 Zyte 유료 호출은 비용 정책에 따라 비활성화되어 있습니다.로 실패합니다.
    • src/utils/zyteJsonFallback.ts는 직접 요청이 400/403/429일 때 Zyte로 넘깁니다. 이제는 그 단계에서 비용 정책 오류가 나면서 원래 HTTP 오류가 가려집니다.
  • .github/workflows/health-checks.yml의 요약이 lines.slice(0, 6)으로 앞의 6개만 보여줘서, 올리브영 실패가 요약과 알림에 드러나지 않습니다.
  • /health는 status: ok를 돌려주지만 config에 올리브영 릴레이 항목이 없습니다(src/api/configStatus.ts). 그래서 설정 누락이 점검에 드러나지 않습니다.
  • External Smoke의 cli.oliveyoung, cli.gs25, cli.seveneleven, mcp.gs25 등이 매일 실패합니다.

환경 정보

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions