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:
@@ -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}",
|
||||||
})
|
})
|
||||||
|
|||||||
Reference in New Issue
Block a user