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