feat(travel-proxy): albums API에 region/regionName 필드 추가

앨범 커버 지정이 프론트에 반영되도록 albums API 응답에
region, regionName 포함. region_map 역인덱스 + GeoJSON name 매핑.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-04-25 12:32:37 +09:00
parent 00a610c374
commit 728428ce95

View File

@@ -180,12 +180,36 @@ def sync_endpoint():
@app.get("/api/travel/albums") @app.get("/api/travel/albums")
def albums_list(): def albums_list():
rows = get_all_albums() 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 = [] result = []
for r in rows: for r in rows:
cover = r["cover_filename"] cover = r["cover_filename"]
region_id = album_to_region.get(r["album"], "미분류")
result.append({ result.append({
"album": r["album"], "album": r["album"],
"count": r["count"], "count": r["count"],
"region": region_id,
"regionName": region_names.get(region_id, region_id),
"cover_url": f"{MEDIA_BASE}/{r['album']}/{cover}", "cover_url": f"{MEDIA_BASE}/{r['album']}/{cover}",
"cover_thumb": f"{MEDIA_BASE}/.thumb/{r['album']}/{cover}", "cover_thumb": f"{MEDIA_BASE}/.thumb/{r['album']}/{cover}",
}) })