k-skill/docs/features
Jeffrey (Dongkyu) Kim 66acdf249a Fix parking lot lookups: force HTTPS, cache full dataset, normalize provider fields
Data.go.kr 이 tn_pubr_prkplce_info_api 를 HTTPS 로만 서비스하고 HTTP 요청은 301 로 리다이렉트하기 때문에 Node fetch 가 `response.ok=false` 로 떨어져 기능이 전체 실패하고 있었다. 이 커밋은 HTTPS 로 직접 호출하도록 수정하면서, 업스트림의 주소/지역 필터가 실제로는 동작하지 않고 페이지당 응답이 1000rows 기준 26s 에 달해 20s fetch timeout 에 꾸준히 걸리던 문제까지 함께 해결한다.

## What changed

- packages/k-skill-proxy/src/parking-lots.js
  - PARKING_LOT_API_URL 을 `http://` → `https://` 로 고정 (root cause).
  - 업스트림 address/geo 필터가 신뢰 불가하므로 full-dataset 을 한 번 로드해 프로세스 메모리에 6시간 TTL 로 캐시하고, 동시 호출자는 in-flight promise 를 공유하도록 한다. nearby 쿼리는 캐시된 행을 좌표 거리로 필터링해 서비스한다.
  - DATASET_PAGE_SIZE=300, fetch timeout 30s 로 페이지당 응답이 20s 를 넘기지 않도록 맞췄다.
- packages/k-skill-proxy/src/server.js
  - 더 이상 의미 없어진 numOfRows / maxPages 쿼리 파라미터를 라우트에서 제거하고, 응답 payload 의 query echo 도 정리했다.
- packages/k-skill-proxy/test/server.test.js
  - 새 캐시 기반 동작을 검증하는 테스트로 교체: (1) full dataset load + 좌표 필터 + 프록시 응답 캐시 재사용, (2) public_only 기본값 및 해제 시 동작, (3) 좌표 검증 실패 400, (4) 업스트림 키 미설정 시 503.
- packages/parking-lot-search/src/index.js
  - OFFICIAL_API_URL 도 HTTPS 로 맞춰 직접 호출 모드 사용자도 같은 버그를 밟지 않게 한다.
- packages/parking-lot-search/src/parse.js
  - 업스트림이 `insttCode` / `insttNm` (camelCase) 를 돌려주는데 parser 가 snake_case (`instt_code`, `instt_nm`) 만 인식해 providerCode/providerName 이 비어 있던 문제를 수정.
- packages/parking-lot-search/test/* 및 fixtures
  - HTTPS URL 매칭으로 업데이트하고, insttCode/insttNm 회귀 테스트를 fixture/assertion 에 추가.
- docs/features/parking-lot-search.md, parking-lot-search/SKILL.md, packages/parking-lot-search/README.md
  - 공식 endpoint 표기를 HTTPS 로 통일.
- .changeset/parking-lot-https-fix.md
  - parking-lot-search 패키지 patch 릴리즈 노트 추가.

## How it was verified

- `npm run ci` (lint + typecheck + tests + pack:dry-run) 통과.
- 로컬에서 실제 `DATA_GO_KR_API_KEY` 로 k-skill-proxy 를 기동해 live 호출 검증:
  - 광화문 (37.573713, 126.978338) cold cache: 30s 내 전체 18,868 rows 로드, 2km 내 47개 공영주차장 반환 (세종로 414m, 서린노외 456m 등).
  - 강남역 (37.497952, 127.027621) warm cache: 31ms 응답, 1.5km 내 13개 반환 (역삼문화공원 380m, 역삼푸른솔도서관 421m 등).
- 업스트림 직접 HTTPS 호출로 `resultCode=00 NORMAL_SERVICE` 정상 동작 확인.
2026-04-22 00:46:04 +09:00
..
blue-ribbon-nearby.md Merge dev into main: new skills & proxy enhancements (#72) 2026-04-06 17:44:23 +09:00
bunjang-search.md Sync dev → main: 84 commits incl. korea-weather, korean-stock-search, korean-patent-search, bunjang-search (#80) 2026-04-08 21:13:55 +09:00
cheap-gas-nearby.md Merge dev into main: new skills & proxy enhancements (#72) 2026-04-06 17:44:23 +09:00
coupang-product-search.md Sync dev → main: MFDS proxy fixes, cache hardening, HWP kordoc, KRX degraded handling + new skills (#152) 2026-04-21 09:53:03 +09:00
daiso-product-search.md Keep Daiso online-stock lookups aligned with live product ids 2026-03-27 19:31:24 +09:00
delivery-tracking.md Document the verified public tracking outputs explicitly 2026-03-27 02:44:48 +09:00
fine-dust-location.md Replace sops+age encryption with plain dotenv and agent-native credential resolution 2026-03-30 22:12:04 +09:00
geeknews-search.md Add a repeatable GeekNews lookup path without unofficial APIs 2026-04-13 00:16:35 +09:00
han-river-water-level.md Merge dev into main: new skills & proxy enhancements (#72) 2026-04-06 17:44:23 +09:00
hipass-receipt.md Sync dev → main: 84 commits incl. korea-weather, korean-stock-search, korean-patent-search, bunjang-search (#80) 2026-04-08 21:13:55 +09:00
hola-poke-yeoksam.md Sync dev → main: scholarship, public restroom, KBL, Hola Poke + HWP/stock proxy upgrades (#136) 2026-04-18 11:50:47 +09:00
household-waste-info.md feat(k-skill-proxy): 생활쓰레기 페이지네이션 검증 및 문서 보강 2026-04-11 03:02:09 +09:00
hwp.md Sync dev → main: scholarship, public restroom, KBL, Hola Poke + HWP/stock proxy upgrades (#136) 2026-04-18 11:50:47 +09:00
joseon-sillok-search.md Merge dev into main: new skills & proxy enhancements (#72) 2026-04-06 17:44:23 +09:00
k-schoollunch-menu.md NEIS 급식·학교검색 프록시, k-schoollunch-menu 스킬 및 문서 2026-04-10 13:14:15 +09:00
k-skill-proxy.md Sync dev → main: MFDS proxy fixes, cache hardening, HWP kordoc, KRX degraded handling + new skills (#152) 2026-04-21 09:53:03 +09:00
kakao-bar-nearby.md Keep Kakao smoke docs aligned with verified live output 2026-03-29 17:05:17 +09:00
kakaotalk-mac.md Sync dev → main: scholarship, public restroom, KBL, Hola Poke + HWP/stock proxy upgrades (#136) 2026-04-18 11:50:47 +09:00
kbl-results.md Sync dev → main: scholarship, public restroom, KBL, Hola Poke + HWP/stock proxy upgrades (#136) 2026-04-18 11:50:47 +09:00
kbo-results.md Prepare k-skill for packaged releases and broader skill discovery 2026-03-25 23:57:53 +09:00
kleague-results.md Add an official K League results client and skill 2026-03-29 15:57:15 +09:00
korea-weather.md Sync dev → main: 84 commits incl. korea-weather, korean-stock-search, korean-patent-search, bunjang-search (#80) 2026-04-08 21:13:55 +09:00
korean-character-count.md Keep published Korean count examples aligned with the shipped helper 2026-04-08 23:57:31 +09:00
korean-law-search.md Release: coupang, korean-law, subway proxy improvements (#43) 2026-04-02 23:59:38 +09:00
korean-patent-search.md Sync dev → main: 84 commits incl. korea-weather, korean-stock-search, korean-patent-search, bunjang-search (#80) 2026-04-08 21:13:55 +09:00
korean-privacy-terms.md Sync dev → main: MFDS proxy fixes, cache hardening, HWP kordoc, KRX degraded handling + new skills (#152) 2026-04-21 09:53:03 +09:00
korean-scholarship-search.md Sync dev → main: scholarship, public restroom, KBL, Hola Poke + HWP/stock proxy upgrades (#136) 2026-04-18 11:50:47 +09:00
korean-spell-check.md Merge dev into main: new skills & proxy enhancements (#72) 2026-04-06 17:44:23 +09:00
korean-stock-search.md Sync dev → main: scholarship, public restroom, KBL, Hola Poke + HWP/stock proxy upgrades (#136) 2026-04-18 11:50:47 +09:00
ktx-booking.md Replace sops+age encryption with plain dotenv and agent-native credential resolution 2026-03-30 22:12:04 +09:00
lck-analytics.md Merge dev into main: new skills & proxy enhancements (#72) 2026-04-06 17:44:23 +09:00
library-book-search.md Sync dev → main: MFDS proxy fixes, cache hardening, HWP kordoc, KRX degraded handling + new skills (#152) 2026-04-21 09:53:03 +09:00
lotto-results.md Prepare k-skill for packaged releases and broader skill discovery 2026-03-25 23:57:53 +09:00
market-kurly-search.md Add a supported Market Kurly price-lookup skill 2026-04-09 14:51:30 +09:00
mfds-drug-safety.md Route MFDS drug-safety and food-safety lookups through k-skill-proxy 2026-04-14 00:07:18 +09:00
mfds-food-safety.md Route MFDS drug-safety and food-safety lookups through k-skill-proxy 2026-04-14 00:07:18 +09:00
naver-blog-research.md feat: 네이버 블로그 리서치 스킬 추가 (#107) 2026-04-13 00:06:18 +09:00
naver-shopping-search.md Sync dev → main: MFDS proxy fixes, cache hardening, HWP kordoc, KRX degraded handling + new skills (#152) 2026-04-21 09:53:03 +09:00
olive-young-search.md Merge dev into main: new skills & proxy enhancements (#72) 2026-04-06 17:44:23 +09:00
parking-lot-search.md Fix parking lot lookups: force HTTPS, cache full dataset, normalize provider fields 2026-04-22 00:46:04 +09:00
public-restroom-nearby.md Sync dev → main: scholarship, public restroom, KBL, Hola Poke + HWP/stock proxy upgrades (#136) 2026-04-18 11:50:47 +09:00
real-estate-search.md Merge dev into main: new skills & proxy enhancements (#72) 2026-04-06 17:44:23 +09:00
seoul-subway-arrival.md Release: coupang, korean-law, subway proxy improvements (#43) 2026-04-02 23:59:38 +09:00
srt-booking.md Replace sops+age encryption with plain dotenv and agent-native credential resolution 2026-03-30 22:12:04 +09:00
subway-lost-property.md Keep LOST112 curl guidance usable under live latency 2026-04-10 13:01:01 +09:00
toss-securities.md Add a safe Toss Securities lookup surface without trading mutations 2026-03-30 11:25:43 +09:00
used-car-price-search.md Release: coupang, korean-law, subway proxy improvements (#43) 2026-04-02 23:59:38 +09:00
zipcode-search.md Document direct zipcode helper execution so the executable follow-up stays discoverable 2026-04-10 10:59:22 +09:00