feat(travel-proxy): 신규 폴더 자동 탐색 + region_map 오버라이드 분리

- indexer: travel_root 전체 서브디렉토리 스캔하여 region_map에 없는 폴더도 자동 인덱싱
- RO 원본 대신 RW thumb_root에 region_map_extra.json으로 오버라이드 저장
- regions API: 미분류 지역 동적 추가
- sync 응답에 discovered 필드 추가

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-04-25 12:13:19 +09:00
parent cb6e2d992a
commit 496646fb32
2 changed files with 110 additions and 13 deletions

View File

@@ -10,7 +10,7 @@ from pydantic import BaseModel
from PIL import Image
from .db import init_db, get_photos_by_region, get_all_albums, set_album_cover, mark_thumb_done
from .indexer import sync
from .indexer import sync, _load_region_map_merged
logger = logging.getLogger(__name__)
@@ -49,7 +49,7 @@ def _read_json(path: Path) -> Any:
def load_region_map() -> dict:
return _read_json(REGION_MAP_PATH)
return _load_region_map_merged(REGION_MAP_PATH, THUMB_ROOT)
def load_regions_geojson() -> dict:
@@ -115,7 +115,20 @@ def health():
@app.get("/api/travel/regions")
def regions():
return load_regions_geojson()
geojson = load_regions_geojson()
# 미분류 지역이 region_map에 있으면 GeoJSON에도 동적 추가
region_map = load_region_map()
existing_ids = {
f.get("properties", {}).get("id")
for f in geojson.get("features", [])
}
if "미분류" in region_map and "미분류" not in existing_ids:
geojson.setdefault("features", []).append({
"type": "Feature",
"properties": {"id": "미분류", "name": "미분류"},
"geometry": None,
})
return geojson
@app.get("/api/travel/photos")