From 728428ce954ed82c7ce32f8f4ff579c4a88db923 Mon Sep 17 00:00:00 2001 From: gahusb Date: Sat, 25 Apr 2026 12:32:37 +0900 Subject: [PATCH] =?UTF-8?q?feat(travel-proxy):=20albums=20API=EC=97=90=20r?= =?UTF-8?q?egion/regionName=20=ED=95=84=EB=93=9C=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 앨범 커버 지정이 프론트에 반영되도록 albums API 응답에 region, regionName 포함. region_map 역인덱스 + GeoJSON name 매핑. Co-Authored-By: Claude Opus 4.6 --- travel-proxy/app/main.py | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/travel-proxy/app/main.py b/travel-proxy/app/main.py index 75a634f..3a8fe1b 100644 --- a/travel-proxy/app/main.py +++ b/travel-proxy/app/main.py @@ -180,12 +180,36 @@ def sync_endpoint(): @app.get("/api/travel/albums") def albums_list(): rows = get_all_albums() + region_map = load_region_map() + + # album → region 역인덱스 + album_to_region = {} + for region_id, v in region_map.items(): + album_list = v if isinstance(v, list) else v.get("albums", []) + for a in album_list: + album_to_region[a] = region_id + + # region → name 매핑 (GeoJSON) + region_names = {} + try: + geojson = load_regions_geojson() + for feat in geojson.get("features", []): + props = feat.get("properties", {}) + rid = props.get("id") + if rid: + region_names[rid] = props.get("name", rid) + except Exception: + pass + result = [] for r in rows: cover = r["cover_filename"] + region_id = album_to_region.get(r["album"], "미분류") result.append({ "album": r["album"], "count": r["count"], + "region": region_id, + "regionName": region_names.get(region_id, region_id), "cover_url": f"{MEDIA_BASE}/{r['album']}/{cover}", "cover_thumb": f"{MEDIA_BASE}/.thumb/{r['album']}/{cover}", })