mirror of
https://github.com/NomaDamas/k-skill.git
synced 2026-06-24 02:04:11 +00:00
월별예약조회 API가 srchDate 단일 일자 요청에도 5일 윈도우를 반환하고, "예비"로 표기된 운영자 보유분이 raw 응답에 포함되며, 같은 객실이 다른 goodsId로 중복 표시되는 세 가지 문제를 한꺼번에 fix한다. 수정: - collect_results 안에 strict useDt gate 추가 (today~last_day 범위 밖 행 차단) - is_reserve_room() helper로 goodsNm에 "예비" 포함 객실 제외 - (forest_id, use_dt, name) 단위 dedup으로 중복 행 제거 - is_available()는 시그니처/로직 변경 없이 booking-state predicate 유지 추가: - foresttrip-vacancy/tests/ 18개 단위 테스트 (mock + fixture 기반) - IsReserveRoomTest, IsAvailableTest, CollectResultsFilterTest, StrictUseDtGateTest, GroundTruthTest 다섯 클래스 - 거제·구재봉 fixture로 사용자 라이브 검증 결과 회귀 보호 - package.json lint·test 스크립트에 등록 문서: - SKILL.md: API 5일 윈도우/예비 객실/중복 dedup 자동 처리 명시 + 회복 시나리오 보강 - docs/features/foresttrip-vacancy.md: 기본 흐름 6단계와 주의할 점 보강 사용자 라이브 검증 ground truth (2026-05-12 기준): - 거제자연휴양림 5/13 ~9개, 5/16 0개, 5/17 19개, 5/23 0개, 5/24 0개 - 구재봉자연휴양림 5/16 1개 (206호 쑥부쟁이방) Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
167 lines
3.8 KiB
JSON
167 lines
3.8 KiB
JSON
[
|
|
{
|
|
"insttId": "ID02030059",
|
|
"insttNm": "거제자연휴양림",
|
|
"useDt": "20260513",
|
|
"dywkDtTpcd": "수",
|
|
"goodsNm": "동백1",
|
|
"goodsId": "GID-A1",
|
|
"insttArea": "50㎡",
|
|
"mxmmAccptCnt": "8",
|
|
"goodsClsscNm": "숲속의집",
|
|
"insttAreaNm": null,
|
|
"wtngPssblYn": "Y",
|
|
"rsrvtAvail": "Y",
|
|
"rsrvtCnt": 0
|
|
},
|
|
{
|
|
"insttId": "ID02030059",
|
|
"insttNm": "거제자연휴양림",
|
|
"useDt": "20260513",
|
|
"dywkDtTpcd": "수",
|
|
"goodsNm": "동백1",
|
|
"goodsId": "GID-A2",
|
|
"insttArea": "50㎡",
|
|
"mxmmAccptCnt": "8",
|
|
"goodsClsscNm": "숲속의집",
|
|
"insttAreaNm": null,
|
|
"wtngPssblYn": "Y",
|
|
"rsrvtAvail": "Y",
|
|
"rsrvtCnt": 0
|
|
},
|
|
{
|
|
"insttId": "ID02030059",
|
|
"insttNm": "거제자연휴양림",
|
|
"useDt": "20260513",
|
|
"dywkDtTpcd": "수",
|
|
"goodsNm": "해송2",
|
|
"goodsId": "GID-B",
|
|
"insttArea": "50㎡",
|
|
"mxmmAccptCnt": "8",
|
|
"goodsClsscNm": "숲속의집",
|
|
"insttAreaNm": null,
|
|
"wtngPssblYn": "Y",
|
|
"rsrvtAvail": "Y",
|
|
"rsrvtCnt": 0
|
|
},
|
|
{
|
|
"insttId": "ID02030059",
|
|
"insttNm": "거제자연휴양림",
|
|
"useDt": "20260513",
|
|
"dywkDtTpcd": "수",
|
|
"goodsNm": "고로쇠1",
|
|
"goodsId": "GID-C",
|
|
"insttArea": "60㎡",
|
|
"mxmmAccptCnt": "10",
|
|
"goodsClsscNm": "숲속의집",
|
|
"insttAreaNm": null,
|
|
"wtngPssblYn": "Y",
|
|
"rsrvtAvail": "Y",
|
|
"rsrvtCnt": 0
|
|
},
|
|
{
|
|
"insttId": "ID02030059",
|
|
"insttNm": "거제자연휴양림",
|
|
"useDt": "20260513",
|
|
"dywkDtTpcd": "수",
|
|
"goodsNm": "(예비) 201호",
|
|
"goodsId": "GID-RES1",
|
|
"insttArea": "32㎡",
|
|
"mxmmAccptCnt": "4",
|
|
"goodsClsscNm": "휴양관",
|
|
"insttAreaNm": null,
|
|
"wtngPssblYn": "Y",
|
|
"rsrvtAvail": "Y",
|
|
"rsrvtCnt": 0
|
|
},
|
|
{
|
|
"insttId": "ID02030059",
|
|
"insttNm": "거제자연휴양림",
|
|
"useDt": "20260514",
|
|
"dywkDtTpcd": "목",
|
|
"goodsNm": "동백3",
|
|
"goodsId": "GID-D",
|
|
"insttArea": "50㎡",
|
|
"mxmmAccptCnt": "8",
|
|
"goodsClsscNm": "숲속의집",
|
|
"insttAreaNm": null,
|
|
"wtngPssblYn": "Y",
|
|
"rsrvtAvail": "Y",
|
|
"rsrvtCnt": 0
|
|
},
|
|
{
|
|
"insttId": "ID02030059",
|
|
"insttNm": "거제자연휴양림",
|
|
"useDt": "20260516",
|
|
"dywkDtTpcd": "토",
|
|
"goodsNm": "동백1",
|
|
"goodsId": "GID-A1",
|
|
"insttArea": "50㎡",
|
|
"mxmmAccptCnt": "8",
|
|
"goodsClsscNm": "숲속의집",
|
|
"insttAreaNm": null,
|
|
"wtngPssblYn": "Y",
|
|
"rsrvtAvail": "Y",
|
|
"rsrvtCnt": 1
|
|
},
|
|
{
|
|
"insttId": "ID02030059",
|
|
"insttNm": "거제자연휴양림",
|
|
"useDt": "20260516",
|
|
"dywkDtTpcd": "토",
|
|
"goodsNm": "해송2",
|
|
"goodsId": "GID-B",
|
|
"insttArea": "50㎡",
|
|
"mxmmAccptCnt": "8",
|
|
"goodsClsscNm": "숲속의집",
|
|
"insttAreaNm": null,
|
|
"wtngPssblYn": "Y",
|
|
"rsrvtAvail": "Y",
|
|
"rsrvtCnt": 1
|
|
},
|
|
{
|
|
"insttId": "ID02030059",
|
|
"insttNm": "거제자연휴양림",
|
|
"useDt": "20260516",
|
|
"dywkDtTpcd": "토",
|
|
"goodsNm": "(예비) 201호",
|
|
"goodsId": "GID-RES1",
|
|
"insttArea": "32㎡",
|
|
"mxmmAccptCnt": "4",
|
|
"goodsClsscNm": "휴양관",
|
|
"insttAreaNm": null,
|
|
"wtngPssblYn": "Y",
|
|
"rsrvtAvail": "Y",
|
|
"rsrvtCnt": 0
|
|
},
|
|
{
|
|
"insttId": "ID02030059",
|
|
"insttNm": "거제자연휴양림",
|
|
"useDt": "20260517",
|
|
"dywkDtTpcd": "일",
|
|
"goodsNm": "중산막2",
|
|
"goodsId": "GID-E",
|
|
"insttArea": "32㎡",
|
|
"mxmmAccptCnt": "4",
|
|
"goodsClsscNm": "숲속의집",
|
|
"insttAreaNm": null,
|
|
"wtngPssblYn": "Y",
|
|
"rsrvtAvail": "Y",
|
|
"rsrvtCnt": 0
|
|
},
|
|
{
|
|
"insttId": "ID02030059",
|
|
"insttNm": "거제자연휴양림",
|
|
"useDt": "20260517",
|
|
"dywkDtTpcd": "일",
|
|
"goodsNm": "동백3",
|
|
"goodsId": "GID-F",
|
|
"insttArea": "50㎡",
|
|
"mxmmAccptCnt": "8",
|
|
"goodsClsscNm": "숲속의집",
|
|
"insttAreaNm": null,
|
|
"wtngPssblYn": "Y",
|
|
"rsrvtAvail": "Y",
|
|
"rsrvtCnt": 0
|
|
}
|
|
]
|