Update file_api.py
Browse files- file_api.py +21 -6
file_api.py
CHANGED
|
@@ -355,11 +355,27 @@ def fetch_with_cache(category: str = "전체", region: str = "전체(지역)", k
|
|
| 355 |
# 캐시가 비어있으면 API에서 가져오기
|
| 356 |
return fetch_all_from_api(category, region, keyword)
|
| 357 |
|
| 358 |
-
# 키워드 검색 (
|
| 359 |
if keyword and keyword.strip():
|
| 360 |
-
|
| 361 |
-
|
| 362 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 363 |
|
| 364 |
# 필터 적용 (캐시 데이터에서 필터링)
|
| 365 |
filtered = items
|
|
@@ -621,5 +637,4 @@ def fetch_announcement_detail(url: str) -> Tuple[str, List[Dict], Optional[Dict]
|
|
| 621 |
|
| 622 |
except Exception as e:
|
| 623 |
import traceback
|
| 624 |
-
return f"상세 정보 조회 실패: {str(e)}\n{traceback.format_exc()}", [], None
|
| 625 |
-
|
|
|
|
| 355 |
# 캐시가 비어있으면 API에서 가져오기
|
| 356 |
return fetch_all_from_api(category, region, keyword)
|
| 357 |
|
| 358 |
+
# 키워드 검색 (텍스트 매칭 - 한국어 정확도 보장)
|
| 359 |
if keyword and keyword.strip():
|
| 360 |
+
kw = keyword.strip().lower()
|
| 361 |
+
kw_terms = [t.strip() for t in kw.replace(",", " ").split() if t.strip()]
|
| 362 |
+
matched = []
|
| 363 |
+
for item in items:
|
| 364 |
+
# 검색 대상 텍스트 결합
|
| 365 |
+
search_text = " ".join([
|
| 366 |
+
str(item.get("title", "") or item.get("pblancNm", "") or ""),
|
| 367 |
+
str(item.get("description", "") or item.get("bsnsSumryCn", "") or ""),
|
| 368 |
+
str(item.get("author", "") or item.get("jrsdInsttNm", "") or ""),
|
| 369 |
+
str(item.get("lcategory", "") or item.get("pldirSportRealmLclasCodeNm", "") or item.get("category", "") or ""),
|
| 370 |
+
str(item.get("hashTags", "") or ""),
|
| 371 |
+
str(item.get("trgetNm", "") or item.get("target", "") or ""),
|
| 372 |
+
str(item.get("excInsttNm", "") or ""),
|
| 373 |
+
]).lower()
|
| 374 |
+
# 모든 키워드 term이 포함되어야 매칭 (AND 조건)
|
| 375 |
+
if all(t in search_text for t in kw_terms):
|
| 376 |
+
matched.append(item)
|
| 377 |
+
items = matched
|
| 378 |
+
status = f"🔍 '{keyword}' 검색 ({len(items)}건 매칭)"
|
| 379 |
|
| 380 |
# 필터 적용 (캐시 데이터에서 필터링)
|
| 381 |
filtered = items
|
|
|
|
| 637 |
|
| 638 |
except Exception as e:
|
| 639 |
import traceback
|
| 640 |
+
return f"상세 정보 조회 실패: {str(e)}\n{traceback.format_exc()}", [], None
|
|
|