| name | cache-management |
| description | 법령/판례 캐시 데이터 관리 시 사용. 캐시 저장/로드, 만료 처리, 지식 그래프 동기화. 성능 최적화 및 API 호출 최소화를 위해 캐싱 구현 시 참조. |
캐시 관리 가이드
법령, 판례, 위원회결정문 등의 데이터를 캐싱하여 성능을 향상시키고 API 호출을 최소화합니다.
캐시 구조
디렉토리 레이아웃
utils/data/
├── legislation_cache/
│ ├── law_{law_id}/ # 법령 캐시
│ │ ├── metadata.json
│ │ ├── detail.json
│ │ └── articles/
│ ├── precedent_{prec_no}/ # 판례 캐시
│ │ ├── metadata.json
│ │ ├── detail.json
│ │ └── summary.json
│ └── committee_{decision_id}/ # 위원회결정문 캐시
│ ├── metadata.json
│ └── detail.json
└── knowledge_graph/
├── nodes.json
├── edges.json
└── synonyms/
캐시 메타데이터
{
"id": "law_12345",
"type": "law",
"cached_at": "2025-12-31T12:00:00Z",
"expires_at": "2026-01-07T12:00:00Z",
"source": "lawSearch.do",
"version": "1.0"
}
기본 사용법
캐시 확인 후 API 호출
cached = load_legislation_cache(law_id, "law")
if cached:
return cached
result = client.service("law", {"ID": law_id})
if result.get("status") == "000":
save_legislation_cache(law_id, "law", result)
캐시 무효화
- 자동 만료:
expires_at 기준으로 자동 삭제
- 수동 무효화:
invalidate_cache(item_id, item_type)
- 법령 개정 시: 관련 캐시 자동 무효화 권장
유틸리티 스크립트
캐시 정리:
python scripts/cleanup_cache.py [--dry-run]
캐시 통계:
python scripts/cache_stats.py
상세 구현
구현 코드는 implementation.md 참조.
주의사항
- 캐시 디렉토리 권한: 프로젝트 디렉토리에 쓰기 권한 필요
- 캐시 크기 관리: 주기적으로 만료된 캐시 정리
- 지식 그래프 동기화: 캐시 저장 시 그래프도 함께 업데이트
신규 캐시 관리 함수 (2026-04-23 추가)
src/mcp_kr_legislation/utils/legislation_utils.py에 추가됨:
| 함수 | 기능 |
|---|
cleanup_cache(max_age_days, max_size_mb) | 오래된/초과 크기 파일 삭제 |
invalidate_cache(law_id, section) | 특정 법령 캐시 즉시 삭제 |
get_cache_stats() | 파일 수/크기/날짜 통계 |
MCP 도구로도 제공 (search_enhance_tools.py):
get_cache_status() — 상태 조회
cleanup_cache_tool(max_age_days=30) — 정리
invalidate_law_cache(law_id=...) — 무효화
관련 파일
src/mcp_kr_legislation/utils/legislation_utils.py - 실제 구현
src/mcp_kr_legislation/tools/search_enhance_tools.py - MCP 도구
- skills/graph-search/ - 지식 그래프 검색