"""카페24 상품 상세페이지 관리 모듈. 라우터/저장소/순수로직/템플릿을 한 디렉토리에서 관리한다. - 라우터: `router.py` (FastAPI APIRouter, prefix=/cafe24) + `routes_*.py` - 저장소: `db.py` (cafe24_db / PostgreSQL 전용) - 순수 로직: `store.py` (버전/예약 상수, 재시도 규칙, 검증) - 템플릿: `templates/cafe24/` 카페24 API 호출은 이 모듈에 두지 않는다. 향후 주문관리 모듈과 공유하기 위해 `app/integrations/cafe24/` 공통 계층을 쓴다. 데이터 저장은 cafe24_db 전용이다. CAFE24_DB_URL 미설정 시 build_cafe24_store 는 None 을 반환하고, 라우터가 "설정 필요" 안내 페이지를 보여준다(앱은 죽지 않음). """ from typing import Any from . import store from .router import router from .store import ( REVISION_LABELS, REVISION_TYPES, SCHEDULE_STATUS_LABELS, SCHEDULE_STATUSES, ) __all__ = [ "router", "store", "REVISION_TYPES", "REVISION_LABELS", "SCHEDULE_STATUSES", "SCHEDULE_STATUS_LABELS", "build_cafe24_store", ] def build_cafe24_store(*, dsn: str | None) -> Any: """CAFE24_DB_URL 이 있으면 Cafe24Store, 없으면 None. JSON 폴백을 두지 않는다(운영 데이터 분기 방지). None 이면 라우터가 안내 표시. """ if not dsn: return None from .db import Cafe24Store # 지연 import (개발 환경 deps 없을 수 있음) return Cafe24Store(dsn)