Uh oh!
There was an error while loading. Please reload this page.
FEAT : 공공데이터 연동 확대 및 검색·개인화·관측 고도화 - #62
Conversation
RosieOh
commented
Aug 4, 2026
추가: 심평원 병원정보 연동 (커밋 5개)
구현
주의해서 본 부분심평원 좌표는
검증여전히 확인 필요진료과목 코드 |
RosieOh
commented
Aug 4, 2026
추가 작업 (#63)공공데이터 연동으로 늘어난 데이터를 실제로 쓸 수 있게 검색·추천·관측을 보강했습니다.
부수 수정
테스트: |
RosieOh
commented
Aug 4, 2026
연령 단위 정규화 (#63)개인화 추천을 붙이면서
테스트 10건 추가 ( |
RosieOh
commented
Aug 4, 2026
공공데이터 4번째 소스 + 수집 공통화 (#63)데이터 공백 —
수집 절차 공통화 — 3개 서비스에 복붙돼 있던 페이징·응답 언랩·에러 처리를
엔드포인트:
|
FEAT : 공공데이터 연동 확대 및 검색·개인화·관측 고도화
배경
공공데이터 연동을 점검한 결과 서울시 하나만 실제로 동작하고 나머지는 죽은 코드였습니다. 연동을 넓히고 나니 늘어난 데이터를 조회·추천에 쓰지 못하는 한계가 이어서 드러나, 검색·개인화·관측까지 함께 정리했습니다.
Closes#61
Closes#63
변경 사항
1. 공공데이터 연동 확대 (#61)
PublicDataProvider로 서울 열린데이터광장(경로 파라미터)과 data.go.kr(serviceKey쿼리) 규격 차이 캡슐화Hospital테이블을 채움FacilityType.KINDERGARTEN이 정의만 돼 있고 채우는 경로가 없어 유치원 검색이 항상 0건이던 문제 해소부가 조치 — XML 응답 파서(XXE 차단),
serviceKey이중 인코딩 방지, 데이터셋 경로 프로퍼티 외부화(경로 개편 시 재배포 불필요), 절대 URL 리소스 지원(표준데이터는 호스트가 다름).수집 절차 공통화 — 3개 서비스에 복붙돼 있던 페이징·응답 언랩·에러 처리를
PagedSyncTemplate으로 모으면서 두 가지를 고쳤습니다.skipped분리2. 검색·개인화·관측 (#63)
findWithinRadius가 존재하지 않는 테이블(care_facilities)을 참조해 동작하지 않던 버그 수정. 바운딩 박스로 후보를 좁힌 뒤 거리 계산, 위경도 복합 인덱스 추가MATCH ... AGAINST도입, 짧은 키워드·연산자 문자·미지원 DB 는 LIKE 로 폴백GET /policies/recommendations, 추천 근거 동봉AgeRangeParser)부수 수정 —
/policies/recommendations·/policies/bookmarks가/policies/*permitAll 에 걸려 인증이 강제되지 않던 인가 구멍을 막았습니다.검증
./gradlew build통과 (H2 기반 컨텍스트 로딩 테스트 포함).신규 테스트 —
PagedSyncTemplateTest(9),KindergartenUpsertServiceTest(6),AgeRangeParserTest(10),CareKnowledgeRetrieverTest(5),BoundingBoxTest(3),FullTextSearchSupportTest(4),DataGoKrProviderTest절대 URL(1).남은 확인 사항
데이터셋 오퍼레이션 경로와 응답 필드명은 문서 기준으로 넣었고 실제 호출 검증은 하지 못했습니다(서비스 키 없음). 어긋나면 첫 페이지에서 중단되고 DEBUG 로그에 실제 필드명이 찍히므로,
public.data.resource.*프로퍼티만 고쳐 맞출 수 있습니다.이 PR 의 base 는
feat/RosieOh라 CI 워크플로(pull_request: branches: [main])가 걸리지 않습니다. 중간 PR 도 검증하려면 트리거를[main, 'feat/**']로 넓혀야 합니다.