o2o-negosium-original/lps/services/naver_hub/__init__.py
민헌 005ebc3d76 feat(lps): NCP NAVER API HUB 쇼핑 인사이트 클라이언트 추가
네이버가 2026-07-31 검색 오픈API 중 쇼핑·책·전문자료를 종료(유예·대체 없음)해
shop.json 이 404 SE05 를 반환한다. 후속 플랫폼인 NCP NAVER API HUB 를 붙인다.

- NaverApiHubConfig: 게이트웨이 base_url + NCP Client ID/Secret(둘 다 차야 enabled)
- services/naver_hub/client.py: X-NCP-APIGW-API-KEY-ID/KEY 인증, 오류 바디
  3형식(게이트웨이/Search/인사이트)을 NaverApiHubError 로 정규화(auth_failed·retryable)
- services/naver_hub/shopping_insight.py: POST /shopping/v1/categories.
  문서 제약(기간 2017-08-01~, 분야 최대 3개, timeUnit·device·gender·ages)을
  호출 전에 검증하고 카멜케이스 응답을 타입으로 변환
- tests: MockTransport 로 경로·헤더·오류형식 계약 검증 17건 + LPS_LIVE 스모크

주의: 허브에도 쇼핑 '검색'(상품명·가격·판매처)은 없다. 인사이트의 ratio 는
구간 내 최대값 100 기준 상대지표라 최저가 파이프라인 소스로는 쓸 수 없다.
기존 services/search/naver 어댑터는 손대지 않았다(사문화 상태 유지).
2026-08-04 11:23:26 +09:00

32 lines
1.0 KiB
Python

"""NCP NAVER API HUB 클라이언트.
네이버 개발자센터 오픈API 의 후속 플랫폼(2026-06-25 출시). 게이트웨이가 앞단에 있어
인증 헤더·경로·오류 형식이 옛 오픈API 와 다르다 — 자세한 건 client.py 참고.
⚠️ 허브에도 쇼핑 '검색'(상품명·가격·판매처)은 없다. 여기 있는 쇼핑 인사이트는
클릭 추이의 **상대 지표(0~100)** 라 최저가 파이프라인의 소스로는 쓸 수 없다.
"""
from services.naver_hub.client import NaverApiHubClient, NaverApiHubError
from services.naver_hub.shopping_insight import (
ShoppingCategory,
ShoppingInsightClient,
ShoppingInsightResult,
InsightPoint,
InsightSeries,
build_categories_body,
parse_categories_response,
)
__all__ = [
"NaverApiHubClient",
"NaverApiHubError",
"ShoppingInsightClient",
"ShoppingCategory",
"ShoppingInsightResult",
"InsightSeries",
"InsightPoint",
"build_categories_body",
"parse_categories_response",
]