# 🧑💻 오늘의 개발하면서 생긴 크고 작은 이슈사항을 기록해주세요 ## 💚 어떤 기능인가요? 공공데이터 연동(#61)으로 시설·정책 데이터가 늘어나면서 기존 조회 방식의 한계가 드러났습니다. 검색·추천·관측을 함께 손봅니다. **위치 검색이 아예 동작하지 않음** — `findWithinRadius` 가 존재하지 않는 테이블 `care_facilities` 를 참조합니다(실제는 `TBL_CARE_FACILITIES`). 게다가 전체 행에 대해 Haversine 을 계산해 인덱스를 타지 못합니다. **키워드 검색이 `LIKE '%키워드%'`** — 선행 와일드카드라 인덱스를 쓸 수 없고, 관련도 정렬도 없습니다. **챗봇이 단일 키워드로만 검색** — 조사가 붙은 채로("어린이집은") 검색해 매칭률이 낮습니다. **개인화 없음** — 자녀 정보를 받아두고도 추천에 쓰지 않습니다. 유치원생 부모에게 신생아 정책이 그대로 노출됩니다. **N+1 을 추측으로 판단 중** — 어느 엔드포인트가 몇 건의 쿼리를 쏘는지 측정할 수단이 없습니다. **동기화 대상에 유치원이 없음** — `FacilityType.KINDERGARTEN` 이 정의돼 있는데 이 값을 채우는 경로가 하나도 없어 유치원 검색은 항상 0건입니다. ## ✅ To Dos - [x] 바운딩 박스로 후보를 좁힌 뒤 거리 계산, 위경도 복합 인덱스 추가(`V4__search_indexes.sql`), 잘못된 테이블 참조 수정 - [x] `MATCH ... AGAINST` 전문 검색 도입 + 짧은 키워드·연산자 문자·미지원 DB 는 LIKE 폴백(`FullTextSearchSupport`) - [x] 챗봇 RAG 다중 키워드(길이 내림차순 3개) + 한국어 조사 제거 - [x] 규칙 기반 개인화 추천 — 자녀 월령 × 대상 연령, 거주지 × 대상 지역, 마감 임박도 점수화, 추천 근거 동봉(`GET /policies/recommendations`) - [x] 요청별 쿼리 수 측정 → 임계치 초과 시 경고(`app.monitoring.query-count.enabled`, 기본 비활성) - [x] `/policies/recommendations`·`/policies/bookmarks` 가 `/policies/*` permitAll 에 걸려 있던 인가 구멍 수정 - [x] 공공데이터 지원대상 자유 텍스트에서 대상 연령을 **개월로 환산**(`AgeRangeParser`) — 동기화 정책이 개인화에서 제외되던 문제 해소 - [x] 전국 유치원 표준데이터 동기화 추가, 고유 코드 없는 데이터셋은 이름+주소 해시로 멱등 보장 - [x] 페이징 수집 절차 공통화(`PagedSyncTemplate`) + 첫 페이지 전건 실패 시 매핑 불일치로 조기 중단 - [x] 여러 줄 주석 한 줄로 정리, `@Operation` description 축약
Activity
PERF : 시설 위치 검색 바운딩 박스 적용 및 잘못된 테이블 참조 수정 (#63)
FEAT : 시설 전문 검색 도입 및 LIKE 폴백 (#63)
FEAT : 챗봇 근거 검색 다중 키워드 및 조사 제거 (#63)
FEAT : 자녀 월령·거주지 기반 정책 개인화 추천 (#63)
FEAT : 요청별 쿼리 수 측정으로 N+1 관측 기반 마련 (#63)
FEAT : 공공데이터 지원대상 텍스트에서 대상 연령 개월 환산 (#63)
REFACTOR : 공공데이터 페이징 수집 공통화 및 매핑 불일치 조기 중단 (#63)
FEAT : 데이터셋 경로 외부화 및 절대 URL 리소스 지원 (#63)
FEAT : 전국 유치원 표준데이터 동기화 추가 (#63)
[-]PERF : 검색 성능·개인화 추천·N+1 관측 고도화[/-][+][ Search ] 검색 성능·개인화 추천·N+1 관측 고도화[/+]PERF : 시설 위치 검색 바운딩 박스 적용 및 잘못된 테이블 참조 수정 (#63)
FEAT : 시설 전문 검색 도입 및 LIKE 폴백 (#63)
FEAT : 챗봇 근거 검색 다중 키워드 및 조사 제거 (#63)
FEAT : 자녀 월령·거주지 기반 정책 개인화 추천 (#63)
FEAT : 요청별 쿼리 수 측정으로 N+1 관측 기반 마련 (#63)
FEAT : 공공데이터 지원대상 텍스트에서 대상 연령 개월 환산 (#63)
REFACTOR : 공공데이터 페이징 수집 공통화 및 매핑 불일치 조기 중단 (#63)
FEAT : 데이터셋 경로 외부화 및 절대 URL 리소스 지원 (#63)
FEAT : 전국 유치원 표준데이터 동기화 추가 (#63)
RosieOh commentedon Aug 4, 2026
PR #62 → PR #60 경유로 main 에 반영되어 종료합니다. (#61 과 동일한 사유로 자동 종료되지 않았습니다)