diff --git a/services/insta-render/card_renderer.py b/services/insta-render/card_renderer.py index 98d059f..d53fc62 100644 --- a/services/insta-render/card_renderer.py +++ b/services/insta-render/card_renderer.py @@ -77,11 +77,24 @@ def _env() -> Environment: ) +def _coerce(value, default): + """NAS API는 cover_copy/body_copies/cta_copy를 dict/list로 반환하지만 + 구버전 호환을 위해 JSON 문자열도 처리.""" + if value is None or value == "": + return default + if isinstance(value, str): + try: + return json.loads(value) + except (ValueError, TypeError): + return default + return value + + def _build_pages(slate: dict) -> List[dict]: """slate dict → 10 page specs.""" - cover = json.loads(slate["cover_copy"] or "{}") - bodies = json.loads(slate["body_copies"] or "[]") - cta = json.loads(slate["cta_copy"] or "{}") + cover = _coerce(slate.get("cover_copy"), {}) + bodies = _coerce(slate.get("body_copies"), []) + cta = _coerce(slate.get("cta_copy"), {}) accent = cover.get("accent_color") or "#0F62FE" pages: List[dict] = [] pages.append({