diff --git a/.env.example b/.env.example index ea3cd4e..af7a2c0 100644 --- a/.env.example +++ b/.env.example @@ -22,11 +22,10 @@ SEOUL_DATA_API_KEY= # --- 네이버 (장소 메타데이터 보강) --- NAVER_API_KEY= -# --- Neo4j (지식그래프 / 선택) --- -NEO4J_URI= -NEO4J_USERNAME= -NEO4J_PASSWORD= -NEO4J_DATABASE=neo4j - # --- 캐시 (선택) --- REDIS_URL= + +# --- API 운영 보호 --- +ENVIRONMENT=development +API_AUTH_TOKEN= +CORS_ALLOWED_ORIGINS=http://localhost:8000,http://127.0.0.1:8000 diff --git a/.impeccable/critique/2026-05-30T06-32-37Z__src-api-static-index-html.md b/.impeccable/critique/2026-05-30T06-32-37Z__src-api-static-index-html.md index ea43695..eb13e93 100644 --- a/.impeccable/critique/2026-05-30T06-32-37Z__src-api-static-index-html.md +++ b/.impeccable/critique/2026-05-30T06-32-37Z__src-api-static-index-html.md @@ -1,3 +1,4 @@ + --- target: src/api/static/index.html total_score: 28 diff --git a/.impeccable/critique/2026-05-30T06-43-35Z__src-api-static-index-html.md b/.impeccable/critique/2026-05-30T06-43-35Z__src-api-static-index-html.md index 686adce..46fac16 100644 --- a/.impeccable/critique/2026-05-30T06-43-35Z__src-api-static-index-html.md +++ b/.impeccable/critique/2026-05-30T06-43-35Z__src-api-static-index-html.md @@ -1,3 +1,4 @@ + --- target: src/api/static/index.html total_score: 31 diff --git a/.impeccable/critique/2026-06-09T16-23-22Z__src-api-static-index-html.md b/.impeccable/critique/2026-06-09T16-23-22Z__src-api-static-index-html.md index be1e351..686f97d 100644 --- a/.impeccable/critique/2026-06-09T16-23-22Z__src-api-static-index-html.md +++ b/.impeccable/critique/2026-06-09T16-23-22Z__src-api-static-index-html.md @@ -1,3 +1,4 @@ + --- target: src/api/static/index.html total_score: 28 diff --git a/.impeccable/critique/2026-06-09T16-52-59Z__src-api-static-index-html.md b/.impeccable/critique/2026-06-09T16-52-59Z__src-api-static-index-html.md index a278c27..8515a7d 100644 --- a/.impeccable/critique/2026-06-09T16-52-59Z__src-api-static-index-html.md +++ b/.impeccable/critique/2026-06-09T16-52-59Z__src-api-static-index-html.md @@ -1,3 +1,4 @@ + --- target: src/api/static/index.html total_score: 31 diff --git a/AGENTS.md b/AGENTS.md index 79c0466..c94a7e2 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -1,4 +1,4 @@ - + # 프로젝트: Explainable Travel Plan Validator ## 기술 스택 diff --git a/CLAUDE.md b/CLAUDE.md index 536b75a..60410c8 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -1,4 +1,4 @@ - + # 프로젝트: Explainable Travel Plan Validator ## 기술 스택 diff --git a/GEMINI.md b/GEMINI.md index 67a94da..ab11ba4 100644 --- a/GEMINI.md +++ b/GEMINI.md @@ -1,4 +1,4 @@ - + # GEMINI — 시니어 엔지니어 검토자 역할 정의 ## 역할 diff --git a/PRODUCT.md b/PRODUCT.md index 9f9f924..f5a8687 100644 --- a/PRODUCT.md +++ b/PRODUCT.md @@ -1,3 +1,4 @@ + # Product ## Register diff --git a/README.md b/README.md index 2e42a5e..51143a5 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ - + # 관광 일정 QA 엔진 — Explainable Travel Plan Validator diff --git a/SUMMARY.md b/SUMMARY.md index 7f5739b..b220020 100644 --- a/SUMMARY.md +++ b/SUMMARY.md @@ -1,4 +1,4 @@ - + 0. 실증 분석 근거 — "왜 이 시스템이 필요한가" diff --git a/api.md b/api.md index b44ddb3..0d59861 100644 --- a/api.md +++ b/api.md @@ -1,3 +1,4 @@ + # API 테스트 스니펫 API 키는 `.env`에서 읽는다. 실행 전 `pip install python-dotenv requests` 필요. diff --git a/data_construct.md b/data_construct.md index dee3323..f081486 100644 --- a/data_construct.md +++ b/data_construct.md @@ -1,4 +1,4 @@ - + # 제주 Place 지식그래프 스키마 (Head - Relation - Tail) diff --git a/docs/ADR.md b/docs/ADR.md index 94038f0..a620d7b 100644 --- a/docs/ADR.md +++ b/docs/ADR.md @@ -1,4 +1,4 @@ - + # Architecture Decision Records ## 철학 diff --git a/docs/ARCHITECTURE.md b/docs/ARCHITECTURE.md index 291408a..6945ee6 100644 --- a/docs/ARCHITECTURE.md +++ b/docs/ARCHITECTURE.md @@ -1,4 +1,4 @@ - + # 아키텍처 ## 시스템 흐름 @@ -49,7 +49,7 @@ src/ │ └── orchestrator.py # 전체 파이프라인 오케스트레이터 └── api/ ├── main.py # FastAPI app + lifespan - ├── routes.py # /validate, /repair/{plan_id}, /health + ├── router.py # /api/validate, /api/places, /health └── schemas.py # ValidateRequest, ValidateResponse Pydantic 스키마 tests/ ├── test_cluster_dispersion.py # M1-M4 밀집도 7개 테스트 diff --git a/docs/DATA_COLLECTION.md b/docs/DATA_COLLECTION.md index 3474186..259ea6e 100644 --- a/docs/DATA_COLLECTION.md +++ b/docs/DATA_COLLECTION.md @@ -1,4 +1,4 @@ - + # 데이터 파이프라인 가이드 본 시스템은 두 개의 외부 API를 데이터 소스로 사용한다: diff --git a/docs/ENHANCEMENT_PLAN.md b/docs/ENHANCEMENT_PLAN.md index 649db70..4a93404 100644 --- a/docs/ENHANCEMENT_PLAN.md +++ b/docs/ENHANCEMENT_PLAN.md @@ -1,4 +1,4 @@ - + # 패널티 통합 설계서 (Enhancement Plan v2) > "**진짜 갈 수 있는 길인가**"(현실 제약) + "**얼마나 좋은 경로인가**"(품질 평가) — 6개 패널티 요구사항을 VRPTW 엔진(이미 구현)과 3개 신규 scoring 모듈로 분담 처리. diff --git a/docs/PRD.md b/docs/PRD.md index 1f871aa..ea2d206 100644 --- a/docs/PRD.md +++ b/docs/PRD.md @@ -1,4 +1,4 @@ - + # PRD: Explainable Travel Plan Validator ## 목표 @@ -14,9 +14,9 @@ ## 핵심 기능 -1. **일정 검증** (`POST /validate`): 여행 일정 입력 → Hard Fail/Warning 탐지 → 점수 + 설명 보고서 -2. **수정 제안** (`GET /repair/{plan_id}`): 검증 결과 기반 제약 수정(Repair) 제안 반환 -3. **REST API**: FastAPI `/validate`, `/repair/{plan_id}`, `/health` 엔드포인트 +1. **일정 검증** (`POST /api/validate`): 여행 일정 입력 → Hard Fail/Warning 탐지 → 점수 + 설명 보고서 +2. **수정 제안**: 검증 응답의 `repair_suggestions` 필드로 즉시 반환 +3. **REST API**: FastAPI `/api/validate`, `/api/places`, `/health` 엔드포인트 ## 검증 프레임워크 @@ -118,7 +118,7 @@ Hard Fail 존재 시: Final Score = min(계산값, 59) ### Story 2 — 수정 제안 요청자 > "검증 결과에서 비효율적인 동선이 있었다. 자동 수정 제안을 받고 싶다." -- `GET /repair/{plan_id}` 로 Repair 제안 수신 +- `POST /api/validate` 응답의 `repair_suggestions`로 Repair 제안 수신 - 우선순위: Hard Fail 제거 → 재방문 제거 → 일정 과밀 완화 → 효율 개선 ### Story 3 — B2B 여행 플랫폼 diff --git a/docs/UI_GUIDE.md b/docs/UI_GUIDE.md index 66242ec..98826fe 100644 --- a/docs/UI_GUIDE.md +++ b/docs/UI_GUIDE.md @@ -1,4 +1,4 @@ - + # API 설계 가이드 ## 설계 원칙 @@ -98,7 +98,7 @@ --- -### GET /repair/{plan_id} +### Repair 제안 검증된 일정의 Repair 제안 반환. **Response** (200) @@ -168,4 +168,4 @@ | 에러를 500으로 퉁치기 | 클라이언트가 원인 알 수 없음. 구체적 4xx/5xx 사용 | | `time.sleep()` in async 함수 | `asyncio.sleep()` 사용 | | 전역 변수에 연결 객체 저장 | FastAPI lifespan + dependency injection 사용 | -| plan_id 없이 수정 제안 반환 | /repair는 항상 /validate 이후에 호출됨. plan_id 필수 | +| 수정 제안 반환 | POST /api/validate 응답의 repair_suggestions에서 반환한다. 별도 /repair 호출은 제공하지 않는다. | diff --git a/graphify-out/.graphify_detect.json b/graphify-out/.graphify_detect.json new file mode 100644 index 0000000..a0eba82 --- /dev/null +++ b/graphify-out/.graphify_detect.json @@ -0,0 +1 @@ +{"files": {"code": ["/Users/baiohelseu/Desktop/Project/Travel-QA/.codex/hooks.json", "/Users/baiohelseu/Desktop/Project/Travel-QA/data/barrier_free_places.json", "/Users/baiohelseu/Desktop/Project/Travel-QA/data/jeju_hours.json", "/Users/baiohelseu/Desktop/Project/Travel-QA/data/naver/naver_metadata.json", "/Users/baiohelseu/Desktop/Project/Travel-QA/data/naver/naver_progress.json", "/Users/baiohelseu/Desktop/Project/Travel-QA/data/supabase_migration_congestion.sql", "/Users/baiohelseu/Desktop/Project/Travel-QA/data/wellness_places.json", "/Users/baiohelseu/Desktop/Project/Travel-QA/gun/data/kakao_route_cache.json", "/Users/baiohelseu/Desktop/Project/Travel-QA/gun/scripts/build_hours_db.py", "/Users/baiohelseu/Desktop/Project/Travel-QA/gun/scripts/build_itinerary_excel.py", "/Users/baiohelseu/Desktop/Project/Travel-QA/gun/scripts/build_ppt.js", "/Users/baiohelseu/Desktop/Project/Travel-QA/gun/scripts/build_travel_matrix.py", "/Users/baiohelseu/Desktop/Project/Travel-QA/gun/scripts/create_input_template.py", "/Users/baiohelseu/Desktop/Project/Travel-QA/gun/scripts/curated_itineraries.py", "/Users/baiohelseu/Desktop/Project/Travel-QA/gun/scripts/fetch_google_hours.py", "/Users/baiohelseu/Desktop/Project/Travel-QA/gun/scripts/fetch_tourapi_to_csv.py", "/Users/baiohelseu/Desktop/Project/Travel-QA/gun/scripts/inspect_json.py", "/Users/baiohelseu/Desktop/Project/Travel-QA/gun/scripts/preprocess_pois.py", "/Users/baiohelseu/Desktop/Project/Travel-QA/gun/scripts/setup_and_test.py", "/Users/baiohelseu/Desktop/Project/Travel-QA/gun/src/__init__.py", "/Users/baiohelseu/Desktop/Project/Travel-QA/gun/src/validation/__init__.py", "/Users/baiohelseu/Desktop/Project/Travel-QA/gun/tests/__init__.py", "/Users/baiohelseu/Desktop/Project/Travel-QA/package.json", "/Users/baiohelseu/Desktop/Project/Travel-QA/phases/0-setup/analysis_result.json", "/Users/baiohelseu/Desktop/Project/Travel-QA/phases/0-setup/analyze.py", "/Users/baiohelseu/Desktop/Project/Travel-QA/phases/0-setup/analyze_triple.py", "/Users/baiohelseu/Desktop/Project/Travel-QA/phases/0-setup/cache_route.json", "/Users/baiohelseu/Desktop/Project/Travel-QA/phases/0-setup/index.json", "/Users/baiohelseu/Desktop/Project/Travel-QA/phases/0-setup/statistical_report.json", "/Users/baiohelseu/Desktop/Project/Travel-QA/phases/0-setup/statistical_report.py", "/Users/baiohelseu/Desktop/Project/Travel-QA/phases/0-setup/triple_analysis_result.json", "/Users/baiohelseu/Desktop/Project/Travel-QA/phases/0-setup/visualize.py", "/Users/baiohelseu/Desktop/Project/Travel-QA/phases/0-setup/visualize_combined.py", "/Users/baiohelseu/Desktop/Project/Travel-QA/phases/1-data/index.json", "/Users/baiohelseu/Desktop/Project/Travel-QA/phases/2-matrix/index.json", "/Users/baiohelseu/Desktop/Project/Travel-QA/phases/3-graph/index.json", "/Users/baiohelseu/Desktop/Project/Travel-QA/phases/4-validation/index.json", "/Users/baiohelseu/Desktop/Project/Travel-QA/phases/5-explain/index.json", "/Users/baiohelseu/Desktop/Project/Travel-QA/phases/6-api/index.json", "/Users/baiohelseu/Desktop/Project/Travel-QA/phases/index.json", "/Users/baiohelseu/Desktop/Project/Travel-QA/pyproject.toml", "/Users/baiohelseu/Desktop/Project/Travel-QA/scripts/build_knowledge_graph.py", "/Users/baiohelseu/Desktop/Project/Travel-QA/scripts/build_poi_dataset.py", "/Users/baiohelseu/Desktop/Project/Travel-QA/scripts/collect_naver_full.py", "/Users/baiohelseu/Desktop/Project/Travel-QA/scripts/collect_naver_metadata.py", "/Users/baiohelseu/Desktop/Project/Travel-QA/scripts/collect_naver_only.py", "/Users/baiohelseu/Desktop/Project/Travel-QA/scripts/demo_live_e2e.py", "/Users/baiohelseu/Desktop/Project/Travel-QA/scripts/execute.py", "/Users/baiohelseu/Desktop/Project/Travel-QA/scripts/extract_visitor_stats.py", "/Users/baiohelseu/Desktop/Project/Travel-QA/scripts/fetch_jeju_hours.py", "/Users/baiohelseu/Desktop/Project/Travel-QA/scripts/fetch_missing_pois.py", "/Users/baiohelseu/Desktop/Project/Travel-QA/scripts/geocode_jeju_missing_coords.py", "/Users/baiohelseu/Desktop/Project/Travel-QA/scripts/load_knowledge_graph_neo4j.py", "/Users/baiohelseu/Desktop/Project/Travel-QA/scripts/neo4j_coverage_analysis.py", "/Users/baiohelseu/Desktop/Project/Travel-QA/scripts/test_execute.py", "/Users/baiohelseu/Desktop/Project/Travel-QA/scripts/test_pipeline.py", "/Users/baiohelseu/Desktop/Project/Travel-QA/src/__init__.py", "/Users/baiohelseu/Desktop/Project/Travel-QA/src/api/__init__.py", "/Users/baiohelseu/Desktop/Project/Travel-QA/src/api/main.py", "/Users/baiohelseu/Desktop/Project/Travel-QA/src/api/router.py", "/Users/baiohelseu/Desktop/Project/Travel-QA/src/api/schemas.py", "/Users/baiohelseu/Desktop/Project/Travel-QA/src/api/static/manifest.json", "/Users/baiohelseu/Desktop/Project/Travel-QA/src/api/static/service-worker.js", "/Users/baiohelseu/Desktop/Project/Travel-QA/src/data/__init__.py", "/Users/baiohelseu/Desktop/Project/Travel-QA/src/data/barrier_free_api.py", "/Users/baiohelseu/Desktop/Project/Travel-QA/src/data/dwell_db.py", "/Users/baiohelseu/Desktop/Project/Travel-QA/src/data/graph_retriever.py", "/Users/baiohelseu/Desktop/Project/Travel-QA/src/data/hours_db.py", "/Users/baiohelseu/Desktop/Project/Travel-QA/src/data/kakao_local.py", "/Users/baiohelseu/Desktop/Project/Travel-QA/src/data/models.py", "/Users/baiohelseu/Desktop/Project/Travel-QA/src/data/party_config.py", "/Users/baiohelseu/Desktop/Project/Travel-QA/src/data/region_config.py", "/Users/baiohelseu/Desktop/Project/Travel-QA/src/data/restaurant_catalog.py", "/Users/baiohelseu/Desktop/Project/Travel-QA/src/data/seoul_citydata_client.py", "/Users/baiohelseu/Desktop/Project/Travel-QA/src/data/theme_taxonomy.py", "/Users/baiohelseu/Desktop/Project/Travel-QA/src/data/tour_api.py", "/Users/baiohelseu/Desktop/Project/Travel-QA/src/data/wellness_api.py", "/Users/baiohelseu/Desktop/Project/Travel-QA/src/explain/__init__.py", "/Users/baiohelseu/Desktop/Project/Travel-QA/src/explain/explain_engine.py", "/Users/baiohelseu/Desktop/Project/Travel-QA/src/explain/pipeline.py", "/Users/baiohelseu/Desktop/Project/Travel-QA/src/explain/plan_extractor.py", "/Users/baiohelseu/Desktop/Project/Travel-QA/src/explain/repair.py", "/Users/baiohelseu/Desktop/Project/Travel-QA/src/matrix/__init__.py", "/Users/baiohelseu/Desktop/Project/Travel-QA/src/matrix/redis_matrix.py", "/Users/baiohelseu/Desktop/Project/Travel-QA/src/scoring/__init__.py", "/Users/baiohelseu/Desktop/Project/Travel-QA/src/scoring/bonus_engine.py", "/Users/baiohelseu/Desktop/Project/Travel-QA/src/scoring/cluster_dispersion.py", "/Users/baiohelseu/Desktop/Project/Travel-QA/src/scoring/congestion_engine.py", "/Users/baiohelseu/Desktop/Project/Travel-QA/src/scoring/reward_engine.py", "/Users/baiohelseu/Desktop/Project/Travel-QA/src/scoring/theme_alignment.py", "/Users/baiohelseu/Desktop/Project/Travel-QA/src/scoring/travel_ratio.py", "/Users/baiohelseu/Desktop/Project/Travel-QA/src/utils/__init__.py", "/Users/baiohelseu/Desktop/Project/Travel-QA/src/utils/geo.py", "/Users/baiohelseu/Desktop/Project/Travel-QA/src/validation/__init__.py", "/Users/baiohelseu/Desktop/Project/Travel-QA/src/validation/alternatives.py", "/Users/baiohelseu/Desktop/Project/Travel-QA/src/validation/hard_fail.py", "/Users/baiohelseu/Desktop/Project/Travel-QA/src/validation/kakao_matrix.py", "/Users/baiohelseu/Desktop/Project/Travel-QA/src/validation/scoring.py", "/Users/baiohelseu/Desktop/Project/Travel-QA/src/validation/vrptw_engine.py", "/Users/baiohelseu/Desktop/Project/Travel-QA/src/validation/warning.py", "/Users/baiohelseu/Desktop/Project/Travel-QA/tests/__init__.py", "/Users/baiohelseu/Desktop/Project/Travel-QA/tests/conftest.py", "/Users/baiohelseu/Desktop/Project/Travel-QA/tests/test_alternatives.py", "/Users/baiohelseu/Desktop/Project/Travel-QA/tests/test_bonus_engine.py", "/Users/baiohelseu/Desktop/Project/Travel-QA/tests/test_cluster_dispersion.py", "/Users/baiohelseu/Desktop/Project/Travel-QA/tests/test_congestion_engine.py", "/Users/baiohelseu/Desktop/Project/Travel-QA/tests/test_dwell_db.py", "/Users/baiohelseu/Desktop/Project/Travel-QA/tests/test_estimated_hardfail.py", "/Users/baiohelseu/Desktop/Project/Travel-QA/tests/test_explain_engine.py", "/Users/baiohelseu/Desktop/Project/Travel-QA/tests/test_geo.py", "/Users/baiohelseu/Desktop/Project/Travel-QA/tests/test_graph_retriever.py", "/Users/baiohelseu/Desktop/Project/Travel-QA/tests/test_hard_fail.py", "/Users/baiohelseu/Desktop/Project/Travel-QA/tests/test_kakao_local.py", "/Users/baiohelseu/Desktop/Project/Travel-QA/tests/test_kakao_matrix.py", "/Users/baiohelseu/Desktop/Project/Travel-QA/tests/test_party_config.py", "/Users/baiohelseu/Desktop/Project/Travel-QA/tests/test_pipeline_orchestrator.py", "/Users/baiohelseu/Desktop/Project/Travel-QA/tests/test_plan_extractor.py", "/Users/baiohelseu/Desktop/Project/Travel-QA/tests/test_region_config.py", "/Users/baiohelseu/Desktop/Project/Travel-QA/tests/test_repair.py", "/Users/baiohelseu/Desktop/Project/Travel-QA/tests/test_resolve_poi.py", "/Users/baiohelseu/Desktop/Project/Travel-QA/tests/test_restaurant_catalog.py", "/Users/baiohelseu/Desktop/Project/Travel-QA/tests/test_reward_engine.py", "/Users/baiohelseu/Desktop/Project/Travel-QA/tests/test_scoring.py", "/Users/baiohelseu/Desktop/Project/Travel-QA/tests/test_theme_alignment.py", "/Users/baiohelseu/Desktop/Project/Travel-QA/tests/test_theme_taxonomy.py", "/Users/baiohelseu/Desktop/Project/Travel-QA/tests/test_travel_ratio.py", "/Users/baiohelseu/Desktop/Project/Travel-QA/tests/test_vrptw_engine.py", "/Users/baiohelseu/Desktop/Project/Travel-QA/tests/test_warning.py"], "document": ["/Users/baiohelseu/Desktop/Project/Travel-QA/.github/workflows/ci.yml", "/Users/baiohelseu/Desktop/Project/Travel-QA/.impeccable/critique/2026-05-30T06-32-37Z__src-api-static-index-html.md", "/Users/baiohelseu/Desktop/Project/Travel-QA/.impeccable/critique/2026-05-30T06-43-35Z__src-api-static-index-html.md", "/Users/baiohelseu/Desktop/Project/Travel-QA/.impeccable/critique/2026-06-09T16-23-22Z__src-api-static-index-html.md", "/Users/baiohelseu/Desktop/Project/Travel-QA/.impeccable/critique/2026-06-09T16-52-59Z__src-api-static-index-html.md", "/Users/baiohelseu/Desktop/Project/Travel-QA/.serena/project.yml", "/Users/baiohelseu/Desktop/Project/Travel-QA/AGENTS.md", "/Users/baiohelseu/Desktop/Project/Travel-QA/CLAUDE.md", "/Users/baiohelseu/Desktop/Project/Travel-QA/GEMINI.md", "/Users/baiohelseu/Desktop/Project/Travel-QA/PRODUCT.md", "/Users/baiohelseu/Desktop/Project/Travel-QA/README.md", "/Users/baiohelseu/Desktop/Project/Travel-QA/SUMMARY.md", "/Users/baiohelseu/Desktop/Project/Travel-QA/api.md", "/Users/baiohelseu/Desktop/Project/Travel-QA/data_construct.md", "/Users/baiohelseu/Desktop/Project/Travel-QA/docker-compose.yml", "/Users/baiohelseu/Desktop/Project/Travel-QA/docs/ADR.md", "/Users/baiohelseu/Desktop/Project/Travel-QA/docs/ARCHITECTURE.md", "/Users/baiohelseu/Desktop/Project/Travel-QA/docs/DATA_COLLECTION.md", "/Users/baiohelseu/Desktop/Project/Travel-QA/docs/ENHANCEMENT_PLAN.md", "/Users/baiohelseu/Desktop/Project/Travel-QA/docs/PRD.md", "/Users/baiohelseu/Desktop/Project/Travel-QA/docs/UI_GUIDE.md", "/Users/baiohelseu/Desktop/Project/Travel-QA/gun/docs/COLLECTION_GUIDE.md", "/Users/baiohelseu/Desktop/Project/Travel-QA/gun/docs/DESIGN_RECONCILIATION.md", "/Users/baiohelseu/Desktop/Project/Travel-QA/gun/docs/README.md", "/Users/baiohelseu/Desktop/Project/Travel-QA/phases/0-setup/step0.md", "/Users/baiohelseu/Desktop/Project/Travel-QA/phases/0-setup/step1.md", "/Users/baiohelseu/Desktop/Project/Travel-QA/phases/1-data/step0.md", "/Users/baiohelseu/Desktop/Project/Travel-QA/phases/1-data/step1.md", "/Users/baiohelseu/Desktop/Project/Travel-QA/phases/1-data/step2.md", "/Users/baiohelseu/Desktop/Project/Travel-QA/phases/1-data/step3.md", "/Users/baiohelseu/Desktop/Project/Travel-QA/phases/2-matrix/step0.md", "/Users/baiohelseu/Desktop/Project/Travel-QA/phases/3-graph/step0.md", "/Users/baiohelseu/Desktop/Project/Travel-QA/phases/3-graph/step1.md", "/Users/baiohelseu/Desktop/Project/Travel-QA/phases/3-graph/step2.md", "/Users/baiohelseu/Desktop/Project/Travel-QA/phases/4-validation/step0.md", "/Users/baiohelseu/Desktop/Project/Travel-QA/phases/4-validation/step1.md", "/Users/baiohelseu/Desktop/Project/Travel-QA/phases/4-validation/step2.md", "/Users/baiohelseu/Desktop/Project/Travel-QA/phases/5-explain/step0.md", "/Users/baiohelseu/Desktop/Project/Travel-QA/phases/5-explain/step1.md", "/Users/baiohelseu/Desktop/Project/Travel-QA/phases/5-explain/step2.md", "/Users/baiohelseu/Desktop/Project/Travel-QA/phases/6-api/step0.md", "/Users/baiohelseu/Desktop/Project/Travel-QA/phases/6-api/step1.md", "/Users/baiohelseu/Desktop/Project/Travel-QA/plan.md", "/Users/baiohelseu/Desktop/Project/Travel-QA/requirements.txt", "/Users/baiohelseu/Desktop/Project/Travel-QA/src/api/static/index.html"], "paper": [], "image": [], "video": []}, "total_files": 173, "total_words": 287609, "needs_graph": true, "warning": null, "skipped_sensitive": ["/Users/baiohelseu/Desktop/Project/Travel-QA/data/관광데이터랩/통계월보_202602.xlsx [office conversion failed - pip install graphifyy[office]]", "/Users/baiohelseu/Desktop/Project/Travel-QA/data/제주특별자치도_통합_TourAPI병합.xlsx [office conversion failed - pip install graphifyy[office]]", "/Users/baiohelseu/Desktop/Project/Travel-QA/docs/한국관광공사_개방데이터_활용신청방법_매뉴얼_v3.3.docx [office conversion failed - pip install graphifyy[office]]", "/Users/baiohelseu/Desktop/Project/Travel-QA/gun/data/category_hours.xlsx [office conversion failed - pip install graphifyy[office]]", "/Users/baiohelseu/Desktop/Project/Travel-QA/gun/data/itinerary_results_20260502.xlsx [office conversion failed - pip install graphifyy[office]]", "/Users/baiohelseu/Desktop/Project/Travel-QA/gun/data/place_hours_322.xlsx [office conversion failed - pip install graphifyy[office]]", "/Users/baiohelseu/Desktop/Project/Travel-QA/gun/data/recommendations_input.xlsx [office conversion failed - pip install graphifyy[office]]", "/Users/baiohelseu/Desktop/Project/Travel-QA/phases/0-setup/대한민국 구석구석 추천 경로.xlsx [office conversion failed - pip install graphifyy[office]]", "/Users/baiohelseu/Desktop/Project/Travel-QA/phases/0-setup/트리플 여행 추천 경로.xlsx [office conversion failed - pip install graphifyy[office]]", "/Users/baiohelseu/Desktop/Project/Travel-QA/신분류체계정보 관광타입정보 연계 정의서.xlsx [office conversion failed - pip install graphifyy[office]]", "/Users/baiohelseu/Desktop/Project/Travel-QA/한국관광공사_개방데이터_활용매뉴얼(국문)_v4.4.docx [office conversion failed - pip install graphifyy[office]]", "/Users/baiohelseu/Desktop/Project/Travel-QA/제주특별자치도_통합.xlsx [office conversion failed - pip install graphifyy[office]]"], "unclassified": ["/Users/baiohelseu/Desktop/Project/Travel-QA/.claudeignore", "/Users/baiohelseu/Desktop/Project/Travel-QA/.dockerignore", "/Users/baiohelseu/Desktop/Project/Travel-QA/.env.example", "/Users/baiohelseu/Desktop/Project/Travel-QA/.gitattributes", "/Users/baiohelseu/Desktop/Project/Travel-QA/.gitignore", "/Users/baiohelseu/Desktop/Project/Travel-QA/Dockerfile", "/Users/baiohelseu/Desktop/Project/Travel-QA/Makefile", "/Users/baiohelseu/Desktop/Project/Travel-QA/data/congestion_stats.csv", "/Users/baiohelseu/Desktop/Project/Travel-QA/data/jeju_places.csv", "/Users/baiohelseu/Desktop/Project/Travel-QA/data/pois.csv", "/Users/baiohelseu/Desktop/Project/Travel-QA/data/한국문화관광연구원/250630_2024년_변경지점(726개소_별도공표자료).xls", "/Users/baiohelseu/Desktop/Project/Travel-QA/gun/data/.~lock.category_hours.xlsx#", "/Users/baiohelseu/Desktop/Project/Travel-QA/gun/data/Travel_QA_Engine_2026_원본백업.pptx", "/Users/baiohelseu/Desktop/Project/Travel-QA/gun/data/classification_codes.csv", "/Users/baiohelseu/Desktop/Project/Travel-QA/gun/data/ldong_codes.csv", "/Users/baiohelseu/Desktop/Project/Travel-QA/gun/data/match_failed.csv", "/Users/baiohelseu/Desktop/Project/Travel-QA/phases/0-setup/geocoding_issues.csv", "/Users/baiohelseu/Desktop/Project/Travel-QA/test.ipynb", "/Users/baiohelseu/Desktop/Project/Travel-QA/uv.lock"], "walk_errors": [], "ignored": ["/Users/baiohelseu/Desktop/Project/Travel-QA/.DS_Store", "/Users/baiohelseu/Desktop/Project/Travel-QA/.claude/", "/Users/baiohelseu/Desktop/Project/Travel-QA/.env", "/Users/baiohelseu/Desktop/Project/Travel-QA/data/graph/", "/Users/baiohelseu/Desktop/Project/Travel-QA/data/관광데이터랩/.DS_Store", "/Users/baiohelseu/Desktop/Project/Travel-QA/data/한국문화관광연구원/.DS_Store", "/Users/baiohelseu/Desktop/Project/Travel-QA/docs/.DS_Store", "/Users/baiohelseu/Desktop/Project/Travel-QA/docs/.Rhistory", "/Users/baiohelseu/Desktop/Project/Travel-QA/gun/.DS_Store", "/Users/baiohelseu/Desktop/Project/Travel-QA/gun/data/.DS_Store", "/Users/baiohelseu/Desktop/Project/Travel-QA/phases/.DS_Store", "/Users/baiohelseu/Desktop/Project/Travel-QA/phases/0-setup/.DS_Store", "/Users/baiohelseu/Desktop/Project/Travel-QA/src/.DS_Store"], "pruned_noise_dirs": ["/Users/baiohelseu/Desktop/Project/Travel-QA/.git/", "/Users/baiohelseu/Desktop/Project/Travel-QA/.pytest_cache/", "/Users/baiohelseu/Desktop/Project/Travel-QA/.ruff_cache/", "/Users/baiohelseu/Desktop/Project/Travel-QA/.venv/", "/Users/baiohelseu/Desktop/Project/Travel-QA/graphify-out/", "/Users/baiohelseu/Desktop/Project/Travel-QA/scripts/__pycache__/", "/Users/baiohelseu/Desktop/Project/Travel-QA/src/__pycache__/", "/Users/baiohelseu/Desktop/Project/Travel-QA/src/api/__pycache__/", "/Users/baiohelseu/Desktop/Project/Travel-QA/src/data/__pycache__/", "/Users/baiohelseu/Desktop/Project/Travel-QA/src/explain/__pycache__/", "/Users/baiohelseu/Desktop/Project/Travel-QA/src/scoring/__pycache__/", "/Users/baiohelseu/Desktop/Project/Travel-QA/src/utils/__pycache__/", "/Users/baiohelseu/Desktop/Project/Travel-QA/src/validation/__pycache__/", "/Users/baiohelseu/Desktop/Project/Travel-QA/tests/__pycache__/", "/Users/baiohelseu/Desktop/Project/Travel-QA/travel_plan_validator.egg-info/"], "graphifyignore_patterns": 42, "scan_root": "/Users/baiohelseu/Desktop/Project/Travel-QA"} diff --git a/graphify-out/.graphify_python b/graphify-out/.graphify_python new file mode 100644 index 0000000..74c6fc6 --- /dev/null +++ b/graphify-out/.graphify_python @@ -0,0 +1 @@ +/Users/baiohelseu/.local/share/uv/tools/graphifyy/bin/python \ No newline at end of file diff --git a/graphify-out/.graphify_root b/graphify-out/.graphify_root new file mode 100644 index 0000000..733ed0e --- /dev/null +++ b/graphify-out/.graphify_root @@ -0,0 +1 @@ +/Users/baiohelseu/Desktop/Project/Travel-QA \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.31/01cbfd23b94cbd533ae354770d90475f7090879eea6324159c4bb235ff7071ee.json b/graphify-out/cache/ast/v0.9.31/01cbfd23b94cbd533ae354770d90475f7090879eea6324159c4bb235ff7071ee.json new file mode 100644 index 0000000..a2a9c42 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.31/01cbfd23b94cbd533ae354770d90475f7090879eea6324159c4bb235ff7071ee.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_phases_0_setup_analyze_py", "label": "analyze.py", "file_type": "code", "source_file": "phases/0-setup/analyze.py", "source_location": "L1"}, {"id": "$graphify-root$_phases_0_setup_analyze_load_env", "label": "_load_env()", "file_type": "code", "source_file": "phases/0-setup/analyze.py", "source_location": "L14", "_callable": true}, {"id": "$graphify-root$_phases_0_setup_analyze_parse_cell", "label": "parse_cell()", "file_type": "code", "source_file": "phases/0-setup/analyze.py", "source_location": "L43", "_callable": true}, {"id": "$graphify-root$_phases_0_setup_analyze_geocode_tourapi", "label": "geocode_tourapi()", "file_type": "code", "source_file": "phases/0-setup/analyze.py", "source_location": "L106", "_callable": true}, {"id": "$graphify-root$_phases_0_setup_analyze_geocode_kakao_local", "label": "geocode_kakao_local()", "file_type": "code", "source_file": "phases/0-setup/analyze.py", "source_location": "L129", "_callable": true}, {"id": "$graphify-root$_phases_0_setup_analyze_geocode_nominatim", "label": "geocode_nominatim()", "file_type": "code", "source_file": "phases/0-setup/analyze.py", "source_location": "L153", "_callable": true}, {"id": "$graphify-root$_phases_0_setup_analyze_geocode_single", "label": "geocode_single()", "file_type": "code", "source_file": "phases/0-setup/analyze.py", "source_location": "L170", "_callable": true}, {"id": "$graphify-root$_phases_0_setup_analyze_haversine_travel_sec", "label": "haversine_travel_sec()", "file_type": "code", "source_file": "phases/0-setup/analyze.py", "source_location": "L218", "_callable": true}, {"id": "$graphify-root$_phases_0_setup_analyze_get_travel_time", "label": "get_travel_time()", "file_type": "code", "source_file": "phases/0-setup/analyze.py", "source_location": "L225", "_callable": true}, {"id": "$graphify-root$_phases_0_setup_analyze_haversine", "label": "haversine()", "file_type": "code", "source_file": "phases/0-setup/analyze.py", "source_location": "L258", "_callable": true}, {"id": "$graphify-root$_phases_0_setup_analyze_cluster_label", "label": "cluster_label()", "file_type": "code", "source_file": "phases/0-setup/analyze.py", "source_location": "L266", "_callable": true}, {"id": "$graphify-root$_phases_0_setup_analyze_percentile", "label": "percentile()", "file_type": "code", "source_file": "phases/0-setup/analyze.py", "source_location": "L351", "_callable": true}, {"id": "$graphify-root$_phases_0_setup_analyze_stats_block", "label": "stats_block()", "file_type": "code", "source_file": "phases/0-setup/analyze.py", "source_location": "L372", "_callable": true}, {"id": "$graphify-root$_phases_0_setup_analyze_rationale_1", "label": "\uad6c\uc11d\uad6c\uc11d 50\uac1c \uc5ec\ud589 \uacbd\ub85c \ubd84\uc11d \ud30c\uc774\ud504\ub77c\uc778 1. \uc7a5\uc18c\uba85 \ud30c\uc2f1 \u2192 2. \uc9c0\uc624\ucf54\ub529 \u2192 3. \uc774\ub3d9\uc2dc\uac04 \uacc4\uc0b0 \u2192 4. \uc9c0\ud45c \uc0b0\ucd9c \u2192 5. \ud1b5\uacc4 \ucd9c\ub825", "file_type": "rationale", "source_file": "phases/0-setup/analyze.py", "source_location": "L1"}, {"id": "$graphify-root$_phases_0_setup_analyze_rationale_44", "label": "1.\uc7a5\uc18cA, 3.\uc7a5\uc18cB, 2.\uc74c\uc2ddC' \u2192 {1: '\uc7a5\uc18cA', 2: '\uc74c\uc2ddC', 3: '\uc7a5\uc18cB'}", "file_type": "rationale", "source_file": "phases/0-setup/analyze.py", "source_location": "L44"}, {"id": "$graphify-root$_phases_0_setup_analyze_rationale_130", "label": "Kakao Local API \u2014 \ud604\uc9c0 \uce74\ud398\u00b7\uc2dd\ub2f9\u00b7\uad00\uad11\uc9c0\uae4c\uc9c0 \uad11\ubc94\uc704\ud558\uac8c \ucee4\ubc84. region\uc740 \uc5b8\ub354\uc2a4\ucf54\uc5b4 \ud615\uc2dd \uac00\ub2a5\uc131\uc774 \uc788\uc5b4 \ucffc\ub9ac\uc5d0 \ud3ec\ud568\ud558\uc9c0 \uc54a\uc74c.", "file_type": "rationale", "source_file": "phases/0-setup/analyze.py", "source_location": "L130"}, {"id": "$graphify-root$_phases_0_setup_analyze_rationale_171", "label": "TourAPI \u2192 Kakao Local \u2192 Nominatim \uc21c (\ubcd1\ub82c \ud638\ucd9c \uc548\uc804)", "file_type": "rationale", "source_file": "phases/0-setup/analyze.py", "source_location": "L171"}, {"id": "$graphify-root$_phases_0_setup_analyze_rationale_219", "label": "\uc9c1\uc120\uac70\ub9ac \u00d7 \uc6b0\ud68c\uacc4\uc218 / \uc18d\ub3c4 \ub85c \uc774\ub3d9 \uc2dc\uac04(\ucd08) \ucd94\uc815. Kakao API \ubd88\uac00 \uc2dc \ud3f4\ubc31.", "file_type": "rationale", "source_file": "phases/0-setup/analyze.py", "source_location": "L219"}, {"id": "$graphify-root$_phases_0_setup_analyze_rationale_267", "label": "\ub2e8\uc21c \uadf8\ub9ac\ub4dc \uae30\ubc18 \uc9c0\uc5ed \ud074\ub7ec\uc2a4\ud130 \ub808\uc774\ube14 (5km \uaca9\uc790)", "file_type": "rationale", "source_file": "phases/0-setup/analyze.py", "source_location": "L267"}], "edges": [{"source": "$graphify-root$_phases_0_setup_analyze_py", "target": "json", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "phases/0-setup/analyze.py", "source_location": "L5", "weight": 1.0}, {"source": "$graphify-root$_phases_0_setup_analyze_py", "target": "os", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "phases/0-setup/analyze.py", "source_location": "L5", "weight": 1.0}, {"source": "$graphify-root$_phases_0_setup_analyze_py", "target": "re", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "phases/0-setup/analyze.py", "source_location": "L5", "weight": 1.0}, {"source": "$graphify-root$_phases_0_setup_analyze_py", "target": "time", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "phases/0-setup/analyze.py", "source_location": "L5", "weight": 1.0}, {"source": "$graphify-root$_phases_0_setup_analyze_py", "target": "requests", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "phases/0-setup/analyze.py", "source_location": "L5", "weight": 1.0}, {"source": "$graphify-root$_phases_0_setup_analyze_py", "target": "statistics", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "phases/0-setup/analyze.py", "source_location": "L5", "weight": 1.0}, {"source": "$graphify-root$_phases_0_setup_analyze_py", "target": "math", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "phases/0-setup/analyze.py", "source_location": "L5", "weight": 1.0}, {"source": "$graphify-root$_phases_0_setup_analyze_py", "target": "threading", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "phases/0-setup/analyze.py", "source_location": "L5", "weight": 1.0}, {"source": "$graphify-root$_phases_0_setup_analyze_py", "target": "concurrent_futures", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "phases/0-setup/analyze.py", "source_location": "L6", "weight": 1.0}, {"source": "$graphify-root$_phases_0_setup_analyze_py", "target": "pathlib", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "phases/0-setup/analyze.py", "source_location": "L7", "weight": 1.0}, {"source": "$graphify-root$_phases_0_setup_analyze_py", "target": "collections", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "phases/0-setup/analyze.py", "source_location": "L8", "weight": 1.0}, {"source": "$graphify-root$_phases_0_setup_analyze_py", "target": "$graphify-root$_phases_0_setup_analyze_load_env", "relation": "contains", "confidence": "EXTRACTED", "source_file": "phases/0-setup/analyze.py", "source_location": "L14", "weight": 1.0}, {"source": "$graphify-root$_phases_0_setup_analyze_py", "target": "$graphify-root$_phases_0_setup_analyze_parse_cell", "relation": "contains", "confidence": "EXTRACTED", "source_file": "phases/0-setup/analyze.py", "source_location": "L43", "weight": 1.0}, {"source": "$graphify-root$_phases_0_setup_analyze_py", "target": "$graphify-root$_phases_0_setup_analyze_geocode_tourapi", "relation": "contains", "confidence": "EXTRACTED", "source_file": "phases/0-setup/analyze.py", "source_location": "L106", "weight": 1.0}, {"source": "$graphify-root$_phases_0_setup_analyze_py", "target": "$graphify-root$_phases_0_setup_analyze_geocode_kakao_local", "relation": "contains", "confidence": "EXTRACTED", "source_file": "phases/0-setup/analyze.py", "source_location": "L129", "weight": 1.0}, {"source": "$graphify-root$_phases_0_setup_analyze_py", "target": "$graphify-root$_phases_0_setup_analyze_geocode_nominatim", "relation": "contains", "confidence": "EXTRACTED", "source_file": "phases/0-setup/analyze.py", "source_location": "L153", "weight": 1.0}, {"source": "$graphify-root$_phases_0_setup_analyze_py", "target": "$graphify-root$_phases_0_setup_analyze_geocode_single", "relation": "contains", "confidence": "EXTRACTED", "source_file": "phases/0-setup/analyze.py", "source_location": "L170", "weight": 1.0}, {"source": "$graphify-root$_phases_0_setup_analyze_py", "target": "$graphify-root$_phases_0_setup_analyze_haversine_travel_sec", "relation": "contains", "confidence": "EXTRACTED", "source_file": "phases/0-setup/analyze.py", "source_location": "L218", "weight": 1.0}, {"source": "$graphify-root$_phases_0_setup_analyze_py", "target": "$graphify-root$_phases_0_setup_analyze_get_travel_time", "relation": "contains", "confidence": "EXTRACTED", "source_file": "phases/0-setup/analyze.py", "source_location": "L225", "weight": 1.0}, {"source": "$graphify-root$_phases_0_setup_analyze_py", "target": "$graphify-root$_phases_0_setup_analyze_haversine", "relation": "contains", "confidence": "EXTRACTED", "source_file": "phases/0-setup/analyze.py", "source_location": "L258", "weight": 1.0}, {"source": "$graphify-root$_phases_0_setup_analyze_py", "target": "$graphify-root$_phases_0_setup_analyze_cluster_label", "relation": "contains", "confidence": "EXTRACTED", "source_file": "phases/0-setup/analyze.py", "source_location": "L266", "weight": 1.0}, {"source": "$graphify-root$_phases_0_setup_analyze_py", "target": "$graphify-root$_phases_0_setup_analyze_percentile", "relation": "contains", "confidence": "EXTRACTED", "source_file": "phases/0-setup/analyze.py", "source_location": "L351", "weight": 1.0}, {"source": "$graphify-root$_phases_0_setup_analyze_py", "target": "$graphify-root$_phases_0_setup_analyze_stats_block", "relation": "contains", "confidence": "EXTRACTED", "source_file": "phases/0-setup/analyze.py", "source_location": "L372", "weight": 1.0}, {"source": "$graphify-root$_phases_0_setup_analyze_geocode_single", "target": "$graphify-root$_phases_0_setup_analyze_geocode_tourapi", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "phases/0-setup/analyze.py", "source_location": "L173", "weight": 1.0}, {"source": "$graphify-root$_phases_0_setup_analyze_geocode_single", "target": "$graphify-root$_phases_0_setup_analyze_geocode_kakao_local", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "phases/0-setup/analyze.py", "source_location": "L175", "weight": 1.0}, {"source": "$graphify-root$_phases_0_setup_analyze_geocode_single", "target": "$graphify-root$_phases_0_setup_analyze_geocode_nominatim", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "phases/0-setup/analyze.py", "source_location": "L179", "weight": 1.0}, {"source": "$graphify-root$_phases_0_setup_analyze_haversine_travel_sec", "target": "$graphify-root$_phases_0_setup_analyze_haversine", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "phases/0-setup/analyze.py", "source_location": "L220", "weight": 1.0}, {"source": "$graphify-root$_phases_0_setup_analyze_get_travel_time", "target": "$graphify-root$_phases_0_setup_analyze_haversine_travel_sec", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "phases/0-setup/analyze.py", "source_location": "L255", "weight": 1.0}, {"source": "$graphify-root$_phases_0_setup_analyze_stats_block", "target": "$graphify-root$_phases_0_setup_analyze_percentile", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "phases/0-setup/analyze.py", "source_location": "L380", "weight": 1.0}, {"source": "$graphify-root$_phases_0_setup_analyze_rationale_1", "target": "$graphify-root$_phases_0_setup_analyze_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "phases/0-setup/analyze.py", "source_location": "L1", "weight": 1.0}, {"source": "$graphify-root$_phases_0_setup_analyze_rationale_44", "target": "$graphify-root$_phases_0_setup_analyze_parse_cell", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "phases/0-setup/analyze.py", "source_location": "L44", "weight": 1.0}, {"source": "$graphify-root$_phases_0_setup_analyze_rationale_130", "target": "$graphify-root$_phases_0_setup_analyze_geocode_kakao_local", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "phases/0-setup/analyze.py", "source_location": "L130", "weight": 1.0}, {"source": "$graphify-root$_phases_0_setup_analyze_rationale_171", "target": "$graphify-root$_phases_0_setup_analyze_geocode_single", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "phases/0-setup/analyze.py", "source_location": "L171", "weight": 1.0}, {"source": "$graphify-root$_phases_0_setup_analyze_rationale_219", "target": "$graphify-root$_phases_0_setup_analyze_haversine_travel_sec", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "phases/0-setup/analyze.py", "source_location": "L219", "weight": 1.0}, {"source": "$graphify-root$_phases_0_setup_analyze_rationale_267", "target": "$graphify-root$_phases_0_setup_analyze_cluster_label", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "phases/0-setup/analyze.py", "source_location": "L267", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_phases_0_setup_analyze_load_env", "callee": "resolve", "is_member_call": true, "source_file": "phases/0-setup/analyze.py", "source_location": "L15", "receiver": null}, {"caller_nid": "$graphify-root$_phases_0_setup_analyze_load_env", "callee": "Path", "is_member_call": false, "source_file": "phases/0-setup/analyze.py", "source_location": "L15", "receiver": null}, {"caller_nid": "$graphify-root$_phases_0_setup_analyze_load_env", "callee": "__file__", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "phases/0-setup/analyze.py", "source_location": "L15"}, {"caller_nid": "$graphify-root$_phases_0_setup_analyze_load_env", "callee": "exists", "is_member_call": true, "source_file": "phases/0-setup/analyze.py", "source_location": "L16", "receiver": "env_path"}, {"caller_nid": "$graphify-root$_phases_0_setup_analyze_load_env", "callee": "splitlines", "is_member_call": true, "source_file": "phases/0-setup/analyze.py", "source_location": "L17", "receiver": null}, {"caller_nid": "$graphify-root$_phases_0_setup_analyze_load_env", "callee": "read_text", "is_member_call": true, "source_file": "phases/0-setup/analyze.py", "source_location": "L17", "receiver": "env_path"}, {"caller_nid": "$graphify-root$_phases_0_setup_analyze_load_env", "callee": "strip", "is_member_call": true, "source_file": "phases/0-setup/analyze.py", "source_location": "L18", "receiver": "line"}, {"caller_nid": "$graphify-root$_phases_0_setup_analyze_load_env", "callee": "startswith", "is_member_call": true, "source_file": "phases/0-setup/analyze.py", "source_location": "L19", "receiver": "line"}, {"caller_nid": "$graphify-root$_phases_0_setup_analyze_load_env", "callee": "partition", "is_member_call": true, "source_file": "phases/0-setup/analyze.py", "source_location": "L20", "receiver": "line"}, {"caller_nid": "$graphify-root$_phases_0_setup_analyze_load_env", "callee": "setdefault", "is_member_call": true, "source_file": "phases/0-setup/analyze.py", "source_location": "L21", "receiver": null}, {"caller_nid": "$graphify-root$_phases_0_setup_analyze_load_env", "callee": "strip", "is_member_call": true, "source_file": "phases/0-setup/analyze.py", "source_location": "L21", "receiver": "k"}, {"caller_nid": "$graphify-root$_phases_0_setup_analyze_load_env", "callee": "strip", "is_member_call": true, "source_file": "phases/0-setup/analyze.py", "source_location": "L21", "receiver": "v"}, {"caller_nid": "$graphify-root$_phases_0_setup_analyze_parse_cell", "callee": "split", "is_member_call": true, "source_file": "phases/0-setup/analyze.py", "source_location": "L49", "receiver": "re"}, {"caller_nid": "$graphify-root$_phases_0_setup_analyze_parse_cell", "callee": "strip", "is_member_call": true, "source_file": "phases/0-setup/analyze.py", "source_location": "L51", "receiver": "part"}, {"caller_nid": "$graphify-root$_phases_0_setup_analyze_parse_cell", "callee": "match", "is_member_call": true, "source_file": "phases/0-setup/analyze.py", "source_location": "L52", "receiver": "re"}, {"caller_nid": "$graphify-root$_phases_0_setup_analyze_parse_cell", "callee": "group", "is_member_call": true, "source_file": "phases/0-setup/analyze.py", "source_location": "L54", "receiver": "m"}, {"caller_nid": "$graphify-root$_phases_0_setup_analyze_parse_cell", "callee": "strip", "is_member_call": true, "source_file": "phases/0-setup/analyze.py", "source_location": "L55", "receiver": null}, {"caller_nid": "$graphify-root$_phases_0_setup_analyze_parse_cell", "callee": "group", "is_member_call": true, "source_file": "phases/0-setup/analyze.py", "source_location": "L55", "receiver": "m"}, {"caller_nid": "$graphify-root$_phases_0_setup_analyze_parse_cell", "callee": "strip", "is_member_call": true, "source_file": "phases/0-setup/analyze.py", "source_location": "L56", "receiver": null}, {"caller_nid": "$graphify-root$_phases_0_setup_analyze_parse_cell", "callee": "sub", "is_member_call": true, "source_file": "phases/0-setup/analyze.py", "source_location": "L56", "receiver": "re"}, {"caller_nid": "$graphify-root$_phases_0_setup_analyze_parse_cell", "callee": "strip", "is_member_call": true, "source_file": "phases/0-setup/analyze.py", "source_location": "L57", "receiver": null}, {"caller_nid": "$graphify-root$_phases_0_setup_analyze_parse_cell", "callee": "sub", "is_member_call": true, "source_file": "phases/0-setup/analyze.py", "source_location": "L57", "receiver": "re"}, {"caller_nid": "$graphify-root$_phases_0_setup_analyze_geocode_tourapi", "callee": "get", "is_member_call": true, "source_file": "phases/0-setup/analyze.py", "source_location": "L108", "receiver": "requests"}, {"caller_nid": "$graphify-root$_phases_0_setup_analyze_geocode_tourapi", "callee": "TOUR_KEY", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "phases/0-setup/analyze.py", "source_location": "L110"}, {"caller_nid": "$graphify-root$_phases_0_setup_analyze_geocode_tourapi", "callee": "json", "is_member_call": true, "source_file": "phases/0-setup/analyze.py", "source_location": "L116", "receiver": "r"}, {"caller_nid": "$graphify-root$_phases_0_setup_analyze_geocode_tourapi", "callee": "get", "is_member_call": true, "source_file": "phases/0-setup/analyze.py", "source_location": "L117", "receiver": "body"}, {"caller_nid": "$graphify-root$_phases_0_setup_analyze_geocode_tourapi", "callee": "list", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "phases/0-setup/analyze.py", "source_location": "L120"}, {"caller_nid": "$graphify-root$_phases_0_setup_analyze_geocode_kakao_local", "callee": "get", "is_member_call": true, "source_file": "phases/0-setup/analyze.py", "source_location": "L136", "receiver": "requests"}, {"caller_nid": "$graphify-root$_phases_0_setup_analyze_geocode_kakao_local", "callee": "get", "is_member_call": true, "source_file": "phases/0-setup/analyze.py", "source_location": "L143", "receiver": null}, {"caller_nid": "$graphify-root$_phases_0_setup_analyze_geocode_kakao_local", "callee": "json", "is_member_call": true, "source_file": "phases/0-setup/analyze.py", "source_location": "L143", "receiver": "r"}, {"caller_nid": "$graphify-root$_phases_0_setup_analyze_geocode_nominatim", "callee": "strip", "is_member_call": true, "source_file": "phases/0-setup/analyze.py", "source_location": "L154", "receiver": null}, {"caller_nid": "$graphify-root$_phases_0_setup_analyze_geocode_nominatim", "callee": "get", "is_member_call": true, "source_file": "phases/0-setup/analyze.py", "source_location": "L156", "receiver": "requests"}, {"caller_nid": "$graphify-root$_phases_0_setup_analyze_geocode_nominatim", "callee": "json", "is_member_call": true, "source_file": "phases/0-setup/analyze.py", "source_location": "L163", "receiver": "r"}, {"caller_nid": "$graphify-root$_phases_0_setup_analyze_geocode_nominatim", "callee": "json", "is_member_call": true, "source_file": "phases/0-setup/analyze.py", "source_location": "L164", "receiver": "r"}, {"caller_nid": "$graphify-root$_phases_0_setup_analyze_geocode_single", "callee": "sleep", "is_member_call": true, "source_file": "phases/0-setup/analyze.py", "source_location": "L178", "receiver": "time"}, {"caller_nid": "$graphify-root$_phases_0_setup_analyze_get_travel_time", "callee": "get", "is_member_call": true, "source_file": "phases/0-setup/analyze.py", "source_location": "L228", "receiver": "route_cache"}, {"caller_nid": "$graphify-root$_phases_0_setup_analyze_get_travel_time", "callee": "get", "is_member_call": true, "source_file": "phases/0-setup/analyze.py", "source_location": "L234", "receiver": "requests"}, {"caller_nid": "$graphify-root$_phases_0_setup_analyze_get_travel_time", "callee": "get", "is_member_call": true, "source_file": "phases/0-setup/analyze.py", "source_location": "L245", "receiver": null}, {"caller_nid": "$graphify-root$_phases_0_setup_analyze_get_travel_time", "callee": "json", "is_member_call": true, "source_file": "phases/0-setup/analyze.py", "source_location": "L245", "receiver": "r"}, {"caller_nid": "$graphify-root$_phases_0_setup_analyze_get_travel_time", "callee": "get", "is_member_call": true, "source_file": "phases/0-setup/analyze.py", "source_location": "L246", "receiver": null}, {"caller_nid": "$graphify-root$_phases_0_setup_analyze_get_travel_time", "callee": "write_text", "is_member_call": true, "source_file": "phases/0-setup/analyze.py", "source_location": "L250", "receiver": "CACHE_ROUTE"}, {"caller_nid": "$graphify-root$_phases_0_setup_analyze_get_travel_time", "callee": "dumps", "is_member_call": true, "source_file": "phases/0-setup/analyze.py", "source_location": "L250", "receiver": "json"}, {"caller_nid": "$graphify-root$_phases_0_setup_analyze_get_travel_time", "callee": "route_cache", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "phases/0-setup/analyze.py", "source_location": "L250"}, {"caller_nid": "$graphify-root$_phases_0_setup_analyze_haversine", "callee": "radians", "is_member_call": true, "source_file": "phases/0-setup/analyze.py", "source_location": "L260", "receiver": "math"}, {"caller_nid": "$graphify-root$_phases_0_setup_analyze_haversine", "callee": "radians", "is_member_call": true, "source_file": "phases/0-setup/analyze.py", "source_location": "L260", "receiver": "math"}, {"caller_nid": "$graphify-root$_phases_0_setup_analyze_haversine", "callee": "radians", "is_member_call": true, "source_file": "phases/0-setup/analyze.py", "source_location": "L261", "receiver": "math"}, {"caller_nid": "$graphify-root$_phases_0_setup_analyze_haversine", "callee": "radians", "is_member_call": true, "source_file": "phases/0-setup/analyze.py", "source_location": "L262", "receiver": "math"}, {"caller_nid": "$graphify-root$_phases_0_setup_analyze_haversine", "callee": "sin", "is_member_call": true, "source_file": "phases/0-setup/analyze.py", "source_location": "L263", "receiver": "math"}, {"caller_nid": "$graphify-root$_phases_0_setup_analyze_haversine", "callee": "cos", "is_member_call": true, "source_file": "phases/0-setup/analyze.py", "source_location": "L263", "receiver": "math"}, {"caller_nid": "$graphify-root$_phases_0_setup_analyze_haversine", "callee": "cos", "is_member_call": true, "source_file": "phases/0-setup/analyze.py", "source_location": "L263", "receiver": "math"}, {"caller_nid": "$graphify-root$_phases_0_setup_analyze_haversine", "callee": "sin", "is_member_call": true, "source_file": "phases/0-setup/analyze.py", "source_location": "L263", "receiver": "math"}, {"caller_nid": "$graphify-root$_phases_0_setup_analyze_haversine", "callee": "atan2", "is_member_call": true, "source_file": "phases/0-setup/analyze.py", "source_location": "L264", "receiver": "math"}, {"caller_nid": "$graphify-root$_phases_0_setup_analyze_haversine", "callee": "sqrt", "is_member_call": true, "source_file": "phases/0-setup/analyze.py", "source_location": "L264", "receiver": "math"}, {"caller_nid": "$graphify-root$_phases_0_setup_analyze_haversine", "callee": "sqrt", "is_member_call": true, "source_file": "phases/0-setup/analyze.py", "source_location": "L264", "receiver": "math"}, {"caller_nid": "$graphify-root$_phases_0_setup_analyze_stats_block", "callee": "mean", "is_member_call": true, "source_file": "phases/0-setup/analyze.py", "source_location": "L377", "receiver": "statistics"}, {"caller_nid": "$graphify-root$_phases_0_setup_analyze_stats_block", "callee": "median", "is_member_call": true, "source_file": "phases/0-setup/analyze.py", "source_location": "L378", "receiver": "statistics"}, {"caller_nid": "$graphify-root$_phases_0_setup_analyze_stats_block", "callee": "stdev", "is_member_call": true, "source_file": "phases/0-setup/analyze.py", "source_location": "L379", "receiver": "statistics"}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.31/07cc7681576c2df22194b42d51211a47c33f22b37e3c0da8b74adb07764f0582.json b/graphify-out/cache/ast/v0.9.31/07cc7681576c2df22194b42d51211a47c33f22b37e3c0da8b74adb07764f0582.json new file mode 100644 index 0000000..16f3b6c --- /dev/null +++ b/graphify-out/cache/ast/v0.9.31/07cc7681576c2df22194b42d51211a47c33f22b37e3c0da8b74adb07764f0582.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_package_json", "label": "package.json", "file_type": "code", "source_file": "package.json", "source_location": "L1"}, {"id": "$graphify-root$_package_dependencies", "label": "dependencies", "file_type": "code", "source_file": "package.json", "source_location": "L2"}, {"id": "$graphify-root$_package_dependencies_pptxgenjs", "label": "pptxgenjs", "file_type": "code", "source_file": "package.json", "source_location": "L3"}, {"id": "pptxgenjs", "label": "pptxgenjs", "file_type": "concept", "source_file": "package.json", "source_location": "L3"}], "edges": [{"source": "$graphify-root$_package_json", "target": "$graphify-root$_package_dependencies", "relation": "contains", "confidence": "EXTRACTED", "source_file": "package.json", "source_location": "L2", "weight": 1.0}, {"source": "$graphify-root$_package_dependencies", "target": "$graphify-root$_package_dependencies_pptxgenjs", "relation": "contains", "confidence": "EXTRACTED", "source_file": "package.json", "source_location": "L3", "weight": 1.0}, {"source": "$graphify-root$_package_dependencies_pptxgenjs", "target": "pptxgenjs", "relation": "imports", "confidence": "EXTRACTED", "source_file": "package.json", "source_location": "L3", "weight": 1.0, "context": "import"}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.31/0b241600eaf24a807c9bbdaf99de1072b36ed93106e7bdf7ec6dd56972e42cf7.json b/graphify-out/cache/ast/v0.9.31/0b241600eaf24a807c9bbdaf99de1072b36ed93106e7bdf7ec6dd56972e42cf7.json new file mode 100644 index 0000000..4f86b53 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.31/0b241600eaf24a807c9bbdaf99de1072b36ed93106e7bdf7ec6dd56972e42cf7.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_src_data_graph_retriever_py", "label": "graph_retriever.py", "file_type": "code", "source_file": "src/data/graph_retriever.py", "source_location": "L1"}, {"id": "$graphify-root$_src_data_graph_retriever_graphretriever", "label": "GraphRetriever", "file_type": "code", "source_file": "src/data/graph_retriever.py", "source_location": "L44", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_src_data_graph_retriever_graphretriever_init", "label": ".__init__()", "file_type": "code", "source_file": "src/data/graph_retriever.py", "source_location": "L47", "_callable": true}, {"id": "$graphify-root$_src_data_graph_retriever_graphretriever_from_env", "label": ".from_env()", "file_type": "code", "source_file": "src/data/graph_retriever.py", "source_location": "L62", "_callable": true}, {"id": "$graphify-root$_src_data_graph_retriever_graphretriever_enabled", "label": ".enabled()", "file_type": "code", "source_file": "src/data/graph_retriever.py", "source_location": "L71", "_callable": true}, {"id": "$graphify-root$_src_data_graph_retriever_graphretriever_callable", "label": "._callable()", "file_type": "code", "source_file": "src/data/graph_retriever.py", "source_location": "L74", "_callable": true}, {"id": "$graphify-root$_src_data_graph_retriever_graphretriever_mark_unreachable", "label": "._mark_unreachable()", "file_type": "code", "source_file": "src/data/graph_retriever.py", "source_location": "L78", "_callable": true}, {"id": "$graphify-root$_src_data_graph_retriever_graphretriever_close", "label": ".close()", "file_type": "code", "source_file": "src/data/graph_retriever.py", "source_location": "L81", "_callable": true}, {"id": "$graphify-root$_src_data_graph_retriever_graphretriever_search_places", "label": ".search_places()", "file_type": "code", "source_file": "src/data/graph_retriever.py", "source_location": "L85", "_callable": true}, {"id": "placeevidence", "label": "PlaceEvidence", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/src/data/graph_retriever.py"}, {"id": "$graphify-root$_src_data_graph_retriever_graphretriever_find_nearby", "label": ".find_nearby()", "file_type": "code", "source_file": "src/data/graph_retriever.py", "source_location": "L111", "_callable": true}, {"id": "alternativepoi", "label": "AlternativePOI", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/src/data/graph_retriever.py"}, {"id": "$graphify-root$_src_data_graph_retriever_rationale_1", "label": "Neo4j \uc9c0\uc2dd\uadf8\ub798\ud504 \ub9ac\ud2b8\ub9ac\ubc84 \u2014 Place/Region/NEAR_BY \uadf8\ub798\ud504\uc5d0\uc11c \uadfc\uac70 \uc870\ud68c.\u2026", "file_type": "rationale", "source_file": "src/data/graph_retriever.py", "source_location": "L1"}, {"id": "$graphify-root$_src_data_graph_retriever_rationale_45", "label": "\uc81c\uc8fc \uc9c0\uc2dd\uadf8\ub798\ud504(Neo4j Aura) \ub9ac\ud2b8\ub9ac\ubc84. \ubbf8\uc124\uc815/\uc5f0\uacb0 \uc2e4\ud328 \uc2dc \ube48 \uacb0\uacfc\ub85c \ud3f4\ubc31.", "file_type": "rationale", "source_file": "src/data/graph_retriever.py", "source_location": "L45"}, {"id": "$graphify-root$_src_data_graph_retriever_rationale_75", "label": "\ud638\ucd9c \uac00\ub2a5 \uc5ec\ubd80. \ucd5c\uadfc \uc5f0\uacb0 \uc2e4\ud328 \uc2dc \ucfe8\ub2e4\uc6b4 \ub3d9\uc548 \uc7ac\uc2dc\ub3c4 \ubc31\uc624\ud504 \ube44\uc6a9 \uc5c6\uc774 \uc989\uc2dc \ube48 \uacb0\uacfc\ub85c \ub118\uae34\ub2e4.", "file_type": "rationale", "source_file": "src/data/graph_retriever.py", "source_location": "L75"}, {"id": "$graphify-root$_src_data_graph_retriever_rationale_86", "label": "\uc7a5\uc18c\uba85 \ubd80\ubd84\uc77c\uce58 \uac80\uc0c9 \u2014 Region \ucee8\ud14d\uc2a4\ud2b8 \ud3ec\ud568.", "file_type": "rationale", "source_file": "src/data/graph_retriever.py", "source_location": "L86"}, {"id": "$graphify-root$_src_data_graph_retriever_rationale_112", "label": "NEAR_BY \uadf8\ub798\ud504\uc5d0\uc11c \ub3c4\ubcf4 \uadfc\uc811 \ub300\uccb4 \ud6c4\ubcf4 \uc870\ud68c (\uac70\ub9ac\uc21c).", "file_type": "rationale", "source_file": "src/data/graph_retriever.py", "source_location": "L112"}], "edges": [{"source": "$graphify-root$_src_data_graph_retriever_py", "target": "os", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "src/data/graph_retriever.py", "source_location": "L14", "weight": 1.0}, {"source": "$graphify-root$_src_data_graph_retriever_py", "target": "time", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "src/data/graph_retriever.py", "source_location": "L15", "weight": 1.0}, {"source": "$graphify-root$_src_data_graph_retriever_py", "target": "neo4j", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "src/data/graph_retriever.py", "source_location": "L17", "weight": 1.0}, {"source": "$graphify-root$_src_data_graph_retriever_py", "target": "neo4j_exceptions", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "src/data/graph_retriever.py", "source_location": "L18", "weight": 1.0}, {"source": "$graphify-root$_src_data_graph_retriever_py", "target": "src_data_models", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "src/data/graph_retriever.py", "source_location": "L20", "weight": 1.0}, {"source": "$graphify-root$_src_data_graph_retriever_py", "target": "$graphify-root$_src_data_graph_retriever_graphretriever", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/data/graph_retriever.py", "source_location": "L44", "weight": 1.0}, {"source": "$graphify-root$_src_data_graph_retriever_graphretriever", "target": "$graphify-root$_src_data_graph_retriever_graphretriever_init", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/data/graph_retriever.py", "source_location": "L47", "weight": 1.0}, {"source": "$graphify-root$_src_data_graph_retriever_graphretriever", "target": "$graphify-root$_src_data_graph_retriever_graphretriever_from_env", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/data/graph_retriever.py", "source_location": "L62", "weight": 1.0}, {"source": "$graphify-root$_src_data_graph_retriever_graphretriever_from_env", "target": "$graphify-root$_src_data_graph_retriever_graphretriever", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "src/data/graph_retriever.py", "source_location": "L62", "weight": 1.0}, {"source": "$graphify-root$_src_data_graph_retriever_graphretriever", "target": "$graphify-root$_src_data_graph_retriever_graphretriever_enabled", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/data/graph_retriever.py", "source_location": "L71", "weight": 1.0}, {"source": "$graphify-root$_src_data_graph_retriever_graphretriever", "target": "$graphify-root$_src_data_graph_retriever_graphretriever_callable", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/data/graph_retriever.py", "source_location": "L74", "weight": 1.0}, {"source": "$graphify-root$_src_data_graph_retriever_graphretriever", "target": "$graphify-root$_src_data_graph_retriever_graphretriever_mark_unreachable", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/data/graph_retriever.py", "source_location": "L78", "weight": 1.0}, {"source": "$graphify-root$_src_data_graph_retriever_graphretriever", "target": "$graphify-root$_src_data_graph_retriever_graphretriever_close", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/data/graph_retriever.py", "source_location": "L81", "weight": 1.0}, {"source": "$graphify-root$_src_data_graph_retriever_graphretriever", "target": "$graphify-root$_src_data_graph_retriever_graphretriever_search_places", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/data/graph_retriever.py", "source_location": "L85", "weight": 1.0}, {"source": "$graphify-root$_src_data_graph_retriever_graphretriever_search_places", "target": "placeevidence", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "src/data/graph_retriever.py", "source_location": "L85", "weight": 1.0}, {"source": "$graphify-root$_src_data_graph_retriever_graphretriever", "target": "$graphify-root$_src_data_graph_retriever_graphretriever_find_nearby", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/data/graph_retriever.py", "source_location": "L111", "weight": 1.0}, {"source": "$graphify-root$_src_data_graph_retriever_graphretriever_find_nearby", "target": "alternativepoi", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "src/data/graph_retriever.py", "source_location": "L111", "weight": 1.0}, {"source": "$graphify-root$_src_data_graph_retriever_graphretriever_search_places", "target": "$graphify-root$_src_data_graph_retriever_graphretriever_callable", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/data/graph_retriever.py", "source_location": "L88", "weight": 1.0}, {"source": "$graphify-root$_src_data_graph_retriever_graphretriever_search_places", "target": "$graphify-root$_src_data_graph_retriever_graphretriever_mark_unreachable", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/data/graph_retriever.py", "source_location": "L95", "weight": 1.0}, {"source": "$graphify-root$_src_data_graph_retriever_graphretriever_search_places", "target": "placeevidence", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/data/graph_retriever.py", "source_location": "L98", "weight": 1.0}, {"source": "$graphify-root$_src_data_graph_retriever_graphretriever_find_nearby", "target": "$graphify-root$_src_data_graph_retriever_graphretriever_callable", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/data/graph_retriever.py", "source_location": "L113", "weight": 1.0}, {"source": "$graphify-root$_src_data_graph_retriever_graphretriever_find_nearby", "target": "$graphify-root$_src_data_graph_retriever_graphretriever_mark_unreachable", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/data/graph_retriever.py", "source_location": "L120", "weight": 1.0}, {"source": "$graphify-root$_src_data_graph_retriever_graphretriever_find_nearby", "target": "alternativepoi", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/data/graph_retriever.py", "source_location": "L123", "weight": 1.0}, {"source": "$graphify-root$_src_data_graph_retriever_rationale_1", "target": "$graphify-root$_src_data_graph_retriever_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/data/graph_retriever.py", "source_location": "L1", "weight": 1.0}, {"source": "$graphify-root$_src_data_graph_retriever_rationale_45", "target": "$graphify-root$_src_data_graph_retriever_graphretriever", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/data/graph_retriever.py", "source_location": "L45", "weight": 1.0}, {"source": "$graphify-root$_src_data_graph_retriever_rationale_75", "target": "$graphify-root$_src_data_graph_retriever_graphretriever_callable", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/data/graph_retriever.py", "source_location": "L75", "weight": 1.0}, {"source": "$graphify-root$_src_data_graph_retriever_rationale_86", "target": "$graphify-root$_src_data_graph_retriever_graphretriever_search_places", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/data/graph_retriever.py", "source_location": "L86", "weight": 1.0}, {"source": "$graphify-root$_src_data_graph_retriever_rationale_112", "target": "$graphify-root$_src_data_graph_retriever_graphretriever_find_nearby", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/data/graph_retriever.py", "source_location": "L112", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_src_data_graph_retriever_graphretriever_init", "callee": "driver", "is_member_call": true, "source_file": "src/data/graph_retriever.py", "source_location": "L50", "receiver": "GraphDatabase"}, {"caller_nid": "$graphify-root$_src_data_graph_retriever_graphretriever_from_env", "callee": "cls", "is_member_call": false, "source_file": "src/data/graph_retriever.py", "source_location": "L63", "receiver": null}, {"caller_nid": "$graphify-root$_src_data_graph_retriever_graphretriever_from_env", "callee": "get", "is_member_call": true, "source_file": "src/data/graph_retriever.py", "source_location": "L64", "receiver": null}, {"caller_nid": "$graphify-root$_src_data_graph_retriever_graphretriever_from_env", "callee": "get", "is_member_call": true, "source_file": "src/data/graph_retriever.py", "source_location": "L65", "receiver": null}, {"caller_nid": "$graphify-root$_src_data_graph_retriever_graphretriever_from_env", "callee": "get", "is_member_call": true, "source_file": "src/data/graph_retriever.py", "source_location": "L66", "receiver": null}, {"caller_nid": "$graphify-root$_src_data_graph_retriever_graphretriever_from_env", "callee": "get", "is_member_call": true, "source_file": "src/data/graph_retriever.py", "source_location": "L67", "receiver": null}, {"caller_nid": "$graphify-root$_src_data_graph_retriever_graphretriever_callable", "callee": "monotonic", "is_member_call": true, "source_file": "src/data/graph_retriever.py", "source_location": "L76", "receiver": "time"}, {"caller_nid": "$graphify-root$_src_data_graph_retriever_graphretriever_mark_unreachable", "callee": "monotonic", "is_member_call": true, "source_file": "src/data/graph_retriever.py", "source_location": "L79", "receiver": "time"}, {"caller_nid": "$graphify-root$_src_data_graph_retriever_graphretriever_search_places", "callee": "strip", "is_member_call": true, "source_file": "src/data/graph_retriever.py", "source_location": "L87", "receiver": null}, {"caller_nid": "$graphify-root$_src_data_graph_retriever_graphretriever_search_places", "callee": "execute_query", "is_member_call": true, "source_file": "src/data/graph_retriever.py", "source_location": "L91", "receiver": null}, {"caller_nid": "$graphify-root$_src_data_graph_retriever_graphretriever_search_places", "callee": "_SEARCH_CYPHER", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "src/data/graph_retriever.py", "source_location": "L92"}, {"caller_nid": "$graphify-root$_src_data_graph_retriever_graphretriever_search_places", "callee": "Neo4jError", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "src/data/graph_retriever.py", "source_location": "L94"}, {"caller_nid": "$graphify-root$_src_data_graph_retriever_graphretriever_search_places", "callee": "DriverError", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "src/data/graph_retriever.py", "source_location": "L94"}, {"caller_nid": "$graphify-root$_src_data_graph_retriever_graphretriever_find_nearby", "callee": "execute_query", "is_member_call": true, "source_file": "src/data/graph_retriever.py", "source_location": "L116", "receiver": null}, {"caller_nid": "$graphify-root$_src_data_graph_retriever_graphretriever_find_nearby", "callee": "_NEARBY_CYPHER", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "src/data/graph_retriever.py", "source_location": "L117"}, {"caller_nid": "$graphify-root$_src_data_graph_retriever_graphretriever_find_nearby", "callee": "Neo4jError", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "src/data/graph_retriever.py", "source_location": "L119"}, {"caller_nid": "$graphify-root$_src_data_graph_retriever_graphretriever_find_nearby", "callee": "DriverError", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "src/data/graph_retriever.py", "source_location": "L119"}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.31/0bb2be7d2b7ff58a6bb19492dcd31a3e6152b7cc64e60b871552f18851f61336.json b/graphify-out/cache/ast/v0.9.31/0bb2be7d2b7ff58a6bb19492dcd31a3e6152b7cc64e60b871552f18851f61336.json new file mode 100644 index 0000000..2830a36 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.31/0bb2be7d2b7ff58a6bb19492dcd31a3e6152b7cc64e60b871552f18851f61336.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_gun_src_init_py", "label": "__init__.py", "file_type": "code", "source_file": "gun/src/__init__.py", "source_location": "L1"}], "edges": [], "raw_calls": []} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.31/0bf71a6870f836354488c5ab12ae0e5d7568471a30d8f751caae22ac03b3c6a7.json b/graphify-out/cache/ast/v0.9.31/0bf71a6870f836354488c5ab12ae0e5d7568471a30d8f751caae22ac03b3c6a7.json new file mode 100644 index 0000000..1f9f398 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.31/0bf71a6870f836354488c5ab12ae0e5d7568471a30d8f751caae22ac03b3c6a7.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_gun_tests_init_py", "label": "__init__.py", "file_type": "code", "source_file": "gun/tests/__init__.py", "source_location": "L1"}], "edges": [], "raw_calls": []} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.31/0e029402dc8b67f8514efa39e6f8efe1efa36f919e25b1a344763825384eb623.json b/graphify-out/cache/ast/v0.9.31/0e029402dc8b67f8514efa39e6f8efe1efa36f919e25b1a344763825384eb623.json new file mode 100644 index 0000000..22d5a0a --- /dev/null +++ b/graphify-out/cache/ast/v0.9.31/0e029402dc8b67f8514efa39e6f8efe1efa36f919e25b1a344763825384eb623.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_src_scoring_cluster_dispersion_py", "label": "cluster_dispersion.py", "file_type": "code", "source_file": "src/scoring/cluster_dispersion.py", "source_location": "L1"}, {"id": "$graphify-root$_src_scoring_cluster_dispersion_count_area_backtracks", "label": "count_area_backtracks()", "file_type": "code", "source_file": "src/scoring/cluster_dispersion.py", "source_location": "L64", "_callable": true}, {"id": "$graphify-root$_src_scoring_cluster_dispersion_count_label_backtracks", "label": "_count_label_backtracks()", "file_type": "code", "source_file": "src/scoring/cluster_dispersion.py", "source_location": "L80", "_callable": true}, {"id": "$graphify-root$_src_scoring_cluster_dispersion_count_geo_cluster_backtracks", "label": "count_geo_cluster_backtracks()", "file_type": "code", "source_file": "src/scoring/cluster_dispersion.py", "source_location": "L93", "_callable": true}, {"id": "vrptwplace", "label": "VRPTWPlace", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/src/scoring/cluster_dispersion.py"}, {"id": "$graphify-root$_src_scoring_cluster_dispersion_daydispersionmetric", "label": "DayDispersionMetric", "file_type": "code", "source_file": "src/scoring/cluster_dispersion.py", "source_location": "L114", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_src_scoring_cluster_dispersion_clusterdispersionreport", "label": "ClusterDispersionReport", "file_type": "code", "source_file": "src/scoring/cluster_dispersion.py", "source_location": "L125", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_src_scoring_cluster_dispersion_compute_day_dispersion", "label": "_compute_day_dispersion()", "file_type": "code", "source_file": "src/scoring/cluster_dispersion.py", "source_location": "L131", "_callable": true}, {"id": "$graphify-root$_src_scoring_cluster_dispersion_switch_penalty", "label": "_switch_penalty()", "file_type": "code", "source_file": "src/scoring/cluster_dispersion.py", "source_location": "L166", "_callable": true}, {"id": "$graphify-root$_src_scoring_cluster_dispersion_distance_penalty", "label": "_distance_penalty()", "file_type": "code", "source_file": "src/scoring/cluster_dispersion.py", "source_location": "L174", "_callable": true}, {"id": "$graphify-root$_src_scoring_cluster_dispersion_backtrack_penalty", "label": "_backtrack_penalty()", "file_type": "code", "source_file": "src/scoring/cluster_dispersion.py", "source_location": "L184", "_callable": true}, {"id": "$graphify-root$_src_scoring_cluster_dispersion_geo_bt_penalty", "label": "_geo_bt_penalty()", "file_type": "code", "source_file": "src/scoring/cluster_dispersion.py", "source_location": "L192", "_callable": true}, {"id": "$graphify-root$_src_scoring_cluster_dispersion_evaluate_cluster_dispersion", "label": "evaluate_cluster_dispersion()", "file_type": "code", "source_file": "src/scoring/cluster_dispersion.py", "source_location": "L202", "_callable": true}, {"id": "vrptwday", "label": "VRPTWDay", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/src/scoring/cluster_dispersion.py"}, {"id": "$graphify-root$_src_scoring_cluster_dispersion_rationale_1", "label": "\uacbd\ub85c \ubc00\uc9d1\ub3c4 / \ubc88\uac1c\ud328\ud134 \ud0d0\uc9c0 (\ubaa8\ub4c8 \u2465) \u2014 Per-day \uac80\uc99d. \uc0ac\uc6a9\uc790 \uc758\ub3c4 (Q3): \"1\uc77c\ucc28\uc5d0\ub294 \ubaa9\uc801\uc9c0 \uadfc\ucc98\ub85c, 2\uc77c\ucc28\uc5d0\ub294 \ub610 \ub2e4\ub978\u2026", "file_type": "rationale", "source_file": "src/scoring/cluster_dispersion.py", "source_location": "L1"}, {"id": "$graphify-root$_src_scoring_cluster_dispersion_rationale_65", "label": "M3: \uc2dc\uad70\uad6c \uae30\ubc18 \ube44\uc5f0\uc18d \uad6c\uc5ed \uc7ac\uc9c4\uc785 \ud69f\uc218. \uac15\ub0a8\u2192\ud64d\ub300\u2192\uac15\ub0a8 = 1, \uc21c\ubc29\ud5a5 4\uad6c\uc5ed \uc21c\ud68c = 0.", "file_type": "rationale", "source_file": "src/scoring/cluster_dispersion.py", "source_location": "L65"}, {"id": "$graphify-root$_src_scoring_cluster_dispersion_rationale_81", "label": "\ud074\ub7ec\uc2a4\ud130 \ub808\uc774\ube14 \ub9ac\uc2a4\ud2b8\uc5d0\uc11c \ube44\uc5f0\uc18d \uc7ac\uc9c4\uc785 \ud69f\uc218 \uacc4\uc0b0 (M4 \uacf5\uc6a9).", "file_type": "rationale", "source_file": "src/scoring/cluster_dispersion.py", "source_location": "L81"}, {"id": "$graphify-root$_src_scoring_cluster_dispersion_rationale_97", "label": "M4: DBSCAN \uc9c0\ub9ac \ud074\ub7ec\uc2a4\ud130 \uae30\ubc18 \ube44\uc5f0\uc18d \uc7ac\uc9c4\uc785 \ud69f\uc218. M3(\uc2dc\uad70\uad6c \uae30\ubc18)\uac00 \uc7a1\uc9c0 \ubabb\ud558\ub294 \ub300\ud615 \uc2dc\uad70\uad6c \ub0b4\ubd80 \ubd84\uc0b0 \ucf00\uc774\uc2a4 \ubcf4\uc644.\u2026", "file_type": "rationale", "source_file": "src/scoring/cluster_dispersion.py", "source_location": "L97"}, {"id": "$graphify-root$_src_scoring_cluster_dispersion_rationale_193", "label": "M4 \ud328\ub110\ud2f0. M3\uac00 \uc774\ubbf8 \uac19\uc740 \uc774\ubca4\ud2b8\ub97c \ud0d0\uc9c0\ud55c \uacbd\uc6b0 \uc911\ubcf5 \ubc29\uc9c0.", "file_type": "rationale", "source_file": "src/scoring/cluster_dispersion.py", "source_location": "L193"}, {"id": "$graphify-root$_src_scoring_cluster_dispersion_rationale_206", "label": "\uc804\uccb4 \uc77c\uc815\uc758 per-day \ubc00\uc9d1\ub3c4 + \ud328\ub110\ud2f0 \uc0b0\ucd9c. sigungu_codes_per_day: [day_idx][place_idx] \uad6c\uc870.\u2026", "file_type": "rationale", "source_file": "src/scoring/cluster_dispersion.py", "source_location": "L206"}], "edges": [{"source": "$graphify-root$_src_scoring_cluster_dispersion_py", "target": "dataclasses", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "src/scoring/cluster_dispersion.py", "source_location": "L19", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_cluster_dispersion_py", "target": "src_data_models", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "src/scoring/cluster_dispersion.py", "source_location": "L21", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_cluster_dispersion_py", "target": "src_utils_geo", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "src/scoring/cluster_dispersion.py", "source_location": "L22", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_cluster_dispersion_py", "target": "numpy", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "src/scoring/cluster_dispersion.py", "source_location": "L25", "weight": 1.0, "local_alias": "np"}, {"source": "$graphify-root$_src_scoring_cluster_dispersion_py", "target": "sklearn_cluster", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "src/scoring/cluster_dispersion.py", "source_location": "L26", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_cluster_dispersion_py", "target": "$graphify-root$_src_scoring_cluster_dispersion_count_area_backtracks", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/scoring/cluster_dispersion.py", "source_location": "L64", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_cluster_dispersion_py", "target": "$graphify-root$_src_scoring_cluster_dispersion_count_label_backtracks", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/scoring/cluster_dispersion.py", "source_location": "L80", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_cluster_dispersion_py", "target": "$graphify-root$_src_scoring_cluster_dispersion_count_geo_cluster_backtracks", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/scoring/cluster_dispersion.py", "source_location": "L93", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_cluster_dispersion_count_geo_cluster_backtracks", "target": "vrptwplace", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "src/scoring/cluster_dispersion.py", "source_location": "L93", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_cluster_dispersion_py", "target": "$graphify-root$_src_scoring_cluster_dispersion_daydispersionmetric", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/scoring/cluster_dispersion.py", "source_location": "L114", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_cluster_dispersion_py", "target": "$graphify-root$_src_scoring_cluster_dispersion_clusterdispersionreport", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/scoring/cluster_dispersion.py", "source_location": "L125", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_cluster_dispersion_py", "target": "$graphify-root$_src_scoring_cluster_dispersion_compute_day_dispersion", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/scoring/cluster_dispersion.py", "source_location": "L131", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_cluster_dispersion_compute_day_dispersion", "target": "vrptwplace", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "src/scoring/cluster_dispersion.py", "source_location": "L131", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_cluster_dispersion_compute_day_dispersion", "target": "$graphify-root$_src_scoring_cluster_dispersion_daydispersionmetric", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "src/scoring/cluster_dispersion.py", "source_location": "L131", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_cluster_dispersion_py", "target": "$graphify-root$_src_scoring_cluster_dispersion_switch_penalty", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/scoring/cluster_dispersion.py", "source_location": "L166", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_cluster_dispersion_py", "target": "$graphify-root$_src_scoring_cluster_dispersion_distance_penalty", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/scoring/cluster_dispersion.py", "source_location": "L174", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_cluster_dispersion_py", "target": "$graphify-root$_src_scoring_cluster_dispersion_backtrack_penalty", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/scoring/cluster_dispersion.py", "source_location": "L184", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_cluster_dispersion_py", "target": "$graphify-root$_src_scoring_cluster_dispersion_geo_bt_penalty", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/scoring/cluster_dispersion.py", "source_location": "L192", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_cluster_dispersion_py", "target": "$graphify-root$_src_scoring_cluster_dispersion_evaluate_cluster_dispersion", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/scoring/cluster_dispersion.py", "source_location": "L202", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_cluster_dispersion_evaluate_cluster_dispersion", "target": "vrptwday", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "src/scoring/cluster_dispersion.py", "source_location": "L202", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_cluster_dispersion_evaluate_cluster_dispersion", "target": "$graphify-root$_src_scoring_cluster_dispersion_clusterdispersionreport", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "src/scoring/cluster_dispersion.py", "source_location": "L202", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_cluster_dispersion_count_geo_cluster_backtracks", "target": "$graphify-root$_src_scoring_cluster_dispersion_count_label_backtracks", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/scoring/cluster_dispersion.py", "source_location": "L110", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_cluster_dispersion_compute_day_dispersion", "target": "$graphify-root$_src_scoring_cluster_dispersion_count_area_backtracks", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/scoring/cluster_dispersion.py", "source_location": "L151", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_cluster_dispersion_compute_day_dispersion", "target": "$graphify-root$_src_scoring_cluster_dispersion_count_geo_cluster_backtracks", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/scoring/cluster_dispersion.py", "source_location": "L154", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_cluster_dispersion_compute_day_dispersion", "target": "$graphify-root$_src_scoring_cluster_dispersion_daydispersionmetric", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/scoring/cluster_dispersion.py", "source_location": "L156", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_cluster_dispersion_evaluate_cluster_dispersion", "target": "$graphify-root$_src_scoring_cluster_dispersion_compute_day_dispersion", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/scoring/cluster_dispersion.py", "source_location": "L216", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_cluster_dispersion_evaluate_cluster_dispersion", "target": "$graphify-root$_src_scoring_cluster_dispersion_switch_penalty", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/scoring/cluster_dispersion.py", "source_location": "L219", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_cluster_dispersion_evaluate_cluster_dispersion", "target": "$graphify-root$_src_scoring_cluster_dispersion_distance_penalty", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/scoring/cluster_dispersion.py", "source_location": "L220", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_cluster_dispersion_evaluate_cluster_dispersion", "target": "$graphify-root$_src_scoring_cluster_dispersion_backtrack_penalty", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/scoring/cluster_dispersion.py", "source_location": "L221", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_cluster_dispersion_evaluate_cluster_dispersion", "target": "$graphify-root$_src_scoring_cluster_dispersion_geo_bt_penalty", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/scoring/cluster_dispersion.py", "source_location": "L222", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_cluster_dispersion_evaluate_cluster_dispersion", "target": "$graphify-root$_src_scoring_cluster_dispersion_clusterdispersionreport", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/scoring/cluster_dispersion.py", "source_location": "L281", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_cluster_dispersion_rationale_1", "target": "$graphify-root$_src_scoring_cluster_dispersion_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/scoring/cluster_dispersion.py", "source_location": "L1", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_cluster_dispersion_rationale_65", "target": "$graphify-root$_src_scoring_cluster_dispersion_count_area_backtracks", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/scoring/cluster_dispersion.py", "source_location": "L65", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_cluster_dispersion_rationale_81", "target": "$graphify-root$_src_scoring_cluster_dispersion_count_label_backtracks", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/scoring/cluster_dispersion.py", "source_location": "L81", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_cluster_dispersion_rationale_97", "target": "$graphify-root$_src_scoring_cluster_dispersion_count_geo_cluster_backtracks", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/scoring/cluster_dispersion.py", "source_location": "L97", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_cluster_dispersion_rationale_193", "target": "$graphify-root$_src_scoring_cluster_dispersion_geo_bt_penalty", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/scoring/cluster_dispersion.py", "source_location": "L193", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_cluster_dispersion_rationale_206", "target": "$graphify-root$_src_scoring_cluster_dispersion_evaluate_cluster_dispersion", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/scoring/cluster_dispersion.py", "source_location": "L206", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_src_scoring_cluster_dispersion_count_area_backtracks", "callee": "add", "is_member_call": true, "source_file": "src/scoring/cluster_dispersion.py", "source_location": "L75", "receiver": "seen"}, {"caller_nid": "$graphify-root$_src_scoring_cluster_dispersion_count_label_backtracks", "callee": "add", "is_member_call": true, "source_file": "src/scoring/cluster_dispersion.py", "source_location": "L88", "receiver": "seen"}, {"caller_nid": "$graphify-root$_src_scoring_cluster_dispersion_count_geo_cluster_backtracks", "callee": "radians", "is_member_call": true, "source_file": "src/scoring/cluster_dispersion.py", "source_location": "L105", "receiver": "np"}, {"caller_nid": "$graphify-root$_src_scoring_cluster_dispersion_count_geo_cluster_backtracks", "callee": "tolist", "is_member_call": true, "source_file": "src/scoring/cluster_dispersion.py", "source_location": "L107", "receiver": null}, {"caller_nid": "$graphify-root$_src_scoring_cluster_dispersion_count_geo_cluster_backtracks", "callee": "fit_predict", "is_member_call": true, "source_file": "src/scoring/cluster_dispersion.py", "source_location": "L107", "receiver": null}, {"caller_nid": "$graphify-root$_src_scoring_cluster_dispersion_count_geo_cluster_backtracks", "callee": "_DBSCAN", "is_member_call": false, "source_file": "src/scoring/cluster_dispersion.py", "source_location": "L107", "receiver": null}, {"caller_nid": "$graphify-root$_src_scoring_cluster_dispersion_compute_day_dispersion", "callee": "_haversine_km", "is_member_call": false, "source_file": "src/scoring/cluster_dispersion.py", "source_location": "L146", "receiver": null}, {"caller_nid": "$graphify-root$_src_scoring_cluster_dispersion_switch_penalty", "callee": "PENALTY_SWITCH_CRIT", "is_member_call": false, "indirect": true, "context": "return", "source_file": "src/scoring/cluster_dispersion.py", "source_location": "L168"}, {"caller_nid": "$graphify-root$_src_scoring_cluster_dispersion_switch_penalty", "callee": "PENALTY_SWITCH_WARN", "is_member_call": false, "indirect": true, "context": "return", "source_file": "src/scoring/cluster_dispersion.py", "source_location": "L170"}, {"caller_nid": "$graphify-root$_src_scoring_cluster_dispersion_distance_penalty", "callee": "PENALTY_DIST_CRIT", "is_member_call": false, "indirect": true, "context": "return", "source_file": "src/scoring/cluster_dispersion.py", "source_location": "L176"}, {"caller_nid": "$graphify-root$_src_scoring_cluster_dispersion_distance_penalty", "callee": "PENALTY_DIST_RISK", "is_member_call": false, "indirect": true, "context": "return", "source_file": "src/scoring/cluster_dispersion.py", "source_location": "L178"}, {"caller_nid": "$graphify-root$_src_scoring_cluster_dispersion_distance_penalty", "callee": "PENALTY_DIST_WARN", "is_member_call": false, "indirect": true, "context": "return", "source_file": "src/scoring/cluster_dispersion.py", "source_location": "L180"}, {"caller_nid": "$graphify-root$_src_scoring_cluster_dispersion_backtrack_penalty", "callee": "PENALTY_BACKTRACK_CRIT", "is_member_call": false, "indirect": true, "context": "return", "source_file": "src/scoring/cluster_dispersion.py", "source_location": "L186"}, {"caller_nid": "$graphify-root$_src_scoring_cluster_dispersion_backtrack_penalty", "callee": "PENALTY_BACKTRACK_WARN", "is_member_call": false, "indirect": true, "context": "return", "source_file": "src/scoring/cluster_dispersion.py", "source_location": "L188"}, {"caller_nid": "$graphify-root$_src_scoring_cluster_dispersion_geo_bt_penalty", "callee": "PENALTY_GEO_BT_CRIT", "is_member_call": false, "indirect": true, "context": "return", "source_file": "src/scoring/cluster_dispersion.py", "source_location": "L196"}, {"caller_nid": "$graphify-root$_src_scoring_cluster_dispersion_geo_bt_penalty", "callee": "PENALTY_GEO_BT_WARN", "is_member_call": false, "indirect": true, "context": "return", "source_file": "src/scoring/cluster_dispersion.py", "source_location": "L198"}, {"caller_nid": "$graphify-root$_src_scoring_cluster_dispersion_evaluate_cluster_dispersion", "callee": "append", "is_member_call": true, "source_file": "src/scoring/cluster_dispersion.py", "source_location": "L217", "receiver": "per_day"}, {"caller_nid": "$graphify-root$_src_scoring_cluster_dispersion_evaluate_cluster_dispersion", "callee": "COMBINED_PENALTY_CAP", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "src/scoring/cluster_dispersion.py", "source_location": "L224"}, {"caller_nid": "$graphify-root$_src_scoring_cluster_dispersion_evaluate_cluster_dispersion", "callee": "append", "is_member_call": true, "source_file": "src/scoring/cluster_dispersion.py", "source_location": "L228", "receiver": "deep_dive"}, {"caller_nid": "$graphify-root$_src_scoring_cluster_dispersion_evaluate_cluster_dispersion", "callee": "DeepDiveItem", "is_member_call": false, "source_file": "src/scoring/cluster_dispersion.py", "source_location": "L228", "receiver": null}, {"caller_nid": "$graphify-root$_src_scoring_cluster_dispersion_evaluate_cluster_dispersion", "callee": "append", "is_member_call": true, "source_file": "src/scoring/cluster_dispersion.py", "source_location": "L241", "receiver": "deep_dive"}, {"caller_nid": "$graphify-root$_src_scoring_cluster_dispersion_evaluate_cluster_dispersion", "callee": "DeepDiveItem", "is_member_call": false, "source_file": "src/scoring/cluster_dispersion.py", "source_location": "L241", "receiver": null}, {"caller_nid": "$graphify-root$_src_scoring_cluster_dispersion_evaluate_cluster_dispersion", "callee": "append", "is_member_call": true, "source_file": "src/scoring/cluster_dispersion.py", "source_location": "L254", "receiver": "deep_dive"}, {"caller_nid": "$graphify-root$_src_scoring_cluster_dispersion_evaluate_cluster_dispersion", "callee": "DeepDiveItem", "is_member_call": false, "source_file": "src/scoring/cluster_dispersion.py", "source_location": "L254", "receiver": null}, {"caller_nid": "$graphify-root$_src_scoring_cluster_dispersion_evaluate_cluster_dispersion", "callee": "join", "is_member_call": true, "source_file": "src/scoring/cluster_dispersion.py", "source_location": "L257", "receiver": null}, {"caller_nid": "$graphify-root$_src_scoring_cluster_dispersion_evaluate_cluster_dispersion", "callee": "append", "is_member_call": true, "source_file": "src/scoring/cluster_dispersion.py", "source_location": "L268", "receiver": "deep_dive"}, {"caller_nid": "$graphify-root$_src_scoring_cluster_dispersion_evaluate_cluster_dispersion", "callee": "DeepDiveItem", "is_member_call": false, "source_file": "src/scoring/cluster_dispersion.py", "source_location": "L268", "receiver": null}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.31/154143336bbb3e22546331f2d0c4ddfea8b7f8e31e92b6227a886f049a701e18.json b/graphify-out/cache/ast/v0.9.31/154143336bbb3e22546331f2d0c4ddfea8b7f8e31e92b6227a886f049a701e18.json new file mode 100644 index 0000000..16d752a --- /dev/null +++ b/graphify-out/cache/ast/v0.9.31/154143336bbb3e22546331f2d0c4ddfea8b7f8e31e92b6227a886f049a701e18.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_tests_test_scoring_py", "label": "test_scoring.py", "file_type": "code", "source_file": "tests/test_scoring.py", "source_location": "L1"}, {"id": "$graphify-root$_tests_test_scoring_make_poi", "label": "make_poi()", "file_type": "code", "source_file": "tests/test_scoring.py", "source_location": "L14", "_callable": true}, {"id": "poi", "label": "POI", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/tests/test_scoring.py"}, {"id": "$graphify-root$_tests_test_scoring_make_plan", "label": "make_plan()", "file_type": "code", "source_file": "tests/test_scoring.py", "source_location": "L29", "_callable": true}, {"id": "itineraryplan", "label": "ItineraryPlan", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/tests/test_scoring.py"}, {"id": "$graphify-root$_tests_test_scoring_make_matrix", "label": "make_matrix()", "file_type": "code", "source_file": "tests/test_scoring.py", "source_location": "L42", "_callable": true}, {"id": "$graphify-root$_tests_test_scoring_make_hard_fail", "label": "make_hard_fail()", "file_type": "code", "source_file": "tests/test_scoring.py", "source_location": "L52", "_callable": true}, {"id": "hardfail", "label": "HardFail", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/tests/test_scoring.py"}, {"id": "fixture", "label": "fixture", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/tests/test_scoring.py"}, {"id": "$graphify-root$_tests_test_scoring_calc", "label": "calc()", "file_type": "code", "source_file": "tests/test_scoring.py", "source_location": "L66", "_callable": true}, {"id": "scorecalculator", "label": "ScoreCalculator", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/tests/test_scoring.py"}, {"id": "$graphify-root$_tests_test_scoring_sample_pois", "label": "sample_pois()", "file_type": "code", "source_file": "tests/test_scoring.py", "source_location": "L71", "_callable": true}, {"id": "$graphify-root$_tests_test_scoring_sample_matrix", "label": "sample_matrix()", "file_type": "code", "source_file": "tests/test_scoring.py", "source_location": "L81", "_callable": true}, {"id": "$graphify-root$_tests_test_scoring_sample_plan", "label": "sample_plan()", "file_type": "code", "source_file": "tests/test_scoring.py", "source_location": "L87", "_callable": true}, {"id": "$graphify-root$_tests_test_scoring_testweights", "label": "TestWeights", "file_type": "code", "source_file": "tests/test_scoring.py", "source_location": "L95", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_tests_test_scoring_testweights_test_weights_sum_to_one", "label": ".test_weights_sum_to_one()", "file_type": "code", "source_file": "tests/test_scoring.py", "source_location": "L96", "_callable": true}, {"id": "$graphify-root$_tests_test_scoring_testweights_test_weights_keys", "label": ".test_weights_keys()", "file_type": "code", "source_file": "tests/test_scoring.py", "source_location": "L100", "_callable": true}, {"id": "$graphify-root$_tests_test_scoring_testcompute", "label": "TestCompute", "file_type": "code", "source_file": "tests/test_scoring.py", "source_location": "L110", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_tests_test_scoring_testcompute_test_final_score_in_range", "label": ".test_final_score_in_range()", "file_type": "code", "source_file": "tests/test_scoring.py", "source_location": "L111", "_callable": true}, {"id": "$graphify-root$_tests_test_scoring_testcompute_test_hard_fail_caps_score_at_59", "label": ".test_hard_fail_caps_score_at_59()", "file_type": "code", "source_file": "tests/test_scoring.py", "source_location": "L115", "_callable": true}, {"id": "$graphify-root$_tests_test_scoring_testcompute_test_no_hard_fail_can_exceed_59", "label": ".test_no_hard_fail_can_exceed_59()", "file_type": "code", "source_file": "tests/test_scoring.py", "source_location": "L121", "_callable": true}, {"id": "$graphify-root$_tests_test_scoring_testcompute_test_scores_object_fields", "label": ".test_scores_object_fields()", "file_type": "code", "source_file": "tests/test_scoring.py", "source_location": "L127", "_callable": true}, {"id": "$graphify-root$_tests_test_scoring_testefficiency", "label": "TestEfficiency", "file_type": "code", "source_file": "tests/test_scoring.py", "source_location": "L140", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_tests_test_scoring_testefficiency_test_optimal_order_is_one", "label": ".test_optimal_order_is_one()", "file_type": "code", "source_file": "tests/test_scoring.py", "source_location": "L141", "_callable": true}, {"id": "$graphify-root$_tests_test_scoring_testefficiency_test_suboptimal_order_below_one", "label": ".test_suboptimal_order_below_one()", "file_type": "code", "source_file": "tests/test_scoring.py", "source_location": "L150", "_callable": true}, {"id": "$graphify-root$_tests_test_scoring_testefficiency_test_single_poi_returns_one", "label": ".test_single_poi_returns_one()", "file_type": "code", "source_file": "tests/test_scoring.py", "source_location": "L161", "_callable": true}, {"id": "$graphify-root$_tests_test_scoring_testfeasibility", "label": "TestFeasibility", "file_type": "code", "source_file": "tests/test_scoring.py", "source_location": "L170", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_tests_test_scoring_testfeasibility_test_no_hard_fails_hard_is_one", "label": ".test_no_hard_fails_hard_is_one()", "file_type": "code", "source_file": "tests/test_scoring.py", "source_location": "L171", "_callable": true}, {"id": "$graphify-root$_tests_test_scoring_testfeasibility_test_hard_fail_reduces_feasibility", "label": ".test_hard_fail_reduces_feasibility()", "file_type": "code", "source_file": "tests/test_scoring.py", "source_location": "L176", "_callable": true}, {"id": "$graphify-root$_tests_test_scoring_testfeasibility_test_feasibility_in_range", "label": ".test_feasibility_in_range()", "file_type": "code", "source_file": "tests/test_scoring.py", "source_location": "L181", "_callable": true}, {"id": "$graphify-root$_tests_test_scoring_testpurposefit", "label": "TestPurposeFit", "file_type": "code", "source_file": "tests/test_scoring.py", "source_location": "L190", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_tests_test_scoring_testpurposefit_test_cultural_all_cultural_high", "label": ".test_cultural_all_cultural_high()", "file_type": "code", "source_file": "tests/test_scoring.py", "source_location": "L191", "_callable": true}, {"id": "$graphify-root$_tests_test_scoring_testpurposefit_test_cultural_all_sports_low", "label": ".test_cultural_all_sports_low()", "file_type": "code", "source_file": "tests/test_scoring.py", "source_location": "L197", "_callable": true}, {"id": "$graphify-root$_tests_test_scoring_testpurposefit_test_no_travel_type_returns_half", "label": ".test_no_travel_type_returns_half()", "file_type": "code", "source_file": "tests/test_scoring.py", "source_location": "L203", "_callable": true}, {"id": "$graphify-root$_tests_test_scoring_testcosinedistance", "label": "TestCosineDistance", "file_type": "code", "source_file": "tests/test_scoring.py", "source_location": "L213", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_tests_test_scoring_testcosinedistance_test_identical_vectors", "label": ".test_identical_vectors()", "file_type": "code", "source_file": "tests/test_scoring.py", "source_location": "L214", "_callable": true}, {"id": "$graphify-root$_tests_test_scoring_testcosinedistance_test_orthogonal_vectors", "label": ".test_orthogonal_vectors()", "file_type": "code", "source_file": "tests/test_scoring.py", "source_location": "L218", "_callable": true}, {"id": "$graphify-root$_tests_test_scoring_testcosinedistance_test_zero_vector", "label": ".test_zero_vector()", "file_type": "code", "source_file": "tests/test_scoring.py", "source_location": "L223", "_callable": true}, {"id": "$graphify-root$_tests_test_scoring_rationale_1", "label": "Tests for ScoreCalculator (TDD).", "file_type": "rationale", "source_file": "tests/test_scoring.py", "source_location": "L1"}], "edges": [{"source": "$graphify-root$_tests_test_scoring_py", "target": "pytest", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_scoring.py", "source_location": "L4", "weight": 1.0}, {"source": "$graphify-root$_tests_test_scoring_py", "target": "src_data_models", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_scoring.py", "source_location": "L6", "weight": 1.0}, {"source": "$graphify-root$_tests_test_scoring_py", "target": "src_validation_scoring", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_scoring.py", "source_location": "L7", "weight": 1.0}, {"source": "$graphify-root$_tests_test_scoring_py", "target": "$graphify-root$_tests_test_scoring_make_poi", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_scoring.py", "source_location": "L14", "weight": 1.0}, {"source": "$graphify-root$_tests_test_scoring_make_poi", "target": "poi", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "tests/test_scoring.py", "source_location": "L14", "weight": 1.0}, {"source": "$graphify-root$_tests_test_scoring_py", "target": "$graphify-root$_tests_test_scoring_make_plan", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_scoring.py", "source_location": "L29", "weight": 1.0}, {"source": "$graphify-root$_tests_test_scoring_make_plan", "target": "itineraryplan", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "tests/test_scoring.py", "source_location": "L29", "weight": 1.0}, {"source": "$graphify-root$_tests_test_scoring_py", "target": "$graphify-root$_tests_test_scoring_make_matrix", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_scoring.py", "source_location": "L42", "weight": 1.0}, {"source": "$graphify-root$_tests_test_scoring_py", "target": "$graphify-root$_tests_test_scoring_make_hard_fail", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_scoring.py", "source_location": "L52", "weight": 1.0}, {"source": "$graphify-root$_tests_test_scoring_make_hard_fail", "target": "hardfail", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "tests/test_scoring.py", "source_location": "L52", "weight": 1.0}, {"source": "$graphify-root$_tests_test_scoring_calc", "target": "fixture", "relation": "references", "confidence": "EXTRACTED", "source_file": "tests/test_scoring.py", "source_location": "L65", "weight": 1.0, "context": "decorator"}, {"source": "$graphify-root$_tests_test_scoring_py", "target": "$graphify-root$_tests_test_scoring_calc", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_scoring.py", "source_location": "L66", "weight": 1.0}, {"source": "$graphify-root$_tests_test_scoring_calc", "target": "scorecalculator", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "tests/test_scoring.py", "source_location": "L66", "weight": 1.0}, {"source": "$graphify-root$_tests_test_scoring_sample_pois", "target": "fixture", "relation": "references", "confidence": "EXTRACTED", "source_file": "tests/test_scoring.py", "source_location": "L70", "weight": 1.0, "context": "decorator"}, {"source": "$graphify-root$_tests_test_scoring_py", "target": "$graphify-root$_tests_test_scoring_sample_pois", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_scoring.py", "source_location": "L71", "weight": 1.0}, {"source": "$graphify-root$_tests_test_scoring_sample_pois", "target": "poi", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "tests/test_scoring.py", "source_location": "L71", "weight": 1.0}, {"source": "$graphify-root$_tests_test_scoring_sample_matrix", "target": "fixture", "relation": "references", "confidence": "EXTRACTED", "source_file": "tests/test_scoring.py", "source_location": "L80", "weight": 1.0, "context": "decorator"}, {"source": "$graphify-root$_tests_test_scoring_py", "target": "$graphify-root$_tests_test_scoring_sample_matrix", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_scoring.py", "source_location": "L81", "weight": 1.0}, {"source": "$graphify-root$_tests_test_scoring_sample_plan", "target": "fixture", "relation": "references", "confidence": "EXTRACTED", "source_file": "tests/test_scoring.py", "source_location": "L86", "weight": 1.0, "context": "decorator"}, {"source": "$graphify-root$_tests_test_scoring_py", "target": "$graphify-root$_tests_test_scoring_sample_plan", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_scoring.py", "source_location": "L87", "weight": 1.0}, {"source": "$graphify-root$_tests_test_scoring_sample_plan", "target": "itineraryplan", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "tests/test_scoring.py", "source_location": "L87", "weight": 1.0}, {"source": "$graphify-root$_tests_test_scoring_py", "target": "$graphify-root$_tests_test_scoring_testweights", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_scoring.py", "source_location": "L95", "weight": 1.0}, {"source": "$graphify-root$_tests_test_scoring_testweights", "target": "$graphify-root$_tests_test_scoring_testweights_test_weights_sum_to_one", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_scoring.py", "source_location": "L96", "weight": 1.0}, {"source": "$graphify-root$_tests_test_scoring_testweights", "target": "$graphify-root$_tests_test_scoring_testweights_test_weights_keys", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_scoring.py", "source_location": "L100", "weight": 1.0}, {"source": "$graphify-root$_tests_test_scoring_py", "target": "$graphify-root$_tests_test_scoring_testcompute", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_scoring.py", "source_location": "L110", "weight": 1.0}, {"source": "$graphify-root$_tests_test_scoring_testcompute", "target": "$graphify-root$_tests_test_scoring_testcompute_test_final_score_in_range", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_scoring.py", "source_location": "L111", "weight": 1.0}, {"source": "$graphify-root$_tests_test_scoring_testcompute", "target": "$graphify-root$_tests_test_scoring_testcompute_test_hard_fail_caps_score_at_59", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_scoring.py", "source_location": "L115", "weight": 1.0}, {"source": "$graphify-root$_tests_test_scoring_testcompute", "target": "$graphify-root$_tests_test_scoring_testcompute_test_no_hard_fail_can_exceed_59", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_scoring.py", "source_location": "L121", "weight": 1.0}, {"source": "$graphify-root$_tests_test_scoring_testcompute", "target": "$graphify-root$_tests_test_scoring_testcompute_test_scores_object_fields", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_scoring.py", "source_location": "L127", "weight": 1.0}, {"source": "$graphify-root$_tests_test_scoring_py", "target": "$graphify-root$_tests_test_scoring_testefficiency", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_scoring.py", "source_location": "L140", "weight": 1.0}, {"source": "$graphify-root$_tests_test_scoring_testefficiency", "target": "$graphify-root$_tests_test_scoring_testefficiency_test_optimal_order_is_one", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_scoring.py", "source_location": "L141", "weight": 1.0}, {"source": "$graphify-root$_tests_test_scoring_testefficiency", "target": "$graphify-root$_tests_test_scoring_testefficiency_test_suboptimal_order_below_one", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_scoring.py", "source_location": "L150", "weight": 1.0}, {"source": "$graphify-root$_tests_test_scoring_testefficiency", "target": "$graphify-root$_tests_test_scoring_testefficiency_test_single_poi_returns_one", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_scoring.py", "source_location": "L161", "weight": 1.0}, {"source": "$graphify-root$_tests_test_scoring_py", "target": "$graphify-root$_tests_test_scoring_testfeasibility", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_scoring.py", "source_location": "L170", "weight": 1.0}, {"source": "$graphify-root$_tests_test_scoring_testfeasibility", "target": "$graphify-root$_tests_test_scoring_testfeasibility_test_no_hard_fails_hard_is_one", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_scoring.py", "source_location": "L171", "weight": 1.0}, {"source": "$graphify-root$_tests_test_scoring_testfeasibility", "target": "$graphify-root$_tests_test_scoring_testfeasibility_test_hard_fail_reduces_feasibility", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_scoring.py", "source_location": "L176", "weight": 1.0}, {"source": "$graphify-root$_tests_test_scoring_testfeasibility", "target": "$graphify-root$_tests_test_scoring_testfeasibility_test_feasibility_in_range", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_scoring.py", "source_location": "L181", "weight": 1.0}, {"source": "$graphify-root$_tests_test_scoring_py", "target": "$graphify-root$_tests_test_scoring_testpurposefit", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_scoring.py", "source_location": "L190", "weight": 1.0}, {"source": "$graphify-root$_tests_test_scoring_testpurposefit", "target": "$graphify-root$_tests_test_scoring_testpurposefit_test_cultural_all_cultural_high", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_scoring.py", "source_location": "L191", "weight": 1.0}, {"source": "$graphify-root$_tests_test_scoring_testpurposefit", "target": "$graphify-root$_tests_test_scoring_testpurposefit_test_cultural_all_sports_low", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_scoring.py", "source_location": "L197", "weight": 1.0}, {"source": "$graphify-root$_tests_test_scoring_testpurposefit", "target": "$graphify-root$_tests_test_scoring_testpurposefit_test_no_travel_type_returns_half", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_scoring.py", "source_location": "L203", "weight": 1.0}, {"source": "$graphify-root$_tests_test_scoring_py", "target": "$graphify-root$_tests_test_scoring_testcosinedistance", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_scoring.py", "source_location": "L213", "weight": 1.0}, {"source": "$graphify-root$_tests_test_scoring_testcosinedistance", "target": "$graphify-root$_tests_test_scoring_testcosinedistance_test_identical_vectors", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_scoring.py", "source_location": "L214", "weight": 1.0}, {"source": "$graphify-root$_tests_test_scoring_testcosinedistance", "target": "$graphify-root$_tests_test_scoring_testcosinedistance_test_orthogonal_vectors", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_scoring.py", "source_location": "L218", "weight": 1.0}, {"source": "$graphify-root$_tests_test_scoring_testcosinedistance", "target": "$graphify-root$_tests_test_scoring_testcosinedistance_test_zero_vector", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_scoring.py", "source_location": "L223", "weight": 1.0}, {"source": "$graphify-root$_tests_test_scoring_make_poi", "target": "poi", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_scoring.py", "source_location": "L22", "weight": 1.0}, {"source": "$graphify-root$_tests_test_scoring_make_plan", "target": "itineraryplan", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_scoring.py", "source_location": "L33", "weight": 1.0}, {"source": "$graphify-root$_tests_test_scoring_make_hard_fail", "target": "hardfail", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_scoring.py", "source_location": "L53", "weight": 1.0}, {"source": "$graphify-root$_tests_test_scoring_calc", "target": "scorecalculator", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_scoring.py", "source_location": "L67", "weight": 1.0}, {"source": "$graphify-root$_tests_test_scoring_sample_pois", "target": "$graphify-root$_tests_test_scoring_make_poi", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_scoring.py", "source_location": "L73", "weight": 1.0}, {"source": "$graphify-root$_tests_test_scoring_sample_matrix", "target": "$graphify-root$_tests_test_scoring_make_matrix", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_scoring.py", "source_location": "L83", "weight": 1.0}, {"source": "$graphify-root$_tests_test_scoring_sample_plan", "target": "$graphify-root$_tests_test_scoring_make_plan", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_scoring.py", "source_location": "L88", "weight": 1.0}, {"source": "$graphify-root$_tests_test_scoring_testcompute_test_hard_fail_caps_score_at_59", "target": "$graphify-root$_tests_test_scoring_make_hard_fail", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_scoring.py", "source_location": "L117", "weight": 1.0}, {"source": "$graphify-root$_tests_test_scoring_testefficiency_test_optimal_order_is_one", "target": "$graphify-root$_tests_test_scoring_make_poi", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_scoring.py", "source_location": "L144", "weight": 1.0}, {"source": "$graphify-root$_tests_test_scoring_testefficiency_test_suboptimal_order_below_one", "target": "$graphify-root$_tests_test_scoring_make_poi", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_scoring.py", "source_location": "L153", "weight": 1.0}, {"source": "$graphify-root$_tests_test_scoring_testefficiency_test_single_poi_returns_one", "target": "$graphify-root$_tests_test_scoring_make_poi", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_scoring.py", "source_location": "L162", "weight": 1.0}, {"source": "$graphify-root$_tests_test_scoring_testfeasibility_test_hard_fail_reduces_feasibility", "target": "$graphify-root$_tests_test_scoring_make_hard_fail", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_scoring.py", "source_location": "L177", "weight": 1.0}, {"source": "$graphify-root$_tests_test_scoring_testpurposefit_test_cultural_all_cultural_high", "target": "$graphify-root$_tests_test_scoring_make_poi", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_scoring.py", "source_location": "L192", "weight": 1.0}, {"source": "$graphify-root$_tests_test_scoring_testpurposefit_test_cultural_all_cultural_high", "target": "$graphify-root$_tests_test_scoring_make_plan", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_scoring.py", "source_location": "L193", "weight": 1.0}, {"source": "$graphify-root$_tests_test_scoring_testpurposefit_test_cultural_all_sports_low", "target": "$graphify-root$_tests_test_scoring_make_poi", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_scoring.py", "source_location": "L198", "weight": 1.0}, {"source": "$graphify-root$_tests_test_scoring_testpurposefit_test_cultural_all_sports_low", "target": "$graphify-root$_tests_test_scoring_make_plan", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_scoring.py", "source_location": "L199", "weight": 1.0}, {"source": "$graphify-root$_tests_test_scoring_testpurposefit_test_no_travel_type_returns_half", "target": "$graphify-root$_tests_test_scoring_make_poi", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_scoring.py", "source_location": "L204", "weight": 1.0}, {"source": "$graphify-root$_tests_test_scoring_testpurposefit_test_no_travel_type_returns_half", "target": "$graphify-root$_tests_test_scoring_make_plan", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_scoring.py", "source_location": "L205", "weight": 1.0}, {"source": "$graphify-root$_tests_test_scoring_rationale_1", "target": "$graphify-root$_tests_test_scoring_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_scoring.py", "source_location": "L1", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_tests_test_scoring_make_plan", "callee": "DayPlan", "is_member_call": false, "source_file": "tests/test_scoring.py", "source_location": "L34", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_scoring_make_plan", "callee": "PlaceInput", "is_member_call": false, "source_file": "tests/test_scoring.py", "source_location": "L34", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_scoring_make_matrix", "callee": "items", "is_member_call": true, "source_file": "tests/test_scoring.py", "source_location": "L44", "receiver": "pairs"}, {"caller_nid": "$graphify-root$_tests_test_scoring_make_matrix", "callee": "setdefault", "is_member_call": true, "source_file": "tests/test_scoring.py", "source_location": "L45", "receiver": "matrix"}, {"caller_nid": "$graphify-root$_tests_test_scoring_testweights_test_weights_sum_to_one", "callee": "values", "is_member_call": true, "source_file": "tests/test_scoring.py", "source_location": "L97", "receiver": "WEIGHTS"}, {"caller_nid": "$graphify-root$_tests_test_scoring_testweights_test_weights_keys", "callee": "keys", "is_member_call": true, "source_file": "tests/test_scoring.py", "source_location": "L101", "receiver": "WEIGHTS"}, {"caller_nid": "$graphify-root$_tests_test_scoring_testcompute_test_final_score_in_range", "callee": "compute", "is_member_call": true, "source_file": "tests/test_scoring.py", "source_location": "L112", "receiver": "calc"}, {"caller_nid": "$graphify-root$_tests_test_scoring_testcompute_test_hard_fail_caps_score_at_59", "callee": "compute", "is_member_call": true, "source_file": "tests/test_scoring.py", "source_location": "L116", "receiver": "calc"}, {"caller_nid": "$graphify-root$_tests_test_scoring_testcompute_test_no_hard_fail_can_exceed_59", "callee": "compute", "is_member_call": true, "source_file": "tests/test_scoring.py", "source_location": "L122", "receiver": "calc"}, {"caller_nid": "$graphify-root$_tests_test_scoring_testcompute_test_no_hard_fail_can_exceed_59", "callee": "int", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_scoring.py", "source_location": "L125"}, {"caller_nid": "$graphify-root$_tests_test_scoring_testcompute_test_scores_object_fields", "callee": "compute", "is_member_call": true, "source_file": "tests/test_scoring.py", "source_location": "L128", "receiver": "calc"}, {"caller_nid": "$graphify-root$_tests_test_scoring_testefficiency_test_optimal_order_is_one", "callee": "_calc_efficiency", "is_member_call": true, "source_file": "tests/test_scoring.py", "source_location": "L147", "receiver": "calc"}, {"caller_nid": "$graphify-root$_tests_test_scoring_testefficiency_test_optimal_order_is_one", "callee": "approx", "is_member_call": true, "source_file": "tests/test_scoring.py", "source_location": "L148", "receiver": "pytest"}, {"caller_nid": "$graphify-root$_tests_test_scoring_testefficiency_test_suboptimal_order_below_one", "callee": "_calc_efficiency", "is_member_call": true, "source_file": "tests/test_scoring.py", "source_location": "L158", "receiver": "calc"}, {"caller_nid": "$graphify-root$_tests_test_scoring_testefficiency_test_single_poi_returns_one", "callee": "_calc_efficiency", "is_member_call": true, "source_file": "tests/test_scoring.py", "source_location": "L163", "receiver": "calc"}, {"caller_nid": "$graphify-root$_tests_test_scoring_testfeasibility_test_no_hard_fails_hard_is_one", "callee": "_calc_feasibility", "is_member_call": true, "source_file": "tests/test_scoring.py", "source_location": "L172", "receiver": "calc"}, {"caller_nid": "$graphify-root$_tests_test_scoring_testfeasibility_test_hard_fail_reduces_feasibility", "callee": "_calc_feasibility", "is_member_call": true, "source_file": "tests/test_scoring.py", "source_location": "L177", "receiver": "calc"}, {"caller_nid": "$graphify-root$_tests_test_scoring_testfeasibility_test_hard_fail_reduces_feasibility", "callee": "_calc_feasibility", "is_member_call": true, "source_file": "tests/test_scoring.py", "source_location": "L178", "receiver": "calc"}, {"caller_nid": "$graphify-root$_tests_test_scoring_testfeasibility_test_feasibility_in_range", "callee": "_calc_feasibility", "is_member_call": true, "source_file": "tests/test_scoring.py", "source_location": "L182", "receiver": "calc"}, {"caller_nid": "$graphify-root$_tests_test_scoring_testpurposefit_test_cultural_all_cultural_high", "callee": "_calc_purpose_fit", "is_member_call": true, "source_file": "tests/test_scoring.py", "source_location": "L194", "receiver": "calc"}, {"caller_nid": "$graphify-root$_tests_test_scoring_testpurposefit_test_cultural_all_sports_low", "callee": "_calc_purpose_fit", "is_member_call": true, "source_file": "tests/test_scoring.py", "source_location": "L200", "receiver": "calc"}, {"caller_nid": "$graphify-root$_tests_test_scoring_testpurposefit_test_no_travel_type_returns_half", "callee": "_calc_purpose_fit", "is_member_call": true, "source_file": "tests/test_scoring.py", "source_location": "L206", "receiver": "calc"}, {"caller_nid": "$graphify-root$_tests_test_scoring_testcosinedistance_test_identical_vectors", "callee": "_cosine_distance", "is_member_call": true, "source_file": "tests/test_scoring.py", "source_location": "L216", "receiver": "calc"}, {"caller_nid": "$graphify-root$_tests_test_scoring_testcosinedistance_test_identical_vectors", "callee": "approx", "is_member_call": true, "source_file": "tests/test_scoring.py", "source_location": "L216", "receiver": "pytest"}, {"caller_nid": "$graphify-root$_tests_test_scoring_testcosinedistance_test_orthogonal_vectors", "callee": "_cosine_distance", "is_member_call": true, "source_file": "tests/test_scoring.py", "source_location": "L221", "receiver": "calc"}, {"caller_nid": "$graphify-root$_tests_test_scoring_testcosinedistance_test_orthogonal_vectors", "callee": "approx", "is_member_call": true, "source_file": "tests/test_scoring.py", "source_location": "L221", "receiver": "pytest"}, {"caller_nid": "$graphify-root$_tests_test_scoring_testcosinedistance_test_zero_vector", "callee": "_cosine_distance", "is_member_call": true, "source_file": "tests/test_scoring.py", "source_location": "L226", "receiver": "calc"}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.31/1725befc5a5f1c81a222a7385978af4fcaf030ecc866e5781e329cdc102a8315.json b/graphify-out/cache/ast/v0.9.31/1725befc5a5f1c81a222a7385978af4fcaf030ecc866e5781e329cdc102a8315.json new file mode 100644 index 0000000..95d6abf --- /dev/null +++ b/graphify-out/cache/ast/v0.9.31/1725befc5a5f1c81a222a7385978af4fcaf030ecc866e5781e329cdc102a8315.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_src_api_main_py", "label": "main.py", "file_type": "code", "source_file": "src/api/main.py", "source_location": "L1"}, {"id": "get", "label": "get", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/src/api/main.py"}, {"id": "$graphify-root$_src_api_main_index", "label": "index()", "file_type": "code", "source_file": "src/api/main.py", "source_location": "L47", "_callable": true}, {"id": "$graphify-root$_src_api_main_manifest", "label": "manifest()", "file_type": "code", "source_file": "src/api/main.py", "source_location": "L55", "_callable": true}, {"id": "response", "label": "Response", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/src/api/main.py"}, {"id": "$graphify-root$_src_api_main_service_worker", "label": "service_worker()", "file_type": "code", "source_file": "src/api/main.py", "source_location": "L63", "_callable": true}, {"id": "$graphify-root$_src_api_main_health", "label": "health()", "file_type": "code", "source_file": "src/api/main.py", "source_location": "L75", "_callable": true}, {"id": "$graphify-root$_src_api_main_rationale_76", "label": "\ub77c\uc774\ube0c\ub2c8\uc2a4 + \uad6c\uc131 \uc9c4\ub2e8. \uc2dc\ud06c\ub9bf \uac12\uc740 \uc808\ub300 \ub178\ucd9c\ud558\uc9c0 \uc54a\uace0, \ud0a4 \uc124\uc815 \uc5ec\ubd80(bool)\uc640 \ub85c\ub529\ub41c \ub370\uc774\ud130 \uac74\uc218\ub9cc \ubc18\ud658\ud55c\ub2e4. \uc2ec\uc0ac \uc2dc \uc678\ubd80 API\u2026", "file_type": "rationale", "source_file": "src/api/main.py", "source_location": "L76"}], "edges": [{"source": "$graphify-root$_src_api_main_py", "target": "os", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "src/api/main.py", "source_location": "L4", "weight": 1.0}, {"source": "$graphify-root$_src_api_main_py", "target": "pathlib", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "src/api/main.py", "source_location": "L5", "weight": 1.0}, {"source": "$graphify-root$_src_api_main_py", "target": "fastapi", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "src/api/main.py", "source_location": "L7", "weight": 1.0}, {"source": "$graphify-root$_src_api_main_py", "target": "fastapi_middleware_cors", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "src/api/main.py", "source_location": "L8", "weight": 1.0}, {"source": "$graphify-root$_src_api_main_py", "target": "fastapi_responses", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "src/api/main.py", "source_location": "L9", "weight": 1.0}, {"source": "$graphify-root$_src_api_main_py", "target": "fastapi_staticfiles", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "src/api/main.py", "source_location": "L10", "weight": 1.0}, {"source": "$graphify-root$_src_api_main_py", "target": "src_api_router", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "src/api/main.py", "source_location": "L23", "weight": 1.0}, {"source": "$graphify-root$_src_api_main_index", "target": "get", "relation": "references", "confidence": "EXTRACTED", "source_file": "src/api/main.py", "source_location": "L46", "weight": 1.0, "context": "decorator"}, {"source": "$graphify-root$_src_api_main_py", "target": "$graphify-root$_src_api_main_index", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/api/main.py", "source_location": "L47", "weight": 1.0}, {"source": "$graphify-root$_src_api_main_manifest", "target": "get", "relation": "references", "confidence": "EXTRACTED", "source_file": "src/api/main.py", "source_location": "L54", "weight": 1.0, "context": "decorator"}, {"source": "$graphify-root$_src_api_main_py", "target": "$graphify-root$_src_api_main_manifest", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/api/main.py", "source_location": "L55", "weight": 1.0}, {"source": "$graphify-root$_src_api_main_manifest", "target": "response", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "src/api/main.py", "source_location": "L55", "weight": 1.0}, {"source": "$graphify-root$_src_api_main_service_worker", "target": "get", "relation": "references", "confidence": "EXTRACTED", "source_file": "src/api/main.py", "source_location": "L62", "weight": 1.0, "context": "decorator"}, {"source": "$graphify-root$_src_api_main_py", "target": "$graphify-root$_src_api_main_service_worker", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/api/main.py", "source_location": "L63", "weight": 1.0}, {"source": "$graphify-root$_src_api_main_service_worker", "target": "response", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "src/api/main.py", "source_location": "L63", "weight": 1.0}, {"source": "$graphify-root$_src_api_main_health", "target": "get", "relation": "references", "confidence": "EXTRACTED", "source_file": "src/api/main.py", "source_location": "L74", "weight": 1.0, "context": "decorator"}, {"source": "$graphify-root$_src_api_main_py", "target": "$graphify-root$_src_api_main_health", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/api/main.py", "source_location": "L75", "weight": 1.0}, {"source": "$graphify-root$_src_api_main_rationale_76", "target": "$graphify-root$_src_api_main_health", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/api/main.py", "source_location": "L76", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_src_api_main_index", "callee": "exists", "is_member_call": true, "source_file": "src/api/main.py", "source_location": "L49", "receiver": "html_file"}, {"caller_nid": "$graphify-root$_src_api_main_index", "callee": "read_text", "is_member_call": true, "source_file": "src/api/main.py", "source_location": "L50", "receiver": "html_file"}, {"caller_nid": "$graphify-root$_src_api_main_manifest", "callee": "exists", "is_member_call": true, "source_file": "src/api/main.py", "source_location": "L57", "receiver": "f"}, {"caller_nid": "$graphify-root$_src_api_main_manifest", "callee": "read_text", "is_member_call": true, "source_file": "src/api/main.py", "source_location": "L58", "receiver": "f"}, {"caller_nid": "$graphify-root$_src_api_main_service_worker", "callee": "exists", "is_member_call": true, "source_file": "src/api/main.py", "source_location": "L65", "receiver": "f"}, {"caller_nid": "$graphify-root$_src_api_main_service_worker", "callee": "read_text", "is_member_call": true, "source_file": "src/api/main.py", "source_location": "L67", "receiver": "f"}, {"caller_nid": "$graphify-root$_src_api_main_health", "callee": "_is_set", "is_member_call": false, "source_file": "src/api/main.py", "source_location": "L87", "receiver": null}, {"caller_nid": "$graphify-root$_src_api_main_health", "callee": "_is_set", "is_member_call": false, "source_file": "src/api/main.py", "source_location": "L88", "receiver": null}, {"caller_nid": "$graphify-root$_src_api_main_health", "callee": "_is_set", "is_member_call": false, "source_file": "src/api/main.py", "source_location": "L89", "receiver": null}, {"caller_nid": "$graphify-root$_src_api_main_health", "callee": "_is_set", "is_member_call": false, "source_file": "src/api/main.py", "source_location": "L90", "receiver": null}, {"caller_nid": "$graphify-root$_src_api_main_health", "callee": "_is_set", "is_member_call": false, "source_file": "src/api/main.py", "source_location": "L91", "receiver": null}, {"caller_nid": "$graphify-root$_src_api_main_health", "callee": "_is_set", "is_member_call": false, "source_file": "src/api/main.py", "source_location": "L92", "receiver": null}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.31/197911bb59bc12c7128b036f9780c46be69ce81c37b55778a5a6f2d47a52f40b.json b/graphify-out/cache/ast/v0.9.31/197911bb59bc12c7128b036f9780c46be69ce81c37b55778a5a6f2d47a52f40b.json new file mode 100644 index 0000000..deb255d --- /dev/null +++ b/graphify-out/cache/ast/v0.9.31/197911bb59bc12c7128b036f9780c46be69ce81c37b55778a5a6f2d47a52f40b.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_scripts_fetch_jeju_hours_py", "label": "fetch_jeju_hours.py", "file_type": "code", "source_file": "scripts/fetch_jeju_hours.py", "source_location": "L1"}, {"id": "$graphify-root$_scripts_fetch_jeju_hours_fetch_one", "label": "_fetch_one()", "file_type": "code", "source_file": "scripts/fetch_jeju_hours.py", "source_location": "L35", "_callable": true}, {"id": "tourapiclient", "label": "TourAPIClient", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/scripts/fetch_jeju_hours.py"}, {"id": "semaphore", "label": "Semaphore", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/scripts/fetch_jeju_hours.py"}, {"id": "$graphify-root$_scripts_fetch_jeju_hours_main", "label": "main()", "file_type": "code", "source_file": "scripts/fetch_jeju_hours.py", "source_location": "L43", "_callable": true}, {"id": "$graphify-root$_scripts_fetch_jeju_hours_rationale_1", "label": "\uc81c\uc8fc POI(pois.csv) \uc804\uccb4\uc5d0 \ub300\ud574 TourAPI \uc2e4\uc81c \uc6b4\uc601\uc2dc\uac04\uc744 \ubbf8\ub9ac \uc870\ud68c\ud574 \uce90\uc2dc \ud30c\uc77c\ub85c \uc800\uc7a5\ud55c\ub2e4.\u2026", "file_type": "rationale", "source_file": "scripts/fetch_jeju_hours.py", "source_location": "L1"}], "edges": [{"source": "$graphify-root$_scripts_fetch_jeju_hours_py", "target": "asyncio", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/fetch_jeju_hours.py", "source_location": "L16", "weight": 1.0}, {"source": "$graphify-root$_scripts_fetch_jeju_hours_py", "target": "json", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/fetch_jeju_hours.py", "source_location": "L17", "weight": 1.0}, {"source": "$graphify-root$_scripts_fetch_jeju_hours_py", "target": "sys", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/fetch_jeju_hours.py", "source_location": "L18", "weight": 1.0}, {"source": "$graphify-root$_scripts_fetch_jeju_hours_py", "target": "pathlib", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/fetch_jeju_hours.py", "source_location": "L19", "weight": 1.0}, {"source": "$graphify-root$_scripts_fetch_jeju_hours_py", "target": "pandas", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/fetch_jeju_hours.py", "source_location": "L21", "weight": 1.0, "local_alias": "pd"}, {"source": "$graphify-root$_scripts_fetch_jeju_hours_py", "target": "dotenv", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/fetch_jeju_hours.py", "source_location": "L22", "weight": 1.0}, {"source": "$graphify-root$_scripts_fetch_jeju_hours_py", "target": "src_data_models", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/fetch_jeju_hours.py", "source_location": "L28", "weight": 1.0}, {"source": "$graphify-root$_scripts_fetch_jeju_hours_py", "target": "src_data_tour_api", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/fetch_jeju_hours.py", "source_location": "L29", "weight": 1.0}, {"source": "$graphify-root$_scripts_fetch_jeju_hours_py", "target": "$graphify-root$_scripts_fetch_jeju_hours_fetch_one", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/fetch_jeju_hours.py", "source_location": "L35", "weight": 1.0}, {"source": "$graphify-root$_scripts_fetch_jeju_hours_fetch_one", "target": "tourapiclient", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "scripts/fetch_jeju_hours.py", "source_location": "L35", "weight": 1.0}, {"source": "$graphify-root$_scripts_fetch_jeju_hours_fetch_one", "target": "semaphore", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "scripts/fetch_jeju_hours.py", "source_location": "L35", "weight": 1.0}, {"source": "$graphify-root$_scripts_fetch_jeju_hours_py", "target": "$graphify-root$_scripts_fetch_jeju_hours_main", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/fetch_jeju_hours.py", "source_location": "L43", "weight": 1.0}, {"source": "$graphify-root$_scripts_fetch_jeju_hours_main", "target": "semaphore", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/fetch_jeju_hours.py", "source_location": "L53", "weight": 1.0}, {"source": "$graphify-root$_scripts_fetch_jeju_hours_main", "target": "$graphify-root$_scripts_fetch_jeju_hours_fetch_one", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/fetch_jeju_hours.py", "source_location": "L55", "weight": 1.0}, {"source": "$graphify-root$_scripts_fetch_jeju_hours_rationale_1", "target": "$graphify-root$_scripts_fetch_jeju_hours_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/fetch_jeju_hours.py", "source_location": "L1", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_scripts_fetch_jeju_hours_fetch_one", "callee": "get_operating_hours", "is_member_call": true, "source_file": "scripts/fetch_jeju_hours.py", "source_location": "L37", "receiver": "client"}, {"caller_nid": "$graphify-root$_scripts_fetch_jeju_hours_fetch_one", "callee": "_FALLBACK_OPEN", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "scripts/fetch_jeju_hours.py", "source_location": "L38"}, {"caller_nid": "$graphify-root$_scripts_fetch_jeju_hours_fetch_one", "callee": "_FALLBACK_CLOSE", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "scripts/fetch_jeju_hours.py", "source_location": "L38"}, {"caller_nid": "$graphify-root$_scripts_fetch_jeju_hours_main", "callee": "from_settings", "is_member_call": true, "source_file": "scripts/fetch_jeju_hours.py", "source_location": "L44", "receiver": "TourAPIClient"}, {"caller_nid": "$graphify-root$_scripts_fetch_jeju_hours_main", "callee": "Settings", "is_member_call": false, "source_file": "scripts/fetch_jeju_hours.py", "source_location": "L44", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_fetch_jeju_hours_main", "callee": "read_csv", "is_member_call": true, "source_file": "scripts/fetch_jeju_hours.py", "source_location": "L49", "receiver": "pd"}, {"caller_nid": "$graphify-root$_scripts_fetch_jeju_hours_main", "callee": "startswith", "is_member_call": true, "source_file": "scripts/fetch_jeju_hours.py", "source_location": "L50", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_fetch_jeju_hours_main", "callee": "astype", "is_member_call": true, "source_file": "scripts/fetch_jeju_hours.py", "source_location": "L50", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_fetch_jeju_hours_main", "callee": "str", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/fetch_jeju_hours.py", "source_location": "L50"}, {"caller_nid": "$graphify-root$_scripts_fetch_jeju_hours_main", "callee": "CONCURRENCY", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/fetch_jeju_hours.py", "source_location": "L53"}, {"caller_nid": "$graphify-root$_scripts_fetch_jeju_hours_main", "callee": "itertuples", "is_member_call": true, "source_file": "scripts/fetch_jeju_hours.py", "source_location": "L56", "receiver": "jeju"}, {"caller_nid": "$graphify-root$_scripts_fetch_jeju_hours_main", "callee": "gather", "is_member_call": true, "source_file": "scripts/fetch_jeju_hours.py", "source_location": "L58", "receiver": "asyncio"}, {"caller_nid": "$graphify-root$_scripts_fetch_jeju_hours_main", "callee": "write_text", "is_member_call": true, "source_file": "scripts/fetch_jeju_hours.py", "source_location": "L61", "receiver": "OUT_PATH"}, {"caller_nid": "$graphify-root$_scripts_fetch_jeju_hours_main", "callee": "dumps", "is_member_call": true, "source_file": "scripts/fetch_jeju_hours.py", "source_location": "L61", "receiver": "json"}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.31/1b6e66642d94020eed4e102b2beffcb988b24c4c62d5ba1f0956e1a373a8b250.json b/graphify-out/cache/ast/v0.9.31/1b6e66642d94020eed4e102b2beffcb988b24c4c62d5ba1f0956e1a373a8b250.json new file mode 100644 index 0000000..9b13cc5 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.31/1b6e66642d94020eed4e102b2beffcb988b24c4c62d5ba1f0956e1a373a8b250.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_src_api_router_py", "label": "router.py", "file_type": "code", "source_file": "src/api/router.py", "source_location": "L1"}, {"id": "$graphify-root$_src_api_router_kakao_hint", "label": "_kakao_hint()", "file_type": "code", "source_file": "src/api/router.py", "source_location": "L51", "_callable": true}, {"id": "$graphify-root$_src_api_router_kakao_cat_code", "label": "_kakao_cat_code()", "file_type": "code", "source_file": "src/api/router.py", "source_location": "L65", "_callable": true}, {"id": "$graphify-root$_src_api_router_extract_chosung", "label": "_extract_chosung()", "file_type": "code", "source_file": "src/api/router.py", "source_location": "L232", "_callable": true}, {"id": "$graphify-root$_src_api_router_normalize", "label": "_normalize()", "file_type": "code", "source_file": "src/api/router.py", "source_location": "L243", "_callable": true}, {"id": "$graphify-root$_src_api_router_guess_dwell", "label": "_guess_dwell()", "file_type": "code", "source_file": "src/api/router.py", "source_location": "L252", "_callable": true}, {"id": "$graphify-root$_src_api_router_addr_to_region", "label": "_addr_to_region()", "file_type": "code", "source_file": "src/api/router.py", "source_location": "L271", "_callable": true}, {"id": "$graphify-root$_src_api_router_parse_jeju_hours", "label": "_parse_jeju_hours()", "file_type": "code", "source_file": "src/api/router.py", "source_location": "L282", "_callable": true}, {"id": "$graphify-root$_src_api_router_build_jeju_place_index", "label": "_build_jeju_place_index()", "file_type": "code", "source_file": "src/api/router.py", "source_location": "L293", "_callable": true}, {"id": "$graphify-root$_src_api_router_build_coord_index", "label": "_build_coord_index()", "file_type": "code", "source_file": "src/api/router.py", "source_location": "L341", "_callable": true}, {"id": "$graphify-root$_src_api_router_build_place_list", "label": "_build_place_list()", "file_type": "code", "source_file": "src/api/router.py", "source_location": "L394", "_callable": true}, {"id": "$graphify-root$_src_api_router_build_full_place_list", "label": "_build_full_place_list()", "file_type": "code", "source_file": "src/api/router.py", "source_location": "L453", "_callable": true}, {"id": "$graphify-root$_src_api_router_build_monthly_congestion", "label": "_build_monthly_congestion()", "file_type": "code", "source_file": "src/api/router.py", "source_location": "L555", "_callable": true}, {"id": "$graphify-root$_src_api_router_lookup_place", "label": "_lookup_place()", "file_type": "code", "source_file": "src/api/router.py", "source_location": "L599", "_callable": true}, {"id": "$graphify-root$_src_api_router_resolve_poi", "label": "_resolve_poi()", "file_type": "code", "source_file": "src/api/router.py", "source_location": "L618", "_callable": true}, {"id": "poi", "label": "POI", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/src/api/router.py"}, {"id": "poiinfo", "label": "POIInfo", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/src/api/router.py"}, {"id": "$graphify-root$_src_api_router_calc_reliability_score", "label": "_calc_reliability_score()", "file_type": "code", "source_file": "src/api/router.py", "source_location": "L714", "_callable": true}, {"id": "$graphify-root$_src_api_router_get_pipeline", "label": "_get_pipeline()", "file_type": "code", "source_file": "src/api/router.py", "source_location": "L724", "_callable": true}, {"id": "validatorpipeline", "label": "ValidatorPipeline", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/src/api/router.py"}, {"id": "get", "label": "get", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/src/api/router.py"}, {"id": "$graphify-root$_src_api_router_list_places", "label": "list_places()", "file_type": "code", "source_file": "src/api/router.py", "source_location": "L732", "_callable": true}, {"id": "placesresponse", "label": "PlacesResponse", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/src/api/router.py"}, {"id": "$graphify-root$_src_api_router_monthly_congestion", "label": "monthly_congestion()", "file_type": "code", "source_file": "src/api/router.py", "source_location": "L806", "_callable": true}, {"id": "$graphify-root$_src_api_router_list_regions", "label": "list_regions()", "file_type": "code", "source_file": "src/api/router.py", "source_location": "L818", "_callable": true}, {"id": "post", "label": "post", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/src/api/router.py"}, {"id": "$graphify-root$_src_api_router_parse_text", "label": "parse_text()", "file_type": "code", "source_file": "src/api/router.py", "source_location": "L830", "_callable": true}, {"id": "parsetextrequest", "label": "ParseTextRequest", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/src/api/router.py"}, {"id": "parsedplanresponse", "label": "ParsedPlanResponse", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/src/api/router.py"}, {"id": "$graphify-root$_src_api_router_parse_document", "label": "parse_document()", "file_type": "code", "source_file": "src/api/router.py", "source_location": "L839", "_callable": true}, {"id": "uploadfile", "label": "UploadFile", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/src/api/router.py"}, {"id": "$graphify-root$_src_api_router_resolve_coords", "label": "resolve_coords()", "file_type": "code", "source_file": "src/api/router.py", "source_location": "L856", "_callable": true}, {"id": "dayplanweb", "label": "DayPlanWeb", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/src/api/router.py"}, {"id": "$graphify-root$_src_api_router_validate_plan", "label": "validate_plan()", "file_type": "code", "source_file": "src/api/router.py", "source_location": "L869", "_callable": true}, {"id": "validaterequest", "label": "ValidateRequest", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/src/api/router.py"}, {"id": "validateresponse", "label": "ValidateResponse", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/src/api/router.py"}, {"id": "$graphify-root$_src_api_router_rationale_1", "label": "FastAPI \ub77c\uc6b0\ud130 \u2014 /validate, /places \uc5d4\ub4dc\ud3ec\uc778\ud2b8.", "file_type": "rationale", "source_file": "src/api/router.py", "source_location": "L1"}, {"id": "$graphify-root$_src_api_router_rationale_52", "label": "\uce74\uce74\uc624 category_name \u2192 hours_db \uce74\ud14c\uace0\ub9ac \ud78c\ud2b8.", "file_type": "rationale", "source_file": "src/api/router.py", "source_location": "L52"}, {"id": "$graphify-root$_src_api_router_rationale_66", "label": "\uce74\uce74\uc624 category_name \u2192 \uc571 \uce74\ud14c\uace0\ub9ac \ucf54\ub4dc(12 \uad00\uad11\uc9c0\u00b714 \ubb38\ud654\u00b738 \uc1fc\ud551\u00b739 \uc74c\uc2dd\uc810\u00b732 \uc219\ubc15).", "file_type": "rationale", "source_file": "src/api/router.py", "source_location": "L66"}, {"id": "$graphify-root$_src_api_router_rationale_283", "label": "09:00~18:00 (\ub9e4\ud45c\ub9c8\uac10 17:00)' \uac19\uc740 \uc6d0\ubb38\uc5d0\uc11c \uccab HH:MM~HH:MM \uad6c\uac04\ub9cc \ubf51\uc544\ub0b8\ub2e4.", "file_type": "rationale", "source_file": "src/api/router.py", "source_location": "L283"}, {"id": "$graphify-root$_src_api_router_rationale_294", "label": "data/\uc81c\uc8fc\ud2b9\ubcc4\uc790\uce58\ub3c4_\ud1b5\ud569_TourAPI\ubcd1\ud569.xlsx \u2014 \uc2e4\uce21 \uc88c\ud45c\ub97c \uac00\uc9c4 \uc81c\uc8fc \uc804\uc5ed 26,679\uac74 \ud1b5\ud569 DB. \uae30\uc874\u2026", "file_type": "rationale", "source_file": "src/api/router.py", "source_location": "L294"}, {"id": "$graphify-root$_src_api_router_rationale_342", "label": "\uc88c\ud45c \uc778\ub371\uc2a4 \ube4c\ub4dc. 1\ucc28: data/pois.csv \u2014 TourAPI \ubc8c\ud06c \uc218\uc9d1 (20,168 POI, \uc804\uad6d \uc88c\ud45c \uc8fc\uc18c\uc6d0\ubcf8) 2\ucc28:\u2026", "file_type": "rationale", "source_file": "src/api/router.py", "source_location": "L342"}, {"id": "$graphify-root$_src_api_router_rationale_395", "label": "congestion_stats.csv \uc5d0\uc11c \uace0\uc720 \uc7a5\uc18c + annual_max \uc9d1\uacc4 \u2192 \uc88c\ud45c \uacb0\ud569 \u2192 \uc815\ub82c.", "file_type": "rationale", "source_file": "src/api/router.py", "source_location": "L395"}, {"id": "$graphify-root$_src_api_router_rationale_454", "label": "pois.csv(20,168) + wellness(175) + barrier_free(1,799) \ud1b5\ud569 \uc7a5\uc18c \ubaa9\ub85d.", "file_type": "rationale", "source_file": "src/api/router.py", "source_location": "L454"}, {"id": "$graphify-root$_src_api_router_rationale_556", "label": "congestion_stats.csv\uc758 \uc6d4\ubcc4 \ud63c\uc7a1\ub3c4 \uc810\uc218 \uc778\ub371\uc2a4.", "file_type": "rationale", "source_file": "src/api/router.py", "source_location": "L556"}, {"id": "$graphify-root$_src_api_router_rationale_600", "label": "\uc774\ub984\uc73c\ub85c place dict \uc870\ud68c. \uc815\ud655 \u2192 \ubd80\ubd84 \uc21c\uc73c\ub85c \uc2dc\ub3c4. congestion \uae30\ubc18 \uc778\uae30 \uc7a5\uc18c(_PLACE_NORM_INDEX) \uc6b0\uc120,\u2026", "file_type": "rationale", "source_file": "src/api/router.py", "source_location": "L600"}, {"id": "$graphify-root$_src_api_router_rationale_736", "label": "\ub4f1\ub85d \uc7a5\uc18c \ubaa9\ub85d. q=\uac80\uc0c9\uc5b4, region=\uc9c0\uc5ed \ud544\ud130, cat=\uce74\ud14c\uace0\ub9ac \ucf54\ub4dc, extended=\uc804\uccb4DB \ucd08\uae30 \ub85c\ub4dc. offset/limit\uc73c\ub85c\u2026", "file_type": "rationale", "source_file": "src/api/router.py", "source_location": "L736"}, {"id": "$graphify-root$_src_api_router_rationale_831", "label": "\ucd94\ucc9c \uacbd\ub85c\ub97c \ubcf5\uc0ac\ud55c \ud14d\uc2a4\ud2b8 \u2192 \ucffc\ub9ac \ub9ac\ub77c\uc774\ud305\uc73c\ub85c day/place \uad6c\uc870 \ucd94\ucd9c.", "file_type": "rationale", "source_file": "src/api/router.py", "source_location": "L831"}, {"id": "$graphify-root$_src_api_router_rationale_840", "label": "AI \ud50c\ub798\ub108 \uacb0\uacfc PDF\u00b7\uc2a4\ud06c\ub9b0\uc0f7(PNG/JPG) \u2192 Claude Vision\uc73c\ub85c day/place \uad6c\uc870 \ucd94\ucd9c.", "file_type": "rationale", "source_file": "src/api/router.py", "source_location": "L840"}, {"id": "$graphify-root$_src_api_router_rationale_857", "label": "\ube4c\ub354(Step2) \uc9c0\ub3c4\uc6a9 \uc88c\ud45c \uc870\ud68c. \uac80\uc99d \ud30c\uc774\ud504\ub77c\uc778(Hard Fail/\uc2a4\ucf54\uc5b4\ub9c1/LLM \uc124\uba85) \uc5c6\uc774 \uc88c\ud45c \ud574\uc11d\ub9cc \uc218\ud589\ud574 \ube60\ub974\uac8c \uc751\ub2f5\ud55c\ub2e4.", "file_type": "rationale", "source_file": "src/api/router.py", "source_location": "L857"}], "edges": [{"source": "$graphify-root$_src_api_router_py", "target": "asyncio", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "src/api/router.py", "source_location": "L4", "weight": 1.0}, {"source": "$graphify-root$_src_api_router_py", "target": "csv", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "src/api/router.py", "source_location": "L5", "weight": 1.0}, {"source": "$graphify-root$_src_api_router_py", "target": "json", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "src/api/router.py", "source_location": "L6", "weight": 1.0}, {"source": "$graphify-root$_src_api_router_py", "target": "re", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "src/api/router.py", "source_location": "L7", "weight": 1.0}, {"source": "$graphify-root$_src_api_router_py", "target": "pathlib", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "src/api/router.py", "source_location": "L8", "weight": 1.0}, {"source": "$graphify-root$_src_api_router_py", "target": "openpyxl", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "src/api/router.py", "source_location": "L10", "weight": 1.0}, {"source": "$graphify-root$_src_api_router_py", "target": "fastapi", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "src/api/router.py", "source_location": "L11", "weight": 1.0}, {"source": "$graphify-root$_src_api_router_py", "target": "src_api_schemas", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "src/api/router.py", "source_location": "L13", "weight": 1.0}, {"source": "$graphify-root$_src_api_router_py", "target": "src_data_dwell_db", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "src/api/router.py", "source_location": "L23", "weight": 1.0}, {"source": "$graphify-root$_src_api_router_py", "target": "src_data_graph_retriever", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "src/api/router.py", "source_location": "L24", "weight": 1.0}, {"source": "$graphify-root$_src_api_router_py", "target": "src_data_hours_db", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "src/api/router.py", "source_location": "L25", "weight": 1.0}, {"source": "$graphify-root$_src_api_router_py", "target": "src_data_kakao_local", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "src/api/router.py", "source_location": "L26", "weight": 1.0}, {"source": "$graphify-root$_src_api_router_py", "target": "src_data_models", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "src/api/router.py", "source_location": "L27", "weight": 1.0}, {"source": "$graphify-root$_src_api_router_py", "target": "src_explain_pipeline", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "src/api/router.py", "source_location": "L28", "weight": 1.0}, {"source": "$graphify-root$_src_api_router_py", "target": "src_explain_plan_extractor", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "src/api/router.py", "source_location": "L29", "weight": 1.0}, {"source": "$graphify-root$_src_api_router_py", "target": "$graphify-root$_src_api_router_kakao_hint", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/api/router.py", "source_location": "L51", "weight": 1.0}, {"source": "$graphify-root$_src_api_router_py", "target": "$graphify-root$_src_api_router_kakao_cat_code", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/api/router.py", "source_location": "L65", "weight": 1.0}, {"source": "$graphify-root$_src_api_router_py", "target": "$graphify-root$_src_api_router_extract_chosung", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/api/router.py", "source_location": "L232", "weight": 1.0}, {"source": "$graphify-root$_src_api_router_py", "target": "$graphify-root$_src_api_router_normalize", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/api/router.py", "source_location": "L243", "weight": 1.0}, {"source": "$graphify-root$_src_api_router_py", "target": "$graphify-root$_src_api_router_guess_dwell", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/api/router.py", "source_location": "L252", "weight": 1.0}, {"source": "$graphify-root$_src_api_router_py", "target": "$graphify-root$_src_api_router_addr_to_region", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/api/router.py", "source_location": "L271", "weight": 1.0}, {"source": "$graphify-root$_src_api_router_py", "target": "$graphify-root$_src_api_router_parse_jeju_hours", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/api/router.py", "source_location": "L282", "weight": 1.0}, {"source": "$graphify-root$_src_api_router_py", "target": "$graphify-root$_src_api_router_build_jeju_place_index", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/api/router.py", "source_location": "L293", "weight": 1.0}, {"source": "$graphify-root$_src_api_router_py", "target": "$graphify-root$_src_api_router_build_coord_index", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/api/router.py", "source_location": "L341", "weight": 1.0}, {"source": "$graphify-root$_src_api_router_py", "target": "$graphify-root$_src_api_router_build_place_list", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/api/router.py", "source_location": "L394", "weight": 1.0}, {"source": "$graphify-root$_src_api_router_py", "target": "$graphify-root$_src_api_router_build_full_place_list", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/api/router.py", "source_location": "L453", "weight": 1.0}, {"source": "$graphify-root$_src_api_router_py", "target": "$graphify-root$_src_api_router_build_monthly_congestion", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/api/router.py", "source_location": "L555", "weight": 1.0}, {"source": "$graphify-root$_src_api_router_py", "target": "$graphify-root$_src_api_router_lookup_place", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/api/router.py", "source_location": "L599", "weight": 1.0}, {"source": "$graphify-root$_src_api_router_py", "target": "$graphify-root$_src_api_router_resolve_poi", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/api/router.py", "source_location": "L618", "weight": 1.0}, {"source": "$graphify-root$_src_api_router_resolve_poi", "target": "poi", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "src/api/router.py", "source_location": "L618", "weight": 1.0}, {"source": "$graphify-root$_src_api_router_resolve_poi", "target": "poiinfo", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "src/api/router.py", "source_location": "L618", "weight": 1.0}, {"source": "$graphify-root$_src_api_router_py", "target": "$graphify-root$_src_api_router_calc_reliability_score", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/api/router.py", "source_location": "L714", "weight": 1.0}, {"source": "$graphify-root$_src_api_router_calc_reliability_score", "target": "poiinfo", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "src/api/router.py", "source_location": "L714", "weight": 1.0}, {"source": "$graphify-root$_src_api_router_py", "target": "$graphify-root$_src_api_router_get_pipeline", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/api/router.py", "source_location": "L724", "weight": 1.0}, {"source": "$graphify-root$_src_api_router_get_pipeline", "target": "validatorpipeline", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "src/api/router.py", "source_location": "L724", "weight": 1.0}, {"source": "$graphify-root$_src_api_router_list_places", "target": "get", "relation": "references", "confidence": "EXTRACTED", "source_file": "src/api/router.py", "source_location": "L731", "weight": 1.0, "context": "decorator"}, {"source": "$graphify-root$_src_api_router_py", "target": "$graphify-root$_src_api_router_list_places", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/api/router.py", "source_location": "L732", "weight": 1.0}, {"source": "$graphify-root$_src_api_router_list_places", "target": "placesresponse", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "src/api/router.py", "source_location": "L732", "weight": 1.0}, {"source": "$graphify-root$_src_api_router_monthly_congestion", "target": "get", "relation": "references", "confidence": "EXTRACTED", "source_file": "src/api/router.py", "source_location": "L805", "weight": 1.0, "context": "decorator"}, {"source": "$graphify-root$_src_api_router_py", "target": "$graphify-root$_src_api_router_monthly_congestion", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/api/router.py", "source_location": "L806", "weight": 1.0}, {"source": "$graphify-root$_src_api_router_list_regions", "target": "get", "relation": "references", "confidence": "EXTRACTED", "source_file": "src/api/router.py", "source_location": "L817", "weight": 1.0, "context": "decorator"}, {"source": "$graphify-root$_src_api_router_py", "target": "$graphify-root$_src_api_router_list_regions", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/api/router.py", "source_location": "L818", "weight": 1.0}, {"source": "$graphify-root$_src_api_router_parse_text", "target": "post", "relation": "references", "confidence": "EXTRACTED", "source_file": "src/api/router.py", "source_location": "L829", "weight": 1.0, "context": "decorator"}, {"source": "$graphify-root$_src_api_router_py", "target": "$graphify-root$_src_api_router_parse_text", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/api/router.py", "source_location": "L830", "weight": 1.0}, {"source": "$graphify-root$_src_api_router_parse_text", "target": "parsetextrequest", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "src/api/router.py", "source_location": "L830", "weight": 1.0}, {"source": "$graphify-root$_src_api_router_parse_text", "target": "parsedplanresponse", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "src/api/router.py", "source_location": "L830", "weight": 1.0}, {"source": "$graphify-root$_src_api_router_parse_document", "target": "post", "relation": "references", "confidence": "EXTRACTED", "source_file": "src/api/router.py", "source_location": "L838", "weight": 1.0, "context": "decorator"}, {"source": "$graphify-root$_src_api_router_py", "target": "$graphify-root$_src_api_router_parse_document", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/api/router.py", "source_location": "L839", "weight": 1.0}, {"source": "$graphify-root$_src_api_router_parse_document", "target": "uploadfile", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "src/api/router.py", "source_location": "L839", "weight": 1.0}, {"source": "$graphify-root$_src_api_router_parse_document", "target": "parsedplanresponse", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "src/api/router.py", "source_location": "L839", "weight": 1.0}, {"source": "$graphify-root$_src_api_router_resolve_coords", "target": "post", "relation": "references", "confidence": "EXTRACTED", "source_file": "src/api/router.py", "source_location": "L855", "weight": 1.0, "context": "decorator"}, {"source": "$graphify-root$_src_api_router_py", "target": "$graphify-root$_src_api_router_resolve_coords", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/api/router.py", "source_location": "L856", "weight": 1.0}, {"source": "$graphify-root$_src_api_router_resolve_coords", "target": "dayplanweb", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "src/api/router.py", "source_location": "L856", "weight": 1.0}, {"source": "$graphify-root$_src_api_router_resolve_coords", "target": "poi", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "src/api/router.py", "source_location": "L856", "weight": 1.0}, {"source": "$graphify-root$_src_api_router_validate_plan", "target": "post", "relation": "references", "confidence": "EXTRACTED", "source_file": "src/api/router.py", "source_location": "L868", "weight": 1.0, "context": "decorator"}, {"source": "$graphify-root$_src_api_router_py", "target": "$graphify-root$_src_api_router_validate_plan", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/api/router.py", "source_location": "L869", "weight": 1.0}, {"source": "$graphify-root$_src_api_router_validate_plan", "target": "validaterequest", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "src/api/router.py", "source_location": "L869", "weight": 1.0}, {"source": "$graphify-root$_src_api_router_validate_plan", "target": "validateresponse", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "src/api/router.py", "source_location": "L869", "weight": 1.0}, {"source": "$graphify-root$_src_api_router_guess_dwell", "target": "$graphify-root$_src_api_router_normalize", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/api/router.py", "source_location": "L253", "weight": 1.0}, {"source": "$graphify-root$_src_api_router_addr_to_region", "target": "get", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/api/router.py", "source_location": "L273", "weight": 1.0}, {"source": "$graphify-root$_src_api_router_build_jeju_place_index", "target": "get", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/api/router.py", "source_location": "L307", "weight": 1.0}, {"source": "$graphify-root$_src_api_router_build_jeju_place_index", "target": "$graphify-root$_src_api_router_normalize", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/api/router.py", "source_location": "L310", "weight": 1.0}, {"source": "$graphify-root$_src_api_router_build_jeju_place_index", "target": "$graphify-root$_src_api_router_parse_jeju_hours", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/api/router.py", "source_location": "L329", "weight": 1.0}, {"source": "$graphify-root$_src_api_router_build_coord_index", "target": "$graphify-root$_src_api_router_normalize", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/api/router.py", "source_location": "L354", "weight": 1.0}, {"source": "$graphify-root$_src_api_router_build_coord_index", "target": "$graphify-root$_src_api_router_addr_to_region", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/api/router.py", "source_location": "L360", "weight": 1.0}, {"source": "$graphify-root$_src_api_router_build_coord_index", "target": "get", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/api/router.py", "source_location": "L360", "weight": 1.0}, {"source": "$graphify-root$_src_api_router_build_place_list", "target": "get", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/api/router.py", "source_location": "L417", "weight": 1.0}, {"source": "$graphify-root$_src_api_router_build_place_list", "target": "$graphify-root$_src_api_router_normalize", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/api/router.py", "source_location": "L419", "weight": 1.0}, {"source": "$graphify-root$_src_api_router_build_full_place_list", "target": "$graphify-root$_src_api_router_normalize", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/api/router.py", "source_location": "L464", "weight": 1.0}, {"source": "$graphify-root$_src_api_router_build_full_place_list", "target": "$graphify-root$_src_api_router_addr_to_region", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/api/router.py", "source_location": "L475", "weight": 1.0}, {"source": "$graphify-root$_src_api_router_build_full_place_list", "target": "get", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/api/router.py", "source_location": "L475", "weight": 1.0}, {"source": "$graphify-root$_src_api_router_build_monthly_congestion", "target": "get", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/api/router.py", "source_location": "L566", "weight": 1.0}, {"source": "$graphify-root$_src_api_router_lookup_place", "target": "$graphify-root$_src_api_router_normalize", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/api/router.py", "source_location": "L602", "weight": 1.0}, {"source": "$graphify-root$_src_api_router_resolve_poi", "target": "$graphify-root$_src_api_router_lookup_place", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/api/router.py", "source_location": "L619", "weight": 1.0}, {"source": "$graphify-root$_src_api_router_resolve_poi", "target": "get", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/api/router.py", "source_location": "L620", "weight": 1.0}, {"source": "$graphify-root$_src_api_router_resolve_poi", "target": "$graphify-root$_src_api_router_normalize", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/api/router.py", "source_location": "L621", "weight": 1.0}, {"source": "$graphify-root$_src_api_router_resolve_poi", "target": "$graphify-root$_src_api_router_kakao_hint", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/api/router.py", "source_location": "L650", "weight": 1.0}, {"source": "$graphify-root$_src_api_router_resolve_poi", "target": "$graphify-root$_src_api_router_guess_dwell", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/api/router.py", "source_location": "L678", "weight": 1.0}, {"source": "$graphify-root$_src_api_router_resolve_poi", "target": "poi", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/api/router.py", "source_location": "L689", "weight": 1.0}, {"source": "$graphify-root$_src_api_router_resolve_poi", "target": "poiinfo", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/api/router.py", "source_location": "L697", "weight": 1.0}, {"source": "$graphify-root$_src_api_router_calc_reliability_score", "target": "get", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/api/router.py", "source_location": "L717", "weight": 1.0}, {"source": "$graphify-root$_src_api_router_get_pipeline", "target": "validatorpipeline", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/api/router.py", "source_location": "L727", "weight": 1.0}, {"source": "$graphify-root$_src_api_router_list_places", "target": "get", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/api/router.py", "source_location": "L745", "weight": 1.0}, {"source": "$graphify-root$_src_api_router_list_places", "target": "$graphify-root$_src_api_router_extract_chosung", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/api/router.py", "source_location": "L753", "weight": 1.0}, {"source": "$graphify-root$_src_api_router_list_places", "target": "$graphify-root$_src_api_router_normalize", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/api/router.py", "source_location": "L760", "weight": 1.0}, {"source": "$graphify-root$_src_api_router_list_places", "target": "$graphify-root$_src_api_router_addr_to_region", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/api/router.py", "source_location": "L765", "weight": 1.0}, {"source": "$graphify-root$_src_api_router_list_places", "target": "$graphify-root$_src_api_router_kakao_cat_code", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/api/router.py", "source_location": "L768", "weight": 1.0}, {"source": "$graphify-root$_src_api_router_list_places", "target": "placesresponse", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/api/router.py", "source_location": "L802", "weight": 1.0}, {"source": "$graphify-root$_src_api_router_monthly_congestion", "target": "get", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/api/router.py", "source_location": "L808", "weight": 1.0}, {"source": "$graphify-root$_src_api_router_monthly_congestion", "target": "$graphify-root$_src_api_router_normalize", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/api/router.py", "source_location": "L811", "weight": 1.0}, {"source": "$graphify-root$_src_api_router_list_regions", "target": "get", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/api/router.py", "source_location": "L823", "weight": 1.0}, {"source": "$graphify-root$_src_api_router_parse_document", "target": "get", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/api/router.py", "source_location": "L841", "weight": 1.0}, {"source": "$graphify-root$_src_api_router_resolve_coords", "target": "$graphify-root$_src_api_router_resolve_poi", "relation": "indirect_call", "context": "argument", "confidence": "INFERRED", "source_file": "src/api/router.py", "source_location": "L861", "weight": 1.0}, {"source": "$graphify-root$_src_api_router_validate_plan", "target": "$graphify-root$_src_api_router_resolve_poi", "relation": "indirect_call", "context": "argument", "confidence": "INFERRED", "source_file": "src/api/router.py", "source_location": "L882", "weight": 1.0}, {"source": "$graphify-root$_src_api_router_validate_plan", "target": "$graphify-root$_src_api_router_get_pipeline", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/api/router.py", "source_location": "L906", "weight": 1.0}, {"source": "$graphify-root$_src_api_router_validate_plan", "target": "$graphify-root$_src_api_router_calc_reliability_score", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/api/router.py", "source_location": "L920", "weight": 1.0}, {"source": "$graphify-root$_src_api_router_validate_plan", "target": "get", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/api/router.py", "source_location": "L933", "weight": 1.0}, {"source": "$graphify-root$_src_api_router_validate_plan", "target": "validateresponse", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/api/router.py", "source_location": "L963", "weight": 1.0}, {"source": "$graphify-root$_src_api_router_rationale_1", "target": "$graphify-root$_src_api_router_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/api/router.py", "source_location": "L1", "weight": 1.0}, {"source": "$graphify-root$_src_api_router_rationale_52", "target": "$graphify-root$_src_api_router_kakao_hint", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/api/router.py", "source_location": "L52", "weight": 1.0}, {"source": "$graphify-root$_src_api_router_rationale_66", "target": "$graphify-root$_src_api_router_kakao_cat_code", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/api/router.py", "source_location": "L66", "weight": 1.0}, {"source": "$graphify-root$_src_api_router_rationale_283", "target": "$graphify-root$_src_api_router_parse_jeju_hours", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/api/router.py", "source_location": "L283", "weight": 1.0}, {"source": "$graphify-root$_src_api_router_rationale_294", "target": "$graphify-root$_src_api_router_build_jeju_place_index", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/api/router.py", "source_location": "L294", "weight": 1.0}, {"source": "$graphify-root$_src_api_router_rationale_342", "target": "$graphify-root$_src_api_router_build_coord_index", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/api/router.py", "source_location": "L342", "weight": 1.0}, {"source": "$graphify-root$_src_api_router_rationale_395", "target": "$graphify-root$_src_api_router_build_place_list", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/api/router.py", "source_location": "L395", "weight": 1.0}, {"source": "$graphify-root$_src_api_router_rationale_454", "target": "$graphify-root$_src_api_router_build_full_place_list", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/api/router.py", "source_location": "L454", "weight": 1.0}, {"source": "$graphify-root$_src_api_router_rationale_556", "target": "$graphify-root$_src_api_router_build_monthly_congestion", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/api/router.py", "source_location": "L556", "weight": 1.0}, {"source": "$graphify-root$_src_api_router_rationale_600", "target": "$graphify-root$_src_api_router_lookup_place", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/api/router.py", "source_location": "L600", "weight": 1.0}, {"source": "$graphify-root$_src_api_router_rationale_736", "target": "$graphify-root$_src_api_router_list_places", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/api/router.py", "source_location": "L736", "weight": 1.0}, {"source": "$graphify-root$_src_api_router_rationale_831", "target": "$graphify-root$_src_api_router_parse_text", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/api/router.py", "source_location": "L831", "weight": 1.0}, {"source": "$graphify-root$_src_api_router_rationale_840", "target": "$graphify-root$_src_api_router_parse_document", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/api/router.py", "source_location": "L840", "weight": 1.0}, {"source": "$graphify-root$_src_api_router_rationale_857", "target": "$graphify-root$_src_api_router_resolve_coords", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/api/router.py", "source_location": "L857", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_src_api_router_extract_chosung", "callee": "ord", "is_member_call": false, "source_file": "src/api/router.py", "source_location": "L235", "receiver": null}, {"caller_nid": "$graphify-root$_src_api_router_extract_chosung", "callee": "append", "is_member_call": true, "source_file": "src/api/router.py", "source_location": "L237", "receiver": "result"}, {"caller_nid": "$graphify-root$_src_api_router_extract_chosung", "callee": "append", "is_member_call": true, "source_file": "src/api/router.py", "source_location": "L239", "receiver": "result"}, {"caller_nid": "$graphify-root$_src_api_router_extract_chosung", "callee": "join", "is_member_call": true, "source_file": "src/api/router.py", "source_location": "L240", "receiver": null}, {"caller_nid": "$graphify-root$_src_api_router_normalize", "callee": "sub", "is_member_call": true, "source_file": "src/api/router.py", "source_location": "L245", "receiver": "re"}, {"caller_nid": "$graphify-root$_src_api_router_normalize", "callee": "sub", "is_member_call": true, "source_file": "src/api/router.py", "source_location": "L247", "receiver": "re"}, {"caller_nid": "$graphify-root$_src_api_router_normalize", "callee": "lower", "is_member_call": true, "source_file": "src/api/router.py", "source_location": "L249", "receiver": null}, {"caller_nid": "$graphify-root$_src_api_router_normalize", "callee": "sub", "is_member_call": true, "source_file": "src/api/router.py", "source_location": "L249", "receiver": "re"}, {"caller_nid": "$graphify-root$_src_api_router_guess_dwell", "callee": "items", "is_member_call": true, "source_file": "src/api/router.py", "source_location": "L254", "receiver": "_DWELL_OVERRIDES"}, {"caller_nid": "$graphify-root$_src_api_router_addr_to_region", "callee": "split", "is_member_call": true, "source_file": "src/api/router.py", "source_location": "L272", "receiver": null}, {"caller_nid": "$graphify-root$_src_api_router_addr_to_region", "callee": "strip", "is_member_call": true, "source_file": "src/api/router.py", "source_location": "L272", "receiver": "addr"}, {"caller_nid": "$graphify-root$_src_api_router_addr_to_region", "callee": "strip", "is_member_call": true, "source_file": "src/api/router.py", "source_location": "L272", "receiver": "addr"}, {"caller_nid": "$graphify-root$_src_api_router_parse_jeju_hours", "callee": "strip", "is_member_call": true, "source_file": "src/api/router.py", "source_location": "L284", "receiver": null}, {"caller_nid": "$graphify-root$_src_api_router_parse_jeju_hours", "callee": "search", "is_member_call": true, "source_file": "src/api/router.py", "source_location": "L289", "receiver": "re"}, {"caller_nid": "$graphify-root$_src_api_router_parse_jeju_hours", "callee": "group", "is_member_call": true, "source_file": "src/api/router.py", "source_location": "L290", "receiver": "m"}, {"caller_nid": "$graphify-root$_src_api_router_parse_jeju_hours", "callee": "group", "is_member_call": true, "source_file": "src/api/router.py", "source_location": "L290", "receiver": "m"}, {"caller_nid": "$graphify-root$_src_api_router_build_jeju_place_index", "callee": "exists", "is_member_call": true, "source_file": "src/api/router.py", "source_location": "L299", "receiver": "path"}, {"caller_nid": "$graphify-root$_src_api_router_build_jeju_place_index", "callee": "load_workbook", "is_member_call": true, "source_file": "src/api/router.py", "source_location": "L301", "receiver": "openpyxl"}, {"caller_nid": "$graphify-root$_src_api_router_build_jeju_place_index", "callee": "iter_rows", "is_member_call": true, "source_file": "src/api/router.py", "source_location": "L303", "receiver": "ws"}, {"caller_nid": "$graphify-root$_src_api_router_build_jeju_place_index", "callee": "strip", "is_member_call": true, "source_file": "src/api/router.py", "source_location": "L304", "receiver": null}, {"caller_nid": "$graphify-root$_src_api_router_build_jeju_place_index", "callee": "strip", "is_member_call": true, "source_file": "src/api/router.py", "source_location": "L307", "receiver": null}, {"caller_nid": "$graphify-root$_src_api_router_build_jeju_place_index", "callee": "ValueError", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "src/api/router.py", "source_location": "L315"}, {"caller_nid": "$graphify-root$_src_api_router_build_jeju_place_index", "callee": "TypeError", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "src/api/router.py", "source_location": "L315"}, {"caller_nid": "$graphify-root$_src_api_router_build_jeju_place_index", "callee": "KeyError", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "src/api/router.py", "source_location": "L315"}, {"caller_nid": "$graphify-root$_src_api_router_build_jeju_place_index", "callee": "strip", "is_member_call": true, "source_file": "src/api/router.py", "source_location": "L321", "receiver": null}, {"caller_nid": "$graphify-root$_src_api_router_build_jeju_place_index", "callee": "upper", "is_member_call": true, "source_file": "src/api/router.py", "source_location": "L334", "receiver": null}, {"caller_nid": "$graphify-root$_src_api_router_build_jeju_place_index", "callee": "strip", "is_member_call": true, "source_file": "src/api/router.py", "source_location": "L334", "receiver": null}, {"caller_nid": "$graphify-root$_src_api_router_build_jeju_place_index", "callee": "close", "is_member_call": true, "source_file": "src/api/router.py", "source_location": "L337", "receiver": "wb"}, {"caller_nid": "$graphify-root$_src_api_router_build_coord_index", "callee": "exists", "is_member_call": true, "source_file": "src/api/router.py", "source_location": "L351", "receiver": "pois_path"}, {"caller_nid": "$graphify-root$_src_api_router_build_coord_index", "callee": "DictReader", "is_member_call": true, "source_file": "src/api/router.py", "source_location": "L353", "receiver": "csv"}, {"caller_nid": "$graphify-root$_src_api_router_build_coord_index", "callee": "f", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "src/api/router.py", "source_location": "L353"}, {"caller_nid": "$graphify-root$_src_api_router_build_coord_index", "callee": "ValueError", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "src/api/router.py", "source_location": "L365"}, {"caller_nid": "$graphify-root$_src_api_router_build_coord_index", "callee": "TypeError", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "src/api/router.py", "source_location": "L365"}, {"caller_nid": "$graphify-root$_src_api_router_build_coord_index", "callee": "exists", "is_member_call": true, "source_file": "src/api/router.py", "source_location": "L370", "receiver": "naver_path"}, {"caller_nid": "$graphify-root$_src_api_router_build_coord_index", "callee": "load", "is_member_call": true, "source_file": "src/api/router.py", "source_location": "L372", "receiver": "json"}, {"caller_nid": "$graphify-root$_src_api_router_build_coord_index", "callee": "f", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "src/api/router.py", "source_location": "L372"}, {"caller_nid": "$graphify-root$_src_api_router_build_coord_index", "callee": "ValueError", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "src/api/router.py", "source_location": "L384"}, {"caller_nid": "$graphify-root$_src_api_router_build_coord_index", "callee": "TypeError", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "src/api/router.py", "source_location": "L384"}, {"caller_nid": "$graphify-root$_src_api_router_build_coord_index", "callee": "items", "is_member_call": true, "source_file": "src/api/router.py", "source_location": "L388", "receiver": "_COORD_CATALOG"}, {"caller_nid": "$graphify-root$_src_api_router_build_place_list", "callee": "exists", "is_member_call": true, "source_file": "src/api/router.py", "source_location": "L397", "receiver": "cong_path"}, {"caller_nid": "$graphify-root$_src_api_router_build_place_list", "callee": "DictReader", "is_member_call": true, "source_file": "src/api/router.py", "source_location": "L402", "receiver": "csv"}, {"caller_nid": "$graphify-root$_src_api_router_build_place_list", "callee": "f", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "src/api/router.py", "source_location": "L402"}, {"caller_nid": "$graphify-root$_src_api_router_build_place_list", "callee": "ValueError", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "src/api/router.py", "source_location": "L408"}, {"caller_nid": "$graphify-root$_src_api_router_build_place_list", "callee": "TypeError", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "src/api/router.py", "source_location": "L408"}, {"caller_nid": "$graphify-root$_src_api_router_build_place_list", "callee": "exists", "is_member_call": true, "source_file": "src/api/router.py", "source_location": "L414", "receiver": "pois_path"}, {"caller_nid": "$graphify-root$_src_api_router_build_place_list", "callee": "DictReader", "is_member_call": true, "source_file": "src/api/router.py", "source_location": "L416", "receiver": "csv"}, {"caller_nid": "$graphify-root$_src_api_router_build_place_list", "callee": "f", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "src/api/router.py", "source_location": "L416"}, {"caller_nid": "$graphify-root$_src_api_router_build_place_list", "callee": "strip", "is_member_call": true, "source_file": "src/api/router.py", "source_location": "L417", "receiver": null}, {"caller_nid": "$graphify-root$_src_api_router_build_place_list", "callee": "items", "is_member_call": true, "source_file": "src/api/router.py", "source_location": "L422", "receiver": "place_max"}, {"caller_nid": "$graphify-root$_src_api_router_build_place_list", "callee": "items", "is_member_call": true, "source_file": "src/api/router.py", "source_location": "L432", "receiver": "coord_index"}, {"caller_nid": "$graphify-root$_src_api_router_build_place_list", "callee": "append", "is_member_call": true, "source_file": "src/api/router.py", "source_location": "L437", "receiver": "result"}, {"caller_nid": "$graphify-root$_src_api_router_build_place_list", "callee": "sort", "is_member_call": true, "source_file": "src/api/router.py", "source_location": "L449", "receiver": "result"}, {"caller_nid": "$graphify-root$_src_api_router_build_full_place_list", "callee": "exists", "is_member_call": true, "source_file": "src/api/router.py", "source_location": "L460", "receiver": "pois_path"}, {"caller_nid": "$graphify-root$_src_api_router_build_full_place_list", "callee": "DictReader", "is_member_call": true, "source_file": "src/api/router.py", "source_location": "L462", "receiver": "csv"}, {"caller_nid": "$graphify-root$_src_api_router_build_full_place_list", "callee": "f", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "src/api/router.py", "source_location": "L462"}, {"caller_nid": "$graphify-root$_src_api_router_build_full_place_list", "callee": "strip", "is_member_call": true, "source_file": "src/api/router.py", "source_location": "L463", "receiver": null}, {"caller_nid": "$graphify-root$_src_api_router_build_full_place_list", "callee": "add", "is_member_call": true, "source_file": "src/api/router.py", "source_location": "L467", "receiver": "seen"}, {"caller_nid": "$graphify-root$_src_api_router_build_full_place_list", "callee": "ValueError", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "src/api/router.py", "source_location": "L472"}, {"caller_nid": "$graphify-root$_src_api_router_build_full_place_list", "callee": "TypeError", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "src/api/router.py", "source_location": "L472"}, {"caller_nid": "$graphify-root$_src_api_router_build_full_place_list", "callee": "append", "is_member_call": true, "source_file": "src/api/router.py", "source_location": "L477", "receiver": "result"}, {"caller_nid": "$graphify-root$_src_api_router_build_full_place_list", "callee": "strip", "is_member_call": true, "source_file": "src/api/router.py", "source_location": "L486", "receiver": null}, {"caller_nid": "$graphify-root$_src_api_router_build_full_place_list", "callee": "strip", "is_member_call": true, "source_file": "src/api/router.py", "source_location": "L487", "receiver": null}, {"caller_nid": "$graphify-root$_src_api_router_build_full_place_list", "callee": "exists", "is_member_call": true, "source_file": "src/api/router.py", "source_location": "L493", "receiver": "wl_path"}, {"caller_nid": "$graphify-root$_src_api_router_build_full_place_list", "callee": "load", "is_member_call": true, "source_file": "src/api/router.py", "source_location": "L495", "receiver": "json"}, {"caller_nid": "$graphify-root$_src_api_router_build_full_place_list", "callee": "f", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "src/api/router.py", "source_location": "L495"}, {"caller_nid": "$graphify-root$_src_api_router_build_full_place_list", "callee": "strip", "is_member_call": true, "source_file": "src/api/router.py", "source_location": "L497", "receiver": null}, {"caller_nid": "$graphify-root$_src_api_router_build_full_place_list", "callee": "add", "is_member_call": true, "source_file": "src/api/router.py", "source_location": "L501", "receiver": "seen"}, {"caller_nid": "$graphify-root$_src_api_router_build_full_place_list", "callee": "ValueError", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "src/api/router.py", "source_location": "L504"}, {"caller_nid": "$graphify-root$_src_api_router_build_full_place_list", "callee": "TypeError", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "src/api/router.py", "source_location": "L504"}, {"caller_nid": "$graphify-root$_src_api_router_build_full_place_list", "callee": "append", "is_member_call": true, "source_file": "src/api/router.py", "source_location": "L506", "receiver": "result"}, {"caller_nid": "$graphify-root$_src_api_router_build_full_place_list", "callee": "strip", "is_member_call": true, "source_file": "src/api/router.py", "source_location": "L515", "receiver": null}, {"caller_nid": "$graphify-root$_src_api_router_build_full_place_list", "callee": "exists", "is_member_call": true, "source_file": "src/api/router.py", "source_location": "L521", "receiver": "bf_path"}, {"caller_nid": "$graphify-root$_src_api_router_build_full_place_list", "callee": "load", "is_member_call": true, "source_file": "src/api/router.py", "source_location": "L523", "receiver": "json"}, {"caller_nid": "$graphify-root$_src_api_router_build_full_place_list", "callee": "f", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "src/api/router.py", "source_location": "L523"}, {"caller_nid": "$graphify-root$_src_api_router_build_full_place_list", "callee": "strip", "is_member_call": true, "source_file": "src/api/router.py", "source_location": "L525", "receiver": null}, {"caller_nid": "$graphify-root$_src_api_router_build_full_place_list", "callee": "add", "is_member_call": true, "source_file": "src/api/router.py", "source_location": "L529", "receiver": "seen"}, {"caller_nid": "$graphify-root$_src_api_router_build_full_place_list", "callee": "ValueError", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "src/api/router.py", "source_location": "L532"}, {"caller_nid": "$graphify-root$_src_api_router_build_full_place_list", "callee": "TypeError", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "src/api/router.py", "source_location": "L532"}, {"caller_nid": "$graphify-root$_src_api_router_build_full_place_list", "callee": "append", "is_member_call": true, "source_file": "src/api/router.py", "source_location": "L535", "receiver": "bf_tags"}, {"caller_nid": "$graphify-root$_src_api_router_build_full_place_list", "callee": "append", "is_member_call": true, "source_file": "src/api/router.py", "source_location": "L536", "receiver": "bf_tags"}, {"caller_nid": "$graphify-root$_src_api_router_build_full_place_list", "callee": "append", "is_member_call": true, "source_file": "src/api/router.py", "source_location": "L537", "receiver": "bf_tags"}, {"caller_nid": "$graphify-root$_src_api_router_build_full_place_list", "callee": "append", "is_member_call": true, "source_file": "src/api/router.py", "source_location": "L538", "receiver": "bf_tags"}, {"caller_nid": "$graphify-root$_src_api_router_build_full_place_list", "callee": "append", "is_member_call": true, "source_file": "src/api/router.py", "source_location": "L539", "receiver": "result"}, {"caller_nid": "$graphify-root$_src_api_router_build_full_place_list", "callee": "strip", "is_member_call": true, "source_file": "src/api/router.py", "source_location": "L548", "receiver": null}, {"caller_nid": "$graphify-root$_src_api_router_build_monthly_congestion", "callee": "exists", "is_member_call": true, "source_file": "src/api/router.py", "source_location": "L559", "receiver": "cong_path"}, {"caller_nid": "$graphify-root$_src_api_router_build_monthly_congestion", "callee": "DictReader", "is_member_call": true, "source_file": "src/api/router.py", "source_location": "L562", "receiver": "csv"}, {"caller_nid": "$graphify-root$_src_api_router_build_monthly_congestion", "callee": "f", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "src/api/router.py", "source_location": "L562"}, {"caller_nid": "$graphify-root$_src_api_router_build_monthly_congestion", "callee": "ValueError", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "src/api/router.py", "source_location": "L570"}, {"caller_nid": "$graphify-root$_src_api_router_build_monthly_congestion", "callee": "TypeError", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "src/api/router.py", "source_location": "L570"}, {"caller_nid": "$graphify-root$_src_api_router_lookup_place", "callee": "items", "is_member_call": true, "source_file": "src/api/router.py", "source_location": "L608", "receiver": "_PLACE_NORM_INDEX"}, {"caller_nid": "$graphify-root$_src_api_router_lookup_place", "callee": "items", "is_member_call": true, "source_file": "src/api/router.py", "source_location": "L612", "receiver": "_JEJU_CSV_INDEX"}, {"caller_nid": "$graphify-root$_src_api_router_resolve_poi", "callee": "search_keyword", "is_member_call": true, "source_file": "src/api/router.py", "source_location": "L644", "receiver": "_KAKAO_LOCAL"}, {"caller_nid": "$graphify-root$_src_api_router_resolve_poi", "callee": "geocode_address", "is_member_call": true, "source_file": "src/api/router.py", "source_location": "L654", "receiver": "_KAKAO_LOCAL"}, {"caller_nid": "$graphify-root$_src_api_router_resolve_poi", "callee": "_DEFAULT_CENTER", "is_member_call": false, "indirect": true, "context": "assignment", "source_file": "src/api/router.py", "source_location": "L663"}, {"caller_nid": "$graphify-root$_src_api_router_resolve_poi", "callee": "resolve_hours", "is_member_call": false, "source_file": "src/api/router.py", "source_location": "L675", "receiver": null}, {"caller_nid": "$graphify-root$_src_api_router_resolve_poi", "callee": "search_places", "is_member_call": true, "source_file": "src/api/router.py", "source_location": "L683", "receiver": "_GRAPH"}, {"caller_nid": "$graphify-root$_src_api_router_resolve_poi", "callee": "find_nearby", "is_member_call": true, "source_file": "src/api/router.py", "source_location": "L687", "receiver": "_GRAPH"}, {"caller_nid": "$graphify-root$_src_api_router_list_places", "callee": "strip", "is_member_call": true, "source_file": "src/api/router.py", "source_location": "L748", "receiver": "ch"}, {"caller_nid": "$graphify-root$_src_api_router_list_places", "callee": "lower", "is_member_call": true, "source_file": "src/api/router.py", "source_location": "L750", "receiver": "q"}, {"caller_nid": "$graphify-root$_src_api_router_list_places", "callee": "startswith", "is_member_call": true, "source_file": "src/api/router.py", "source_location": "L754", "receiver": null}, {"caller_nid": "$graphify-root$_src_api_router_list_places", "callee": "lower", "is_member_call": true, "source_file": "src/api/router.py", "source_location": "L756", "receiver": null}, {"caller_nid": "$graphify-root$_src_api_router_list_places", "callee": "search_keyword_list", "is_member_call": true, "source_file": "src/api/router.py", "source_location": "L761", "receiver": "_KAKAO_LOCAL"}, {"caller_nid": "$graphify-root$_src_api_router_list_places", "callee": "add", "is_member_call": true, "source_file": "src/api/router.py", "source_location": "L771", "receiver": "existing"}, {"caller_nid": "$graphify-root$_src_api_router_list_places", "callee": "strip", "is_member_call": true, "source_file": "src/api/router.py", "source_location": "L776", "receiver": null}, {"caller_nid": "$graphify-root$_src_api_router_list_places", "callee": "split", "is_member_call": true, "source_file": "src/api/router.py", "source_location": "L776", "receiver": null}, {"caller_nid": "$graphify-root$_src_api_router_list_places", "callee": "PlaceItem", "is_member_call": false, "source_file": "src/api/router.py", "source_location": "L789", "receiver": null}, {"caller_nid": "$graphify-root$_src_api_router_monthly_congestion", "callee": "items", "is_member_call": true, "source_file": "src/api/router.py", "source_location": "L810", "receiver": "_MONTHLY_CONG"}, {"caller_nid": "$graphify-root$_src_api_router_monthly_congestion", "callee": "items", "is_member_call": true, "source_file": "src/api/router.py", "source_location": "L814", "receiver": "monthly"}, {"caller_nid": "$graphify-root$_src_api_router_list_regions", "callee": "Counter", "is_member_call": false, "source_file": "src/api/router.py", "source_location": "L821", "receiver": null}, {"caller_nid": "$graphify-root$_src_api_router_list_regions", "callee": "items", "is_member_call": true, "source_file": "src/api/router.py", "source_location": "L826", "receiver": "counts"}, {"caller_nid": "$graphify-root$_src_api_router_parse_text", "callee": "to_thread", "is_member_call": true, "source_file": "src/api/router.py", "source_location": "L833", "receiver": "asyncio"}, {"caller_nid": "$graphify-root$_src_api_router_parse_text", "callee": "HTTPException", "is_member_call": false, "source_file": "src/api/router.py", "source_location": "L835", "receiver": null}, {"caller_nid": "$graphify-root$_src_api_router_parse_text", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "src/api/router.py", "source_location": "L835"}, {"caller_nid": "$graphify-root$_src_api_router_parse_document", "callee": "lower", "is_member_call": true, "source_file": "src/api/router.py", "source_location": "L841", "receiver": null}, {"caller_nid": "$graphify-root$_src_api_router_parse_document", "callee": "HTTPException", "is_member_call": false, "source_file": "src/api/router.py", "source_location": "L843", "receiver": null}, {"caller_nid": "$graphify-root$_src_api_router_parse_document", "callee": "read", "is_member_call": true, "source_file": "src/api/router.py", "source_location": "L844", "receiver": "file"}, {"caller_nid": "$graphify-root$_src_api_router_parse_document", "callee": "HTTPException", "is_member_call": false, "source_file": "src/api/router.py", "source_location": "L846", "receiver": null}, {"caller_nid": "$graphify-root$_src_api_router_parse_document", "callee": "HTTPException", "is_member_call": false, "source_file": "src/api/router.py", "source_location": "L848", "receiver": null}, {"caller_nid": "$graphify-root$_src_api_router_parse_document", "callee": "to_thread", "is_member_call": true, "source_file": "src/api/router.py", "source_location": "L850", "receiver": "asyncio"}, {"caller_nid": "$graphify-root$_src_api_router_parse_document", "callee": "HTTPException", "is_member_call": false, "source_file": "src/api/router.py", "source_location": "L852", "receiver": null}, {"caller_nid": "$graphify-root$_src_api_router_parse_document", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "src/api/router.py", "source_location": "L852"}, {"caller_nid": "$graphify-root$_src_api_router_resolve_coords", "callee": "gather", "is_member_call": true, "source_file": "src/api/router.py", "source_location": "L859", "receiver": "asyncio"}, {"caller_nid": "$graphify-root$_src_api_router_resolve_coords", "callee": "to_thread", "is_member_call": true, "source_file": "src/api/router.py", "source_location": "L861", "receiver": "asyncio"}, {"caller_nid": "$graphify-root$_src_api_router_validate_plan", "callee": "HTTPException", "is_member_call": false, "source_file": "src/api/router.py", "source_location": "L871", "receiver": null}, {"caller_nid": "$graphify-root$_src_api_router_validate_plan", "callee": "gather", "is_member_call": true, "source_file": "src/api/router.py", "source_location": "L880", "receiver": "asyncio"}, {"caller_nid": "$graphify-root$_src_api_router_validate_plan", "callee": "to_thread", "is_member_call": true, "source_file": "src/api/router.py", "source_location": "L882", "receiver": "asyncio"}, {"caller_nid": "$graphify-root$_src_api_router_validate_plan", "callee": "model_copy", "is_member_call": true, "source_file": "src/api/router.py", "source_location": "L890", "receiver": "info"}, {"caller_nid": "$graphify-root$_src_api_router_validate_plan", "callee": "append", "is_member_call": true, "source_file": "src/api/router.py", "source_location": "L891", "receiver": null}, {"caller_nid": "$graphify-root$_src_api_router_validate_plan", "callee": "append", "is_member_call": true, "source_file": "src/api/router.py", "source_location": "L892", "receiver": "poi_info_list"}, {"caller_nid": "$graphify-root$_src_api_router_validate_plan", "callee": "ItineraryPlan", "is_member_call": false, "source_file": "src/api/router.py", "source_location": "L894", "receiver": null}, {"caller_nid": "$graphify-root$_src_api_router_validate_plan", "callee": "DayPlan", "is_member_call": false, "source_file": "src/api/router.py", "source_location": "L896", "receiver": null}, {"caller_nid": "$graphify-root$_src_api_router_validate_plan", "callee": "PlaceInput", "is_member_call": false, "source_file": "src/api/router.py", "source_location": "L896", "receiver": null}, {"caller_nid": "$graphify-root$_src_api_router_validate_plan", "callee": "to_thread", "is_member_call": true, "source_file": "src/api/router.py", "source_location": "L905", "receiver": "asyncio"}, {"caller_nid": "$graphify-root$_src_api_router_validate_plan", "callee": "model_copy", "is_member_call": true, "source_file": "src/api/router.py", "source_location": "L916", "receiver": "info"}, {"caller_nid": "$graphify-root$_src_api_router_validate_plan", "callee": "split", "is_member_call": true, "source_file": "src/api/router.py", "source_location": "L925", "receiver": null}, {"caller_nid": "$graphify-root$_src_api_router_validate_plan", "callee": "IndexError", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "src/api/router.py", "source_location": "L926"}, {"caller_nid": "$graphify-root$_src_api_router_validate_plan", "callee": "ValueError", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "src/api/router.py", "source_location": "L926"}, {"caller_nid": "$graphify-root$_src_api_router_validate_plan", "callee": "values", "is_member_call": true, "source_file": "src/api/router.py", "source_location": "L939", "receiver": "monthly"}, {"caller_nid": "$graphify-root$_src_api_router_validate_plan", "callee": "values", "is_member_call": true, "source_file": "src/api/router.py", "source_location": "L940", "receiver": "monthly"}, {"caller_nid": "$graphify-root$_src_api_router_validate_plan", "callee": "append", "is_member_call": true, "source_file": "src/api/router.py", "source_location": "L948", "receiver": "congestion_warnings"}, {"caller_nid": "$graphify-root$_src_api_router_validate_plan", "callee": "estimated", "is_member_call": false, "indirect": true, "context": "getattr", "source_file": "src/api/router.py", "source_location": "L969"}, {"caller_nid": "$graphify-root$_src_api_router_validate_plan", "callee": "model_dump", "is_member_call": true, "source_file": "src/api/router.py", "source_location": "L972", "receiver": "hf"}, {"caller_nid": "$graphify-root$_src_api_router_validate_plan", "callee": "model_dump", "is_member_call": true, "source_file": "src/api/router.py", "source_location": "L973", "receiver": "w"}, {"caller_nid": "$graphify-root$_src_api_router_validate_plan", "callee": "model_dump", "is_member_call": true, "source_file": "src/api/router.py", "source_location": "L974", "receiver": null}, {"caller_nid": "$graphify-root$_src_api_router_validate_plan", "callee": "model_dump", "is_member_call": true, "source_file": "src/api/router.py", "source_location": "L975", "receiver": "e"}, {"caller_nid": "$graphify-root$_src_api_router_validate_plan", "callee": "model_dump", "is_member_call": true, "source_file": "src/api/router.py", "source_location": "L979", "receiver": "a"}, {"caller_nid": "$graphify-root$_src_api_router_validate_plan", "callee": "items", "is_member_call": true, "source_file": "src/api/router.py", "source_location": "L979", "receiver": null}, {"caller_nid": "$graphify-root$_src_api_router_validate_plan", "callee": "model_dump", "is_member_call": true, "source_file": "src/api/router.py", "source_location": "L983", "receiver": "r"}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.31/1cf4b2953f79d03587cb233f060c575183ada7285a12f66cf1245f429bfef9f2.json b/graphify-out/cache/ast/v0.9.31/1cf4b2953f79d03587cb233f060c575183ada7285a12f66cf1245f429bfef9f2.json new file mode 100644 index 0000000..921f40e --- /dev/null +++ b/graphify-out/cache/ast/v0.9.31/1cf4b2953f79d03587cb233f060c575183ada7285a12f66cf1245f429bfef9f2.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_gun_scripts_preprocess_pois_py", "label": "preprocess_pois.py", "file_type": "code", "source_file": "gun/scripts/preprocess_pois.py", "source_location": "L1"}, {"id": "$graphify-root$_gun_scripts_preprocess_pois_parse_korean_address", "label": "parse_korean_address()", "file_type": "code", "source_file": "gun/scripts/preprocess_pois.py", "source_location": "L37", "_callable": true}, {"id": "$graphify-root$_gun_scripts_preprocess_pois_split_address_columns", "label": "split_address_columns()", "file_type": "code", "source_file": "gun/scripts/preprocess_pois.py", "source_location": "L92", "_callable": true}, {"id": "dataframe", "label": "DataFrame", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/gun/scripts/preprocess_pois.py"}, {"id": "$graphify-root$_gun_scripts_preprocess_pois_parse_eup_myeon_ri", "label": "parse_eup_myeon_ri()", "file_type": "code", "source_file": "gun/scripts/preprocess_pois.py", "source_location": "L120", "_callable": true}, {"id": "$graphify-root$_gun_scripts_preprocess_pois_split_eup_myeon_ri_columns", "label": "split_eup_myeon_ri_columns()", "file_type": "code", "source_file": "gun/scripts/preprocess_pois.py", "source_location": "L150", "_callable": true}, {"id": "$graphify-root$_gun_scripts_preprocess_pois_split_date_columns", "label": "split_date_columns()", "file_type": "code", "source_file": "gun/scripts/preprocess_pois.py", "source_location": "L175", "_callable": true}, {"id": "$graphify-root$_gun_scripts_preprocess_pois_preprocess", "label": "preprocess()", "file_type": "code", "source_file": "gun/scripts/preprocess_pois.py", "source_location": "L202", "_callable": true}, {"id": "path", "label": "Path", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/gun/scripts/preprocess_pois.py"}, {"id": "$graphify-root$_gun_scripts_preprocess_pois_main", "label": "main()", "file_type": "code", "source_file": "gun/scripts/preprocess_pois.py", "source_location": "L273", "_callable": true}, {"id": "$graphify-root$_gun_scripts_preprocess_pois_rationale_1", "label": "POI CSV \uc885\ud569 \uc804\ucc98\ub9ac ========================= TourAPI \uc6d0\ubcf8 CSV\uc5d0 \ub300\ud574 \uc138 \uac00\uc9c0 \ubcc0\ud658\uc744 \ud55c \ubc88\uc5d0 \uc801\uc6a9:\u2026", "file_type": "rationale", "source_file": "gun/scripts/preprocess_pois.py", "source_location": "L1"}, {"id": "$graphify-root$_gun_scripts_preprocess_pois_rationale_38", "label": "\ud55c\uad6d \uc8fc\uc18c \ubb38\uc790\uc5f4 \u2192 (\uc2dc\ub3c4, \uc2dc\uad70\uad6c, \uc74d\uba74\ub3d9\u00b7\ub3c4\ub85c\uba85) \ubd84\ub9ac. \uaddc\uce59 ---- 1. \uccab \ud1a0\ud070 = \uc2dc\ub3c4 (\uc5b4\ub5a4 \ud615\ud0dc\ub4e0 \uadf8\ub300\ub85c) 2. \uc2dc\uad70\uad6c\ub294\u2026", "file_type": "rationale", "source_file": "gun/scripts/preprocess_pois.py", "source_location": "L38"}, {"id": "$graphify-root$_gun_scripts_preprocess_pois_rationale_121", "label": "dong_or_road\ub97c \ub744\uc5b4\uc4f0\uae30\ub85c \ubd84\ub9ac \u2014 1\ubc88\uc9f8 \u2192 eup_myeon, 2\ubc88\uc9f8 \u2192 ri. 3\ubc88\uc9f8 \uc774\ud6c4 \ud1a0\ud070\uc740 \ubaa8\ub450 drop ('\ub9ac \ub2e8\uc704\u2026", "file_type": "rationale", "source_file": "gun/scripts/preprocess_pois.py", "source_location": "L121"}, {"id": "$graphify-root$_gun_scripts_preprocess_pois_rationale_181", "label": "YYYYMMDDHHMMSS \u2192 {prefix}_date / _year / _month (day, time \uc81c\uc678).", "file_type": "rationale", "source_file": "gun/scripts/preprocess_pois.py", "source_location": "L181"}], "edges": [{"source": "$graphify-root$_gun_scripts_preprocess_pois_py", "target": "argparse", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "gun/scripts/preprocess_pois.py", "source_location": "L25", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_preprocess_pois_py", "target": "sys", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "gun/scripts/preprocess_pois.py", "source_location": "L26", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_preprocess_pois_py", "target": "pathlib", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "gun/scripts/preprocess_pois.py", "source_location": "L27", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_preprocess_pois_py", "target": "pandas", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "gun/scripts/preprocess_pois.py", "source_location": "L29", "weight": 1.0, "local_alias": "pd"}, {"source": "$graphify-root$_gun_scripts_preprocess_pois_py", "target": "$graphify-root$_gun_scripts_preprocess_pois_parse_korean_address", "relation": "contains", "confidence": "EXTRACTED", "source_file": "gun/scripts/preprocess_pois.py", "source_location": "L37", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_preprocess_pois_py", "target": "$graphify-root$_gun_scripts_preprocess_pois_split_address_columns", "relation": "contains", "confidence": "EXTRACTED", "source_file": "gun/scripts/preprocess_pois.py", "source_location": "L92", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_preprocess_pois_split_address_columns", "target": "dataframe", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "gun/scripts/preprocess_pois.py", "source_location": "L92", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_preprocess_pois_split_address_columns", "target": "dataframe", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "gun/scripts/preprocess_pois.py", "source_location": "L92", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_preprocess_pois_py", "target": "$graphify-root$_gun_scripts_preprocess_pois_parse_eup_myeon_ri", "relation": "contains", "confidence": "EXTRACTED", "source_file": "gun/scripts/preprocess_pois.py", "source_location": "L120", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_preprocess_pois_py", "target": "$graphify-root$_gun_scripts_preprocess_pois_split_eup_myeon_ri_columns", "relation": "contains", "confidence": "EXTRACTED", "source_file": "gun/scripts/preprocess_pois.py", "source_location": "L150", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_preprocess_pois_split_eup_myeon_ri_columns", "target": "dataframe", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "gun/scripts/preprocess_pois.py", "source_location": "L150", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_preprocess_pois_split_eup_myeon_ri_columns", "target": "dataframe", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "gun/scripts/preprocess_pois.py", "source_location": "L150", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_preprocess_pois_py", "target": "$graphify-root$_gun_scripts_preprocess_pois_split_date_columns", "relation": "contains", "confidence": "EXTRACTED", "source_file": "gun/scripts/preprocess_pois.py", "source_location": "L175", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_preprocess_pois_split_date_columns", "target": "dataframe", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "gun/scripts/preprocess_pois.py", "source_location": "L175", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_preprocess_pois_split_date_columns", "target": "dataframe", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "gun/scripts/preprocess_pois.py", "source_location": "L175", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_preprocess_pois_py", "target": "$graphify-root$_gun_scripts_preprocess_pois_preprocess", "relation": "contains", "confidence": "EXTRACTED", "source_file": "gun/scripts/preprocess_pois.py", "source_location": "L202", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_preprocess_pois_preprocess", "target": "path", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "gun/scripts/preprocess_pois.py", "source_location": "L202", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_preprocess_pois_preprocess", "target": "path", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "gun/scripts/preprocess_pois.py", "source_location": "L202", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_preprocess_pois_py", "target": "$graphify-root$_gun_scripts_preprocess_pois_main", "relation": "contains", "confidence": "EXTRACTED", "source_file": "gun/scripts/preprocess_pois.py", "source_location": "L273", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_preprocess_pois_split_address_columns", "target": "$graphify-root$_gun_scripts_preprocess_pois_parse_korean_address", "relation": "indirect_call", "context": "argument", "confidence": "INFERRED", "source_file": "gun/scripts/preprocess_pois.py", "source_location": "L101", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_preprocess_pois_split_eup_myeon_ri_columns", "target": "$graphify-root$_gun_scripts_preprocess_pois_parse_eup_myeon_ri", "relation": "indirect_call", "context": "argument", "confidence": "INFERRED", "source_file": "gun/scripts/preprocess_pois.py", "source_location": "L159", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_preprocess_pois_preprocess", "target": "$graphify-root$_gun_scripts_preprocess_pois_split_address_columns", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "gun/scripts/preprocess_pois.py", "source_location": "L223", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_preprocess_pois_preprocess", "target": "$graphify-root$_gun_scripts_preprocess_pois_split_eup_myeon_ri_columns", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "gun/scripts/preprocess_pois.py", "source_location": "L226", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_preprocess_pois_preprocess", "target": "$graphify-root$_gun_scripts_preprocess_pois_split_date_columns", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "gun/scripts/preprocess_pois.py", "source_location": "L232", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_preprocess_pois_main", "target": "path", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "gun/scripts/preprocess_pois.py", "source_location": "L285", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_preprocess_pois_main", "target": "$graphify-root$_gun_scripts_preprocess_pois_preprocess", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "gun/scripts/preprocess_pois.py", "source_location": "L295", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_preprocess_pois_rationale_1", "target": "$graphify-root$_gun_scripts_preprocess_pois_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "gun/scripts/preprocess_pois.py", "source_location": "L1", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_preprocess_pois_rationale_38", "target": "$graphify-root$_gun_scripts_preprocess_pois_parse_korean_address", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "gun/scripts/preprocess_pois.py", "source_location": "L38", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_preprocess_pois_rationale_121", "target": "$graphify-root$_gun_scripts_preprocess_pois_parse_eup_myeon_ri", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "gun/scripts/preprocess_pois.py", "source_location": "L121", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_preprocess_pois_rationale_181", "target": "$graphify-root$_gun_scripts_preprocess_pois_split_date_columns", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "gun/scripts/preprocess_pois.py", "source_location": "L181", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_gun_scripts_preprocess_pois_parse_korean_address", "callee": "isna", "is_member_call": true, "source_file": "gun/scripts/preprocess_pois.py", "source_location": "L60", "receiver": "pd"}, {"caller_nid": "$graphify-root$_gun_scripts_preprocess_pois_parse_korean_address", "callee": "strip", "is_member_call": true, "source_file": "gun/scripts/preprocess_pois.py", "source_location": "L62", "receiver": null}, {"caller_nid": "$graphify-root$_gun_scripts_preprocess_pois_parse_korean_address", "callee": "split", "is_member_call": true, "source_file": "gun/scripts/preprocess_pois.py", "source_location": "L66", "receiver": "s"}, {"caller_nid": "$graphify-root$_gun_scripts_preprocess_pois_parse_korean_address", "callee": "endswith", "is_member_call": true, "source_file": "gun/scripts/preprocess_pois.py", "source_location": "L77", "receiver": null}, {"caller_nid": "$graphify-root$_gun_scripts_preprocess_pois_parse_korean_address", "callee": "endswith", "is_member_call": true, "source_file": "gun/scripts/preprocess_pois.py", "source_location": "L78", "receiver": null}, {"caller_nid": "$graphify-root$_gun_scripts_preprocess_pois_parse_korean_address", "callee": "endswith", "is_member_call": true, "source_file": "gun/scripts/preprocess_pois.py", "source_location": "L81", "receiver": null}, {"caller_nid": "$graphify-root$_gun_scripts_preprocess_pois_parse_korean_address", "callee": "_SIGUNGU_SUFFIX", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "gun/scripts/preprocess_pois.py", "source_location": "L81"}, {"caller_nid": "$graphify-root$_gun_scripts_preprocess_pois_parse_korean_address", "callee": "join", "is_member_call": true, "source_file": "gun/scripts/preprocess_pois.py", "source_location": "L89", "receiver": null}, {"caller_nid": "$graphify-root$_gun_scripts_preprocess_pois_split_address_columns", "callee": "apply", "is_member_call": true, "source_file": "gun/scripts/preprocess_pois.py", "source_location": "L101", "receiver": null}, {"caller_nid": "$graphify-root$_gun_scripts_preprocess_pois_split_address_columns", "callee": "apply", "is_member_call": true, "source_file": "gun/scripts/preprocess_pois.py", "source_location": "L102", "receiver": "parts"}, {"caller_nid": "$graphify-root$_gun_scripts_preprocess_pois_split_address_columns", "callee": "apply", "is_member_call": true, "source_file": "gun/scripts/preprocess_pois.py", "source_location": "L103", "receiver": "parts"}, {"caller_nid": "$graphify-root$_gun_scripts_preprocess_pois_split_address_columns", "callee": "apply", "is_member_call": true, "source_file": "gun/scripts/preprocess_pois.py", "source_location": "L104", "receiver": "parts"}, {"caller_nid": "$graphify-root$_gun_scripts_preprocess_pois_split_address_columns", "callee": "drop", "is_member_call": true, "source_file": "gun/scripts/preprocess_pois.py", "source_location": "L115", "receiver": "df"}, {"caller_nid": "$graphify-root$_gun_scripts_preprocess_pois_parse_eup_myeon_ri", "callee": "isna", "is_member_call": true, "source_file": "gun/scripts/preprocess_pois.py", "source_location": "L137", "receiver": "pd"}, {"caller_nid": "$graphify-root$_gun_scripts_preprocess_pois_parse_eup_myeon_ri", "callee": "strip", "is_member_call": true, "source_file": "gun/scripts/preprocess_pois.py", "source_location": "L139", "receiver": null}, {"caller_nid": "$graphify-root$_gun_scripts_preprocess_pois_parse_eup_myeon_ri", "callee": "split", "is_member_call": true, "source_file": "gun/scripts/preprocess_pois.py", "source_location": "L142", "receiver": "s"}, {"caller_nid": "$graphify-root$_gun_scripts_preprocess_pois_split_eup_myeon_ri_columns", "callee": "apply", "is_member_call": true, "source_file": "gun/scripts/preprocess_pois.py", "source_location": "L159", "receiver": null}, {"caller_nid": "$graphify-root$_gun_scripts_preprocess_pois_split_eup_myeon_ri_columns", "callee": "apply", "is_member_call": true, "source_file": "gun/scripts/preprocess_pois.py", "source_location": "L160", "receiver": "parts"}, {"caller_nid": "$graphify-root$_gun_scripts_preprocess_pois_split_eup_myeon_ri_columns", "callee": "apply", "is_member_call": true, "source_file": "gun/scripts/preprocess_pois.py", "source_location": "L161", "receiver": "parts"}, {"caller_nid": "$graphify-root$_gun_scripts_preprocess_pois_split_eup_myeon_ri_columns", "callee": "drop", "is_member_call": true, "source_file": "gun/scripts/preprocess_pois.py", "source_location": "L170", "receiver": "df"}, {"caller_nid": "$graphify-root$_gun_scripts_preprocess_pois_split_date_columns", "callee": "zfill", "is_member_call": true, "source_file": "gun/scripts/preprocess_pois.py", "source_location": "L186", "receiver": null}, {"caller_nid": "$graphify-root$_gun_scripts_preprocess_pois_split_date_columns", "callee": "astype", "is_member_call": true, "source_file": "gun/scripts/preprocess_pois.py", "source_location": "L186", "receiver": null}, {"caller_nid": "$graphify-root$_gun_scripts_preprocess_pois_split_date_columns", "callee": "str", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "gun/scripts/preprocess_pois.py", "source_location": "L186"}, {"caller_nid": "$graphify-root$_gun_scripts_preprocess_pois_split_date_columns", "callee": "match", "is_member_call": true, "source_file": "gun/scripts/preprocess_pois.py", "source_location": "L187", "receiver": null}, {"caller_nid": "$graphify-root$_gun_scripts_preprocess_pois_split_date_columns", "callee": "where", "is_member_call": true, "source_file": "gun/scripts/preprocess_pois.py", "source_location": "L192", "receiver": null}, {"caller_nid": "$graphify-root$_gun_scripts_preprocess_pois_split_date_columns", "callee": "astype", "is_member_call": true, "source_file": "gun/scripts/preprocess_pois.py", "source_location": "L193", "receiver": null}, {"caller_nid": "$graphify-root$_gun_scripts_preprocess_pois_split_date_columns", "callee": "to_numeric", "is_member_call": true, "source_file": "gun/scripts/preprocess_pois.py", "source_location": "L193", "receiver": "pd"}, {"caller_nid": "$graphify-root$_gun_scripts_preprocess_pois_split_date_columns", "callee": "astype", "is_member_call": true, "source_file": "gun/scripts/preprocess_pois.py", "source_location": "L194", "receiver": null}, {"caller_nid": "$graphify-root$_gun_scripts_preprocess_pois_split_date_columns", "callee": "to_numeric", "is_member_call": true, "source_file": "gun/scripts/preprocess_pois.py", "source_location": "L194", "receiver": "pd"}, {"caller_nid": "$graphify-root$_gun_scripts_preprocess_pois_split_date_columns", "callee": "drop", "is_member_call": true, "source_file": "gun/scripts/preprocess_pois.py", "source_location": "L197", "receiver": "df"}, {"caller_nid": "$graphify-root$_gun_scripts_preprocess_pois_preprocess", "callee": "read_csv", "is_member_call": true, "source_file": "gun/scripts/preprocess_pois.py", "source_location": "L209", "receiver": "pd"}, {"caller_nid": "$graphify-root$_gun_scripts_preprocess_pois_preprocess", "callee": "str", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "gun/scripts/preprocess_pois.py", "source_location": "L213"}, {"caller_nid": "$graphify-root$_gun_scripts_preprocess_pois_preprocess", "callee": "str", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "gun/scripts/preprocess_pois.py", "source_location": "L214"}, {"caller_nid": "$graphify-root$_gun_scripts_preprocess_pois_preprocess", "callee": "str", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "gun/scripts/preprocess_pois.py", "source_location": "L215"}, {"caller_nid": "$graphify-root$_gun_scripts_preprocess_pois_preprocess", "callee": "str", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "gun/scripts/preprocess_pois.py", "source_location": "L216"}, {"caller_nid": "$graphify-root$_gun_scripts_preprocess_pois_preprocess", "callee": "startswith", "is_member_call": true, "source_file": "gun/scripts/preprocess_pois.py", "source_location": "L239", "receiver": "c"}, {"caller_nid": "$graphify-root$_gun_scripts_preprocess_pois_preprocess", "callee": "index", "is_member_call": true, "source_file": "gun/scripts/preprocess_pois.py", "source_location": "L245", "receiver": "others"}, {"caller_nid": "$graphify-root$_gun_scripts_preprocess_pois_preprocess", "callee": "to_csv", "is_member_call": true, "source_file": "gun/scripts/preprocess_pois.py", "source_location": "L252", "receiver": "df"}, {"caller_nid": "$graphify-root$_gun_scripts_preprocess_pois_preprocess", "callee": "to_string", "is_member_call": true, "source_file": "gun/scripts/preprocess_pois.py", "source_location": "L262", "receiver": null}, {"caller_nid": "$graphify-root$_gun_scripts_preprocess_pois_preprocess", "callee": "head", "is_member_call": true, "source_file": "gun/scripts/preprocess_pois.py", "source_location": "L262", "receiver": null}, {"caller_nid": "$graphify-root$_gun_scripts_preprocess_pois_preprocess", "callee": "to_string", "is_member_call": true, "source_file": "gun/scripts/preprocess_pois.py", "source_location": "L266", "receiver": null}, {"caller_nid": "$graphify-root$_gun_scripts_preprocess_pois_preprocess", "callee": "head", "is_member_call": true, "source_file": "gun/scripts/preprocess_pois.py", "source_location": "L266", "receiver": null}, {"caller_nid": "$graphify-root$_gun_scripts_preprocess_pois_preprocess", "callee": "value_counts", "is_member_call": true, "source_file": "gun/scripts/preprocess_pois.py", "source_location": "L266", "receiver": null}, {"caller_nid": "$graphify-root$_gun_scripts_preprocess_pois_preprocess", "callee": "to_string", "is_member_call": true, "source_file": "gun/scripts/preprocess_pois.py", "source_location": "L270", "receiver": null}, {"caller_nid": "$graphify-root$_gun_scripts_preprocess_pois_preprocess", "callee": "sort_index", "is_member_call": true, "source_file": "gun/scripts/preprocess_pois.py", "source_location": "L270", "receiver": null}, {"caller_nid": "$graphify-root$_gun_scripts_preprocess_pois_preprocess", "callee": "value_counts", "is_member_call": true, "source_file": "gun/scripts/preprocess_pois.py", "source_location": "L270", "receiver": null}, {"caller_nid": "$graphify-root$_gun_scripts_preprocess_pois_main", "callee": "ArgumentParser", "is_member_call": true, "source_file": "gun/scripts/preprocess_pois.py", "source_location": "L274", "receiver": "argparse"}, {"caller_nid": "$graphify-root$_gun_scripts_preprocess_pois_main", "callee": "add_argument", "is_member_call": true, "source_file": "gun/scripts/preprocess_pois.py", "source_location": "L275", "receiver": "parser"}, {"caller_nid": "$graphify-root$_gun_scripts_preprocess_pois_main", "callee": "add_argument", "is_member_call": true, "source_file": "gun/scripts/preprocess_pois.py", "source_location": "L277", "receiver": "parser"}, {"caller_nid": "$graphify-root$_gun_scripts_preprocess_pois_main", "callee": "add_argument", "is_member_call": true, "source_file": "gun/scripts/preprocess_pois.py", "source_location": "L279", "receiver": "parser"}, {"caller_nid": "$graphify-root$_gun_scripts_preprocess_pois_main", "callee": "add_argument", "is_member_call": true, "source_file": "gun/scripts/preprocess_pois.py", "source_location": "L281", "receiver": "parser"}, {"caller_nid": "$graphify-root$_gun_scripts_preprocess_pois_main", "callee": "parse_args", "is_member_call": true, "source_file": "gun/scripts/preprocess_pois.py", "source_location": "L283", "receiver": "parser"}, {"caller_nid": "$graphify-root$_gun_scripts_preprocess_pois_main", "callee": "exists", "is_member_call": true, "source_file": "gun/scripts/preprocess_pois.py", "source_location": "L286", "receiver": "input_path"}, {"caller_nid": "$graphify-root$_gun_scripts_preprocess_pois_main", "callee": "exit", "is_member_call": true, "source_file": "gun/scripts/preprocess_pois.py", "source_location": "L287", "receiver": "sys"}, {"caller_nid": "$graphify-root$_gun_scripts_preprocess_pois_main", "callee": "mkdir", "is_member_call": true, "source_file": "gun/scripts/preprocess_pois.py", "source_location": "L294", "receiver": null}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.31/1d132817dbc4971166d49423ee3dc87b14ba552ac4ed2305ec58514a78f3bdce.json b/graphify-out/cache/ast/v0.9.31/1d132817dbc4971166d49423ee3dc87b14ba552ac4ed2305ec58514a78f3bdce.json new file mode 100644 index 0000000..6174014 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.31/1d132817dbc4971166d49423ee3dc87b14ba552ac4ed2305ec58514a78f3bdce.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_src_explain_explain_engine_py", "label": "explain_engine.py", "file_type": "code", "source_file": "src/explain/explain_engine.py", "source_location": "L1"}, {"id": "$graphify-root$_src_explain_explain_engine_lrucache", "label": "_LRUCache", "file_type": "code", "source_file": "src/explain/explain_engine.py", "source_location": "L44", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_src_explain_explain_engine_lrucache_init", "label": ".__init__()", "file_type": "code", "source_file": "src/explain/explain_engine.py", "source_location": "L47", "_callable": true}, {"id": "$graphify-root$_src_explain_explain_engine_lrucache_contains", "label": ".__contains__()", "file_type": "code", "source_file": "src/explain/explain_engine.py", "source_location": "L51", "_callable": true}, {"id": "$graphify-root$_src_explain_explain_engine_lrucache_getitem", "label": ".__getitem__()", "file_type": "code", "source_file": "src/explain/explain_engine.py", "source_location": "L54", "_callable": true}, {"id": "$graphify-root$_src_explain_explain_engine_lrucache_setitem", "label": ".__setitem__()", "file_type": "code", "source_file": "src/explain/explain_engine.py", "source_location": "L58", "_callable": true}, {"id": "$graphify-root$_src_explain_explain_engine_lrucache_clear", "label": ".clear()", "file_type": "code", "source_file": "src/explain/explain_engine.py", "source_location": "L65", "_callable": true}, {"id": "$graphify-root$_src_explain_explain_engine_cache_key", "label": "_cache_key()", "file_type": "code", "source_file": "src/explain/explain_engine.py", "source_location": "L171", "_callable": true}, {"id": "hardfail", "label": "HardFail", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/src/explain/explain_engine.py"}, {"id": "warning", "label": "Warning", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/src/explain/explain_engine.py"}, {"id": "$graphify-root$_src_explain_explain_engine_graph_context", "label": "_graph_context()", "file_type": "code", "source_file": "src/explain/explain_engine.py", "source_location": "L187", "_callable": true}, {"id": "graphretriever", "label": "GraphRetriever", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/src/explain/explain_engine.py"}, {"id": "$graphify-root$_src_explain_explain_engine_find_alternatives", "label": "_find_alternatives()", "file_type": "code", "source_file": "src/explain/explain_engine.py", "source_location": "L205", "_callable": true}, {"id": "alternativepoi", "label": "AlternativePOI", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/src/explain/explain_engine.py"}, {"id": "$graphify-root$_src_explain_explain_engine_build_user_prompt", "label": "_build_user_prompt()", "file_type": "code", "source_file": "src/explain/explain_engine.py", "source_location": "L215", "_callable": true}, {"id": "scores", "label": "Scores", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/src/explain/explain_engine.py"}, {"id": "itineraryplan", "label": "ItineraryPlan", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/src/explain/explain_engine.py"}, {"id": "$graphify-root$_src_explain_explain_engine_parse_llm_response", "label": "_parse_llm_response()", "file_type": "code", "source_file": "src/explain/explain_engine.py", "source_location": "L331", "_callable": true}, {"id": "explanationitem", "label": "ExplanationItem", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/src/explain/explain_engine.py"}, {"id": "$graphify-root$_src_explain_explain_engine_fallback", "label": "_fallback()", "file_type": "code", "source_file": "src/explain/explain_engine.py", "source_location": "L353", "_callable": true}, {"id": "$graphify-root$_src_explain_explain_engine_explainengine", "label": "ExplainEngine", "file_type": "code", "source_file": "src/explain/explain_engine.py", "source_location": "L416", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_src_explain_explain_engine_explainengine_init", "label": ".__init__()", "file_type": "code", "source_file": "src/explain/explain_engine.py", "source_location": "L419", "_callable": true}, {"id": "any", "label": "Any", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/src/explain/explain_engine.py"}, {"id": "$graphify-root$_src_explain_explain_engine_explainengine_is_available", "label": ".is_available()", "file_type": "code", "source_file": "src/explain/explain_engine.py", "source_location": "L438", "_callable": true}, {"id": "$graphify-root$_src_explain_explain_engine_explainengine_build_alternatives", "label": ".build_alternatives()", "file_type": "code", "source_file": "src/explain/explain_engine.py", "source_location": "L441", "_callable": true}, {"id": "$graphify-root$_src_explain_explain_engine_explainengine_generate", "label": ".generate()", "file_type": "code", "source_file": "src/explain/explain_engine.py", "source_location": "L452", "_callable": true}, {"id": "$graphify-root$_src_explain_explain_engine_explainengine_call_llm", "label": "._call_llm()", "file_type": "code", "source_file": "src/explain/explain_engine.py", "source_location": "L526", "_callable": true}, {"id": "$graphify-root$_src_explain_explain_engine_rationale_1", "label": "ExplainEngine \u2014 Claude API \uae30\ubc18 4\ub2e8\uacc4 \uc790\uc5f0\uc5b4 \uc124\uba85 \uc0dd\uc131\uae30. \uac80\uc99d \uc5d4\uc9c4\uc774 \ud0d0\uc9c0\ud55c Hard Fail / Warning /\u2026", "file_type": "rationale", "source_file": "src/explain/explain_engine.py", "source_location": "L1"}, {"id": "$graphify-root$_src_explain_explain_engine_rationale_45", "label": "\ucd5c\ub300 \ud06c\uae30 \uc81c\ud55c LRU \uce90\uc2dc \u2014 collections.OrderedDict \uae30\ubc18 (\uc678\ubd80 \uc758\uc874\uc131 \uc5c6\uc74c).", "file_type": "rationale", "source_file": "src/explain/explain_engine.py", "source_location": "L45"}, {"id": "$graphify-root$_src_explain_explain_engine_rationale_188", "label": "\uc9c0\uc2dd\uadf8\ub798\ud504\uc5d0\uc11c POI\uba85 \uac80\uc0c9 \u2192 \uc9c0\uc5ed/\uce74\ud14c\uace0\ub9ac + \ub3c4\ubcf4 \uadfc\uc811 \ub300\uc548 \uadfc\uac70. \uadf8\ub798\ud504 \ubbf8\uc124\uc815\uc774\uac70\ub098 \ub9e4\uce6d \uc2e4\ud328(\ub300\uc0c1 \uc9c0\uc5ed \ubc16 POI \ub4f1) \uc2dc None\u2026", "file_type": "rationale", "source_file": "src/explain/explain_engine.py", "source_location": "L188"}, {"id": "$graphify-root$_src_explain_explain_engine_rationale_206", "label": "\uc9c0\uc2dd\uadf8\ub798\ud504\uc5d0\uc11c POI\uba85 \uac80\uc0c9 \u2192 \ub3c4\ubcf4 \uadfc\uc811 \ub300\uc548 POI \ubaa9\ub85d. \ubbf8\ub9e4\uce6d/\ubbf8\uc124\uc815 \uc2dc \ube48 \ub9ac\uc2a4\ud2b8.", "file_type": "rationale", "source_file": "src/explain/explain_engine.py", "source_location": "L206"}, {"id": "$graphify-root$_src_explain_explain_engine_rationale_417", "label": "LLM \uae30\ubc18 4\ub2e8\uacc4 \uc124\uba85 \uc0dd\uc131 \uc5d4\uc9c4. External I/O = Claude API.", "file_type": "rationale", "source_file": "src/explain/explain_engine.py", "source_location": "L417"}, {"id": "$graphify-root$_src_explain_explain_engine_rationale_442", "label": "Hard Fail POI\ubcc4 \uc9c0\uc2dd\uadf8\ub798\ud504 \ub3c4\ubcf4\uad8c \ub300\uc548 \u2014 \uacb0\uacfc\ubcf4\uace0\uc11c\uc758 \ub300\uccb4 \uc81c\uc548 \uadfc\uac70.", "file_type": "rationale", "source_file": "src/explain/explain_engine.py", "source_location": "L442"}], "edges": [{"source": "$graphify-root$_src_explain_explain_engine_py", "target": "hashlib", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "src/explain/explain_engine.py", "source_location": "L15", "weight": 1.0}, {"source": "$graphify-root$_src_explain_explain_engine_py", "target": "json", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "src/explain/explain_engine.py", "source_location": "L16", "weight": 1.0}, {"source": "$graphify-root$_src_explain_explain_engine_py", "target": "os", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "src/explain/explain_engine.py", "source_location": "L17", "weight": 1.0}, {"source": "$graphify-root$_src_explain_explain_engine_py", "target": "collections", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "src/explain/explain_engine.py", "source_location": "L18", "weight": 1.0}, {"source": "$graphify-root$_src_explain_explain_engine_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "src/explain/explain_engine.py", "source_location": "L19", "weight": 1.0}, {"source": "$graphify-root$_src_explain_explain_engine_py", "target": "src_data_graph_retriever", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "src/explain/explain_engine.py", "source_location": "L21", "weight": 1.0}, {"source": "$graphify-root$_src_explain_explain_engine_py", "target": "src_data_models", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "src/explain/explain_engine.py", "source_location": "L22", "weight": 1.0}, {"source": "$graphify-root$_src_explain_explain_engine_py", "target": "anthropic", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "src/explain/explain_engine.py", "source_location": "L32", "weight": 1.0}, {"source": "$graphify-root$_src_explain_explain_engine_py", "target": "$graphify-root$_src_explain_explain_engine_lrucache", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/explain/explain_engine.py", "source_location": "L44", "weight": 1.0}, {"source": "$graphify-root$_src_explain_explain_engine_lrucache", "target": "$graphify-root$_src_explain_explain_engine_lrucache_init", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/explain/explain_engine.py", "source_location": "L47", "weight": 1.0}, {"source": "$graphify-root$_src_explain_explain_engine_lrucache", "target": "$graphify-root$_src_explain_explain_engine_lrucache_contains", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/explain/explain_engine.py", "source_location": "L51", "weight": 1.0}, {"source": "$graphify-root$_src_explain_explain_engine_lrucache", "target": "$graphify-root$_src_explain_explain_engine_lrucache_getitem", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/explain/explain_engine.py", "source_location": "L54", "weight": 1.0}, {"source": "$graphify-root$_src_explain_explain_engine_lrucache", "target": "$graphify-root$_src_explain_explain_engine_lrucache_setitem", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/explain/explain_engine.py", "source_location": "L58", "weight": 1.0}, {"source": "$graphify-root$_src_explain_explain_engine_lrucache", "target": "$graphify-root$_src_explain_explain_engine_lrucache_clear", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/explain/explain_engine.py", "source_location": "L65", "weight": 1.0}, {"source": "$graphify-root$_src_explain_explain_engine_py", "target": "$graphify-root$_src_explain_explain_engine_cache_key", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/explain/explain_engine.py", "source_location": "L171", "weight": 1.0}, {"source": "$graphify-root$_src_explain_explain_engine_cache_key", "target": "hardfail", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "src/explain/explain_engine.py", "source_location": "L171", "weight": 1.0}, {"source": "$graphify-root$_src_explain_explain_engine_cache_key", "target": "warning", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "src/explain/explain_engine.py", "source_location": "L171", "weight": 1.0}, {"source": "$graphify-root$_src_explain_explain_engine_py", "target": "$graphify-root$_src_explain_explain_engine_graph_context", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/explain/explain_engine.py", "source_location": "L187", "weight": 1.0}, {"source": "$graphify-root$_src_explain_explain_engine_graph_context", "target": "graphretriever", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "src/explain/explain_engine.py", "source_location": "L187", "weight": 1.0}, {"source": "$graphify-root$_src_explain_explain_engine_py", "target": "$graphify-root$_src_explain_explain_engine_find_alternatives", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/explain/explain_engine.py", "source_location": "L205", "weight": 1.0}, {"source": "$graphify-root$_src_explain_explain_engine_find_alternatives", "target": "graphretriever", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "src/explain/explain_engine.py", "source_location": "L205", "weight": 1.0}, {"source": "$graphify-root$_src_explain_explain_engine_find_alternatives", "target": "alternativepoi", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "src/explain/explain_engine.py", "source_location": "L205", "weight": 1.0}, {"source": "$graphify-root$_src_explain_explain_engine_py", "target": "$graphify-root$_src_explain_explain_engine_build_user_prompt", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/explain/explain_engine.py", "source_location": "L215", "weight": 1.0}, {"source": "$graphify-root$_src_explain_explain_engine_build_user_prompt", "target": "hardfail", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "src/explain/explain_engine.py", "source_location": "L215", "weight": 1.0}, {"source": "$graphify-root$_src_explain_explain_engine_build_user_prompt", "target": "warning", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "src/explain/explain_engine.py", "source_location": "L215", "weight": 1.0}, {"source": "$graphify-root$_src_explain_explain_engine_build_user_prompt", "target": "scores", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "src/explain/explain_engine.py", "source_location": "L215", "weight": 1.0}, {"source": "$graphify-root$_src_explain_explain_engine_build_user_prompt", "target": "itineraryplan", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "src/explain/explain_engine.py", "source_location": "L215", "weight": 1.0}, {"source": "$graphify-root$_src_explain_explain_engine_build_user_prompt", "target": "graphretriever", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "src/explain/explain_engine.py", "source_location": "L215", "weight": 1.0}, {"source": "$graphify-root$_src_explain_explain_engine_py", "target": "$graphify-root$_src_explain_explain_engine_parse_llm_response", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/explain/explain_engine.py", "source_location": "L331", "weight": 1.0}, {"source": "$graphify-root$_src_explain_explain_engine_parse_llm_response", "target": "explanationitem", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "src/explain/explain_engine.py", "source_location": "L331", "weight": 1.0}, {"source": "$graphify-root$_src_explain_explain_engine_py", "target": "$graphify-root$_src_explain_explain_engine_fallback", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/explain/explain_engine.py", "source_location": "L353", "weight": 1.0}, {"source": "$graphify-root$_src_explain_explain_engine_fallback", "target": "hardfail", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "src/explain/explain_engine.py", "source_location": "L353", "weight": 1.0}, {"source": "$graphify-root$_src_explain_explain_engine_fallback", "target": "warning", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "src/explain/explain_engine.py", "source_location": "L353", "weight": 1.0}, {"source": "$graphify-root$_src_explain_explain_engine_fallback", "target": "explanationitem", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "src/explain/explain_engine.py", "source_location": "L353", "weight": 1.0}, {"source": "$graphify-root$_src_explain_explain_engine_py", "target": "$graphify-root$_src_explain_explain_engine_explainengine", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/explain/explain_engine.py", "source_location": "L416", "weight": 1.0}, {"source": "$graphify-root$_src_explain_explain_engine_explainengine", "target": "$graphify-root$_src_explain_explain_engine_explainengine_init", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/explain/explain_engine.py", "source_location": "L419", "weight": 1.0}, {"source": "$graphify-root$_src_explain_explain_engine_explainengine_init", "target": "any", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "src/explain/explain_engine.py", "source_location": "L419", "weight": 1.0}, {"source": "$graphify-root$_src_explain_explain_engine_explainengine_init", "target": "graphretriever", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "src/explain/explain_engine.py", "source_location": "L419", "weight": 1.0}, {"source": "$graphify-root$_src_explain_explain_engine_explainengine", "target": "$graphify-root$_src_explain_explain_engine_explainengine_is_available", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/explain/explain_engine.py", "source_location": "L438", "weight": 1.0}, {"source": "$graphify-root$_src_explain_explain_engine_explainengine", "target": "$graphify-root$_src_explain_explain_engine_explainengine_build_alternatives", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/explain/explain_engine.py", "source_location": "L441", "weight": 1.0}, {"source": "$graphify-root$_src_explain_explain_engine_explainengine_build_alternatives", "target": "hardfail", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "src/explain/explain_engine.py", "source_location": "L441", "weight": 1.0}, {"source": "$graphify-root$_src_explain_explain_engine_explainengine_build_alternatives", "target": "alternativepoi", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "src/explain/explain_engine.py", "source_location": "L441", "weight": 1.0}, {"source": "$graphify-root$_src_explain_explain_engine_explainengine", "target": "$graphify-root$_src_explain_explain_engine_explainengine_generate", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/explain/explain_engine.py", "source_location": "L452", "weight": 1.0}, {"source": "$graphify-root$_src_explain_explain_engine_explainengine_generate", "target": "hardfail", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "src/explain/explain_engine.py", "source_location": "L452", "weight": 1.0}, {"source": "$graphify-root$_src_explain_explain_engine_explainengine_generate", "target": "warning", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "src/explain/explain_engine.py", "source_location": "L452", "weight": 1.0}, {"source": "$graphify-root$_src_explain_explain_engine_explainengine_generate", "target": "scores", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "src/explain/explain_engine.py", "source_location": "L452", "weight": 1.0}, {"source": "$graphify-root$_src_explain_explain_engine_explainengine_generate", "target": "itineraryplan", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "src/explain/explain_engine.py", "source_location": "L452", "weight": 1.0}, {"source": "$graphify-root$_src_explain_explain_engine_explainengine_generate", "target": "explanationitem", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "src/explain/explain_engine.py", "source_location": "L452", "weight": 1.0}, {"source": "$graphify-root$_src_explain_explain_engine_explainengine", "target": "$graphify-root$_src_explain_explain_engine_explainengine_call_llm", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/explain/explain_engine.py", "source_location": "L526", "weight": 1.0}, {"source": "$graphify-root$_src_explain_explain_engine_explainengine_call_llm", "target": "hardfail", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "src/explain/explain_engine.py", "source_location": "L526", "weight": 1.0}, {"source": "$graphify-root$_src_explain_explain_engine_explainengine_call_llm", "target": "warning", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "src/explain/explain_engine.py", "source_location": "L526", "weight": 1.0}, {"source": "$graphify-root$_src_explain_explain_engine_explainengine_call_llm", "target": "scores", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "src/explain/explain_engine.py", "source_location": "L526", "weight": 1.0}, {"source": "$graphify-root$_src_explain_explain_engine_explainengine_call_llm", "target": "itineraryplan", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "src/explain/explain_engine.py", "source_location": "L526", "weight": 1.0}, {"source": "$graphify-root$_src_explain_explain_engine_explainengine_call_llm", "target": "explanationitem", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "src/explain/explain_engine.py", "source_location": "L526", "weight": 1.0}, {"source": "$graphify-root$_src_explain_explain_engine_build_user_prompt", "target": "$graphify-root$_src_explain_explain_engine_graph_context", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/explain/explain_engine.py", "source_location": "L236", "weight": 1.0}, {"source": "$graphify-root$_src_explain_explain_engine_parse_llm_response", "target": "explanationitem", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/explain/explain_engine.py", "source_location": "L341", "weight": 1.0}, {"source": "$graphify-root$_src_explain_explain_engine_fallback", "target": "explanationitem", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/explain/explain_engine.py", "source_location": "L363", "weight": 1.0}, {"source": "$graphify-root$_src_explain_explain_engine_explainengine_build_alternatives", "target": "$graphify-root$_src_explain_explain_engine_find_alternatives", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/explain/explain_engine.py", "source_location": "L447", "weight": 1.0}, {"source": "$graphify-root$_src_explain_explain_engine_explainengine_generate", "target": "explanationitem", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/explain/explain_engine.py", "source_location": "L498", "weight": 1.0}, {"source": "$graphify-root$_src_explain_explain_engine_explainengine_generate", "target": "$graphify-root$_src_explain_explain_engine_explainengine_is_available", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/explain/explain_engine.py", "source_location": "L508", "weight": 1.0}, {"source": "$graphify-root$_src_explain_explain_engine_explainengine_generate", "target": "$graphify-root$_src_explain_explain_engine_fallback", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/explain/explain_engine.py", "source_location": "L509", "weight": 1.0}, {"source": "$graphify-root$_src_explain_explain_engine_explainengine_generate", "target": "$graphify-root$_src_explain_explain_engine_cache_key", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/explain/explain_engine.py", "source_location": "L512", "weight": 1.0}, {"source": "$graphify-root$_src_explain_explain_engine_explainengine_generate", "target": "$graphify-root$_src_explain_explain_engine_explainengine_call_llm", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/explain/explain_engine.py", "source_location": "L517", "weight": 1.0}, {"source": "$graphify-root$_src_explain_explain_engine_explainengine_call_llm", "target": "$graphify-root$_src_explain_explain_engine_build_user_prompt", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/explain/explain_engine.py", "source_location": "L536", "weight": 1.0}, {"source": "$graphify-root$_src_explain_explain_engine_explainengine_call_llm", "target": "$graphify-root$_src_explain_explain_engine_parse_llm_response", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/explain/explain_engine.py", "source_location": "L555", "weight": 1.0}, {"source": "$graphify-root$_src_explain_explain_engine_rationale_1", "target": "$graphify-root$_src_explain_explain_engine_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/explain/explain_engine.py", "source_location": "L1", "weight": 1.0}, {"source": "$graphify-root$_src_explain_explain_engine_rationale_45", "target": "$graphify-root$_src_explain_explain_engine_lrucache", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/explain/explain_engine.py", "source_location": "L45", "weight": 1.0}, {"source": "$graphify-root$_src_explain_explain_engine_rationale_188", "target": "$graphify-root$_src_explain_explain_engine_graph_context", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/explain/explain_engine.py", "source_location": "L188", "weight": 1.0}, {"source": "$graphify-root$_src_explain_explain_engine_rationale_206", "target": "$graphify-root$_src_explain_explain_engine_find_alternatives", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/explain/explain_engine.py", "source_location": "L206", "weight": 1.0}, {"source": "$graphify-root$_src_explain_explain_engine_rationale_417", "target": "$graphify-root$_src_explain_explain_engine_explainengine", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/explain/explain_engine.py", "source_location": "L417", "weight": 1.0}, {"source": "$graphify-root$_src_explain_explain_engine_rationale_442", "target": "$graphify-root$_src_explain_explain_engine_explainengine_build_alternatives", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/explain/explain_engine.py", "source_location": "L442", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_src_explain_explain_engine_lrucache_init", "callee": "OrderedDict", "is_member_call": false, "source_file": "src/explain/explain_engine.py", "source_location": "L48", "receiver": null}, {"caller_nid": "$graphify-root$_src_explain_explain_engine_lrucache_getitem", "callee": "move_to_end", "is_member_call": true, "source_file": "src/explain/explain_engine.py", "source_location": "L55", "receiver": null}, {"caller_nid": "$graphify-root$_src_explain_explain_engine_lrucache_setitem", "callee": "move_to_end", "is_member_call": true, "source_file": "src/explain/explain_engine.py", "source_location": "L60", "receiver": null}, {"caller_nid": "$graphify-root$_src_explain_explain_engine_lrucache_setitem", "callee": "popitem", "is_member_call": true, "source_file": "src/explain/explain_engine.py", "source_location": "L63", "receiver": null}, {"caller_nid": "$graphify-root$_src_explain_explain_engine_cache_key", "callee": "items", "is_member_call": true, "source_file": "src/explain/explain_engine.py", "source_location": "L180", "receiver": "penalty_breakdown"}, {"caller_nid": "$graphify-root$_src_explain_explain_engine_cache_key", "callee": "dumps", "is_member_call": true, "source_file": "src/explain/explain_engine.py", "source_location": "L183", "receiver": "json"}, {"caller_nid": "$graphify-root$_src_explain_explain_engine_cache_key", "callee": "hexdigest", "is_member_call": true, "source_file": "src/explain/explain_engine.py", "source_location": "L184", "receiver": null}, {"caller_nid": "$graphify-root$_src_explain_explain_engine_cache_key", "callee": "md5", "is_member_call": true, "source_file": "src/explain/explain_engine.py", "source_location": "L184", "receiver": "hashlib"}, {"caller_nid": "$graphify-root$_src_explain_explain_engine_cache_key", "callee": "encode", "is_member_call": true, "source_file": "src/explain/explain_engine.py", "source_location": "L184", "receiver": "raw"}, {"caller_nid": "$graphify-root$_src_explain_explain_engine_graph_context", "callee": "search_places", "is_member_call": true, "source_file": "src/explain/explain_engine.py", "source_location": "L194", "receiver": "graph"}, {"caller_nid": "$graphify-root$_src_explain_explain_engine_graph_context", "callee": "find_nearby", "is_member_call": true, "source_file": "src/explain/explain_engine.py", "source_location": "L199", "receiver": "graph"}, {"caller_nid": "$graphify-root$_src_explain_explain_engine_find_alternatives", "callee": "search_places", "is_member_call": true, "source_file": "src/explain/explain_engine.py", "source_location": "L209", "receiver": "graph"}, {"caller_nid": "$graphify-root$_src_explain_explain_engine_find_alternatives", "callee": "find_nearby", "is_member_call": true, "source_file": "src/explain/explain_engine.py", "source_location": "L212", "receiver": "graph"}, {"caller_nid": "$graphify-root$_src_explain_explain_engine_build_user_prompt", "callee": "append", "is_member_call": true, "source_file": "src/explain/explain_engine.py", "source_location": "L239", "receiver": "issues"}, {"caller_nid": "$graphify-root$_src_explain_explain_engine_build_user_prompt", "callee": "append", "is_member_call": true, "source_file": "src/explain/explain_engine.py", "source_location": "L258", "receiver": "issues"}, {"caller_nid": "$graphify-root$_src_explain_explain_engine_build_user_prompt", "callee": "items", "is_member_call": true, "source_file": "src/explain/explain_engine.py", "source_location": "L265", "receiver": "penalty_breakdown"}, {"caller_nid": "$graphify-root$_src_explain_explain_engine_build_user_prompt", "callee": "append", "is_member_call": true, "source_file": "src/explain/explain_engine.py", "source_location": "L266", "receiver": "issues"}, {"caller_nid": "$graphify-root$_src_explain_explain_engine_build_user_prompt", "callee": "get", "is_member_call": true, "source_file": "src/explain/explain_engine.py", "source_location": "L271", "receiver": "_PENALTY_RULES"}, {"caller_nid": "$graphify-root$_src_explain_explain_engine_build_user_prompt", "callee": "append", "is_member_call": true, "source_file": "src/explain/explain_engine.py", "source_location": "L276", "receiver": "issues"}, {"caller_nid": "$graphify-root$_src_explain_explain_engine_build_user_prompt", "callee": "values", "is_member_call": true, "source_file": "src/explain/explain_engine.py", "source_location": "L284", "receiver": "penalty_breakdown"}, {"caller_nid": "$graphify-root$_src_explain_explain_engine_build_user_prompt", "callee": "values", "is_member_call": true, "source_file": "src/explain/explain_engine.py", "source_location": "L285", "receiver": "bonus_breakdown"}, {"caller_nid": "$graphify-root$_src_explain_explain_engine_build_user_prompt", "callee": "dumps", "is_member_call": true, "source_file": "src/explain/explain_engine.py", "source_location": "L326", "receiver": "json"}, {"caller_nid": "$graphify-root$_src_explain_explain_engine_build_user_prompt", "callee": "dumps", "is_member_call": true, "source_file": "src/explain/explain_engine.py", "source_location": "L327", "receiver": "json"}, {"caller_nid": "$graphify-root$_src_explain_explain_engine_parse_llm_response", "callee": "strip", "is_member_call": true, "source_file": "src/explain/explain_engine.py", "source_location": "L332", "receiver": "raw"}, {"caller_nid": "$graphify-root$_src_explain_explain_engine_parse_llm_response", "callee": "startswith", "is_member_call": true, "source_file": "src/explain/explain_engine.py", "source_location": "L333", "receiver": "text"}, {"caller_nid": "$graphify-root$_src_explain_explain_engine_parse_llm_response", "callee": "split", "is_member_call": true, "source_file": "src/explain/explain_engine.py", "source_location": "L334", "receiver": "text"}, {"caller_nid": "$graphify-root$_src_explain_explain_engine_parse_llm_response", "callee": "strip", "is_member_call": true, "source_file": "src/explain/explain_engine.py", "source_location": "L335", "receiver": "l"}, {"caller_nid": "$graphify-root$_src_explain_explain_engine_parse_llm_response", "callee": "join", "is_member_call": true, "source_file": "src/explain/explain_engine.py", "source_location": "L336", "receiver": null}, {"caller_nid": "$graphify-root$_src_explain_explain_engine_parse_llm_response", "callee": "loads", "is_member_call": true, "source_file": "src/explain/explain_engine.py", "source_location": "L338", "receiver": "json"}, {"caller_nid": "$graphify-root$_src_explain_explain_engine_parse_llm_response", "callee": "append", "is_member_call": true, "source_file": "src/explain/explain_engine.py", "source_location": "L341", "receiver": "items"}, {"caller_nid": "$graphify-root$_src_explain_explain_engine_parse_llm_response", "callee": "get", "is_member_call": true, "source_file": "src/explain/explain_engine.py", "source_location": "L342", "receiver": "obj"}, {"caller_nid": "$graphify-root$_src_explain_explain_engine_parse_llm_response", "callee": "get", "is_member_call": true, "source_file": "src/explain/explain_engine.py", "source_location": "L343", "receiver": "obj"}, {"caller_nid": "$graphify-root$_src_explain_explain_engine_parse_llm_response", "callee": "get", "is_member_call": true, "source_file": "src/explain/explain_engine.py", "source_location": "L344", "receiver": "obj"}, {"caller_nid": "$graphify-root$_src_explain_explain_engine_parse_llm_response", "callee": "get", "is_member_call": true, "source_file": "src/explain/explain_engine.py", "source_location": "L345", "receiver": "obj"}, {"caller_nid": "$graphify-root$_src_explain_explain_engine_parse_llm_response", "callee": "get", "is_member_call": true, "source_file": "src/explain/explain_engine.py", "source_location": "L346", "receiver": "obj"}, {"caller_nid": "$graphify-root$_src_explain_explain_engine_parse_llm_response", "callee": "get", "is_member_call": true, "source_file": "src/explain/explain_engine.py", "source_location": "L347", "receiver": "obj"}, {"caller_nid": "$graphify-root$_src_explain_explain_engine_parse_llm_response", "callee": "get", "is_member_call": true, "source_file": "src/explain/explain_engine.py", "source_location": "L348", "receiver": "obj"}, {"caller_nid": "$graphify-root$_src_explain_explain_engine_fallback", "callee": "append", "is_member_call": true, "source_file": "src/explain/explain_engine.py", "source_location": "L363", "receiver": "items"}, {"caller_nid": "$graphify-root$_src_explain_explain_engine_fallback", "callee": "get", "is_member_call": true, "source_file": "src/explain/explain_engine.py", "source_location": "L367", "receiver": "_HARD_FAIL_RULES"}, {"caller_nid": "$graphify-root$_src_explain_explain_engine_fallback", "callee": "get", "is_member_call": true, "source_file": "src/explain/explain_engine.py", "source_location": "L369", "receiver": "_HARD_FAIL_SUGGESTIONS"}, {"caller_nid": "$graphify-root$_src_explain_explain_engine_fallback", "callee": "append", "is_member_call": true, "source_file": "src/explain/explain_engine.py", "source_location": "L375", "receiver": "items"}, {"caller_nid": "$graphify-root$_src_explain_explain_engine_fallback", "callee": "get", "is_member_call": true, "source_file": "src/explain/explain_engine.py", "source_location": "L379", "receiver": "_WARNING_RULES"}, {"caller_nid": "$graphify-root$_src_explain_explain_engine_fallback", "callee": "get", "is_member_call": true, "source_file": "src/explain/explain_engine.py", "source_location": "L381", "receiver": "_WARNING_SUGGESTIONS"}, {"caller_nid": "$graphify-root$_src_explain_explain_engine_fallback", "callee": "items", "is_member_call": true, "source_file": "src/explain/explain_engine.py", "source_location": "L385", "receiver": "penalty_breakdown"}, {"caller_nid": "$graphify-root$_src_explain_explain_engine_fallback", "callee": "append", "is_member_call": true, "source_file": "src/explain/explain_engine.py", "source_location": "L386", "receiver": "items"}, {"caller_nid": "$graphify-root$_src_explain_explain_engine_fallback", "callee": "get", "is_member_call": true, "source_file": "src/explain/explain_engine.py", "source_location": "L390", "receiver": "_PENALTY_RULES"}, {"caller_nid": "$graphify-root$_src_explain_explain_engine_fallback", "callee": "get", "is_member_call": true, "source_file": "src/explain/explain_engine.py", "source_location": "L392", "receiver": "_PENALTY_SUGGESTIONS"}, {"caller_nid": "$graphify-root$_src_explain_explain_engine_fallback", "callee": "append", "is_member_call": true, "source_file": "src/explain/explain_engine.py", "source_location": "L396", "receiver": "items"}, {"caller_nid": "$graphify-root$_src_explain_explain_engine_fallback", "callee": "values", "is_member_call": true, "source_file": "src/explain/explain_engine.py", "source_location": "L402", "receiver": "penalty_breakdown"}, {"caller_nid": "$graphify-root$_src_explain_explain_engine_explainengine_init", "callee": "get", "is_member_call": true, "source_file": "src/explain/explain_engine.py", "source_location": "L431", "receiver": null}, {"caller_nid": "$graphify-root$_src_explain_explain_engine_explainengine_init", "callee": "Anthropic", "is_member_call": true, "source_file": "src/explain/explain_engine.py", "source_location": "L434", "receiver": "anthropic"}, {"caller_nid": "$graphify-root$_src_explain_explain_engine_explainengine_init", "callee": "from_env", "is_member_call": true, "source_file": "src/explain/explain_engine.py", "source_location": "L436", "receiver": "GraphRetriever"}, {"caller_nid": "$graphify-root$_src_explain_explain_engine_explainengine_generate", "callee": "append", "is_member_call": true, "source_file": "src/explain/explain_engine.py", "source_location": "L468", "receiver": "strengths"}, {"caller_nid": "$graphify-root$_src_explain_explain_engine_explainengine_generate", "callee": "append", "is_member_call": true, "source_file": "src/explain/explain_engine.py", "source_location": "L470", "receiver": "strengths"}, {"caller_nid": "$graphify-root$_src_explain_explain_engine_explainengine_generate", "callee": "append", "is_member_call": true, "source_file": "src/explain/explain_engine.py", "source_location": "L472", "receiver": "strengths"}, {"caller_nid": "$graphify-root$_src_explain_explain_engine_explainengine_generate", "callee": "append", "is_member_call": true, "source_file": "src/explain/explain_engine.py", "source_location": "L474", "receiver": "strengths"}, {"caller_nid": "$graphify-root$_src_explain_explain_engine_explainengine_generate", "callee": "append", "is_member_call": true, "source_file": "src/explain/explain_engine.py", "source_location": "L476", "receiver": "strengths"}, {"caller_nid": "$graphify-root$_src_explain_explain_engine_explainengine_generate", "callee": "append", "is_member_call": true, "source_file": "src/explain/explain_engine.py", "source_location": "L478", "receiver": "improvement_hints"}, {"caller_nid": "$graphify-root$_src_explain_explain_engine_explainengine_generate", "callee": "append", "is_member_call": true, "source_file": "src/explain/explain_engine.py", "source_location": "L480", "receiver": "improvement_hints"}, {"caller_nid": "$graphify-root$_src_explain_explain_engine_explainengine_generate", "callee": "append", "is_member_call": true, "source_file": "src/explain/explain_engine.py", "source_location": "L482", "receiver": "improvement_hints"}, {"caller_nid": "$graphify-root$_src_explain_explain_engine_explainengine_generate", "callee": "values", "is_member_call": true, "source_file": "src/explain/explain_engine.py", "source_location": "L484", "receiver": "bonus_breakdown"}, {"caller_nid": "$graphify-root$_src_explain_explain_engine_explainengine_generate", "callee": "append", "is_member_call": true, "source_file": "src/explain/explain_engine.py", "source_location": "L487", "receiver": "fact_parts"}, {"caller_nid": "$graphify-root$_src_explain_explain_engine_explainengine_generate", "callee": "join", "is_member_call": true, "source_file": "src/explain/explain_engine.py", "source_location": "L487", "receiver": null}, {"caller_nid": "$graphify-root$_src_explain_explain_engine_explainengine_generate", "callee": "append", "is_member_call": true, "source_file": "src/explain/explain_engine.py", "source_location": "L489", "receiver": "fact_parts"}, {"caller_nid": "$graphify-root$_src_explain_explain_engine_explainengine_generate", "callee": "join", "is_member_call": true, "source_file": "src/explain/explain_engine.py", "source_location": "L492", "receiver": null}, {"caller_nid": "$graphify-root$_src_explain_explain_engine_explainengine_generate", "callee": "join", "is_member_call": true, "source_file": "src/explain/explain_engine.py", "source_location": "L501", "receiver": null}, {"caller_nid": "$graphify-root$_src_explain_explain_engine_explainengine_call_llm", "callee": "create", "is_member_call": true, "source_file": "src/explain/explain_engine.py", "source_location": "L542", "receiver": null}, {"caller_nid": "$graphify-root$_src_explain_explain_engine_explainengine_call_llm", "callee": "SYSTEM_PROMPT", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "src/explain/explain_engine.py", "source_location": "L548"}, {"caller_nid": "$graphify-root$_src_explain_explain_engine_explainengine_call_llm", "callee": "join", "is_member_call": true, "source_file": "src/explain/explain_engine.py", "source_location": "L555", "receiver": null}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.31/1d3d0b0e2a24fe31b116ad7acb19a4b3f223f5d1c6919444c5e50513ba40f413.json b/graphify-out/cache/ast/v0.9.31/1d3d0b0e2a24fe31b116ad7acb19a4b3f223f5d1c6919444c5e50513ba40f413.json new file mode 100644 index 0000000..d941462 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.31/1d3d0b0e2a24fe31b116ad7acb19a4b3f223f5d1c6919444c5e50513ba40f413.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_scripts_collect_naver_full_py", "label": "collect_naver_full.py", "file_type": "code", "source_file": "scripts/collect_naver_full.py", "source_location": "L1"}, {"id": "$graphify-root$_scripts_collect_naver_full_rate_get", "label": "_rate_get()", "file_type": "code", "source_file": "scripts/collect_naver_full.py", "source_location": "L93", "_callable": true}, {"id": "client", "label": "Client", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/scripts/collect_naver_full.py"}, {"id": "response", "label": "Response", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/scripts/collect_naver_full.py"}, {"id": "$graphify-root$_scripts_collect_naver_full_load_quota", "label": "load_quota()", "file_type": "code", "source_file": "scripts/collect_naver_full.py", "source_location": "L110", "_callable": true}, {"id": "$graphify-root$_scripts_collect_naver_full_save_quota", "label": "_save_quota()", "file_type": "code", "source_file": "scripts/collect_naver_full.py", "source_location": "L123", "_callable": true}, {"id": "$graphify-root$_scripts_collect_naver_full_increment_quota", "label": "_increment_quota()", "file_type": "code", "source_file": "scripts/collect_naver_full.py", "source_location": "L127", "_callable": true}, {"id": "$graphify-root$_scripts_collect_naver_full_strip", "label": "_strip()", "file_type": "code", "source_file": "scripts/collect_naver_full.py", "source_location": "L138", "_callable": true}, {"id": "$graphify-root$_scripts_collect_naver_full_count_hits", "label": "_count_hits()", "file_type": "code", "source_file": "scripts/collect_naver_full.py", "source_location": "L214", "_callable": true}, {"id": "$graphify-root$_scripts_collect_naver_full_parse_price", "label": "_parse_price()", "file_type": "code", "source_file": "scripts/collect_naver_full.py", "source_location": "L232", "_callable": true}, {"id": "$graphify-root$_scripts_collect_naver_full_extract_fields", "label": "extract_fields()", "file_type": "code", "source_file": "scripts/collect_naver_full.py", "source_location": "L255", "_callable": true}, {"id": "$graphify-root$_scripts_collect_naver_full_build_summary_text", "label": "build_summary_text()", "file_type": "code", "source_file": "scripts/collect_naver_full.py", "source_location": "L315", "_callable": true}, {"id": "$graphify-root$_scripts_collect_naver_full_fetch_blog_texts", "label": "_fetch_blog_texts()", "file_type": "code", "source_file": "scripts/collect_naver_full.py", "source_location": "L328", "_callable": true}, {"id": "$graphify-root$_scripts_collect_naver_full_fetch_and_extract", "label": "fetch_and_extract()", "file_type": "code", "source_file": "scripts/collect_naver_full.py", "source_location": "L354", "_callable": true}, {"id": "$graphify-root$_scripts_collect_naver_full_load_all_pois", "label": "load_all_pois()", "file_type": "code", "source_file": "scripts/collect_naver_full.py", "source_location": "L396", "_callable": true}, {"id": "$graphify-root$_scripts_collect_naver_full_load_progress", "label": "load_progress()", "file_type": "code", "source_file": "scripts/collect_naver_full.py", "source_location": "L406", "_callable": true}, {"id": "$graphify-root$_scripts_collect_naver_full_save_progress", "label": "save_progress()", "file_type": "code", "source_file": "scripts/collect_naver_full.py", "source_location": "L417", "_callable": true}, {"id": "$graphify-root$_scripts_collect_naver_full_save_output", "label": "save_output()", "file_type": "code", "source_file": "scripts/collect_naver_full.py", "source_location": "L422", "_callable": true}, {"id": "$graphify-root$_scripts_collect_naver_full_print_stats", "label": "print_stats()", "file_type": "code", "source_file": "scripts/collect_naver_full.py", "source_location": "L431", "_callable": true}, {"id": "$graphify-root$_scripts_collect_naver_full_main", "label": "main()", "file_type": "code", "source_file": "scripts/collect_naver_full.py", "source_location": "L464", "_callable": true}, {"id": "$graphify-root$_scripts_collect_naver_full_rationale_111", "label": "\uc624\ub298 \ub0a0\uc9dc \uae30\uc900 \ub0a8\uc740 API \ud638\ucd9c \uc218 \ubc18\ud658.", "file_type": "rationale", "source_file": "scripts/collect_naver_full.py", "source_location": "L111"}, {"id": "$graphify-root$_scripts_collect_naver_full_rationale_128", "label": "\ud638\ucd9c \uce74\uc6b4\ud2b8 \uc99d\uac00. \ud55c\ub3c4 \ucd08\uacfc \uc2dc False \ubc18\ud658.", "file_type": "rationale", "source_file": "scripts/collect_naver_full.py", "source_location": "L128"}, {"id": "$graphify-root$_scripts_collect_naver_full_rationale_407", "label": "contentid \u2192 record \ub515\uc154\ub108\ub9ac \ubc18\ud658 (progress \ud30c\uc77c\uc774 list \ud615\uc2dd\ub3c4 \ucc98\ub9ac).", "file_type": "rationale", "source_file": "scripts/collect_naver_full.py", "source_location": "L407"}], "edges": [{"source": "$graphify-root$_scripts_collect_naver_full_py", "target": "argparse", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/collect_naver_full.py", "source_location": "L22", "weight": 1.0}, {"source": "$graphify-root$_scripts_collect_naver_full_py", "target": "csv", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/collect_naver_full.py", "source_location": "L23", "weight": 1.0}, {"source": "$graphify-root$_scripts_collect_naver_full_py", "target": "json", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/collect_naver_full.py", "source_location": "L24", "weight": 1.0}, {"source": "$graphify-root$_scripts_collect_naver_full_py", "target": "os", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/collect_naver_full.py", "source_location": "L25", "weight": 1.0}, {"source": "$graphify-root$_scripts_collect_naver_full_py", "target": "re", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/collect_naver_full.py", "source_location": "L26", "weight": 1.0}, {"source": "$graphify-root$_scripts_collect_naver_full_py", "target": "sys", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/collect_naver_full.py", "source_location": "L27", "weight": 1.0}, {"source": "$graphify-root$_scripts_collect_naver_full_py", "target": "threading", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/collect_naver_full.py", "source_location": "L28", "weight": 1.0}, {"source": "$graphify-root$_scripts_collect_naver_full_py", "target": "time", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/collect_naver_full.py", "source_location": "L29", "weight": 1.0}, {"source": "$graphify-root$_scripts_collect_naver_full_py", "target": "concurrent_futures", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/collect_naver_full.py", "source_location": "L30", "weight": 1.0}, {"source": "$graphify-root$_scripts_collect_naver_full_py", "target": "datetime", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/collect_naver_full.py", "source_location": "L31", "weight": 1.0}, {"source": "$graphify-root$_scripts_collect_naver_full_py", "target": "pathlib", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/collect_naver_full.py", "source_location": "L32", "weight": 1.0}, {"source": "$graphify-root$_scripts_collect_naver_full_py", "target": "httpx", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/collect_naver_full.py", "source_location": "L34", "weight": 1.0}, {"source": "$graphify-root$_scripts_collect_naver_full_py", "target": "dotenv", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/collect_naver_full.py", "source_location": "L35", "weight": 1.0}, {"source": "$graphify-root$_scripts_collect_naver_full_py", "target": "tqdm", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/collect_naver_full.py", "source_location": "L36", "weight": 1.0}, {"source": "$graphify-root$_scripts_collect_naver_full_py", "target": "$graphify-root$_scripts_collect_naver_full_rate_get", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/collect_naver_full.py", "source_location": "L93", "weight": 1.0}, {"source": "$graphify-root$_scripts_collect_naver_full_rate_get", "target": "client", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "scripts/collect_naver_full.py", "source_location": "L93", "weight": 1.0}, {"source": "$graphify-root$_scripts_collect_naver_full_rate_get", "target": "response", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "scripts/collect_naver_full.py", "source_location": "L93", "weight": 1.0}, {"source": "$graphify-root$_scripts_collect_naver_full_py", "target": "$graphify-root$_scripts_collect_naver_full_load_quota", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/collect_naver_full.py", "source_location": "L110", "weight": 1.0}, {"source": "$graphify-root$_scripts_collect_naver_full_py", "target": "$graphify-root$_scripts_collect_naver_full_save_quota", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/collect_naver_full.py", "source_location": "L123", "weight": 1.0}, {"source": "$graphify-root$_scripts_collect_naver_full_py", "target": "$graphify-root$_scripts_collect_naver_full_increment_quota", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/collect_naver_full.py", "source_location": "L127", "weight": 1.0}, {"source": "$graphify-root$_scripts_collect_naver_full_py", "target": "$graphify-root$_scripts_collect_naver_full_strip", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/collect_naver_full.py", "source_location": "L138", "weight": 1.0}, {"source": "$graphify-root$_scripts_collect_naver_full_py", "target": "$graphify-root$_scripts_collect_naver_full_count_hits", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/collect_naver_full.py", "source_location": "L214", "weight": 1.0}, {"source": "$graphify-root$_scripts_collect_naver_full_py", "target": "$graphify-root$_scripts_collect_naver_full_parse_price", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/collect_naver_full.py", "source_location": "L232", "weight": 1.0}, {"source": "$graphify-root$_scripts_collect_naver_full_py", "target": "$graphify-root$_scripts_collect_naver_full_extract_fields", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/collect_naver_full.py", "source_location": "L255", "weight": 1.0}, {"source": "$graphify-root$_scripts_collect_naver_full_py", "target": "$graphify-root$_scripts_collect_naver_full_build_summary_text", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/collect_naver_full.py", "source_location": "L315", "weight": 1.0}, {"source": "$graphify-root$_scripts_collect_naver_full_py", "target": "$graphify-root$_scripts_collect_naver_full_fetch_blog_texts", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/collect_naver_full.py", "source_location": "L328", "weight": 1.0}, {"source": "$graphify-root$_scripts_collect_naver_full_fetch_blog_texts", "target": "client", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "scripts/collect_naver_full.py", "source_location": "L328", "weight": 1.0}, {"source": "$graphify-root$_scripts_collect_naver_full_py", "target": "$graphify-root$_scripts_collect_naver_full_fetch_and_extract", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/collect_naver_full.py", "source_location": "L354", "weight": 1.0}, {"source": "$graphify-root$_scripts_collect_naver_full_fetch_and_extract", "target": "client", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "scripts/collect_naver_full.py", "source_location": "L354", "weight": 1.0}, {"source": "$graphify-root$_scripts_collect_naver_full_py", "target": "$graphify-root$_scripts_collect_naver_full_load_all_pois", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/collect_naver_full.py", "source_location": "L396", "weight": 1.0}, {"source": "$graphify-root$_scripts_collect_naver_full_py", "target": "$graphify-root$_scripts_collect_naver_full_load_progress", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/collect_naver_full.py", "source_location": "L406", "weight": 1.0}, {"source": "$graphify-root$_scripts_collect_naver_full_py", "target": "$graphify-root$_scripts_collect_naver_full_save_progress", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/collect_naver_full.py", "source_location": "L417", "weight": 1.0}, {"source": "$graphify-root$_scripts_collect_naver_full_py", "target": "$graphify-root$_scripts_collect_naver_full_save_output", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/collect_naver_full.py", "source_location": "L422", "weight": 1.0}, {"source": "$graphify-root$_scripts_collect_naver_full_py", "target": "$graphify-root$_scripts_collect_naver_full_print_stats", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/collect_naver_full.py", "source_location": "L431", "weight": 1.0}, {"source": "$graphify-root$_scripts_collect_naver_full_py", "target": "$graphify-root$_scripts_collect_naver_full_main", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/collect_naver_full.py", "source_location": "L464", "weight": 1.0}, {"source": "$graphify-root$_scripts_collect_naver_full_increment_quota", "target": "$graphify-root$_scripts_collect_naver_full_save_quota", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/collect_naver_full.py", "source_location": "L133", "weight": 1.0}, {"source": "$graphify-root$_scripts_collect_naver_full_extract_fields", "target": "$graphify-root$_scripts_collect_naver_full_count_hits", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/collect_naver_full.py", "source_location": "L270", "weight": 1.0}, {"source": "$graphify-root$_scripts_collect_naver_full_extract_fields", "target": "$graphify-root$_scripts_collect_naver_full_parse_price", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/collect_naver_full.py", "source_location": "L285", "weight": 1.0}, {"source": "$graphify-root$_scripts_collect_naver_full_fetch_blog_texts", "target": "$graphify-root$_scripts_collect_naver_full_rate_get", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/collect_naver_full.py", "source_location": "L331", "weight": 1.0}, {"source": "$graphify-root$_scripts_collect_naver_full_fetch_blog_texts", "target": "$graphify-root$_scripts_collect_naver_full_strip", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/collect_naver_full.py", "source_location": "L345", "weight": 1.0}, {"source": "$graphify-root$_scripts_collect_naver_full_fetch_and_extract", "target": "$graphify-root$_scripts_collect_naver_full_increment_quota", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/collect_naver_full.py", "source_location": "L361", "weight": 1.0}, {"source": "$graphify-root$_scripts_collect_naver_full_fetch_and_extract", "target": "$graphify-root$_scripts_collect_naver_full_fetch_blog_texts", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/collect_naver_full.py", "source_location": "L367", "weight": 1.0}, {"source": "$graphify-root$_scripts_collect_naver_full_fetch_and_extract", "target": "$graphify-root$_scripts_collect_naver_full_extract_fields", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/collect_naver_full.py", "source_location": "L378", "weight": 1.0}, {"source": "$graphify-root$_scripts_collect_naver_full_fetch_and_extract", "target": "$graphify-root$_scripts_collect_naver_full_build_summary_text", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/collect_naver_full.py", "source_location": "L391", "weight": 1.0}, {"source": "$graphify-root$_scripts_collect_naver_full_main", "target": "$graphify-root$_scripts_collect_naver_full_load_progress", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/collect_naver_full.py", "source_location": "L477", "weight": 1.0}, {"source": "$graphify-root$_scripts_collect_naver_full_main", "target": "$graphify-root$_scripts_collect_naver_full_load_all_pois", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/collect_naver_full.py", "source_location": "L478", "weight": 1.0}, {"source": "$graphify-root$_scripts_collect_naver_full_main", "target": "$graphify-root$_scripts_collect_naver_full_load_quota", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/collect_naver_full.py", "source_location": "L481", "weight": 1.0}, {"source": "$graphify-root$_scripts_collect_naver_full_main", "target": "$graphify-root$_scripts_collect_naver_full_print_stats", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/collect_naver_full.py", "source_location": "L494", "weight": 1.0}, {"source": "$graphify-root$_scripts_collect_naver_full_main", "target": "$graphify-root$_scripts_collect_naver_full_save_output", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/collect_naver_full.py", "source_location": "L504", "weight": 1.0}, {"source": "$graphify-root$_scripts_collect_naver_full_main", "target": "client", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/collect_naver_full.py", "source_location": "L512", "weight": 1.0}, {"source": "$graphify-root$_scripts_collect_naver_full_main", "target": "$graphify-root$_scripts_collect_naver_full_fetch_and_extract", "relation": "indirect_call", "context": "argument", "confidence": "INFERRED", "source_file": "scripts/collect_naver_full.py", "source_location": "L514", "weight": 1.0}, {"source": "$graphify-root$_scripts_collect_naver_full_main", "target": "$graphify-root$_scripts_collect_naver_full_save_progress", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/collect_naver_full.py", "source_location": "L530", "weight": 1.0}, {"source": "$graphify-root$_scripts_collect_naver_full_main", "target": "$graphify-root$_scripts_collect_naver_full_save_quota", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/collect_naver_full.py", "source_location": "L536", "weight": 1.0}, {"source": "$graphify-root$_scripts_collect_naver_full_rationale_111", "target": "$graphify-root$_scripts_collect_naver_full_load_quota", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/collect_naver_full.py", "source_location": "L111", "weight": 1.0}, {"source": "$graphify-root$_scripts_collect_naver_full_rationale_128", "target": "$graphify-root$_scripts_collect_naver_full_increment_quota", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/collect_naver_full.py", "source_location": "L128", "weight": 1.0}, {"source": "$graphify-root$_scripts_collect_naver_full_rationale_407", "target": "$graphify-root$_scripts_collect_naver_full_load_progress", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/collect_naver_full.py", "source_location": "L407", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_scripts_collect_naver_full_rate_get", "callee": "monotonic", "is_member_call": true, "source_file": "scripts/collect_naver_full.py", "source_location": "L95", "receiver": "time"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_full_rate_get", "callee": "pop", "is_member_call": true, "source_file": "scripts/collect_naver_full.py", "source_location": "L97", "receiver": "_req_times"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_full_rate_get", "callee": "_req_times", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/collect_naver_full.py", "source_location": "L98"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_full_rate_get", "callee": "sleep", "is_member_call": true, "source_file": "scripts/collect_naver_full.py", "source_location": "L101", "receiver": "time"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_full_rate_get", "callee": "append", "is_member_call": true, "source_file": "scripts/collect_naver_full.py", "source_location": "L102", "receiver": "_req_times"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_full_rate_get", "callee": "monotonic", "is_member_call": true, "source_file": "scripts/collect_naver_full.py", "source_location": "L102", "receiver": "time"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_full_rate_get", "callee": "get", "is_member_call": true, "source_file": "scripts/collect_naver_full.py", "source_location": "L103", "receiver": "client"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_full_load_quota", "callee": "today", "is_member_call": true, "source_file": "scripts/collect_naver_full.py", "source_location": "L113", "receiver": "date"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_full_load_quota", "callee": "exists", "is_member_call": true, "source_file": "scripts/collect_naver_full.py", "source_location": "L114", "receiver": "QUOTA_PATH"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_full_load_quota", "callee": "QUOTA_PATH", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/collect_naver_full.py", "source_location": "L115"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_full_load_quota", "callee": "load", "is_member_call": true, "source_file": "scripts/collect_naver_full.py", "source_location": "L116", "receiver": "json"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_full_load_quota", "callee": "f", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/collect_naver_full.py", "source_location": "L116"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_full_load_quota", "callee": "get", "is_member_call": true, "source_file": "scripts/collect_naver_full.py", "source_location": "L117", "receiver": "q"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_full_load_quota", "callee": "get", "is_member_call": true, "source_file": "scripts/collect_naver_full.py", "source_location": "L118", "receiver": "q"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_full_load_quota", "callee": "DAILY_CALL_LIMIT", "is_member_call": false, "indirect": true, "context": "return", "source_file": "scripts/collect_naver_full.py", "source_location": "L121"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_full_save_quota", "callee": "QUOTA_PATH", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/collect_naver_full.py", "source_location": "L124"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_full_save_quota", "callee": "dump", "is_member_call": true, "source_file": "scripts/collect_naver_full.py", "source_location": "L125", "receiver": "json"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_full_save_quota", "callee": "f", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/collect_naver_full.py", "source_location": "L125"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_full_save_quota", "callee": "_daily_calls", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "scripts/collect_naver_full.py", "source_location": "L125"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_full_save_quota", "callee": "today", "is_member_call": true, "source_file": "scripts/collect_naver_full.py", "source_location": "L125", "receiver": "date"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_full_strip", "callee": "sub", "is_member_call": true, "source_file": "scripts/collect_naver_full.py", "source_location": "L139", "receiver": "re"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_full_parse_price", "callee": "get", "is_member_call": true, "source_file": "scripts/collect_naver_full.py", "source_location": "L233", "receiver": "_TYPE_THRESHOLDS"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_full_parse_price", "callee": "finditer", "is_member_call": true, "source_file": "scripts/collect_naver_full.py", "source_location": "L235", "receiver": "_PRICE_RE"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_full_parse_price", "callee": "group", "is_member_call": true, "source_file": "scripts/collect_naver_full.py", "source_location": "L236", "receiver": "m"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_full_parse_price", "callee": "group", "is_member_call": true, "source_file": "scripts/collect_naver_full.py", "source_location": "L236", "receiver": "m"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_full_parse_price", "callee": "append", "is_member_call": true, "source_file": "scripts/collect_naver_full.py", "source_location": "L238", "receiver": "prices"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_full_parse_price", "callee": "replace", "is_member_call": true, "source_file": "scripts/collect_naver_full.py", "source_location": "L238", "receiver": "raw"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_full_parse_price", "callee": "group", "is_member_call": true, "source_file": "scripts/collect_naver_full.py", "source_location": "L239", "receiver": "m"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_full_parse_price", "callee": "append", "is_member_call": true, "source_file": "scripts/collect_naver_full.py", "source_location": "L240", "receiver": "prices"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_full_parse_price", "callee": "group", "is_member_call": true, "source_file": "scripts/collect_naver_full.py", "source_location": "L240", "receiver": "m"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_full_parse_price", "callee": "group", "is_member_call": true, "source_file": "scripts/collect_naver_full.py", "source_location": "L241", "receiver": "m"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_full_parse_price", "callee": "append", "is_member_call": true, "source_file": "scripts/collect_naver_full.py", "source_location": "L242", "receiver": "prices"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_full_parse_price", "callee": "group", "is_member_call": true, "source_file": "scripts/collect_naver_full.py", "source_location": "L242", "receiver": "m"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_full_parse_price", "callee": "group", "is_member_call": true, "source_file": "scripts/collect_naver_full.py", "source_location": "L243", "receiver": "m"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_full_parse_price", "callee": "group", "is_member_call": true, "source_file": "scripts/collect_naver_full.py", "source_location": "L243", "receiver": "m"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_full_parse_price", "callee": "append", "is_member_call": true, "source_file": "scripts/collect_naver_full.py", "source_location": "L244", "receiver": "prices"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_full_parse_price", "callee": "group", "is_member_call": true, "source_file": "scripts/collect_naver_full.py", "source_location": "L244", "receiver": "m"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_full_parse_price", "callee": "group", "is_member_call": true, "source_file": "scripts/collect_naver_full.py", "source_location": "L244", "receiver": "m"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_full_extract_fields", "callee": "join", "is_member_call": true, "source_file": "scripts/collect_naver_full.py", "source_location": "L256", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_collect_naver_full_extract_fields", "callee": "decide", "is_member_call": false, "source_file": "scripts/collect_naver_full.py", "source_location": "L266", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_collect_naver_full_extract_fields", "callee": "decide", "is_member_call": false, "source_file": "scripts/collect_naver_full.py", "source_location": "L267", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_collect_naver_full_extract_fields", "callee": "decide", "is_member_call": false, "source_file": "scripts/collect_naver_full.py", "source_location": "L268", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_collect_naver_full_build_summary_text", "callee": "get", "is_member_call": true, "source_file": "scripts/collect_naver_full.py", "source_location": "L317", "receiver": "record"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_full_build_summary_text", "callee": "get", "is_member_call": true, "source_file": "scripts/collect_naver_full.py", "source_location": "L317", "receiver": "record"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_full_build_summary_text", "callee": "get", "is_member_call": true, "source_file": "scripts/collect_naver_full.py", "source_location": "L318", "receiver": "record"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_full_build_summary_text", "callee": "items", "is_member_call": true, "source_file": "scripts/collect_naver_full.py", "source_location": "L320", "receiver": "_FIELD_TEXT"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_full_build_summary_text", "callee": "get", "is_member_call": true, "source_file": "scripts/collect_naver_full.py", "source_location": "L321", "receiver": "record"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_full_build_summary_text", "callee": "append", "is_member_call": true, "source_file": "scripts/collect_naver_full.py", "source_location": "L323", "receiver": "parts"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_full_build_summary_text", "callee": "join", "is_member_call": true, "source_file": "scripts/collect_naver_full.py", "source_location": "L324", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_collect_naver_full_fetch_blog_texts", "callee": "MAX_RETRIES", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/collect_naver_full.py", "source_location": "L329"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_full_fetch_blog_texts", "callee": "NAVER_BLOG_URL", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/collect_naver_full.py", "source_location": "L332"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_full_fetch_blog_texts", "callee": "NAVER_HEADERS", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/collect_naver_full.py", "source_location": "L333"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_full_fetch_blog_texts", "callee": "BLOG_DISPLAY", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "scripts/collect_naver_full.py", "source_location": "L334"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_full_fetch_blog_texts", "callee": "exit", "is_member_call": true, "source_file": "scripts/collect_naver_full.py", "source_location": "L339", "receiver": "sys"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_full_fetch_blog_texts", "callee": "get", "is_member_call": true, "source_file": "scripts/collect_naver_full.py", "source_location": "L345", "receiver": "it"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_full_fetch_blog_texts", "callee": "get", "is_member_call": true, "source_file": "scripts/collect_naver_full.py", "source_location": "L345", "receiver": "it"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_full_fetch_blog_texts", "callee": "get", "is_member_call": true, "source_file": "scripts/collect_naver_full.py", "source_location": "L346", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_collect_naver_full_fetch_blog_texts", "callee": "json", "is_member_call": true, "source_file": "scripts/collect_naver_full.py", "source_location": "L346", "receiver": "resp"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_full_fetch_blog_texts", "callee": "sleep", "is_member_call": true, "source_file": "scripts/collect_naver_full.py", "source_location": "L350", "receiver": "time"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_full_fetch_and_extract", "callee": "get", "is_member_call": true, "source_file": "scripts/collect_naver_full.py", "source_location": "L356", "receiver": "poi"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_full_fetch_and_extract", "callee": "get", "is_member_call": true, "source_file": "scripts/collect_naver_full.py", "source_location": "L357", "receiver": "poi"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_full_fetch_and_extract", "callee": "get", "is_member_call": true, "source_file": "scripts/collect_naver_full.py", "source_location": "L358", "receiver": "TYPE_QUERY_SUFFIX"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_full_fetch_and_extract", "callee": "CALLS_PER_POI", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/collect_naver_full.py", "source_location": "L361"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_full_fetch_and_extract", "callee": "strip", "is_member_call": true, "source_file": "scripts/collect_naver_full.py", "source_location": "L367", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_collect_naver_full_fetch_and_extract", "callee": "add", "is_member_call": true, "source_file": "scripts/collect_naver_full.py", "source_location": "L375", "receiver": "seen"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_full_fetch_and_extract", "callee": "append", "is_member_call": true, "source_file": "scripts/collect_naver_full.py", "source_location": "L376", "receiver": "all_texts"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_full_fetch_and_extract", "callee": "update", "is_member_call": true, "source_file": "scripts/collect_naver_full.py", "source_location": "L379", "receiver": "fields"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_full_fetch_and_extract", "callee": "get", "is_member_call": true, "source_file": "scripts/collect_naver_full.py", "source_location": "L382", "receiver": "poi"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_full_fetch_and_extract", "callee": "get", "is_member_call": true, "source_file": "scripts/collect_naver_full.py", "source_location": "L384", "receiver": "poi"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_full_fetch_and_extract", "callee": "get", "is_member_call": true, "source_file": "scripts/collect_naver_full.py", "source_location": "L386", "receiver": "TYPE_LABEL"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_full_fetch_and_extract", "callee": "get", "is_member_call": true, "source_file": "scripts/collect_naver_full.py", "source_location": "L387", "receiver": "poi"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_full_fetch_and_extract", "callee": "get", "is_member_call": true, "source_file": "scripts/collect_naver_full.py", "source_location": "L388", "receiver": "poi"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_full_load_all_pois", "callee": "CSV_PATH", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/collect_naver_full.py", "source_location": "L398"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_full_load_all_pois", "callee": "DictReader", "is_member_call": true, "source_file": "scripts/collect_naver_full.py", "source_location": "L399", "receiver": "csv"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_full_load_all_pois", "callee": "f", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/collect_naver_full.py", "source_location": "L399"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_full_load_all_pois", "callee": "append", "is_member_call": true, "source_file": "scripts/collect_naver_full.py", "source_location": "L400", "receiver": "rows"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_full_load_all_pois", "callee": "sort", "is_member_call": true, "source_file": "scripts/collect_naver_full.py", "source_location": "L401", "receiver": "rows"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_full_load_all_pois", "callee": "get", "is_member_call": true, "source_file": "scripts/collect_naver_full.py", "source_location": "L401", "receiver": "TYPE_PRIORITY"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_full_load_all_pois", "callee": "get", "is_member_call": true, "source_file": "scripts/collect_naver_full.py", "source_location": "L401", "receiver": "r"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_full_load_progress", "callee": "exists", "is_member_call": true, "source_file": "scripts/collect_naver_full.py", "source_location": "L408", "receiver": "PROGRESS_PATH"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_full_load_progress", "callee": "PROGRESS_PATH", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/collect_naver_full.py", "source_location": "L409"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_full_load_progress", "callee": "load", "is_member_call": true, "source_file": "scripts/collect_naver_full.py", "source_location": "L410", "receiver": "json"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_full_load_progress", "callee": "f", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/collect_naver_full.py", "source_location": "L410"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_full_load_progress", "callee": "list", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/collect_naver_full.py", "source_location": "L411"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_full_load_progress", "callee": "dict", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/collect_naver_full.py", "source_location": "L413"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_full_save_progress", "callee": "mkdir", "is_member_call": true, "source_file": "scripts/collect_naver_full.py", "source_location": "L418", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_collect_naver_full_save_progress", "callee": "PROGRESS_PATH", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/collect_naver_full.py", "source_location": "L419"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_full_save_progress", "callee": "dump", "is_member_call": true, "source_file": "scripts/collect_naver_full.py", "source_location": "L420", "receiver": "json"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_full_save_progress", "callee": "f", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/collect_naver_full.py", "source_location": "L420"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_full_save_progress", "callee": "values", "is_member_call": true, "source_file": "scripts/collect_naver_full.py", "source_location": "L420", "receiver": "results"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_full_save_output", "callee": "values", "is_member_call": true, "source_file": "scripts/collect_naver_full.py", "source_location": "L423", "receiver": "results"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_full_save_output", "callee": "get", "is_member_call": true, "source_file": "scripts/collect_naver_full.py", "source_location": "L423", "receiver": "r"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_full_save_output", "callee": "mkdir", "is_member_call": true, "source_file": "scripts/collect_naver_full.py", "source_location": "L424", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_collect_naver_full_save_output", "callee": "OUTPUT_PATH", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/collect_naver_full.py", "source_location": "L425"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_full_save_output", "callee": "dump", "is_member_call": true, "source_file": "scripts/collect_naver_full.py", "source_location": "L426", "receiver": "json"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_full_save_output", "callee": "f", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/collect_naver_full.py", "source_location": "L426"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_full_print_stats", "callee": "get", "is_member_call": true, "source_file": "scripts/collect_naver_full.py", "source_location": "L440", "receiver": "r"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_full_print_stats", "callee": "cnt", "is_member_call": false, "source_file": "scripts/collect_naver_full.py", "source_location": "L441", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_collect_naver_full_print_stats", "callee": "get", "is_member_call": true, "source_file": "scripts/collect_naver_full.py", "source_location": "L441", "receiver": "r"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_full_print_stats", "callee": "cnt", "is_member_call": false, "source_file": "scripts/collect_naver_full.py", "source_location": "L441", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_collect_naver_full_print_stats", "callee": "get", "is_member_call": true, "source_file": "scripts/collect_naver_full.py", "source_location": "L441", "receiver": "r"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_full_print_stats", "callee": "cnt", "is_member_call": false, "source_file": "scripts/collect_naver_full.py", "source_location": "L441", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_collect_naver_full_print_stats", "callee": "get", "is_member_call": true, "source_file": "scripts/collect_naver_full.py", "source_location": "L441", "receiver": "r"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_full_print_stats", "callee": "cnt", "is_member_call": false, "source_file": "scripts/collect_naver_full.py", "source_location": "L443", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_collect_naver_full_print_stats", "callee": "get", "is_member_call": true, "source_file": "scripts/collect_naver_full.py", "source_location": "L443", "receiver": "r"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_full_print_stats", "callee": "cnt", "is_member_call": false, "source_file": "scripts/collect_naver_full.py", "source_location": "L445", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_collect_naver_full_print_stats", "callee": "get", "is_member_call": true, "source_file": "scripts/collect_naver_full.py", "source_location": "L445", "receiver": "r"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_full_print_stats", "callee": "cnt", "is_member_call": false, "source_file": "scripts/collect_naver_full.py", "source_location": "L445", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_collect_naver_full_print_stats", "callee": "get", "is_member_call": true, "source_file": "scripts/collect_naver_full.py", "source_location": "L445", "receiver": "r"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_full_print_stats", "callee": "cnt", "is_member_call": false, "source_file": "scripts/collect_naver_full.py", "source_location": "L446", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_collect_naver_full_print_stats", "callee": "get", "is_member_call": true, "source_file": "scripts/collect_naver_full.py", "source_location": "L446", "receiver": "r"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_full_print_stats", "callee": "cnt", "is_member_call": false, "source_file": "scripts/collect_naver_full.py", "source_location": "L446", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_collect_naver_full_print_stats", "callee": "get", "is_member_call": true, "source_file": "scripts/collect_naver_full.py", "source_location": "L446", "receiver": "r"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_full_print_stats", "callee": "cnt", "is_member_call": false, "source_file": "scripts/collect_naver_full.py", "source_location": "L448", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_collect_naver_full_print_stats", "callee": "get", "is_member_call": true, "source_file": "scripts/collect_naver_full.py", "source_location": "L448", "receiver": "r"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_full_print_stats", "callee": "cnt", "is_member_call": false, "source_file": "scripts/collect_naver_full.py", "source_location": "L450", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_collect_naver_full_print_stats", "callee": "get", "is_member_call": true, "source_file": "scripts/collect_naver_full.py", "source_location": "L450", "receiver": "r"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_full_print_stats", "callee": "cnt", "is_member_call": false, "source_file": "scripts/collect_naver_full.py", "source_location": "L452", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_collect_naver_full_print_stats", "callee": "get", "is_member_call": true, "source_file": "scripts/collect_naver_full.py", "source_location": "L452", "receiver": "r"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_full_print_stats", "callee": "k", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/collect_naver_full.py", "source_location": "L452"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_full_print_stats", "callee": "Counter", "is_member_call": false, "source_file": "scripts/collect_naver_full.py", "source_location": "L457", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_collect_naver_full_print_stats", "callee": "get", "is_member_call": true, "source_file": "scripts/collect_naver_full.py", "source_location": "L457", "receiver": "r"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_full_print_stats", "callee": "items", "is_member_call": true, "source_file": "scripts/collect_naver_full.py", "source_location": "L459", "receiver": "TYPE_LABEL"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_full_print_stats", "callee": "get", "is_member_call": true, "source_file": "scripts/collect_naver_full.py", "source_location": "L460", "receiver": "type_cnt"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_full_main", "callee": "ArgumentParser", "is_member_call": true, "source_file": "scripts/collect_naver_full.py", "source_location": "L465", "receiver": "argparse"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_full_main", "callee": "add_argument", "is_member_call": true, "source_file": "scripts/collect_naver_full.py", "source_location": "L466", "receiver": "parser"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_full_main", "callee": "int", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/collect_naver_full.py", "source_location": "L466"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_full_main", "callee": "add_argument", "is_member_call": true, "source_file": "scripts/collect_naver_full.py", "source_location": "L468", "receiver": "parser"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_full_main", "callee": "parse_args", "is_member_call": true, "source_file": "scripts/collect_naver_full.py", "source_location": "L470", "receiver": "parser"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_full_main", "callee": "exit", "is_member_call": true, "source_file": "scripts/collect_naver_full.py", "source_location": "L474", "receiver": "sys"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_full_main", "callee": "values", "is_member_call": true, "source_file": "scripts/collect_naver_full.py", "source_location": "L493", "receiver": "done"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_full_main", "callee": "get", "is_member_call": true, "source_file": "scripts/collect_naver_full.py", "source_location": "L493", "receiver": "r"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_full_main", "callee": "monotonic", "is_member_call": true, "source_file": "scripts/collect_naver_full.py", "source_location": "L508", "receiver": "time"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_full_main", "callee": "ThreadPoolExecutor", "is_member_call": false, "source_file": "scripts/collect_naver_full.py", "source_location": "L513", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_collect_naver_full_main", "callee": "MAX_WORKERS", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/collect_naver_full.py", "source_location": "L513"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_full_main", "callee": "submit", "is_member_call": true, "source_file": "scripts/collect_naver_full.py", "source_location": "L514", "receiver": "pool"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_full_main", "callee": "http", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/collect_naver_full.py", "source_location": "L514"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_full_main", "callee": "tqdm", "is_member_call": false, "source_file": "scripts/collect_naver_full.py", "source_location": "L516", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_collect_naver_full_main", "callee": "as_completed", "is_member_call": false, "source_file": "scripts/collect_naver_full.py", "source_location": "L517", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_collect_naver_full_main", "callee": "result", "is_member_call": true, "source_file": "scripts/collect_naver_full.py", "source_location": "L518", "receiver": "fut"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_full_main", "callee": "get", "is_member_call": true, "source_file": "scripts/collect_naver_full.py", "source_location": "L520", "receiver": "result"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_full_main", "callee": "update", "is_member_call": true, "source_file": "scripts/collect_naver_full.py", "source_location": "L522", "receiver": "pbar"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_full_main", "callee": "append", "is_member_call": true, "source_file": "scripts/collect_naver_full.py", "source_location": "L526", "receiver": "batch_buf"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_full_main", "callee": "update", "is_member_call": true, "source_file": "scripts/collect_naver_full.py", "source_location": "L527", "receiver": "pbar"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_full_main", "callee": "clear", "is_member_call": true, "source_file": "scripts/collect_naver_full.py", "source_location": "L531", "receiver": "batch_buf"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_full_main", "callee": "monotonic", "is_member_call": true, "source_file": "scripts/collect_naver_full.py", "source_location": "L537", "receiver": "time"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_full_main", "callee": "values", "is_member_call": true, "source_file": "scripts/collect_naver_full.py", "source_location": "L540", "receiver": "done"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_full_main", "callee": "get", "is_member_call": true, "source_file": "scripts/collect_naver_full.py", "source_location": "L540", "receiver": "r"}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.31/1e0a4400d4c40571f12397f91204c85fb20002f4ea632b4cd4750fa6ab0613e8.json b/graphify-out/cache/ast/v0.9.31/1e0a4400d4c40571f12397f91204c85fb20002f4ea632b4cd4750fa6ab0613e8.json new file mode 100644 index 0000000..913df79 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.31/1e0a4400d4c40571f12397f91204c85fb20002f4ea632b4cd4750fa6ab0613e8.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_tests_test_geo_py", "label": "test_geo.py", "file_type": "code", "source_file": "tests/test_geo.py", "source_location": "L1"}, {"id": "$graphify-root$_tests_test_geo_make_poi", "label": "make_poi()", "file_type": "code", "source_file": "tests/test_geo.py", "source_location": "L10", "_callable": true}, {"id": "poi", "label": "POI", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/tests/test_geo.py"}, {"id": "$graphify-root$_tests_test_geo_testhaversinekm", "label": "TestHaversineKm", "file_type": "code", "source_file": "tests/test_geo.py", "source_location": "L23", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_tests_test_geo_testhaversinekm_test_same_point_is_zero", "label": ".test_same_point_is_zero()", "file_type": "code", "source_file": "tests/test_geo.py", "source_location": "L24", "_callable": true}, {"id": "$graphify-root$_tests_test_geo_testhaversinekm_test_known_distance", "label": ".test_known_distance()", "file_type": "code", "source_file": "tests/test_geo.py", "source_location": "L27", "_callable": true}, {"id": "$graphify-root$_tests_test_geo_testhaversinekm_test_symmetric", "label": ".test_symmetric()", "file_type": "code", "source_file": "tests/test_geo.py", "source_location": "L32", "_callable": true}, {"id": "$graphify-root$_tests_test_geo_testhaversinekm_test_positive", "label": ".test_positive()", "file_type": "code", "source_file": "tests/test_geo.py", "source_location": "L37", "_callable": true}, {"id": "$graphify-root$_tests_test_geo_testbuilddistcache", "label": "TestBuildDistCache", "file_type": "code", "source_file": "tests/test_geo.py", "source_location": "L45", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_tests_test_geo_testbuilddistcache_test_all_pairs_present", "label": ".test_all_pairs_present()", "file_type": "code", "source_file": "tests/test_geo.py", "source_location": "L46", "_callable": true}, {"id": "$graphify-root$_tests_test_geo_testbuilddistcache_test_no_self_pairs", "label": ".test_no_self_pairs()", "file_type": "code", "source_file": "tests/test_geo.py", "source_location": "L54", "_callable": true}, {"id": "$graphify-root$_tests_test_geo_testbuilddistcache_test_values_match_haversine", "label": ".test_values_match_haversine()", "file_type": "code", "source_file": "tests/test_geo.py", "source_location": "L60", "_callable": true}, {"id": "$graphify-root$_tests_test_geo_testbuilddistcache_test_single_poi_empty_cache", "label": ".test_single_poi_empty_cache()", "file_type": "code", "source_file": "tests/test_geo.py", "source_location": "L70", "_callable": true}, {"id": "$graphify-root$_tests_test_geo_testbuilddistcache_test_empty_list_empty_cache", "label": ".test_empty_list_empty_cache()", "file_type": "code", "source_file": "tests/test_geo.py", "source_location": "L75", "_callable": true}, {"id": "$graphify-root$_tests_test_geo_testnnheuristickm", "label": "TestNnHeuristicKm", "file_type": "code", "source_file": "tests/test_geo.py", "source_location": "L83", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_tests_test_geo_testnnheuristickm_test_single_poi_returns_zero", "label": ".test_single_poi_returns_zero()", "file_type": "code", "source_file": "tests/test_geo.py", "source_location": "L84", "_callable": true}, {"id": "$graphify-root$_tests_test_geo_testnnheuristickm_test_two_pois_returns_distance", "label": ".test_two_pois_returns_distance()", "file_type": "code", "source_file": "tests/test_geo.py", "source_location": "L88", "_callable": true}, {"id": "$graphify-root$_tests_test_geo_testnnheuristickm_test_nn_le_actual_for_suboptimal", "label": ".test_nn_le_actual_for_suboptimal()", "file_type": "code", "source_file": "tests/test_geo.py", "source_location": "L93", "_callable": true}, {"id": "$graphify-root$_tests_test_geo_testnnheuristickm_test_cache_gives_same_result", "label": ".test_cache_gives_same_result()", "file_type": "code", "source_file": "tests/test_geo.py", "source_location": "L109", "_callable": true}, {"id": "$graphify-root$_tests_test_geo_testnnheuristickm_test_collinear_optimal_order_matches_nn", "label": ".test_collinear_optimal_order_matches_nn()", "file_type": "code", "source_file": "tests/test_geo.py", "source_location": "L114", "_callable": true}, {"id": "$graphify-root$_tests_test_geo_testgettravelmin", "label": "TestGetTravelMin", "file_type": "code", "source_file": "tests/test_geo.py", "source_location": "L128", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_tests_test_geo_testgettravelmin_test_uses_matrix_when_available", "label": ".test_uses_matrix_when_available()", "file_type": "code", "source_file": "tests/test_geo.py", "source_location": "L129", "_callable": true}, {"id": "$graphify-root$_tests_test_geo_testgettravelmin_test_haversine_fallback_when_no_matrix", "label": ".test_haversine_fallback_when_no_matrix()", "file_type": "code", "source_file": "tests/test_geo.py", "source_location": "L135", "_callable": true}, {"id": "$graphify-root$_tests_test_geo_testgettravelmin_test_cache_fallback_when_no_matrix", "label": ".test_cache_fallback_when_no_matrix()", "file_type": "code", "source_file": "tests/test_geo.py", "source_location": "L143", "_callable": true}, {"id": "$graphify-root$_tests_test_geo_testgettravelmin_test_matrix_takes_priority_over_cache", "label": ".test_matrix_takes_priority_over_cache()", "file_type": "code", "source_file": "tests/test_geo.py", "source_location": "L150", "_callable": true}, {"id": "$graphify-root$_tests_test_geo_rationale_1", "label": "Tests for src/utils/geo.py (TDD).", "file_type": "rationale", "source_file": "tests/test_geo.py", "source_location": "L1"}], "edges": [{"source": "$graphify-root$_tests_test_geo_py", "target": "pytest", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_geo.py", "source_location": "L4", "weight": 1.0}, {"source": "$graphify-root$_tests_test_geo_py", "target": "src_data_models", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_geo.py", "source_location": "L6", "weight": 1.0}, {"source": "$graphify-root$_tests_test_geo_py", "target": "src_utils_geo", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_geo.py", "source_location": "L7", "weight": 1.0}, {"source": "$graphify-root$_tests_test_geo_py", "target": "$graphify-root$_tests_test_geo_make_poi", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_geo.py", "source_location": "L10", "weight": 1.0}, {"source": "$graphify-root$_tests_test_geo_make_poi", "target": "poi", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "tests/test_geo.py", "source_location": "L10", "weight": 1.0}, {"source": "$graphify-root$_tests_test_geo_py", "target": "$graphify-root$_tests_test_geo_testhaversinekm", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_geo.py", "source_location": "L23", "weight": 1.0}, {"source": "$graphify-root$_tests_test_geo_testhaversinekm", "target": "$graphify-root$_tests_test_geo_testhaversinekm_test_same_point_is_zero", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_geo.py", "source_location": "L24", "weight": 1.0}, {"source": "$graphify-root$_tests_test_geo_testhaversinekm", "target": "$graphify-root$_tests_test_geo_testhaversinekm_test_known_distance", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_geo.py", "source_location": "L27", "weight": 1.0}, {"source": "$graphify-root$_tests_test_geo_testhaversinekm", "target": "$graphify-root$_tests_test_geo_testhaversinekm_test_symmetric", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_geo.py", "source_location": "L32", "weight": 1.0}, {"source": "$graphify-root$_tests_test_geo_testhaversinekm", "target": "$graphify-root$_tests_test_geo_testhaversinekm_test_positive", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_geo.py", "source_location": "L37", "weight": 1.0}, {"source": "$graphify-root$_tests_test_geo_py", "target": "$graphify-root$_tests_test_geo_testbuilddistcache", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_geo.py", "source_location": "L45", "weight": 1.0}, {"source": "$graphify-root$_tests_test_geo_testbuilddistcache", "target": "$graphify-root$_tests_test_geo_testbuilddistcache_test_all_pairs_present", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_geo.py", "source_location": "L46", "weight": 1.0}, {"source": "$graphify-root$_tests_test_geo_testbuilddistcache", "target": "$graphify-root$_tests_test_geo_testbuilddistcache_test_no_self_pairs", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_geo.py", "source_location": "L54", "weight": 1.0}, {"source": "$graphify-root$_tests_test_geo_testbuilddistcache", "target": "$graphify-root$_tests_test_geo_testbuilddistcache_test_values_match_haversine", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_geo.py", "source_location": "L60", "weight": 1.0}, {"source": "$graphify-root$_tests_test_geo_testbuilddistcache", "target": "$graphify-root$_tests_test_geo_testbuilddistcache_test_single_poi_empty_cache", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_geo.py", "source_location": "L70", "weight": 1.0}, {"source": "$graphify-root$_tests_test_geo_testbuilddistcache", "target": "$graphify-root$_tests_test_geo_testbuilddistcache_test_empty_list_empty_cache", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_geo.py", "source_location": "L75", "weight": 1.0}, {"source": "$graphify-root$_tests_test_geo_py", "target": "$graphify-root$_tests_test_geo_testnnheuristickm", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_geo.py", "source_location": "L83", "weight": 1.0}, {"source": "$graphify-root$_tests_test_geo_testnnheuristickm", "target": "$graphify-root$_tests_test_geo_testnnheuristickm_test_single_poi_returns_zero", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_geo.py", "source_location": "L84", "weight": 1.0}, {"source": "$graphify-root$_tests_test_geo_testnnheuristickm", "target": "$graphify-root$_tests_test_geo_testnnheuristickm_test_two_pois_returns_distance", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_geo.py", "source_location": "L88", "weight": 1.0}, {"source": "$graphify-root$_tests_test_geo_testnnheuristickm", "target": "$graphify-root$_tests_test_geo_testnnheuristickm_test_nn_le_actual_for_suboptimal", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_geo.py", "source_location": "L93", "weight": 1.0}, {"source": "$graphify-root$_tests_test_geo_testnnheuristickm", "target": "$graphify-root$_tests_test_geo_testnnheuristickm_test_cache_gives_same_result", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_geo.py", "source_location": "L109", "weight": 1.0}, {"source": "$graphify-root$_tests_test_geo_testnnheuristickm", "target": "$graphify-root$_tests_test_geo_testnnheuristickm_test_collinear_optimal_order_matches_nn", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_geo.py", "source_location": "L114", "weight": 1.0}, {"source": "$graphify-root$_tests_test_geo_py", "target": "$graphify-root$_tests_test_geo_testgettravelmin", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_geo.py", "source_location": "L128", "weight": 1.0}, {"source": "$graphify-root$_tests_test_geo_testgettravelmin", "target": "$graphify-root$_tests_test_geo_testgettravelmin_test_uses_matrix_when_available", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_geo.py", "source_location": "L129", "weight": 1.0}, {"source": "$graphify-root$_tests_test_geo_testgettravelmin", "target": "$graphify-root$_tests_test_geo_testgettravelmin_test_haversine_fallback_when_no_matrix", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_geo.py", "source_location": "L135", "weight": 1.0}, {"source": "$graphify-root$_tests_test_geo_testgettravelmin", "target": "$graphify-root$_tests_test_geo_testgettravelmin_test_cache_fallback_when_no_matrix", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_geo.py", "source_location": "L143", "weight": 1.0}, {"source": "$graphify-root$_tests_test_geo_testgettravelmin", "target": "$graphify-root$_tests_test_geo_testgettravelmin_test_matrix_takes_priority_over_cache", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_geo.py", "source_location": "L150", "weight": 1.0}, {"source": "$graphify-root$_tests_test_geo_make_poi", "target": "poi", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_geo.py", "source_location": "L11", "weight": 1.0}, {"source": "$graphify-root$_tests_test_geo_testbuilddistcache_test_all_pairs_present", "target": "$graphify-root$_tests_test_geo_make_poi", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_geo.py", "source_location": "L47", "weight": 1.0}, {"source": "$graphify-root$_tests_test_geo_testbuilddistcache_test_no_self_pairs", "target": "$graphify-root$_tests_test_geo_make_poi", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_geo.py", "source_location": "L55", "weight": 1.0}, {"source": "$graphify-root$_tests_test_geo_testbuilddistcache_test_values_match_haversine", "target": "$graphify-root$_tests_test_geo_make_poi", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_geo.py", "source_location": "L62", "weight": 1.0}, {"source": "$graphify-root$_tests_test_geo_testbuilddistcache_test_single_poi_empty_cache", "target": "$graphify-root$_tests_test_geo_make_poi", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_geo.py", "source_location": "L71", "weight": 1.0}, {"source": "$graphify-root$_tests_test_geo_testnnheuristickm_test_single_poi_returns_zero", "target": "$graphify-root$_tests_test_geo_make_poi", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_geo.py", "source_location": "L85", "weight": 1.0}, {"source": "$graphify-root$_tests_test_geo_testnnheuristickm_test_two_pois_returns_distance", "target": "$graphify-root$_tests_test_geo_make_poi", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_geo.py", "source_location": "L89", "weight": 1.0}, {"source": "$graphify-root$_tests_test_geo_testnnheuristickm_test_nn_le_actual_for_suboptimal", "target": "$graphify-root$_tests_test_geo_make_poi", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_geo.py", "source_location": "L96", "weight": 1.0}, {"source": "$graphify-root$_tests_test_geo_testnnheuristickm_test_cache_gives_same_result", "target": "$graphify-root$_tests_test_geo_make_poi", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_geo.py", "source_location": "L110", "weight": 1.0}, {"source": "$graphify-root$_tests_test_geo_testnnheuristickm_test_collinear_optimal_order_matches_nn", "target": "$graphify-root$_tests_test_geo_make_poi", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_geo.py", "source_location": "L116", "weight": 1.0}, {"source": "$graphify-root$_tests_test_geo_testgettravelmin_test_uses_matrix_when_available", "target": "$graphify-root$_tests_test_geo_make_poi", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_geo.py", "source_location": "L130", "weight": 1.0}, {"source": "$graphify-root$_tests_test_geo_testgettravelmin_test_haversine_fallback_when_no_matrix", "target": "$graphify-root$_tests_test_geo_make_poi", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_geo.py", "source_location": "L136", "weight": 1.0}, {"source": "$graphify-root$_tests_test_geo_testgettravelmin_test_cache_fallback_when_no_matrix", "target": "$graphify-root$_tests_test_geo_make_poi", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_geo.py", "source_location": "L144", "weight": 1.0}, {"source": "$graphify-root$_tests_test_geo_testgettravelmin_test_matrix_takes_priority_over_cache", "target": "$graphify-root$_tests_test_geo_make_poi", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_geo.py", "source_location": "L151", "weight": 1.0}, {"source": "$graphify-root$_tests_test_geo_rationale_1", "target": "$graphify-root$_tests_test_geo_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_geo.py", "source_location": "L1", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_tests_test_geo_testhaversinekm_test_same_point_is_zero", "callee": "haversine_km", "is_member_call": false, "source_file": "tests/test_geo.py", "source_location": "L25", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_geo_testhaversinekm_test_same_point_is_zero", "callee": "approx", "is_member_call": true, "source_file": "tests/test_geo.py", "source_location": "L25", "receiver": "pytest"}, {"caller_nid": "$graphify-root$_tests_test_geo_testhaversinekm_test_known_distance", "callee": "haversine_km", "is_member_call": false, "source_file": "tests/test_geo.py", "source_location": "L29", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_geo_testhaversinekm_test_symmetric", "callee": "haversine_km", "is_member_call": false, "source_file": "tests/test_geo.py", "source_location": "L33", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_geo_testhaversinekm_test_symmetric", "callee": "haversine_km", "is_member_call": false, "source_file": "tests/test_geo.py", "source_location": "L34", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_geo_testhaversinekm_test_symmetric", "callee": "approx", "is_member_call": true, "source_file": "tests/test_geo.py", "source_location": "L35", "receiver": "pytest"}, {"caller_nid": "$graphify-root$_tests_test_geo_testhaversinekm_test_positive", "callee": "haversine_km", "is_member_call": false, "source_file": "tests/test_geo.py", "source_location": "L38", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_geo_testbuilddistcache_test_all_pairs_present", "callee": "build_dist_cache", "is_member_call": false, "source_file": "tests/test_geo.py", "source_location": "L48", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_geo_testbuilddistcache_test_no_self_pairs", "callee": "build_dist_cache", "is_member_call": false, "source_file": "tests/test_geo.py", "source_location": "L56", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_geo_testbuilddistcache_test_values_match_haversine", "callee": "build_dist_cache", "is_member_call": false, "source_file": "tests/test_geo.py", "source_location": "L65", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_geo_testbuilddistcache_test_values_match_haversine", "callee": "haversine_km", "is_member_call": false, "source_file": "tests/test_geo.py", "source_location": "L66", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_geo_testbuilddistcache_test_values_match_haversine", "callee": "approx", "is_member_call": true, "source_file": "tests/test_geo.py", "source_location": "L67", "receiver": "pytest"}, {"caller_nid": "$graphify-root$_tests_test_geo_testbuilddistcache_test_values_match_haversine", "callee": "approx", "is_member_call": true, "source_file": "tests/test_geo.py", "source_location": "L68", "receiver": "pytest"}, {"caller_nid": "$graphify-root$_tests_test_geo_testbuilddistcache_test_single_poi_empty_cache", "callee": "build_dist_cache", "is_member_call": false, "source_file": "tests/test_geo.py", "source_location": "L72", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_geo_testbuilddistcache_test_empty_list_empty_cache", "callee": "build_dist_cache", "is_member_call": false, "source_file": "tests/test_geo.py", "source_location": "L76", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_geo_testnnheuristickm_test_single_poi_returns_zero", "callee": "nn_heuristic_km", "is_member_call": false, "source_file": "tests/test_geo.py", "source_location": "L86", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_geo_testnnheuristickm_test_two_pois_returns_distance", "callee": "haversine_km", "is_member_call": false, "source_file": "tests/test_geo.py", "source_location": "L90", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_geo_testnnheuristickm_test_two_pois_returns_distance", "callee": "nn_heuristic_km", "is_member_call": false, "source_file": "tests/test_geo.py", "source_location": "L91", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_geo_testnnheuristickm_test_two_pois_returns_distance", "callee": "approx", "is_member_call": true, "source_file": "tests/test_geo.py", "source_location": "L91", "receiver": "pytest"}, {"caller_nid": "$graphify-root$_tests_test_geo_testnnheuristickm_test_nn_le_actual_for_suboptimal", "callee": "haversine_km", "is_member_call": false, "source_file": "tests/test_geo.py", "source_location": "L102", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_geo_testnnheuristickm_test_nn_le_actual_for_suboptimal", "callee": "haversine_km", "is_member_call": false, "source_file": "tests/test_geo.py", "source_location": "L103", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_geo_testnnheuristickm_test_nn_le_actual_for_suboptimal", "callee": "haversine_km", "is_member_call": false, "source_file": "tests/test_geo.py", "source_location": "L104", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_geo_testnnheuristickm_test_nn_le_actual_for_suboptimal", "callee": "nn_heuristic_km", "is_member_call": false, "source_file": "tests/test_geo.py", "source_location": "L106", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_geo_testnnheuristickm_test_cache_gives_same_result", "callee": "build_dist_cache", "is_member_call": false, "source_file": "tests/test_geo.py", "source_location": "L111", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_geo_testnnheuristickm_test_cache_gives_same_result", "callee": "nn_heuristic_km", "is_member_call": false, "source_file": "tests/test_geo.py", "source_location": "L112", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_geo_testnnheuristickm_test_cache_gives_same_result", "callee": "approx", "is_member_call": true, "source_file": "tests/test_geo.py", "source_location": "L112", "receiver": "pytest"}, {"caller_nid": "$graphify-root$_tests_test_geo_testnnheuristickm_test_cache_gives_same_result", "callee": "nn_heuristic_km", "is_member_call": false, "source_file": "tests/test_geo.py", "source_location": "L112", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_geo_testnnheuristickm_test_collinear_optimal_order_matches_nn", "callee": "haversine_km", "is_member_call": false, "source_file": "tests/test_geo.py", "source_location": "L118", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_geo_testnnheuristickm_test_collinear_optimal_order_matches_nn", "callee": "nn_heuristic_km", "is_member_call": false, "source_file": "tests/test_geo.py", "source_location": "L121", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_geo_testnnheuristickm_test_collinear_optimal_order_matches_nn", "callee": "approx", "is_member_call": true, "source_file": "tests/test_geo.py", "source_location": "L121", "receiver": "pytest"}, {"caller_nid": "$graphify-root$_tests_test_geo_testgettravelmin_test_uses_matrix_when_available", "callee": "get_travel_min", "is_member_call": false, "source_file": "tests/test_geo.py", "source_location": "L133", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_geo_testgettravelmin_test_haversine_fallback_when_no_matrix", "callee": "haversine_km", "is_member_call": false, "source_file": "tests/test_geo.py", "source_location": "L138", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_geo_testgettravelmin_test_haversine_fallback_when_no_matrix", "callee": "get_travel_min", "is_member_call": false, "source_file": "tests/test_geo.py", "source_location": "L140", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_geo_testgettravelmin_test_haversine_fallback_when_no_matrix", "callee": "approx", "is_member_call": true, "source_file": "tests/test_geo.py", "source_location": "L141", "receiver": "pytest"}, {"caller_nid": "$graphify-root$_tests_test_geo_testgettravelmin_test_cache_fallback_when_no_matrix", "callee": "get_travel_min", "is_member_call": false, "source_file": "tests/test_geo.py", "source_location": "L147", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_geo_testgettravelmin_test_cache_fallback_when_no_matrix", "callee": "approx", "is_member_call": true, "source_file": "tests/test_geo.py", "source_location": "L148", "receiver": "pytest"}, {"caller_nid": "$graphify-root$_tests_test_geo_testgettravelmin_test_matrix_takes_priority_over_cache", "callee": "get_travel_min", "is_member_call": false, "source_file": "tests/test_geo.py", "source_location": "L155", "receiver": null}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.31/22feb272eb4e2fa6ddffb4f0f095a2fa27ad9af2b666d5f77397c3ca7c3f0686.json b/graphify-out/cache/ast/v0.9.31/22feb272eb4e2fa6ddffb4f0f095a2fa27ad9af2b666d5f77397c3ca7c3f0686.json new file mode 100644 index 0000000..5041178 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.31/22feb272eb4e2fa6ddffb4f0f095a2fa27ad9af2b666d5f77397c3ca7c3f0686.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_gun_scripts_create_input_template_py", "label": "create_input_template.py", "file_type": "code", "source_file": "gun/scripts/create_input_template.py", "source_location": "L1"}, {"id": "$graphify-root$_gun_scripts_create_input_template_make_workbook", "label": "make_workbook()", "file_type": "code", "source_file": "gun/scripts/create_input_template.py", "source_location": "L57", "_callable": true}, {"id": "workbook", "label": "Workbook", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/gun/scripts/create_input_template.py"}, {"id": "$graphify-root$_gun_scripts_create_input_template_main", "label": "main()", "file_type": "code", "source_file": "gun/scripts/create_input_template.py", "source_location": "L157", "_callable": true}, {"id": "$graphify-root$_gun_scripts_create_input_template_rationale_1", "label": "recommendations_input.xlsx \uc785\ub825 \uc591\uc2dd + \uc608\uc2dc \uc0dd\uc131. \uc2e4\ud589: python3\u2026", "file_type": "rationale", "source_file": "gun/scripts/create_input_template.py", "source_location": "L1"}], "edges": [{"source": "$graphify-root$_gun_scripts_create_input_template_py", "target": "pathlib", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "gun/scripts/create_input_template.py", "source_location": "L11", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_create_input_template_py", "target": "openpyxl", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "gun/scripts/create_input_template.py", "source_location": "L13", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_create_input_template_py", "target": "openpyxl_styles", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "gun/scripts/create_input_template.py", "source_location": "L14", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_create_input_template_py", "target": "openpyxl_utils", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "gun/scripts/create_input_template.py", "source_location": "L15", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_create_input_template_py", "target": "openpyxl_worksheet_datavalidation", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "gun/scripts/create_input_template.py", "source_location": "L16", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_create_input_template_py", "target": "$graphify-root$_gun_scripts_create_input_template_make_workbook", "relation": "contains", "confidence": "EXTRACTED", "source_file": "gun/scripts/create_input_template.py", "source_location": "L57", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_create_input_template_make_workbook", "target": "workbook", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "gun/scripts/create_input_template.py", "source_location": "L57", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_create_input_template_py", "target": "$graphify-root$_gun_scripts_create_input_template_main", "relation": "contains", "confidence": "EXTRACTED", "source_file": "gun/scripts/create_input_template.py", "source_location": "L157", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_create_input_template_make_workbook", "target": "workbook", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "gun/scripts/create_input_template.py", "source_location": "L58", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_create_input_template_main", "target": "$graphify-root$_gun_scripts_create_input_template_make_workbook", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "gun/scripts/create_input_template.py", "source_location": "L158", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_create_input_template_rationale_1", "target": "$graphify-root$_gun_scripts_create_input_template_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "gun/scripts/create_input_template.py", "source_location": "L1", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_gun_scripts_create_input_template_make_workbook", "callee": "PatternFill", "is_member_call": false, "source_file": "gun/scripts/create_input_template.py", "source_location": "L65", "receiver": null}, {"caller_nid": "$graphify-root$_gun_scripts_create_input_template_make_workbook", "callee": "INPUT_COLS", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "gun/scripts/create_input_template.py", "source_location": "L67"}, {"caller_nid": "$graphify-root$_gun_scripts_create_input_template_make_workbook", "callee": "cell", "is_member_call": true, "source_file": "gun/scripts/create_input_template.py", "source_location": "L68", "receiver": "ws"}, {"caller_nid": "$graphify-root$_gun_scripts_create_input_template_make_workbook", "callee": "Alignment", "is_member_call": false, "source_file": "gun/scripts/create_input_template.py", "source_location": "L71", "receiver": null}, {"caller_nid": "$graphify-root$_gun_scripts_create_input_template_make_workbook", "callee": "PatternFill", "is_member_call": false, "source_file": "gun/scripts/create_input_template.py", "source_location": "L74", "receiver": null}, {"caller_nid": "$graphify-root$_gun_scripts_create_input_template_make_workbook", "callee": "EXAMPLE_ROWS", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "gun/scripts/create_input_template.py", "source_location": "L75"}, {"caller_nid": "$graphify-root$_gun_scripts_create_input_template_make_workbook", "callee": "cell", "is_member_call": true, "source_file": "gun/scripts/create_input_template.py", "source_location": "L77", "receiver": "ws"}, {"caller_nid": "$graphify-root$_gun_scripts_create_input_template_make_workbook", "callee": "get_column_letter", "is_member_call": false, "source_file": "gun/scripts/create_input_template.py", "source_location": "L83", "receiver": null}, {"caller_nid": "$graphify-root$_gun_scripts_create_input_template_make_workbook", "callee": "DataValidation", "is_member_call": false, "source_file": "gun/scripts/create_input_template.py", "source_location": "L87", "receiver": null}, {"caller_nid": "$graphify-root$_gun_scripts_create_input_template_make_workbook", "callee": "join", "is_member_call": true, "source_file": "gun/scripts/create_input_template.py", "source_location": "L88", "receiver": null}, {"caller_nid": "$graphify-root$_gun_scripts_create_input_template_make_workbook", "callee": "SIDO_OPTIONS", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "gun/scripts/create_input_template.py", "source_location": "L88"}, {"caller_nid": "$graphify-root$_gun_scripts_create_input_template_make_workbook", "callee": "add", "is_member_call": true, "source_file": "gun/scripts/create_input_template.py", "source_location": "L90", "receiver": "dv_sido"}, {"caller_nid": "$graphify-root$_gun_scripts_create_input_template_make_workbook", "callee": "add_data_validation", "is_member_call": true, "source_file": "gun/scripts/create_input_template.py", "source_location": "L91", "receiver": "ws"}, {"caller_nid": "$graphify-root$_gun_scripts_create_input_template_make_workbook", "callee": "DataValidation", "is_member_call": false, "source_file": "gun/scripts/create_input_template.py", "source_location": "L94", "receiver": null}, {"caller_nid": "$graphify-root$_gun_scripts_create_input_template_make_workbook", "callee": "join", "is_member_call": true, "source_file": "gun/scripts/create_input_template.py", "source_location": "L95", "receiver": null}, {"caller_nid": "$graphify-root$_gun_scripts_create_input_template_make_workbook", "callee": "PERIOD_OPTIONS", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "gun/scripts/create_input_template.py", "source_location": "L95"}, {"caller_nid": "$graphify-root$_gun_scripts_create_input_template_make_workbook", "callee": "add", "is_member_call": true, "source_file": "gun/scripts/create_input_template.py", "source_location": "L97", "receiver": "dv_period"}, {"caller_nid": "$graphify-root$_gun_scripts_create_input_template_make_workbook", "callee": "add_data_validation", "is_member_call": true, "source_file": "gun/scripts/create_input_template.py", "source_location": "L98", "receiver": "ws"}, {"caller_nid": "$graphify-root$_gun_scripts_create_input_template_make_workbook", "callee": "DataValidation", "is_member_call": false, "source_file": "gun/scripts/create_input_template.py", "source_location": "L101", "receiver": null}, {"caller_nid": "$graphify-root$_gun_scripts_create_input_template_make_workbook", "callee": "join", "is_member_call": true, "source_file": "gun/scripts/create_input_template.py", "source_location": "L102", "receiver": null}, {"caller_nid": "$graphify-root$_gun_scripts_create_input_template_make_workbook", "callee": "CATEGORY_HINTS", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "gun/scripts/create_input_template.py", "source_location": "L102"}, {"caller_nid": "$graphify-root$_gun_scripts_create_input_template_make_workbook", "callee": "add", "is_member_call": true, "source_file": "gun/scripts/create_input_template.py", "source_location": "L104", "receiver": "dv_cat"}, {"caller_nid": "$graphify-root$_gun_scripts_create_input_template_make_workbook", "callee": "add_data_validation", "is_member_call": true, "source_file": "gun/scripts/create_input_template.py", "source_location": "L105", "receiver": "ws"}, {"caller_nid": "$graphify-root$_gun_scripts_create_input_template_make_workbook", "callee": "create_sheet", "is_member_call": true, "source_file": "gun/scripts/create_input_template.py", "source_location": "L111", "receiver": "wb"}, {"caller_nid": "$graphify-root$_gun_scripts_create_input_template_make_workbook", "callee": "cell", "is_member_call": true, "source_file": "gun/scripts/create_input_template.py", "source_location": "L112", "receiver": "ws_guide"}, {"caller_nid": "$graphify-root$_gun_scripts_create_input_template_make_workbook", "callee": "cell", "is_member_call": true, "source_file": "gun/scripts/create_input_template.py", "source_location": "L113", "receiver": "ws_guide"}, {"caller_nid": "$graphify-root$_gun_scripts_create_input_template_make_workbook", "callee": "INPUT_COLS", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "gun/scripts/create_input_template.py", "source_location": "L114"}, {"caller_nid": "$graphify-root$_gun_scripts_create_input_template_make_workbook", "callee": "cell", "is_member_call": true, "source_file": "gun/scripts/create_input_template.py", "source_location": "L115", "receiver": "ws_guide"}, {"caller_nid": "$graphify-root$_gun_scripts_create_input_template_make_workbook", "callee": "cell", "is_member_call": true, "source_file": "gun/scripts/create_input_template.py", "source_location": "L116", "receiver": "ws_guide"}, {"caller_nid": "$graphify-root$_gun_scripts_create_input_template_make_workbook", "callee": "cell", "is_member_call": true, "source_file": "gun/scripts/create_input_template.py", "source_location": "L119", "receiver": "ws_guide"}, {"caller_nid": "$graphify-root$_gun_scripts_create_input_template_make_workbook", "callee": "INPUT_COLS", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "gun/scripts/create_input_template.py", "source_location": "L119"}, {"caller_nid": "$graphify-root$_gun_scripts_create_input_template_make_workbook", "callee": "cell", "is_member_call": true, "source_file": "gun/scripts/create_input_template.py", "source_location": "L136", "receiver": "ws_guide"}, {"caller_nid": "$graphify-root$_gun_scripts_create_input_template_make_workbook", "callee": "INPUT_COLS", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "gun/scripts/create_input_template.py", "source_location": "L136"}, {"caller_nid": "$graphify-root$_gun_scripts_create_input_template_make_workbook", "callee": "create_sheet", "is_member_call": true, "source_file": "gun/scripts/create_input_template.py", "source_location": "L142", "receiver": "wb"}, {"caller_nid": "$graphify-root$_gun_scripts_create_input_template_make_workbook", "callee": "INPUT_COLS", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "gun/scripts/create_input_template.py", "source_location": "L143"}, {"caller_nid": "$graphify-root$_gun_scripts_create_input_template_make_workbook", "callee": "cell", "is_member_call": true, "source_file": "gun/scripts/create_input_template.py", "source_location": "L144", "receiver": "ws_ex"}, {"caller_nid": "$graphify-root$_gun_scripts_create_input_template_make_workbook", "callee": "EXAMPLE_ROWS", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "gun/scripts/create_input_template.py", "source_location": "L147"}, {"caller_nid": "$graphify-root$_gun_scripts_create_input_template_make_workbook", "callee": "cell", "is_member_call": true, "source_file": "gun/scripts/create_input_template.py", "source_location": "L149", "receiver": "ws_ex"}, {"caller_nid": "$graphify-root$_gun_scripts_create_input_template_make_workbook", "callee": "get_column_letter", "is_member_call": false, "source_file": "gun/scripts/create_input_template.py", "source_location": "L151", "receiver": null}, {"caller_nid": "$graphify-root$_gun_scripts_create_input_template_main", "callee": "save", "is_member_call": true, "source_file": "gun/scripts/create_input_template.py", "source_location": "L159", "receiver": "wb"}, {"caller_nid": "$graphify-root$_gun_scripts_create_input_template_main", "callee": "OUTPUT", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "gun/scripts/create_input_template.py", "source_location": "L159"}, {"caller_nid": "$graphify-root$_gun_scripts_create_input_template_main", "callee": "INPUT_COLS", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "gun/scripts/create_input_template.py", "source_location": "L162"}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.31/24ce014a6e4284ab10877ff8595735d01d7f820c595a5026c1b9b6e7fcfb18c7.json b/graphify-out/cache/ast/v0.9.31/24ce014a6e4284ab10877ff8595735d01d7f820c595a5026c1b9b6e7fcfb18c7.json new file mode 100644 index 0000000..e29ed4f --- /dev/null +++ b/graphify-out/cache/ast/v0.9.31/24ce014a6e4284ab10877ff8595735d01d7f820c595a5026c1b9b6e7fcfb18c7.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_gun_scripts_inspect_json_py", "label": "inspect_json.py", "file_type": "code", "source_file": "gun/scripts/inspect_json.py", "source_location": "L1"}, {"id": "$graphify-root$_gun_scripts_inspect_json_get_path", "label": "get_path()", "file_type": "code", "source_file": "gun/scripts/inspect_json.py", "source_location": "L24", "_callable": true}, {"id": "any", "label": "Any", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/gun/scripts/inspect_json.py"}, {"id": "$graphify-root$_gun_scripts_inspect_json_describe", "label": "describe()", "file_type": "code", "source_file": "gun/scripts/inspect_json.py", "source_location": "L44", "_callable": true}, {"id": "$graphify-root$_gun_scripts_inspect_json_print_tree", "label": "print_tree()", "file_type": "code", "source_file": "gun/scripts/inspect_json.py", "source_location": "L59", "_callable": true}, {"id": "$graphify-root$_gun_scripts_inspect_json_search_in", "label": "search_in()", "file_type": "code", "source_file": "gun/scripts/inspect_json.py", "source_location": "L86", "_callable": true}, {"id": "$graphify-root$_gun_scripts_inspect_json_main", "label": "main()", "file_type": "code", "source_file": "gun/scripts/inspect_json.py", "source_location": "L105", "_callable": true}, {"id": "$graphify-root$_gun_scripts_inspect_json_rationale_1", "label": "JSON \ud30c\uc77c \ube60\ub978 \ud655\uc778 \uc720\ud2f8\ub9ac\ud2f0 ================================= \uc0ac\uc6a9\ubc95: python3\u2026", "file_type": "rationale", "source_file": "gun/scripts/inspect_json.py", "source_location": "L1"}, {"id": "$graphify-root$_gun_scripts_inspect_json_rationale_25", "label": "a.b.0.c' \ud615\ud0dc \uacbd\ub85c\ub85c dict/list \uc548\uc73c\ub85c \ub4e4\uc5b4\uac10.", "file_type": "rationale", "source_file": "gun/scripts/inspect_json.py", "source_location": "L25"}, {"id": "$graphify-root$_gun_scripts_inspect_json_rationale_60", "label": "\uad6c\uc870\ub9cc \ud2b8\ub9ac\ub85c \ucd9c\ub825 (\uac12\uc740 \ud0c0\uc785\uacfc \uae38\uc774\ub9cc).", "file_type": "rationale", "source_file": "gun/scripts/inspect_json.py", "source_location": "L60"}, {"id": "$graphify-root$_gun_scripts_inspect_json_rationale_87", "label": "\ubaa8\ub4e0 \uac12\uc5d0\uc11c text \ud3ec\ud568 \ud56d\ubaa9 \ucc3e\uae30. \ubc18\ud658: [(\uacbd\ub85c, \uac12)]", "file_type": "rationale", "source_file": "gun/scripts/inspect_json.py", "source_location": "L87"}], "edges": [{"source": "$graphify-root$_gun_scripts_inspect_json_py", "target": "argparse", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "gun/scripts/inspect_json.py", "source_location": "L17", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_inspect_json_py", "target": "json", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "gun/scripts/inspect_json.py", "source_location": "L18", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_inspect_json_py", "target": "sys", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "gun/scripts/inspect_json.py", "source_location": "L19", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_inspect_json_py", "target": "pathlib", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "gun/scripts/inspect_json.py", "source_location": "L20", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_inspect_json_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "gun/scripts/inspect_json.py", "source_location": "L21", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_inspect_json_py", "target": "$graphify-root$_gun_scripts_inspect_json_get_path", "relation": "contains", "confidence": "EXTRACTED", "source_file": "gun/scripts/inspect_json.py", "source_location": "L24", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_inspect_json_get_path", "target": "any", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "gun/scripts/inspect_json.py", "source_location": "L24", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_inspect_json_get_path", "target": "any", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "gun/scripts/inspect_json.py", "source_location": "L24", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_inspect_json_py", "target": "$graphify-root$_gun_scripts_inspect_json_describe", "relation": "contains", "confidence": "EXTRACTED", "source_file": "gun/scripts/inspect_json.py", "source_location": "L44", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_inspect_json_describe", "target": "any", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "gun/scripts/inspect_json.py", "source_location": "L44", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_inspect_json_py", "target": "$graphify-root$_gun_scripts_inspect_json_print_tree", "relation": "contains", "confidence": "EXTRACTED", "source_file": "gun/scripts/inspect_json.py", "source_location": "L59", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_inspect_json_print_tree", "target": "any", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "gun/scripts/inspect_json.py", "source_location": "L59", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_inspect_json_py", "target": "$graphify-root$_gun_scripts_inspect_json_search_in", "relation": "contains", "confidence": "EXTRACTED", "source_file": "gun/scripts/inspect_json.py", "source_location": "L86", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_inspect_json_search_in", "target": "any", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "gun/scripts/inspect_json.py", "source_location": "L86", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_inspect_json_search_in", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "gun/scripts/inspect_json.py", "source_location": "L86", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_inspect_json_py", "target": "$graphify-root$_gun_scripts_inspect_json_main", "relation": "contains", "confidence": "EXTRACTED", "source_file": "gun/scripts/inspect_json.py", "source_location": "L105", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_inspect_json_print_tree", "target": "$graphify-root$_gun_scripts_inspect_json_describe", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "gun/scripts/inspect_json.py", "source_location": "L70", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_inspect_json_main", "target": "$graphify-root$_gun_scripts_inspect_json_get_path", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "gun/scripts/inspect_json.py", "source_location": "L126", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_inspect_json_main", "target": "$graphify-root$_gun_scripts_inspect_json_search_in", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "gun/scripts/inspect_json.py", "source_location": "L132", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_inspect_json_main", "target": "$graphify-root$_gun_scripts_inspect_json_describe", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "gun/scripts/inspect_json.py", "source_location": "L135", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_inspect_json_main", "target": "$graphify-root$_gun_scripts_inspect_json_print_tree", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "gun/scripts/inspect_json.py", "source_location": "L143", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_inspect_json_rationale_1", "target": "$graphify-root$_gun_scripts_inspect_json_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "gun/scripts/inspect_json.py", "source_location": "L1", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_inspect_json_rationale_25", "target": "$graphify-root$_gun_scripts_inspect_json_get_path", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "gun/scripts/inspect_json.py", "source_location": "L25", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_inspect_json_rationale_60", "target": "$graphify-root$_gun_scripts_inspect_json_print_tree", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "gun/scripts/inspect_json.py", "source_location": "L60", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_inspect_json_rationale_87", "target": "$graphify-root$_gun_scripts_inspect_json_search_in", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "gun/scripts/inspect_json.py", "source_location": "L87", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_gun_scripts_inspect_json_get_path", "callee": "split", "is_member_call": true, "source_file": "gun/scripts/inspect_json.py", "source_location": "L29", "receiver": "path"}, {"caller_nid": "$graphify-root$_gun_scripts_inspect_json_get_path", "callee": "list", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "gun/scripts/inspect_json.py", "source_location": "L30"}, {"caller_nid": "$graphify-root$_gun_scripts_inspect_json_get_path", "callee": "ValueError", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "gun/scripts/inspect_json.py", "source_location": "L33"}, {"caller_nid": "$graphify-root$_gun_scripts_inspect_json_get_path", "callee": "IndexError", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "gun/scripts/inspect_json.py", "source_location": "L33"}, {"caller_nid": "$graphify-root$_gun_scripts_inspect_json_get_path", "callee": "dict", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "gun/scripts/inspect_json.py", "source_location": "L35"}, {"caller_nid": "$graphify-root$_gun_scripts_inspect_json_get_path", "callee": "keys", "is_member_call": true, "source_file": "gun/scripts/inspect_json.py", "source_location": "L37", "receiver": "cur"}, {"caller_nid": "$graphify-root$_gun_scripts_inspect_json_describe", "callee": "list", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "gun/scripts/inspect_json.py", "source_location": "L47"}, {"caller_nid": "$graphify-root$_gun_scripts_inspect_json_describe", "callee": "tuple", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "gun/scripts/inspect_json.py", "source_location": "L47"}, {"caller_nid": "$graphify-root$_gun_scripts_inspect_json_describe", "callee": "dict", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "gun/scripts/inspect_json.py", "source_location": "L49"}, {"caller_nid": "$graphify-root$_gun_scripts_inspect_json_describe", "callee": "str", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "gun/scripts/inspect_json.py", "source_location": "L51"}, {"caller_nid": "$graphify-root$_gun_scripts_inspect_json_describe", "callee": "int", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "gun/scripts/inspect_json.py", "source_location": "L54"}, {"caller_nid": "$graphify-root$_gun_scripts_inspect_json_describe", "callee": "float", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "gun/scripts/inspect_json.py", "source_location": "L54"}, {"caller_nid": "$graphify-root$_gun_scripts_inspect_json_describe", "callee": "bool", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "gun/scripts/inspect_json.py", "source_location": "L54"}, {"caller_nid": "$graphify-root$_gun_scripts_inspect_json_print_tree", "callee": "dict", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "gun/scripts/inspect_json.py", "source_location": "L64"}, {"caller_nid": "$graphify-root$_gun_scripts_inspect_json_print_tree", "callee": "keys", "is_member_call": true, "source_file": "gun/scripts/inspect_json.py", "source_location": "L65", "receiver": "data"}, {"caller_nid": "$graphify-root$_gun_scripts_inspect_json_print_tree", "callee": "dict", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "gun/scripts/inspect_json.py", "source_location": "L71"}, {"caller_nid": "$graphify-root$_gun_scripts_inspect_json_print_tree", "callee": "list", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "gun/scripts/inspect_json.py", "source_location": "L71"}, {"caller_nid": "$graphify-root$_gun_scripts_inspect_json_print_tree", "callee": "list", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "gun/scripts/inspect_json.py", "source_location": "L74"}, {"caller_nid": "$graphify-root$_gun_scripts_inspect_json_print_tree", "callee": "dict", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "gun/scripts/inspect_json.py", "source_location": "L80"}, {"caller_nid": "$graphify-root$_gun_scripts_inspect_json_print_tree", "callee": "list", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "gun/scripts/inspect_json.py", "source_location": "L80"}, {"caller_nid": "$graphify-root$_gun_scripts_inspect_json_search_in", "callee": "dict", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "gun/scripts/inspect_json.py", "source_location": "L89"}, {"caller_nid": "$graphify-root$_gun_scripts_inspect_json_search_in", "callee": "items", "is_member_call": true, "source_file": "gun/scripts/inspect_json.py", "source_location": "L90", "receiver": "data"}, {"caller_nid": "$graphify-root$_gun_scripts_inspect_json_search_in", "callee": "lower", "is_member_call": true, "source_file": "gun/scripts/inspect_json.py", "source_location": "L92", "receiver": "text"}, {"caller_nid": "$graphify-root$_gun_scripts_inspect_json_search_in", "callee": "lower", "is_member_call": true, "source_file": "gun/scripts/inspect_json.py", "source_location": "L92", "receiver": null}, {"caller_nid": "$graphify-root$_gun_scripts_inspect_json_search_in", "callee": "append", "is_member_call": true, "source_file": "gun/scripts/inspect_json.py", "source_location": "L93", "receiver": "results"}, {"caller_nid": "$graphify-root$_gun_scripts_inspect_json_search_in", "callee": "extend", "is_member_call": true, "source_file": "gun/scripts/inspect_json.py", "source_location": "L94", "receiver": "results"}, {"caller_nid": "$graphify-root$_gun_scripts_inspect_json_search_in", "callee": "list", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "gun/scripts/inspect_json.py", "source_location": "L95"}, {"caller_nid": "$graphify-root$_gun_scripts_inspect_json_search_in", "callee": "extend", "is_member_call": true, "source_file": "gun/scripts/inspect_json.py", "source_location": "L98", "receiver": "results"}, {"caller_nid": "$graphify-root$_gun_scripts_inspect_json_search_in", "callee": "lower", "is_member_call": true, "source_file": "gun/scripts/inspect_json.py", "source_location": "L100", "receiver": "text"}, {"caller_nid": "$graphify-root$_gun_scripts_inspect_json_search_in", "callee": "lower", "is_member_call": true, "source_file": "gun/scripts/inspect_json.py", "source_location": "L100", "receiver": null}, {"caller_nid": "$graphify-root$_gun_scripts_inspect_json_search_in", "callee": "append", "is_member_call": true, "source_file": "gun/scripts/inspect_json.py", "source_location": "L101", "receiver": "results"}, {"caller_nid": "$graphify-root$_gun_scripts_inspect_json_main", "callee": "ArgumentParser", "is_member_call": true, "source_file": "gun/scripts/inspect_json.py", "source_location": "L106", "receiver": "argparse"}, {"caller_nid": "$graphify-root$_gun_scripts_inspect_json_main", "callee": "add_argument", "is_member_call": true, "source_file": "gun/scripts/inspect_json.py", "source_location": "L107", "receiver": "parser"}, {"caller_nid": "$graphify-root$_gun_scripts_inspect_json_main", "callee": "add_argument", "is_member_call": true, "source_file": "gun/scripts/inspect_json.py", "source_location": "L108", "receiver": "parser"}, {"caller_nid": "$graphify-root$_gun_scripts_inspect_json_main", "callee": "add_argument", "is_member_call": true, "source_file": "gun/scripts/inspect_json.py", "source_location": "L109", "receiver": "parser"}, {"caller_nid": "$graphify-root$_gun_scripts_inspect_json_main", "callee": "int", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "gun/scripts/inspect_json.py", "source_location": "L109"}, {"caller_nid": "$graphify-root$_gun_scripts_inspect_json_main", "callee": "add_argument", "is_member_call": true, "source_file": "gun/scripts/inspect_json.py", "source_location": "L110", "receiver": "parser"}, {"caller_nid": "$graphify-root$_gun_scripts_inspect_json_main", "callee": "add_argument", "is_member_call": true, "source_file": "gun/scripts/inspect_json.py", "source_location": "L111", "receiver": "parser"}, {"caller_nid": "$graphify-root$_gun_scripts_inspect_json_main", "callee": "parse_args", "is_member_call": true, "source_file": "gun/scripts/inspect_json.py", "source_location": "L112", "receiver": "parser"}, {"caller_nid": "$graphify-root$_gun_scripts_inspect_json_main", "callee": "Path", "is_member_call": false, "source_file": "gun/scripts/inspect_json.py", "source_location": "L114", "receiver": null}, {"caller_nid": "$graphify-root$_gun_scripts_inspect_json_main", "callee": "exists", "is_member_call": true, "source_file": "gun/scripts/inspect_json.py", "source_location": "L115", "receiver": "path"}, {"caller_nid": "$graphify-root$_gun_scripts_inspect_json_main", "callee": "exit", "is_member_call": true, "source_file": "gun/scripts/inspect_json.py", "source_location": "L116", "receiver": "sys"}, {"caller_nid": "$graphify-root$_gun_scripts_inspect_json_main", "callee": "stat", "is_member_call": true, "source_file": "gun/scripts/inspect_json.py", "source_location": "L118", "receiver": "path"}, {"caller_nid": "$graphify-root$_gun_scripts_inspect_json_main", "callee": "load", "is_member_call": true, "source_file": "gun/scripts/inspect_json.py", "source_location": "L121", "receiver": "json"}, {"caller_nid": "$graphify-root$_gun_scripts_inspect_json_main", "callee": "f", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "gun/scripts/inspect_json.py", "source_location": "L121"}, {"caller_nid": "$graphify-root$_gun_scripts_inspect_json_main", "callee": "exit", "is_member_call": true, "source_file": "gun/scripts/inspect_json.py", "source_location": "L123", "receiver": "sys"}, {"caller_nid": "$graphify-root$_gun_scripts_inspect_json_main", "callee": "str", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "gun/scripts/inspect_json.py", "source_location": "L127"}, {"caller_nid": "$graphify-root$_gun_scripts_inspect_json_main", "callee": "startswith", "is_member_call": true, "source_file": "gun/scripts/inspect_json.py", "source_location": "L127", "receiver": "target"}, {"caller_nid": "$graphify-root$_gun_scripts_inspect_json_main", "callee": "exit", "is_member_call": true, "source_file": "gun/scripts/inspect_json.py", "source_location": "L128", "receiver": "sys"}, {"caller_nid": "$graphify-root$_gun_scripts_inspect_json_main", "callee": "dict", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "gun/scripts/inspect_json.py", "source_location": "L149"}, {"caller_nid": "$graphify-root$_gun_scripts_inspect_json_main", "callee": "keys", "is_member_call": true, "source_file": "gun/scripts/inspect_json.py", "source_location": "L150", "receiver": "target"}, {"caller_nid": "$graphify-root$_gun_scripts_inspect_json_main", "callee": "items", "is_member_call": true, "source_file": "gun/scripts/inspect_json.py", "source_location": "L151", "receiver": "target"}, {"caller_nid": "$graphify-root$_gun_scripts_inspect_json_main", "callee": "list", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "gun/scripts/inspect_json.py", "source_location": "L153"}, {"caller_nid": "$graphify-root$_gun_scripts_inspect_json_main", "callee": "list", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "gun/scripts/inspect_json.py", "source_location": "L157"}, {"caller_nid": "$graphify-root$_gun_scripts_inspect_json_main", "callee": "dict", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "gun/scripts/inspect_json.py", "source_location": "L161"}, {"caller_nid": "$graphify-root$_gun_scripts_inspect_json_main", "callee": "items", "is_member_call": true, "source_file": "gun/scripts/inspect_json.py", "source_location": "L162", "receiver": "item"}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.31/25b87debaeb3bd26e7968184f701deca25d00a7b765386a316ecc91323be3864.json b/graphify-out/cache/ast/v0.9.31/25b87debaeb3bd26e7968184f701deca25d00a7b765386a316ecc91323be3864.json new file mode 100644 index 0000000..b22c9ab --- /dev/null +++ b/graphify-out/cache/ast/v0.9.31/25b87debaeb3bd26e7968184f701deca25d00a7b765386a316ecc91323be3864.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_src_scoring_bonus_engine_py", "label": "bonus_engine.py", "file_type": "code", "source_file": "src/scoring/bonus_engine.py", "source_location": "L1"}, {"id": "$graphify-root$_src_scoring_bonus_engine_bonusresult", "label": "BonusResult", "file_type": "code", "source_file": "src/scoring/bonus_engine.py", "source_location": "L23", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_src_scoring_bonus_engine_placecoord", "label": "_PlaceCoord", "file_type": "code", "source_file": "src/scoring/bonus_engine.py", "source_location": "L34", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_src_scoring_bonus_engine_bonusengine", "label": "BonusEngine", "file_type": "code", "source_file": "src/scoring/bonus_engine.py", "source_location": "L39", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_src_scoring_bonus_engine_bonusengine_init", "label": ".__init__()", "file_type": "code", "source_file": "src/scoring/bonus_engine.py", "source_location": "L46", "_callable": true}, {"id": "$graphify-root$_src_scoring_bonus_engine_bonusengine_from_dataset", "label": ".from_dataset()", "file_type": "code", "source_file": "src/scoring/bonus_engine.py", "source_location": "L55", "_callable": true}, {"id": "path", "label": "Path", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/src/scoring/bonus_engine.py"}, {"id": "$graphify-root$_src_scoring_bonus_engine_bonusengine_compute", "label": ".compute()", "file_type": "code", "source_file": "src/scoring/bonus_engine.py", "source_location": "L82", "_callable": true}, {"id": "poi", "label": "POI", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/src/scoring/bonus_engine.py"}, {"id": "$graphify-root$_src_scoring_bonus_engine_nearest_km", "label": "_nearest_km()", "file_type": "code", "source_file": "src/scoring/bonus_engine.py", "source_location": "L134", "_callable": true}, {"id": "$graphify-root$_src_scoring_bonus_engine_rationale_1", "label": "\uac00\uc0b0\uc810 \uc5d4\uc9c4 \u2014 \uc6f0\ub2c8\uc2a4\u00b7\ubb34\uc7a5\uc560 \uc5ec\ud589\uc9c0 \ubc29\ubb38 \ubcf4\ub108\uc2a4.", "file_type": "rationale", "source_file": "src/scoring/bonus_engine.py", "source_location": "L1"}, {"id": "$graphify-root$_src_scoring_bonus_engine_rationale_40", "label": "\uc6f0\ub2c8\uc2a4\u00b7\ubb34\uc7a5\uc560 \uc7a5\uc18c \ub370\uc774\ud130\uc14b \uae30\ubc18 \uac00\uc0b0\uc810 \uacc4\uc0b0\uae30. from_dataset() \ub85c JSON \ub370\uc774\ud130\uc14b\uc744 \ub85c\ub4dc\ud558\uc5ec \uc778\uc2a4\ud134\uc2a4 \uc0dd\uc131. External\u2026", "file_type": "rationale", "source_file": "src/scoring/bonus_engine.py", "source_location": "L40"}, {"id": "$graphify-root$_src_scoring_bonus_engine_rationale_60", "label": "\ub85c\uceec JSON \ub370\uc774\ud130\uc14b\uc5d0\uc11c \ub85c\ub4dc. \ud30c\uc77c \uc5c6\uc73c\uba74 \ube48 \uc5d4\uc9c4 \ubc18\ud658.", "file_type": "rationale", "source_file": "src/scoring/bonus_engine.py", "source_location": "L60"}, {"id": "$graphify-root$_src_scoring_bonus_engine_rationale_88", "label": "POI \ubaa9\ub85d\uc5d0\uc11c \uac00\uc0b0\uc810 \uacc4\uc0b0. - \uc6f0\ub2c8\uc2a4 \uc7a5\uc18c: \ubaa8\ub4e0 party_type\uc5d0 \uc801\uc6a9. - \ubb34\uc7a5\uc560 \uc7a5\uc18c:\u2026", "file_type": "rationale", "source_file": "src/scoring/bonus_engine.py", "source_location": "L88"}, {"id": "$graphify-root$_src_scoring_bonus_engine_rationale_135", "label": "POI\uc640 \uac00\uc7a5 \uac00\uae4c\uc6b4 \uc88c\ud45c\uae4c\uc9c0\uc758 \uac70\ub9ac(km). coords\uac00 \ube44\uc5b4\uc788\uc73c\uba74 inf \ubc18\ud658.", "file_type": "rationale", "source_file": "src/scoring/bonus_engine.py", "source_location": "L135"}], "edges": [{"source": "$graphify-root$_src_scoring_bonus_engine_py", "target": "json", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "src/scoring/bonus_engine.py", "source_location": "L4", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_bonus_engine_py", "target": "dataclasses", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "src/scoring/bonus_engine.py", "source_location": "L5", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_bonus_engine_py", "target": "pathlib", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "src/scoring/bonus_engine.py", "source_location": "L6", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_bonus_engine_py", "target": "src_data_models", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "src/scoring/bonus_engine.py", "source_location": "L8", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_bonus_engine_py", "target": "src_utils_geo", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "src/scoring/bonus_engine.py", "source_location": "L9", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_bonus_engine_py", "target": "$graphify-root$_src_scoring_bonus_engine_bonusresult", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/scoring/bonus_engine.py", "source_location": "L23", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_bonus_engine_py", "target": "$graphify-root$_src_scoring_bonus_engine_placecoord", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/scoring/bonus_engine.py", "source_location": "L34", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_bonus_engine_py", "target": "$graphify-root$_src_scoring_bonus_engine_bonusengine", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/scoring/bonus_engine.py", "source_location": "L39", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_bonus_engine_bonusengine", "target": "$graphify-root$_src_scoring_bonus_engine_bonusengine_init", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/scoring/bonus_engine.py", "source_location": "L46", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_bonus_engine_bonusengine_init", "target": "$graphify-root$_src_scoring_bonus_engine_placecoord", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "src/scoring/bonus_engine.py", "source_location": "L46", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_bonus_engine_bonusengine_init", "target": "$graphify-root$_src_scoring_bonus_engine_placecoord", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "src/scoring/bonus_engine.py", "source_location": "L46", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_bonus_engine_bonusengine", "target": "$graphify-root$_src_scoring_bonus_engine_bonusengine_from_dataset", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/scoring/bonus_engine.py", "source_location": "L55", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_bonus_engine_bonusengine_from_dataset", "target": "path", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "src/scoring/bonus_engine.py", "source_location": "L55", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_bonus_engine_bonusengine_from_dataset", "target": "path", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "src/scoring/bonus_engine.py", "source_location": "L55", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_bonus_engine_bonusengine", "target": "$graphify-root$_src_scoring_bonus_engine_bonusengine_compute", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/scoring/bonus_engine.py", "source_location": "L82", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_bonus_engine_bonusengine_compute", "target": "poi", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "src/scoring/bonus_engine.py", "source_location": "L82", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_bonus_engine_bonusengine_compute", "target": "$graphify-root$_src_scoring_bonus_engine_bonusresult", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "src/scoring/bonus_engine.py", "source_location": "L82", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_bonus_engine_py", "target": "$graphify-root$_src_scoring_bonus_engine_nearest_km", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/scoring/bonus_engine.py", "source_location": "L134", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_bonus_engine_nearest_km", "target": "poi", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "src/scoring/bonus_engine.py", "source_location": "L134", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_bonus_engine_nearest_km", "target": "$graphify-root$_src_scoring_bonus_engine_placecoord", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "src/scoring/bonus_engine.py", "source_location": "L134", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_bonus_engine_bonusengine_from_dataset", "target": "path", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/scoring/bonus_engine.py", "source_location": "L64", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_bonus_engine_bonusengine_from_dataset", "target": "$graphify-root$_src_scoring_bonus_engine_placecoord", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/scoring/bonus_engine.py", "source_location": "L70", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_bonus_engine_bonusengine_compute", "target": "$graphify-root$_src_scoring_bonus_engine_nearest_km", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/scoring/bonus_engine.py", "source_location": "L100", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_bonus_engine_bonusengine_compute", "target": "$graphify-root$_src_scoring_bonus_engine_bonusresult", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/scoring/bonus_engine.py", "source_location": "L123", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_bonus_engine_rationale_1", "target": "$graphify-root$_src_scoring_bonus_engine_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/scoring/bonus_engine.py", "source_location": "L1", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_bonus_engine_rationale_40", "target": "$graphify-root$_src_scoring_bonus_engine_bonusengine", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/scoring/bonus_engine.py", "source_location": "L40", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_bonus_engine_rationale_60", "target": "$graphify-root$_src_scoring_bonus_engine_bonusengine_from_dataset", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/scoring/bonus_engine.py", "source_location": "L60", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_bonus_engine_rationale_88", "target": "$graphify-root$_src_scoring_bonus_engine_bonusengine_compute", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/scoring/bonus_engine.py", "source_location": "L88", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_bonus_engine_rationale_135", "target": "$graphify-root$_src_scoring_bonus_engine_nearest_km", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/scoring/bonus_engine.py", "source_location": "L135", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_src_scoring_bonus_engine_bonusengine_from_dataset", "callee": "exists", "is_member_call": true, "source_file": "src/scoring/bonus_engine.py", "source_location": "L65", "receiver": "wp"}, {"caller_nid": "$graphify-root$_src_scoring_bonus_engine_bonusengine_from_dataset", "callee": "loads", "is_member_call": true, "source_file": "src/scoring/bonus_engine.py", "source_location": "L66", "receiver": "json"}, {"caller_nid": "$graphify-root$_src_scoring_bonus_engine_bonusengine_from_dataset", "callee": "read_text", "is_member_call": true, "source_file": "src/scoring/bonus_engine.py", "source_location": "L66", "receiver": "wp"}, {"caller_nid": "$graphify-root$_src_scoring_bonus_engine_bonusengine_from_dataset", "callee": "get", "is_member_call": true, "source_file": "src/scoring/bonus_engine.py", "source_location": "L67", "receiver": "item"}, {"caller_nid": "$graphify-root$_src_scoring_bonus_engine_bonusengine_from_dataset", "callee": "get", "is_member_call": true, "source_file": "src/scoring/bonus_engine.py", "source_location": "L68", "receiver": "item"}, {"caller_nid": "$graphify-root$_src_scoring_bonus_engine_bonusengine_from_dataset", "callee": "append", "is_member_call": true, "source_file": "src/scoring/bonus_engine.py", "source_location": "L70", "receiver": "wellness"}, {"caller_nid": "$graphify-root$_src_scoring_bonus_engine_bonusengine_from_dataset", "callee": "exists", "is_member_call": true, "source_file": "src/scoring/bonus_engine.py", "source_location": "L73", "receiver": "bp"}, {"caller_nid": "$graphify-root$_src_scoring_bonus_engine_bonusengine_from_dataset", "callee": "loads", "is_member_call": true, "source_file": "src/scoring/bonus_engine.py", "source_location": "L74", "receiver": "json"}, {"caller_nid": "$graphify-root$_src_scoring_bonus_engine_bonusengine_from_dataset", "callee": "read_text", "is_member_call": true, "source_file": "src/scoring/bonus_engine.py", "source_location": "L74", "receiver": "bp"}, {"caller_nid": "$graphify-root$_src_scoring_bonus_engine_bonusengine_from_dataset", "callee": "get", "is_member_call": true, "source_file": "src/scoring/bonus_engine.py", "source_location": "L75", "receiver": "item"}, {"caller_nid": "$graphify-root$_src_scoring_bonus_engine_bonusengine_from_dataset", "callee": "get", "is_member_call": true, "source_file": "src/scoring/bonus_engine.py", "source_location": "L76", "receiver": "item"}, {"caller_nid": "$graphify-root$_src_scoring_bonus_engine_bonusengine_from_dataset", "callee": "append", "is_member_call": true, "source_file": "src/scoring/bonus_engine.py", "source_location": "L78", "receiver": "barrier_free"}, {"caller_nid": "$graphify-root$_src_scoring_bonus_engine_bonusengine_from_dataset", "callee": "cls", "is_member_call": false, "source_file": "src/scoring/bonus_engine.py", "source_location": "L80", "receiver": null}, {"caller_nid": "$graphify-root$_src_scoring_bonus_engine_bonusengine_compute", "callee": "append", "is_member_call": true, "source_file": "src/scoring/bonus_engine.py", "source_location": "L101", "receiver": "wellness_matched"}, {"caller_nid": "$graphify-root$_src_scoring_bonus_engine_bonusengine_compute", "callee": "append", "is_member_call": true, "source_file": "src/scoring/bonus_engine.py", "source_location": "L106", "receiver": "accessibility_matched"}, {"caller_nid": "$graphify-root$_src_scoring_bonus_engine_bonusengine_compute", "callee": "append", "is_member_call": true, "source_file": "src/scoring/bonus_engine.py", "source_location": "L108", "receiver": "pet_friendly_matched"}, {"caller_nid": "$graphify-root$_src_scoring_bonus_engine_bonusengine_compute", "callee": "BONUS_CAP", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "src/scoring/bonus_engine.py", "source_location": "L111"}, {"caller_nid": "$graphify-root$_src_scoring_bonus_engine_bonusengine_compute", "callee": "BONUS_CAP", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "src/scoring/bonus_engine.py", "source_location": "L114"}, {"caller_nid": "$graphify-root$_src_scoring_bonus_engine_bonusengine_compute", "callee": "BONUS_CAP", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "src/scoring/bonus_engine.py", "source_location": "L117"}, {"caller_nid": "$graphify-root$_src_scoring_bonus_engine_bonusengine_compute", "callee": "BONUS_CAP", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "src/scoring/bonus_engine.py", "source_location": "L120"}, {"caller_nid": "$graphify-root$_src_scoring_bonus_engine_nearest_km", "callee": "haversine_km", "is_member_call": false, "source_file": "src/scoring/bonus_engine.py", "source_location": "L138", "receiver": null}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.31/2654b4fea9fb08f631e2a9864c6a8dea8789361be229c10db1d65202bc033fd0.json b/graphify-out/cache/ast/v0.9.31/2654b4fea9fb08f631e2a9864c6a8dea8789361be229c10db1d65202bc033fd0.json new file mode 100644 index 0000000..5ce7ae7 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.31/2654b4fea9fb08f631e2a9864c6a8dea8789361be229c10db1d65202bc033fd0.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_scripts_geocode_jeju_missing_coords_py", "label": "geocode_jeju_missing_coords.py", "file_type": "code", "source_file": "scripts/geocode_jeju_missing_coords.py", "source_location": "L1"}, {"id": "$graphify-root$_scripts_geocode_jeju_missing_coords_main", "label": "main()", "file_type": "code", "source_file": "scripts/geocode_jeju_missing_coords.py", "source_location": "L28", "_callable": true}], "edges": [{"source": "$graphify-root$_scripts_geocode_jeju_missing_coords_py", "target": "shutil", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/geocode_jeju_missing_coords.py", "source_location": "L10", "weight": 1.0}, {"source": "$graphify-root$_scripts_geocode_jeju_missing_coords_py", "target": "sys", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/geocode_jeju_missing_coords.py", "source_location": "L11", "weight": 1.0}, {"source": "$graphify-root$_scripts_geocode_jeju_missing_coords_py", "target": "time", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/geocode_jeju_missing_coords.py", "source_location": "L12", "weight": 1.0}, {"source": "$graphify-root$_scripts_geocode_jeju_missing_coords_py", "target": "pathlib", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/geocode_jeju_missing_coords.py", "source_location": "L13", "weight": 1.0}, {"source": "$graphify-root$_scripts_geocode_jeju_missing_coords_py", "target": "openpyxl", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/geocode_jeju_missing_coords.py", "source_location": "L15", "weight": 1.0}, {"source": "$graphify-root$_scripts_geocode_jeju_missing_coords_py", "target": "dotenv", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/geocode_jeju_missing_coords.py", "source_location": "L16", "weight": 1.0}, {"source": "$graphify-root$_scripts_geocode_jeju_missing_coords_py", "target": "src_data_kakao_local", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/geocode_jeju_missing_coords.py", "source_location": "L22", "weight": 1.0}, {"source": "$graphify-root$_scripts_geocode_jeju_missing_coords_py", "target": "$graphify-root$_scripts_geocode_jeju_missing_coords_main", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/geocode_jeju_missing_coords.py", "source_location": "L28", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_scripts_geocode_jeju_missing_coords_main", "callee": "exists", "is_member_call": true, "source_file": "scripts/geocode_jeju_missing_coords.py", "source_location": "L29", "receiver": "XLSX_PATH"}, {"caller_nid": "$graphify-root$_scripts_geocode_jeju_missing_coords_main", "callee": "SystemExit", "is_member_call": false, "source_file": "scripts/geocode_jeju_missing_coords.py", "source_location": "L30", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_geocode_jeju_missing_coords_main", "callee": "from_env", "is_member_call": true, "source_file": "scripts/geocode_jeju_missing_coords.py", "source_location": "L32", "receiver": "KakaoLocalClient"}, {"caller_nid": "$graphify-root$_scripts_geocode_jeju_missing_coords_main", "callee": "SystemExit", "is_member_call": false, "source_file": "scripts/geocode_jeju_missing_coords.py", "source_location": "L34", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_geocode_jeju_missing_coords_main", "callee": "with_suffix", "is_member_call": true, "source_file": "scripts/geocode_jeju_missing_coords.py", "source_location": "L36", "receiver": "XLSX_PATH"}, {"caller_nid": "$graphify-root$_scripts_geocode_jeju_missing_coords_main", "callee": "copy2", "is_member_call": true, "source_file": "scripts/geocode_jeju_missing_coords.py", "source_location": "L37", "receiver": "shutil"}, {"caller_nid": "$graphify-root$_scripts_geocode_jeju_missing_coords_main", "callee": "XLSX_PATH", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/geocode_jeju_missing_coords.py", "source_location": "L37"}, {"caller_nid": "$graphify-root$_scripts_geocode_jeju_missing_coords_main", "callee": "load_workbook", "is_member_call": true, "source_file": "scripts/geocode_jeju_missing_coords.py", "source_location": "L40", "receiver": "openpyxl"}, {"caller_nid": "$graphify-root$_scripts_geocode_jeju_missing_coords_main", "callee": "XLSX_PATH", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/geocode_jeju_missing_coords.py", "source_location": "L40"}, {"caller_nid": "$graphify-root$_scripts_geocode_jeju_missing_coords_main", "callee": "iter_rows", "is_member_call": true, "source_file": "scripts/geocode_jeju_missing_coords.py", "source_location": "L42", "receiver": "ws"}, {"caller_nid": "$graphify-root$_scripts_geocode_jeju_missing_coords_main", "callee": "iter_rows", "is_member_call": true, "source_file": "scripts/geocode_jeju_missing_coords.py", "source_location": "L49", "receiver": "ws"}, {"caller_nid": "$graphify-root$_scripts_geocode_jeju_missing_coords_main", "callee": "geocode_address", "is_member_call": true, "source_file": "scripts/geocode_jeju_missing_coords.py", "source_location": "L63", "receiver": "client"}, {"caller_nid": "$graphify-root$_scripts_geocode_jeju_missing_coords_main", "callee": "search_keyword", "is_member_call": true, "source_file": "scripts/geocode_jeju_missing_coords.py", "source_location": "L66", "receiver": "client"}, {"caller_nid": "$graphify-root$_scripts_geocode_jeju_missing_coords_main", "callee": "search_keyword", "is_member_call": true, "source_file": "scripts/geocode_jeju_missing_coords.py", "source_location": "L66", "receiver": "client"}, {"caller_nid": "$graphify-root$_scripts_geocode_jeju_missing_coords_main", "callee": "append", "is_member_call": true, "source_file": "scripts/geocode_jeju_missing_coords.py", "source_location": "L79", "receiver": "still_missing"}, {"caller_nid": "$graphify-root$_scripts_geocode_jeju_missing_coords_main", "callee": "sleep", "is_member_call": true, "source_file": "scripts/geocode_jeju_missing_coords.py", "source_location": "L83", "receiver": "time"}, {"caller_nid": "$graphify-root$_scripts_geocode_jeju_missing_coords_main", "callee": "save", "is_member_call": true, "source_file": "scripts/geocode_jeju_missing_coords.py", "source_location": "L85", "receiver": "wb"}, {"caller_nid": "$graphify-root$_scripts_geocode_jeju_missing_coords_main", "callee": "XLSX_PATH", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/geocode_jeju_missing_coords.py", "source_location": "L85"}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.31/27ad0975d768033562e94d9a8e572dc7fc7c16032a0ac9c746f5f89e4297eb02.json b/graphify-out/cache/ast/v0.9.31/27ad0975d768033562e94d9a8e572dc7fc7c16032a0ac9c746f5f89e4297eb02.json new file mode 100644 index 0000000..c0f8b60 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.31/27ad0975d768033562e94d9a8e572dc7fc7c16032a0ac9c746f5f89e4297eb02.json @@ -0,0 +1 @@ +{"nodes": [{"id": "pkg_travel_plan_validator", "label": "travel-plan-validator", "file_type": "code", "type": "package", "ecosystem": "python", "source_file": "pyproject.toml", "source_location": "L1", "version": "1.0.0"}], "edges": [{"source": "pkg_travel_plan_validator", "target": "pkg_fastapi", "relation": "depends_on", "context": "dependency", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "pyproject.toml", "source_location": "L1", "weight": 1.0}, {"source": "pkg_travel_plan_validator", "target": "pkg_uvicorn", "relation": "depends_on", "context": "dependency", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "pyproject.toml", "source_location": "L1", "weight": 1.0}, {"source": "pkg_travel_plan_validator", "target": "pkg_httpx", "relation": "depends_on", "context": "dependency", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "pyproject.toml", "source_location": "L1", "weight": 1.0}, {"source": "pkg_travel_plan_validator", "target": "pkg_pydantic", "relation": "depends_on", "context": "dependency", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "pyproject.toml", "source_location": "L1", "weight": 1.0}, {"source": "pkg_travel_plan_validator", "target": "pkg_pydantic_settings", "relation": "depends_on", "context": "dependency", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "pyproject.toml", "source_location": "L1", "weight": 1.0}, {"source": "pkg_travel_plan_validator", "target": "pkg_python_dotenv", "relation": "depends_on", "context": "dependency", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "pyproject.toml", "source_location": "L1", "weight": 1.0}, {"source": "pkg_travel_plan_validator", "target": "pkg_anthropic", "relation": "depends_on", "context": "dependency", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "pyproject.toml", "source_location": "L1", "weight": 1.0}, {"source": "pkg_travel_plan_validator", "target": "pkg_pandas", "relation": "depends_on", "context": "dependency", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "pyproject.toml", "source_location": "L1", "weight": 1.0}, {"source": "pkg_travel_plan_validator", "target": "pkg_pdfplumber", "relation": "depends_on", "context": "dependency", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "pyproject.toml", "source_location": "L1", "weight": 1.0}, {"source": "pkg_travel_plan_validator", "target": "pkg_tqdm", "relation": "depends_on", "context": "dependency", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "pyproject.toml", "source_location": "L1", "weight": 1.0}, {"source": "pkg_travel_plan_validator", "target": "pkg_openpyxl", "relation": "depends_on", "context": "dependency", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "pyproject.toml", "source_location": "L1", "weight": 1.0}, {"source": "pkg_travel_plan_validator", "target": "pkg_scipy", "relation": "depends_on", "context": "dependency", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "pyproject.toml", "source_location": "L1", "weight": 1.0}, {"source": "pkg_travel_plan_validator", "target": "pkg_neo4j", "relation": "depends_on", "context": "dependency", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "pyproject.toml", "source_location": "L1", "weight": 1.0}, {"source": "pkg_travel_plan_validator", "target": "pkg_python_multipart", "relation": "depends_on", "context": "dependency", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "pyproject.toml", "source_location": "L1", "weight": 1.0}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.31/2c496b5d9432610f4d41952bb0bc8cf11f33d56daf69c3b30c0ec6f14a0883ad.json b/graphify-out/cache/ast/v0.9.31/2c496b5d9432610f4d41952bb0bc8cf11f33d56daf69c3b30c0ec6f14a0883ad.json new file mode 100644 index 0000000..acb10c3 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.31/2c496b5d9432610f4d41952bb0bc8cf11f33d56daf69c3b30c0ec6f14a0883ad.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_tests_test_reward_engine_py", "label": "test_reward_engine.py", "file_type": "code", "source_file": "tests/test_reward_engine.py", "source_location": "L1"}, {"id": "$graphify-root$_tests_test_reward_engine_scores", "label": "_scores()", "file_type": "code", "source_file": "tests/test_reward_engine.py", "source_location": "L10", "_callable": true}, {"id": "$graphify-root$_tests_test_reward_engine_testgeneraterewards", "label": "TestGenerateRewards", "file_type": "code", "source_file": "tests/test_reward_engine.py", "source_location": "L16", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_tests_test_reward_engine_testgeneraterewards_test_hard_fail_returns_empty", "label": ".test_hard_fail_returns_empty()", "file_type": "code", "source_file": "tests/test_reward_engine.py", "source_location": "L17", "_callable": true}, {"id": "$graphify-root$_tests_test_reward_engine_testgeneraterewards_test_excellent_flow_generates_message", "label": ".test_excellent_flow_generates_message()", "file_type": "code", "source_file": "tests/test_reward_engine.py", "source_location": "L27", "_callable": true}, {"id": "$graphify-root$_tests_test_reward_engine_testgeneraterewards_test_excellent_efficiency_generates_message", "label": ".test_excellent_efficiency_generates_message()", "file_type": "code", "source_file": "tests/test_reward_engine.py", "source_location": "L37", "_callable": true}, {"id": "$graphify-root$_tests_test_reward_engine_testgeneraterewards_test_low_travel_ratio_generates_message", "label": ".test_low_travel_ratio_generates_message()", "file_type": "code", "source_file": "tests/test_reward_engine.py", "source_location": "L47", "_callable": true}, {"id": "$graphify-root$_tests_test_reward_engine_testgeneraterewards_test_excellent_purpose_fit_generates_message", "label": ".test_excellent_purpose_fit_generates_message()", "file_type": "code", "source_file": "tests/test_reward_engine.py", "source_location": "L57", "_callable": true}, {"id": "$graphify-root$_tests_test_reward_engine_testgeneraterewards_test_no_warnings_generates_message", "label": ".test_no_warnings_generates_message()", "file_type": "code", "source_file": "tests/test_reward_engine.py", "source_location": "L67", "_callable": true}, {"id": "$graphify-root$_tests_test_reward_engine_testgeneraterewards_test_zero_cluster_penalty_generates_message", "label": ".test_zero_cluster_penalty_generates_message()", "file_type": "code", "source_file": "tests/test_reward_engine.py", "source_location": "L77", "_callable": true}, {"id": "$graphify-root$_tests_test_reward_engine_testgeneraterewards_test_perfect_plan_all_messages", "label": ".test_perfect_plan_all_messages()", "file_type": "code", "source_file": "tests/test_reward_engine.py", "source_location": "L87", "_callable": true}, {"id": "$graphify-root$_tests_test_reward_engine_testgeneraterewards_test_mediocre_plan_few_messages", "label": ".test_mediocre_plan_few_messages()", "file_type": "code", "source_file": "tests/test_reward_engine.py", "source_location": "L97", "_callable": true}], "edges": [{"source": "$graphify-root$_tests_test_reward_engine_py", "target": "pytest", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_reward_engine.py", "source_location": "L4", "weight": 1.0}, {"source": "$graphify-root$_tests_test_reward_engine_py", "target": "src_data_models", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_reward_engine.py", "source_location": "L6", "weight": 1.0}, {"source": "$graphify-root$_tests_test_reward_engine_py", "target": "src_scoring_reward_engine", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_reward_engine.py", "source_location": "L7", "weight": 1.0}, {"source": "$graphify-root$_tests_test_reward_engine_py", "target": "$graphify-root$_tests_test_reward_engine_scores", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_reward_engine.py", "source_location": "L10", "weight": 1.0}, {"source": "$graphify-root$_tests_test_reward_engine_py", "target": "$graphify-root$_tests_test_reward_engine_testgeneraterewards", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_reward_engine.py", "source_location": "L16", "weight": 1.0}, {"source": "$graphify-root$_tests_test_reward_engine_testgeneraterewards", "target": "$graphify-root$_tests_test_reward_engine_testgeneraterewards_test_hard_fail_returns_empty", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_reward_engine.py", "source_location": "L17", "weight": 1.0}, {"source": "$graphify-root$_tests_test_reward_engine_testgeneraterewards", "target": "$graphify-root$_tests_test_reward_engine_testgeneraterewards_test_excellent_flow_generates_message", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_reward_engine.py", "source_location": "L27", "weight": 1.0}, {"source": "$graphify-root$_tests_test_reward_engine_testgeneraterewards", "target": "$graphify-root$_tests_test_reward_engine_testgeneraterewards_test_excellent_efficiency_generates_message", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_reward_engine.py", "source_location": "L37", "weight": 1.0}, {"source": "$graphify-root$_tests_test_reward_engine_testgeneraterewards", "target": "$graphify-root$_tests_test_reward_engine_testgeneraterewards_test_low_travel_ratio_generates_message", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_reward_engine.py", "source_location": "L47", "weight": 1.0}, {"source": "$graphify-root$_tests_test_reward_engine_testgeneraterewards", "target": "$graphify-root$_tests_test_reward_engine_testgeneraterewards_test_excellent_purpose_fit_generates_message", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_reward_engine.py", "source_location": "L57", "weight": 1.0}, {"source": "$graphify-root$_tests_test_reward_engine_testgeneraterewards", "target": "$graphify-root$_tests_test_reward_engine_testgeneraterewards_test_no_warnings_generates_message", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_reward_engine.py", "source_location": "L67", "weight": 1.0}, {"source": "$graphify-root$_tests_test_reward_engine_testgeneraterewards", "target": "$graphify-root$_tests_test_reward_engine_testgeneraterewards_test_zero_cluster_penalty_generates_message", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_reward_engine.py", "source_location": "L77", "weight": 1.0}, {"source": "$graphify-root$_tests_test_reward_engine_testgeneraterewards", "target": "$graphify-root$_tests_test_reward_engine_testgeneraterewards_test_perfect_plan_all_messages", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_reward_engine.py", "source_location": "L87", "weight": 1.0}, {"source": "$graphify-root$_tests_test_reward_engine_testgeneraterewards", "target": "$graphify-root$_tests_test_reward_engine_testgeneraterewards_test_mediocre_plan_few_messages", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_reward_engine.py", "source_location": "L97", "weight": 1.0}, {"source": "$graphify-root$_tests_test_reward_engine_testgeneraterewards_test_hard_fail_returns_empty", "target": "$graphify-root$_tests_test_reward_engine_scores", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_reward_engine.py", "source_location": "L19", "weight": 1.0}, {"source": "$graphify-root$_tests_test_reward_engine_testgeneraterewards_test_excellent_flow_generates_message", "target": "$graphify-root$_tests_test_reward_engine_scores", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_reward_engine.py", "source_location": "L29", "weight": 1.0}, {"source": "$graphify-root$_tests_test_reward_engine_testgeneraterewards_test_excellent_efficiency_generates_message", "target": "$graphify-root$_tests_test_reward_engine_scores", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_reward_engine.py", "source_location": "L39", "weight": 1.0}, {"source": "$graphify-root$_tests_test_reward_engine_testgeneraterewards_test_low_travel_ratio_generates_message", "target": "$graphify-root$_tests_test_reward_engine_scores", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_reward_engine.py", "source_location": "L49", "weight": 1.0}, {"source": "$graphify-root$_tests_test_reward_engine_testgeneraterewards_test_excellent_purpose_fit_generates_message", "target": "$graphify-root$_tests_test_reward_engine_scores", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_reward_engine.py", "source_location": "L59", "weight": 1.0}, {"source": "$graphify-root$_tests_test_reward_engine_testgeneraterewards_test_no_warnings_generates_message", "target": "$graphify-root$_tests_test_reward_engine_scores", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_reward_engine.py", "source_location": "L69", "weight": 1.0}, {"source": "$graphify-root$_tests_test_reward_engine_testgeneraterewards_test_zero_cluster_penalty_generates_message", "target": "$graphify-root$_tests_test_reward_engine_scores", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_reward_engine.py", "source_location": "L79", "weight": 1.0}, {"source": "$graphify-root$_tests_test_reward_engine_testgeneraterewards_test_perfect_plan_all_messages", "target": "$graphify-root$_tests_test_reward_engine_scores", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_reward_engine.py", "source_location": "L89", "weight": 1.0}, {"source": "$graphify-root$_tests_test_reward_engine_testgeneraterewards_test_mediocre_plan_few_messages", "target": "$graphify-root$_tests_test_reward_engine_scores", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_reward_engine.py", "source_location": "L99", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_tests_test_reward_engine_scores", "callee": "update", "is_member_call": true, "source_file": "tests/test_reward_engine.py", "source_location": "L12", "receiver": "defaults"}, {"caller_nid": "$graphify-root$_tests_test_reward_engine_scores", "callee": "Scores", "is_member_call": false, "source_file": "tests/test_reward_engine.py", "source_location": "L13", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_reward_engine_testgeneraterewards_test_hard_fail_returns_empty", "callee": "generate_rewards", "is_member_call": false, "source_file": "tests/test_reward_engine.py", "source_location": "L18", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_reward_engine_testgeneraterewards_test_excellent_flow_generates_message", "callee": "generate_rewards", "is_member_call": false, "source_file": "tests/test_reward_engine.py", "source_location": "L28", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_reward_engine_testgeneraterewards_test_excellent_efficiency_generates_message", "callee": "generate_rewards", "is_member_call": false, "source_file": "tests/test_reward_engine.py", "source_location": "L38", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_reward_engine_testgeneraterewards_test_low_travel_ratio_generates_message", "callee": "generate_rewards", "is_member_call": false, "source_file": "tests/test_reward_engine.py", "source_location": "L48", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_reward_engine_testgeneraterewards_test_excellent_purpose_fit_generates_message", "callee": "generate_rewards", "is_member_call": false, "source_file": "tests/test_reward_engine.py", "source_location": "L58", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_reward_engine_testgeneraterewards_test_no_warnings_generates_message", "callee": "generate_rewards", "is_member_call": false, "source_file": "tests/test_reward_engine.py", "source_location": "L68", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_reward_engine_testgeneraterewards_test_zero_cluster_penalty_generates_message", "callee": "generate_rewards", "is_member_call": false, "source_file": "tests/test_reward_engine.py", "source_location": "L78", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_reward_engine_testgeneraterewards_test_perfect_plan_all_messages", "callee": "generate_rewards", "is_member_call": false, "source_file": "tests/test_reward_engine.py", "source_location": "L88", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_reward_engine_testgeneraterewards_test_mediocre_plan_few_messages", "callee": "generate_rewards", "is_member_call": false, "source_file": "tests/test_reward_engine.py", "source_location": "L98", "receiver": null}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.31/2c7301f16aafa872f7322bd07d375751d63e9748859fbe253ad73eb92b79cb8f.json b/graphify-out/cache/ast/v0.9.31/2c7301f16aafa872f7322bd07d375751d63e9748859fbe253ad73eb92b79cb8f.json new file mode 100644 index 0000000..a324dc6 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.31/2c7301f16aafa872f7322bd07d375751d63e9748859fbe253ad73eb92b79cb8f.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_tests_test_restaurant_catalog_py", "label": "test_restaurant_catalog.py", "file_type": "code", "source_file": "tests/test_restaurant_catalog.py", "source_location": "L1"}, {"id": "$graphify-root$_tests_test_restaurant_catalog_catalog", "label": "_catalog()", "file_type": "code", "source_file": "tests/test_restaurant_catalog.py", "source_location": "L7", "_callable": true}, {"id": "restaurantcatalog", "label": "RestaurantCatalog", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/tests/test_restaurant_catalog.py"}, {"id": "$graphify-root$_tests_test_restaurant_catalog_test_nearby_returns_within_radius_sorted_by_distance", "label": "test_nearby_returns_within_radius_sorted_by_distance()", "file_type": "code", "source_file": "tests/test_restaurant_catalog.py", "source_location": "L15", "_callable": true}, {"id": "$graphify-root$_tests_test_restaurant_catalog_test_nearby_excludes_self", "label": "test_nearby_excludes_self()", "file_type": "code", "source_file": "tests/test_restaurant_catalog.py", "source_location": "L22", "_callable": true}, {"id": "$graphify-root$_tests_test_restaurant_catalog_test_nearby_empty_when_no_restaurants_in_radius", "label": "test_nearby_empty_when_no_restaurants_in_radius()", "file_type": "code", "source_file": "tests/test_restaurant_catalog.py", "source_location": "L27", "_callable": true}, {"id": "$graphify-root$_tests_test_restaurant_catalog_rationale_1", "label": "RestaurantCatalog \uc720\ub2db \ud14c\uc2a4\ud2b8 (\uc2e4\uc81c CSV I/O \uc5c6\uc74c \u2014 \uc778\uba54\ubaa8\ub9ac \ub370\uc774\ud130 \uc0ac\uc6a9).", "file_type": "rationale", "source_file": "tests/test_restaurant_catalog.py", "source_location": "L1"}], "edges": [{"source": "$graphify-root$_tests_test_restaurant_catalog_py", "target": "src_data_restaurant_catalog", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_restaurant_catalog.py", "source_location": "L4", "weight": 1.0}, {"source": "$graphify-root$_tests_test_restaurant_catalog_py", "target": "$graphify-root$_tests_test_restaurant_catalog_catalog", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_restaurant_catalog.py", "source_location": "L7", "weight": 1.0}, {"source": "$graphify-root$_tests_test_restaurant_catalog_catalog", "target": "restaurantcatalog", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "tests/test_restaurant_catalog.py", "source_location": "L7", "weight": 1.0}, {"source": "$graphify-root$_tests_test_restaurant_catalog_py", "target": "$graphify-root$_tests_test_restaurant_catalog_test_nearby_returns_within_radius_sorted_by_distance", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_restaurant_catalog.py", "source_location": "L15", "weight": 1.0}, {"source": "$graphify-root$_tests_test_restaurant_catalog_py", "target": "$graphify-root$_tests_test_restaurant_catalog_test_nearby_excludes_self", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_restaurant_catalog.py", "source_location": "L22", "weight": 1.0}, {"source": "$graphify-root$_tests_test_restaurant_catalog_py", "target": "$graphify-root$_tests_test_restaurant_catalog_test_nearby_empty_when_no_restaurants_in_radius", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_restaurant_catalog.py", "source_location": "L27", "weight": 1.0}, {"source": "$graphify-root$_tests_test_restaurant_catalog_catalog", "target": "restaurantcatalog", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_restaurant_catalog.py", "source_location": "L8", "weight": 1.0}, {"source": "$graphify-root$_tests_test_restaurant_catalog_test_nearby_returns_within_radius_sorted_by_distance", "target": "$graphify-root$_tests_test_restaurant_catalog_catalog", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_restaurant_catalog.py", "source_location": "L16", "weight": 1.0}, {"source": "$graphify-root$_tests_test_restaurant_catalog_test_nearby_excludes_self", "target": "$graphify-root$_tests_test_restaurant_catalog_catalog", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_restaurant_catalog.py", "source_location": "L23", "weight": 1.0}, {"source": "$graphify-root$_tests_test_restaurant_catalog_test_nearby_empty_when_no_restaurants_in_radius", "target": "restaurantcatalog", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_restaurant_catalog.py", "source_location": "L28", "weight": 1.0}, {"source": "$graphify-root$_tests_test_restaurant_catalog_rationale_1", "target": "$graphify-root$_tests_test_restaurant_catalog_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_restaurant_catalog.py", "source_location": "L1", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_tests_test_restaurant_catalog_test_nearby_returns_within_radius_sorted_by_distance", "callee": "nearby", "is_member_call": true, "source_file": "tests/test_restaurant_catalog.py", "source_location": "L16", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_restaurant_catalog_test_nearby_excludes_self", "callee": "nearby", "is_member_call": true, "source_file": "tests/test_restaurant_catalog.py", "source_location": "L23", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_restaurant_catalog_test_nearby_empty_when_no_restaurants_in_radius", "callee": "nearby", "is_member_call": true, "source_file": "tests/test_restaurant_catalog.py", "source_location": "L29", "receiver": "catalog"}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.31/2d8e22a201939a2bafec1809a59ad56c137e2b82647dd3b47161e6ca92603bb9.json b/graphify-out/cache/ast/v0.9.31/2d8e22a201939a2bafec1809a59ad56c137e2b82647dd3b47161e6ca92603bb9.json new file mode 100644 index 0000000..b6dc81a --- /dev/null +++ b/graphify-out/cache/ast/v0.9.31/2d8e22a201939a2bafec1809a59ad56c137e2b82647dd3b47161e6ca92603bb9.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_phases_0_setup_visualize_combined_py", "label": "visualize_combined.py", "file_type": "code", "source_file": "phases/0-setup/visualize_combined.py", "source_location": "L1"}, {"id": "$graphify-root$_phases_0_setup_visualize_combined_rationale_1", "label": "\ud2b8\ub9ac\ud50c + \uad6c\uc11d\uad6c\uc11d \ube44\uad50 \uc2dc\uac01\ud654 Figure 1: \ud2b8\ub9ac\ud50c \ub2e8\ub3c5 \ud488\uc9c8 \ub9ac\ud3ec\ud2b8 (triple_quality_report.png) Figure 2:\u2026", "file_type": "rationale", "source_file": "phases/0-setup/visualize_combined.py", "source_location": "L1"}], "edges": [{"source": "$graphify-root$_phases_0_setup_visualize_combined_py", "target": "json", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "phases/0-setup/visualize_combined.py", "source_location": "L6", "weight": 1.0}, {"source": "$graphify-root$_phases_0_setup_visualize_combined_py", "target": "matplotlib", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "phases/0-setup/visualize_combined.py", "source_location": "L7", "weight": 1.0}, {"source": "$graphify-root$_phases_0_setup_visualize_combined_py", "target": "matplotlib_pyplot", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "phases/0-setup/visualize_combined.py", "source_location": "L8", "weight": 1.0, "local_alias": "plt"}, {"source": "$graphify-root$_phases_0_setup_visualize_combined_py", "target": "matplotlib_patches", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "phases/0-setup/visualize_combined.py", "source_location": "L9", "weight": 1.0, "local_alias": "mpatches"}, {"source": "$graphify-root$_phases_0_setup_visualize_combined_py", "target": "numpy", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "phases/0-setup/visualize_combined.py", "source_location": "L10", "weight": 1.0, "local_alias": "np"}, {"source": "$graphify-root$_phases_0_setup_visualize_combined_py", "target": "pathlib", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "phases/0-setup/visualize_combined.py", "source_location": "L11", "weight": 1.0}, {"source": "$graphify-root$_phases_0_setup_visualize_combined_py", "target": "collections", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "phases/0-setup/visualize_combined.py", "source_location": "L12", "weight": 1.0}, {"source": "$graphify-root$_phases_0_setup_visualize_combined_rationale_1", "target": "$graphify-root$_phases_0_setup_visualize_combined_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "phases/0-setup/visualize_combined.py", "source_location": "L1", "weight": 1.0}], "raw_calls": []} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.31/33c5fb364c349fc3e085e6093090a51ca7d2b4ff2f0a3c46660d9944971647f6.json b/graphify-out/cache/ast/v0.9.31/33c5fb364c349fc3e085e6093090a51ca7d2b4ff2f0a3c46660d9944971647f6.json new file mode 100644 index 0000000..b759ce1 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.31/33c5fb364c349fc3e085e6093090a51ca7d2b4ff2f0a3c46660d9944971647f6.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_src_scoring_init_py", "label": "__init__.py", "file_type": "code", "source_file": "src/scoring/__init__.py", "source_location": "L1"}, {"id": "$graphify-root$_src_scoring_init_rationale_1", "label": "\ud488\uc9c8 \ud3c9\uac00 (Scoring) \ub808\uc774\uc5b4. VRPTW \uac80\uc99d\uc744 \ud1b5\uacfc\ud55c \uc77c\uc815\uc5d0 \ub300\ud574 \"\uc5bc\ub9c8\ub098 \uc88b\uc740 \uacbd\ub85c\uc778\uac00\" \ud3c9\uac00: - travel_ratio : \uc774\ub3d9\u2026", "file_type": "rationale", "source_file": "src/scoring/__init__.py", "source_location": "L1"}], "edges": [{"source": "$graphify-root$_src_scoring_init_rationale_1", "target": "$graphify-root$_src_scoring_init_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/scoring/__init__.py", "source_location": "L1", "weight": 1.0}], "raw_calls": []} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.31/3873598f4c623dc9fc625fdb2a5f14a8a89bb8d637bce5a39dba49eede4971f2.json b/graphify-out/cache/ast/v0.9.31/3873598f4c623dc9fc625fdb2a5f14a8a89bb8d637bce5a39dba49eede4971f2.json new file mode 100644 index 0000000..d79c314 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.31/3873598f4c623dc9fc625fdb2a5f14a8a89bb8d637bce5a39dba49eede4971f2.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_tests_test_repair_py", "label": "test_repair.py", "file_type": "code", "source_file": "tests/test_repair.py", "source_location": "L1"}, {"id": "$graphify-root$_tests_test_repair_repairengine", "label": "RepairEngine()", "file_type": "code", "source_file": "tests/test_repair.py", "source_location": "L10", "_callable": true}, {"id": "restaurantcatalog", "label": "RestaurantCatalog", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/tests/test_repair.py"}, {"id": "repairengineclass", "label": "_RepairEngineClass", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/tests/test_repair.py"}, {"id": "$graphify-root$_tests_test_repair_poi", "label": "_poi()", "file_type": "code", "source_file": "tests/test_repair.py", "source_location": "L15", "_callable": true}, {"id": "$graphify-root$_tests_test_repair_plan", "label": "_plan()", "file_type": "code", "source_file": "tests/test_repair.py", "source_location": "L31", "_callable": true}, {"id": "itineraryplan", "label": "ItineraryPlan", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/tests/test_repair.py"}, {"id": "$graphify-root$_tests_test_repair_fail", "label": "_fail()", "file_type": "code", "source_file": "tests/test_repair.py", "source_location": "L42", "_callable": true}, {"id": "hardfail", "label": "HardFail", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/tests/test_repair.py"}, {"id": "$graphify-root$_tests_test_repair_testrepairenginenoop", "label": "TestRepairEngineNoop", "file_type": "code", "source_file": "tests/test_repair.py", "source_location": "L53", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_tests_test_repair_testrepairenginenoop_test_empty_when_no_hard_fails", "label": ".test_empty_when_no_hard_fails()", "file_type": "code", "source_file": "tests/test_repair.py", "source_location": "L54", "_callable": true}, {"id": "$graphify-root$_tests_test_repair_testrepairenginenoop_test_empty_when_pois_list_is_empty", "label": ".test_empty_when_pois_list_is_empty()", "file_type": "code", "source_file": "tests/test_repair.py", "source_location": "L60", "_callable": true}, {"id": "$graphify-root$_tests_test_repair_outlier_pois", "label": "_outlier_pois()", "file_type": "code", "source_file": "tests/test_repair.py", "source_location": "L74", "_callable": true}, {"id": "$graphify-root$_tests_test_repair_testdeletionsuggestion", "label": "TestDeletionSuggestion", "file_type": "code", "source_file": "tests/test_repair.py", "source_location": "L88", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_tests_test_repair_testdeletionsuggestion_test_identifies_geometric_outlier", "label": ".test_identifies_geometric_outlier()", "file_type": "code", "source_file": "tests/test_repair.py", "source_location": "L89", "_callable": true}, {"id": "$graphify-root$_tests_test_repair_testdeletionsuggestion_test_outlier_deletion_has_positive_savings", "label": ".test_outlier_deletion_has_positive_savings()", "file_type": "code", "source_file": "tests/test_repair.py", "source_location": "L97", "_callable": true}, {"id": "$graphify-root$_tests_test_repair_testdeletionsuggestion_test_no_deletion_for_two_pois", "label": ".test_no_deletion_for_two_pois()", "file_type": "code", "source_file": "tests/test_repair.py", "source_location": "L104", "_callable": true}, {"id": "$graphify-root$_tests_test_repair_testdeletionsuggestion_test_deletion_reason_mentions_candidate", "label": ".test_deletion_reason_mentions_candidate()", "file_type": "code", "source_file": "tests/test_repair.py", "source_location": "L110", "_callable": true}, {"id": "$graphify-root$_tests_test_repair_testdeletionsuggestion_test_deletion_recommends_nearby_restaurant_when_available", "label": ".test_deletion_recommends_nearby_restaurant_when_available()", "file_type": "code", "source_file": "tests/test_repair.py", "source_location": "L117", "_callable": true}, {"id": "$graphify-root$_tests_test_repair_testdeletionsuggestion_test_deletion_explains_when_no_restaurant_nearby", "label": ".test_deletion_explains_when_no_restaurant_nearby()", "file_type": "code", "source_file": "tests/test_repair.py", "source_location": "L127", "_callable": true}, {"id": "$graphify-root$_tests_test_repair_testtimetunesuggestion", "label": "TestTimeTuneSuggestion", "file_type": "code", "source_file": "tests/test_repair.py", "source_location": "L140", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_tests_test_repair_testtimetunesuggestion_test_no_tune_when_within_limit", "label": ".test_no_tune_when_within_limit()", "file_type": "code", "source_file": "tests/test_repair.py", "source_location": "L141", "_callable": true}, {"id": "$graphify-root$_tests_test_repair_testtimetunesuggestion_test_tune_suggested_when_over_limit", "label": ".test_tune_suggested_when_over_limit()", "file_type": "code", "source_file": "tests/test_repair.py", "source_location": "L149", "_callable": true}, {"id": "$graphify-root$_tests_test_repair_testtimetunesuggestion_test_adjusted_durations_above_minimum", "label": ".test_adjusted_durations_above_minimum()", "file_type": "code", "source_file": "tests/test_repair.py", "source_location": "L158", "_callable": true}, {"id": "$graphify-root$_tests_test_repair_testresultmodel", "label": "TestResultModel", "file_type": "code", "source_file": "tests/test_repair.py", "source_location": "L173", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_tests_test_repair_testresultmodel_test_to_dict_is_serializable", "label": ".test_to_dict_is_serializable()", "file_type": "code", "source_file": "tests/test_repair.py", "source_location": "L174", "_callable": true}, {"id": "$graphify-root$_tests_test_repair_testresultmodel_test_is_empty_true_when_no_suggestions", "label": ".test_is_empty_true_when_no_suggestions()", "file_type": "code", "source_file": "tests/test_repair.py", "source_location": "L182", "_callable": true}, {"id": "$graphify-root$_tests_test_repair_testresultmodel_test_is_empty_false_when_has_deletion", "label": ".test_is_empty_false_when_has_deletion()", "file_type": "code", "source_file": "tests/test_repair.py", "source_location": "L188", "_callable": true}, {"id": "$graphify-root$_tests_test_repair_testtotalestimatedgain", "label": "TestTotalEstimatedGain", "file_type": "code", "source_file": "tests/test_repair.py", "source_location": "L199", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_tests_test_repair_testtotalestimatedgain_test_sums_across_different_days", "label": ".test_sums_across_different_days()", "file_type": "code", "source_file": "tests/test_repair.py", "source_location": "L200", "_callable": true}, {"id": "$graphify-root$_tests_test_repair_testtotalestimatedgain_test_takes_max_of_alternatives_on_same_day", "label": ".test_takes_max_of_alternatives_on_same_day()", "file_type": "code", "source_file": "tests/test_repair.py", "source_location": "L207", "_callable": true}, {"id": "$graphify-root$_tests_test_repair_testtotalestimatedgain_test_zero_when_empty", "label": ".test_zero_when_empty()", "file_type": "code", "source_file": "tests/test_repair.py", "source_location": "L214", "_callable": true}, {"id": "$graphify-root$_tests_test_repair_testtotalestimatedgain_test_included_in_to_dict", "label": ".test_included_in_to_dict()", "file_type": "code", "source_file": "tests/test_repair.py", "source_location": "L217", "_callable": true}, {"id": "$graphify-root$_tests_test_repair_rationale_11", "label": "\ud14c\uc2a4\ud2b8 \uc804\uc6a9 \ud329\ud1a0\ub9ac \u2014 \ube48 \uce74\ud0c8\ub85c\uadf8\ub97c \uae30\ubcf8\uac12\uc73c\ub85c \uc368\uc11c \uc2e4\uc81c CSV I/O\ub97c \ud53c\ud55c\ub2e4.", "file_type": "rationale", "source_file": "tests/test_repair.py", "source_location": "L11"}, {"id": "$graphify-root$_tests_test_repair_rationale_75", "label": "8\uac1c POI \u2014 D(lat=38.5)\uac00 A-C, E-H(lat=37.5) \uc0ac\uc774\uc758 \uc9c0\ub9ac\uc801 \uc774\uc0c1\uce58.", "file_type": "rationale", "source_file": "tests/test_repair.py", "source_location": "L75"}, {"id": "$graphify-root$_tests_test_repair_rationale_142", "label": "\uce5c\uad6c(720min) \uae30\uc900, \ucd1d 120min \u2192 \uc870\uc815 \ubd88\ud544\uc694.", "file_type": "rationale", "source_file": "tests/test_repair.py", "source_location": "L142"}, {"id": "$graphify-root$_tests_test_repair_rationale_150", "label": "5 \u00d7 200min = 1000min > 720min \u2192 \ud29c\ub2dd \ud544\uc694.", "file_type": "rationale", "source_file": "tests/test_repair.py", "source_location": "L150"}, {"id": "$graphify-root$_tests_test_repair_rationale_159", "label": "\uc870\uc815 \ud6c4 duration\uc774 \uc808\ub300 \ucd5c\uc19f\uac12(20\ubd84) \uc774\uc0c1 \ubcf4\uc7a5.", "file_type": "rationale", "source_file": "tests/test_repair.py", "source_location": "L159"}], "edges": [{"source": "$graphify-root$_tests_test_repair_py", "target": "src_data_models", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_repair.py", "source_location": "L4", "weight": 1.0}, {"source": "$graphify-root$_tests_test_repair_py", "target": "src_data_restaurant_catalog", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_repair.py", "source_location": "L5", "weight": 1.0}, {"source": "$graphify-root$_tests_test_repair_py", "target": "src_explain_repair", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_repair.py", "source_location": "L6", "weight": 1.0}, {"source": "$graphify-root$_tests_test_repair_py", "target": "src_explain_repair", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_repair.py", "source_location": "L7", "weight": 1.0}, {"source": "$graphify-root$_tests_test_repair_py", "target": "$graphify-root$_tests_test_repair_repairengine", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_repair.py", "source_location": "L10", "weight": 1.0}, {"source": "$graphify-root$_tests_test_repair_repairengine", "target": "restaurantcatalog", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "tests/test_repair.py", "source_location": "L10", "weight": 1.0}, {"source": "$graphify-root$_tests_test_repair_repairengine", "target": "repairengineclass", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "tests/test_repair.py", "source_location": "L10", "weight": 1.0}, {"source": "$graphify-root$_tests_test_repair_py", "target": "$graphify-root$_tests_test_repair_poi", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_repair.py", "source_location": "L15", "weight": 1.0}, {"source": "$graphify-root$_tests_test_repair_py", "target": "$graphify-root$_tests_test_repair_plan", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_repair.py", "source_location": "L31", "weight": 1.0}, {"source": "$graphify-root$_tests_test_repair_plan", "target": "itineraryplan", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "tests/test_repair.py", "source_location": "L31", "weight": 1.0}, {"source": "$graphify-root$_tests_test_repair_py", "target": "$graphify-root$_tests_test_repair_fail", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_repair.py", "source_location": "L42", "weight": 1.0}, {"source": "$graphify-root$_tests_test_repair_fail", "target": "hardfail", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "tests/test_repair.py", "source_location": "L42", "weight": 1.0}, {"source": "$graphify-root$_tests_test_repair_py", "target": "$graphify-root$_tests_test_repair_testrepairenginenoop", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_repair.py", "source_location": "L53", "weight": 1.0}, {"source": "$graphify-root$_tests_test_repair_testrepairenginenoop", "target": "$graphify-root$_tests_test_repair_testrepairenginenoop_test_empty_when_no_hard_fails", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_repair.py", "source_location": "L54", "weight": 1.0}, {"source": "$graphify-root$_tests_test_repair_testrepairenginenoop", "target": "$graphify-root$_tests_test_repair_testrepairenginenoop_test_empty_when_pois_list_is_empty", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_repair.py", "source_location": "L60", "weight": 1.0}, {"source": "$graphify-root$_tests_test_repair_py", "target": "$graphify-root$_tests_test_repair_outlier_pois", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_repair.py", "source_location": "L74", "weight": 1.0}, {"source": "$graphify-root$_tests_test_repair_outlier_pois", "target": "$graphify-root$_tests_test_repair_poi", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "tests/test_repair.py", "source_location": "L74", "weight": 1.0}, {"source": "$graphify-root$_tests_test_repair_py", "target": "$graphify-root$_tests_test_repair_testdeletionsuggestion", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_repair.py", "source_location": "L88", "weight": 1.0}, {"source": "$graphify-root$_tests_test_repair_testdeletionsuggestion", "target": "$graphify-root$_tests_test_repair_testdeletionsuggestion_test_identifies_geometric_outlier", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_repair.py", "source_location": "L89", "weight": 1.0}, {"source": "$graphify-root$_tests_test_repair_testdeletionsuggestion", "target": "$graphify-root$_tests_test_repair_testdeletionsuggestion_test_outlier_deletion_has_positive_savings", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_repair.py", "source_location": "L97", "weight": 1.0}, {"source": "$graphify-root$_tests_test_repair_testdeletionsuggestion", "target": "$graphify-root$_tests_test_repair_testdeletionsuggestion_test_no_deletion_for_two_pois", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_repair.py", "source_location": "L104", "weight": 1.0}, {"source": "$graphify-root$_tests_test_repair_testdeletionsuggestion", "target": "$graphify-root$_tests_test_repair_testdeletionsuggestion_test_deletion_reason_mentions_candidate", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_repair.py", "source_location": "L110", "weight": 1.0}, {"source": "$graphify-root$_tests_test_repair_testdeletionsuggestion", "target": "$graphify-root$_tests_test_repair_testdeletionsuggestion_test_deletion_recommends_nearby_restaurant_when_available", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_repair.py", "source_location": "L117", "weight": 1.0}, {"source": "$graphify-root$_tests_test_repair_testdeletionsuggestion", "target": "$graphify-root$_tests_test_repair_testdeletionsuggestion_test_deletion_explains_when_no_restaurant_nearby", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_repair.py", "source_location": "L127", "weight": 1.0}, {"source": "$graphify-root$_tests_test_repair_py", "target": "$graphify-root$_tests_test_repair_testtimetunesuggestion", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_repair.py", "source_location": "L140", "weight": 1.0}, {"source": "$graphify-root$_tests_test_repair_testtimetunesuggestion", "target": "$graphify-root$_tests_test_repair_testtimetunesuggestion_test_no_tune_when_within_limit", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_repair.py", "source_location": "L141", "weight": 1.0}, {"source": "$graphify-root$_tests_test_repair_testtimetunesuggestion", "target": "$graphify-root$_tests_test_repair_testtimetunesuggestion_test_tune_suggested_when_over_limit", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_repair.py", "source_location": "L149", "weight": 1.0}, {"source": "$graphify-root$_tests_test_repair_testtimetunesuggestion", "target": "$graphify-root$_tests_test_repair_testtimetunesuggestion_test_adjusted_durations_above_minimum", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_repair.py", "source_location": "L158", "weight": 1.0}, {"source": "$graphify-root$_tests_test_repair_py", "target": "$graphify-root$_tests_test_repair_testresultmodel", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_repair.py", "source_location": "L173", "weight": 1.0}, {"source": "$graphify-root$_tests_test_repair_testresultmodel", "target": "$graphify-root$_tests_test_repair_testresultmodel_test_to_dict_is_serializable", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_repair.py", "source_location": "L174", "weight": 1.0}, {"source": "$graphify-root$_tests_test_repair_testresultmodel", "target": "$graphify-root$_tests_test_repair_testresultmodel_test_is_empty_true_when_no_suggestions", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_repair.py", "source_location": "L182", "weight": 1.0}, {"source": "$graphify-root$_tests_test_repair_testresultmodel", "target": "$graphify-root$_tests_test_repair_testresultmodel_test_is_empty_false_when_has_deletion", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_repair.py", "source_location": "L188", "weight": 1.0}, {"source": "$graphify-root$_tests_test_repair_py", "target": "$graphify-root$_tests_test_repair_testtotalestimatedgain", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_repair.py", "source_location": "L199", "weight": 1.0}, {"source": "$graphify-root$_tests_test_repair_testtotalestimatedgain", "target": "$graphify-root$_tests_test_repair_testtotalestimatedgain_test_sums_across_different_days", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_repair.py", "source_location": "L200", "weight": 1.0}, {"source": "$graphify-root$_tests_test_repair_testtotalestimatedgain", "target": "$graphify-root$_tests_test_repair_testtotalestimatedgain_test_takes_max_of_alternatives_on_same_day", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_repair.py", "source_location": "L207", "weight": 1.0}, {"source": "$graphify-root$_tests_test_repair_testtotalestimatedgain", "target": "$graphify-root$_tests_test_repair_testtotalestimatedgain_test_zero_when_empty", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_repair.py", "source_location": "L214", "weight": 1.0}, {"source": "$graphify-root$_tests_test_repair_testtotalestimatedgain", "target": "$graphify-root$_tests_test_repair_testtotalestimatedgain_test_included_in_to_dict", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_repair.py", "source_location": "L217", "weight": 1.0}, {"source": "$graphify-root$_tests_test_repair_repairengine", "target": "repairengineclass", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_repair.py", "source_location": "L12", "weight": 1.0}, {"source": "$graphify-root$_tests_test_repair_repairengine", "target": "restaurantcatalog", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_repair.py", "source_location": "L12", "weight": 1.0}, {"source": "$graphify-root$_tests_test_repair_plan", "target": "itineraryplan", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_repair.py", "source_location": "L34", "weight": 1.0}, {"source": "$graphify-root$_tests_test_repair_fail", "target": "hardfail", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_repair.py", "source_location": "L43", "weight": 1.0}, {"source": "$graphify-root$_tests_test_repair_testrepairenginenoop_test_empty_when_no_hard_fails", "target": "$graphify-root$_tests_test_repair_repairengine", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_repair.py", "source_location": "L55", "weight": 1.0}, {"source": "$graphify-root$_tests_test_repair_testrepairenginenoop_test_empty_when_no_hard_fails", "target": "$graphify-root$_tests_test_repair_plan", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_repair.py", "source_location": "L56", "weight": 1.0}, {"source": "$graphify-root$_tests_test_repair_testrepairenginenoop_test_empty_when_no_hard_fails", "target": "$graphify-root$_tests_test_repair_poi", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_repair.py", "source_location": "L57", "weight": 1.0}, {"source": "$graphify-root$_tests_test_repair_testrepairenginenoop_test_empty_when_pois_list_is_empty", "target": "$graphify-root$_tests_test_repair_repairengine", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_repair.py", "source_location": "L61", "weight": 1.0}, {"source": "$graphify-root$_tests_test_repair_testrepairenginenoop_test_empty_when_pois_list_is_empty", "target": "$graphify-root$_tests_test_repair_plan", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_repair.py", "source_location": "L62", "weight": 1.0}, {"source": "$graphify-root$_tests_test_repair_testrepairenginenoop_test_empty_when_pois_list_is_empty", "target": "$graphify-root$_tests_test_repair_fail", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_repair.py", "source_location": "L63", "weight": 1.0}, {"source": "$graphify-root$_tests_test_repair_outlier_pois", "target": "$graphify-root$_tests_test_repair_poi", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_repair.py", "source_location": "L77", "weight": 1.0}, {"source": "$graphify-root$_tests_test_repair_testdeletionsuggestion_test_identifies_geometric_outlier", "target": "$graphify-root$_tests_test_repair_repairengine", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_repair.py", "source_location": "L90", "weight": 1.0}, {"source": "$graphify-root$_tests_test_repair_testdeletionsuggestion_test_identifies_geometric_outlier", "target": "$graphify-root$_tests_test_repair_plan", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_repair.py", "source_location": "L91", "weight": 1.0}, {"source": "$graphify-root$_tests_test_repair_testdeletionsuggestion_test_identifies_geometric_outlier", "target": "$graphify-root$_tests_test_repair_outlier_pois", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_repair.py", "source_location": "L92", "weight": 1.0}, {"source": "$graphify-root$_tests_test_repair_testdeletionsuggestion_test_identifies_geometric_outlier", "target": "$graphify-root$_tests_test_repair_fail", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_repair.py", "source_location": "L93", "weight": 1.0}, {"source": "$graphify-root$_tests_test_repair_testdeletionsuggestion_test_outlier_deletion_has_positive_savings", "target": "$graphify-root$_tests_test_repair_repairengine", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_repair.py", "source_location": "L98", "weight": 1.0}, {"source": "$graphify-root$_tests_test_repair_testdeletionsuggestion_test_outlier_deletion_has_positive_savings", "target": "$graphify-root$_tests_test_repair_plan", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_repair.py", "source_location": "L99", "weight": 1.0}, {"source": "$graphify-root$_tests_test_repair_testdeletionsuggestion_test_outlier_deletion_has_positive_savings", "target": "$graphify-root$_tests_test_repair_outlier_pois", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_repair.py", "source_location": "L100", "weight": 1.0}, {"source": "$graphify-root$_tests_test_repair_testdeletionsuggestion_test_outlier_deletion_has_positive_savings", "target": "$graphify-root$_tests_test_repair_fail", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_repair.py", "source_location": "L100", "weight": 1.0}, {"source": "$graphify-root$_tests_test_repair_testdeletionsuggestion_test_no_deletion_for_two_pois", "target": "$graphify-root$_tests_test_repair_repairengine", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_repair.py", "source_location": "L105", "weight": 1.0}, {"source": "$graphify-root$_tests_test_repair_testdeletionsuggestion_test_no_deletion_for_two_pois", "target": "$graphify-root$_tests_test_repair_plan", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_repair.py", "source_location": "L106", "weight": 1.0}, {"source": "$graphify-root$_tests_test_repair_testdeletionsuggestion_test_no_deletion_for_two_pois", "target": "$graphify-root$_tests_test_repair_poi", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_repair.py", "source_location": "L107", "weight": 1.0}, {"source": "$graphify-root$_tests_test_repair_testdeletionsuggestion_test_no_deletion_for_two_pois", "target": "$graphify-root$_tests_test_repair_fail", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_repair.py", "source_location": "L107", "weight": 1.0}, {"source": "$graphify-root$_tests_test_repair_testdeletionsuggestion_test_deletion_reason_mentions_candidate", "target": "$graphify-root$_tests_test_repair_repairengine", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_repair.py", "source_location": "L111", "weight": 1.0}, {"source": "$graphify-root$_tests_test_repair_testdeletionsuggestion_test_deletion_reason_mentions_candidate", "target": "$graphify-root$_tests_test_repair_plan", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_repair.py", "source_location": "L112", "weight": 1.0}, {"source": "$graphify-root$_tests_test_repair_testdeletionsuggestion_test_deletion_reason_mentions_candidate", "target": "$graphify-root$_tests_test_repair_outlier_pois", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_repair.py", "source_location": "L113", "weight": 1.0}, {"source": "$graphify-root$_tests_test_repair_testdeletionsuggestion_test_deletion_reason_mentions_candidate", "target": "$graphify-root$_tests_test_repair_fail", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_repair.py", "source_location": "L113", "weight": 1.0}, {"source": "$graphify-root$_tests_test_repair_testdeletionsuggestion_test_deletion_recommends_nearby_restaurant_when_available", "target": "restaurantcatalog", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_repair.py", "source_location": "L118", "weight": 1.0}, {"source": "$graphify-root$_tests_test_repair_testdeletionsuggestion_test_deletion_recommends_nearby_restaurant_when_available", "target": "$graphify-root$_tests_test_repair_repairengine", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_repair.py", "source_location": "L119", "weight": 1.0}, {"source": "$graphify-root$_tests_test_repair_testdeletionsuggestion_test_deletion_recommends_nearby_restaurant_when_available", "target": "$graphify-root$_tests_test_repair_plan", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_repair.py", "source_location": "L120", "weight": 1.0}, {"source": "$graphify-root$_tests_test_repair_testdeletionsuggestion_test_deletion_recommends_nearby_restaurant_when_available", "target": "$graphify-root$_tests_test_repair_outlier_pois", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_repair.py", "source_location": "L121", "weight": 1.0}, {"source": "$graphify-root$_tests_test_repair_testdeletionsuggestion_test_deletion_recommends_nearby_restaurant_when_available", "target": "$graphify-root$_tests_test_repair_fail", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_repair.py", "source_location": "L121", "weight": 1.0}, {"source": "$graphify-root$_tests_test_repair_testdeletionsuggestion_test_deletion_explains_when_no_restaurant_nearby", "target": "$graphify-root$_tests_test_repair_repairengine", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_repair.py", "source_location": "L128", "weight": 1.0}, {"source": "$graphify-root$_tests_test_repair_testdeletionsuggestion_test_deletion_explains_when_no_restaurant_nearby", "target": "restaurantcatalog", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_repair.py", "source_location": "L128", "weight": 1.0}, {"source": "$graphify-root$_tests_test_repair_testdeletionsuggestion_test_deletion_explains_when_no_restaurant_nearby", "target": "$graphify-root$_tests_test_repair_plan", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_repair.py", "source_location": "L129", "weight": 1.0}, {"source": "$graphify-root$_tests_test_repair_testdeletionsuggestion_test_deletion_explains_when_no_restaurant_nearby", "target": "$graphify-root$_tests_test_repair_outlier_pois", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_repair.py", "source_location": "L130", "weight": 1.0}, {"source": "$graphify-root$_tests_test_repair_testdeletionsuggestion_test_deletion_explains_when_no_restaurant_nearby", "target": "$graphify-root$_tests_test_repair_fail", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_repair.py", "source_location": "L130", "weight": 1.0}, {"source": "$graphify-root$_tests_test_repair_testtimetunesuggestion_test_no_tune_when_within_limit", "target": "$graphify-root$_tests_test_repair_repairengine", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_repair.py", "source_location": "L143", "weight": 1.0}, {"source": "$graphify-root$_tests_test_repair_testtimetunesuggestion_test_no_tune_when_within_limit", "target": "$graphify-root$_tests_test_repair_plan", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_repair.py", "source_location": "L144", "weight": 1.0}, {"source": "$graphify-root$_tests_test_repair_testtimetunesuggestion_test_no_tune_when_within_limit", "target": "$graphify-root$_tests_test_repair_poi", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_repair.py", "source_location": "L145", "weight": 1.0}, {"source": "$graphify-root$_tests_test_repair_testtimetunesuggestion_test_no_tune_when_within_limit", "target": "$graphify-root$_tests_test_repair_fail", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_repair.py", "source_location": "L146", "weight": 1.0}, {"source": "$graphify-root$_tests_test_repair_testtimetunesuggestion_test_tune_suggested_when_over_limit", "target": "$graphify-root$_tests_test_repair_repairengine", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_repair.py", "source_location": "L151", "weight": 1.0}, {"source": "$graphify-root$_tests_test_repair_testtimetunesuggestion_test_tune_suggested_when_over_limit", "target": "$graphify-root$_tests_test_repair_plan", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_repair.py", "source_location": "L152", "weight": 1.0}, {"source": "$graphify-root$_tests_test_repair_testtimetunesuggestion_test_tune_suggested_when_over_limit", "target": "$graphify-root$_tests_test_repair_poi", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_repair.py", "source_location": "L153", "weight": 1.0}, {"source": "$graphify-root$_tests_test_repair_testtimetunesuggestion_test_tune_suggested_when_over_limit", "target": "$graphify-root$_tests_test_repair_fail", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_repair.py", "source_location": "L154", "weight": 1.0}, {"source": "$graphify-root$_tests_test_repair_testtimetunesuggestion_test_adjusted_durations_above_minimum", "target": "$graphify-root$_tests_test_repair_repairengine", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_repair.py", "source_location": "L160", "weight": 1.0}, {"source": "$graphify-root$_tests_test_repair_testtimetunesuggestion_test_adjusted_durations_above_minimum", "target": "$graphify-root$_tests_test_repair_plan", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_repair.py", "source_location": "L161", "weight": 1.0}, {"source": "$graphify-root$_tests_test_repair_testtimetunesuggestion_test_adjusted_durations_above_minimum", "target": "$graphify-root$_tests_test_repair_poi", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_repair.py", "source_location": "L162", "weight": 1.0}, {"source": "$graphify-root$_tests_test_repair_testtimetunesuggestion_test_adjusted_durations_above_minimum", "target": "$graphify-root$_tests_test_repair_fail", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_repair.py", "source_location": "L163", "weight": 1.0}, {"source": "$graphify-root$_tests_test_repair_testresultmodel_test_to_dict_is_serializable", "target": "$graphify-root$_tests_test_repair_repairengine", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_repair.py", "source_location": "L175", "weight": 1.0}, {"source": "$graphify-root$_tests_test_repair_testresultmodel_test_to_dict_is_serializable", "target": "$graphify-root$_tests_test_repair_plan", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_repair.py", "source_location": "L176", "weight": 1.0}, {"source": "$graphify-root$_tests_test_repair_testresultmodel_test_to_dict_is_serializable", "target": "$graphify-root$_tests_test_repair_outlier_pois", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_repair.py", "source_location": "L177", "weight": 1.0}, {"source": "$graphify-root$_tests_test_repair_testresultmodel_test_to_dict_is_serializable", "target": "$graphify-root$_tests_test_repair_fail", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_repair.py", "source_location": "L177", "weight": 1.0}, {"source": "$graphify-root$_tests_test_repair_testresultmodel_test_is_empty_true_when_no_suggestions", "target": "$graphify-root$_tests_test_repair_repairengine", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_repair.py", "source_location": "L183", "weight": 1.0}, {"source": "$graphify-root$_tests_test_repair_testresultmodel_test_is_empty_true_when_no_suggestions", "target": "$graphify-root$_tests_test_repair_plan", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_repair.py", "source_location": "L184", "weight": 1.0}, {"source": "$graphify-root$_tests_test_repair_testresultmodel_test_is_empty_true_when_no_suggestions", "target": "$graphify-root$_tests_test_repair_poi", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_repair.py", "source_location": "L185", "weight": 1.0}, {"source": "$graphify-root$_tests_test_repair_testresultmodel_test_is_empty_false_when_has_deletion", "target": "$graphify-root$_tests_test_repair_repairengine", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_repair.py", "source_location": "L189", "weight": 1.0}, {"source": "$graphify-root$_tests_test_repair_testresultmodel_test_is_empty_false_when_has_deletion", "target": "$graphify-root$_tests_test_repair_plan", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_repair.py", "source_location": "L190", "weight": 1.0}, {"source": "$graphify-root$_tests_test_repair_testresultmodel_test_is_empty_false_when_has_deletion", "target": "$graphify-root$_tests_test_repair_outlier_pois", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_repair.py", "source_location": "L191", "weight": 1.0}, {"source": "$graphify-root$_tests_test_repair_testresultmodel_test_is_empty_false_when_has_deletion", "target": "$graphify-root$_tests_test_repair_fail", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_repair.py", "source_location": "L191", "weight": 1.0}, {"source": "$graphify-root$_tests_test_repair_rationale_11", "target": "$graphify-root$_tests_test_repair_repairengine", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_repair.py", "source_location": "L11", "weight": 1.0}, {"source": "$graphify-root$_tests_test_repair_rationale_75", "target": "$graphify-root$_tests_test_repair_outlier_pois", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_repair.py", "source_location": "L75", "weight": 1.0}, {"source": "$graphify-root$_tests_test_repair_rationale_142", "target": "$graphify-root$_tests_test_repair_testtimetunesuggestion_test_no_tune_when_within_limit", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_repair.py", "source_location": "L142", "weight": 1.0}, {"source": "$graphify-root$_tests_test_repair_rationale_150", "target": "$graphify-root$_tests_test_repair_testtimetunesuggestion_test_tune_suggested_when_over_limit", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_repair.py", "source_location": "L150", "weight": 1.0}, {"source": "$graphify-root$_tests_test_repair_rationale_159", "target": "$graphify-root$_tests_test_repair_testtimetunesuggestion_test_adjusted_durations_above_minimum", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_repair.py", "source_location": "L159", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_tests_test_repair_poi", "callee": "POI", "is_member_call": false, "source_file": "tests/test_repair.py", "source_location": "L24", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_repair_plan", "callee": "DayPlan", "is_member_call": false, "source_file": "tests/test_repair.py", "source_location": "L35", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_repair_plan", "callee": "PlaceInput", "is_member_call": false, "source_file": "tests/test_repair.py", "source_location": "L35", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_repair_testrepairenginenoop_test_empty_when_no_hard_fails", "callee": "repair", "is_member_call": true, "source_file": "tests/test_repair.py", "source_location": "L57", "receiver": "engine"}, {"caller_nid": "$graphify-root$_tests_test_repair_testrepairenginenoop_test_empty_when_pois_list_is_empty", "callee": "repair", "is_member_call": true, "source_file": "tests/test_repair.py", "source_location": "L63", "receiver": "engine"}, {"caller_nid": "$graphify-root$_tests_test_repair_testdeletionsuggestion_test_identifies_geometric_outlier", "callee": "repair", "is_member_call": true, "source_file": "tests/test_repair.py", "source_location": "L93", "receiver": "engine"}, {"caller_nid": "$graphify-root$_tests_test_repair_testdeletionsuggestion_test_outlier_deletion_has_positive_savings", "callee": "repair", "is_member_call": true, "source_file": "tests/test_repair.py", "source_location": "L100", "receiver": "engine"}, {"caller_nid": "$graphify-root$_tests_test_repair_testdeletionsuggestion_test_no_deletion_for_two_pois", "callee": "repair", "is_member_call": true, "source_file": "tests/test_repair.py", "source_location": "L107", "receiver": "engine"}, {"caller_nid": "$graphify-root$_tests_test_repair_testdeletionsuggestion_test_deletion_reason_mentions_candidate", "callee": "repair", "is_member_call": true, "source_file": "tests/test_repair.py", "source_location": "L113", "receiver": "engine"}, {"caller_nid": "$graphify-root$_tests_test_repair_testdeletionsuggestion_test_deletion_recommends_nearby_restaurant_when_available", "callee": "repair", "is_member_call": true, "source_file": "tests/test_repair.py", "source_location": "L121", "receiver": "engine"}, {"caller_nid": "$graphify-root$_tests_test_repair_testdeletionsuggestion_test_deletion_explains_when_no_restaurant_nearby", "callee": "repair", "is_member_call": true, "source_file": "tests/test_repair.py", "source_location": "L130", "receiver": "engine"}, {"caller_nid": "$graphify-root$_tests_test_repair_testtimetunesuggestion_test_no_tune_when_within_limit", "callee": "repair", "is_member_call": true, "source_file": "tests/test_repair.py", "source_location": "L146", "receiver": "engine"}, {"caller_nid": "$graphify-root$_tests_test_repair_testtimetunesuggestion_test_tune_suggested_when_over_limit", "callee": "repair", "is_member_call": true, "source_file": "tests/test_repair.py", "source_location": "L154", "receiver": "engine"}, {"caller_nid": "$graphify-root$_tests_test_repair_testtimetunesuggestion_test_adjusted_durations_above_minimum", "callee": "repair", "is_member_call": true, "source_file": "tests/test_repair.py", "source_location": "L163", "receiver": "engine"}, {"caller_nid": "$graphify-root$_tests_test_repair_testtimetunesuggestion_test_adjusted_durations_above_minimum", "callee": "values", "is_member_call": true, "source_file": "tests/test_repair.py", "source_location": "L165", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_repair_testresultmodel_test_to_dict_is_serializable", "callee": "repair", "is_member_call": true, "source_file": "tests/test_repair.py", "source_location": "L177", "receiver": "engine"}, {"caller_nid": "$graphify-root$_tests_test_repair_testresultmodel_test_to_dict_is_serializable", "callee": "to_dict", "is_member_call": true, "source_file": "tests/test_repair.py", "source_location": "L178", "receiver": "result"}, {"caller_nid": "$graphify-root$_tests_test_repair_testresultmodel_test_to_dict_is_serializable", "callee": "dict", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_repair.py", "source_location": "L179"}, {"caller_nid": "$graphify-root$_tests_test_repair_testresultmodel_test_is_empty_true_when_no_suggestions", "callee": "repair", "is_member_call": true, "source_file": "tests/test_repair.py", "source_location": "L185", "receiver": "engine"}, {"caller_nid": "$graphify-root$_tests_test_repair_testresultmodel_test_is_empty_false_when_has_deletion", "callee": "repair", "is_member_call": true, "source_file": "tests/test_repair.py", "source_location": "L191", "receiver": "engine"}, {"caller_nid": "$graphify-root$_tests_test_repair_testtotalestimatedgain_test_sums_across_different_days", "callee": "RepairResult", "is_member_call": false, "source_file": "tests/test_repair.py", "source_location": "L201", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_repair_testtotalestimatedgain_test_sums_across_different_days", "callee": "DeletionSuggestion", "is_member_call": false, "source_file": "tests/test_repair.py", "source_location": "L202", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_repair_testtotalestimatedgain_test_sums_across_different_days", "callee": "DeletionSuggestion", "is_member_call": false, "source_file": "tests/test_repair.py", "source_location": "L203", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_repair_testtotalestimatedgain_test_takes_max_of_alternatives_on_same_day", "callee": "RepairResult", "is_member_call": false, "source_file": "tests/test_repair.py", "source_location": "L208", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_repair_testtotalestimatedgain_test_takes_max_of_alternatives_on_same_day", "callee": "DeletionSuggestion", "is_member_call": false, "source_file": "tests/test_repair.py", "source_location": "L209", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_repair_testtotalestimatedgain_test_takes_max_of_alternatives_on_same_day", "callee": "DeletionSuggestion", "is_member_call": false, "source_file": "tests/test_repair.py", "source_location": "L210", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_repair_testtotalestimatedgain_test_zero_when_empty", "callee": "RepairResult", "is_member_call": false, "source_file": "tests/test_repair.py", "source_location": "L215", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_repair_testtotalestimatedgain_test_included_in_to_dict", "callee": "RepairResult", "is_member_call": false, "source_file": "tests/test_repair.py", "source_location": "L218", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_repair_testtotalestimatedgain_test_included_in_to_dict", "callee": "DeletionSuggestion", "is_member_call": false, "source_file": "tests/test_repair.py", "source_location": "L219", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_repair_testtotalestimatedgain_test_included_in_to_dict", "callee": "to_dict", "is_member_call": true, "source_file": "tests/test_repair.py", "source_location": "L221", "receiver": "result"}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.31/39c8836f09762652402a903155e8f873e2d88c24e82f185923cddfbbc0384f52.json b/graphify-out/cache/ast/v0.9.31/39c8836f09762652402a903155e8f873e2d88c24e82f185923cddfbbc0384f52.json new file mode 100644 index 0000000..02d33e4 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.31/39c8836f09762652402a903155e8f873e2d88c24e82f185923cddfbbc0384f52.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_py", "label": "fetch_tourapi_to_csv.py", "file_type": "code", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L1"}, {"id": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_resolve_base_dir", "label": "_resolve_base_dir()", "file_type": "code", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L132", "_callable": true}, {"id": "path", "label": "Path", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/gun/scripts/fetch_tourapi_to_csv.py"}, {"id": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_load_env", "label": "load_env()", "file_type": "code", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L156", "_callable": true}, {"id": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_checkpoint", "label": "Checkpoint", "file_type": "code", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L177", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_checkpoint_load", "label": ".load()", "file_type": "code", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L188", "_callable": true}, {"id": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_checkpoint_save", "label": ".save()", "file_type": "code", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L200", "_callable": true}, {"id": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_checkpoint_increment_daily", "label": ".increment_daily()", "file_type": "code", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L213", "_callable": true}, {"id": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_checkpoint_remaining_today", "label": ".remaining_today()", "file_type": "code", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L222", "_callable": true}, {"id": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_checkpoint_key", "label": ".key()", "file_type": "code", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L229", "_callable": true}, {"id": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_checkpoint_is_done", "label": ".is_done()", "file_type": "code", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L232", "_callable": true}, {"id": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_checkpoint_mark_done", "label": ".mark_done()", "file_type": "code", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L235", "_callable": true}, {"id": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_dailylimitreached", "label": "DailyLimitReached", "file_type": "code", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L240", "_callable": true, "_callable_class": true}, {"id": "exception", "label": "Exception", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/gun/scripts/fetch_tourapi_to_csv.py"}, {"id": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_call_api", "label": "call_api()", "file_type": "code", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L244", "_callable": true}, {"id": "any", "label": "Any", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/gun/scripts/fetch_tourapi_to_csv.py"}, {"id": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_parse_items", "label": "parse_items()", "file_type": "code", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L333", "_callable": true}, {"id": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_get_total_count", "label": "get_total_count()", "file_type": "code", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L345", "_callable": true}, {"id": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_csvappender", "label": "CsvAppender", "file_type": "code", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L351", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_csvappender_init", "label": ".__init__()", "file_type": "code", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L352", "_callable": true}, {"id": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_csvappender_enter", "label": ".__enter__()", "file_type": "code", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L358", "_callable": true}, {"id": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_csvappender_exit", "label": ".__exit__()", "file_type": "code", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L367", "_callable": true}, {"id": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_csvappender_write", "label": ".write()", "file_type": "code", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L371", "_callable": true}, {"id": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_csvappender_write_many", "label": ".write_many()", "file_type": "code", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L374", "_callable": true}, {"id": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_is_valid_kr_coord", "label": "is_valid_kr_coord()", "file_type": "code", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L379", "_callable": true}, {"id": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_fetch_ldong_codes", "label": "fetch_ldong_codes()", "file_type": "code", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L391", "_callable": true}, {"id": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_fetch_classification_codes", "label": "fetch_classification_codes()", "file_type": "code", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L503", "_callable": true}, {"id": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_fetch_pois", "label": "fetch_pois()", "file_type": "code", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L565", "_callable": true}, {"id": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_process_items", "label": "_process_items()", "file_type": "code", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L648", "_callable": true}, {"id": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_fetch_festivals", "label": "fetch_festivals()", "file_type": "code", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L673", "_callable": true}, {"id": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_enrich_operating_hours", "label": "enrich_operating_hours()", "file_type": "code", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L756", "_callable": true}, {"id": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_test_connection", "label": "test_connection()", "file_type": "code", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L815", "_callable": true}, {"id": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_main", "label": "main()", "file_type": "code", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L839", "_callable": true}, {"id": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_rationale_2", "label": "TourAPI v2 (KorService2) \u2192 CSV \ubc8c\ud06c \uc218\uc9d1 \uc2a4\ud06c\ub9bd\ud2b8 [\uc2e0 API \uba85\uc138 v2 \ubc18\uc601]\u2026", "file_type": "rationale", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L2"}, {"id": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_rationale_178", "label": "\uc218\uc9d1 \uc9c4\ud589 \uc0c1\ud0dc + \uc77c\uc77c \ud638\ucd9c \uce74\uc6b4\ud2b8. \uc5d4\ub4dc\ud3ec\uc778\ud2b8\ubcc4 \ud638\ucd9c \uc218\ub97c \ub0a0\uc9dc\uc640 \ud568\uaed8 \uae30\ub85d \u2192 \uc77c\uc77c \ud55c\ub3c4 \ucd94\uc801.", "file_type": "rationale", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L178"}, {"id": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_rationale_241", "label": "\uc77c\uc77c \ud55c\ub3c4 \ub3c4\ub2ec \u2014 \uccb4\ud06c\ud3ec\uc778\ud2b8 \uc800\uc7a5 \ud6c4 \uc815\uc0c1 \uc885\ub8cc.", "file_type": "rationale", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L241"}, {"id": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_rationale_250", "label": "TourAPI \ud638\ucd9c. \uc2e4\ud328 \uc2dc None. \ud55c\ub3c4 \ub3c4\ub2ec \uc2dc DailyLimitReached.", "file_type": "rationale", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L250"}, {"id": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_rationale_334", "label": "API \uc751\ub2f5\uc5d0\uc11c items.item \ub9ac\uc2a4\ud2b8 \ucd94\ucd9c. \ube48 \uc751\ub2f5 \uc548\uc804 \ucc98\ub9ac.", "file_type": "rationale", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L334"}, {"id": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_rationale_392", "label": "ldongCode2\ub85c \uc804\uccb4 \ubc95\uc815\ub3d9(\uc2dc\ub3c4+\uc2dc\uad70\uad6c+\ubc95\uc815\ub3d9) \uc218\uc9d1. lDongListYn=Y \uc635\uc158\uc73c\ub85c \uc804\uccb4 \ubaa9\ub85d \uc870\ud68c + \ud398\uc774\uc9c0\ub124\uc774\uc158.", "file_type": "rationale", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L392"}, {"id": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_rationale_504", "label": "lclsSystmCode2 \u2192 \ubd84\ub958\uccb4\uacc4 1~3 Depth \ud2b8\ub9ac \uc218\uc9d1.", "file_type": "rationale", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L504"}, {"id": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_rationale_572", "label": "contentTypeId \u00d7 lDongRegnCd \uc870\ud569\uc73c\ub85c \ud398\uc774\uc9c0\ub124\uc774\uc158 \uc21c\ud68c. modifiedtime: 'YYYYMMDD' \u2014 \ud574\ub2f9 \ub0a0\uc9dc \uc774\ud6c4\u2026", "file_type": "rationale", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L572"}, {"id": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_rationale_653", "label": "\ud398\uc774\uc9c0\uc758 item\uc744 \uac80\uc99d + CSV\uc5d0 \uc4f0\uae30. \ubc18\ud658: (\uc800\uc7a5, \uc88c\ud45c\uc624\ub958, \uc911\ubcf5).", "file_type": "rationale", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L653"}, {"id": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_rationale_679", "label": "searchFestival2\ub85c [event_start, event_end] \uae30\uac04\uc758 \ucd95\uc81c \uc77c\uc815 \uc218\uc9d1. eventStartDate \ud544\ud130\ub85c \ud574\ub2f9\u2026", "file_type": "rationale", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L679"}, {"id": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_rationale_757", "label": "pois.csv\ub97c \uc77d\uc5b4 detailIntro2\ub85c \uc6b4\uc601\uc2dc\uac04 \ubcf4\uac15. \uc774\ubbf8 enriched\ub41c contentid\ub294 \uc2a4\ud0b5.", "file_type": "rationale", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L757"}], "edges": [{"source": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_py", "target": "argparse", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L51", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_py", "target": "csv", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L52", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_py", "target": "json", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L53", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_py", "target": "os", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L54", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_py", "target": "sys", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L55", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_py", "target": "time", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L56", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_py", "target": "dataclasses", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L57", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_py", "target": "datetime", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L58", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_py", "target": "pathlib", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L59", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L60", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_py", "target": "requests", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L62", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_py", "target": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_resolve_base_dir", "relation": "contains", "confidence": "EXTRACTED", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L132", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_resolve_base_dir", "target": "path", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L132", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_py", "target": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_load_env", "relation": "contains", "confidence": "EXTRACTED", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L156", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_py", "target": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_checkpoint", "relation": "contains", "confidence": "EXTRACTED", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L177", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_checkpoint", "target": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_checkpoint_load", "relation": "method", "confidence": "EXTRACTED", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L188", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_checkpoint", "target": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_checkpoint_save", "relation": "method", "confidence": "EXTRACTED", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L200", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_checkpoint", "target": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_checkpoint_increment_daily", "relation": "method", "confidence": "EXTRACTED", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L213", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_checkpoint", "target": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_checkpoint_remaining_today", "relation": "method", "confidence": "EXTRACTED", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L222", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_checkpoint", "target": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_checkpoint_key", "relation": "method", "confidence": "EXTRACTED", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L229", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_checkpoint", "target": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_checkpoint_is_done", "relation": "method", "confidence": "EXTRACTED", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L232", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_checkpoint", "target": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_checkpoint_mark_done", "relation": "method", "confidence": "EXTRACTED", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L235", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_py", "target": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_dailylimitreached", "relation": "contains", "confidence": "EXTRACTED", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L240", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_dailylimitreached", "target": "exception", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L240", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_py", "target": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_call_api", "relation": "contains", "confidence": "EXTRACTED", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L244", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_call_api", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L244", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_call_api", "target": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_checkpoint", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L244", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_py", "target": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_parse_items", "relation": "contains", "confidence": "EXTRACTED", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L333", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_py", "target": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_get_total_count", "relation": "contains", "confidence": "EXTRACTED", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L345", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_py", "target": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_csvappender", "relation": "contains", "confidence": "EXTRACTED", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L351", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_csvappender", "target": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_csvappender_init", "relation": "method", "confidence": "EXTRACTED", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L352", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_csvappender_init", "target": "path", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L352", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_csvappender", "target": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_csvappender_enter", "relation": "method", "confidence": "EXTRACTED", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L358", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_csvappender", "target": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_csvappender_exit", "relation": "method", "confidence": "EXTRACTED", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L367", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_csvappender", "target": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_csvappender_write", "relation": "method", "confidence": "EXTRACTED", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L371", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_csvappender", "target": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_csvappender_write_many", "relation": "method", "confidence": "EXTRACTED", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L374", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_py", "target": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_is_valid_kr_coord", "relation": "contains", "confidence": "EXTRACTED", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L379", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_py", "target": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_fetch_ldong_codes", "relation": "contains", "confidence": "EXTRACTED", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L391", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_fetch_ldong_codes", "target": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_checkpoint", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L391", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_py", "target": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_fetch_classification_codes", "relation": "contains", "confidence": "EXTRACTED", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L503", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_fetch_classification_codes", "target": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_checkpoint", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L503", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_py", "target": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_fetch_pois", "relation": "contains", "confidence": "EXTRACTED", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L565", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_fetch_pois", "target": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_checkpoint", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L565", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_py", "target": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_process_items", "relation": "contains", "confidence": "EXTRACTED", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L648", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_process_items", "target": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_csvappender", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L648", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_process_items", "target": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_checkpoint", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L648", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_py", "target": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_fetch_festivals", "relation": "contains", "confidence": "EXTRACTED", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L673", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_fetch_festivals", "target": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_checkpoint", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L673", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_py", "target": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_enrich_operating_hours", "relation": "contains", "confidence": "EXTRACTED", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L756", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_enrich_operating_hours", "target": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_checkpoint", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L756", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_py", "target": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_test_connection", "relation": "contains", "confidence": "EXTRACTED", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L815", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_py", "target": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_main", "relation": "contains", "confidence": "EXTRACTED", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L839", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_resolve_base_dir", "target": "path", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L134", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_checkpoint_is_done", "target": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_checkpoint_key", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L233", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_checkpoint_mark_done", "target": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_checkpoint_key", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L236", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_call_api", "target": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_checkpoint_remaining_today", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L254", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_call_api", "target": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_dailylimitreached", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L256", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_call_api", "target": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_checkpoint_increment_daily", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L273", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_fetch_ldong_codes", "target": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_call_api", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L400", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_fetch_ldong_codes", "target": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_parse_items", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L410", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_fetch_ldong_codes", "target": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_get_total_count", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L482", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_fetch_classification_codes", "target": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_call_api", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L510", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_fetch_classification_codes", "target": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_parse_items", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L520", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_fetch_pois", "target": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_csvappender", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L579", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_fetch_pois", "target": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_call_api", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L601", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_fetch_pois", "target": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_get_total_count", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L607", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_fetch_pois", "target": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_checkpoint_remaining_today", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L609", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_fetch_pois", "target": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_checkpoint_is_done", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L614", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_fetch_pois", "target": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_process_items", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L615", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_fetch_pois", "target": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_parse_items", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L615", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_fetch_pois", "target": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_checkpoint_mark_done", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L617", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_fetch_pois", "target": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_checkpoint_save", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L628", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_process_items", "target": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_is_valid_kr_coord", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L662", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_process_items", "target": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_csvappender_write", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L666", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_fetch_festivals", "target": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_call_api", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L700", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_fetch_festivals", "target": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_get_total_count", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L706", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_fetch_festivals", "target": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_checkpoint_remaining_today", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L708", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_fetch_festivals", "target": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_csvappender", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L732", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_fetch_festivals", "target": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_parse_items", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L734", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_enrich_operating_hours", "target": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_checkpoint_remaining_today", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L773", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_enrich_operating_hours", "target": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_csvappender", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L777", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_enrich_operating_hours", "target": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_call_api", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L780", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_enrich_operating_hours", "target": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_parse_items", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L794", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_enrich_operating_hours", "target": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_csvappender_write", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L802", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_enrich_operating_hours", "target": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_checkpoint_save", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L807", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_test_connection", "target": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_call_api", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L818", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_test_connection", "target": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_parse_items", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L828", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_main", "target": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_load_env", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L883", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_main", "target": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_test_connection", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L887", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_main", "target": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_fetch_festivals", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L908", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_main", "target": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_enrich_operating_hours", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L917", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_main", "target": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_fetch_ldong_codes", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L922", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_main", "target": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_fetch_classification_codes", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L923", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_main", "target": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_fetch_pois", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L961", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_main", "target": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_checkpoint_save", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L969", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_rationale_2", "target": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L2", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_rationale_178", "target": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_checkpoint", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L178", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_rationale_241", "target": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_dailylimitreached", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L241", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_rationale_250", "target": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_call_api", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L250", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_rationale_334", "target": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_parse_items", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L334", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_rationale_392", "target": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_fetch_ldong_codes", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L392", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_rationale_504", "target": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_fetch_classification_codes", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L504", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_rationale_572", "target": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_fetch_pois", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L572", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_rationale_653", "target": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_process_items", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L653", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_rationale_679", "target": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_fetch_festivals", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L679", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_rationale_757", "target": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_enrich_operating_hours", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L757", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_resolve_base_dir", "callee": "resolve", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L134", "receiver": null}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_resolve_base_dir", "callee": "__file__", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L134"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_resolve_base_dir", "callee": "cwd", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L137", "receiver": "Path"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_load_env", "callee": "exists", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L158", "receiver": "env_path"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_load_env", "callee": "splitlines", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L159", "receiver": null}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_load_env", "callee": "read_text", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L159", "receiver": "env_path"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_load_env", "callee": "strip", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L160", "receiver": "line"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_load_env", "callee": "startswith", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L161", "receiver": "line"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_load_env", "callee": "partition", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L162", "receiver": "line"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_load_env", "callee": "setdefault", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L163", "receiver": null}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_load_env", "callee": "strip", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L163", "receiver": "k"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_load_env", "callee": "strip", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L163", "receiver": "v"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_load_env", "callee": "get", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L165", "receiver": null}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_load_env", "callee": "exit", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L167", "receiver": "sys"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_checkpoint_load", "callee": "exists", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L189", "receiver": "CHECKPOINT_FILE"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_checkpoint_load", "callee": "loads", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L190", "receiver": "json"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_checkpoint_load", "callee": "read_text", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L190", "receiver": "CHECKPOINT_FILE"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_checkpoint_load", "callee": "cls", "is_member_call": false, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L191", "receiver": null}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_checkpoint_load", "callee": "get", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L192", "receiver": "d"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_checkpoint_load", "callee": "get", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L193", "receiver": "d"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_checkpoint_load", "callee": "get", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L194", "receiver": "d"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_checkpoint_load", "callee": "get", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L195", "receiver": "d"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_checkpoint_load", "callee": "get", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L196", "receiver": "d"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_checkpoint_load", "callee": "cls", "is_member_call": false, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L198", "receiver": null}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_checkpoint_load", "callee": "strftime", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L198", "receiver": "time"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_checkpoint_save", "callee": "write_text", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L201", "receiver": "CHECKPOINT_FILE"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_checkpoint_save", "callee": "dumps", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L202", "receiver": "json"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_checkpoint_save", "callee": "strftime", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L208", "receiver": "time"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_checkpoint_increment_daily", "callee": "isoformat", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L214", "receiver": null}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_checkpoint_increment_daily", "callee": "today", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L214", "receiver": "date"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_checkpoint_increment_daily", "callee": "get", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L215", "receiver": null}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_checkpoint_increment_daily", "callee": "get", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L216", "receiver": "rec"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_checkpoint_remaining_today", "callee": "isoformat", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L223", "receiver": null}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_checkpoint_remaining_today", "callee": "today", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L223", "receiver": "date"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_checkpoint_remaining_today", "callee": "get", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L224", "receiver": null}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_checkpoint_remaining_today", "callee": "get", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L225", "receiver": "rec"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_checkpoint_remaining_today", "callee": "DAILY_LIMIT", "is_member_call": false, "indirect": true, "context": "return", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L226"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_checkpoint_remaining_today", "callee": "get", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L227", "receiver": "rec"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_checkpoint_mark_done", "callee": "add", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L236", "receiver": null}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_call_api", "callee": "get", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L271", "receiver": "requests"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_call_api", "callee": "json", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L277", "receiver": "r"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_call_api", "callee": "exit", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L282", "receiver": "sys"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_call_api", "callee": "get", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L287", "receiver": null}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_call_api", "callee": "get", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L287", "receiver": "data"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_call_api", "callee": "get", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L288", "receiver": "header"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_call_api", "callee": "get", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L293", "receiver": "data"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_call_api", "callee": "get", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L295", "receiver": "err_wrap"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_call_api", "callee": "get", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L296", "receiver": "err_hdr"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_call_api", "callee": "get", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L297", "receiver": "err_hdr"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_call_api", "callee": "get", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L297", "receiver": "err_hdr"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_call_api", "callee": "get", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L299", "receiver": "header"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_call_api", "callee": "dumps", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L304", "receiver": "json"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_call_api", "callee": "upper", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L309", "receiver": null}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_call_api", "callee": "exit", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L313", "receiver": "sys"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_call_api", "callee": "sleep", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L321", "receiver": "time"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_call_api", "callee": "sleep", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L328", "receiver": "time"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_parse_items", "callee": "get", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L335", "receiver": null}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_parse_items", "callee": "get", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L335", "receiver": "api_response"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_parse_items", "callee": "get", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L336", "receiver": "body"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_parse_items", "callee": "get", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L339", "receiver": "items"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_parse_items", "callee": "dict", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L342"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_get_total_count", "callee": "get", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L346", "receiver": null}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_get_total_count", "callee": "get", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L346", "receiver": "api_response"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_get_total_count", "callee": "get", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L347", "receiver": "body"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_csvappender_enter", "callee": "exists", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L359", "receiver": null}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_csvappender_enter", "callee": "DictWriter", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L361", "receiver": "csv"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_csvappender_enter", "callee": "writeheader", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L364", "receiver": null}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_csvappender_exit", "callee": "close", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L369", "receiver": null}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_csvappender_write", "callee": "writerow", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L372", "receiver": null}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_csvappender_write_many", "callee": "writerows", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L375", "receiver": null}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_is_valid_kr_coord", "callee": "ValueError", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L383"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_is_valid_kr_coord", "callee": "TypeError", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L383"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_fetch_ldong_codes", "callee": "LDONG_ENDPOINT", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L401"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_fetch_ldong_codes", "callee": "sleep", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L405", "receiver": "time"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_fetch_ldong_codes", "callee": "SLEEP_BETWEEN_CALLS", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L405"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_fetch_ldong_codes", "callee": "get", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L412", "receiver": "sido"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_fetch_ldong_codes", "callee": "get", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L412", "receiver": "sido"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_fetch_ldong_codes", "callee": "get", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L413", "receiver": "sido"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_fetch_ldong_codes", "callee": "get", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L413", "receiver": "sido"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_fetch_ldong_codes", "callee": "append", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L414", "receiver": "rows"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_fetch_ldong_codes", "callee": "LDONG_ENDPOINT", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L419"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_fetch_ldong_codes", "callee": "sleep", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L423", "receiver": "time"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_fetch_ldong_codes", "callee": "SLEEP_BETWEEN_CALLS", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L423"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_fetch_ldong_codes", "callee": "get", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L426", "receiver": "sigungu"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_fetch_ldong_codes", "callee": "get", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L426", "receiver": "sigungu"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_fetch_ldong_codes", "callee": "append", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L427", "receiver": "rows"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_fetch_ldong_codes", "callee": "get", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L430", "receiver": "sigungu"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_fetch_ldong_codes", "callee": "get", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L430", "receiver": "sigungu"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_fetch_ldong_codes", "callee": "LDONG_ENDPOINT", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L451"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_fetch_ldong_codes", "callee": "sleep", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L461", "receiver": "time"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_fetch_ldong_codes", "callee": "SLEEP_BETWEEN_CALLS", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L461"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_fetch_ldong_codes", "callee": "get", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L469", "receiver": "it"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_fetch_ldong_codes", "callee": "get", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L469", "receiver": "it"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_fetch_ldong_codes", "callee": "get", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L470", "receiver": "it"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_fetch_ldong_codes", "callee": "get", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L470", "receiver": "it"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_fetch_ldong_codes", "callee": "append", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L473", "receiver": "rows"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_fetch_ldong_codes", "callee": "LDONG_CSV", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L492"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_fetch_ldong_codes", "callee": "DictWriter", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L493", "receiver": "csv"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_fetch_ldong_codes", "callee": "f", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L493"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_fetch_ldong_codes", "callee": "writeheader", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L494", "receiver": "w"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_fetch_ldong_codes", "callee": "writerows", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L495", "receiver": "w"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_fetch_classification_codes", "callee": "sleep", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L515", "receiver": "time"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_fetch_classification_codes", "callee": "SLEEP_BETWEEN_CALLS", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L515"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_fetch_classification_codes", "callee": "get", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L522", "receiver": "c1"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_fetch_classification_codes", "callee": "get", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L522", "receiver": "c1"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_fetch_classification_codes", "callee": "get", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L523", "receiver": "c1"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_fetch_classification_codes", "callee": "get", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L523", "receiver": "c1"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_fetch_classification_codes", "callee": "append", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L524", "receiver": "rows"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_fetch_classification_codes", "callee": "sleep", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L532", "receiver": "time"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_fetch_classification_codes", "callee": "SLEEP_BETWEEN_CALLS", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L532"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_fetch_classification_codes", "callee": "get", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L537", "receiver": "c2"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_fetch_classification_codes", "callee": "get", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L537", "receiver": "c2"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_fetch_classification_codes", "callee": "get", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L538", "receiver": "c2"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_fetch_classification_codes", "callee": "get", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L538", "receiver": "c2"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_fetch_classification_codes", "callee": "append", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L539", "receiver": "rows"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_fetch_classification_codes", "callee": "sleep", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L548", "receiver": "time"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_fetch_classification_codes", "callee": "SLEEP_BETWEEN_CALLS", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L548"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_fetch_classification_codes", "callee": "get", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L552", "receiver": "c3"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_fetch_classification_codes", "callee": "get", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L552", "receiver": "c3"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_fetch_classification_codes", "callee": "get", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L553", "receiver": "c3"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_fetch_classification_codes", "callee": "get", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L553", "receiver": "c3"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_fetch_classification_codes", "callee": "append", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L554", "receiver": "rows"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_fetch_classification_codes", "callee": "CLASSIFICATION_CSV", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L557"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_fetch_classification_codes", "callee": "DictWriter", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L558", "receiver": "csv"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_fetch_classification_codes", "callee": "f", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L558"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_fetch_classification_codes", "callee": "writeheader", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L559", "receiver": "w"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_fetch_classification_codes", "callee": "writerows", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L560", "receiver": "w"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_fetch_pois", "callee": "POIS_CSV", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L579"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_fetch_pois", "callee": "POI_COLUMNS", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L579"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_fetch_pois", "callee": "get", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L581", "receiver": "CONTENT_TYPES"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_fetch_pois", "callee": "NUM_OF_ROWS", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L586"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_fetch_pois", "callee": "sleep", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L602", "receiver": "time"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_fetch_pois", "callee": "SLEEP_BETWEEN_CALLS", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L602"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_fetch_pois", "callee": "csv_out", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L615"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_fetch_pois", "callee": "sleep", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L625", "receiver": "time"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_fetch_pois", "callee": "SLEEP_BETWEEN_CALLS", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L625"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_fetch_pois", "callee": "csv_out", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L631"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_process_items", "callee": "get", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L656", "receiver": "item"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_process_items", "callee": "get", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L662", "receiver": "item"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_process_items", "callee": "get", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L662", "receiver": "item"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_process_items", "callee": "get", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L665", "receiver": "item"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_process_items", "callee": "add", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L667", "receiver": null}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_fetch_festivals", "callee": "NUM_OF_ROWS", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L692"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_fetch_festivals", "callee": "sleep", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L701", "receiver": "time"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_fetch_festivals", "callee": "SLEEP_BETWEEN_CALLS", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L701"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_fetch_festivals", "callee": "FESTIVALS_CSV", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L732"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_fetch_festivals", "callee": "FESTIVAL_COLUMNS", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L732"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_fetch_festivals", "callee": "_process_festival_items", "is_member_call": false, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L734", "receiver": null}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_fetch_festivals", "callee": "csv_out", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L734"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_fetch_festivals", "callee": "sleep", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L740", "receiver": "time"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_fetch_festivals", "callee": "SLEEP_BETWEEN_CALLS", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L740"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_fetch_festivals", "callee": "_process_festival_items", "is_member_call": false, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L744", "receiver": null}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_fetch_festivals", "callee": "csv_out", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L744"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_enrich_operating_hours", "callee": "exists", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L761", "receiver": "POIS_CSV"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_enrich_operating_hours", "callee": "exit", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L762", "receiver": "sys"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_enrich_operating_hours", "callee": "POIS_CSV", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L766"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_enrich_operating_hours", "callee": "DictReader", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L767", "receiver": "csv"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_enrich_operating_hours", "callee": "f", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L767"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_enrich_operating_hours", "callee": "strip", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L768", "receiver": null}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_enrich_operating_hours", "callee": "get", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L768", "receiver": "row"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_enrich_operating_hours", "callee": "strip", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L769", "receiver": null}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_enrich_operating_hours", "callee": "get", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L769", "receiver": "row"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_enrich_operating_hours", "callee": "append", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L771", "receiver": "pois"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_enrich_operating_hours", "callee": "OPERATING_CSV", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L777"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_enrich_operating_hours", "callee": "INTRO_COLUMNS", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L777"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_enrich_operating_hours", "callee": "sleep", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L790", "receiver": "time"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_enrich_operating_hours", "callee": "SLEEP_BETWEEN_CALLS", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L790"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_enrich_operating_hours", "callee": "add", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L796", "receiver": null}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_enrich_operating_hours", "callee": "get", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L799", "receiver": null}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_enrich_operating_hours", "callee": "add", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L803", "receiver": null}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_test_connection", "callee": "exit", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L824", "receiver": "sys"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_test_connection", "callee": "get", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L826", "receiver": null}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_test_connection", "callee": "get", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L826", "receiver": "resp"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_test_connection", "callee": "get", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L827", "receiver": "body"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_test_connection", "callee": "get", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L833", "receiver": "sample"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_test_connection", "callee": "get", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L834", "receiver": "sample"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_test_connection", "callee": "get", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L834", "receiver": "sample"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_test_connection", "callee": "get", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L835", "receiver": "sample"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_test_connection", "callee": "get", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L835", "receiver": "sample"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_main", "callee": "ArgumentParser", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L840", "receiver": "argparse"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_main", "callee": "add_argument", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L844", "receiver": "parser"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_main", "callee": "join", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L847", "receiver": null}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_main", "callee": "items", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L847", "receiver": "CONTENT_TYPES"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_main", "callee": "add_argument", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L849", "receiver": "parser"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_main", "callee": "add_argument", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L854", "receiver": "parser"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_main", "callee": "add_argument", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L858", "receiver": "parser"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_main", "callee": "add_argument", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L860", "receiver": "parser"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_main", "callee": "add_argument", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L862", "receiver": "parser"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_main", "callee": "add_argument", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L864", "receiver": "parser"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_main", "callee": "add_argument", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L866", "receiver": "parser"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_main", "callee": "add_argument", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L868", "receiver": "parser"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_main", "callee": "add_argument", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L870", "receiver": "parser"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_main", "callee": "add_argument", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L873", "receiver": "parser"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_main", "callee": "add_argument", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L875", "receiver": "parser"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_main", "callee": "parse_args", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L881", "receiver": "parser"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_main", "callee": "POIS_CSV", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L892"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_main", "callee": "OPERATING_CSV", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L892"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_main", "callee": "CHECKPOINT_FILE", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L892"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_main", "callee": "exists", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L893", "receiver": "f"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_main", "callee": "unlink", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L894", "receiver": "f"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_main", "callee": "load", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L897", "receiver": "Checkpoint"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_main", "callee": "items", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L901", "receiver": null}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_main", "callee": "get", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L902", "receiver": "rec"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_main", "callee": "isoformat", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L902", "receiver": null}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_main", "callee": "today", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L902", "receiver": "date"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_main", "callee": "split", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L931", "receiver": null}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_main", "callee": "strip", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L931", "receiver": "x"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_main", "callee": "keys", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L933", "receiver": "CONTENT_TYPES"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_main", "callee": "exists", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L938", "receiver": "LDONG_CSV"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_main", "callee": "exit", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L939", "receiver": "sys"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_main", "callee": "LDONG_CSV", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L942"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_main", "callee": "DictReader", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L943", "receiver": "csv"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_main", "callee": "get", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L944", "receiver": "row"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_main", "callee": "append", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L945", "receiver": "ldong_codes"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_main", "callee": "strip", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L952", "receiver": null}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_main", "callee": "strip", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L953", "receiver": null}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_main", "callee": "isdigit", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L954", "receiver": "yr"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_main", "callee": "isdigit", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L956", "receiver": "yr"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_main", "callee": "exit", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L959", "receiver": "sys"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_main", "callee": "items", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L971", "receiver": null}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_main", "callee": "get", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L972", "receiver": "rec"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_main", "callee": "isoformat", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L972", "receiver": null}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_main", "callee": "today", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L972", "receiver": "date"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_tourapi_to_csv_main", "callee": "exists", "is_member_call": true, "source_file": "gun/scripts/fetch_tourapi_to_csv.py", "source_location": "L976", "receiver": "POIS_CSV"}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.31/3a9bd6c7ad75d25b1110fce15de4cb2832f8faaf4fff8e6ef76696702498eb4a.json b/graphify-out/cache/ast/v0.9.31/3a9bd6c7ad75d25b1110fce15de4cb2832f8faaf4fff8e6ef76696702498eb4a.json new file mode 100644 index 0000000..dd4c2f8 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.31/3a9bd6c7ad75d25b1110fce15de4cb2832f8faaf4fff8e6ef76696702498eb4a.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_scripts_collect_naver_metadata_py", "label": "collect_naver_metadata.py", "file_type": "code", "source_file": "scripts/collect_naver_metadata.py", "source_location": "L1"}, {"id": "$graphify-root$_scripts_collect_naver_metadata_rate_limited_get", "label": "_rate_limited_get()", "file_type": "code", "source_file": "scripts/collect_naver_metadata.py", "source_location": "L50", "_callable": true}, {"id": "client", "label": "Client", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/scripts/collect_naver_metadata.py"}, {"id": "response", "label": "Response", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/scripts/collect_naver_metadata.py"}, {"id": "$graphify-root$_scripts_collect_naver_metadata_load_csv_sample", "label": "load_csv_sample()", "file_type": "code", "source_file": "scripts/collect_naver_metadata.py", "source_location": "L94", "_callable": true}, {"id": "$graphify-root$_scripts_collect_naver_metadata_fetch_blog", "label": "fetch_blog()", "file_type": "code", "source_file": "scripts/collect_naver_metadata.py", "source_location": "L117", "_callable": true}, {"id": "$graphify-root$_scripts_collect_naver_metadata_build_place_block", "label": "build_place_block()", "file_type": "code", "source_file": "scripts/collect_naver_metadata.py", "source_location": "L143", "_callable": true}, {"id": "$graphify-root$_scripts_collect_naver_metadata_extract_metadata_batch", "label": "extract_metadata_batch()", "file_type": "code", "source_file": "scripts/collect_naver_metadata.py", "source_location": "L164", "_callable": true}, {"id": "$graphify-root$_scripts_collect_naver_metadata_load_progress", "label": "load_progress()", "file_type": "code", "source_file": "scripts/collect_naver_metadata.py", "source_location": "L188", "_callable": true}, {"id": "$graphify-root$_scripts_collect_naver_metadata_save_progress", "label": "save_progress()", "file_type": "code", "source_file": "scripts/collect_naver_metadata.py", "source_location": "L195", "_callable": true}, {"id": "$graphify-root$_scripts_collect_naver_metadata_merge_meta", "label": "merge_meta()", "file_type": "code", "source_file": "scripts/collect_naver_metadata.py", "source_location": "L201", "_callable": true}, {"id": "$graphify-root$_scripts_collect_naver_metadata_main", "label": "main()", "file_type": "code", "source_file": "scripts/collect_naver_metadata.py", "source_location": "L215", "_callable": true}, {"id": "$graphify-root$_scripts_collect_naver_metadata_rationale_51", "label": "\ucd08\ub2f9 \uc694\uccad \uc218\ub97c RATE_LIMIT_RPS \uc774\ud558\ub85c \uc81c\ud55c", "file_type": "rationale", "source_file": "scripts/collect_naver_metadata.py", "source_location": "L51"}, {"id": "$graphify-root$_scripts_collect_naver_metadata_rationale_95", "label": "CSV\uc5d0\uc11c \uc0d8\ud50c \ucd94\ucd9c (\uc74c\uc2dd\uc810\u00b7\uad00\uad11\uc9c0 \ube44\uc911 \ub192\uc784)", "file_type": "rationale", "source_file": "scripts/collect_naver_metadata.py", "source_location": "L95"}, {"id": "$graphify-root$_scripts_collect_naver_metadata_rationale_118", "label": "\ub2e8\uc77c POI\uc758 \ube14\ub85c\uadf8 \uacb0\uacfc \uc218\uc9d1 (\uc2a4\ub808\ub4dc\ud480\uc5d0\uc11c \uc2e4\ud589)", "file_type": "rationale", "source_file": "scripts/collect_naver_metadata.py", "source_location": "L118"}], "edges": [{"source": "$graphify-root$_scripts_collect_naver_metadata_py", "target": "csv", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/collect_naver_metadata.py", "source_location": "L4", "weight": 1.0}, {"source": "$graphify-root$_scripts_collect_naver_metadata_py", "target": "json", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/collect_naver_metadata.py", "source_location": "L5", "weight": 1.0}, {"source": "$graphify-root$_scripts_collect_naver_metadata_py", "target": "os", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/collect_naver_metadata.py", "source_location": "L6", "weight": 1.0}, {"source": "$graphify-root$_scripts_collect_naver_metadata_py", "target": "random", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/collect_naver_metadata.py", "source_location": "L7", "weight": 1.0}, {"source": "$graphify-root$_scripts_collect_naver_metadata_py", "target": "sys", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/collect_naver_metadata.py", "source_location": "L8", "weight": 1.0}, {"source": "$graphify-root$_scripts_collect_naver_metadata_py", "target": "threading", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/collect_naver_metadata.py", "source_location": "L9", "weight": 1.0}, {"source": "$graphify-root$_scripts_collect_naver_metadata_py", "target": "time", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/collect_naver_metadata.py", "source_location": "L10", "weight": 1.0}, {"source": "$graphify-root$_scripts_collect_naver_metadata_py", "target": "concurrent_futures", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/collect_naver_metadata.py", "source_location": "L11", "weight": 1.0}, {"source": "$graphify-root$_scripts_collect_naver_metadata_py", "target": "pathlib", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/collect_naver_metadata.py", "source_location": "L12", "weight": 1.0}, {"source": "$graphify-root$_scripts_collect_naver_metadata_py", "target": "httpx", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/collect_naver_metadata.py", "source_location": "L14", "weight": 1.0}, {"source": "$graphify-root$_scripts_collect_naver_metadata_py", "target": "anthropic", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/collect_naver_metadata.py", "source_location": "L15", "weight": 1.0}, {"source": "$graphify-root$_scripts_collect_naver_metadata_py", "target": "dotenv", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/collect_naver_metadata.py", "source_location": "L16", "weight": 1.0}, {"source": "$graphify-root$_scripts_collect_naver_metadata_py", "target": "tqdm", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/collect_naver_metadata.py", "source_location": "L17", "weight": 1.0}, {"source": "$graphify-root$_scripts_collect_naver_metadata_py", "target": "$graphify-root$_scripts_collect_naver_metadata_rate_limited_get", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/collect_naver_metadata.py", "source_location": "L50", "weight": 1.0}, {"source": "$graphify-root$_scripts_collect_naver_metadata_rate_limited_get", "target": "client", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "scripts/collect_naver_metadata.py", "source_location": "L50", "weight": 1.0}, {"source": "$graphify-root$_scripts_collect_naver_metadata_rate_limited_get", "target": "response", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "scripts/collect_naver_metadata.py", "source_location": "L50", "weight": 1.0}, {"source": "$graphify-root$_scripts_collect_naver_metadata_py", "target": "$graphify-root$_scripts_collect_naver_metadata_load_csv_sample", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/collect_naver_metadata.py", "source_location": "L94", "weight": 1.0}, {"source": "$graphify-root$_scripts_collect_naver_metadata_py", "target": "$graphify-root$_scripts_collect_naver_metadata_fetch_blog", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/collect_naver_metadata.py", "source_location": "L117", "weight": 1.0}, {"source": "$graphify-root$_scripts_collect_naver_metadata_fetch_blog", "target": "client", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "scripts/collect_naver_metadata.py", "source_location": "L117", "weight": 1.0}, {"source": "$graphify-root$_scripts_collect_naver_metadata_py", "target": "$graphify-root$_scripts_collect_naver_metadata_build_place_block", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/collect_naver_metadata.py", "source_location": "L143", "weight": 1.0}, {"source": "$graphify-root$_scripts_collect_naver_metadata_py", "target": "$graphify-root$_scripts_collect_naver_metadata_extract_metadata_batch", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/collect_naver_metadata.py", "source_location": "L164", "weight": 1.0}, {"source": "$graphify-root$_scripts_collect_naver_metadata_py", "target": "$graphify-root$_scripts_collect_naver_metadata_load_progress", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/collect_naver_metadata.py", "source_location": "L188", "weight": 1.0}, {"source": "$graphify-root$_scripts_collect_naver_metadata_py", "target": "$graphify-root$_scripts_collect_naver_metadata_save_progress", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/collect_naver_metadata.py", "source_location": "L195", "weight": 1.0}, {"source": "$graphify-root$_scripts_collect_naver_metadata_py", "target": "$graphify-root$_scripts_collect_naver_metadata_merge_meta", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/collect_naver_metadata.py", "source_location": "L201", "weight": 1.0}, {"source": "$graphify-root$_scripts_collect_naver_metadata_py", "target": "$graphify-root$_scripts_collect_naver_metadata_main", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/collect_naver_metadata.py", "source_location": "L215", "weight": 1.0}, {"source": "$graphify-root$_scripts_collect_naver_metadata_fetch_blog", "target": "$graphify-root$_scripts_collect_naver_metadata_rate_limited_get", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/collect_naver_metadata.py", "source_location": "L125", "weight": 1.0}, {"source": "$graphify-root$_scripts_collect_naver_metadata_extract_metadata_batch", "target": "$graphify-root$_scripts_collect_naver_metadata_build_place_block", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/collect_naver_metadata.py", "source_location": "L166", "weight": 1.0}, {"source": "$graphify-root$_scripts_collect_naver_metadata_main", "target": "$graphify-root$_scripts_collect_naver_metadata_load_csv_sample", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/collect_naver_metadata.py", "source_location": "L221", "weight": 1.0}, {"source": "$graphify-root$_scripts_collect_naver_metadata_main", "target": "$graphify-root$_scripts_collect_naver_metadata_load_progress", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/collect_naver_metadata.py", "source_location": "L224", "weight": 1.0}, {"source": "$graphify-root$_scripts_collect_naver_metadata_main", "target": "client", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/collect_naver_metadata.py", "source_location": "L234", "weight": 1.0}, {"source": "$graphify-root$_scripts_collect_naver_metadata_main", "target": "$graphify-root$_scripts_collect_naver_metadata_fetch_blog", "relation": "indirect_call", "context": "argument", "confidence": "INFERRED", "source_file": "scripts/collect_naver_metadata.py", "source_location": "L236", "weight": 1.0}, {"source": "$graphify-root$_scripts_collect_naver_metadata_main", "target": "$graphify-root$_scripts_collect_naver_metadata_extract_metadata_batch", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/collect_naver_metadata.py", "source_location": "L251", "weight": 1.0}, {"source": "$graphify-root$_scripts_collect_naver_metadata_main", "target": "$graphify-root$_scripts_collect_naver_metadata_merge_meta", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/collect_naver_metadata.py", "source_location": "L256", "weight": 1.0}, {"source": "$graphify-root$_scripts_collect_naver_metadata_main", "target": "$graphify-root$_scripts_collect_naver_metadata_save_progress", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/collect_naver_metadata.py", "source_location": "L257", "weight": 1.0}, {"source": "$graphify-root$_scripts_collect_naver_metadata_rationale_51", "target": "$graphify-root$_scripts_collect_naver_metadata_rate_limited_get", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/collect_naver_metadata.py", "source_location": "L51", "weight": 1.0}, {"source": "$graphify-root$_scripts_collect_naver_metadata_rationale_95", "target": "$graphify-root$_scripts_collect_naver_metadata_load_csv_sample", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/collect_naver_metadata.py", "source_location": "L95", "weight": 1.0}, {"source": "$graphify-root$_scripts_collect_naver_metadata_rationale_118", "target": "$graphify-root$_scripts_collect_naver_metadata_fetch_blog", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/collect_naver_metadata.py", "source_location": "L118", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_scripts_collect_naver_metadata_rate_limited_get", "callee": "monotonic", "is_member_call": true, "source_file": "scripts/collect_naver_metadata.py", "source_location": "L53", "receiver": "time"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_metadata_rate_limited_get", "callee": "pop", "is_member_call": true, "source_file": "scripts/collect_naver_metadata.py", "source_location": "L56", "receiver": "_last_request_times"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_metadata_rate_limited_get", "callee": "_last_request_times", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/collect_naver_metadata.py", "source_location": "L57"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_metadata_rate_limited_get", "callee": "sleep", "is_member_call": true, "source_file": "scripts/collect_naver_metadata.py", "source_location": "L60", "receiver": "time"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_metadata_rate_limited_get", "callee": "append", "is_member_call": true, "source_file": "scripts/collect_naver_metadata.py", "source_location": "L61", "receiver": "_last_request_times"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_metadata_rate_limited_get", "callee": "monotonic", "is_member_call": true, "source_file": "scripts/collect_naver_metadata.py", "source_location": "L61", "receiver": "time"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_metadata_rate_limited_get", "callee": "get", "is_member_call": true, "source_file": "scripts/collect_naver_metadata.py", "source_location": "L62", "receiver": "client"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_metadata_load_csv_sample", "callee": "CSV_PATH", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/collect_naver_metadata.py", "source_location": "L97"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_metadata_load_csv_sample", "callee": "DictReader", "is_member_call": true, "source_file": "scripts/collect_naver_metadata.py", "source_location": "L98", "receiver": "csv"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_metadata_load_csv_sample", "callee": "f", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/collect_naver_metadata.py", "source_location": "L98"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_metadata_load_csv_sample", "callee": "append", "is_member_call": true, "source_file": "scripts/collect_naver_metadata.py", "source_location": "L100", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_collect_naver_metadata_load_csv_sample", "callee": "setdefault", "is_member_call": true, "source_file": "scripts/collect_naver_metadata.py", "source_location": "L100", "receiver": "buckets"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_metadata_load_csv_sample", "callee": "items", "is_member_call": true, "source_file": "scripts/collect_naver_metadata.py", "source_location": "L108", "receiver": "weights"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_metadata_load_csv_sample", "callee": "get", "is_member_call": true, "source_file": "scripts/collect_naver_metadata.py", "source_location": "L109", "receiver": "buckets"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_metadata_load_csv_sample", "callee": "extend", "is_member_call": true, "source_file": "scripts/collect_naver_metadata.py", "source_location": "L111", "receiver": "sample"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_metadata_load_csv_sample", "callee": "sample", "is_member_call": true, "source_file": "scripts/collect_naver_metadata.py", "source_location": "L111", "receiver": "random"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_metadata_load_csv_sample", "callee": "shuffle", "is_member_call": true, "source_file": "scripts/collect_naver_metadata.py", "source_location": "L113", "receiver": "random"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_metadata_fetch_blog", "callee": "join", "is_member_call": true, "source_file": "scripts/collect_naver_metadata.py", "source_location": "L120", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_collect_naver_metadata_fetch_blog", "callee": "get", "is_member_call": true, "source_file": "scripts/collect_naver_metadata.py", "source_location": "L120", "receiver": "poi"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_metadata_fetch_blog", "callee": "get", "is_member_call": true, "source_file": "scripts/collect_naver_metadata.py", "source_location": "L120", "receiver": "poi"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_metadata_fetch_blog", "callee": "strip", "is_member_call": true, "source_file": "scripts/collect_naver_metadata.py", "source_location": "L121", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_collect_naver_metadata_fetch_blog", "callee": "MAX_RETRIES", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/collect_naver_metadata.py", "source_location": "L123"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_metadata_fetch_blog", "callee": "NAVER_BLOG_URL", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/collect_naver_metadata.py", "source_location": "L127"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_metadata_fetch_blog", "callee": "NAVER_HEADERS", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/collect_naver_metadata.py", "source_location": "L128"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_metadata_fetch_blog", "callee": "BLOG_DISPLAY", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "scripts/collect_naver_metadata.py", "source_location": "L129"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_metadata_fetch_blog", "callee": "exit", "is_member_call": true, "source_file": "scripts/collect_naver_metadata.py", "source_location": "L134", "receiver": "sys"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_metadata_fetch_blog", "callee": "get", "is_member_call": true, "source_file": "scripts/collect_naver_metadata.py", "source_location": "L136", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_collect_naver_metadata_fetch_blog", "callee": "json", "is_member_call": true, "source_file": "scripts/collect_naver_metadata.py", "source_location": "L136", "receiver": "resp"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_metadata_fetch_blog", "callee": "sleep", "is_member_call": true, "source_file": "scripts/collect_naver_metadata.py", "source_location": "L139", "receiver": "time"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_metadata_build_place_block", "callee": "join", "is_member_call": true, "source_file": "scripts/collect_naver_metadata.py", "source_location": "L150", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_collect_naver_metadata_build_place_block", "callee": "get", "is_member_call": true, "source_file": "scripts/collect_naver_metadata.py", "source_location": "L150", "receiver": "poi"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_metadata_build_place_block", "callee": "get", "is_member_call": true, "source_file": "scripts/collect_naver_metadata.py", "source_location": "L150", "receiver": "poi"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_metadata_build_place_block", "callee": "get", "is_member_call": true, "source_file": "scripts/collect_naver_metadata.py", "source_location": "L151", "receiver": "TYPE_LABEL"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_metadata_build_place_block", "callee": "get", "is_member_call": true, "source_file": "scripts/collect_naver_metadata.py", "source_location": "L151", "receiver": "poi"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_metadata_build_place_block", "callee": "strip_tags", "is_member_call": false, "source_file": "scripts/collect_naver_metadata.py", "source_location": "L156", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_collect_naver_metadata_build_place_block", "callee": "get", "is_member_call": true, "source_file": "scripts/collect_naver_metadata.py", "source_location": "L156", "receiver": "item"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_metadata_build_place_block", "callee": "strip_tags", "is_member_call": false, "source_file": "scripts/collect_naver_metadata.py", "source_location": "L157", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_collect_naver_metadata_build_place_block", "callee": "get", "is_member_call": true, "source_file": "scripts/collect_naver_metadata.py", "source_location": "L157", "receiver": "item"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_metadata_build_place_block", "callee": "append", "is_member_call": true, "source_file": "scripts/collect_naver_metadata.py", "source_location": "L158", "receiver": "lines"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_metadata_build_place_block", "callee": "append", "is_member_call": true, "source_file": "scripts/collect_naver_metadata.py", "source_location": "L160", "receiver": "lines"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_metadata_build_place_block", "callee": "join", "is_member_call": true, "source_file": "scripts/collect_naver_metadata.py", "source_location": "L161", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_collect_naver_metadata_extract_metadata_batch", "callee": "join", "is_member_call": true, "source_file": "scripts/collect_naver_metadata.py", "source_location": "L165", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_collect_naver_metadata_extract_metadata_batch", "callee": "format", "is_member_call": true, "source_file": "scripts/collect_naver_metadata.py", "source_location": "L168", "receiver": "EXTRACT_PROMPT"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_metadata_extract_metadata_batch", "callee": "MAX_RETRIES", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/collect_naver_metadata.py", "source_location": "L170"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_metadata_extract_metadata_batch", "callee": "create", "is_member_call": true, "source_file": "scripts/collect_naver_metadata.py", "source_location": "L172", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_collect_naver_metadata_extract_metadata_batch", "callee": "strip", "is_member_call": true, "source_file": "scripts/collect_naver_metadata.py", "source_location": "L177", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_collect_naver_metadata_extract_metadata_batch", "callee": "find", "is_member_call": true, "source_file": "scripts/collect_naver_metadata.py", "source_location": "L178", "receiver": "raw"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_metadata_extract_metadata_batch", "callee": "rfind", "is_member_call": true, "source_file": "scripts/collect_naver_metadata.py", "source_location": "L179", "receiver": "raw"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_metadata_extract_metadata_batch", "callee": "loads", "is_member_call": true, "source_file": "scripts/collect_naver_metadata.py", "source_location": "L181", "receiver": "json"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_metadata_extract_metadata_batch", "callee": "sleep", "is_member_call": true, "source_file": "scripts/collect_naver_metadata.py", "source_location": "L184", "receiver": "time"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_metadata_load_progress", "callee": "exists", "is_member_call": true, "source_file": "scripts/collect_naver_metadata.py", "source_location": "L189", "receiver": "PROGRESS_PATH"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_metadata_load_progress", "callee": "PROGRESS_PATH", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/collect_naver_metadata.py", "source_location": "L190"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_metadata_load_progress", "callee": "load", "is_member_call": true, "source_file": "scripts/collect_naver_metadata.py", "source_location": "L191", "receiver": "json"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_metadata_load_progress", "callee": "f", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/collect_naver_metadata.py", "source_location": "L191"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_metadata_save_progress", "callee": "mkdir", "is_member_call": true, "source_file": "scripts/collect_naver_metadata.py", "source_location": "L196", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_collect_naver_metadata_save_progress", "callee": "PROGRESS_PATH", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/collect_naver_metadata.py", "source_location": "L197"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_metadata_save_progress", "callee": "dump", "is_member_call": true, "source_file": "scripts/collect_naver_metadata.py", "source_location": "L198", "receiver": "json"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_metadata_save_progress", "callee": "f", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/collect_naver_metadata.py", "source_location": "L198"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_metadata_save_progress", "callee": "values", "is_member_call": true, "source_file": "scripts/collect_naver_metadata.py", "source_location": "L198", "receiver": "results"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_metadata_merge_meta", "callee": "update", "is_member_call": true, "source_file": "scripts/collect_naver_metadata.py", "source_location": "L202", "receiver": "meta"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_metadata_merge_meta", "callee": "get", "is_member_call": true, "source_file": "scripts/collect_naver_metadata.py", "source_location": "L204", "receiver": "source"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_metadata_merge_meta", "callee": "get", "is_member_call": true, "source_file": "scripts/collect_naver_metadata.py", "source_location": "L205", "receiver": "source"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_metadata_merge_meta", "callee": "get", "is_member_call": true, "source_file": "scripts/collect_naver_metadata.py", "source_location": "L206", "receiver": "source"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_metadata_merge_meta", "callee": "get", "is_member_call": true, "source_file": "scripts/collect_naver_metadata.py", "source_location": "L208", "receiver": "TYPE_LABEL"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_metadata_merge_meta", "callee": "get", "is_member_call": true, "source_file": "scripts/collect_naver_metadata.py", "source_location": "L209", "receiver": "source"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_metadata_merge_meta", "callee": "get", "is_member_call": true, "source_file": "scripts/collect_naver_metadata.py", "source_location": "L210", "receiver": "source"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_metadata_main", "callee": "exit", "is_member_call": true, "source_file": "scripts/collect_naver_metadata.py", "source_location": "L218", "receiver": "sys"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_metadata_main", "callee": "SAMPLE_SIZE", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/collect_naver_metadata.py", "source_location": "L221"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_metadata_main", "callee": "monotonic", "is_member_call": true, "source_file": "scripts/collect_naver_metadata.py", "source_location": "L228", "receiver": "time"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_metadata_main", "callee": "ThreadPoolExecutor", "is_member_call": false, "source_file": "scripts/collect_naver_metadata.py", "source_location": "L235", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_collect_naver_metadata_main", "callee": "MAX_WORKERS", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/collect_naver_metadata.py", "source_location": "L235"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_metadata_main", "callee": "submit", "is_member_call": true, "source_file": "scripts/collect_naver_metadata.py", "source_location": "L236", "receiver": "pool"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_metadata_main", "callee": "http", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/collect_naver_metadata.py", "source_location": "L236"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_metadata_main", "callee": "tqdm", "is_member_call": false, "source_file": "scripts/collect_naver_metadata.py", "source_location": "L237", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_collect_naver_metadata_main", "callee": "as_completed", "is_member_call": false, "source_file": "scripts/collect_naver_metadata.py", "source_location": "L238", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_collect_naver_metadata_main", "callee": "append", "is_member_call": true, "source_file": "scripts/collect_naver_metadata.py", "source_location": "L239", "receiver": "blog_results"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_metadata_main", "callee": "result", "is_member_call": true, "source_file": "scripts/collect_naver_metadata.py", "source_location": "L239", "receiver": "fut"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_metadata_main", "callee": "update", "is_member_call": true, "source_file": "scripts/collect_naver_metadata.py", "source_location": "L240", "receiver": "pbar"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_metadata_main", "callee": "monotonic", "is_member_call": true, "source_file": "scripts/collect_naver_metadata.py", "source_location": "L242", "receiver": "time"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_metadata_main", "callee": "monotonic", "is_member_call": true, "source_file": "scripts/collect_naver_metadata.py", "source_location": "L247", "receiver": "time"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_metadata_main", "callee": "tqdm", "is_member_call": false, "source_file": "scripts/collect_naver_metadata.py", "source_location": "L249", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_collect_naver_metadata_main", "callee": "BATCH_SIZE", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/collect_naver_metadata.py", "source_location": "L249"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_metadata_main", "callee": "get", "is_member_call": true, "source_file": "scripts/collect_naver_metadata.py", "source_location": "L254", "receiver": "meta"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_metadata_main", "callee": "monotonic", "is_member_call": true, "source_file": "scripts/collect_naver_metadata.py", "source_location": "L259", "receiver": "time"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_metadata_main", "callee": "monotonic", "is_member_call": true, "source_file": "scripts/collect_naver_metadata.py", "source_location": "L260", "receiver": "time"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_metadata_main", "callee": "mkdir", "is_member_call": true, "source_file": "scripts/collect_naver_metadata.py", "source_location": "L263", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_collect_naver_metadata_main", "callee": "values", "is_member_call": true, "source_file": "scripts/collect_naver_metadata.py", "source_location": "L264", "receiver": "done"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_metadata_main", "callee": "OUTPUT_PATH", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/collect_naver_metadata.py", "source_location": "L265"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_metadata_main", "callee": "dump", "is_member_call": true, "source_file": "scripts/collect_naver_metadata.py", "source_location": "L266", "receiver": "json"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_metadata_main", "callee": "get", "is_member_call": true, "source_file": "scripts/collect_naver_metadata.py", "source_location": "L272", "receiver": "r"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_metadata_main", "callee": "get", "is_member_call": true, "source_file": "scripts/collect_naver_metadata.py", "source_location": "L273", "receiver": "r"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_metadata_main", "callee": "get", "is_member_call": true, "source_file": "scripts/collect_naver_metadata.py", "source_location": "L274", "receiver": "r"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_metadata_main", "callee": "get", "is_member_call": true, "source_file": "scripts/collect_naver_metadata.py", "source_location": "L275", "receiver": "r"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_metadata_main", "callee": "get", "is_member_call": true, "source_file": "scripts/collect_naver_metadata.py", "source_location": "L276", "receiver": "r"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_metadata_main", "callee": "get", "is_member_call": true, "source_file": "scripts/collect_naver_metadata.py", "source_location": "L278", "receiver": "r"}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.31/3bfe2cb281217a98711c28f53692ffc22168193beae12b23f0c97df4a0f866fd.json b/graphify-out/cache/ast/v0.9.31/3bfe2cb281217a98711c28f53692ffc22168193beae12b23f0c97df4a0f866fd.json new file mode 100644 index 0000000..472bb21 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.31/3bfe2cb281217a98711c28f53692ffc22168193beae12b23f0c97df4a0f866fd.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_scripts_test_execute_py", "label": "test_execute.py", "file_type": "code", "source_file": "scripts/test_execute.py", "source_location": "L1"}, {"id": "fixture", "label": "fixture", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/scripts/test_execute.py"}, {"id": "$graphify-root$_scripts_test_execute_tmp_project", "label": "tmp_project()", "file_type": "code", "source_file": "scripts/test_execute.py", "source_location": "L26", "_callable": true}, {"id": "$graphify-root$_scripts_test_execute_phase_dir", "label": "phase_dir()", "file_type": "code", "source_file": "scripts/test_execute.py", "source_location": "L43", "_callable": true}, {"id": "$graphify-root$_scripts_test_execute_top_index", "label": "top_index()", "file_type": "code", "source_file": "scripts/test_execute.py", "source_location": "L64", "_callable": true}, {"id": "$graphify-root$_scripts_test_execute_executor", "label": "executor()", "file_type": "code", "source_file": "scripts/test_execute.py", "source_location": "L78", "_callable": true}, {"id": "$graphify-root$_scripts_test_execute_teststamp", "label": "TestStamp", "file_type": "code", "source_file": "scripts/test_execute.py", "source_location": "L96", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_scripts_test_execute_teststamp_test_returns_kst_timestamp", "label": ".test_returns_kst_timestamp()", "file_type": "code", "source_file": "scripts/test_execute.py", "source_location": "L97", "_callable": true}, {"id": "$graphify-root$_scripts_test_execute_teststamp_test_format_is_iso", "label": ".test_format_is_iso()", "file_type": "code", "source_file": "scripts/test_execute.py", "source_location": "L101", "_callable": true}, {"id": "$graphify-root$_scripts_test_execute_teststamp_test_is_current_time", "label": ".test_is_current_time()", "file_type": "code", "source_file": "scripts/test_execute.py", "source_location": "L106", "_callable": true}, {"id": "$graphify-root$_scripts_test_execute_testjsonhelpers", "label": "TestJsonHelpers", "file_type": "code", "source_file": "scripts/test_execute.py", "source_location": "L118", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_scripts_test_execute_testjsonhelpers_test_roundtrip", "label": ".test_roundtrip()", "file_type": "code", "source_file": "scripts/test_execute.py", "source_location": "L119", "_callable": true}, {"id": "$graphify-root$_scripts_test_execute_testjsonhelpers_test_save_ensures_ascii_false", "label": ".test_save_ensures_ascii_false()", "file_type": "code", "source_file": "scripts/test_execute.py", "source_location": "L126", "_callable": true}, {"id": "$graphify-root$_scripts_test_execute_testjsonhelpers_test_save_indented", "label": ".test_save_indented()", "file_type": "code", "source_file": "scripts/test_execute.py", "source_location": "L133", "_callable": true}, {"id": "$graphify-root$_scripts_test_execute_testjsonhelpers_test_load_nonexistent_raises", "label": ".test_load_nonexistent_raises()", "file_type": "code", "source_file": "scripts/test_execute.py", "source_location": "L139", "_callable": true}, {"id": "$graphify-root$_scripts_test_execute_testloadguardrails", "label": "TestLoadGuardrails", "file_type": "code", "source_file": "scripts/test_execute.py", "source_location": "L148", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_scripts_test_execute_testloadguardrails_test_loads_claude_md_and_docs", "label": ".test_loads_claude_md_and_docs()", "file_type": "code", "source_file": "scripts/test_execute.py", "source_location": "L149", "_callable": true}, {"id": "$graphify-root$_scripts_test_execute_testloadguardrails_test_sections_separated_by_divider", "label": ".test_sections_separated_by_divider()", "file_type": "code", "source_file": "scripts/test_execute.py", "source_location": "L157", "_callable": true}, {"id": "$graphify-root$_scripts_test_execute_testloadguardrails_test_docs_sorted_alphabetically", "label": ".test_docs_sorted_alphabetically()", "file_type": "code", "source_file": "scripts/test_execute.py", "source_location": "L162", "_callable": true}, {"id": "$graphify-root$_scripts_test_execute_testloadguardrails_test_no_claude_md", "label": ".test_no_claude_md()", "file_type": "code", "source_file": "scripts/test_execute.py", "source_location": "L169", "_callable": true}, {"id": "$graphify-root$_scripts_test_execute_testloadguardrails_test_no_docs_dir", "label": ".test_no_docs_dir()", "file_type": "code", "source_file": "scripts/test_execute.py", "source_location": "L176", "_callable": true}, {"id": "$graphify-root$_scripts_test_execute_testloadguardrails_test_empty_project", "label": ".test_empty_project()", "file_type": "code", "source_file": "scripts/test_execute.py", "source_location": "L184", "_callable": true}, {"id": "$graphify-root$_scripts_test_execute_testbuildstepcontext", "label": "TestBuildStepContext", "file_type": "code", "source_file": "scripts/test_execute.py", "source_location": "L200", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_scripts_test_execute_testbuildstepcontext_test_includes_completed_with_summary", "label": ".test_includes_completed_with_summary()", "file_type": "code", "source_file": "scripts/test_execute.py", "source_location": "L201", "_callable": true}, {"id": "$graphify-root$_scripts_test_execute_testbuildstepcontext_test_excludes_pending", "label": ".test_excludes_pending()", "file_type": "code", "source_file": "scripts/test_execute.py", "source_location": "L207", "_callable": true}, {"id": "$graphify-root$_scripts_test_execute_testbuildstepcontext_test_excludes_completed_without_summary", "label": ".test_excludes_completed_without_summary()", "file_type": "code", "source_file": "scripts/test_execute.py", "source_location": "L212", "_callable": true}, {"id": "$graphify-root$_scripts_test_execute_testbuildstepcontext_test_empty_when_no_completed", "label": ".test_empty_when_no_completed()", "file_type": "code", "source_file": "scripts/test_execute.py", "source_location": "L219", "_callable": true}, {"id": "$graphify-root$_scripts_test_execute_testbuildstepcontext_test_has_header", "label": ".test_has_header()", "file_type": "code", "source_file": "scripts/test_execute.py", "source_location": "L224", "_callable": true}, {"id": "$graphify-root$_scripts_test_execute_testbuildpreamble", "label": "TestBuildPreamble", "file_type": "code", "source_file": "scripts/test_execute.py", "source_location": "L234", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_scripts_test_execute_testbuildpreamble_test_includes_project_name", "label": ".test_includes_project_name()", "file_type": "code", "source_file": "scripts/test_execute.py", "source_location": "L235", "_callable": true}, {"id": "$graphify-root$_scripts_test_execute_testbuildpreamble_test_includes_guardrails", "label": ".test_includes_guardrails()", "file_type": "code", "source_file": "scripts/test_execute.py", "source_location": "L239", "_callable": true}, {"id": "$graphify-root$_scripts_test_execute_testbuildpreamble_test_includes_step_context", "label": ".test_includes_step_context()", "file_type": "code", "source_file": "scripts/test_execute.py", "source_location": "L243", "_callable": true}, {"id": "$graphify-root$_scripts_test_execute_testbuildpreamble_test_includes_commit_example", "label": ".test_includes_commit_example()", "file_type": "code", "source_file": "scripts/test_execute.py", "source_location": "L248", "_callable": true}, {"id": "$graphify-root$_scripts_test_execute_testbuildpreamble_test_includes_rules", "label": ".test_includes_rules()", "file_type": "code", "source_file": "scripts/test_execute.py", "source_location": "L252", "_callable": true}, {"id": "$graphify-root$_scripts_test_execute_testbuildpreamble_test_no_retry_section_by_default", "label": ".test_no_retry_section_by_default()", "file_type": "code", "source_file": "scripts/test_execute.py", "source_location": "L257", "_callable": true}, {"id": "$graphify-root$_scripts_test_execute_testbuildpreamble_test_retry_section_with_prev_error", "label": ".test_retry_section_with_prev_error()", "file_type": "code", "source_file": "scripts/test_execute.py", "source_location": "L261", "_callable": true}, {"id": "$graphify-root$_scripts_test_execute_testbuildpreamble_test_includes_max_retries", "label": ".test_includes_max_retries()", "file_type": "code", "source_file": "scripts/test_execute.py", "source_location": "L266", "_callable": true}, {"id": "$graphify-root$_scripts_test_execute_testbuildpreamble_test_includes_index_path", "label": ".test_includes_index_path()", "file_type": "code", "source_file": "scripts/test_execute.py", "source_location": "L270", "_callable": true}, {"id": "$graphify-root$_scripts_test_execute_testupdatetopindex", "label": "TestUpdateTopIndex", "file_type": "code", "source_file": "scripts/test_execute.py", "source_location": "L279", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_scripts_test_execute_testupdatetopindex_test_completed", "label": ".test_completed()", "file_type": "code", "source_file": "scripts/test_execute.py", "source_location": "L280", "_callable": true}, {"id": "$graphify-root$_scripts_test_execute_testupdatetopindex_test_error", "label": ".test_error()", "file_type": "code", "source_file": "scripts/test_execute.py", "source_location": "L288", "_callable": true}, {"id": "$graphify-root$_scripts_test_execute_testupdatetopindex_test_blocked", "label": ".test_blocked()", "file_type": "code", "source_file": "scripts/test_execute.py", "source_location": "L296", "_callable": true}, {"id": "$graphify-root$_scripts_test_execute_testupdatetopindex_test_other_phases_unchanged", "label": ".test_other_phases_unchanged()", "file_type": "code", "source_file": "scripts/test_execute.py", "source_location": "L304", "_callable": true}, {"id": "$graphify-root$_scripts_test_execute_testupdatetopindex_test_nonexistent_dir_is_noop", "label": ".test_nonexistent_dir_is_noop()", "file_type": "code", "source_file": "scripts/test_execute.py", "source_location": "L311", "_callable": true}, {"id": "$graphify-root$_scripts_test_execute_testupdatetopindex_test_no_top_index_file", "label": ".test_no_top_index_file()", "file_type": "code", "source_file": "scripts/test_execute.py", "source_location": "L320", "_callable": true}, {"id": "$graphify-root$_scripts_test_execute_testcheckoutbranch", "label": "TestCheckoutBranch", "file_type": "code", "source_file": "scripts/test_execute.py", "source_location": "L329", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_scripts_test_execute_testcheckoutbranch_mock_git", "label": "._mock_git()", "file_type": "code", "source_file": "scripts/test_execute.py", "source_location": "L330", "_callable": true}, {"id": "$graphify-root$_scripts_test_execute_testcheckoutbranch_test_already_on_branch", "label": ".test_already_on_branch()", "file_type": "code", "source_file": "scripts/test_execute.py", "source_location": "L340", "_callable": true}, {"id": "$graphify-root$_scripts_test_execute_testcheckoutbranch_test_branch_exists_checkout", "label": ".test_branch_exists_checkout()", "file_type": "code", "source_file": "scripts/test_execute.py", "source_location": "L346", "_callable": true}, {"id": "$graphify-root$_scripts_test_execute_testcheckoutbranch_test_branch_not_exists_create", "label": ".test_branch_not_exists_create()", "file_type": "code", "source_file": "scripts/test_execute.py", "source_location": "L354", "_callable": true}, {"id": "$graphify-root$_scripts_test_execute_testcheckoutbranch_test_checkout_fails_exits", "label": ".test_checkout_fails_exits()", "file_type": "code", "source_file": "scripts/test_execute.py", "source_location": "L362", "_callable": true}, {"id": "$graphify-root$_scripts_test_execute_testcheckoutbranch_test_no_git_exits", "label": ".test_no_git_exits()", "file_type": "code", "source_file": "scripts/test_execute.py", "source_location": "L372", "_callable": true}, {"id": "$graphify-root$_scripts_test_execute_testcommitstep", "label": "TestCommitStep", "file_type": "code", "source_file": "scripts/test_execute.py", "source_location": "L385", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_scripts_test_execute_testcommitstep_test_two_phase_commit", "label": ".test_two_phase_commit()", "file_type": "code", "source_file": "scripts/test_execute.py", "source_location": "L386", "_callable": true}, {"id": "$graphify-root$_scripts_test_execute_testcommitstep_test_no_code_changes_skips_feat_commit", "label": ".test_no_code_changes_skips_feat_commit()", "file_type": "code", "source_file": "scripts/test_execute.py", "source_location": "L402", "_callable": true}, {"id": "$graphify-root$_scripts_test_execute_testinvokeclaude", "label": "TestInvokeClaude", "file_type": "code", "source_file": "scripts/test_execute.py", "source_location": "L426", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_scripts_test_execute_testinvokeclaude_test_invokes_claude_with_correct_args", "label": ".test_invokes_claude_with_correct_args()", "file_type": "code", "source_file": "scripts/test_execute.py", "source_location": "L427", "_callable": true}, {"id": "$graphify-root$_scripts_test_execute_testinvokeclaude_test_saves_output_json", "label": ".test_saves_output_json()", "file_type": "code", "source_file": "scripts/test_execute.py", "source_location": "L443", "_callable": true}, {"id": "$graphify-root$_scripts_test_execute_testinvokeclaude_test_nonexistent_step_file_exits", "label": ".test_nonexistent_step_file_exits()", "file_type": "code", "source_file": "scripts/test_execute.py", "source_location": "L457", "_callable": true}, {"id": "$graphify-root$_scripts_test_execute_testinvokeclaude_test_timeout_is_1800", "label": ".test_timeout_is_1800()", "file_type": "code", "source_file": "scripts/test_execute.py", "source_location": "L463", "_callable": true}, {"id": "$graphify-root$_scripts_test_execute_testprogressindicator", "label": "TestProgressIndicator", "file_type": "code", "source_file": "scripts/test_execute.py", "source_location": "L477", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_scripts_test_execute_testprogressindicator_test_context_manager", "label": ".test_context_manager()", "file_type": "code", "source_file": "scripts/test_execute.py", "source_location": "L478", "_callable": true}, {"id": "$graphify-root$_scripts_test_execute_testprogressindicator_test_elapsed_increases", "label": ".test_elapsed_increases()", "file_type": "code", "source_file": "scripts/test_execute.py", "source_location": "L484", "_callable": true}, {"id": "$graphify-root$_scripts_test_execute_testmaincli", "label": "TestMainCli", "file_type": "code", "source_file": "scripts/test_execute.py", "source_location": "L495", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_scripts_test_execute_testmaincli_test_no_args_exits", "label": ".test_no_args_exits()", "file_type": "code", "source_file": "scripts/test_execute.py", "source_location": "L496", "_callable": true}, {"id": "$graphify-root$_scripts_test_execute_testmaincli_test_invalid_phase_dir_exits", "label": ".test_invalid_phase_dir_exits()", "file_type": "code", "source_file": "scripts/test_execute.py", "source_location": "L502", "_callable": true}, {"id": "$graphify-root$_scripts_test_execute_testmaincli_test_missing_index_exits", "label": ".test_missing_index_exits()", "file_type": "code", "source_file": "scripts/test_execute.py", "source_location": "L509", "_callable": true}, {"id": "$graphify-root$_scripts_test_execute_testcheckblockers", "label": "TestCheckBlockers", "file_type": "code", "source_file": "scripts/test_execute.py", "source_location": "L522", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_scripts_test_execute_testcheckblockers_make_executor_with_steps", "label": "._make_executor_with_steps()", "file_type": "code", "source_file": "scripts/test_execute.py", "source_location": "L523", "_callable": true}, {"id": "$graphify-root$_scripts_test_execute_testcheckblockers_test_error_step_exits_1", "label": ".test_error_step_exits_1()", "file_type": "code", "source_file": "scripts/test_execute.py", "source_location": "L541", "_callable": true}, {"id": "$graphify-root$_scripts_test_execute_testcheckblockers_test_blocked_step_exits_2", "label": ".test_blocked_step_exits_2()", "file_type": "code", "source_file": "scripts/test_execute.py", "source_location": "L551", "_callable": true}, {"id": "$graphify-root$_scripts_test_execute_rationale_1", "label": "execute.py \ub9ac\ud329\ud130\ub9c1 \uc548\uc804\ub9dd \ud14c\uc2a4\ud2b8. \ub9ac\ud329\ud130\ub9c1 \uc804\ud6c4 \ub3d9\uc791\uc774 \ub3d9\uc77c\ud55c\uc9c0 \uac80\uc99d\ud55c\ub2e4.", "file_type": "rationale", "source_file": "scripts/test_execute.py", "source_location": "L1"}, {"id": "$graphify-root$_scripts_test_execute_rationale_27", "label": "phases/, CLAUDE.md, docs/ \ub97c \uac16\ucd98 \uc784\uc2dc \ud504\ub85c\uc81d\ud2b8 \uad6c\uc870.", "file_type": "rationale", "source_file": "scripts/test_execute.py", "source_location": "L27"}, {"id": "$graphify-root$_scripts_test_execute_rationale_44", "label": "step 3\uac1c\ub97c \uac00\uc9c4 phase \ub514\ub809\ud1a0\ub9ac.", "file_type": "rationale", "source_file": "scripts/test_execute.py", "source_location": "L44"}, {"id": "$graphify-root$_scripts_test_execute_rationale_65", "label": "phases/index.json (top-level).", "file_type": "rationale", "source_file": "scripts/test_execute.py", "source_location": "L65"}, {"id": "$graphify-root$_scripts_test_execute_rationale_79", "label": "\ud14c\uc2a4\ud2b8\uc6a9 StepExecutor \uc778\uc2a4\ud134\uc2a4. git \ud638\ucd9c\uc740 \ubcc4\ub3c4 mock \ud544\uc694.", "file_type": "rationale", "source_file": "scripts/test_execute.py", "source_location": "L79"}], "edges": [{"source": "$graphify-root$_scripts_test_execute_py", "target": "json", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/test_execute.py", "source_location": "L6", "weight": 1.0}, {"source": "$graphify-root$_scripts_test_execute_py", "target": "os", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/test_execute.py", "source_location": "L7", "weight": 1.0}, {"source": "$graphify-root$_scripts_test_execute_py", "target": "subprocess", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/test_execute.py", "source_location": "L8", "weight": 1.0}, {"source": "$graphify-root$_scripts_test_execute_py", "target": "sys", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/test_execute.py", "source_location": "L9", "weight": 1.0}, {"source": "$graphify-root$_scripts_test_execute_py", "target": "textwrap", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/test_execute.py", "source_location": "L10", "weight": 1.0}, {"source": "$graphify-root$_scripts_test_execute_py", "target": "datetime", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/test_execute.py", "source_location": "L11", "weight": 1.0}, {"source": "$graphify-root$_scripts_test_execute_py", "target": "pathlib", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/test_execute.py", "source_location": "L12", "weight": 1.0}, {"source": "$graphify-root$_scripts_test_execute_py", "target": "unittest_mock", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/test_execute.py", "source_location": "L13", "weight": 1.0}, {"source": "$graphify-root$_scripts_test_execute_py", "target": "pytest", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/test_execute.py", "source_location": "L15", "weight": 1.0}, {"source": "$graphify-root$_scripts_test_execute_py", "target": "execute", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/test_execute.py", "source_location": "L18", "weight": 1.0, "local_alias": "ex"}, {"source": "$graphify-root$_scripts_test_execute_tmp_project", "target": "fixture", "relation": "references", "confidence": "EXTRACTED", "source_file": "scripts/test_execute.py", "source_location": "L25", "weight": 1.0, "context": "decorator"}, {"source": "$graphify-root$_scripts_test_execute_py", "target": "$graphify-root$_scripts_test_execute_tmp_project", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/test_execute.py", "source_location": "L26", "weight": 1.0}, {"source": "$graphify-root$_scripts_test_execute_phase_dir", "target": "fixture", "relation": "references", "confidence": "EXTRACTED", "source_file": "scripts/test_execute.py", "source_location": "L42", "weight": 1.0, "context": "decorator"}, {"source": "$graphify-root$_scripts_test_execute_py", "target": "$graphify-root$_scripts_test_execute_phase_dir", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/test_execute.py", "source_location": "L43", "weight": 1.0}, {"source": "$graphify-root$_scripts_test_execute_top_index", "target": "fixture", "relation": "references", "confidence": "EXTRACTED", "source_file": "scripts/test_execute.py", "source_location": "L63", "weight": 1.0, "context": "decorator"}, {"source": "$graphify-root$_scripts_test_execute_py", "target": "$graphify-root$_scripts_test_execute_top_index", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/test_execute.py", "source_location": "L64", "weight": 1.0}, {"source": "$graphify-root$_scripts_test_execute_executor", "target": "fixture", "relation": "references", "confidence": "EXTRACTED", "source_file": "scripts/test_execute.py", "source_location": "L77", "weight": 1.0, "context": "decorator"}, {"source": "$graphify-root$_scripts_test_execute_py", "target": "$graphify-root$_scripts_test_execute_executor", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/test_execute.py", "source_location": "L78", "weight": 1.0}, {"source": "$graphify-root$_scripts_test_execute_py", "target": "$graphify-root$_scripts_test_execute_teststamp", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/test_execute.py", "source_location": "L96", "weight": 1.0}, {"source": "$graphify-root$_scripts_test_execute_teststamp", "target": "$graphify-root$_scripts_test_execute_teststamp_test_returns_kst_timestamp", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/test_execute.py", "source_location": "L97", "weight": 1.0}, {"source": "$graphify-root$_scripts_test_execute_teststamp", "target": "$graphify-root$_scripts_test_execute_teststamp_test_format_is_iso", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/test_execute.py", "source_location": "L101", "weight": 1.0}, {"source": "$graphify-root$_scripts_test_execute_teststamp", "target": "$graphify-root$_scripts_test_execute_teststamp_test_is_current_time", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/test_execute.py", "source_location": "L106", "weight": 1.0}, {"source": "$graphify-root$_scripts_test_execute_py", "target": "$graphify-root$_scripts_test_execute_testjsonhelpers", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/test_execute.py", "source_location": "L118", "weight": 1.0}, {"source": "$graphify-root$_scripts_test_execute_testjsonhelpers", "target": "$graphify-root$_scripts_test_execute_testjsonhelpers_test_roundtrip", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/test_execute.py", "source_location": "L119", "weight": 1.0}, {"source": "$graphify-root$_scripts_test_execute_testjsonhelpers", "target": "$graphify-root$_scripts_test_execute_testjsonhelpers_test_save_ensures_ascii_false", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/test_execute.py", "source_location": "L126", "weight": 1.0}, {"source": "$graphify-root$_scripts_test_execute_testjsonhelpers", "target": "$graphify-root$_scripts_test_execute_testjsonhelpers_test_save_indented", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/test_execute.py", "source_location": "L133", "weight": 1.0}, {"source": "$graphify-root$_scripts_test_execute_testjsonhelpers", "target": "$graphify-root$_scripts_test_execute_testjsonhelpers_test_load_nonexistent_raises", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/test_execute.py", "source_location": "L139", "weight": 1.0}, {"source": "$graphify-root$_scripts_test_execute_py", "target": "$graphify-root$_scripts_test_execute_testloadguardrails", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/test_execute.py", "source_location": "L148", "weight": 1.0}, {"source": "$graphify-root$_scripts_test_execute_testloadguardrails", "target": "$graphify-root$_scripts_test_execute_testloadguardrails_test_loads_claude_md_and_docs", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/test_execute.py", "source_location": "L149", "weight": 1.0}, {"source": "$graphify-root$_scripts_test_execute_testloadguardrails", "target": "$graphify-root$_scripts_test_execute_testloadguardrails_test_sections_separated_by_divider", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/test_execute.py", "source_location": "L157", "weight": 1.0}, {"source": "$graphify-root$_scripts_test_execute_testloadguardrails", "target": "$graphify-root$_scripts_test_execute_testloadguardrails_test_docs_sorted_alphabetically", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/test_execute.py", "source_location": "L162", "weight": 1.0}, {"source": "$graphify-root$_scripts_test_execute_testloadguardrails", "target": "$graphify-root$_scripts_test_execute_testloadguardrails_test_no_claude_md", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/test_execute.py", "source_location": "L169", "weight": 1.0}, {"source": "$graphify-root$_scripts_test_execute_testloadguardrails", "target": "$graphify-root$_scripts_test_execute_testloadguardrails_test_no_docs_dir", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/test_execute.py", "source_location": "L176", "weight": 1.0}, {"source": "$graphify-root$_scripts_test_execute_testloadguardrails", "target": "$graphify-root$_scripts_test_execute_testloadguardrails_test_empty_project", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/test_execute.py", "source_location": "L184", "weight": 1.0}, {"source": "$graphify-root$_scripts_test_execute_py", "target": "$graphify-root$_scripts_test_execute_testbuildstepcontext", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/test_execute.py", "source_location": "L200", "weight": 1.0}, {"source": "$graphify-root$_scripts_test_execute_testbuildstepcontext", "target": "$graphify-root$_scripts_test_execute_testbuildstepcontext_test_includes_completed_with_summary", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/test_execute.py", "source_location": "L201", "weight": 1.0}, {"source": "$graphify-root$_scripts_test_execute_testbuildstepcontext", "target": "$graphify-root$_scripts_test_execute_testbuildstepcontext_test_excludes_pending", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/test_execute.py", "source_location": "L207", "weight": 1.0}, {"source": "$graphify-root$_scripts_test_execute_testbuildstepcontext", "target": "$graphify-root$_scripts_test_execute_testbuildstepcontext_test_excludes_completed_without_summary", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/test_execute.py", "source_location": "L212", "weight": 1.0}, {"source": "$graphify-root$_scripts_test_execute_testbuildstepcontext", "target": "$graphify-root$_scripts_test_execute_testbuildstepcontext_test_empty_when_no_completed", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/test_execute.py", "source_location": "L219", "weight": 1.0}, {"source": "$graphify-root$_scripts_test_execute_testbuildstepcontext", "target": "$graphify-root$_scripts_test_execute_testbuildstepcontext_test_has_header", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/test_execute.py", "source_location": "L224", "weight": 1.0}, {"source": "$graphify-root$_scripts_test_execute_py", "target": "$graphify-root$_scripts_test_execute_testbuildpreamble", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/test_execute.py", "source_location": "L234", "weight": 1.0}, {"source": "$graphify-root$_scripts_test_execute_testbuildpreamble", "target": "$graphify-root$_scripts_test_execute_testbuildpreamble_test_includes_project_name", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/test_execute.py", "source_location": "L235", "weight": 1.0}, {"source": "$graphify-root$_scripts_test_execute_testbuildpreamble", "target": "$graphify-root$_scripts_test_execute_testbuildpreamble_test_includes_guardrails", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/test_execute.py", "source_location": "L239", "weight": 1.0}, {"source": "$graphify-root$_scripts_test_execute_testbuildpreamble", "target": "$graphify-root$_scripts_test_execute_testbuildpreamble_test_includes_step_context", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/test_execute.py", "source_location": "L243", "weight": 1.0}, {"source": "$graphify-root$_scripts_test_execute_testbuildpreamble", "target": "$graphify-root$_scripts_test_execute_testbuildpreamble_test_includes_commit_example", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/test_execute.py", "source_location": "L248", "weight": 1.0}, {"source": "$graphify-root$_scripts_test_execute_testbuildpreamble", "target": "$graphify-root$_scripts_test_execute_testbuildpreamble_test_includes_rules", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/test_execute.py", "source_location": "L252", "weight": 1.0}, {"source": "$graphify-root$_scripts_test_execute_testbuildpreamble", "target": "$graphify-root$_scripts_test_execute_testbuildpreamble_test_no_retry_section_by_default", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/test_execute.py", "source_location": "L257", "weight": 1.0}, {"source": "$graphify-root$_scripts_test_execute_testbuildpreamble", "target": "$graphify-root$_scripts_test_execute_testbuildpreamble_test_retry_section_with_prev_error", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/test_execute.py", "source_location": "L261", "weight": 1.0}, {"source": "$graphify-root$_scripts_test_execute_testbuildpreamble", "target": "$graphify-root$_scripts_test_execute_testbuildpreamble_test_includes_max_retries", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/test_execute.py", "source_location": "L266", "weight": 1.0}, {"source": "$graphify-root$_scripts_test_execute_testbuildpreamble", "target": "$graphify-root$_scripts_test_execute_testbuildpreamble_test_includes_index_path", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/test_execute.py", "source_location": "L270", "weight": 1.0}, {"source": "$graphify-root$_scripts_test_execute_py", "target": "$graphify-root$_scripts_test_execute_testupdatetopindex", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/test_execute.py", "source_location": "L279", "weight": 1.0}, {"source": "$graphify-root$_scripts_test_execute_testupdatetopindex", "target": "$graphify-root$_scripts_test_execute_testupdatetopindex_test_completed", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/test_execute.py", "source_location": "L280", "weight": 1.0}, {"source": "$graphify-root$_scripts_test_execute_testupdatetopindex", "target": "$graphify-root$_scripts_test_execute_testupdatetopindex_test_error", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/test_execute.py", "source_location": "L288", "weight": 1.0}, {"source": "$graphify-root$_scripts_test_execute_testupdatetopindex", "target": "$graphify-root$_scripts_test_execute_testupdatetopindex_test_blocked", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/test_execute.py", "source_location": "L296", "weight": 1.0}, {"source": "$graphify-root$_scripts_test_execute_testupdatetopindex", "target": "$graphify-root$_scripts_test_execute_testupdatetopindex_test_other_phases_unchanged", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/test_execute.py", "source_location": "L304", "weight": 1.0}, {"source": "$graphify-root$_scripts_test_execute_testupdatetopindex", "target": "$graphify-root$_scripts_test_execute_testupdatetopindex_test_nonexistent_dir_is_noop", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/test_execute.py", "source_location": "L311", "weight": 1.0}, {"source": "$graphify-root$_scripts_test_execute_testupdatetopindex", "target": "$graphify-root$_scripts_test_execute_testupdatetopindex_test_no_top_index_file", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/test_execute.py", "source_location": "L320", "weight": 1.0}, {"source": "$graphify-root$_scripts_test_execute_py", "target": "$graphify-root$_scripts_test_execute_testcheckoutbranch", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/test_execute.py", "source_location": "L329", "weight": 1.0}, {"source": "$graphify-root$_scripts_test_execute_testcheckoutbranch", "target": "$graphify-root$_scripts_test_execute_testcheckoutbranch_mock_git", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/test_execute.py", "source_location": "L330", "weight": 1.0}, {"source": "$graphify-root$_scripts_test_execute_testcheckoutbranch", "target": "$graphify-root$_scripts_test_execute_testcheckoutbranch_test_already_on_branch", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/test_execute.py", "source_location": "L340", "weight": 1.0}, {"source": "$graphify-root$_scripts_test_execute_testcheckoutbranch", "target": "$graphify-root$_scripts_test_execute_testcheckoutbranch_test_branch_exists_checkout", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/test_execute.py", "source_location": "L346", "weight": 1.0}, {"source": "$graphify-root$_scripts_test_execute_testcheckoutbranch", "target": "$graphify-root$_scripts_test_execute_testcheckoutbranch_test_branch_not_exists_create", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/test_execute.py", "source_location": "L354", "weight": 1.0}, {"source": "$graphify-root$_scripts_test_execute_testcheckoutbranch", "target": "$graphify-root$_scripts_test_execute_testcheckoutbranch_test_checkout_fails_exits", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/test_execute.py", "source_location": "L362", "weight": 1.0}, {"source": "$graphify-root$_scripts_test_execute_testcheckoutbranch", "target": "$graphify-root$_scripts_test_execute_testcheckoutbranch_test_no_git_exits", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/test_execute.py", "source_location": "L372", "weight": 1.0}, {"source": "$graphify-root$_scripts_test_execute_py", "target": "$graphify-root$_scripts_test_execute_testcommitstep", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/test_execute.py", "source_location": "L385", "weight": 1.0}, {"source": "$graphify-root$_scripts_test_execute_testcommitstep", "target": "$graphify-root$_scripts_test_execute_testcommitstep_test_two_phase_commit", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/test_execute.py", "source_location": "L386", "weight": 1.0}, {"source": "$graphify-root$_scripts_test_execute_testcommitstep", "target": "$graphify-root$_scripts_test_execute_testcommitstep_test_no_code_changes_skips_feat_commit", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/test_execute.py", "source_location": "L402", "weight": 1.0}, {"source": "$graphify-root$_scripts_test_execute_py", "target": "$graphify-root$_scripts_test_execute_testinvokeclaude", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/test_execute.py", "source_location": "L426", "weight": 1.0}, {"source": "$graphify-root$_scripts_test_execute_testinvokeclaude", "target": "$graphify-root$_scripts_test_execute_testinvokeclaude_test_invokes_claude_with_correct_args", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/test_execute.py", "source_location": "L427", "weight": 1.0}, {"source": "$graphify-root$_scripts_test_execute_testinvokeclaude", "target": "$graphify-root$_scripts_test_execute_testinvokeclaude_test_saves_output_json", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/test_execute.py", "source_location": "L443", "weight": 1.0}, {"source": "$graphify-root$_scripts_test_execute_testinvokeclaude", "target": "$graphify-root$_scripts_test_execute_testinvokeclaude_test_nonexistent_step_file_exits", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/test_execute.py", "source_location": "L457", "weight": 1.0}, {"source": "$graphify-root$_scripts_test_execute_testinvokeclaude", "target": "$graphify-root$_scripts_test_execute_testinvokeclaude_test_timeout_is_1800", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/test_execute.py", "source_location": "L463", "weight": 1.0}, {"source": "$graphify-root$_scripts_test_execute_py", "target": "$graphify-root$_scripts_test_execute_testprogressindicator", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/test_execute.py", "source_location": "L477", "weight": 1.0}, {"source": "$graphify-root$_scripts_test_execute_testprogressindicator", "target": "$graphify-root$_scripts_test_execute_testprogressindicator_test_context_manager", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/test_execute.py", "source_location": "L478", "weight": 1.0}, {"source": "$graphify-root$_scripts_test_execute_testprogressindicator", "target": "$graphify-root$_scripts_test_execute_testprogressindicator_test_elapsed_increases", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/test_execute.py", "source_location": "L484", "weight": 1.0}, {"source": "$graphify-root$_scripts_test_execute_py", "target": "$graphify-root$_scripts_test_execute_testmaincli", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/test_execute.py", "source_location": "L495", "weight": 1.0}, {"source": "$graphify-root$_scripts_test_execute_testmaincli", "target": "$graphify-root$_scripts_test_execute_testmaincli_test_no_args_exits", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/test_execute.py", "source_location": "L496", "weight": 1.0}, {"source": "$graphify-root$_scripts_test_execute_testmaincli", "target": "$graphify-root$_scripts_test_execute_testmaincli_test_invalid_phase_dir_exits", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/test_execute.py", "source_location": "L502", "weight": 1.0}, {"source": "$graphify-root$_scripts_test_execute_testmaincli", "target": "$graphify-root$_scripts_test_execute_testmaincli_test_missing_index_exits", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/test_execute.py", "source_location": "L509", "weight": 1.0}, {"source": "$graphify-root$_scripts_test_execute_py", "target": "$graphify-root$_scripts_test_execute_testcheckblockers", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/test_execute.py", "source_location": "L522", "weight": 1.0}, {"source": "$graphify-root$_scripts_test_execute_testcheckblockers", "target": "$graphify-root$_scripts_test_execute_testcheckblockers_make_executor_with_steps", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/test_execute.py", "source_location": "L523", "weight": 1.0}, {"source": "$graphify-root$_scripts_test_execute_testcheckblockers", "target": "$graphify-root$_scripts_test_execute_testcheckblockers_test_error_step_exits_1", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/test_execute.py", "source_location": "L541", "weight": 1.0}, {"source": "$graphify-root$_scripts_test_execute_testcheckblockers", "target": "$graphify-root$_scripts_test_execute_testcheckblockers_test_blocked_step_exits_2", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/test_execute.py", "source_location": "L551", "weight": 1.0}, {"source": "$graphify-root$_scripts_test_execute_testcheckoutbranch_test_already_on_branch", "target": "$graphify-root$_scripts_test_execute_testcheckoutbranch_mock_git", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/test_execute.py", "source_location": "L341", "weight": 1.0}, {"source": "$graphify-root$_scripts_test_execute_testcheckoutbranch_test_branch_exists_checkout", "target": "$graphify-root$_scripts_test_execute_testcheckoutbranch_mock_git", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/test_execute.py", "source_location": "L347", "weight": 1.0}, {"source": "$graphify-root$_scripts_test_execute_testcheckoutbranch_test_branch_not_exists_create", "target": "$graphify-root$_scripts_test_execute_testcheckoutbranch_mock_git", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/test_execute.py", "source_location": "L355", "weight": 1.0}, {"source": "$graphify-root$_scripts_test_execute_testcheckoutbranch_test_checkout_fails_exits", "target": "$graphify-root$_scripts_test_execute_testcheckoutbranch_mock_git", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/test_execute.py", "source_location": "L363", "weight": 1.0}, {"source": "$graphify-root$_scripts_test_execute_testcheckoutbranch_test_no_git_exits", "target": "$graphify-root$_scripts_test_execute_testcheckoutbranch_mock_git", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/test_execute.py", "source_location": "L373", "weight": 1.0}, {"source": "$graphify-root$_scripts_test_execute_testcheckblockers_test_error_step_exits_1", "target": "$graphify-root$_scripts_test_execute_testcheckblockers_make_executor_with_steps", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/test_execute.py", "source_location": "L546", "weight": 1.0}, {"source": "$graphify-root$_scripts_test_execute_testcheckblockers_test_blocked_step_exits_2", "target": "$graphify-root$_scripts_test_execute_testcheckblockers_make_executor_with_steps", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/test_execute.py", "source_location": "L556", "weight": 1.0}, {"source": "$graphify-root$_scripts_test_execute_rationale_1", "target": "$graphify-root$_scripts_test_execute_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/test_execute.py", "source_location": "L1", "weight": 1.0}, {"source": "$graphify-root$_scripts_test_execute_rationale_27", "target": "$graphify-root$_scripts_test_execute_tmp_project", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/test_execute.py", "source_location": "L27", "weight": 1.0}, {"source": "$graphify-root$_scripts_test_execute_rationale_44", "target": "$graphify-root$_scripts_test_execute_phase_dir", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/test_execute.py", "source_location": "L44", "weight": 1.0}, {"source": "$graphify-root$_scripts_test_execute_rationale_65", "target": "$graphify-root$_scripts_test_execute_top_index", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/test_execute.py", "source_location": "L65", "weight": 1.0}, {"source": "$graphify-root$_scripts_test_execute_rationale_79", "target": "$graphify-root$_scripts_test_execute_executor", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/test_execute.py", "source_location": "L79", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_scripts_test_execute_tmp_project", "callee": "mkdir", "is_member_call": true, "source_file": "scripts/test_execute.py", "source_location": "L29", "receiver": "phases_dir"}, {"caller_nid": "$graphify-root$_scripts_test_execute_tmp_project", "callee": "write_text", "is_member_call": true, "source_file": "scripts/test_execute.py", "source_location": "L32", "receiver": "claude_md"}, {"caller_nid": "$graphify-root$_scripts_test_execute_tmp_project", "callee": "mkdir", "is_member_call": true, "source_file": "scripts/test_execute.py", "source_location": "L35", "receiver": "docs_dir"}, {"caller_nid": "$graphify-root$_scripts_test_execute_tmp_project", "callee": "write_text", "is_member_call": true, "source_file": "scripts/test_execute.py", "source_location": "L36", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_test_execute_tmp_project", "callee": "write_text", "is_member_call": true, "source_file": "scripts/test_execute.py", "source_location": "L37", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_test_execute_phase_dir", "callee": "mkdir", "is_member_call": true, "source_file": "scripts/test_execute.py", "source_location": "L46", "receiver": "d"}, {"caller_nid": "$graphify-root$_scripts_test_execute_phase_dir", "callee": "write_text", "is_member_call": true, "source_file": "scripts/test_execute.py", "source_location": "L57", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_test_execute_phase_dir", "callee": "dumps", "is_member_call": true, "source_file": "scripts/test_execute.py", "source_location": "L57", "receiver": "json"}, {"caller_nid": "$graphify-root$_scripts_test_execute_phase_dir", "callee": "write_text", "is_member_call": true, "source_file": "scripts/test_execute.py", "source_location": "L58", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_test_execute_top_index", "callee": "write_text", "is_member_call": true, "source_file": "scripts/test_execute.py", "source_location": "L73", "receiver": "p"}, {"caller_nid": "$graphify-root$_scripts_test_execute_top_index", "callee": "dumps", "is_member_call": true, "source_file": "scripts/test_execute.py", "source_location": "L73", "receiver": "json"}, {"caller_nid": "$graphify-root$_scripts_test_execute_executor", "callee": "object", "is_member_call": true, "source_file": "scripts/test_execute.py", "source_location": "L80", "receiver": "patch"}, {"caller_nid": "$graphify-root$_scripts_test_execute_executor", "callee": "ex", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/test_execute.py", "source_location": "L80"}, {"caller_nid": "$graphify-root$_scripts_test_execute_executor", "callee": "StepExecutor", "is_member_call": true, "source_file": "scripts/test_execute.py", "source_location": "L81", "receiver": "ex"}, {"caller_nid": "$graphify-root$_scripts_test_execute_teststamp_test_returns_kst_timestamp", "callee": "_stamp", "is_member_call": true, "source_file": "scripts/test_execute.py", "source_location": "L98", "receiver": "executor"}, {"caller_nid": "$graphify-root$_scripts_test_execute_teststamp_test_format_is_iso", "callee": "_stamp", "is_member_call": true, "source_file": "scripts/test_execute.py", "source_location": "L102", "receiver": "executor"}, {"caller_nid": "$graphify-root$_scripts_test_execute_teststamp_test_format_is_iso", "callee": "strptime", "is_member_call": true, "source_file": "scripts/test_execute.py", "source_location": "L103", "receiver": "datetime"}, {"caller_nid": "$graphify-root$_scripts_test_execute_teststamp_test_is_current_time", "callee": "replace", "is_member_call": true, "source_file": "scripts/test_execute.py", "source_location": "L107", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_test_execute_teststamp_test_is_current_time", "callee": "now", "is_member_call": true, "source_file": "scripts/test_execute.py", "source_location": "L107", "receiver": "datetime"}, {"caller_nid": "$graphify-root$_scripts_test_execute_teststamp_test_is_current_time", "callee": "_stamp", "is_member_call": true, "source_file": "scripts/test_execute.py", "source_location": "L108", "receiver": "executor"}, {"caller_nid": "$graphify-root$_scripts_test_execute_teststamp_test_is_current_time", "callee": "replace", "is_member_call": true, "source_file": "scripts/test_execute.py", "source_location": "L109", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_test_execute_teststamp_test_is_current_time", "callee": "now", "is_member_call": true, "source_file": "scripts/test_execute.py", "source_location": "L109", "receiver": "datetime"}, {"caller_nid": "$graphify-root$_scripts_test_execute_teststamp_test_is_current_time", "callee": "timedelta", "is_member_call": false, "source_file": "scripts/test_execute.py", "source_location": "L109", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_test_execute_teststamp_test_is_current_time", "callee": "strptime", "is_member_call": true, "source_file": "scripts/test_execute.py", "source_location": "L110", "receiver": "datetime"}, {"caller_nid": "$graphify-root$_scripts_test_execute_testjsonhelpers_test_roundtrip", "callee": "_write_json", "is_member_call": true, "source_file": "scripts/test_execute.py", "source_location": "L122", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_test_execute_testjsonhelpers_test_roundtrip", "callee": "_read_json", "is_member_call": true, "source_file": "scripts/test_execute.py", "source_location": "L123", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_test_execute_testjsonhelpers_test_save_ensures_ascii_false", "callee": "_write_json", "is_member_call": true, "source_file": "scripts/test_execute.py", "source_location": "L128", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_test_execute_testjsonhelpers_test_save_ensures_ascii_false", "callee": "read_text", "is_member_call": true, "source_file": "scripts/test_execute.py", "source_location": "L129", "receiver": "p"}, {"caller_nid": "$graphify-root$_scripts_test_execute_testjsonhelpers_test_save_indented", "callee": "_write_json", "is_member_call": true, "source_file": "scripts/test_execute.py", "source_location": "L135", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_test_execute_testjsonhelpers_test_save_indented", "callee": "read_text", "is_member_call": true, "source_file": "scripts/test_execute.py", "source_location": "L136", "receiver": "p"}, {"caller_nid": "$graphify-root$_scripts_test_execute_testjsonhelpers_test_load_nonexistent_raises", "callee": "raises", "is_member_call": true, "source_file": "scripts/test_execute.py", "source_location": "L140", "receiver": "pytest"}, {"caller_nid": "$graphify-root$_scripts_test_execute_testjsonhelpers_test_load_nonexistent_raises", "callee": "FileNotFoundError", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/test_execute.py", "source_location": "L140"}, {"caller_nid": "$graphify-root$_scripts_test_execute_testjsonhelpers_test_load_nonexistent_raises", "callee": "_read_json", "is_member_call": true, "source_file": "scripts/test_execute.py", "source_location": "L141", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_test_execute_testloadguardrails_test_loads_claude_md_and_docs", "callee": "object", "is_member_call": true, "source_file": "scripts/test_execute.py", "source_location": "L150", "receiver": "patch"}, {"caller_nid": "$graphify-root$_scripts_test_execute_testloadguardrails_test_loads_claude_md_and_docs", "callee": "ex", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/test_execute.py", "source_location": "L150"}, {"caller_nid": "$graphify-root$_scripts_test_execute_testloadguardrails_test_loads_claude_md_and_docs", "callee": "_load_guardrails", "is_member_call": true, "source_file": "scripts/test_execute.py", "source_location": "L151", "receiver": "executor"}, {"caller_nid": "$graphify-root$_scripts_test_execute_testloadguardrails_test_sections_separated_by_divider", "callee": "object", "is_member_call": true, "source_file": "scripts/test_execute.py", "source_location": "L158", "receiver": "patch"}, {"caller_nid": "$graphify-root$_scripts_test_execute_testloadguardrails_test_sections_separated_by_divider", "callee": "ex", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/test_execute.py", "source_location": "L158"}, {"caller_nid": "$graphify-root$_scripts_test_execute_testloadguardrails_test_sections_separated_by_divider", "callee": "_load_guardrails", "is_member_call": true, "source_file": "scripts/test_execute.py", "source_location": "L159", "receiver": "executor"}, {"caller_nid": "$graphify-root$_scripts_test_execute_testloadguardrails_test_docs_sorted_alphabetically", "callee": "object", "is_member_call": true, "source_file": "scripts/test_execute.py", "source_location": "L163", "receiver": "patch"}, {"caller_nid": "$graphify-root$_scripts_test_execute_testloadguardrails_test_docs_sorted_alphabetically", "callee": "ex", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/test_execute.py", "source_location": "L163"}, {"caller_nid": "$graphify-root$_scripts_test_execute_testloadguardrails_test_docs_sorted_alphabetically", "callee": "_load_guardrails", "is_member_call": true, "source_file": "scripts/test_execute.py", "source_location": "L164", "receiver": "executor"}, {"caller_nid": "$graphify-root$_scripts_test_execute_testloadguardrails_test_docs_sorted_alphabetically", "callee": "index", "is_member_call": true, "source_file": "scripts/test_execute.py", "source_location": "L165", "receiver": "result"}, {"caller_nid": "$graphify-root$_scripts_test_execute_testloadguardrails_test_docs_sorted_alphabetically", "callee": "index", "is_member_call": true, "source_file": "scripts/test_execute.py", "source_location": "L166", "receiver": "result"}, {"caller_nid": "$graphify-root$_scripts_test_execute_testloadguardrails_test_no_claude_md", "callee": "unlink", "is_member_call": true, "source_file": "scripts/test_execute.py", "source_location": "L170", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_test_execute_testloadguardrails_test_no_claude_md", "callee": "object", "is_member_call": true, "source_file": "scripts/test_execute.py", "source_location": "L171", "receiver": "patch"}, {"caller_nid": "$graphify-root$_scripts_test_execute_testloadguardrails_test_no_claude_md", "callee": "ex", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/test_execute.py", "source_location": "L171"}, {"caller_nid": "$graphify-root$_scripts_test_execute_testloadguardrails_test_no_claude_md", "callee": "_load_guardrails", "is_member_call": true, "source_file": "scripts/test_execute.py", "source_location": "L172", "receiver": "executor"}, {"caller_nid": "$graphify-root$_scripts_test_execute_testloadguardrails_test_no_docs_dir", "callee": "rmtree", "is_member_call": true, "source_file": "scripts/test_execute.py", "source_location": "L178", "receiver": "shutil"}, {"caller_nid": "$graphify-root$_scripts_test_execute_testloadguardrails_test_no_docs_dir", "callee": "object", "is_member_call": true, "source_file": "scripts/test_execute.py", "source_location": "L179", "receiver": "patch"}, {"caller_nid": "$graphify-root$_scripts_test_execute_testloadguardrails_test_no_docs_dir", "callee": "ex", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/test_execute.py", "source_location": "L179"}, {"caller_nid": "$graphify-root$_scripts_test_execute_testloadguardrails_test_no_docs_dir", "callee": "_load_guardrails", "is_member_call": true, "source_file": "scripts/test_execute.py", "source_location": "L180", "receiver": "executor"}, {"caller_nid": "$graphify-root$_scripts_test_execute_testloadguardrails_test_empty_project", "callee": "object", "is_member_call": true, "source_file": "scripts/test_execute.py", "source_location": "L185", "receiver": "patch"}, {"caller_nid": "$graphify-root$_scripts_test_execute_testloadguardrails_test_empty_project", "callee": "ex", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/test_execute.py", "source_location": "L185"}, {"caller_nid": "$graphify-root$_scripts_test_execute_testloadguardrails_test_empty_project", "callee": "mkdir", "is_member_call": true, "source_file": "scripts/test_execute.py", "source_location": "L188", "receiver": "phases_dir"}, {"caller_nid": "$graphify-root$_scripts_test_execute_testloadguardrails_test_empty_project", "callee": "write_text", "is_member_call": true, "source_file": "scripts/test_execute.py", "source_location": "L190", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_test_execute_testloadguardrails_test_empty_project", "callee": "dumps", "is_member_call": true, "source_file": "scripts/test_execute.py", "source_location": "L190", "receiver": "json"}, {"caller_nid": "$graphify-root$_scripts_test_execute_testloadguardrails_test_empty_project", "callee": "__new__", "is_member_call": true, "source_file": "scripts/test_execute.py", "source_location": "L191", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_test_execute_testloadguardrails_test_empty_project", "callee": "_load_guardrails", "is_member_call": true, "source_file": "scripts/test_execute.py", "source_location": "L192", "receiver": "inst"}, {"caller_nid": "$graphify-root$_scripts_test_execute_testbuildstepcontext_test_includes_completed_with_summary", "callee": "loads", "is_member_call": true, "source_file": "scripts/test_execute.py", "source_location": "L202", "receiver": "json"}, {"caller_nid": "$graphify-root$_scripts_test_execute_testbuildstepcontext_test_includes_completed_with_summary", "callee": "read_text", "is_member_call": true, "source_file": "scripts/test_execute.py", "source_location": "L202", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_test_execute_testbuildstepcontext_test_includes_completed_with_summary", "callee": "_build_step_context", "is_member_call": true, "source_file": "scripts/test_execute.py", "source_location": "L203", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_test_execute_testbuildstepcontext_test_excludes_pending", "callee": "loads", "is_member_call": true, "source_file": "scripts/test_execute.py", "source_location": "L208", "receiver": "json"}, {"caller_nid": "$graphify-root$_scripts_test_execute_testbuildstepcontext_test_excludes_pending", "callee": "read_text", "is_member_call": true, "source_file": "scripts/test_execute.py", "source_location": "L208", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_test_execute_testbuildstepcontext_test_excludes_pending", "callee": "_build_step_context", "is_member_call": true, "source_file": "scripts/test_execute.py", "source_location": "L209", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_test_execute_testbuildstepcontext_test_excludes_completed_without_summary", "callee": "loads", "is_member_call": true, "source_file": "scripts/test_execute.py", "source_location": "L213", "receiver": "json"}, {"caller_nid": "$graphify-root$_scripts_test_execute_testbuildstepcontext_test_excludes_completed_without_summary", "callee": "read_text", "is_member_call": true, "source_file": "scripts/test_execute.py", "source_location": "L213", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_test_execute_testbuildstepcontext_test_excludes_completed_without_summary", "callee": "_build_step_context", "is_member_call": true, "source_file": "scripts/test_execute.py", "source_location": "L215", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_test_execute_testbuildstepcontext_test_empty_when_no_completed", "callee": "_build_step_context", "is_member_call": true, "source_file": "scripts/test_execute.py", "source_location": "L221", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_test_execute_testbuildstepcontext_test_has_header", "callee": "loads", "is_member_call": true, "source_file": "scripts/test_execute.py", "source_location": "L225", "receiver": "json"}, {"caller_nid": "$graphify-root$_scripts_test_execute_testbuildstepcontext_test_has_header", "callee": "read_text", "is_member_call": true, "source_file": "scripts/test_execute.py", "source_location": "L225", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_test_execute_testbuildstepcontext_test_has_header", "callee": "_build_step_context", "is_member_call": true, "source_file": "scripts/test_execute.py", "source_location": "L226", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_test_execute_testbuildstepcontext_test_has_header", "callee": "startswith", "is_member_call": true, "source_file": "scripts/test_execute.py", "source_location": "L227", "receiver": "result"}, {"caller_nid": "$graphify-root$_scripts_test_execute_testbuildpreamble_test_includes_project_name", "callee": "_build_preamble", "is_member_call": true, "source_file": "scripts/test_execute.py", "source_location": "L236", "receiver": "executor"}, {"caller_nid": "$graphify-root$_scripts_test_execute_testbuildpreamble_test_includes_guardrails", "callee": "_build_preamble", "is_member_call": true, "source_file": "scripts/test_execute.py", "source_location": "L240", "receiver": "executor"}, {"caller_nid": "$graphify-root$_scripts_test_execute_testbuildpreamble_test_includes_step_context", "callee": "_build_preamble", "is_member_call": true, "source_file": "scripts/test_execute.py", "source_location": "L245", "receiver": "executor"}, {"caller_nid": "$graphify-root$_scripts_test_execute_testbuildpreamble_test_includes_commit_example", "callee": "_build_preamble", "is_member_call": true, "source_file": "scripts/test_execute.py", "source_location": "L249", "receiver": "executor"}, {"caller_nid": "$graphify-root$_scripts_test_execute_testbuildpreamble_test_includes_rules", "callee": "_build_preamble", "is_member_call": true, "source_file": "scripts/test_execute.py", "source_location": "L253", "receiver": "executor"}, {"caller_nid": "$graphify-root$_scripts_test_execute_testbuildpreamble_test_no_retry_section_by_default", "callee": "_build_preamble", "is_member_call": true, "source_file": "scripts/test_execute.py", "source_location": "L258", "receiver": "executor"}, {"caller_nid": "$graphify-root$_scripts_test_execute_testbuildpreamble_test_retry_section_with_prev_error", "callee": "_build_preamble", "is_member_call": true, "source_file": "scripts/test_execute.py", "source_location": "L262", "receiver": "executor"}, {"caller_nid": "$graphify-root$_scripts_test_execute_testbuildpreamble_test_includes_max_retries", "callee": "_build_preamble", "is_member_call": true, "source_file": "scripts/test_execute.py", "source_location": "L267", "receiver": "executor"}, {"caller_nid": "$graphify-root$_scripts_test_execute_testbuildpreamble_test_includes_index_path", "callee": "_build_preamble", "is_member_call": true, "source_file": "scripts/test_execute.py", "source_location": "L271", "receiver": "executor"}, {"caller_nid": "$graphify-root$_scripts_test_execute_testupdatetopindex_test_completed", "callee": "_update_top_index", "is_member_call": true, "source_file": "scripts/test_execute.py", "source_location": "L282", "receiver": "executor"}, {"caller_nid": "$graphify-root$_scripts_test_execute_testupdatetopindex_test_completed", "callee": "loads", "is_member_call": true, "source_file": "scripts/test_execute.py", "source_location": "L283", "receiver": "json"}, {"caller_nid": "$graphify-root$_scripts_test_execute_testupdatetopindex_test_completed", "callee": "read_text", "is_member_call": true, "source_file": "scripts/test_execute.py", "source_location": "L283", "receiver": "top_index"}, {"caller_nid": "$graphify-root$_scripts_test_execute_testupdatetopindex_test_error", "callee": "_update_top_index", "is_member_call": true, "source_file": "scripts/test_execute.py", "source_location": "L290", "receiver": "executor"}, {"caller_nid": "$graphify-root$_scripts_test_execute_testupdatetopindex_test_error", "callee": "loads", "is_member_call": true, "source_file": "scripts/test_execute.py", "source_location": "L291", "receiver": "json"}, {"caller_nid": "$graphify-root$_scripts_test_execute_testupdatetopindex_test_error", "callee": "read_text", "is_member_call": true, "source_file": "scripts/test_execute.py", "source_location": "L291", "receiver": "top_index"}, {"caller_nid": "$graphify-root$_scripts_test_execute_testupdatetopindex_test_blocked", "callee": "_update_top_index", "is_member_call": true, "source_file": "scripts/test_execute.py", "source_location": "L298", "receiver": "executor"}, {"caller_nid": "$graphify-root$_scripts_test_execute_testupdatetopindex_test_blocked", "callee": "loads", "is_member_call": true, "source_file": "scripts/test_execute.py", "source_location": "L299", "receiver": "json"}, {"caller_nid": "$graphify-root$_scripts_test_execute_testupdatetopindex_test_blocked", "callee": "read_text", "is_member_call": true, "source_file": "scripts/test_execute.py", "source_location": "L299", "receiver": "top_index"}, {"caller_nid": "$graphify-root$_scripts_test_execute_testupdatetopindex_test_other_phases_unchanged", "callee": "_update_top_index", "is_member_call": true, "source_file": "scripts/test_execute.py", "source_location": "L306", "receiver": "executor"}, {"caller_nid": "$graphify-root$_scripts_test_execute_testupdatetopindex_test_other_phases_unchanged", "callee": "loads", "is_member_call": true, "source_file": "scripts/test_execute.py", "source_location": "L307", "receiver": "json"}, {"caller_nid": "$graphify-root$_scripts_test_execute_testupdatetopindex_test_other_phases_unchanged", "callee": "read_text", "is_member_call": true, "source_file": "scripts/test_execute.py", "source_location": "L307", "receiver": "top_index"}, {"caller_nid": "$graphify-root$_scripts_test_execute_testupdatetopindex_test_nonexistent_dir_is_noop", "callee": "loads", "is_member_call": true, "source_file": "scripts/test_execute.py", "source_location": "L314", "receiver": "json"}, {"caller_nid": "$graphify-root$_scripts_test_execute_testupdatetopindex_test_nonexistent_dir_is_noop", "callee": "read_text", "is_member_call": true, "source_file": "scripts/test_execute.py", "source_location": "L314", "receiver": "top_index"}, {"caller_nid": "$graphify-root$_scripts_test_execute_testupdatetopindex_test_nonexistent_dir_is_noop", "callee": "_update_top_index", "is_member_call": true, "source_file": "scripts/test_execute.py", "source_location": "L315", "receiver": "executor"}, {"caller_nid": "$graphify-root$_scripts_test_execute_testupdatetopindex_test_nonexistent_dir_is_noop", "callee": "loads", "is_member_call": true, "source_file": "scripts/test_execute.py", "source_location": "L316", "receiver": "json"}, {"caller_nid": "$graphify-root$_scripts_test_execute_testupdatetopindex_test_nonexistent_dir_is_noop", "callee": "read_text", "is_member_call": true, "source_file": "scripts/test_execute.py", "source_location": "L316", "receiver": "top_index"}, {"caller_nid": "$graphify-root$_scripts_test_execute_testupdatetopindex_test_no_top_index_file", "callee": "_update_top_index", "is_member_call": true, "source_file": "scripts/test_execute.py", "source_location": "L322", "receiver": "executor"}, {"caller_nid": "$graphify-root$_scripts_test_execute_testcheckoutbranch_mock_git", "callee": "fake_git", "is_member_call": false, "indirect": true, "context": "assignment", "source_file": "scripts/test_execute.py", "source_location": "L338"}, {"caller_nid": "$graphify-root$_scripts_test_execute_testcheckoutbranch_test_already_on_branch", "callee": "MagicMock", "is_member_call": false, "source_file": "scripts/test_execute.py", "source_location": "L342", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_test_execute_testcheckoutbranch_test_already_on_branch", "callee": "_checkout_branch", "is_member_call": true, "source_file": "scripts/test_execute.py", "source_location": "L344", "receiver": "executor"}, {"caller_nid": "$graphify-root$_scripts_test_execute_testcheckoutbranch_test_branch_exists_checkout", "callee": "MagicMock", "is_member_call": false, "source_file": "scripts/test_execute.py", "source_location": "L348", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_test_execute_testcheckoutbranch_test_branch_exists_checkout", "callee": "MagicMock", "is_member_call": false, "source_file": "scripts/test_execute.py", "source_location": "L349", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_test_execute_testcheckoutbranch_test_branch_exists_checkout", "callee": "MagicMock", "is_member_call": false, "source_file": "scripts/test_execute.py", "source_location": "L350", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_test_execute_testcheckoutbranch_test_branch_exists_checkout", "callee": "_checkout_branch", "is_member_call": true, "source_file": "scripts/test_execute.py", "source_location": "L352", "receiver": "executor"}, {"caller_nid": "$graphify-root$_scripts_test_execute_testcheckoutbranch_test_branch_not_exists_create", "callee": "MagicMock", "is_member_call": false, "source_file": "scripts/test_execute.py", "source_location": "L356", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_test_execute_testcheckoutbranch_test_branch_not_exists_create", "callee": "MagicMock", "is_member_call": false, "source_file": "scripts/test_execute.py", "source_location": "L357", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_test_execute_testcheckoutbranch_test_branch_not_exists_create", "callee": "MagicMock", "is_member_call": false, "source_file": "scripts/test_execute.py", "source_location": "L358", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_test_execute_testcheckoutbranch_test_branch_not_exists_create", "callee": "_checkout_branch", "is_member_call": true, "source_file": "scripts/test_execute.py", "source_location": "L360", "receiver": "executor"}, {"caller_nid": "$graphify-root$_scripts_test_execute_testcheckoutbranch_test_checkout_fails_exits", "callee": "MagicMock", "is_member_call": false, "source_file": "scripts/test_execute.py", "source_location": "L364", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_test_execute_testcheckoutbranch_test_checkout_fails_exits", "callee": "MagicMock", "is_member_call": false, "source_file": "scripts/test_execute.py", "source_location": "L365", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_test_execute_testcheckoutbranch_test_checkout_fails_exits", "callee": "MagicMock", "is_member_call": false, "source_file": "scripts/test_execute.py", "source_location": "L366", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_test_execute_testcheckoutbranch_test_checkout_fails_exits", "callee": "raises", "is_member_call": true, "source_file": "scripts/test_execute.py", "source_location": "L368", "receiver": "pytest"}, {"caller_nid": "$graphify-root$_scripts_test_execute_testcheckoutbranch_test_checkout_fails_exits", "callee": "SystemExit", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/test_execute.py", "source_location": "L368"}, {"caller_nid": "$graphify-root$_scripts_test_execute_testcheckoutbranch_test_checkout_fails_exits", "callee": "_checkout_branch", "is_member_call": true, "source_file": "scripts/test_execute.py", "source_location": "L369", "receiver": "executor"}, {"caller_nid": "$graphify-root$_scripts_test_execute_testcheckoutbranch_test_no_git_exits", "callee": "MagicMock", "is_member_call": false, "source_file": "scripts/test_execute.py", "source_location": "L374", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_test_execute_testcheckoutbranch_test_no_git_exits", "callee": "raises", "is_member_call": true, "source_file": "scripts/test_execute.py", "source_location": "L376", "receiver": "pytest"}, {"caller_nid": "$graphify-root$_scripts_test_execute_testcheckoutbranch_test_no_git_exits", "callee": "SystemExit", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/test_execute.py", "source_location": "L376"}, {"caller_nid": "$graphify-root$_scripts_test_execute_testcheckoutbranch_test_no_git_exits", "callee": "_checkout_branch", "is_member_call": true, "source_file": "scripts/test_execute.py", "source_location": "L377", "receiver": "executor"}, {"caller_nid": "$graphify-root$_scripts_test_execute_testcommitstep_test_two_phase_commit", "callee": "fake_git", "is_member_call": false, "indirect": true, "context": "assignment", "source_file": "scripts/test_execute.py", "source_location": "L393"}, {"caller_nid": "$graphify-root$_scripts_test_execute_testcommitstep_test_two_phase_commit", "callee": "_commit_step", "is_member_call": true, "source_file": "scripts/test_execute.py", "source_location": "L395", "receiver": "executor"}, {"caller_nid": "$graphify-root$_scripts_test_execute_testcommitstep_test_no_code_changes_skips_feat_commit", "callee": "fake_git", "is_member_call": false, "indirect": true, "context": "assignment", "source_file": "scripts/test_execute.py", "source_location": "L413"}, {"caller_nid": "$graphify-root$_scripts_test_execute_testcommitstep_test_no_code_changes_skips_feat_commit", "callee": "_commit_step", "is_member_call": true, "source_file": "scripts/test_execute.py", "source_location": "L415", "receiver": "executor"}, {"caller_nid": "$graphify-root$_scripts_test_execute_testinvokeclaude_test_invokes_claude_with_correct_args", "callee": "MagicMock", "is_member_call": false, "source_file": "scripts/test_execute.py", "source_location": "L428", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_test_execute_testinvokeclaude_test_invokes_claude_with_correct_args", "callee": "patch", "is_member_call": false, "source_file": "scripts/test_execute.py", "source_location": "L432", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_test_execute_testinvokeclaude_test_invokes_claude_with_correct_args", "callee": "_invoke_claude", "is_member_call": true, "source_file": "scripts/test_execute.py", "source_location": "L433", "receiver": "executor"}, {"caller_nid": "$graphify-root$_scripts_test_execute_testinvokeclaude_test_saves_output_json", "callee": "MagicMock", "is_member_call": false, "source_file": "scripts/test_execute.py", "source_location": "L444", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_test_execute_testinvokeclaude_test_saves_output_json", "callee": "patch", "is_member_call": false, "source_file": "scripts/test_execute.py", "source_location": "L447", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_test_execute_testinvokeclaude_test_saves_output_json", "callee": "_invoke_claude", "is_member_call": true, "source_file": "scripts/test_execute.py", "source_location": "L448", "receiver": "executor"}, {"caller_nid": "$graphify-root$_scripts_test_execute_testinvokeclaude_test_saves_output_json", "callee": "exists", "is_member_call": true, "source_file": "scripts/test_execute.py", "source_location": "L451", "receiver": "output_file"}, {"caller_nid": "$graphify-root$_scripts_test_execute_testinvokeclaude_test_saves_output_json", "callee": "loads", "is_member_call": true, "source_file": "scripts/test_execute.py", "source_location": "L452", "receiver": "json"}, {"caller_nid": "$graphify-root$_scripts_test_execute_testinvokeclaude_test_saves_output_json", "callee": "read_text", "is_member_call": true, "source_file": "scripts/test_execute.py", "source_location": "L452", "receiver": "output_file"}, {"caller_nid": "$graphify-root$_scripts_test_execute_testinvokeclaude_test_nonexistent_step_file_exits", "callee": "raises", "is_member_call": true, "source_file": "scripts/test_execute.py", "source_location": "L459", "receiver": "pytest"}, {"caller_nid": "$graphify-root$_scripts_test_execute_testinvokeclaude_test_nonexistent_step_file_exits", "callee": "SystemExit", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/test_execute.py", "source_location": "L459"}, {"caller_nid": "$graphify-root$_scripts_test_execute_testinvokeclaude_test_nonexistent_step_file_exits", "callee": "_invoke_claude", "is_member_call": true, "source_file": "scripts/test_execute.py", "source_location": "L460", "receiver": "executor"}, {"caller_nid": "$graphify-root$_scripts_test_execute_testinvokeclaude_test_timeout_is_1800", "callee": "MagicMock", "is_member_call": false, "source_file": "scripts/test_execute.py", "source_location": "L464", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_test_execute_testinvokeclaude_test_timeout_is_1800", "callee": "patch", "is_member_call": false, "source_file": "scripts/test_execute.py", "source_location": "L467", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_test_execute_testinvokeclaude_test_timeout_is_1800", "callee": "_invoke_claude", "is_member_call": true, "source_file": "scripts/test_execute.py", "source_location": "L468", "receiver": "executor"}, {"caller_nid": "$graphify-root$_scripts_test_execute_testprogressindicator_test_context_manager", "callee": "progress_indicator", "is_member_call": true, "source_file": "scripts/test_execute.py", "source_location": "L480", "receiver": "ex"}, {"caller_nid": "$graphify-root$_scripts_test_execute_testprogressindicator_test_context_manager", "callee": "sleep", "is_member_call": true, "source_file": "scripts/test_execute.py", "source_location": "L481", "receiver": "time"}, {"caller_nid": "$graphify-root$_scripts_test_execute_testprogressindicator_test_elapsed_increases", "callee": "progress_indicator", "is_member_call": true, "source_file": "scripts/test_execute.py", "source_location": "L486", "receiver": "ex"}, {"caller_nid": "$graphify-root$_scripts_test_execute_testprogressindicator_test_elapsed_increases", "callee": "sleep", "is_member_call": true, "source_file": "scripts/test_execute.py", "source_location": "L487", "receiver": "time"}, {"caller_nid": "$graphify-root$_scripts_test_execute_testmaincli_test_no_args_exits", "callee": "patch", "is_member_call": false, "source_file": "scripts/test_execute.py", "source_location": "L497", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_test_execute_testmaincli_test_no_args_exits", "callee": "raises", "is_member_call": true, "source_file": "scripts/test_execute.py", "source_location": "L498", "receiver": "pytest"}, {"caller_nid": "$graphify-root$_scripts_test_execute_testmaincli_test_no_args_exits", "callee": "SystemExit", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/test_execute.py", "source_location": "L498"}, {"caller_nid": "$graphify-root$_scripts_test_execute_testmaincli_test_no_args_exits", "callee": "main", "is_member_call": true, "source_file": "scripts/test_execute.py", "source_location": "L499", "receiver": "ex"}, {"caller_nid": "$graphify-root$_scripts_test_execute_testmaincli_test_invalid_phase_dir_exits", "callee": "patch", "is_member_call": false, "source_file": "scripts/test_execute.py", "source_location": "L503", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_test_execute_testmaincli_test_invalid_phase_dir_exits", "callee": "object", "is_member_call": true, "source_file": "scripts/test_execute.py", "source_location": "L504", "receiver": "patch"}, {"caller_nid": "$graphify-root$_scripts_test_execute_testmaincli_test_invalid_phase_dir_exits", "callee": "ex", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/test_execute.py", "source_location": "L504"}, {"caller_nid": "$graphify-root$_scripts_test_execute_testmaincli_test_invalid_phase_dir_exits", "callee": "Path", "is_member_call": false, "source_file": "scripts/test_execute.py", "source_location": "L504", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_test_execute_testmaincli_test_invalid_phase_dir_exits", "callee": "raises", "is_member_call": true, "source_file": "scripts/test_execute.py", "source_location": "L505", "receiver": "pytest"}, {"caller_nid": "$graphify-root$_scripts_test_execute_testmaincli_test_invalid_phase_dir_exits", "callee": "SystemExit", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/test_execute.py", "source_location": "L505"}, {"caller_nid": "$graphify-root$_scripts_test_execute_testmaincli_test_invalid_phase_dir_exits", "callee": "main", "is_member_call": true, "source_file": "scripts/test_execute.py", "source_location": "L506", "receiver": "ex"}, {"caller_nid": "$graphify-root$_scripts_test_execute_testmaincli_test_missing_index_exits", "callee": "mkdir", "is_member_call": true, "source_file": "scripts/test_execute.py", "source_location": "L510", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_test_execute_testmaincli_test_missing_index_exits", "callee": "patch", "is_member_call": false, "source_file": "scripts/test_execute.py", "source_location": "L511", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_test_execute_testmaincli_test_missing_index_exits", "callee": "object", "is_member_call": true, "source_file": "scripts/test_execute.py", "source_location": "L512", "receiver": "patch"}, {"caller_nid": "$graphify-root$_scripts_test_execute_testmaincli_test_missing_index_exits", "callee": "ex", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/test_execute.py", "source_location": "L512"}, {"caller_nid": "$graphify-root$_scripts_test_execute_testmaincli_test_missing_index_exits", "callee": "raises", "is_member_call": true, "source_file": "scripts/test_execute.py", "source_location": "L513", "receiver": "pytest"}, {"caller_nid": "$graphify-root$_scripts_test_execute_testmaincli_test_missing_index_exits", "callee": "SystemExit", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/test_execute.py", "source_location": "L513"}, {"caller_nid": "$graphify-root$_scripts_test_execute_testmaincli_test_missing_index_exits", "callee": "main", "is_member_call": true, "source_file": "scripts/test_execute.py", "source_location": "L514", "receiver": "ex"}, {"caller_nid": "$graphify-root$_scripts_test_execute_testcheckblockers_make_executor_with_steps", "callee": "mkdir", "is_member_call": true, "source_file": "scripts/test_execute.py", "source_location": "L525", "receiver": "d"}, {"caller_nid": "$graphify-root$_scripts_test_execute_testcheckblockers_make_executor_with_steps", "callee": "write_text", "is_member_call": true, "source_file": "scripts/test_execute.py", "source_location": "L527", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_test_execute_testcheckblockers_make_executor_with_steps", "callee": "dumps", "is_member_call": true, "source_file": "scripts/test_execute.py", "source_location": "L527", "receiver": "json"}, {"caller_nid": "$graphify-root$_scripts_test_execute_testcheckblockers_make_executor_with_steps", "callee": "object", "is_member_call": true, "source_file": "scripts/test_execute.py", "source_location": "L529", "receiver": "patch"}, {"caller_nid": "$graphify-root$_scripts_test_execute_testcheckblockers_make_executor_with_steps", "callee": "ex", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/test_execute.py", "source_location": "L529"}, {"caller_nid": "$graphify-root$_scripts_test_execute_testcheckblockers_make_executor_with_steps", "callee": "__new__", "is_member_call": true, "source_file": "scripts/test_execute.py", "source_location": "L530", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_test_execute_testcheckblockers_test_error_step_exits_1", "callee": "raises", "is_member_call": true, "source_file": "scripts/test_execute.py", "source_location": "L547", "receiver": "pytest"}, {"caller_nid": "$graphify-root$_scripts_test_execute_testcheckblockers_test_error_step_exits_1", "callee": "SystemExit", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/test_execute.py", "source_location": "L547"}, {"caller_nid": "$graphify-root$_scripts_test_execute_testcheckblockers_test_error_step_exits_1", "callee": "_check_blockers", "is_member_call": true, "source_file": "scripts/test_execute.py", "source_location": "L548", "receiver": "inst"}, {"caller_nid": "$graphify-root$_scripts_test_execute_testcheckblockers_test_blocked_step_exits_2", "callee": "raises", "is_member_call": true, "source_file": "scripts/test_execute.py", "source_location": "L557", "receiver": "pytest"}, {"caller_nid": "$graphify-root$_scripts_test_execute_testcheckblockers_test_blocked_step_exits_2", "callee": "SystemExit", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/test_execute.py", "source_location": "L557"}, {"caller_nid": "$graphify-root$_scripts_test_execute_testcheckblockers_test_blocked_step_exits_2", "callee": "_check_blockers", "is_member_call": true, "source_file": "scripts/test_execute.py", "source_location": "L558", "receiver": "inst"}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.31/3f270df90a3e3fee4caf266a91c83ad685240a6e0402cae96e0758a07a89a079.json b/graphify-out/cache/ast/v0.9.31/3f270df90a3e3fee4caf266a91c83ad685240a6e0402cae96e0758a07a89a079.json new file mode 100644 index 0000000..31b95dd --- /dev/null +++ b/graphify-out/cache/ast/v0.9.31/3f270df90a3e3fee4caf266a91c83ad685240a6e0402cae96e0758a07a89a079.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_src_data_party_config_py", "label": "party_config.py", "file_type": "code", "source_file": "src/data/party_config.py", "source_location": "L1"}, {"id": "$graphify-root$_src_data_party_config_partyprofile", "label": "PartyProfile", "file_type": "code", "source_file": "src/data/party_config.py", "source_location": "L19", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_src_data_party_config_get_party_profile", "label": "get_party_profile()", "file_type": "code", "source_file": "src/data/party_config.py", "source_location": "L36", "_callable": true}, {"id": "$graphify-root$_src_data_party_config_rationale_1", "label": "\ub3d9\ud589 \uc720\ud615\ubcc4 \uc774\ub3d9 \uc18d\ub3c4 \ubcf4\uc815 \uacc4\uc218 \ubc0f \ud53c\ub85c\ub3c4 \uc784\uacc4\uac12. \uc774\ub3d9\uc218\ub2e8\uc740 \ud56d\uc0c1 \uc790\ub3d9\ucc28\uc774\ubbc0\ub85c speed_factor\ub294 Haversine \ud3f4\ubc31 \uac70\ub9ac \uae30\ubc18\u2026", "file_type": "rationale", "source_file": "src/data/party_config.py", "source_location": "L1"}, {"id": "$graphify-root$_src_data_party_config_rationale_37", "label": "party_type \ubb38\uc790\uc5f4 \u2192 PartyProfile. \ubbf8\ub4f1\ub85d \uac12\uc740 '\uce5c\uad6c' \uae30\uc900 \ubc18\ud658.", "file_type": "rationale", "source_file": "src/data/party_config.py", "source_location": "L37"}], "edges": [{"source": "$graphify-root$_src_data_party_config_py", "target": "dataclasses", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "src/data/party_config.py", "source_location": "L15", "weight": 1.0}, {"source": "$graphify-root$_src_data_party_config_py", "target": "$graphify-root$_src_data_party_config_partyprofile", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/data/party_config.py", "source_location": "L19", "weight": 1.0}, {"source": "$graphify-root$_src_data_party_config_py", "target": "$graphify-root$_src_data_party_config_get_party_profile", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/data/party_config.py", "source_location": "L36", "weight": 1.0}, {"source": "$graphify-root$_src_data_party_config_get_party_profile", "target": "$graphify-root$_src_data_party_config_partyprofile", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "src/data/party_config.py", "source_location": "L36", "weight": 1.0}, {"source": "$graphify-root$_src_data_party_config_rationale_1", "target": "$graphify-root$_src_data_party_config_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/data/party_config.py", "source_location": "L1", "weight": 1.0}, {"source": "$graphify-root$_src_data_party_config_rationale_37", "target": "$graphify-root$_src_data_party_config_get_party_profile", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/data/party_config.py", "source_location": "L37", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_src_data_party_config_get_party_profile", "callee": "get", "is_member_call": true, "source_file": "src/data/party_config.py", "source_location": "L38", "receiver": "PARTY_PROFILES"}, {"caller_nid": "$graphify-root$_src_data_party_config_get_party_profile", "callee": "_DEFAULT", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "src/data/party_config.py", "source_location": "L38"}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.31/40cae72ace465a5261dbc7a1ac187774c9b94a51431b9d41e21378f5dc85c9db.json b/graphify-out/cache/ast/v0.9.31/40cae72ace465a5261dbc7a1ac187774c9b94a51431b9d41e21378f5dc85c9db.json new file mode 100644 index 0000000..c0fd344 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.31/40cae72ace465a5261dbc7a1ac187774c9b94a51431b9d41e21378f5dc85c9db.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_src_explain_plan_extractor_py", "label": "plan_extractor.py", "file_type": "code", "source_file": "src/explain/plan_extractor.py", "source_location": "L1"}, {"id": "$graphify-root$_src_explain_plan_extractor_planextractionerror", "label": "PlanExtractionError", "file_type": "code", "source_file": "src/explain/plan_extractor.py", "source_location": "L60", "_callable": true, "_callable_class": true}, {"id": "exception", "label": "Exception", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/src/explain/plan_extractor.py"}, {"id": "$graphify-root$_src_explain_plan_extractor_strip_fence", "label": "_strip_fence()", "file_type": "code", "source_file": "src/explain/plan_extractor.py", "source_location": "L64", "_callable": true}, {"id": "$graphify-root$_src_explain_plan_extractor_parse_response", "label": "_parse_response()", "file_type": "code", "source_file": "src/explain/plan_extractor.py", "source_location": "L68", "_callable": true}, {"id": "parsedplanresponse", "label": "ParsedPlanResponse", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/src/explain/plan_extractor.py"}, {"id": "$graphify-root$_src_explain_plan_extractor_fallback_text_parse", "label": "_fallback_text_parse()", "file_type": "code", "source_file": "src/explain/plan_extractor.py", "source_location": "L80", "_callable": true}, {"id": "$graphify-root$_src_explain_plan_extractor_planextractor", "label": "PlanExtractor", "file_type": "code", "source_file": "src/explain/plan_extractor.py", "source_location": "L103", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_src_explain_plan_extractor_planextractor_init", "label": ".__init__()", "file_type": "code", "source_file": "src/explain/plan_extractor.py", "source_location": "L106", "_callable": true}, {"id": "any", "label": "Any", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/src/explain/plan_extractor.py"}, {"id": "$graphify-root$_src_explain_plan_extractor_planextractor_from_env", "label": ".from_env()", "file_type": "code", "source_file": "src/explain/plan_extractor.py", "source_location": "L123", "_callable": true}, {"id": "$graphify-root$_src_explain_plan_extractor_planextractor_is_available", "label": ".is_available()", "file_type": "code", "source_file": "src/explain/plan_extractor.py", "source_location": "L126", "_callable": true}, {"id": "$graphify-root$_src_explain_plan_extractor_planextractor_extract_from_text", "label": ".extract_from_text()", "file_type": "code", "source_file": "src/explain/plan_extractor.py", "source_location": "L129", "_callable": true}, {"id": "$graphify-root$_src_explain_plan_extractor_planextractor_extract_from_document", "label": ".extract_from_document()", "file_type": "code", "source_file": "src/explain/plan_extractor.py", "source_location": "L138", "_callable": true}, {"id": "$graphify-root$_src_explain_plan_extractor_planextractor_call", "label": "._call()", "file_type": "code", "source_file": "src/explain/plan_extractor.py", "source_location": "L158", "_callable": true}, {"id": "$graphify-root$_src_explain_plan_extractor_demo", "label": "_demo()", "file_type": "code", "source_file": "src/explain/plan_extractor.py", "source_location": "L177", "_callable": true}, {"id": "$graphify-root$_src_explain_plan_extractor_rationale_1", "label": "PlanExtractor \u2014 Claude API \uae30\ubc18 \uc5ec\ud589 \uc77c\uc815\ud45c \ud30c\uc2f1 \uc5d4\uc9c4. '\ub300\ud55c\ubbfc\uad6d\uad6c\uc11d\uad6c\uc11d'(AI\ucf55\ucf55\ud50c\ub798\ub108 \ub4f1)\uc5d0\uc11c \ub098\uc628 \uc5ec\ud589 \ucf54\uc2a4 \ucd94\ucc9c\u2026", "file_type": "rationale", "source_file": "src/explain/plan_extractor.py", "source_location": "L1"}, {"id": "$graphify-root$_src_explain_plan_extractor_rationale_61", "label": "\ucd94\ucd9c \uc2e4\ud328 \u2014 API \ubbf8\uc124\uc815, \ud638\ucd9c \uc2e4\ud328, \uc751\ub2f5 \ud30c\uc2f1 \uc2e4\ud328 \ub4f1.", "file_type": "rationale", "source_file": "src/explain/plan_extractor.py", "source_location": "L61"}, {"id": "$graphify-root$_src_explain_plan_extractor_rationale_81", "label": "ANTHROPIC_API_KEY \ubbf8\uc124\uc815 \uc2dc \ucd5c\uc18c\ud55c\uc758 \uc904 \ub2e8\uc704 \ud734\ub9ac\uc2a4\ud2f1 \ud30c\uc2f1. ponytail: day/\uce74\ud14c\uace0\ub9ac \ud0dc\uadf8 \uc778\uc2dd \uc5c6\ub294 \ub2e8\uc21c \ub77c\uc778\u2026", "file_type": "rationale", "source_file": "src/explain/plan_extractor.py", "source_location": "L81"}, {"id": "$graphify-root$_src_explain_plan_extractor_rationale_104", "label": "LLM \uae30\ubc18 \uc77c\uc815\ud45c \ucd94\ucd9c\uae30. External I/O = Claude API.", "file_type": "rationale", "source_file": "src/explain/plan_extractor.py", "source_location": "L104"}, {"id": "$graphify-root$_src_explain_plan_extractor_rationale_130", "label": "\ubd99\uc5ec\ub123\uc740 \ud14d\uc2a4\ud2b8\ub97c \ucffc\ub9ac \ub9ac\ub77c\uc774\ud305\uc73c\ub85c \uc815\ub82c\ub41c day/place \uad6c\uc870\ub85c \ubcc0\ud658.", "file_type": "rationale", "source_file": "src/explain/plan_extractor.py", "source_location": "L130"}, {"id": "$graphify-root$_src_explain_plan_extractor_rationale_139", "label": "PDF\u00b7PNG\u00b7JPG \ucea1\ucc98\ub97c Claude Vision\uc73c\ub85c \uc77d\uc5b4 day/place \uad6c\uc870\ub85c \ubcc0\ud658.", "file_type": "rationale", "source_file": "src/explain/plan_extractor.py", "source_location": "L139"}], "edges": [{"source": "$graphify-root$_src_explain_plan_extractor_py", "target": "base64", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "src/explain/plan_extractor.py", "source_location": "L13", "weight": 1.0}, {"source": "$graphify-root$_src_explain_plan_extractor_py", "target": "json", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "src/explain/plan_extractor.py", "source_location": "L14", "weight": 1.0}, {"source": "$graphify-root$_src_explain_plan_extractor_py", "target": "os", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "src/explain/plan_extractor.py", "source_location": "L15", "weight": 1.0}, {"source": "$graphify-root$_src_explain_plan_extractor_py", "target": "re", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "src/explain/plan_extractor.py", "source_location": "L16", "weight": 1.0}, {"source": "$graphify-root$_src_explain_plan_extractor_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "src/explain/plan_extractor.py", "source_location": "L17", "weight": 1.0}, {"source": "$graphify-root$_src_explain_plan_extractor_py", "target": "src_api_schemas", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "src/explain/plan_extractor.py", "source_location": "L19", "weight": 1.0}, {"source": "$graphify-root$_src_explain_plan_extractor_py", "target": "anthropic", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "src/explain/plan_extractor.py", "source_location": "L22", "weight": 1.0}, {"source": "$graphify-root$_src_explain_plan_extractor_py", "target": "$graphify-root$_src_explain_plan_extractor_planextractionerror", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/explain/plan_extractor.py", "source_location": "L60", "weight": 1.0}, {"source": "$graphify-root$_src_explain_plan_extractor_planextractionerror", "target": "exception", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "src/explain/plan_extractor.py", "source_location": "L60", "weight": 1.0}, {"source": "$graphify-root$_src_explain_plan_extractor_py", "target": "$graphify-root$_src_explain_plan_extractor_strip_fence", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/explain/plan_extractor.py", "source_location": "L64", "weight": 1.0}, {"source": "$graphify-root$_src_explain_plan_extractor_py", "target": "$graphify-root$_src_explain_plan_extractor_parse_response", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/explain/plan_extractor.py", "source_location": "L68", "weight": 1.0}, {"source": "$graphify-root$_src_explain_plan_extractor_parse_response", "target": "parsedplanresponse", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "src/explain/plan_extractor.py", "source_location": "L68", "weight": 1.0}, {"source": "$graphify-root$_src_explain_plan_extractor_py", "target": "$graphify-root$_src_explain_plan_extractor_fallback_text_parse", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/explain/plan_extractor.py", "source_location": "L80", "weight": 1.0}, {"source": "$graphify-root$_src_explain_plan_extractor_fallback_text_parse", "target": "parsedplanresponse", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "src/explain/plan_extractor.py", "source_location": "L80", "weight": 1.0}, {"source": "$graphify-root$_src_explain_plan_extractor_py", "target": "$graphify-root$_src_explain_plan_extractor_planextractor", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/explain/plan_extractor.py", "source_location": "L103", "weight": 1.0}, {"source": "$graphify-root$_src_explain_plan_extractor_planextractor", "target": "$graphify-root$_src_explain_plan_extractor_planextractor_init", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/explain/plan_extractor.py", "source_location": "L106", "weight": 1.0}, {"source": "$graphify-root$_src_explain_plan_extractor_planextractor_init", "target": "any", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "src/explain/plan_extractor.py", "source_location": "L106", "weight": 1.0}, {"source": "$graphify-root$_src_explain_plan_extractor_planextractor", "target": "$graphify-root$_src_explain_plan_extractor_planextractor_from_env", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/explain/plan_extractor.py", "source_location": "L123", "weight": 1.0}, {"source": "$graphify-root$_src_explain_plan_extractor_planextractor_from_env", "target": "$graphify-root$_src_explain_plan_extractor_planextractor", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "src/explain/plan_extractor.py", "source_location": "L123", "weight": 1.0}, {"source": "$graphify-root$_src_explain_plan_extractor_planextractor", "target": "$graphify-root$_src_explain_plan_extractor_planextractor_is_available", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/explain/plan_extractor.py", "source_location": "L126", "weight": 1.0}, {"source": "$graphify-root$_src_explain_plan_extractor_planextractor", "target": "$graphify-root$_src_explain_plan_extractor_planextractor_extract_from_text", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/explain/plan_extractor.py", "source_location": "L129", "weight": 1.0}, {"source": "$graphify-root$_src_explain_plan_extractor_planextractor_extract_from_text", "target": "parsedplanresponse", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "src/explain/plan_extractor.py", "source_location": "L129", "weight": 1.0}, {"source": "$graphify-root$_src_explain_plan_extractor_planextractor", "target": "$graphify-root$_src_explain_plan_extractor_planextractor_extract_from_document", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/explain/plan_extractor.py", "source_location": "L138", "weight": 1.0}, {"source": "$graphify-root$_src_explain_plan_extractor_planextractor_extract_from_document", "target": "parsedplanresponse", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "src/explain/plan_extractor.py", "source_location": "L138", "weight": 1.0}, {"source": "$graphify-root$_src_explain_plan_extractor_planextractor", "target": "$graphify-root$_src_explain_plan_extractor_planextractor_call", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/explain/plan_extractor.py", "source_location": "L158", "weight": 1.0}, {"source": "$graphify-root$_src_explain_plan_extractor_planextractor_call", "target": "parsedplanresponse", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "src/explain/plan_extractor.py", "source_location": "L158", "weight": 1.0}, {"source": "$graphify-root$_src_explain_plan_extractor_py", "target": "$graphify-root$_src_explain_plan_extractor_demo", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/explain/plan_extractor.py", "source_location": "L177", "weight": 1.0}, {"source": "$graphify-root$_src_explain_plan_extractor_parse_response", "target": "$graphify-root$_src_explain_plan_extractor_strip_fence", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/explain/plan_extractor.py", "source_location": "L69", "weight": 1.0}, {"source": "$graphify-root$_src_explain_plan_extractor_parse_response", "target": "$graphify-root$_src_explain_plan_extractor_planextractionerror", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/explain/plan_extractor.py", "source_location": "L73", "weight": 1.0}, {"source": "$graphify-root$_src_explain_plan_extractor_fallback_text_parse", "target": "parsedplanresponse", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/explain/plan_extractor.py", "source_location": "L98", "weight": 1.0}, {"source": "$graphify-root$_src_explain_plan_extractor_planextractor_extract_from_text", "target": "$graphify-root$_src_explain_plan_extractor_planextractionerror", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/explain/plan_extractor.py", "source_location": "L133", "weight": 1.0}, {"source": "$graphify-root$_src_explain_plan_extractor_planextractor_extract_from_text", "target": "$graphify-root$_src_explain_plan_extractor_planextractor_is_available", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/explain/plan_extractor.py", "source_location": "L134", "weight": 1.0}, {"source": "$graphify-root$_src_explain_plan_extractor_planextractor_extract_from_text", "target": "$graphify-root$_src_explain_plan_extractor_fallback_text_parse", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/explain/plan_extractor.py", "source_location": "L135", "weight": 1.0}, {"source": "$graphify-root$_src_explain_plan_extractor_planextractor_extract_from_text", "target": "$graphify-root$_src_explain_plan_extractor_planextractor_call", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/explain/plan_extractor.py", "source_location": "L136", "weight": 1.0}, {"source": "$graphify-root$_src_explain_plan_extractor_planextractor_extract_from_document", "target": "$graphify-root$_src_explain_plan_extractor_planextractionerror", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/explain/plan_extractor.py", "source_location": "L141", "weight": 1.0}, {"source": "$graphify-root$_src_explain_plan_extractor_planextractor_extract_from_document", "target": "$graphify-root$_src_explain_plan_extractor_planextractor_is_available", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/explain/plan_extractor.py", "source_location": "L142", "weight": 1.0}, {"source": "$graphify-root$_src_explain_plan_extractor_planextractor_extract_from_document", "target": "$graphify-root$_src_explain_plan_extractor_planextractor_call", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/explain/plan_extractor.py", "source_location": "L156", "weight": 1.0}, {"source": "$graphify-root$_src_explain_plan_extractor_planextractor_call", "target": "$graphify-root$_src_explain_plan_extractor_planextractionerror", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/explain/plan_extractor.py", "source_location": "L172", "weight": 1.0}, {"source": "$graphify-root$_src_explain_plan_extractor_planextractor_call", "target": "$graphify-root$_src_explain_plan_extractor_parse_response", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/explain/plan_extractor.py", "source_location": "L174", "weight": 1.0}, {"source": "$graphify-root$_src_explain_plan_extractor_demo", "target": "$graphify-root$_src_explain_plan_extractor_parse_response", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/explain/plan_extractor.py", "source_location": "L178", "weight": 1.0}, {"source": "$graphify-root$_src_explain_plan_extractor_demo", "target": "$graphify-root$_src_explain_plan_extractor_fallback_text_parse", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/explain/plan_extractor.py", "source_location": "L183", "weight": 1.0}, {"source": "$graphify-root$_src_explain_plan_extractor_rationale_1", "target": "$graphify-root$_src_explain_plan_extractor_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/explain/plan_extractor.py", "source_location": "L1", "weight": 1.0}, {"source": "$graphify-root$_src_explain_plan_extractor_rationale_61", "target": "$graphify-root$_src_explain_plan_extractor_planextractionerror", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/explain/plan_extractor.py", "source_location": "L61", "weight": 1.0}, {"source": "$graphify-root$_src_explain_plan_extractor_rationale_81", "target": "$graphify-root$_src_explain_plan_extractor_fallback_text_parse", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/explain/plan_extractor.py", "source_location": "L81", "weight": 1.0}, {"source": "$graphify-root$_src_explain_plan_extractor_rationale_104", "target": "$graphify-root$_src_explain_plan_extractor_planextractor", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/explain/plan_extractor.py", "source_location": "L104", "weight": 1.0}, {"source": "$graphify-root$_src_explain_plan_extractor_rationale_130", "target": "$graphify-root$_src_explain_plan_extractor_planextractor_extract_from_text", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/explain/plan_extractor.py", "source_location": "L130", "weight": 1.0}, {"source": "$graphify-root$_src_explain_plan_extractor_rationale_139", "target": "$graphify-root$_src_explain_plan_extractor_planextractor_extract_from_document", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/explain/plan_extractor.py", "source_location": "L139", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_src_explain_plan_extractor_strip_fence", "callee": "strip", "is_member_call": true, "source_file": "src/explain/plan_extractor.py", "source_location": "L65", "receiver": null}, {"caller_nid": "$graphify-root$_src_explain_plan_extractor_strip_fence", "callee": "sub", "is_member_call": true, "source_file": "src/explain/plan_extractor.py", "source_location": "L65", "receiver": "_FENCE_RE"}, {"caller_nid": "$graphify-root$_src_explain_plan_extractor_strip_fence", "callee": "strip", "is_member_call": true, "source_file": "src/explain/plan_extractor.py", "source_location": "L65", "receiver": "raw"}, {"caller_nid": "$graphify-root$_src_explain_plan_extractor_parse_response", "callee": "loads", "is_member_call": true, "source_file": "src/explain/plan_extractor.py", "source_location": "L71", "receiver": "json"}, {"caller_nid": "$graphify-root$_src_explain_plan_extractor_parse_response", "callee": "model_validate", "is_member_call": true, "source_file": "src/explain/plan_extractor.py", "source_location": "L75", "receiver": "ParsedPlanResponse"}, {"caller_nid": "$graphify-root$_src_explain_plan_extractor_fallback_text_parse", "callee": "splitlines", "is_member_call": true, "source_file": "src/explain/plan_extractor.py", "source_location": "L84", "receiver": "text"}, {"caller_nid": "$graphify-root$_src_explain_plan_extractor_fallback_text_parse", "callee": "strip", "is_member_call": true, "source_file": "src/explain/plan_extractor.py", "source_location": "L85", "receiver": "line"}, {"caller_nid": "$graphify-root$_src_explain_plan_extractor_fallback_text_parse", "callee": "search", "is_member_call": true, "source_file": "src/explain/plan_extractor.py", "source_location": "L88", "receiver": "_DAY_MARKER_RE"}, {"caller_nid": "$graphify-root$_src_explain_plan_extractor_fallback_text_parse", "callee": "append", "is_member_call": true, "source_file": "src/explain/plan_extractor.py", "source_location": "L90", "receiver": "days"}, {"caller_nid": "$graphify-root$_src_explain_plan_extractor_fallback_text_parse", "callee": "strip", "is_member_call": true, "source_file": "src/explain/plan_extractor.py", "source_location": "L92", "receiver": null}, {"caller_nid": "$graphify-root$_src_explain_plan_extractor_fallback_text_parse", "callee": "sub", "is_member_call": true, "source_file": "src/explain/plan_extractor.py", "source_location": "L92", "receiver": "_TAG_RE"}, {"caller_nid": "$graphify-root$_src_explain_plan_extractor_fallback_text_parse", "callee": "strip", "is_member_call": true, "source_file": "src/explain/plan_extractor.py", "source_location": "L94", "receiver": null}, {"caller_nid": "$graphify-root$_src_explain_plan_extractor_fallback_text_parse", "callee": "removesuffix", "is_member_call": true, "source_file": "src/explain/plan_extractor.py", "source_location": "L94", "receiver": "name"}, {"caller_nid": "$graphify-root$_src_explain_plan_extractor_fallback_text_parse", "callee": "append", "is_member_call": true, "source_file": "src/explain/plan_extractor.py", "source_location": "L96", "receiver": null}, {"caller_nid": "$graphify-root$_src_explain_plan_extractor_fallback_text_parse", "callee": "ParsedDay", "is_member_call": false, "source_file": "src/explain/plan_extractor.py", "source_location": "L99", "receiver": null}, {"caller_nid": "$graphify-root$_src_explain_plan_extractor_fallback_text_parse", "callee": "ParsedPlace", "is_member_call": false, "source_file": "src/explain/plan_extractor.py", "source_location": "L99", "receiver": null}, {"caller_nid": "$graphify-root$_src_explain_plan_extractor_planextractor_init", "callee": "get", "is_member_call": true, "source_file": "src/explain/plan_extractor.py", "source_location": "L117", "receiver": null}, {"caller_nid": "$graphify-root$_src_explain_plan_extractor_planextractor_init", "callee": "Anthropic", "is_member_call": true, "source_file": "src/explain/plan_extractor.py", "source_location": "L120", "receiver": "anthropic"}, {"caller_nid": "$graphify-root$_src_explain_plan_extractor_planextractor_from_env", "callee": "cls", "is_member_call": false, "source_file": "src/explain/plan_extractor.py", "source_location": "L124", "receiver": null}, {"caller_nid": "$graphify-root$_src_explain_plan_extractor_planextractor_extract_from_text", "callee": "strip", "is_member_call": true, "source_file": "src/explain/plan_extractor.py", "source_location": "L131", "receiver": null}, {"caller_nid": "$graphify-root$_src_explain_plan_extractor_planextractor_extract_from_document", "callee": "decode", "is_member_call": true, "source_file": "src/explain/plan_extractor.py", "source_location": "L145", "receiver": null}, {"caller_nid": "$graphify-root$_src_explain_plan_extractor_planextractor_extract_from_document", "callee": "b64encode", "is_member_call": true, "source_file": "src/explain/plan_extractor.py", "source_location": "L145", "receiver": "base64"}, {"caller_nid": "$graphify-root$_src_explain_plan_extractor_planextractor_extract_from_document", "callee": "_USER_PREFIX_DOC", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "src/explain/plan_extractor.py", "source_location": "L153"}, {"caller_nid": "$graphify-root$_src_explain_plan_extractor_planextractor_call", "callee": "create", "is_member_call": true, "source_file": "src/explain/plan_extractor.py", "source_location": "L160", "receiver": null}, {"caller_nid": "$graphify-root$_src_explain_plan_extractor_planextractor_call", "callee": "_SYSTEM_PROMPT", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "src/explain/plan_extractor.py", "source_location": "L166"}, {"caller_nid": "$graphify-root$_src_explain_plan_extractor_planextractor_call", "callee": "join", "is_member_call": true, "source_file": "src/explain/plan_extractor.py", "source_location": "L174", "receiver": null}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.31/432695e40c8fc3be7a00f85d5f15e39a565f748c592825bfdc28e1eac22f3bbf.json b/graphify-out/cache/ast/v0.9.31/432695e40c8fc3be7a00f85d5f15e39a565f748c592825bfdc28e1eac22f3bbf.json new file mode 100644 index 0000000..00900f8 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.31/432695e40c8fc3be7a00f85d5f15e39a565f748c592825bfdc28e1eac22f3bbf.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_phases_0_setup_visualize_py", "label": "visualize.py", "file_type": "code", "source_file": "phases/0-setup/visualize.py", "source_location": "L1"}, {"id": "$graphify-root$_phases_0_setup_visualize_rationale_1", "label": "AI \uc5ec\ud589 \ucd94\ucc9c \uc131\ub2a5 \uc2dc\uac01\ud654 \u2014 \ud504\ub85c\uc81d\ud2b8 \ud544\uc694\uc131 \uadfc\uac70 \ucc28\ud2b8 4\uc885", "file_type": "rationale", "source_file": "phases/0-setup/visualize.py", "source_location": "L1"}], "edges": [{"source": "$graphify-root$_phases_0_setup_visualize_py", "target": "json", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "phases/0-setup/visualize.py", "source_location": "L4", "weight": 1.0}, {"source": "$graphify-root$_phases_0_setup_visualize_py", "target": "sys", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "phases/0-setup/visualize.py", "source_location": "L4", "weight": 1.0}, {"source": "$graphify-root$_phases_0_setup_visualize_py", "target": "matplotlib", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "phases/0-setup/visualize.py", "source_location": "L5", "weight": 1.0}, {"source": "$graphify-root$_phases_0_setup_visualize_py", "target": "matplotlib_pyplot", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "phases/0-setup/visualize.py", "source_location": "L6", "weight": 1.0, "local_alias": "plt"}, {"source": "$graphify-root$_phases_0_setup_visualize_py", "target": "matplotlib_patches", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "phases/0-setup/visualize.py", "source_location": "L7", "weight": 1.0, "local_alias": "mpatches"}, {"source": "$graphify-root$_phases_0_setup_visualize_py", "target": "numpy", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "phases/0-setup/visualize.py", "source_location": "L8", "weight": 1.0, "local_alias": "np"}, {"source": "$graphify-root$_phases_0_setup_visualize_py", "target": "pathlib", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "phases/0-setup/visualize.py", "source_location": "L9", "weight": 1.0}, {"source": "$graphify-root$_phases_0_setup_visualize_py", "target": "collections", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "phases/0-setup/visualize.py", "source_location": "L10", "weight": 1.0}, {"source": "$graphify-root$_phases_0_setup_visualize_rationale_1", "target": "$graphify-root$_phases_0_setup_visualize_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "phases/0-setup/visualize.py", "source_location": "L1", "weight": 1.0}], "raw_calls": []} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.31/45bb07bdbd7ee60c56a8439aaf8c4eed6706302b9378076b37292fc21b73ae9d.json b/graphify-out/cache/ast/v0.9.31/45bb07bdbd7ee60c56a8439aaf8c4eed6706302b9378076b37292fc21b73ae9d.json new file mode 100644 index 0000000..f5d9abb --- /dev/null +++ b/graphify-out/cache/ast/v0.9.31/45bb07bdbd7ee60c56a8439aaf8c4eed6706302b9378076b37292fc21b73ae9d.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_tests_test_warning_py", "label": "test_warning.py", "file_type": "code", "source_file": "tests/test_warning.py", "source_location": "L1"}, {"id": "$graphify-root$_tests_test_warning_make_poi", "label": "make_poi()", "file_type": "code", "source_file": "tests/test_warning.py", "source_location": "L14", "_callable": true}, {"id": "poi", "label": "POI", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/tests/test_warning.py"}, {"id": "$graphify-root$_tests_test_warning_make_plan", "label": "make_plan()", "file_type": "code", "source_file": "tests/test_warning.py", "source_location": "L29", "_callable": true}, {"id": "itineraryplan", "label": "ItineraryPlan", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/tests/test_warning.py"}, {"id": "$graphify-root$_tests_test_warning_make_matrix", "label": "make_matrix()", "file_type": "code", "source_file": "tests/test_warning.py", "source_location": "L44", "_callable": true}, {"id": "fixture", "label": "fixture", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/tests/test_warning.py"}, {"id": "$graphify-root$_tests_test_warning_detector", "label": "detector()", "file_type": "code", "source_file": "tests/test_warning.py", "source_location": "L59", "_callable": true}, {"id": "warningdetector", "label": "WarningDetector", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/tests/test_warning.py"}, {"id": "$graphify-root$_tests_test_warning_testdenseschedule", "label": "TestDenseSchedule", "file_type": "code", "source_file": "tests/test_warning.py", "source_location": "L67", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_tests_test_warning_testdenseschedule_test_dense_trigger_baby", "label": ".test_dense_trigger_baby()", "file_type": "code", "source_file": "tests/test_warning.py", "source_location": "L68", "_callable": true}, {"id": "$graphify-root$_tests_test_warning_testdenseschedule_test_dense_trigger_friends_heavy", "label": ".test_dense_trigger_friends_heavy()", "file_type": "code", "source_file": "tests/test_warning.py", "source_location": "L77", "_callable": true}, {"id": "$graphify-root$_tests_test_warning_testdenseschedule_test_no_dense_within_threshold", "label": ".test_no_dense_within_threshold()", "file_type": "code", "source_file": "tests/test_warning.py", "source_location": "L86", "_callable": true}, {"id": "$graphify-root$_tests_test_warning_testdenseschedule_test_dense_message_includes_party_type", "label": ".test_dense_message_includes_party_type()", "file_type": "code", "source_file": "tests/test_warning.py", "source_location": "L95", "_callable": true}, {"id": "$graphify-root$_tests_test_warning_testphysicalstrain", "label": "TestPhysicalStrain", "file_type": "code", "source_file": "tests/test_warning.py", "source_location": "L109", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_tests_test_warning_testphysicalstrain_test_strain_trigger", "label": ".test_strain_trigger()", "file_type": "code", "source_file": "tests/test_warning.py", "source_location": "L110", "_callable": true}, {"id": "$graphify-root$_tests_test_warning_testphysicalstrain_test_no_strain_short_distance", "label": ".test_no_strain_short_distance()", "file_type": "code", "source_file": "tests/test_warning.py", "source_location": "L123", "_callable": true}, {"id": "$graphify-root$_tests_test_warning_testpurposemismatch", "label": "TestPurposeMismatch", "file_type": "code", "source_file": "tests/test_warning.py", "source_location": "L138", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_tests_test_warning_testpurposemismatch_test_mismatch_cultural_all_sports", "label": ".test_mismatch_cultural_all_sports()", "file_type": "code", "source_file": "tests/test_warning.py", "source_location": "L139", "_callable": true}, {"id": "$graphify-root$_tests_test_warning_testpurposemismatch_test_no_mismatch_cultural_all_cultural", "label": ".test_no_mismatch_cultural_all_cultural()", "file_type": "code", "source_file": "tests/test_warning.py", "source_location": "L150", "_callable": true}, {"id": "$graphify-root$_tests_test_warning_testpurposemismatch_test_no_mismatch_when_no_travel_type", "label": ".test_no_mismatch_when_no_travel_type()", "file_type": "code", "source_file": "tests/test_warning.py", "source_location": "L161", "_callable": true}, {"id": "$graphify-root$_tests_test_warning_testarearevisit", "label": "TestAreaRevisit", "file_type": "code", "source_file": "tests/test_warning.py", "source_location": "L173", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_tests_test_warning_testarearevisit_test_consecutive_same_category_triggers", "label": ".test_consecutive_same_category_triggers()", "file_type": "code", "source_file": "tests/test_warning.py", "source_location": "L174", "_callable": true}, {"id": "$graphify-root$_tests_test_warning_testarearevisit_test_all_different_no_revisit", "label": ".test_all_different_no_revisit()", "file_type": "code", "source_file": "tests/test_warning.py", "source_location": "L187", "_callable": true}, {"id": "$graphify-root$_tests_test_warning_testarearevisit_test_three_consecutive_triggers", "label": ".test_three_consecutive_triggers()", "file_type": "code", "source_file": "tests/test_warning.py", "source_location": "L199", "_callable": true}, {"id": "$graphify-root$_tests_test_warning_testarearevisit_test_two_consecutive_no_trigger", "label": ".test_two_consecutive_no_trigger()", "file_type": "code", "source_file": "tests/test_warning.py", "source_location": "L212", "_callable": true}, {"id": "$graphify-root$_tests_test_warning_testwarningfields", "label": "TestWarningFields", "file_type": "code", "source_file": "tests/test_warning.py", "source_location": "L230", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_tests_test_warning_testwarningfields_test_warning_has_confidence_from_types", "label": ".test_warning_has_confidence_from_types()", "file_type": "code", "source_file": "tests/test_warning.py", "source_location": "L231", "_callable": true}, {"id": "$graphify-root$_tests_test_warning_testwarningfields_test_warning_message_not_empty", "label": ".test_warning_message_not_empty()", "file_type": "code", "source_file": "tests/test_warning.py", "source_location": "L242", "_callable": true}, {"id": "$graphify-root$_tests_test_warning_testdayindex", "label": "TestDayIndex", "file_type": "code", "source_file": "tests/test_warning.py", "source_location": "L255", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_tests_test_warning_testdayindex_test_day_index_defaults_to_none", "label": ".test_day_index_defaults_to_none()", "file_type": "code", "source_file": "tests/test_warning.py", "source_location": "L256", "_callable": true}, {"id": "$graphify-root$_tests_test_warning_testdayindex_test_day_index_and_poi_names_set_when_passed", "label": ".test_day_index_and_poi_names_set_when_passed()", "file_type": "code", "source_file": "tests/test_warning.py", "source_location": "L266", "_callable": true}, {"id": "$graphify-root$_tests_test_warning_rationale_1", "label": "Tests for WarningDetector (TDD).", "file_type": "rationale", "source_file": "tests/test_warning.py", "source_location": "L1"}], "edges": [{"source": "$graphify-root$_tests_test_warning_py", "target": "pytest", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_warning.py", "source_location": "L4", "weight": 1.0}, {"source": "$graphify-root$_tests_test_warning_py", "target": "src_data_models", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_warning.py", "source_location": "L6", "weight": 1.0}, {"source": "$graphify-root$_tests_test_warning_py", "target": "src_validation_warning", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_warning.py", "source_location": "L7", "weight": 1.0}, {"source": "$graphify-root$_tests_test_warning_py", "target": "$graphify-root$_tests_test_warning_make_poi", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_warning.py", "source_location": "L14", "weight": 1.0}, {"source": "$graphify-root$_tests_test_warning_make_poi", "target": "poi", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "tests/test_warning.py", "source_location": "L14", "weight": 1.0}, {"source": "$graphify-root$_tests_test_warning_py", "target": "$graphify-root$_tests_test_warning_make_plan", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_warning.py", "source_location": "L29", "weight": 1.0}, {"source": "$graphify-root$_tests_test_warning_make_plan", "target": "itineraryplan", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "tests/test_warning.py", "source_location": "L29", "weight": 1.0}, {"source": "$graphify-root$_tests_test_warning_py", "target": "$graphify-root$_tests_test_warning_make_matrix", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_warning.py", "source_location": "L44", "weight": 1.0}, {"source": "$graphify-root$_tests_test_warning_detector", "target": "fixture", "relation": "references", "confidence": "EXTRACTED", "source_file": "tests/test_warning.py", "source_location": "L58", "weight": 1.0, "context": "decorator"}, {"source": "$graphify-root$_tests_test_warning_py", "target": "$graphify-root$_tests_test_warning_detector", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_warning.py", "source_location": "L59", "weight": 1.0}, {"source": "$graphify-root$_tests_test_warning_detector", "target": "warningdetector", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "tests/test_warning.py", "source_location": "L59", "weight": 1.0}, {"source": "$graphify-root$_tests_test_warning_py", "target": "$graphify-root$_tests_test_warning_testdenseschedule", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_warning.py", "source_location": "L67", "weight": 1.0}, {"source": "$graphify-root$_tests_test_warning_testdenseschedule", "target": "$graphify-root$_tests_test_warning_testdenseschedule_test_dense_trigger_baby", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_warning.py", "source_location": "L68", "weight": 1.0}, {"source": "$graphify-root$_tests_test_warning_testdenseschedule", "target": "$graphify-root$_tests_test_warning_testdenseschedule_test_dense_trigger_friends_heavy", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_warning.py", "source_location": "L77", "weight": 1.0}, {"source": "$graphify-root$_tests_test_warning_testdenseschedule", "target": "$graphify-root$_tests_test_warning_testdenseschedule_test_no_dense_within_threshold", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_warning.py", "source_location": "L86", "weight": 1.0}, {"source": "$graphify-root$_tests_test_warning_testdenseschedule", "target": "$graphify-root$_tests_test_warning_testdenseschedule_test_dense_message_includes_party_type", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_warning.py", "source_location": "L95", "weight": 1.0}, {"source": "$graphify-root$_tests_test_warning_py", "target": "$graphify-root$_tests_test_warning_testphysicalstrain", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_warning.py", "source_location": "L109", "weight": 1.0}, {"source": "$graphify-root$_tests_test_warning_testphysicalstrain", "target": "$graphify-root$_tests_test_warning_testphysicalstrain_test_strain_trigger", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_warning.py", "source_location": "L110", "weight": 1.0}, {"source": "$graphify-root$_tests_test_warning_testphysicalstrain", "target": "$graphify-root$_tests_test_warning_testphysicalstrain_test_no_strain_short_distance", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_warning.py", "source_location": "L123", "weight": 1.0}, {"source": "$graphify-root$_tests_test_warning_py", "target": "$graphify-root$_tests_test_warning_testpurposemismatch", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_warning.py", "source_location": "L138", "weight": 1.0}, {"source": "$graphify-root$_tests_test_warning_testpurposemismatch", "target": "$graphify-root$_tests_test_warning_testpurposemismatch_test_mismatch_cultural_all_sports", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_warning.py", "source_location": "L139", "weight": 1.0}, {"source": "$graphify-root$_tests_test_warning_testpurposemismatch", "target": "$graphify-root$_tests_test_warning_testpurposemismatch_test_no_mismatch_cultural_all_cultural", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_warning.py", "source_location": "L150", "weight": 1.0}, {"source": "$graphify-root$_tests_test_warning_testpurposemismatch", "target": "$graphify-root$_tests_test_warning_testpurposemismatch_test_no_mismatch_when_no_travel_type", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_warning.py", "source_location": "L161", "weight": 1.0}, {"source": "$graphify-root$_tests_test_warning_py", "target": "$graphify-root$_tests_test_warning_testarearevisit", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_warning.py", "source_location": "L173", "weight": 1.0}, {"source": "$graphify-root$_tests_test_warning_testarearevisit", "target": "$graphify-root$_tests_test_warning_testarearevisit_test_consecutive_same_category_triggers", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_warning.py", "source_location": "L174", "weight": 1.0}, {"source": "$graphify-root$_tests_test_warning_testarearevisit", "target": "$graphify-root$_tests_test_warning_testarearevisit_test_all_different_no_revisit", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_warning.py", "source_location": "L187", "weight": 1.0}, {"source": "$graphify-root$_tests_test_warning_testarearevisit", "target": "$graphify-root$_tests_test_warning_testarearevisit_test_three_consecutive_triggers", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_warning.py", "source_location": "L199", "weight": 1.0}, {"source": "$graphify-root$_tests_test_warning_testarearevisit", "target": "$graphify-root$_tests_test_warning_testarearevisit_test_two_consecutive_no_trigger", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_warning.py", "source_location": "L212", "weight": 1.0}, {"source": "$graphify-root$_tests_test_warning_py", "target": "$graphify-root$_tests_test_warning_testwarningfields", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_warning.py", "source_location": "L230", "weight": 1.0}, {"source": "$graphify-root$_tests_test_warning_testwarningfields", "target": "$graphify-root$_tests_test_warning_testwarningfields_test_warning_has_confidence_from_types", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_warning.py", "source_location": "L231", "weight": 1.0}, {"source": "$graphify-root$_tests_test_warning_testwarningfields", "target": "$graphify-root$_tests_test_warning_testwarningfields_test_warning_message_not_empty", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_warning.py", "source_location": "L242", "weight": 1.0}, {"source": "$graphify-root$_tests_test_warning_py", "target": "$graphify-root$_tests_test_warning_testdayindex", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_warning.py", "source_location": "L255", "weight": 1.0}, {"source": "$graphify-root$_tests_test_warning_testdayindex", "target": "$graphify-root$_tests_test_warning_testdayindex_test_day_index_defaults_to_none", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_warning.py", "source_location": "L256", "weight": 1.0}, {"source": "$graphify-root$_tests_test_warning_testdayindex", "target": "$graphify-root$_tests_test_warning_testdayindex_test_day_index_and_poi_names_set_when_passed", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_warning.py", "source_location": "L266", "weight": 1.0}, {"source": "$graphify-root$_tests_test_warning_make_poi", "target": "poi", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_warning.py", "source_location": "L22", "weight": 1.0}, {"source": "$graphify-root$_tests_test_warning_make_plan", "target": "itineraryplan", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_warning.py", "source_location": "L35", "weight": 1.0}, {"source": "$graphify-root$_tests_test_warning_detector", "target": "warningdetector", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_warning.py", "source_location": "L60", "weight": 1.0}, {"source": "$graphify-root$_tests_test_warning_testdenseschedule_test_dense_trigger_baby", "target": "$graphify-root$_tests_test_warning_make_poi", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_warning.py", "source_location": "L70", "weight": 1.0}, {"source": "$graphify-root$_tests_test_warning_testdenseschedule_test_dense_trigger_baby", "target": "$graphify-root$_tests_test_warning_make_matrix", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_warning.py", "source_location": "L71", "weight": 1.0}, {"source": "$graphify-root$_tests_test_warning_testdenseschedule_test_dense_trigger_baby", "target": "$graphify-root$_tests_test_warning_make_plan", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_warning.py", "source_location": "L72", "weight": 1.0}, {"source": "$graphify-root$_tests_test_warning_testdenseschedule_test_dense_trigger_friends_heavy", "target": "$graphify-root$_tests_test_warning_make_poi", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_warning.py", "source_location": "L79", "weight": 1.0}, {"source": "$graphify-root$_tests_test_warning_testdenseschedule_test_dense_trigger_friends_heavy", "target": "$graphify-root$_tests_test_warning_make_matrix", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_warning.py", "source_location": "L80", "weight": 1.0}, {"source": "$graphify-root$_tests_test_warning_testdenseschedule_test_dense_trigger_friends_heavy", "target": "$graphify-root$_tests_test_warning_make_plan", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_warning.py", "source_location": "L81", "weight": 1.0}, {"source": "$graphify-root$_tests_test_warning_testdenseschedule_test_no_dense_within_threshold", "target": "$graphify-root$_tests_test_warning_make_poi", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_warning.py", "source_location": "L88", "weight": 1.0}, {"source": "$graphify-root$_tests_test_warning_testdenseschedule_test_no_dense_within_threshold", "target": "$graphify-root$_tests_test_warning_make_matrix", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_warning.py", "source_location": "L89", "weight": 1.0}, {"source": "$graphify-root$_tests_test_warning_testdenseschedule_test_no_dense_within_threshold", "target": "$graphify-root$_tests_test_warning_make_plan", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_warning.py", "source_location": "L90", "weight": 1.0}, {"source": "$graphify-root$_tests_test_warning_testdenseschedule_test_dense_message_includes_party_type", "target": "$graphify-root$_tests_test_warning_make_poi", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_warning.py", "source_location": "L96", "weight": 1.0}, {"source": "$graphify-root$_tests_test_warning_testdenseschedule_test_dense_message_includes_party_type", "target": "$graphify-root$_tests_test_warning_make_matrix", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_warning.py", "source_location": "L97", "weight": 1.0}, {"source": "$graphify-root$_tests_test_warning_testdenseschedule_test_dense_message_includes_party_type", "target": "$graphify-root$_tests_test_warning_make_plan", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_warning.py", "source_location": "L98", "weight": 1.0}, {"source": "$graphify-root$_tests_test_warning_testphysicalstrain_test_strain_trigger", "target": "$graphify-root$_tests_test_warning_make_poi", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_warning.py", "source_location": "L113", "weight": 1.0}, {"source": "$graphify-root$_tests_test_warning_testphysicalstrain_test_strain_trigger", "target": "$graphify-root$_tests_test_warning_make_plan", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_warning.py", "source_location": "L118", "weight": 1.0}, {"source": "$graphify-root$_tests_test_warning_testphysicalstrain_test_no_strain_short_distance", "target": "$graphify-root$_tests_test_warning_make_poi", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_warning.py", "source_location": "L125", "weight": 1.0}, {"source": "$graphify-root$_tests_test_warning_testphysicalstrain_test_no_strain_short_distance", "target": "$graphify-root$_tests_test_warning_make_plan", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_warning.py", "source_location": "L128", "weight": 1.0}, {"source": "$graphify-root$_tests_test_warning_testpurposemismatch_test_mismatch_cultural_all_sports", "target": "$graphify-root$_tests_test_warning_make_poi", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_warning.py", "source_location": "L142", "weight": 1.0}, {"source": "$graphify-root$_tests_test_warning_testpurposemismatch_test_mismatch_cultural_all_sports", "target": "$graphify-root$_tests_test_warning_make_plan", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_warning.py", "source_location": "L145", "weight": 1.0}, {"source": "$graphify-root$_tests_test_warning_testpurposemismatch_test_no_mismatch_cultural_all_cultural", "target": "$graphify-root$_tests_test_warning_make_poi", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_warning.py", "source_location": "L153", "weight": 1.0}, {"source": "$graphify-root$_tests_test_warning_testpurposemismatch_test_no_mismatch_cultural_all_cultural", "target": "$graphify-root$_tests_test_warning_make_plan", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_warning.py", "source_location": "L156", "weight": 1.0}, {"source": "$graphify-root$_tests_test_warning_testpurposemismatch_test_no_mismatch_when_no_travel_type", "target": "$graphify-root$_tests_test_warning_make_poi", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_warning.py", "source_location": "L162", "weight": 1.0}, {"source": "$graphify-root$_tests_test_warning_testpurposemismatch_test_no_mismatch_when_no_travel_type", "target": "$graphify-root$_tests_test_warning_make_plan", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_warning.py", "source_location": "L163", "weight": 1.0}, {"source": "$graphify-root$_tests_test_warning_testarearevisit_test_consecutive_same_category_triggers", "target": "$graphify-root$_tests_test_warning_make_poi", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_warning.py", "source_location": "L177", "weight": 1.0}, {"source": "$graphify-root$_tests_test_warning_testarearevisit_test_consecutive_same_category_triggers", "target": "$graphify-root$_tests_test_warning_make_plan", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_warning.py", "source_location": "L182", "weight": 1.0}, {"source": "$graphify-root$_tests_test_warning_testarearevisit_test_all_different_no_revisit", "target": "$graphify-root$_tests_test_warning_make_poi", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_warning.py", "source_location": "L189", "weight": 1.0}, {"source": "$graphify-root$_tests_test_warning_testarearevisit_test_all_different_no_revisit", "target": "$graphify-root$_tests_test_warning_make_plan", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_warning.py", "source_location": "L194", "weight": 1.0}, {"source": "$graphify-root$_tests_test_warning_testarearevisit_test_three_consecutive_triggers", "target": "$graphify-root$_tests_test_warning_make_poi", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_warning.py", "source_location": "L202", "weight": 1.0}, {"source": "$graphify-root$_tests_test_warning_testarearevisit_test_three_consecutive_triggers", "target": "$graphify-root$_tests_test_warning_make_plan", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_warning.py", "source_location": "L207", "weight": 1.0}, {"source": "$graphify-root$_tests_test_warning_testarearevisit_test_two_consecutive_no_trigger", "target": "$graphify-root$_tests_test_warning_make_poi", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_warning.py", "source_location": "L215", "weight": 1.0}, {"source": "$graphify-root$_tests_test_warning_testarearevisit_test_two_consecutive_no_trigger", "target": "$graphify-root$_tests_test_warning_make_plan", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_warning.py", "source_location": "L220", "weight": 1.0}, {"source": "$graphify-root$_tests_test_warning_testwarningfields_test_warning_has_confidence_from_types", "target": "$graphify-root$_tests_test_warning_make_poi", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_warning.py", "source_location": "L233", "weight": 1.0}, {"source": "$graphify-root$_tests_test_warning_testwarningfields_test_warning_has_confidence_from_types", "target": "$graphify-root$_tests_test_warning_make_plan", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_warning.py", "source_location": "L236", "weight": 1.0}, {"source": "$graphify-root$_tests_test_warning_testwarningfields_test_warning_message_not_empty", "target": "$graphify-root$_tests_test_warning_make_poi", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_warning.py", "source_location": "L243", "weight": 1.0}, {"source": "$graphify-root$_tests_test_warning_testwarningfields_test_warning_message_not_empty", "target": "$graphify-root$_tests_test_warning_make_matrix", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_warning.py", "source_location": "L244", "weight": 1.0}, {"source": "$graphify-root$_tests_test_warning_testwarningfields_test_warning_message_not_empty", "target": "$graphify-root$_tests_test_warning_make_plan", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_warning.py", "source_location": "L245", "weight": 1.0}, {"source": "$graphify-root$_tests_test_warning_testdayindex_test_day_index_defaults_to_none", "target": "$graphify-root$_tests_test_warning_make_poi", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_warning.py", "source_location": "L257", "weight": 1.0}, {"source": "$graphify-root$_tests_test_warning_testdayindex_test_day_index_defaults_to_none", "target": "$graphify-root$_tests_test_warning_make_matrix", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_warning.py", "source_location": "L258", "weight": 1.0}, {"source": "$graphify-root$_tests_test_warning_testdayindex_test_day_index_defaults_to_none", "target": "$graphify-root$_tests_test_warning_make_plan", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_warning.py", "source_location": "L259", "weight": 1.0}, {"source": "$graphify-root$_tests_test_warning_testdayindex_test_day_index_and_poi_names_set_when_passed", "target": "$graphify-root$_tests_test_warning_make_poi", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_warning.py", "source_location": "L267", "weight": 1.0}, {"source": "$graphify-root$_tests_test_warning_testdayindex_test_day_index_and_poi_names_set_when_passed", "target": "$graphify-root$_tests_test_warning_make_matrix", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_warning.py", "source_location": "L268", "weight": 1.0}, {"source": "$graphify-root$_tests_test_warning_testdayindex_test_day_index_and_poi_names_set_when_passed", "target": "$graphify-root$_tests_test_warning_make_plan", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_warning.py", "source_location": "L269", "weight": 1.0}, {"source": "$graphify-root$_tests_test_warning_rationale_1", "target": "$graphify-root$_tests_test_warning_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_warning.py", "source_location": "L1", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_tests_test_warning_make_plan", "callee": "DayPlan", "is_member_call": false, "source_file": "tests/test_warning.py", "source_location": "L36", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_warning_make_plan", "callee": "PlaceInput", "is_member_call": false, "source_file": "tests/test_warning.py", "source_location": "L36", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_warning_make_matrix", "callee": "items", "is_member_call": true, "source_file": "tests/test_warning.py", "source_location": "L46", "receiver": "pairs"}, {"caller_nid": "$graphify-root$_tests_test_warning_make_matrix", "callee": "setdefault", "is_member_call": true, "source_file": "tests/test_warning.py", "source_location": "L47", "receiver": "matrix"}, {"caller_nid": "$graphify-root$_tests_test_warning_testdenseschedule_test_dense_trigger_baby", "callee": "detect", "is_member_call": true, "source_file": "tests/test_warning.py", "source_location": "L73", "receiver": "detector"}, {"caller_nid": "$graphify-root$_tests_test_warning_testdenseschedule_test_dense_trigger_friends_heavy", "callee": "detect", "is_member_call": true, "source_file": "tests/test_warning.py", "source_location": "L82", "receiver": "detector"}, {"caller_nid": "$graphify-root$_tests_test_warning_testdenseschedule_test_no_dense_within_threshold", "callee": "detect", "is_member_call": true, "source_file": "tests/test_warning.py", "source_location": "L91", "receiver": "detector"}, {"caller_nid": "$graphify-root$_tests_test_warning_testdenseschedule_test_dense_message_includes_party_type", "callee": "detect", "is_member_call": true, "source_file": "tests/test_warning.py", "source_location": "L99", "receiver": "detector"}, {"caller_nid": "$graphify-root$_tests_test_warning_testphysicalstrain_test_strain_trigger", "callee": "detect", "is_member_call": true, "source_file": "tests/test_warning.py", "source_location": "L119", "receiver": "detector"}, {"caller_nid": "$graphify-root$_tests_test_warning_testphysicalstrain_test_no_strain_short_distance", "callee": "detect", "is_member_call": true, "source_file": "tests/test_warning.py", "source_location": "L129", "receiver": "detector"}, {"caller_nid": "$graphify-root$_tests_test_warning_testpurposemismatch_test_mismatch_cultural_all_sports", "callee": "detect", "is_member_call": true, "source_file": "tests/test_warning.py", "source_location": "L146", "receiver": "detector"}, {"caller_nid": "$graphify-root$_tests_test_warning_testpurposemismatch_test_no_mismatch_cultural_all_cultural", "callee": "detect", "is_member_call": true, "source_file": "tests/test_warning.py", "source_location": "L157", "receiver": "detector"}, {"caller_nid": "$graphify-root$_tests_test_warning_testpurposemismatch_test_no_mismatch_when_no_travel_type", "callee": "detect", "is_member_call": true, "source_file": "tests/test_warning.py", "source_location": "L164", "receiver": "detector"}, {"caller_nid": "$graphify-root$_tests_test_warning_testarearevisit_test_consecutive_same_category_triggers", "callee": "detect", "is_member_call": true, "source_file": "tests/test_warning.py", "source_location": "L183", "receiver": "detector"}, {"caller_nid": "$graphify-root$_tests_test_warning_testarearevisit_test_all_different_no_revisit", "callee": "detect", "is_member_call": true, "source_file": "tests/test_warning.py", "source_location": "L195", "receiver": "detector"}, {"caller_nid": "$graphify-root$_tests_test_warning_testarearevisit_test_three_consecutive_triggers", "callee": "detect", "is_member_call": true, "source_file": "tests/test_warning.py", "source_location": "L208", "receiver": "detector"}, {"caller_nid": "$graphify-root$_tests_test_warning_testarearevisit_test_two_consecutive_no_trigger", "callee": "detect", "is_member_call": true, "source_file": "tests/test_warning.py", "source_location": "L221", "receiver": "detector"}, {"caller_nid": "$graphify-root$_tests_test_warning_testwarningfields_test_warning_has_confidence_from_types", "callee": "detect", "is_member_call": true, "source_file": "tests/test_warning.py", "source_location": "L237", "receiver": "detector"}, {"caller_nid": "$graphify-root$_tests_test_warning_testwarningfields_test_warning_message_not_empty", "callee": "detect", "is_member_call": true, "source_file": "tests/test_warning.py", "source_location": "L246", "receiver": "detector"}, {"caller_nid": "$graphify-root$_tests_test_warning_testdayindex_test_day_index_defaults_to_none", "callee": "detect", "is_member_call": true, "source_file": "tests/test_warning.py", "source_location": "L260", "receiver": "detector"}, {"caller_nid": "$graphify-root$_tests_test_warning_testdayindex_test_day_index_and_poi_names_set_when_passed", "callee": "detect", "is_member_call": true, "source_file": "tests/test_warning.py", "source_location": "L270", "receiver": "detector"}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.31/48868fed2687a2f94002ad114dbdf582536015f24400c2b4cee54c1f9ff60414.json b/graphify-out/cache/ast/v0.9.31/48868fed2687a2f94002ad114dbdf582536015f24400c2b4cee54c1f9ff60414.json new file mode 100644 index 0000000..1c12340 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.31/48868fed2687a2f94002ad114dbdf582536015f24400c2b4cee54c1f9ff60414.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_src_data_barrier_free_api_py", "label": "barrier_free_api.py", "file_type": "code", "source_file": "src/data/barrier_free_api.py", "source_location": "L1"}, {"id": "$graphify-root$_src_data_barrier_free_api_barrierfreeplace", "label": "BarrierFreePlace", "file_type": "code", "source_file": "src/data/barrier_free_api.py", "source_location": "L24", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_src_data_barrier_free_api_barrierfreedetail", "label": "BarrierFreeDetail", "file_type": "code", "source_file": "src/data/barrier_free_api.py", "source_location": "L43", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_src_data_barrier_free_api_extract_items", "label": "_extract_items()", "file_type": "code", "source_file": "src/data/barrier_free_api.py", "source_location": "L68", "_callable": true}, {"id": "$graphify-root$_src_data_barrier_free_api_safe_float", "label": "_safe_float()", "file_type": "code", "source_file": "src/data/barrier_free_api.py", "source_location": "L78", "_callable": true}, {"id": "any", "label": "Any", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/src/data/barrier_free_api.py"}, {"id": "$graphify-root$_src_data_barrier_free_api_str", "label": "_str()", "file_type": "code", "source_file": "src/data/barrier_free_api.py", "source_location": "L85", "_callable": true}, {"id": "$graphify-root$_src_data_barrier_free_api_barrierfreeapiclient", "label": "BarrierFreeAPIClient", "file_type": "code", "source_file": "src/data/barrier_free_api.py", "source_location": "L91", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_src_data_barrier_free_api_barrierfreeapiclient_init", "label": ".__init__()", "file_type": "code", "source_file": "src/data/barrier_free_api.py", "source_location": "L97", "_callable": true}, {"id": "$graphify-root$_src_data_barrier_free_api_barrierfreeapiclient_from_settings", "label": ".from_settings()", "file_type": "code", "source_file": "src/data/barrier_free_api.py", "source_location": "L104", "_callable": true}, {"id": "settings", "label": "Settings", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/src/data/barrier_free_api.py"}, {"id": "$graphify-root$_src_data_barrier_free_api_barrierfreeapiclient_fetch_page", "label": ".fetch_page()", "file_type": "code", "source_file": "src/data/barrier_free_api.py", "source_location": "L112", "_callable": true}, {"id": "$graphify-root$_src_data_barrier_free_api_barrierfreeapiclient_fetch_detail", "label": ".fetch_detail()", "file_type": "code", "source_file": "src/data/barrier_free_api.py", "source_location": "L163", "_callable": true}, {"id": "$graphify-root$_src_data_barrier_free_api_barrierfreeapiclient_fetch_all", "label": ".fetch_all()", "file_type": "code", "source_file": "src/data/barrier_free_api.py", "source_location": "L210", "_callable": true}, {"id": "$graphify-root$_src_data_barrier_free_api_rationale_1", "label": "\ud55c\uad6d\uad00\uad11\uacf5\uc0ac \ubb34\uc7a5\uc560 \uc5ec\ud589 \uc815\ubcf4 API \ud074\ub77c\uc774\uc5b8\ud2b8 (B551011/KorWithService2). \uc624\ud37c\ub808\uc774\uc158: areaBasedList2 \u2014\u2026", "file_type": "rationale", "source_file": "src/data/barrier_free_api.py", "source_location": "L1"}, {"id": "$graphify-root$_src_data_barrier_free_api_rationale_25", "label": "areaBasedList2 \uae30\ubc18 \uae30\ubcf8 POI + detailWithTour2 \uc811\uadfc\uc131 \uc138\ubd80 \ud56d\ubaa9.", "file_type": "rationale", "source_file": "src/data/barrier_free_api.py", "source_location": "L25"}, {"id": "$graphify-root$_src_data_barrier_free_api_rationale_44", "label": "detailWithTour2 \uc751\ub2f5 \uc804\uccb4 \ud544\ub4dc (\ud544\uc694 \uc2dc \uac1c\ubcc4 \uc870\ud68c\uc6a9).", "file_type": "rationale", "source_file": "src/data/barrier_free_api.py", "source_location": "L44"}, {"id": "$graphify-root$_src_data_barrier_free_api_rationale_92", "label": "\ubb34\uc7a5\uc560 \uc5ec\ud589 \uc815\ubcf4 API \u2014 \ube44\ub3d9\uae30 \ud074\ub77c\uc774\uc5b8\ud2b8. Graceful Fallback: API \ud638\ucd9c \uc2e4\ud328 \uc2dc \ube48 \ub9ac\uc2a4\ud2b8/None \ubc18\ud658.", "file_type": "rationale", "source_file": "src/data/barrier_free_api.py", "source_location": "L92"}, {"id": "$graphify-root$_src_data_barrier_free_api_rationale_119", "label": "areaBasedList2 \u2014 \ubb34\uc7a5\uc560 \uc5ec\ud589 POI \ubaa9\ub85d \ud55c \ud398\uc774\uc9c0 \uc870\ud68c. \ubc18\ud658 \ud544\ub4dc: contentid, title, addr1, mapx,\u2026", "file_type": "rationale", "source_file": "src/data/barrier_free_api.py", "source_location": "L119"}, {"id": "$graphify-root$_src_data_barrier_free_api_rationale_164", "label": "detailWithTour2 \u2014 \ub2e8\uc77c \ucf58\ud150\uce20 \ubb34\uc7a5\uc560 \uc811\uadfc\uc131 \uc0c1\uc138 \uc870\ud68c. \uc9c0\uccb4\uc7a5\uc560\u00b7\uc2dc\uac01\uc7a5\uc560\u00b7\uccad\uac01\uc7a5\uc560\u00b7\uc601\uc720\uc544\uac00\uc871 \ud56d\ubaa9\uc744 \ud14d\uc2a4\ud2b8\ub85c \ubc18\ud658.\u2026", "file_type": "rationale", "source_file": "src/data/barrier_free_api.py", "source_location": "L164"}, {"id": "$graphify-root$_src_data_barrier_free_api_rationale_211", "label": "\uc804\uccb4 \ubb34\uc7a5\uc560 \uc5ec\ud589 POI \ubaa9\ub85d \uc870\ud68c (\ud398\uc774\uc9c0 \uc21c\ud68c, areaBasedList2).", "file_type": "rationale", "source_file": "src/data/barrier_free_api.py", "source_location": "L211"}], "edges": [{"source": "$graphify-root$_src_data_barrier_free_api_py", "target": "dataclasses", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "src/data/barrier_free_api.py", "source_location": "L11", "weight": 1.0}, {"source": "$graphify-root$_src_data_barrier_free_api_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "src/data/barrier_free_api.py", "source_location": "L12", "weight": 1.0}, {"source": "$graphify-root$_src_data_barrier_free_api_py", "target": "httpx", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "src/data/barrier_free_api.py", "source_location": "L14", "weight": 1.0}, {"source": "$graphify-root$_src_data_barrier_free_api_py", "target": "src_data_models", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "src/data/barrier_free_api.py", "source_location": "L16", "weight": 1.0}, {"source": "$graphify-root$_src_data_barrier_free_api_py", "target": "$graphify-root$_src_data_barrier_free_api_barrierfreeplace", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/data/barrier_free_api.py", "source_location": "L24", "weight": 1.0}, {"source": "$graphify-root$_src_data_barrier_free_api_py", "target": "$graphify-root$_src_data_barrier_free_api_barrierfreedetail", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/data/barrier_free_api.py", "source_location": "L43", "weight": 1.0}, {"source": "$graphify-root$_src_data_barrier_free_api_py", "target": "$graphify-root$_src_data_barrier_free_api_extract_items", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/data/barrier_free_api.py", "source_location": "L68", "weight": 1.0}, {"source": "$graphify-root$_src_data_barrier_free_api_py", "target": "$graphify-root$_src_data_barrier_free_api_safe_float", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/data/barrier_free_api.py", "source_location": "L78", "weight": 1.0}, {"source": "$graphify-root$_src_data_barrier_free_api_safe_float", "target": "any", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "src/data/barrier_free_api.py", "source_location": "L78", "weight": 1.0}, {"source": "$graphify-root$_src_data_barrier_free_api_py", "target": "$graphify-root$_src_data_barrier_free_api_str", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/data/barrier_free_api.py", "source_location": "L85", "weight": 1.0}, {"source": "$graphify-root$_src_data_barrier_free_api_str", "target": "any", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "src/data/barrier_free_api.py", "source_location": "L85", "weight": 1.0}, {"source": "$graphify-root$_src_data_barrier_free_api_py", "target": "$graphify-root$_src_data_barrier_free_api_barrierfreeapiclient", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/data/barrier_free_api.py", "source_location": "L91", "weight": 1.0}, {"source": "$graphify-root$_src_data_barrier_free_api_barrierfreeapiclient", "target": "$graphify-root$_src_data_barrier_free_api_barrierfreeapiclient_init", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/data/barrier_free_api.py", "source_location": "L97", "weight": 1.0}, {"source": "$graphify-root$_src_data_barrier_free_api_barrierfreeapiclient", "target": "$graphify-root$_src_data_barrier_free_api_barrierfreeapiclient_from_settings", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/data/barrier_free_api.py", "source_location": "L104", "weight": 1.0}, {"source": "$graphify-root$_src_data_barrier_free_api_barrierfreeapiclient_from_settings", "target": "settings", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "src/data/barrier_free_api.py", "source_location": "L104", "weight": 1.0}, {"source": "$graphify-root$_src_data_barrier_free_api_barrierfreeapiclient", "target": "$graphify-root$_src_data_barrier_free_api_barrierfreeapiclient_fetch_page", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/data/barrier_free_api.py", "source_location": "L112", "weight": 1.0}, {"source": "$graphify-root$_src_data_barrier_free_api_barrierfreeapiclient_fetch_page", "target": "$graphify-root$_src_data_barrier_free_api_barrierfreeplace", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "src/data/barrier_free_api.py", "source_location": "L112", "weight": 1.0}, {"source": "$graphify-root$_src_data_barrier_free_api_barrierfreeapiclient", "target": "$graphify-root$_src_data_barrier_free_api_barrierfreeapiclient_fetch_detail", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/data/barrier_free_api.py", "source_location": "L163", "weight": 1.0}, {"source": "$graphify-root$_src_data_barrier_free_api_barrierfreeapiclient_fetch_detail", "target": "$graphify-root$_src_data_barrier_free_api_barrierfreedetail", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "src/data/barrier_free_api.py", "source_location": "L163", "weight": 1.0}, {"source": "$graphify-root$_src_data_barrier_free_api_barrierfreeapiclient", "target": "$graphify-root$_src_data_barrier_free_api_barrierfreeapiclient_fetch_all", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/data/barrier_free_api.py", "source_location": "L210", "weight": 1.0}, {"source": "$graphify-root$_src_data_barrier_free_api_barrierfreeapiclient_fetch_all", "target": "$graphify-root$_src_data_barrier_free_api_barrierfreeplace", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "src/data/barrier_free_api.py", "source_location": "L210", "weight": 1.0}, {"source": "$graphify-root$_src_data_barrier_free_api_barrierfreeapiclient_from_settings", "target": "settings", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/data/barrier_free_api.py", "source_location": "L106", "weight": 1.0}, {"source": "$graphify-root$_src_data_barrier_free_api_barrierfreeapiclient_fetch_page", "target": "$graphify-root$_src_data_barrier_free_api_extract_items", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/data/barrier_free_api.py", "source_location": "L146", "weight": 1.0}, {"source": "$graphify-root$_src_data_barrier_free_api_barrierfreeapiclient_fetch_page", "target": "$graphify-root$_src_data_barrier_free_api_str", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/data/barrier_free_api.py", "source_location": "L147", "weight": 1.0}, {"source": "$graphify-root$_src_data_barrier_free_api_barrierfreeapiclient_fetch_page", "target": "$graphify-root$_src_data_barrier_free_api_safe_float", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/data/barrier_free_api.py", "source_location": "L150", "weight": 1.0}, {"source": "$graphify-root$_src_data_barrier_free_api_barrierfreeapiclient_fetch_page", "target": "$graphify-root$_src_data_barrier_free_api_barrierfreeplace", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/data/barrier_free_api.py", "source_location": "L154", "weight": 1.0}, {"source": "$graphify-root$_src_data_barrier_free_api_barrierfreeapiclient_fetch_detail", "target": "$graphify-root$_src_data_barrier_free_api_extract_items", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/data/barrier_free_api.py", "source_location": "L186", "weight": 1.0}, {"source": "$graphify-root$_src_data_barrier_free_api_barrierfreeapiclient_fetch_detail", "target": "$graphify-root$_src_data_barrier_free_api_barrierfreedetail", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/data/barrier_free_api.py", "source_location": "L190", "weight": 1.0}, {"source": "$graphify-root$_src_data_barrier_free_api_barrierfreeapiclient_fetch_detail", "target": "$graphify-root$_src_data_barrier_free_api_str", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/data/barrier_free_api.py", "source_location": "L191", "weight": 1.0}, {"source": "$graphify-root$_src_data_barrier_free_api_barrierfreeapiclient_fetch_all", "target": "$graphify-root$_src_data_barrier_free_api_barrierfreeapiclient_fetch_page", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/data/barrier_free_api.py", "source_location": "L215", "weight": 1.0}, {"source": "$graphify-root$_src_data_barrier_free_api_rationale_1", "target": "$graphify-root$_src_data_barrier_free_api_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/data/barrier_free_api.py", "source_location": "L1", "weight": 1.0}, {"source": "$graphify-root$_src_data_barrier_free_api_rationale_25", "target": "$graphify-root$_src_data_barrier_free_api_barrierfreeplace", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/data/barrier_free_api.py", "source_location": "L25", "weight": 1.0}, {"source": "$graphify-root$_src_data_barrier_free_api_rationale_44", "target": "$graphify-root$_src_data_barrier_free_api_barrierfreedetail", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/data/barrier_free_api.py", "source_location": "L44", "weight": 1.0}, {"source": "$graphify-root$_src_data_barrier_free_api_rationale_92", "target": "$graphify-root$_src_data_barrier_free_api_barrierfreeapiclient", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/data/barrier_free_api.py", "source_location": "L92", "weight": 1.0}, {"source": "$graphify-root$_src_data_barrier_free_api_rationale_119", "target": "$graphify-root$_src_data_barrier_free_api_barrierfreeapiclient_fetch_page", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/data/barrier_free_api.py", "source_location": "L119", "weight": 1.0}, {"source": "$graphify-root$_src_data_barrier_free_api_rationale_164", "target": "$graphify-root$_src_data_barrier_free_api_barrierfreeapiclient_fetch_detail", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/data/barrier_free_api.py", "source_location": "L164", "weight": 1.0}, {"source": "$graphify-root$_src_data_barrier_free_api_rationale_211", "target": "$graphify-root$_src_data_barrier_free_api_barrierfreeapiclient_fetch_all", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/data/barrier_free_api.py", "source_location": "L211", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_src_data_barrier_free_api_extract_items", "callee": "dict", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "src/data/barrier_free_api.py", "source_location": "L71"}, {"caller_nid": "$graphify-root$_src_data_barrier_free_api_extract_items", "callee": "KeyError", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "src/data/barrier_free_api.py", "source_location": "L74"}, {"caller_nid": "$graphify-root$_src_data_barrier_free_api_extract_items", "callee": "TypeError", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "src/data/barrier_free_api.py", "source_location": "L74"}, {"caller_nid": "$graphify-root$_src_data_barrier_free_api_safe_float", "callee": "TypeError", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "src/data/barrier_free_api.py", "source_location": "L81"}, {"caller_nid": "$graphify-root$_src_data_barrier_free_api_safe_float", "callee": "ValueError", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "src/data/barrier_free_api.py", "source_location": "L81"}, {"caller_nid": "$graphify-root$_src_data_barrier_free_api_str", "callee": "strip", "is_member_call": true, "source_file": "src/data/barrier_free_api.py", "source_location": "L88", "receiver": null}, {"caller_nid": "$graphify-root$_src_data_barrier_free_api_barrierfreeapiclient_init", "callee": "ValueError", "is_member_call": false, "source_file": "src/data/barrier_free_api.py", "source_location": "L99", "receiver": null}, {"caller_nid": "$graphify-root$_src_data_barrier_free_api_barrierfreeapiclient_from_settings", "callee": "cls", "is_member_call": false, "source_file": "src/data/barrier_free_api.py", "source_location": "L110", "receiver": null}, {"caller_nid": "$graphify-root$_src_data_barrier_free_api_barrierfreeapiclient_fetch_page", "callee": "AsyncClient", "is_member_call": true, "source_file": "src/data/barrier_free_api.py", "source_location": "L138", "receiver": "httpx"}, {"caller_nid": "$graphify-root$_src_data_barrier_free_api_barrierfreeapiclient_fetch_page", "callee": "get", "is_member_call": true, "source_file": "src/data/barrier_free_api.py", "source_location": "L139", "receiver": "client"}, {"caller_nid": "$graphify-root$_src_data_barrier_free_api_barrierfreeapiclient_fetch_page", "callee": "raise_for_status", "is_member_call": true, "source_file": "src/data/barrier_free_api.py", "source_location": "L140", "receiver": "resp"}, {"caller_nid": "$graphify-root$_src_data_barrier_free_api_barrierfreeapiclient_fetch_page", "callee": "json", "is_member_call": true, "source_file": "src/data/barrier_free_api.py", "source_location": "L141", "receiver": "resp"}, {"caller_nid": "$graphify-root$_src_data_barrier_free_api_barrierfreeapiclient_fetch_page", "callee": "get", "is_member_call": true, "source_file": "src/data/barrier_free_api.py", "source_location": "L147", "receiver": "item"}, {"caller_nid": "$graphify-root$_src_data_barrier_free_api_barrierfreeapiclient_fetch_page", "callee": "get", "is_member_call": true, "source_file": "src/data/barrier_free_api.py", "source_location": "L147", "receiver": "item"}, {"caller_nid": "$graphify-root$_src_data_barrier_free_api_barrierfreeapiclient_fetch_page", "callee": "get", "is_member_call": true, "source_file": "src/data/barrier_free_api.py", "source_location": "L148", "receiver": "item"}, {"caller_nid": "$graphify-root$_src_data_barrier_free_api_barrierfreeapiclient_fetch_page", "callee": "get", "is_member_call": true, "source_file": "src/data/barrier_free_api.py", "source_location": "L149", "receiver": "item"}, {"caller_nid": "$graphify-root$_src_data_barrier_free_api_barrierfreeapiclient_fetch_page", "callee": "get", "is_member_call": true, "source_file": "src/data/barrier_free_api.py", "source_location": "L149", "receiver": "item"}, {"caller_nid": "$graphify-root$_src_data_barrier_free_api_barrierfreeapiclient_fetch_page", "callee": "get", "is_member_call": true, "source_file": "src/data/barrier_free_api.py", "source_location": "L150", "receiver": "item"}, {"caller_nid": "$graphify-root$_src_data_barrier_free_api_barrierfreeapiclient_fetch_page", "callee": "get", "is_member_call": true, "source_file": "src/data/barrier_free_api.py", "source_location": "L150", "receiver": "item"}, {"caller_nid": "$graphify-root$_src_data_barrier_free_api_barrierfreeapiclient_fetch_page", "callee": "get", "is_member_call": true, "source_file": "src/data/barrier_free_api.py", "source_location": "L151", "receiver": "item"}, {"caller_nid": "$graphify-root$_src_data_barrier_free_api_barrierfreeapiclient_fetch_page", "callee": "get", "is_member_call": true, "source_file": "src/data/barrier_free_api.py", "source_location": "L151", "receiver": "item"}, {"caller_nid": "$graphify-root$_src_data_barrier_free_api_barrierfreeapiclient_fetch_page", "callee": "append", "is_member_call": true, "source_file": "src/data/barrier_free_api.py", "source_location": "L154", "receiver": "places"}, {"caller_nid": "$graphify-root$_src_data_barrier_free_api_barrierfreeapiclient_fetch_detail", "callee": "AsyncClient", "is_member_call": true, "source_file": "src/data/barrier_free_api.py", "source_location": "L179", "receiver": "httpx"}, {"caller_nid": "$graphify-root$_src_data_barrier_free_api_barrierfreeapiclient_fetch_detail", "callee": "get", "is_member_call": true, "source_file": "src/data/barrier_free_api.py", "source_location": "L180", "receiver": "client"}, {"caller_nid": "$graphify-root$_src_data_barrier_free_api_barrierfreeapiclient_fetch_detail", "callee": "raise_for_status", "is_member_call": true, "source_file": "src/data/barrier_free_api.py", "source_location": "L181", "receiver": "resp"}, {"caller_nid": "$graphify-root$_src_data_barrier_free_api_barrierfreeapiclient_fetch_detail", "callee": "json", "is_member_call": true, "source_file": "src/data/barrier_free_api.py", "source_location": "L182", "receiver": "resp"}, {"caller_nid": "$graphify-root$_src_data_barrier_free_api_barrierfreeapiclient_fetch_detail", "callee": "get", "is_member_call": true, "source_file": "src/data/barrier_free_api.py", "source_location": "L191", "receiver": "item"}, {"caller_nid": "$graphify-root$_src_data_barrier_free_api_barrierfreeapiclient_fetch_detail", "callee": "get", "is_member_call": true, "source_file": "src/data/barrier_free_api.py", "source_location": "L192", "receiver": "item"}, {"caller_nid": "$graphify-root$_src_data_barrier_free_api_barrierfreeapiclient_fetch_detail", "callee": "get", "is_member_call": true, "source_file": "src/data/barrier_free_api.py", "source_location": "L193", "receiver": "item"}, {"caller_nid": "$graphify-root$_src_data_barrier_free_api_barrierfreeapiclient_fetch_detail", "callee": "get", "is_member_call": true, "source_file": "src/data/barrier_free_api.py", "source_location": "L194", "receiver": "item"}, {"caller_nid": "$graphify-root$_src_data_barrier_free_api_barrierfreeapiclient_fetch_detail", "callee": "get", "is_member_call": true, "source_file": "src/data/barrier_free_api.py", "source_location": "L195", "receiver": "item"}, {"caller_nid": "$graphify-root$_src_data_barrier_free_api_barrierfreeapiclient_fetch_detail", "callee": "get", "is_member_call": true, "source_file": "src/data/barrier_free_api.py", "source_location": "L196", "receiver": "item"}, {"caller_nid": "$graphify-root$_src_data_barrier_free_api_barrierfreeapiclient_fetch_detail", "callee": "get", "is_member_call": true, "source_file": "src/data/barrier_free_api.py", "source_location": "L197", "receiver": "item"}, {"caller_nid": "$graphify-root$_src_data_barrier_free_api_barrierfreeapiclient_fetch_detail", "callee": "get", "is_member_call": true, "source_file": "src/data/barrier_free_api.py", "source_location": "L198", "receiver": "item"}, {"caller_nid": "$graphify-root$_src_data_barrier_free_api_barrierfreeapiclient_fetch_detail", "callee": "get", "is_member_call": true, "source_file": "src/data/barrier_free_api.py", "source_location": "L199", "receiver": "item"}, {"caller_nid": "$graphify-root$_src_data_barrier_free_api_barrierfreeapiclient_fetch_detail", "callee": "get", "is_member_call": true, "source_file": "src/data/barrier_free_api.py", "source_location": "L200", "receiver": "item"}, {"caller_nid": "$graphify-root$_src_data_barrier_free_api_barrierfreeapiclient_fetch_detail", "callee": "get", "is_member_call": true, "source_file": "src/data/barrier_free_api.py", "source_location": "L201", "receiver": "item"}, {"caller_nid": "$graphify-root$_src_data_barrier_free_api_barrierfreeapiclient_fetch_detail", "callee": "get", "is_member_call": true, "source_file": "src/data/barrier_free_api.py", "source_location": "L202", "receiver": "item"}, {"caller_nid": "$graphify-root$_src_data_barrier_free_api_barrierfreeapiclient_fetch_detail", "callee": "get", "is_member_call": true, "source_file": "src/data/barrier_free_api.py", "source_location": "L203", "receiver": "item"}, {"caller_nid": "$graphify-root$_src_data_barrier_free_api_barrierfreeapiclient_fetch_detail", "callee": "get", "is_member_call": true, "source_file": "src/data/barrier_free_api.py", "source_location": "L204", "receiver": "item"}, {"caller_nid": "$graphify-root$_src_data_barrier_free_api_barrierfreeapiclient_fetch_detail", "callee": "get", "is_member_call": true, "source_file": "src/data/barrier_free_api.py", "source_location": "L205", "receiver": "item"}, {"caller_nid": "$graphify-root$_src_data_barrier_free_api_barrierfreeapiclient_fetch_detail", "callee": "get", "is_member_call": true, "source_file": "src/data/barrier_free_api.py", "source_location": "L206", "receiver": "item"}, {"caller_nid": "$graphify-root$_src_data_barrier_free_api_barrierfreeapiclient_fetch_detail", "callee": "get", "is_member_call": true, "source_file": "src/data/barrier_free_api.py", "source_location": "L207", "receiver": "item"}, {"caller_nid": "$graphify-root$_src_data_barrier_free_api_barrierfreeapiclient_fetch_all", "callee": "extend", "is_member_call": true, "source_file": "src/data/barrier_free_api.py", "source_location": "L218", "receiver": "results"}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.31/49889c0f0087e6353e14ea0f69192481591e6cc7e9df229041261395d4068170.json b/graphify-out/cache/ast/v0.9.31/49889c0f0087e6353e14ea0f69192481591e6cc7e9df229041261395d4068170.json new file mode 100644 index 0000000..372af19 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.31/49889c0f0087e6353e14ea0f69192481591e6cc7e9df229041261395d4068170.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_src_api_static_manifest_json", "label": "manifest.json", "file_type": "code", "source_file": "src/api/static/manifest.json", "source_location": "L1"}, {"id": "$graphify-root$_src_api_static_manifest_name", "label": "name", "file_type": "code", "source_file": "src/api/static/manifest.json", "source_location": "L2"}, {"id": "$graphify-root$_src_api_static_manifest_short_name", "label": "short_name", "file_type": "code", "source_file": "src/api/static/manifest.json", "source_location": "L3"}, {"id": "$graphify-root$_src_api_static_manifest_description", "label": "description", "file_type": "code", "source_file": "src/api/static/manifest.json", "source_location": "L4"}, {"id": "$graphify-root$_src_api_static_manifest_start_url", "label": "start_url", "file_type": "code", "source_file": "src/api/static/manifest.json", "source_location": "L5"}, {"id": "$graphify-root$_src_api_static_manifest_display", "label": "display", "file_type": "code", "source_file": "src/api/static/manifest.json", "source_location": "L6"}, {"id": "$graphify-root$_src_api_static_manifest_background_color", "label": "background_color", "file_type": "code", "source_file": "src/api/static/manifest.json", "source_location": "L7"}, {"id": "$graphify-root$_src_api_static_manifest_theme_color", "label": "theme_color", "file_type": "code", "source_file": "src/api/static/manifest.json", "source_location": "L8"}, {"id": "$graphify-root$_src_api_static_manifest_orientation", "label": "orientation", "file_type": "code", "source_file": "src/api/static/manifest.json", "source_location": "L9"}, {"id": "$graphify-root$_src_api_static_manifest_lang", "label": "lang", "file_type": "code", "source_file": "src/api/static/manifest.json", "source_location": "L10"}, {"id": "$graphify-root$_src_api_static_manifest_categories", "label": "categories", "file_type": "code", "source_file": "src/api/static/manifest.json", "source_location": "L11"}, {"id": "ref_travel", "label": "travel", "file_type": "concept", "source_file": "src/api/static/manifest.json", "source_location": "L11"}, {"id": "ref_utilities", "label": "utilities", "file_type": "concept", "source_file": "src/api/static/manifest.json", "source_location": "L11"}, {"id": "$graphify-root$_src_api_static_manifest_icons", "label": "icons", "file_type": "code", "source_file": "src/api/static/manifest.json", "source_location": "L12"}, {"id": "$graphify-root$_src_api_static_manifest_shortcuts", "label": "shortcuts", "file_type": "code", "source_file": "src/api/static/manifest.json", "source_location": "L26"}], "edges": [{"source": "$graphify-root$_src_api_static_manifest_json", "target": "$graphify-root$_src_api_static_manifest_name", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/api/static/manifest.json", "source_location": "L2", "weight": 1.0}, {"source": "$graphify-root$_src_api_static_manifest_json", "target": "$graphify-root$_src_api_static_manifest_short_name", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/api/static/manifest.json", "source_location": "L3", "weight": 1.0}, {"source": "$graphify-root$_src_api_static_manifest_json", "target": "$graphify-root$_src_api_static_manifest_description", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/api/static/manifest.json", "source_location": "L4", "weight": 1.0}, {"source": "$graphify-root$_src_api_static_manifest_json", "target": "$graphify-root$_src_api_static_manifest_start_url", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/api/static/manifest.json", "source_location": "L5", "weight": 1.0}, {"source": "$graphify-root$_src_api_static_manifest_json", "target": "$graphify-root$_src_api_static_manifest_display", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/api/static/manifest.json", "source_location": "L6", "weight": 1.0}, {"source": "$graphify-root$_src_api_static_manifest_json", "target": "$graphify-root$_src_api_static_manifest_background_color", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/api/static/manifest.json", "source_location": "L7", "weight": 1.0}, {"source": "$graphify-root$_src_api_static_manifest_json", "target": "$graphify-root$_src_api_static_manifest_theme_color", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/api/static/manifest.json", "source_location": "L8", "weight": 1.0}, {"source": "$graphify-root$_src_api_static_manifest_json", "target": "$graphify-root$_src_api_static_manifest_orientation", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/api/static/manifest.json", "source_location": "L9", "weight": 1.0}, {"source": "$graphify-root$_src_api_static_manifest_json", "target": "$graphify-root$_src_api_static_manifest_lang", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/api/static/manifest.json", "source_location": "L10", "weight": 1.0}, {"source": "$graphify-root$_src_api_static_manifest_json", "target": "$graphify-root$_src_api_static_manifest_categories", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/api/static/manifest.json", "source_location": "L11", "weight": 1.0}, {"source": "$graphify-root$_src_api_static_manifest_categories", "target": "ref_travel", "relation": "extends", "confidence": "EXTRACTED", "source_file": "src/api/static/manifest.json", "source_location": "L11", "weight": 1.0, "context": "import"}, {"source": "$graphify-root$_src_api_static_manifest_categories", "target": "ref_utilities", "relation": "extends", "confidence": "EXTRACTED", "source_file": "src/api/static/manifest.json", "source_location": "L11", "weight": 1.0, "context": "import"}, {"source": "$graphify-root$_src_api_static_manifest_json", "target": "$graphify-root$_src_api_static_manifest_icons", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/api/static/manifest.json", "source_location": "L12", "weight": 1.0}, {"source": "$graphify-root$_src_api_static_manifest_json", "target": "$graphify-root$_src_api_static_manifest_shortcuts", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/api/static/manifest.json", "source_location": "L26", "weight": 1.0}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.31/4ce63ec57dd4b7954fbf9fcfb160d38f6ebc5cda477b2b38124b88774a785215.json b/graphify-out/cache/ast/v0.9.31/4ce63ec57dd4b7954fbf9fcfb160d38f6ebc5cda477b2b38124b88774a785215.json new file mode 100644 index 0000000..671fc51 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.31/4ce63ec57dd4b7954fbf9fcfb160d38f6ebc5cda477b2b38124b88774a785215.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_src_data_tour_api_py", "label": "tour_api.py", "file_type": "code", "source_file": "src/data/tour_api.py", "source_location": "L1"}, {"id": "$graphify-root$_src_data_tour_api_parse_usetime", "label": "_parse_usetime()", "file_type": "code", "source_file": "src/data/tour_api.py", "source_location": "L18", "_callable": true}, {"id": "$graphify-root$_src_data_tour_api_extract_items", "label": "_extract_items()", "file_type": "code", "source_file": "src/data/tour_api.py", "source_location": "L27", "_callable": true}, {"id": "$graphify-root$_src_data_tour_api_tourapiclient", "label": "TourAPIClient", "file_type": "code", "source_file": "src/data/tour_api.py", "source_location": "L38", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_src_data_tour_api_tourapiclient_init", "label": ".__init__()", "file_type": "code", "source_file": "src/data/tour_api.py", "source_location": "L48", "_callable": true}, {"id": "$graphify-root$_src_data_tour_api_tourapiclient_from_settings", "label": ".from_settings()", "file_type": "code", "source_file": "src/data/tour_api.py", "source_location": "L62", "_callable": true}, {"id": "settings", "label": "Settings", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/src/data/tour_api.py"}, {"id": "$graphify-root$_src_data_tour_api_tourapiclient_search_poi", "label": ".search_poi()", "file_type": "code", "source_file": "src/data/tour_api.py", "source_location": "L70", "_callable": true}, {"id": "poi", "label": "POI", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/src/data/tour_api.py"}, {"id": "$graphify-root$_src_data_tour_api_tourapiclient_get_operating_hours", "label": ".get_operating_hours()", "file_type": "code", "source_file": "src/data/tour_api.py", "source_location": "L123", "_callable": true}, {"id": "$graphify-root$_src_data_tour_api_tourapiclient_clear_cache", "label": ".clear_cache()", "file_type": "code", "source_file": "src/data/tour_api.py", "source_location": "L157", "_callable": true}, {"id": "$graphify-root$_src_data_tour_api_rationale_1", "label": "\ud55c\uad6d\uad00\uad11\uacf5\uc0ac TourAPI v2 \ube44\ub3d9\uae30 \ud074\ub77c\uc774\uc5b8\ud2b8 (httpx + Graceful Fallback).", "file_type": "rationale", "source_file": "src/data/tour_api.py", "source_location": "L1"}, {"id": "$graphify-root$_src_data_tour_api_rationale_19", "label": "09:00 ~ 18:00' \ud615\ud0dc\uc5d0\uc11c (open, close) \ud30c\uc2f1. \uc2e4\ud328 \uc2dc \ud3f4\ubc31.", "file_type": "rationale", "source_file": "src/data/tour_api.py", "source_location": "L19"}, {"id": "$graphify-root$_src_data_tour_api_rationale_28", "label": "TourAPI \uc751\ub2f5 JSON\uc5d0\uc11c item \ub9ac\uc2a4\ud2b8 \ucd94\ucd9c.", "file_type": "rationale", "source_file": "src/data/tour_api.py", "source_location": "L28"}, {"id": "$graphify-root$_src_data_tour_api_rationale_39", "label": "\ud55c\uad6d\uad00\uad11\uacf5\uc0ac TourAPI v2 \ube44\ub3d9\uae30 \ud074\ub77c\uc774\uc5b8\ud2b8. \ubaa8\ub4e0 \ud638\ucd9c\uc740 \uc2e4\ud328 \uc2dc Graceful Fallback: - search_poi \u2192 \ube48\u2026", "file_type": "rationale", "source_file": "src/data/tour_api.py", "source_location": "L39"}, {"id": "$graphify-root$_src_data_tour_api_rationale_63", "label": "Settings\uc5d0\uc11c \ud0a4 \ub85c\ub4dc. \ud0a4 \uc5c6\uc73c\uba74 None \ubc18\ud658 (Graceful Fallback \uc9c4\uc785\uc810).", "file_type": "rationale", "source_file": "src/data/tour_api.py", "source_location": "L63"}, {"id": "$graphify-root$_src_data_tour_api_rationale_76", "label": "\ud0a4\uc6cc\ub4dc\ub85c POI \uac80\uc0c9. \uc2e4\ud328 \uc2dc \ube48 \ub9ac\uc2a4\ud2b8 \ubc18\ud658.", "file_type": "rationale", "source_file": "src/data/tour_api.py", "source_location": "L76"}, {"id": "$graphify-root$_src_data_tour_api_rationale_128", "label": "\uc6b4\uc601\uc2dc\uac04 \uc870\ud68c. \uc2e4\ud328 \ub610\ub294 \ub370\uc774\ud130 \uc5c6\uc73c\uba74 (\"00:00\", \"23:59\") \ubc18\ud658.", "file_type": "rationale", "source_file": "src/data/tour_api.py", "source_location": "L128"}], "edges": [{"source": "$graphify-root$_src_data_tour_api_py", "target": "re", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "src/data/tour_api.py", "source_location": "L4", "weight": 1.0}, {"source": "$graphify-root$_src_data_tour_api_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "src/data/tour_api.py", "source_location": "L5", "weight": 1.0}, {"source": "$graphify-root$_src_data_tour_api_py", "target": "httpx", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "src/data/tour_api.py", "source_location": "L7", "weight": 1.0}, {"source": "$graphify-root$_src_data_tour_api_py", "target": "src_data_models", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "src/data/tour_api.py", "source_location": "L9", "weight": 1.0}, {"source": "$graphify-root$_src_data_tour_api_py", "target": "$graphify-root$_src_data_tour_api_parse_usetime", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/data/tour_api.py", "source_location": "L18", "weight": 1.0}, {"source": "$graphify-root$_src_data_tour_api_py", "target": "$graphify-root$_src_data_tour_api_extract_items", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/data/tour_api.py", "source_location": "L27", "weight": 1.0}, {"source": "$graphify-root$_src_data_tour_api_py", "target": "$graphify-root$_src_data_tour_api_tourapiclient", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/data/tour_api.py", "source_location": "L38", "weight": 1.0}, {"source": "$graphify-root$_src_data_tour_api_tourapiclient", "target": "$graphify-root$_src_data_tour_api_tourapiclient_init", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/data/tour_api.py", "source_location": "L48", "weight": 1.0}, {"source": "$graphify-root$_src_data_tour_api_tourapiclient", "target": "$graphify-root$_src_data_tour_api_tourapiclient_from_settings", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/data/tour_api.py", "source_location": "L62", "weight": 1.0}, {"source": "$graphify-root$_src_data_tour_api_tourapiclient_from_settings", "target": "settings", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "src/data/tour_api.py", "source_location": "L62", "weight": 1.0}, {"source": "$graphify-root$_src_data_tour_api_tourapiclient", "target": "$graphify-root$_src_data_tour_api_tourapiclient_search_poi", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/data/tour_api.py", "source_location": "L70", "weight": 1.0}, {"source": "$graphify-root$_src_data_tour_api_tourapiclient_search_poi", "target": "poi", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "src/data/tour_api.py", "source_location": "L70", "weight": 1.0}, {"source": "$graphify-root$_src_data_tour_api_tourapiclient", "target": "$graphify-root$_src_data_tour_api_tourapiclient_get_operating_hours", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/data/tour_api.py", "source_location": "L123", "weight": 1.0}, {"source": "$graphify-root$_src_data_tour_api_tourapiclient", "target": "$graphify-root$_src_data_tour_api_tourapiclient_clear_cache", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/data/tour_api.py", "source_location": "L157", "weight": 1.0}, {"source": "$graphify-root$_src_data_tour_api_tourapiclient_from_settings", "target": "settings", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/data/tour_api.py", "source_location": "L65", "weight": 1.0}, {"source": "$graphify-root$_src_data_tour_api_tourapiclient_search_poi", "target": "$graphify-root$_src_data_tour_api_extract_items", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/data/tour_api.py", "source_location": "L95", "weight": 1.0}, {"source": "$graphify-root$_src_data_tour_api_tourapiclient_search_poi", "target": "$graphify-root$_src_data_tour_api_tourapiclient_get_operating_hours", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/data/tour_api.py", "source_location": "L108", "weight": 1.0}, {"source": "$graphify-root$_src_data_tour_api_tourapiclient_search_poi", "target": "poi", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/data/tour_api.py", "source_location": "L109", "weight": 1.0}, {"source": "$graphify-root$_src_data_tour_api_tourapiclient_get_operating_hours", "target": "$graphify-root$_src_data_tour_api_extract_items", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/data/tour_api.py", "source_location": "L146", "weight": 1.0}, {"source": "$graphify-root$_src_data_tour_api_tourapiclient_get_operating_hours", "target": "$graphify-root$_src_data_tour_api_parse_usetime", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/data/tour_api.py", "source_location": "L150", "weight": 1.0}, {"source": "$graphify-root$_src_data_tour_api_rationale_1", "target": "$graphify-root$_src_data_tour_api_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/data/tour_api.py", "source_location": "L1", "weight": 1.0}, {"source": "$graphify-root$_src_data_tour_api_rationale_19", "target": "$graphify-root$_src_data_tour_api_parse_usetime", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/data/tour_api.py", "source_location": "L19", "weight": 1.0}, {"source": "$graphify-root$_src_data_tour_api_rationale_28", "target": "$graphify-root$_src_data_tour_api_extract_items", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/data/tour_api.py", "source_location": "L28", "weight": 1.0}, {"source": "$graphify-root$_src_data_tour_api_rationale_39", "target": "$graphify-root$_src_data_tour_api_tourapiclient", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/data/tour_api.py", "source_location": "L39", "weight": 1.0}, {"source": "$graphify-root$_src_data_tour_api_rationale_63", "target": "$graphify-root$_src_data_tour_api_tourapiclient_from_settings", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/data/tour_api.py", "source_location": "L63", "weight": 1.0}, {"source": "$graphify-root$_src_data_tour_api_rationale_76", "target": "$graphify-root$_src_data_tour_api_tourapiclient_search_poi", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/data/tour_api.py", "source_location": "L76", "weight": 1.0}, {"source": "$graphify-root$_src_data_tour_api_rationale_128", "target": "$graphify-root$_src_data_tour_api_tourapiclient_get_operating_hours", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/data/tour_api.py", "source_location": "L128", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_src_data_tour_api_parse_usetime", "callee": "search", "is_member_call": true, "source_file": "src/data/tour_api.py", "source_location": "L20", "receiver": "_USETIME_RE"}, {"caller_nid": "$graphify-root$_src_data_tour_api_parse_usetime", "callee": "_FALLBACK_OPEN", "is_member_call": false, "indirect": true, "context": "return", "source_file": "src/data/tour_api.py", "source_location": "L22"}, {"caller_nid": "$graphify-root$_src_data_tour_api_parse_usetime", "callee": "_FALLBACK_CLOSE", "is_member_call": false, "indirect": true, "context": "return", "source_file": "src/data/tour_api.py", "source_location": "L22"}, {"caller_nid": "$graphify-root$_src_data_tour_api_parse_usetime", "callee": "group", "is_member_call": true, "source_file": "src/data/tour_api.py", "source_location": "L23", "receiver": "m"}, {"caller_nid": "$graphify-root$_src_data_tour_api_parse_usetime", "callee": "group", "is_member_call": true, "source_file": "src/data/tour_api.py", "source_location": "L23", "receiver": "m"}, {"caller_nid": "$graphify-root$_src_data_tour_api_parse_usetime", "callee": "group", "is_member_call": true, "source_file": "src/data/tour_api.py", "source_location": "L23", "receiver": "m"}, {"caller_nid": "$graphify-root$_src_data_tour_api_parse_usetime", "callee": "group", "is_member_call": true, "source_file": "src/data/tour_api.py", "source_location": "L23", "receiver": "m"}, {"caller_nid": "$graphify-root$_src_data_tour_api_extract_items", "callee": "dict", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "src/data/tour_api.py", "source_location": "L31"}, {"caller_nid": "$graphify-root$_src_data_tour_api_extract_items", "callee": "KeyError", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "src/data/tour_api.py", "source_location": "L34"}, {"caller_nid": "$graphify-root$_src_data_tour_api_extract_items", "callee": "TypeError", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "src/data/tour_api.py", "source_location": "L34"}, {"caller_nid": "$graphify-root$_src_data_tour_api_tourapiclient_init", "callee": "ValueError", "is_member_call": false, "source_file": "src/data/tour_api.py", "source_location": "L55", "receiver": null}, {"caller_nid": "$graphify-root$_src_data_tour_api_tourapiclient_from_settings", "callee": "cls", "is_member_call": false, "source_file": "src/data/tour_api.py", "source_location": "L68", "receiver": null}, {"caller_nid": "$graphify-root$_src_data_tour_api_tourapiclient_search_poi", "callee": "AsyncClient", "is_member_call": true, "source_file": "src/data/tour_api.py", "source_location": "L91", "receiver": "httpx"}, {"caller_nid": "$graphify-root$_src_data_tour_api_tourapiclient_search_poi", "callee": "get", "is_member_call": true, "source_file": "src/data/tour_api.py", "source_location": "L92", "receiver": "client"}, {"caller_nid": "$graphify-root$_src_data_tour_api_tourapiclient_search_poi", "callee": "json", "is_member_call": true, "source_file": "src/data/tour_api.py", "source_location": "L95", "receiver": "r"}, {"caller_nid": "$graphify-root$_src_data_tour_api_tourapiclient_search_poi", "callee": "get", "is_member_call": true, "source_file": "src/data/tour_api.py", "source_location": "L102", "receiver": "item"}, {"caller_nid": "$graphify-root$_src_data_tour_api_tourapiclient_search_poi", "callee": "get", "is_member_call": true, "source_file": "src/data/tour_api.py", "source_location": "L103", "receiver": "item"}, {"caller_nid": "$graphify-root$_src_data_tour_api_tourapiclient_search_poi", "callee": "get", "is_member_call": true, "source_file": "src/data/tour_api.py", "source_location": "L104", "receiver": "item"}, {"caller_nid": "$graphify-root$_src_data_tour_api_tourapiclient_search_poi", "callee": "get", "is_member_call": true, "source_file": "src/data/tour_api.py", "source_location": "L105", "receiver": "item"}, {"caller_nid": "$graphify-root$_src_data_tour_api_tourapiclient_search_poi", "callee": "append", "is_member_call": true, "source_file": "src/data/tour_api.py", "source_location": "L109", "receiver": "pois"}, {"caller_nid": "$graphify-root$_src_data_tour_api_tourapiclient_search_poi", "callee": "get", "is_member_call": true, "source_file": "src/data/tour_api.py", "source_location": "L111", "receiver": "item"}, {"caller_nid": "$graphify-root$_src_data_tour_api_tourapiclient_get_operating_hours", "callee": "_FALLBACK_OPEN", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "src/data/tour_api.py", "source_location": "L141"}, {"caller_nid": "$graphify-root$_src_data_tour_api_tourapiclient_get_operating_hours", "callee": "_FALLBACK_CLOSE", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "src/data/tour_api.py", "source_location": "L141"}, {"caller_nid": "$graphify-root$_src_data_tour_api_tourapiclient_get_operating_hours", "callee": "AsyncClient", "is_member_call": true, "source_file": "src/data/tour_api.py", "source_location": "L143", "receiver": "httpx"}, {"caller_nid": "$graphify-root$_src_data_tour_api_tourapiclient_get_operating_hours", "callee": "get", "is_member_call": true, "source_file": "src/data/tour_api.py", "source_location": "L144", "receiver": "client"}, {"caller_nid": "$graphify-root$_src_data_tour_api_tourapiclient_get_operating_hours", "callee": "json", "is_member_call": true, "source_file": "src/data/tour_api.py", "source_location": "L146", "receiver": "r"}, {"caller_nid": "$graphify-root$_src_data_tour_api_tourapiclient_get_operating_hours", "callee": "get", "is_member_call": true, "source_file": "src/data/tour_api.py", "source_location": "L148", "receiver": null}, {"caller_nid": "$graphify-root$_src_data_tour_api_tourapiclient_clear_cache", "callee": "clear", "is_member_call": true, "source_file": "src/data/tour_api.py", "source_location": "L158", "receiver": null}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.31/4cf1c4b0c5291bd340741c3fa44e0f44405c7c547a5d10188761bf1d76c4cf35.json b/graphify-out/cache/ast/v0.9.31/4cf1c4b0c5291bd340741c3fa44e0f44405c7c547a5d10188761bf1d76c4cf35.json new file mode 100644 index 0000000..7adc7f5 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.31/4cf1c4b0c5291bd340741c3fa44e0f44405c7c547a5d10188761bf1d76c4cf35.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_scripts_extract_visitor_stats_py", "label": "extract_visitor_stats.py", "file_type": "code", "source_file": "scripts/extract_visitor_stats.py", "source_location": "L1"}, {"id": "$graphify-root$_scripts_extract_visitor_stats_parse_int", "label": "_parse_int()", "file_type": "code", "source_file": "scripts/extract_visitor_stats.py", "source_location": "L31", "_callable": true}, {"id": "$graphify-root$_scripts_extract_visitor_stats_is_header_row", "label": "_is_header_row()", "file_type": "code", "source_file": "scripts/extract_visitor_stats.py", "source_location": "L44", "_callable": true}, {"id": "$graphify-root$_scripts_extract_visitor_stats_extract_year", "label": "extract_year()", "file_type": "code", "source_file": "scripts/extract_visitor_stats.py", "source_location": "L49", "_callable": true}, {"id": "path", "label": "Path", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/scripts/extract_visitor_stats.py"}, {"id": "dataframe", "label": "DataFrame", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/scripts/extract_visitor_stats.py"}, {"id": "$graphify-root$_scripts_extract_visitor_stats_compute_congestion", "label": "compute_congestion()", "file_type": "code", "source_file": "scripts/extract_visitor_stats.py", "source_location": "L87", "_callable": true}, {"id": "$graphify-root$_scripts_extract_visitor_stats_main", "label": "main()", "file_type": "code", "source_file": "scripts/extract_visitor_stats.py", "source_location": "L134", "_callable": true}, {"id": "$graphify-root$_scripts_extract_visitor_stats_rationale_1", "label": "PDF \uc804\ucc98\ub9ac \uc2a4\ud06c\ub9bd\ud2b8: \ud55c\uad6d\ubb38\ud654\uad00\uad11\uc5f0\uad6c\uc6d0 \uc8fc\uc694\uad00\uad11\uc9c0\uc810 \uc785\uc7a5\uac1d \ud1b5\uacc4 (2020-2024) Usage: python\u2026", "file_type": "rationale", "source_file": "scripts/extract_visitor_stats.py", "source_location": "L1"}, {"id": "$graphify-root$_scripts_extract_visitor_stats_rationale_32", "label": "1,234,567' or '-' \u2192 float or None.", "file_type": "rationale", "source_file": "scripts/extract_visitor_stats.py", "source_location": "L32"}, {"id": "$graphify-root$_scripts_extract_visitor_stats_rationale_50", "label": "\ud55c \uc5f0\ub3c4 PDF\uc5d0\uc11c \uad00\uad11\uc9c0\ubcc4 '\uacc4' \ud589\ub9cc \ucd94\ucd9c \u2192 long \ud3ec\ub9f7 DataFrame.", "file_type": "rationale", "source_file": "scripts/extract_visitor_stats.py", "source_location": "L50"}, {"id": "$graphify-root$_scripts_extract_visitor_stats_rationale_88", "label": "5\uac1c\ub144 raw \ub370\uc774\ud130 \u2192 poi_name \u00d7 month \uc9d1\uacc4 \ubc0f congestion_score \uc0b0\ucd9c.", "file_type": "rationale", "source_file": "scripts/extract_visitor_stats.py", "source_location": "L88"}], "edges": [{"source": "$graphify-root$_scripts_extract_visitor_stats_py", "target": "argparse", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/extract_visitor_stats.py", "source_location": "L9", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_visitor_stats_py", "target": "re", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/extract_visitor_stats.py", "source_location": "L10", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_visitor_stats_py", "target": "pathlib", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/extract_visitor_stats.py", "source_location": "L11", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_visitor_stats_py", "target": "pandas", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/extract_visitor_stats.py", "source_location": "L13", "weight": 1.0, "local_alias": "pd"}, {"source": "$graphify-root$_scripts_extract_visitor_stats_py", "target": "pdfplumber", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/extract_visitor_stats.py", "source_location": "L14", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_visitor_stats_py", "target": "$graphify-root$_scripts_extract_visitor_stats_parse_int", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/extract_visitor_stats.py", "source_location": "L31", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_visitor_stats_py", "target": "$graphify-root$_scripts_extract_visitor_stats_is_header_row", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/extract_visitor_stats.py", "source_location": "L44", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_visitor_stats_py", "target": "$graphify-root$_scripts_extract_visitor_stats_extract_year", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/extract_visitor_stats.py", "source_location": "L49", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_visitor_stats_extract_year", "target": "path", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "scripts/extract_visitor_stats.py", "source_location": "L49", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_visitor_stats_extract_year", "target": "dataframe", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "scripts/extract_visitor_stats.py", "source_location": "L49", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_visitor_stats_py", "target": "$graphify-root$_scripts_extract_visitor_stats_compute_congestion", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/extract_visitor_stats.py", "source_location": "L87", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_visitor_stats_compute_congestion", "target": "dataframe", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "scripts/extract_visitor_stats.py", "source_location": "L87", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_visitor_stats_compute_congestion", "target": "dataframe", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "scripts/extract_visitor_stats.py", "source_location": "L87", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_visitor_stats_py", "target": "$graphify-root$_scripts_extract_visitor_stats_main", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/extract_visitor_stats.py", "source_location": "L134", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_visitor_stats_main", "target": "path", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "scripts/extract_visitor_stats.py", "source_location": "L134", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_visitor_stats_extract_year", "target": "$graphify-root$_scripts_extract_visitor_stats_is_header_row", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/extract_visitor_stats.py", "source_location": "L60", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_visitor_stats_extract_year", "target": "$graphify-root$_scripts_extract_visitor_stats_parse_int", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/extract_visitor_stats.py", "source_location": "L76", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_visitor_stats_extract_year", "target": "dataframe", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/extract_visitor_stats.py", "source_location": "L79", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_visitor_stats_main", "target": "$graphify-root$_scripts_extract_visitor_stats_extract_year", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/extract_visitor_stats.py", "source_location": "L143", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_visitor_stats_main", "target": "$graphify-root$_scripts_extract_visitor_stats_compute_congestion", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/extract_visitor_stats.py", "source_location": "L152", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_visitor_stats_rationale_1", "target": "$graphify-root$_scripts_extract_visitor_stats_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/extract_visitor_stats.py", "source_location": "L1", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_visitor_stats_rationale_32", "target": "$graphify-root$_scripts_extract_visitor_stats_parse_int", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/extract_visitor_stats.py", "source_location": "L32", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_visitor_stats_rationale_50", "target": "$graphify-root$_scripts_extract_visitor_stats_extract_year", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/extract_visitor_stats.py", "source_location": "L50", "weight": 1.0}, {"source": "$graphify-root$_scripts_extract_visitor_stats_rationale_88", "target": "$graphify-root$_scripts_extract_visitor_stats_compute_congestion", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/extract_visitor_stats.py", "source_location": "L88", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_scripts_extract_visitor_stats_parse_int", "callee": "sub", "is_member_call": true, "source_file": "scripts/extract_visitor_stats.py", "source_location": "L35", "receiver": "re"}, {"caller_nid": "$graphify-root$_scripts_extract_visitor_stats_parse_int", "callee": "strip", "is_member_call": true, "source_file": "scripts/extract_visitor_stats.py", "source_location": "L35", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_visitor_stats_is_header_row", "callee": "strip", "is_member_call": true, "source_file": "scripts/extract_visitor_stats.py", "source_location": "L45", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_visitor_stats_extract_year", "callee": "extract_tables", "is_member_call": true, "source_file": "scripts/extract_visitor_stats.py", "source_location": "L56", "receiver": "page"}, {"caller_nid": "$graphify-root$_scripts_extract_visitor_stats_extract_year", "callee": "replace", "is_member_call": true, "source_file": "scripts/extract_visitor_stats.py", "source_location": "L66", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_visitor_stats_extract_year", "callee": "strip", "is_member_call": true, "source_file": "scripts/extract_visitor_stats.py", "source_location": "L66", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_visitor_stats_extract_year", "callee": "strip", "is_member_call": true, "source_file": "scripts/extract_visitor_stats.py", "source_location": "L69", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_visitor_stats_extract_year", "callee": "MONTH_COLS", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/extract_visitor_stats.py", "source_location": "L74"}, {"caller_nid": "$graphify-root$_scripts_extract_visitor_stats_extract_year", "callee": "append", "is_member_call": true, "source_file": "scripts/extract_visitor_stats.py", "source_location": "L77", "receiver": "records"}, {"caller_nid": "$graphify-root$_scripts_extract_visitor_stats_compute_congestion", "callee": "melt", "is_member_call": true, "source_file": "scripts/extract_visitor_stats.py", "source_location": "L90", "receiver": "df_raw"}, {"caller_nid": "$graphify-root$_scripts_extract_visitor_stats_compute_congestion", "callee": "MONTH_COLS", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/extract_visitor_stats.py", "source_location": "L92"}, {"caller_nid": "$graphify-root$_scripts_extract_visitor_stats_compute_congestion", "callee": "astype", "is_member_call": true, "source_file": "scripts/extract_visitor_stats.py", "source_location": "L96", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_visitor_stats_compute_congestion", "callee": "int", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/extract_visitor_stats.py", "source_location": "L96"}, {"caller_nid": "$graphify-root$_scripts_extract_visitor_stats_compute_congestion", "callee": "replace", "is_member_call": true, "source_file": "scripts/extract_visitor_stats.py", "source_location": "L96", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_visitor_stats_compute_congestion", "callee": "dropna", "is_member_call": true, "source_file": "scripts/extract_visitor_stats.py", "source_location": "L97", "receiver": "long"}, {"caller_nid": "$graphify-root$_scripts_extract_visitor_stats_compute_congestion", "callee": "astype", "is_member_call": true, "source_file": "scripts/extract_visitor_stats.py", "source_location": "L98", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_visitor_stats_compute_congestion", "callee": "float", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/extract_visitor_stats.py", "source_location": "L98"}, {"caller_nid": "$graphify-root$_scripts_extract_visitor_stats_compute_congestion", "callee": "rename", "is_member_call": true, "source_file": "scripts/extract_visitor_stats.py", "source_location": "L102", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_visitor_stats_compute_congestion", "callee": "reset_index", "is_member_call": true, "source_file": "scripts/extract_visitor_stats.py", "source_location": "L102", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_visitor_stats_compute_congestion", "callee": "mean", "is_member_call": true, "source_file": "scripts/extract_visitor_stats.py", "source_location": "L102", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_visitor_stats_compute_congestion", "callee": "groupby", "is_member_call": true, "source_file": "scripts/extract_visitor_stats.py", "source_location": "L102", "receiver": "long"}, {"caller_nid": "$graphify-root$_scripts_extract_visitor_stats_compute_congestion", "callee": "rename", "is_member_call": true, "source_file": "scripts/extract_visitor_stats.py", "source_location": "L109", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_visitor_stats_compute_congestion", "callee": "mean", "is_member_call": true, "source_file": "scripts/extract_visitor_stats.py", "source_location": "L109", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_visitor_stats_compute_congestion", "callee": "groupby", "is_member_call": true, "source_file": "scripts/extract_visitor_stats.py", "source_location": "L109", "receiver": "monthly_avg"}, {"caller_nid": "$graphify-root$_scripts_extract_visitor_stats_compute_congestion", "callee": "join", "is_member_call": true, "source_file": "scripts/extract_visitor_stats.py", "source_location": "L110", "receiver": "monthly_avg"}, {"caller_nid": "$graphify-root$_scripts_extract_visitor_stats_compute_congestion", "callee": "replace", "is_member_call": true, "source_file": "scripts/extract_visitor_stats.py", "source_location": "L113", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_visitor_stats_compute_congestion", "callee": "transform", "is_member_call": true, "source_file": "scripts/extract_visitor_stats.py", "source_location": "L114", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_visitor_stats_compute_congestion", "callee": "groupby", "is_member_call": true, "source_file": "scripts/extract_visitor_stats.py", "source_location": "L114", "receiver": "monthly_avg"}, {"caller_nid": "$graphify-root$_scripts_extract_visitor_stats_compute_congestion", "callee": "clip", "is_member_call": true, "source_file": "scripts/extract_visitor_stats.py", "source_location": "L115", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_visitor_stats_compute_congestion", "callee": "reset_index", "is_member_call": true, "source_file": "scripts/extract_visitor_stats.py", "source_location": "L119", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_visitor_stats_compute_congestion", "callee": "groupby", "is_member_call": true, "source_file": "scripts/extract_visitor_stats.py", "source_location": "L119", "receiver": "long"}, {"caller_nid": "$graphify-root$_scripts_extract_visitor_stats_compute_congestion", "callee": "reset_index", "is_member_call": true, "source_file": "scripts/extract_visitor_stats.py", "source_location": "L123", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_visitor_stats_compute_congestion", "callee": "agg", "is_member_call": true, "source_file": "scripts/extract_visitor_stats.py", "source_location": "L123", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_visitor_stats_compute_congestion", "callee": "groupby", "is_member_call": true, "source_file": "scripts/extract_visitor_stats.py", "source_location": "L123", "receiver": "ann_stats"}, {"caller_nid": "$graphify-root$_scripts_extract_visitor_stats_compute_congestion", "callee": "merge", "is_member_call": true, "source_file": "scripts/extract_visitor_stats.py", "source_location": "L127", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_visitor_stats_compute_congestion", "callee": "reset_index", "is_member_call": true, "source_file": "scripts/extract_visitor_stats.py", "source_location": "L131", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_visitor_stats_compute_congestion", "callee": "sort_values", "is_member_call": true, "source_file": "scripts/extract_visitor_stats.py", "source_location": "L131", "receiver": "result"}, {"caller_nid": "$graphify-root$_scripts_extract_visitor_stats_main", "callee": "items", "is_member_call": true, "source_file": "scripts/extract_visitor_stats.py", "source_location": "L137", "receiver": "PDF_FILES"}, {"caller_nid": "$graphify-root$_scripts_extract_visitor_stats_main", "callee": "exists", "is_member_call": true, "source_file": "scripts/extract_visitor_stats.py", "source_location": "L139", "receiver": "path"}, {"caller_nid": "$graphify-root$_scripts_extract_visitor_stats_main", "callee": "append", "is_member_call": true, "source_file": "scripts/extract_visitor_stats.py", "source_location": "L143", "receiver": "frames"}, {"caller_nid": "$graphify-root$_scripts_extract_visitor_stats_main", "callee": "concat", "is_member_call": true, "source_file": "scripts/extract_visitor_stats.py", "source_location": "L149", "receiver": "pd"}, {"caller_nid": "$graphify-root$_scripts_extract_visitor_stats_main", "callee": "nunique", "is_member_call": true, "source_file": "scripts/extract_visitor_stats.py", "source_location": "L150", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_visitor_stats_main", "callee": "nunique", "is_member_call": true, "source_file": "scripts/extract_visitor_stats.py", "source_location": "L153", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_visitor_stats_main", "callee": "mkdir", "is_member_call": true, "source_file": "scripts/extract_visitor_stats.py", "source_location": "L155", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_extract_visitor_stats_main", "callee": "to_csv", "is_member_call": true, "source_file": "scripts/extract_visitor_stats.py", "source_location": "L156", "receiver": "result"}, {"caller_nid": "$graphify-root$_scripts_extract_visitor_stats_main", "callee": "to_string", "is_member_call": true, "source_file": "scripts/extract_visitor_stats.py", "source_location": "L162", "receiver": null}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.31/56f4f33322b380c0dd91ac66850c13aa135ce059909117ffba257edda02e61df.json b/graphify-out/cache/ast/v0.9.31/56f4f33322b380c0dd91ac66850c13aa135ce059909117ffba257edda02e61df.json new file mode 100644 index 0000000..514333d --- /dev/null +++ b/graphify-out/cache/ast/v0.9.31/56f4f33322b380c0dd91ac66850c13aa135ce059909117ffba257edda02e61df.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_src_data_hours_db_py", "label": "hours_db.py", "file_type": "code", "source_file": "src/data/hours_db.py", "source_location": "L1"}, {"id": "$graphify-root$_src_data_hours_db_hoursspec", "label": "HoursSpec", "file_type": "code", "source_file": "src/data/hours_db.py", "source_location": "L14", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_src_data_hours_db_resolve_hours", "label": "resolve_hours()", "file_type": "code", "source_file": "src/data/hours_db.py", "source_location": "L245", "_callable": true}, {"id": "$graphify-root$_src_data_hours_db_to_minutes", "label": "to_minutes()", "file_type": "code", "source_file": "src/data/hours_db.py", "source_location": "L267", "_callable": true}, {"id": "$graphify-root$_src_data_hours_db_is_open_at", "label": "is_open_at()", "file_type": "code", "source_file": "src/data/hours_db.py", "source_location": "L272", "_callable": true}, {"id": "$graphify-root$_src_data_hours_db_rationale_1", "label": "hours_db \u2014 \uce74\ud14c\uace0\ub9ac\u00b7\ud0a4\uc6cc\ub4dc \uae30\ubc18 \uc6b4\uc601\uc2dc\uac04 \ub8e9\uc5c5. \uc0ac\uc6a9: from src.data.hours_db import resolve_hours\u2026", "file_type": "rationale", "source_file": "src/data/hours_db.py", "source_location": "L1"}, {"id": "$graphify-root$_src_data_hours_db_rationale_246", "label": "\uc7a5\uc18c \uc774\ub984 + \uce74\ud14c\uace0\ub9ac\ud78c\ud2b8 \u2192 HoursSpec. \ub9e4\uce6d \uc6b0\uc120\uc21c\uc704: \ud0a4\uc6cc\ub4dc > \uce74\ud14c\uace0\ub9ac\ud78c\ud2b8 > default_attraction.", "file_type": "rationale", "source_file": "src/data/hours_db.py", "source_location": "L246"}, {"id": "$graphify-root$_src_data_hours_db_rationale_273", "label": "\uc8fc\uc5b4\uc9c4 \uc694\uc77c\u00b7\uc2dc\uac01\uc5d0 \uc601\uc5c5 \uc911\uc778\uc9c0 (\uc8fc\uc758: \ud734\ubb34\uc77c + \ube0c\ub808\uc774\ud06c \ud0c0\uc784 \uace0\ub824).", "file_type": "rationale", "source_file": "src/data/hours_db.py", "source_location": "L273"}], "edges": [{"source": "$graphify-root$_src_data_hours_db_py", "target": "re", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "src/data/hours_db.py", "source_location": "L9", "weight": 1.0}, {"source": "$graphify-root$_src_data_hours_db_py", "target": "dataclasses", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "src/data/hours_db.py", "source_location": "L10", "weight": 1.0}, {"source": "$graphify-root$_src_data_hours_db_py", "target": "$graphify-root$_src_data_hours_db_hoursspec", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/data/hours_db.py", "source_location": "L14", "weight": 1.0}, {"source": "$graphify-root$_src_data_hours_db_py", "target": "$graphify-root$_src_data_hours_db_resolve_hours", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/data/hours_db.py", "source_location": "L245", "weight": 1.0}, {"source": "$graphify-root$_src_data_hours_db_resolve_hours", "target": "$graphify-root$_src_data_hours_db_hoursspec", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "src/data/hours_db.py", "source_location": "L245", "weight": 1.0}, {"source": "$graphify-root$_src_data_hours_db_py", "target": "$graphify-root$_src_data_hours_db_to_minutes", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/data/hours_db.py", "source_location": "L267", "weight": 1.0}, {"source": "$graphify-root$_src_data_hours_db_py", "target": "$graphify-root$_src_data_hours_db_is_open_at", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/data/hours_db.py", "source_location": "L272", "weight": 1.0}, {"source": "$graphify-root$_src_data_hours_db_is_open_at", "target": "$graphify-root$_src_data_hours_db_hoursspec", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "src/data/hours_db.py", "source_location": "L272", "weight": 1.0}, {"source": "$graphify-root$_src_data_hours_db_is_open_at", "target": "$graphify-root$_src_data_hours_db_to_minutes", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/data/hours_db.py", "source_location": "L276", "weight": 1.0}, {"source": "$graphify-root$_src_data_hours_db_rationale_1", "target": "$graphify-root$_src_data_hours_db_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/data/hours_db.py", "source_location": "L1", "weight": 1.0}, {"source": "$graphify-root$_src_data_hours_db_rationale_246", "target": "$graphify-root$_src_data_hours_db_resolve_hours", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/data/hours_db.py", "source_location": "L246", "weight": 1.0}, {"source": "$graphify-root$_src_data_hours_db_rationale_273", "target": "$graphify-root$_src_data_hours_db_is_open_at", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/data/hours_db.py", "source_location": "L273", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_src_data_hours_db_resolve_hours", "callee": "replace", "is_member_call": true, "source_file": "src/data/hours_db.py", "source_location": "L250", "receiver": null}, {"caller_nid": "$graphify-root$_src_data_hours_db_resolve_hours", "callee": "search", "is_member_call": true, "source_file": "src/data/hours_db.py", "source_location": "L252", "receiver": "re"}, {"caller_nid": "$graphify-root$_src_data_hours_db_resolve_hours", "callee": "strip", "is_member_call": true, "source_file": "src/data/hours_db.py", "source_location": "L255", "receiver": null}, {"caller_nid": "$graphify-root$_src_data_hours_db_resolve_hours", "callee": "get", "is_member_call": true, "source_file": "src/data/hours_db.py", "source_location": "L256", "receiver": null}, {"caller_nid": "$graphify-root$_src_data_hours_db_to_minutes", "callee": "split", "is_member_call": true, "source_file": "src/data/hours_db.py", "source_location": "L268", "receiver": "hhmm"}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.31/577457af325961efe8606b411406ebbd8a22aa9edffa9cbe0813e193b65a022a.json b/graphify-out/cache/ast/v0.9.31/577457af325961efe8606b411406ebbd8a22aa9edffa9cbe0813e193b65a022a.json new file mode 100644 index 0000000..a74d112 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.31/577457af325961efe8606b411406ebbd8a22aa9edffa9cbe0813e193b65a022a.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_src_scoring_reward_engine_py", "label": "reward_engine.py", "file_type": "code", "source_file": "src/scoring/reward_engine.py", "source_location": "L1"}, {"id": "$graphify-root$_src_scoring_reward_engine_generate_rewards", "label": "generate_rewards()", "file_type": "code", "source_file": "src/scoring/reward_engine.py", "source_location": "L24", "_callable": true}, {"id": "scores", "label": "Scores", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/src/scoring/reward_engine.py"}, {"id": "$graphify-root$_src_scoring_reward_engine_rationale_1", "label": "\uae0d\uc815 \uac15\ud654 \uba54\uc2dc\uc9c0 \uc0dd\uc131 \uc5d4\uc9c4 (Positive Reinforcement). validate() \ud30c\uc774\ud504\ub77c\uc778\uc5d0\uc11c \uc810\uc218\u00b7\ud1b5\uacc4\ub97c \ubc1b\uc544 \uce6d\ucc2c \uba54\uc2dc\uc9c0\u2026", "file_type": "rationale", "source_file": "src/scoring/reward_engine.py", "source_location": "L1"}, {"id": "$graphify-root$_src_scoring_reward_engine_rationale_31", "label": "\uc810\uc218\uc640 \ud1b5\uacc4 \uae30\ubc18\uc73c\ub85c \uae0d\uc815 \uac15\ud654 \uba54\uc2dc\uc9c0 \uc0dd\uc131. Returns: \uae0d\uc815 \uac15\ud654 \uba54\uc2dc\uc9c0 \ub9ac\uc2a4\ud2b8. Hard Fail \uc874\uc7ac \uc2dc \ube48 \ub9ac\uc2a4\ud2b8.", "file_type": "rationale", "source_file": "src/scoring/reward_engine.py", "source_location": "L31"}], "edges": [{"source": "$graphify-root$_src_scoring_reward_engine_py", "target": "src_data_models", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "src/scoring/reward_engine.py", "source_location": "L15", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_reward_engine_py", "target": "$graphify-root$_src_scoring_reward_engine_generate_rewards", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/scoring/reward_engine.py", "source_location": "L24", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_reward_engine_generate_rewards", "target": "scores", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "src/scoring/reward_engine.py", "source_location": "L24", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_reward_engine_rationale_1", "target": "$graphify-root$_src_scoring_reward_engine_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/scoring/reward_engine.py", "source_location": "L1", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_reward_engine_rationale_31", "target": "$graphify-root$_src_scoring_reward_engine_generate_rewards", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/scoring/reward_engine.py", "source_location": "L31", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_src_scoring_reward_engine_generate_rewards", "callee": "append", "is_member_call": true, "source_file": "src/scoring/reward_engine.py", "source_location": "L42", "receiver": "messages"}, {"caller_nid": "$graphify-root$_src_scoring_reward_engine_generate_rewards", "callee": "append", "is_member_call": true, "source_file": "src/scoring/reward_engine.py", "source_location": "L47", "receiver": "messages"}, {"caller_nid": "$graphify-root$_src_scoring_reward_engine_generate_rewards", "callee": "append", "is_member_call": true, "source_file": "src/scoring/reward_engine.py", "source_location": "L52", "receiver": "messages"}, {"caller_nid": "$graphify-root$_src_scoring_reward_engine_generate_rewards", "callee": "append", "is_member_call": true, "source_file": "src/scoring/reward_engine.py", "source_location": "L58", "receiver": "messages"}, {"caller_nid": "$graphify-root$_src_scoring_reward_engine_generate_rewards", "callee": "append", "is_member_call": true, "source_file": "src/scoring/reward_engine.py", "source_location": "L63", "receiver": "messages"}, {"caller_nid": "$graphify-root$_src_scoring_reward_engine_generate_rewards", "callee": "append", "is_member_call": true, "source_file": "src/scoring/reward_engine.py", "source_location": "L68", "receiver": "messages"}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.31/5aab75a1df3ce4c322908ffe8170a42b246f3383126cff5f9f7629fed9baef8c.json b/graphify-out/cache/ast/v0.9.31/5aab75a1df3ce4c322908ffe8170a42b246f3383126cff5f9f7629fed9baef8c.json new file mode 100644 index 0000000..e894b97 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.31/5aab75a1df3ce4c322908ffe8170a42b246f3383126cff5f9f7629fed9baef8c.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_src_data_init_py", "label": "__init__.py", "file_type": "code", "source_file": "src/data/__init__.py", "source_location": "L1"}], "edges": [], "raw_calls": []} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.31/5ad98c3354886a91442dbf0a4bb27533eed14ca91a1e477cd5341a02d9892c45.json b/graphify-out/cache/ast/v0.9.31/5ad98c3354886a91442dbf0a4bb27533eed14ca91a1e477cd5341a02d9892c45.json new file mode 100644 index 0000000..deee0d7 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.31/5ad98c3354886a91442dbf0a4bb27533eed14ca91a1e477cd5341a02d9892c45.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_tests_test_theme_taxonomy_py", "label": "test_theme_taxonomy.py", "file_type": "code", "source_file": "tests/test_theme_taxonomy.py", "source_location": "L1"}, {"id": "$graphify-root$_tests_test_theme_taxonomy_testplacetypecount", "label": "TestPlaceTypeCount", "file_type": "code", "source_file": "tests/test_theme_taxonomy.py", "source_location": "L15", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_tests_test_theme_taxonomy_testplacetypecount_test_9_place_types", "label": ".test_9_place_types()", "file_type": "code", "source_file": "tests/test_theme_taxonomy.py", "source_location": "L16", "_callable": true}, {"id": "$graphify-root$_tests_test_theme_taxonomy_testplacetypecount_test_9_travel_styles", "label": ".test_9_travel_styles()", "file_type": "code", "source_file": "tests/test_theme_taxonomy.py", "source_location": "L21", "_callable": true}, {"id": "$graphify-root$_tests_test_theme_taxonomy_testuserpreferences", "label": "TestUserPreferences", "file_type": "code", "source_file": "tests/test_theme_taxonomy.py", "source_location": "L27", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_tests_test_theme_taxonomy_testuserpreferences_test_valid_input", "label": ".test_valid_input()", "file_type": "code", "source_file": "tests/test_theme_taxonomy.py", "source_location": "L28", "_callable": true}, {"id": "$graphify-root$_tests_test_theme_taxonomy_testuserpreferences_test_invalid_place_type_raises", "label": ".test_invalid_place_type_raises()", "file_type": "code", "source_file": "tests/test_theme_taxonomy.py", "source_location": "L33", "_callable": true}, {"id": "$graphify-root$_tests_test_theme_taxonomy_testuserpreferences_test_invalid_style_raises", "label": ".test_invalid_style_raises()", "file_type": "code", "source_file": "tests/test_theme_taxonomy.py", "source_location": "L37", "_callable": true}, {"id": "$graphify-root$_tests_test_theme_taxonomy_testuserpreferences_test_empty_both_axes_raises", "label": ".test_empty_both_axes_raises()", "file_type": "code", "source_file": "tests/test_theme_taxonomy.py", "source_location": "L41", "_callable": true}, {"id": "$graphify-root$_tests_test_theme_taxonomy_testmatchesplacetype", "label": "TestMatchesPlaceType", "file_type": "code", "source_file": "tests/test_theme_taxonomy.py", "source_location": "L46", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_tests_test_theme_taxonomy_testmatchesplacetype_test_mountain_matches_na04", "label": ".test_mountain_matches_NA04()", "file_type": "code", "source_file": "tests/test_theme_taxonomy.py", "source_location": "L47", "_callable": true}, {"id": "$graphify-root$_tests_test_theme_taxonomy_testmatchesplacetype_test_beach_matches_na12", "label": ".test_beach_matches_NA12()", "file_type": "code", "source_file": "tests/test_theme_taxonomy.py", "source_location": "L51", "_callable": true}, {"id": "$graphify-root$_tests_test_theme_taxonomy_testmatchesplacetype_test_festival_matches_content_type_15", "label": ".test_festival_matches_content_type_15()", "file_type": "code", "source_file": "tests/test_theme_taxonomy.py", "source_location": "L54", "_callable": true}, {"id": "$graphify-root$_tests_test_theme_taxonomy_testmatchesplacetype_test_no_match", "label": ".test_no_match()", "file_type": "code", "source_file": "tests/test_theme_taxonomy.py", "source_location": "L57", "_callable": true}, {"id": "$graphify-root$_tests_test_theme_taxonomy_testgetplacetypesfor", "label": "TestGetPlaceTypesFor", "file_type": "code", "source_file": "tests/test_theme_taxonomy.py", "source_location": "L62", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_tests_test_theme_taxonomy_testgetplacetypesfor_test_mountain_code_returns_list", "label": ".test_mountain_code_returns_list()", "file_type": "code", "source_file": "tests/test_theme_taxonomy.py", "source_location": "L63", "_callable": true}, {"id": "$graphify-root$_tests_test_theme_taxonomy_testgetplacetypesfor_test_no_code_returns_empty", "label": ".test_no_code_returns_empty()", "file_type": "code", "source_file": "tests/test_theme_taxonomy.py", "source_location": "L67", "_callable": true}, {"id": "$graphify-root$_tests_test_theme_taxonomy_rationale_1", "label": "Tests for src/data/theme_taxonomy.py \u2014 2\ucd95 \ud14c\ub9c8 + \ub9e4\ud551.", "file_type": "rationale", "source_file": "tests/test_theme_taxonomy.py", "source_location": "L1"}], "edges": [{"source": "$graphify-root$_tests_test_theme_taxonomy_py", "target": "pytest", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_theme_taxonomy.py", "source_location": "L4", "weight": 1.0}, {"source": "$graphify-root$_tests_test_theme_taxonomy_py", "target": "src_data_theme_taxonomy", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_theme_taxonomy.py", "source_location": "L6", "weight": 1.0}, {"source": "$graphify-root$_tests_test_theme_taxonomy_py", "target": "$graphify-root$_tests_test_theme_taxonomy_testplacetypecount", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_theme_taxonomy.py", "source_location": "L15", "weight": 1.0}, {"source": "$graphify-root$_tests_test_theme_taxonomy_testplacetypecount", "target": "$graphify-root$_tests_test_theme_taxonomy_testplacetypecount_test_9_place_types", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_theme_taxonomy.py", "source_location": "L16", "weight": 1.0}, {"source": "$graphify-root$_tests_test_theme_taxonomy_testplacetypecount", "target": "$graphify-root$_tests_test_theme_taxonomy_testplacetypecount_test_9_travel_styles", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_theme_taxonomy.py", "source_location": "L21", "weight": 1.0}, {"source": "$graphify-root$_tests_test_theme_taxonomy_py", "target": "$graphify-root$_tests_test_theme_taxonomy_testuserpreferences", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_theme_taxonomy.py", "source_location": "L27", "weight": 1.0}, {"source": "$graphify-root$_tests_test_theme_taxonomy_testuserpreferences", "target": "$graphify-root$_tests_test_theme_taxonomy_testuserpreferences_test_valid_input", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_theme_taxonomy.py", "source_location": "L28", "weight": 1.0}, {"source": "$graphify-root$_tests_test_theme_taxonomy_testuserpreferences", "target": "$graphify-root$_tests_test_theme_taxonomy_testuserpreferences_test_invalid_place_type_raises", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_theme_taxonomy.py", "source_location": "L33", "weight": 1.0}, {"source": "$graphify-root$_tests_test_theme_taxonomy_testuserpreferences", "target": "$graphify-root$_tests_test_theme_taxonomy_testuserpreferences_test_invalid_style_raises", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_theme_taxonomy.py", "source_location": "L37", "weight": 1.0}, {"source": "$graphify-root$_tests_test_theme_taxonomy_testuserpreferences", "target": "$graphify-root$_tests_test_theme_taxonomy_testuserpreferences_test_empty_both_axes_raises", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_theme_taxonomy.py", "source_location": "L41", "weight": 1.0}, {"source": "$graphify-root$_tests_test_theme_taxonomy_py", "target": "$graphify-root$_tests_test_theme_taxonomy_testmatchesplacetype", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_theme_taxonomy.py", "source_location": "L46", "weight": 1.0}, {"source": "$graphify-root$_tests_test_theme_taxonomy_testmatchesplacetype", "target": "$graphify-root$_tests_test_theme_taxonomy_testmatchesplacetype_test_mountain_matches_na04", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_theme_taxonomy.py", "source_location": "L47", "weight": 1.0}, {"source": "$graphify-root$_tests_test_theme_taxonomy_testmatchesplacetype", "target": "$graphify-root$_tests_test_theme_taxonomy_testmatchesplacetype_test_beach_matches_na12", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_theme_taxonomy.py", "source_location": "L51", "weight": 1.0}, {"source": "$graphify-root$_tests_test_theme_taxonomy_testmatchesplacetype", "target": "$graphify-root$_tests_test_theme_taxonomy_testmatchesplacetype_test_festival_matches_content_type_15", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_theme_taxonomy.py", "source_location": "L54", "weight": 1.0}, {"source": "$graphify-root$_tests_test_theme_taxonomy_testmatchesplacetype", "target": "$graphify-root$_tests_test_theme_taxonomy_testmatchesplacetype_test_no_match", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_theme_taxonomy.py", "source_location": "L57", "weight": 1.0}, {"source": "$graphify-root$_tests_test_theme_taxonomy_py", "target": "$graphify-root$_tests_test_theme_taxonomy_testgetplacetypesfor", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_theme_taxonomy.py", "source_location": "L62", "weight": 1.0}, {"source": "$graphify-root$_tests_test_theme_taxonomy_testgetplacetypesfor", "target": "$graphify-root$_tests_test_theme_taxonomy_testgetplacetypesfor_test_mountain_code_returns_list", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_theme_taxonomy.py", "source_location": "L63", "weight": 1.0}, {"source": "$graphify-root$_tests_test_theme_taxonomy_testgetplacetypesfor", "target": "$graphify-root$_tests_test_theme_taxonomy_testgetplacetypesfor_test_no_code_returns_empty", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_theme_taxonomy.py", "source_location": "L67", "weight": 1.0}, {"source": "$graphify-root$_tests_test_theme_taxonomy_rationale_1", "target": "$graphify-root$_tests_test_theme_taxonomy_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_theme_taxonomy.py", "source_location": "L1", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_tests_test_theme_taxonomy_testplacetypecount_test_9_place_types", "callee": "PLACE_TYPES", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_theme_taxonomy.py", "source_location": "L17"}, {"caller_nid": "$graphify-root$_tests_test_theme_taxonomy_testplacetypecount_test_9_travel_styles", "callee": "TRAVEL_STYLES", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_theme_taxonomy.py", "source_location": "L22"}, {"caller_nid": "$graphify-root$_tests_test_theme_taxonomy_testuserpreferences_test_valid_input", "callee": "UserPreferences", "is_member_call": false, "source_file": "tests/test_theme_taxonomy.py", "source_location": "L29", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_theme_taxonomy_testuserpreferences_test_valid_input", "callee": "all_themes", "is_member_call": true, "source_file": "tests/test_theme_taxonomy.py", "source_location": "L31", "receiver": "p"}, {"caller_nid": "$graphify-root$_tests_test_theme_taxonomy_testuserpreferences_test_invalid_place_type_raises", "callee": "raises", "is_member_call": true, "source_file": "tests/test_theme_taxonomy.py", "source_location": "L34", "receiver": "pytest"}, {"caller_nid": "$graphify-root$_tests_test_theme_taxonomy_testuserpreferences_test_invalid_place_type_raises", "callee": "ValueError", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_theme_taxonomy.py", "source_location": "L34"}, {"caller_nid": "$graphify-root$_tests_test_theme_taxonomy_testuserpreferences_test_invalid_place_type_raises", "callee": "UserPreferences", "is_member_call": false, "source_file": "tests/test_theme_taxonomy.py", "source_location": "L35", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_theme_taxonomy_testuserpreferences_test_invalid_style_raises", "callee": "raises", "is_member_call": true, "source_file": "tests/test_theme_taxonomy.py", "source_location": "L38", "receiver": "pytest"}, {"caller_nid": "$graphify-root$_tests_test_theme_taxonomy_testuserpreferences_test_invalid_style_raises", "callee": "ValueError", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_theme_taxonomy.py", "source_location": "L38"}, {"caller_nid": "$graphify-root$_tests_test_theme_taxonomy_testuserpreferences_test_invalid_style_raises", "callee": "UserPreferences", "is_member_call": false, "source_file": "tests/test_theme_taxonomy.py", "source_location": "L39", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_theme_taxonomy_testuserpreferences_test_empty_both_axes_raises", "callee": "raises", "is_member_call": true, "source_file": "tests/test_theme_taxonomy.py", "source_location": "L42", "receiver": "pytest"}, {"caller_nid": "$graphify-root$_tests_test_theme_taxonomy_testuserpreferences_test_empty_both_axes_raises", "callee": "ValueError", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_theme_taxonomy.py", "source_location": "L42"}, {"caller_nid": "$graphify-root$_tests_test_theme_taxonomy_testuserpreferences_test_empty_both_axes_raises", "callee": "UserPreferences", "is_member_call": false, "source_file": "tests/test_theme_taxonomy.py", "source_location": "L43", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_theme_taxonomy_testmatchesplacetype_test_mountain_matches_na04", "callee": "matches_place_type", "is_member_call": false, "source_file": "tests/test_theme_taxonomy.py", "source_location": "L49", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_theme_taxonomy_testmatchesplacetype_test_beach_matches_na12", "callee": "matches_place_type", "is_member_call": false, "source_file": "tests/test_theme_taxonomy.py", "source_location": "L52", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_theme_taxonomy_testmatchesplacetype_test_festival_matches_content_type_15", "callee": "matches_place_type", "is_member_call": false, "source_file": "tests/test_theme_taxonomy.py", "source_location": "L55", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_theme_taxonomy_testmatchesplacetype_test_no_match", "callee": "matches_place_type", "is_member_call": false, "source_file": "tests/test_theme_taxonomy.py", "source_location": "L59", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_theme_taxonomy_testgetplacetypesfor_test_mountain_code_returns_list", "callee": "get_place_types_for", "is_member_call": false, "source_file": "tests/test_theme_taxonomy.py", "source_location": "L64", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_theme_taxonomy_testgetplacetypesfor_test_no_code_returns_empty", "callee": "get_place_types_for", "is_member_call": false, "source_file": "tests/test_theme_taxonomy.py", "source_location": "L68", "receiver": null}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.31/5ed35d743092b779903182e43b86595b741787d48fdafb1ea76ec52758e39ffd.json b/graphify-out/cache/ast/v0.9.31/5ed35d743092b779903182e43b86595b741787d48fdafb1ea76ec52758e39ffd.json new file mode 100644 index 0000000..6c18fe1 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.31/5ed35d743092b779903182e43b86595b741787d48fdafb1ea76ec52758e39ffd.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_src_explain_repair_py", "label": "repair.py", "file_type": "code", "source_file": "src/explain/repair.py", "source_location": "L1"}, {"id": "$graphify-root$_src_explain_repair_norm", "label": "_norm()", "file_type": "code", "source_file": "src/explain/repair.py", "source_location": "L30", "_callable": true}, {"id": "$graphify-root$_src_explain_repair_min_dwell_for", "label": "_min_dwell_for()", "file_type": "code", "source_file": "src/explain/repair.py", "source_location": "L34", "_callable": true}, {"id": "$graphify-root$_src_explain_repair_reordersuggestion", "label": "ReorderSuggestion", "file_type": "code", "source_file": "src/explain/repair.py", "source_location": "L44", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_src_explain_repair_timetunesuggestion", "label": "TimeTuneSuggestion", "file_type": "code", "source_file": "src/explain/repair.py", "source_location": "L53", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_src_explain_repair_deletionsuggestion", "label": "DeletionSuggestion", "file_type": "code", "source_file": "src/explain/repair.py", "source_location": "L63", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_src_explain_repair_repairresult", "label": "RepairResult", "file_type": "code", "source_file": "src/explain/repair.py", "source_location": "L74", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_src_explain_repair_repairresult_is_empty", "label": ".is_empty()", "file_type": "code", "source_file": "src/explain/repair.py", "source_location": "L80", "_callable": true}, {"id": "$graphify-root$_src_explain_repair_repairresult_total_estimated_gain", "label": ".total_estimated_gain()", "file_type": "code", "source_file": "src/explain/repair.py", "source_location": "L84", "_callable": true}, {"id": "$graphify-root$_src_explain_repair_repairresult_to_dict", "label": ".to_dict()", "file_type": "code", "source_file": "src/explain/repair.py", "source_location": "L95", "_callable": true}, {"id": "$graphify-root$_src_explain_repair_repairengine", "label": "RepairEngine", "file_type": "code", "source_file": "src/explain/repair.py", "source_location": "L101", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_src_explain_repair_repairengine_init", "label": ".__init__()", "file_type": "code", "source_file": "src/explain/repair.py", "source_location": "L104", "_callable": true}, {"id": "restaurantcatalog", "label": "RestaurantCatalog", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/src/explain/repair.py"}, {"id": "$graphify-root$_src_explain_repair_repairengine_repair", "label": ".repair()", "file_type": "code", "source_file": "src/explain/repair.py", "source_location": "L108", "_callable": true}, {"id": "itineraryplan", "label": "ItineraryPlan", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/src/explain/repair.py"}, {"id": "poi", "label": "POI", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/src/explain/repair.py"}, {"id": "hardfail", "label": "HardFail", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/src/explain/repair.py"}, {"id": "$graphify-root$_src_explain_repair_repairengine_try_reorder", "label": "._try_reorder()", "file_type": "code", "source_file": "src/explain/repair.py", "source_location": "L142", "_callable": true}, {"id": "$graphify-root$_src_explain_repair_repairengine_try_time_tune", "label": "._try_time_tune()", "file_type": "code", "source_file": "src/explain/repair.py", "source_location": "L171", "_callable": true}, {"id": "$graphify-root$_src_explain_repair_repairengine_suggest_deletion", "label": "._suggest_deletion()", "file_type": "code", "source_file": "src/explain/repair.py", "source_location": "L224", "_callable": true}, {"id": "$graphify-root$_src_explain_repair_rationale_1", "label": "Minimal Interference Repair Engine. \uad50\uc815 \uc6b0\uc120\uc21c\uc704 (Hard Fail \ubc1c\uc0dd \uc2dc \uc21c\uc11c\ub300\ub85c \uc2dc\ub3c4): 1. Re-\u2026", "file_type": "rationale", "source_file": "src/explain/repair.py", "source_location": "L1"}, {"id": "$graphify-root$_src_explain_repair_rationale_35", "label": "dwell_db \uae30\uc900 \ucd5c\uc18c \uad8c\uc7a5 \uccb4\ub958 \uc2dc\uac04 (50% \uae30\uc900, \uc808\ub300 \ucd5c\uc19f\uac12 20\ubd84).", "file_type": "rationale", "source_file": "src/explain/repair.py", "source_location": "L35"}, {"id": "$graphify-root$_src_explain_repair_rationale_85", "label": "\ubaa8\ub4e0 \uc81c\uc548\uc744 \uc801\uc6a9\ud588\uc744 \ub54c \uc608\uc0c1 \ucd1d \uc810\uc218 \uc0c1\uc2b9\ubd84. \uac19\uc740 \ub0a0\uc9dc\uc758 \uc81c\uc548\ub4e4\uc740 \uc11c\ub85c \ub300\uc548(\ud558\ub098\ub9cc \uc801\uc6a9)\uc774\ubbc0\ub85c \ucd5c\ub313\uac12\ub9cc \ucde8\ud558\uace0, \uc11c\ub85c \ub2e4\ub978 \ub0a0\uc9dc\uc758 \uc81c\uc548\uc740\u2026", "file_type": "rationale", "source_file": "src/explain/repair.py", "source_location": "L85"}, {"id": "$graphify-root$_src_explain_repair_rationale_102", "label": "Minimal Interference \uad50\uc815 \uc5d4\uc9c4. External I/O \uc5c6\uc74c.", "file_type": "rationale", "source_file": "src/explain/repair.py", "source_location": "L102"}, {"id": "$graphify-root$_src_explain_repair_rationale_115", "label": "3\ub2e8\uacc4 \uad50\uc815 \uc2dc\ub3c4. Hard Fail\uc774 \uc5c6\uc73c\uba74 \uc989\uc2dc \ube48 \uacb0\uacfc \ubc18\ud658.", "file_type": "rationale", "source_file": "src/explain/repair.py", "source_location": "L115"}, {"id": "$graphify-root$_src_explain_repair_rationale_149", "label": "n \u2264 7\uc778 \uacbd\uc6b0 \uc21c\uc5f4 \uc804\uc218 \ud0d0\uc0c9\uc73c\ub85c Hard Fail \uc5c6\ub294 \uc21c\uc11c \ubc18\ud658.", "file_type": "rationale", "source_file": "src/explain/repair.py", "source_location": "L149"}, {"id": "$graphify-root$_src_explain_repair_rationale_178", "label": "\uccb4\ub958 \uc2dc\uac04\uc744 \ucd5c\uc19f\uac12\uae4c\uc9c0 5\ubd84 \ub2e8\uc704\ub85c \uc904\uc5ec \uc77c\uc815 \uacfc\ubc00 \uc644\ud654.", "file_type": "rationale", "source_file": "src/explain/repair.py", "source_location": "L178"}, {"id": "$graphify-root$_src_explain_repair_rationale_229", "label": "\uc774\ub3d9 \uac70\ub9ac \uc808\uac10\ub7c9\uc774 \ucd5c\ub300\uc778 \uc7a5\uc18c(\uc9c0\ub9ac\uc801 \uc774\uc0c1\uce58)\ub97c \uc0ad\uc81c \ud6c4\ubcf4\ub85c \uc81c\uc548. \uc0ad\uc81c \ube44\uc6a9 = \uc81c\uac70 \uc2dc \uc774\ub3d9 \uc808\uac10(before\u2192i + i\u2192after) -\u2026", "file_type": "rationale", "source_file": "src/explain/repair.py", "source_location": "L229"}], "edges": [{"source": "$graphify-root$_src_explain_repair_py", "target": "dataclasses", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "src/explain/repair.py", "source_location": "L13", "weight": 1.0}, {"source": "$graphify-root$_src_explain_repair_py", "target": "itertools", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "src/explain/repair.py", "source_location": "L14", "weight": 1.0}, {"source": "$graphify-root$_src_explain_repair_py", "target": "re", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "src/explain/repair.py", "source_location": "L15", "weight": 1.0}, {"source": "$graphify-root$_src_explain_repair_py", "target": "dataclasses", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "src/explain/repair.py", "source_location": "L16", "weight": 1.0}, {"source": "$graphify-root$_src_explain_repair_py", "target": "src_data_dwell_db", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "src/explain/repair.py", "source_location": "L18", "weight": 1.0}, {"source": "$graphify-root$_src_explain_repair_py", "target": "src_data_models", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "src/explain/repair.py", "source_location": "L19", "weight": 1.0}, {"source": "$graphify-root$_src_explain_repair_py", "target": "src_data_party_config", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "src/explain/repair.py", "source_location": "L20", "weight": 1.0}, {"source": "$graphify-root$_src_explain_repair_py", "target": "src_data_restaurant_catalog", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "src/explain/repair.py", "source_location": "L21", "weight": 1.0}, {"source": "$graphify-root$_src_explain_repair_py", "target": "src_utils_geo", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "src/explain/repair.py", "source_location": "L22", "weight": 1.0}, {"source": "$graphify-root$_src_explain_repair_py", "target": "src_validation_hard_fail", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "src/explain/repair.py", "source_location": "L23", "weight": 1.0}, {"source": "$graphify-root$_src_explain_repair_py", "target": "$graphify-root$_src_explain_repair_norm", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/explain/repair.py", "source_location": "L30", "weight": 1.0}, {"source": "$graphify-root$_src_explain_repair_py", "target": "$graphify-root$_src_explain_repair_min_dwell_for", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/explain/repair.py", "source_location": "L34", "weight": 1.0}, {"source": "$graphify-root$_src_explain_repair_py", "target": "$graphify-root$_src_explain_repair_reordersuggestion", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/explain/repair.py", "source_location": "L44", "weight": 1.0}, {"source": "$graphify-root$_src_explain_repair_py", "target": "$graphify-root$_src_explain_repair_timetunesuggestion", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/explain/repair.py", "source_location": "L53", "weight": 1.0}, {"source": "$graphify-root$_src_explain_repair_py", "target": "$graphify-root$_src_explain_repair_deletionsuggestion", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/explain/repair.py", "source_location": "L63", "weight": 1.0}, {"source": "$graphify-root$_src_explain_repair_py", "target": "$graphify-root$_src_explain_repair_repairresult", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/explain/repair.py", "source_location": "L74", "weight": 1.0}, {"source": "$graphify-root$_src_explain_repair_repairresult", "target": "$graphify-root$_src_explain_repair_repairresult_is_empty", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/explain/repair.py", "source_location": "L80", "weight": 1.0}, {"source": "$graphify-root$_src_explain_repair_repairresult", "target": "$graphify-root$_src_explain_repair_repairresult_total_estimated_gain", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/explain/repair.py", "source_location": "L84", "weight": 1.0}, {"source": "$graphify-root$_src_explain_repair_repairresult", "target": "$graphify-root$_src_explain_repair_repairresult_to_dict", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/explain/repair.py", "source_location": "L95", "weight": 1.0}, {"source": "$graphify-root$_src_explain_repair_py", "target": "$graphify-root$_src_explain_repair_repairengine", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/explain/repair.py", "source_location": "L101", "weight": 1.0}, {"source": "$graphify-root$_src_explain_repair_repairengine", "target": "$graphify-root$_src_explain_repair_repairengine_init", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/explain/repair.py", "source_location": "L104", "weight": 1.0}, {"source": "$graphify-root$_src_explain_repair_repairengine_init", "target": "restaurantcatalog", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "src/explain/repair.py", "source_location": "L104", "weight": 1.0}, {"source": "$graphify-root$_src_explain_repair_repairengine", "target": "$graphify-root$_src_explain_repair_repairengine_repair", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/explain/repair.py", "source_location": "L108", "weight": 1.0}, {"source": "$graphify-root$_src_explain_repair_repairengine_repair", "target": "itineraryplan", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "src/explain/repair.py", "source_location": "L108", "weight": 1.0}, {"source": "$graphify-root$_src_explain_repair_repairengine_repair", "target": "poi", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "src/explain/repair.py", "source_location": "L108", "weight": 1.0}, {"source": "$graphify-root$_src_explain_repair_repairengine_repair", "target": "hardfail", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "src/explain/repair.py", "source_location": "L108", "weight": 1.0}, {"source": "$graphify-root$_src_explain_repair_repairengine_repair", "target": "$graphify-root$_src_explain_repair_repairresult", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "src/explain/repair.py", "source_location": "L108", "weight": 1.0}, {"source": "$graphify-root$_src_explain_repair_repairengine", "target": "$graphify-root$_src_explain_repair_repairengine_try_reorder", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/explain/repair.py", "source_location": "L142", "weight": 1.0}, {"source": "$graphify-root$_src_explain_repair_repairengine_try_reorder", "target": "itineraryplan", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "src/explain/repair.py", "source_location": "L142", "weight": 1.0}, {"source": "$graphify-root$_src_explain_repair_repairengine_try_reorder", "target": "poi", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "src/explain/repair.py", "source_location": "L142", "weight": 1.0}, {"source": "$graphify-root$_src_explain_repair_repairengine_try_reorder", "target": "$graphify-root$_src_explain_repair_reordersuggestion", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "src/explain/repair.py", "source_location": "L142", "weight": 1.0}, {"source": "$graphify-root$_src_explain_repair_repairengine", "target": "$graphify-root$_src_explain_repair_repairengine_try_time_tune", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/explain/repair.py", "source_location": "L171", "weight": 1.0}, {"source": "$graphify-root$_src_explain_repair_repairengine_try_time_tune", "target": "itineraryplan", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "src/explain/repair.py", "source_location": "L171", "weight": 1.0}, {"source": "$graphify-root$_src_explain_repair_repairengine_try_time_tune", "target": "poi", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "src/explain/repair.py", "source_location": "L171", "weight": 1.0}, {"source": "$graphify-root$_src_explain_repair_repairengine_try_time_tune", "target": "$graphify-root$_src_explain_repair_timetunesuggestion", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "src/explain/repair.py", "source_location": "L171", "weight": 1.0}, {"source": "$graphify-root$_src_explain_repair_repairengine", "target": "$graphify-root$_src_explain_repair_repairengine_suggest_deletion", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/explain/repair.py", "source_location": "L224", "weight": 1.0}, {"source": "$graphify-root$_src_explain_repair_repairengine_suggest_deletion", "target": "poi", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "src/explain/repair.py", "source_location": "L224", "weight": 1.0}, {"source": "$graphify-root$_src_explain_repair_repairengine_suggest_deletion", "target": "$graphify-root$_src_explain_repair_deletionsuggestion", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "src/explain/repair.py", "source_location": "L224", "weight": 1.0}, {"source": "$graphify-root$_src_explain_repair_min_dwell_for", "target": "$graphify-root$_src_explain_repair_norm", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/explain/repair.py", "source_location": "L36", "weight": 1.0}, {"source": "$graphify-root$_src_explain_repair_repairengine_repair", "target": "$graphify-root$_src_explain_repair_repairresult", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/explain/repair.py", "source_location": "L116", "weight": 1.0}, {"source": "$graphify-root$_src_explain_repair_repairengine_repair", "target": "$graphify-root$_src_explain_repair_repairengine_try_reorder", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/explain/repair.py", "source_location": "L125", "weight": 1.0}, {"source": "$graphify-root$_src_explain_repair_repairengine_repair", "target": "$graphify-root$_src_explain_repair_repairengine_try_time_tune", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/explain/repair.py", "source_location": "L131", "weight": 1.0}, {"source": "$graphify-root$_src_explain_repair_repairengine_repair", "target": "$graphify-root$_src_explain_repair_repairengine_suggest_deletion", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/explain/repair.py", "source_location": "L136", "weight": 1.0}, {"source": "$graphify-root$_src_explain_repair_repairengine_try_reorder", "target": "$graphify-root$_src_explain_repair_reordersuggestion", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/explain/repair.py", "source_location": "L161", "weight": 1.0}, {"source": "$graphify-root$_src_explain_repair_repairengine_try_time_tune", "target": "$graphify-root$_src_explain_repair_min_dwell_for", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/explain/repair.py", "source_location": "L195", "weight": 1.0}, {"source": "$graphify-root$_src_explain_repair_repairengine_try_time_tune", "target": "$graphify-root$_src_explain_repair_timetunesuggestion", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/explain/repair.py", "source_location": "L214", "weight": 1.0}, {"source": "$graphify-root$_src_explain_repair_repairengine_suggest_deletion", "target": "$graphify-root$_src_explain_repair_deletionsuggestion", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/explain/repair.py", "source_location": "L277", "weight": 1.0}, {"source": "$graphify-root$_src_explain_repair_rationale_1", "target": "$graphify-root$_src_explain_repair_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/explain/repair.py", "source_location": "L1", "weight": 1.0}, {"source": "$graphify-root$_src_explain_repair_rationale_35", "target": "$graphify-root$_src_explain_repair_min_dwell_for", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/explain/repair.py", "source_location": "L35", "weight": 1.0}, {"source": "$graphify-root$_src_explain_repair_rationale_85", "target": "$graphify-root$_src_explain_repair_repairresult_total_estimated_gain", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/explain/repair.py", "source_location": "L85", "weight": 1.0}, {"source": "$graphify-root$_src_explain_repair_rationale_102", "target": "$graphify-root$_src_explain_repair_repairengine", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/explain/repair.py", "source_location": "L102", "weight": 1.0}, {"source": "$graphify-root$_src_explain_repair_rationale_115", "target": "$graphify-root$_src_explain_repair_repairengine_repair", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/explain/repair.py", "source_location": "L115", "weight": 1.0}, {"source": "$graphify-root$_src_explain_repair_rationale_149", "target": "$graphify-root$_src_explain_repair_repairengine_try_reorder", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/explain/repair.py", "source_location": "L149", "weight": 1.0}, {"source": "$graphify-root$_src_explain_repair_rationale_178", "target": "$graphify-root$_src_explain_repair_repairengine_try_time_tune", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/explain/repair.py", "source_location": "L178", "weight": 1.0}, {"source": "$graphify-root$_src_explain_repair_rationale_229", "target": "$graphify-root$_src_explain_repair_repairengine_suggest_deletion", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/explain/repair.py", "source_location": "L229", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_src_explain_repair_norm", "callee": "lower", "is_member_call": true, "source_file": "src/explain/repair.py", "source_location": "L31", "receiver": null}, {"caller_nid": "$graphify-root$_src_explain_repair_norm", "callee": "sub", "is_member_call": true, "source_file": "src/explain/repair.py", "source_location": "L31", "receiver": "re"}, {"caller_nid": "$graphify-root$_src_explain_repair_min_dwell_for", "callee": "items", "is_member_call": true, "source_file": "src/explain/repair.py", "source_location": "L37", "receiver": "_DWELL_OVERRIDES"}, {"caller_nid": "$graphify-root$_src_explain_repair_min_dwell_for", "callee": "_MIN_DWELL_ABS", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "src/explain/repair.py", "source_location": "L39"}, {"caller_nid": "$graphify-root$_src_explain_repair_min_dwell_for", "callee": "_MIN_DWELL_ABS", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "src/explain/repair.py", "source_location": "L40"}, {"caller_nid": "$graphify-root$_src_explain_repair_repairresult_total_estimated_gain", "callee": "get", "is_member_call": true, "source_file": "src/explain/repair.py", "source_location": "L92", "receiver": "per_day"}, {"caller_nid": "$graphify-root$_src_explain_repair_repairresult_total_estimated_gain", "callee": "values", "is_member_call": true, "source_file": "src/explain/repair.py", "source_location": "L93", "receiver": "per_day"}, {"caller_nid": "$graphify-root$_src_explain_repair_repairresult_to_dict", "callee": "asdict", "is_member_call": true, "source_file": "src/explain/repair.py", "source_location": "L96", "receiver": "dataclasses"}, {"caller_nid": "$graphify-root$_src_explain_repair_repairengine_init", "callee": "HardFailDetector", "is_member_call": false, "source_file": "src/explain/repair.py", "source_location": "L105", "receiver": null}, {"caller_nid": "$graphify-root$_src_explain_repair_repairengine_init", "callee": "from_default", "is_member_call": true, "source_file": "src/explain/repair.py", "source_location": "L106", "receiver": "RestaurantCatalog"}, {"caller_nid": "$graphify-root$_src_explain_repair_repairengine_repair", "callee": "append", "is_member_call": true, "source_file": "src/explain/repair.py", "source_location": "L127", "receiver": null}, {"caller_nid": "$graphify-root$_src_explain_repair_repairengine_repair", "callee": "append", "is_member_call": true, "source_file": "src/explain/repair.py", "source_location": "L133", "receiver": null}, {"caller_nid": "$graphify-root$_src_explain_repair_repairengine_repair", "callee": "append", "is_member_call": true, "source_file": "src/explain/repair.py", "source_location": "L138", "receiver": null}, {"caller_nid": "$graphify-root$_src_explain_repair_repairengine_try_reorder", "callee": "permutations", "is_member_call": true, "source_file": "src/explain/repair.py", "source_location": "L155", "receiver": "itertools"}, {"caller_nid": "$graphify-root$_src_explain_repair_repairengine_try_reorder", "callee": "detect", "is_member_call": true, "source_file": "src/explain/repair.py", "source_location": "L159", "receiver": null}, {"caller_nid": "$graphify-root$_src_explain_repair_repairengine_try_reorder", "callee": "join", "is_member_call": true, "source_file": "src/explain/repair.py", "source_location": "L166", "receiver": null}, {"caller_nid": "$graphify-root$_src_explain_repair_repairengine_try_time_tune", "callee": "get_party_profile", "is_member_call": false, "source_file": "src/explain/repair.py", "source_location": "L179", "receiver": null}, {"caller_nid": "$graphify-root$_src_explain_repair_repairengine_try_time_tune", "callee": "build_dist_cache", "is_member_call": false, "source_file": "src/explain/repair.py", "source_location": "L181", "receiver": null}, {"caller_nid": "$graphify-root$_src_explain_repair_repairengine_try_time_tune", "callee": "get_travel_min", "is_member_call": false, "source_file": "src/explain/repair.py", "source_location": "L184", "receiver": null}, {"caller_nid": "$graphify-root$_src_explain_repair_repairengine_suggest_deletion", "callee": "build_dist_cache", "is_member_call": false, "source_file": "src/explain/repair.py", "source_location": "L237", "receiver": null}, {"caller_nid": "$graphify-root$_src_explain_repair_repairengine_suggest_deletion", "callee": "get", "is_member_call": true, "source_file": "src/explain/repair.py", "source_location": "L247", "receiver": "dist_cache"}, {"caller_nid": "$graphify-root$_src_explain_repair_repairengine_suggest_deletion", "callee": "get", "is_member_call": true, "source_file": "src/explain/repair.py", "source_location": "L249", "receiver": "dist_cache"}, {"caller_nid": "$graphify-root$_src_explain_repair_repairengine_suggest_deletion", "callee": "haversine_km", "is_member_call": false, "source_file": "src/explain/repair.py", "source_location": "L252", "receiver": null}, {"caller_nid": "$graphify-root$_src_explain_repair_repairengine_suggest_deletion", "callee": "nearby", "is_member_call": true, "source_file": "src/explain/repair.py", "source_location": "L265", "receiver": null}, {"caller_nid": "$graphify-root$_src_explain_repair_repairengine_suggest_deletion", "callee": "join", "is_member_call": true, "source_file": "src/explain/repair.py", "source_location": "L273", "receiver": null}, {"caller_nid": "$graphify-root$_src_explain_repair_repairengine_suggest_deletion", "callee": "model_dump", "is_member_call": true, "source_file": "src/explain/repair.py", "source_location": "L282", "receiver": "a"}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.31/6214e09ef0a8a9abacff2ec6a9e7e0ca002d503a5a56ce005c26a6e59f6de5a7.json b/graphify-out/cache/ast/v0.9.31/6214e09ef0a8a9abacff2ec6a9e7e0ca002d503a5a56ce005c26a6e59f6de5a7.json new file mode 100644 index 0000000..1f749f2 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.31/6214e09ef0a8a9abacff2ec6a9e7e0ca002d503a5a56ce005c26a6e59f6de5a7.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_gun_scripts_build_travel_matrix_py", "label": "build_travel_matrix.py", "file_type": "code", "source_file": "gun/scripts/build_travel_matrix.py", "source_location": "L1"}, {"id": "$graphify-root$_gun_scripts_build_travel_matrix_resolve_base_dir", "label": "_resolve_base_dir()", "file_type": "code", "source_file": "gun/scripts/build_travel_matrix.py", "source_location": "L43", "_callable": true}, {"id": "path", "label": "Path", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/gun/scripts/build_travel_matrix.py"}, {"id": "$graphify-root$_gun_scripts_build_travel_matrix_load_pois", "label": "load_pois()", "file_type": "code", "source_file": "gun/scripts/build_travel_matrix.py", "source_location": "L55", "_callable": true}, {"id": "vrptwplace", "label": "VRPTWPlace", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/gun/scripts/build_travel_matrix.py"}, {"id": "$graphify-root$_gun_scripts_build_travel_matrix_build_matrix", "label": "build_matrix()", "file_type": "code", "source_file": "gun/scripts/build_travel_matrix.py", "source_location": "L83", "_callable": true}, {"id": "kakaomobilitymatrix", "label": "KakaoMobilityMatrix", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/gun/scripts/build_travel_matrix.py"}, {"id": "$graphify-root$_gun_scripts_build_travel_matrix_main", "label": "main()", "file_type": "code", "source_file": "gun/scripts/build_travel_matrix.py", "source_location": "L122", "_callable": true}, {"id": "$graphify-root$_gun_scripts_build_travel_matrix_rationale_1", "label": "POI CSV \u2192 \uce74\uce74\uc624 \ubaa8\ube4c\ub9ac\ud2f0 N\u00d7N \uc774\ub3d9\uc2dc\uac04 \ud589\ub82c \uc0ac\uc804 \ube4c\ub4dc. \uac80\uc99d \uc2dc \ub9e4\ubc88 API\ub97c \ud638\ucd9c\ud558\uba74 \ub290\ub9ac\uace0 \ud55c\ub3c4 \ubd80\ub2f4. \uc790\uc8fc \uc4f0\ub294 POI\u2026", "file_type": "rationale", "source_file": "gun/scripts/build_travel_matrix.py", "source_location": "L1"}, {"id": "$graphify-root$_gun_scripts_build_travel_matrix_rationale_62", "label": "CSV \uc77d\uc5b4 \uc88c\ud45c \uc720\ud6a8\ud55c POI \ub9ac\uc2a4\ud2b8\ub85c \ubc18\ud658.", "file_type": "rationale", "source_file": "gun/scripts/build_travel_matrix.py", "source_location": "L62"}, {"id": "$graphify-root$_gun_scripts_build_travel_matrix_rationale_88", "label": "N\u00d7N \ud398\uc5b4\uc640\uc774\uc988 \ud638\ucd9c (\ub300\uac01\uc120 \uc81c\uc678, \uc591\ubc29\ud5a5 \uce90\uc2dc \ud65c\uc6a9).", "file_type": "rationale", "source_file": "gun/scripts/build_travel_matrix.py", "source_location": "L88"}], "edges": [{"source": "$graphify-root$_gun_scripts_build_travel_matrix_py", "target": "argparse", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "gun/scripts/build_travel_matrix.py", "source_location": "L27", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_build_travel_matrix_py", "target": "csv", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "gun/scripts/build_travel_matrix.py", "source_location": "L28", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_build_travel_matrix_py", "target": "sys", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "gun/scripts/build_travel_matrix.py", "source_location": "L29", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_build_travel_matrix_py", "target": "time", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "gun/scripts/build_travel_matrix.py", "source_location": "L30", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_build_travel_matrix_py", "target": "pathlib", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "gun/scripts/build_travel_matrix.py", "source_location": "L31", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_build_travel_matrix_py", "target": "src_data_models", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "gun/scripts/build_travel_matrix.py", "source_location": "L39", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_build_travel_matrix_py", "target": "src_validation_kakao_matrix", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "gun/scripts/build_travel_matrix.py", "source_location": "L40", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_build_travel_matrix_py", "target": "$graphify-root$_gun_scripts_build_travel_matrix_resolve_base_dir", "relation": "contains", "confidence": "EXTRACTED", "source_file": "gun/scripts/build_travel_matrix.py", "source_location": "L43", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_build_travel_matrix_resolve_base_dir", "target": "path", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "gun/scripts/build_travel_matrix.py", "source_location": "L43", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_build_travel_matrix_py", "target": "$graphify-root$_gun_scripts_build_travel_matrix_load_pois", "relation": "contains", "confidence": "EXTRACTED", "source_file": "gun/scripts/build_travel_matrix.py", "source_location": "L55", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_build_travel_matrix_load_pois", "target": "path", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "gun/scripts/build_travel_matrix.py", "source_location": "L55", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_build_travel_matrix_load_pois", "target": "vrptwplace", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "gun/scripts/build_travel_matrix.py", "source_location": "L55", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_build_travel_matrix_py", "target": "$graphify-root$_gun_scripts_build_travel_matrix_build_matrix", "relation": "contains", "confidence": "EXTRACTED", "source_file": "gun/scripts/build_travel_matrix.py", "source_location": "L83", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_build_travel_matrix_build_matrix", "target": "vrptwplace", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "gun/scripts/build_travel_matrix.py", "source_location": "L83", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_build_travel_matrix_build_matrix", "target": "kakaomobilitymatrix", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "gun/scripts/build_travel_matrix.py", "source_location": "L83", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_build_travel_matrix_py", "target": "$graphify-root$_gun_scripts_build_travel_matrix_main", "relation": "contains", "confidence": "EXTRACTED", "source_file": "gun/scripts/build_travel_matrix.py", "source_location": "L122", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_build_travel_matrix_resolve_base_dir", "target": "path", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "gun/scripts/build_travel_matrix.py", "source_location": "L45", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_build_travel_matrix_load_pois", "target": "vrptwplace", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "gun/scripts/build_travel_matrix.py", "source_location": "L74", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_build_travel_matrix_main", "target": "path", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "gun/scripts/build_travel_matrix.py", "source_location": "L157", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_build_travel_matrix_main", "target": "$graphify-root$_gun_scripts_build_travel_matrix_load_pois", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "gun/scripts/build_travel_matrix.py", "source_location": "L164", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_build_travel_matrix_main", "target": "$graphify-root$_gun_scripts_build_travel_matrix_build_matrix", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "gun/scripts/build_travel_matrix.py", "source_location": "L184", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_build_travel_matrix_rationale_1", "target": "$graphify-root$_gun_scripts_build_travel_matrix_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "gun/scripts/build_travel_matrix.py", "source_location": "L1", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_build_travel_matrix_rationale_62", "target": "$graphify-root$_gun_scripts_build_travel_matrix_load_pois", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "gun/scripts/build_travel_matrix.py", "source_location": "L62", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_build_travel_matrix_rationale_88", "target": "$graphify-root$_gun_scripts_build_travel_matrix_build_matrix", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "gun/scripts/build_travel_matrix.py", "source_location": "L88", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_gun_scripts_build_travel_matrix_resolve_base_dir", "callee": "resolve", "is_member_call": true, "source_file": "gun/scripts/build_travel_matrix.py", "source_location": "L45", "receiver": null}, {"caller_nid": "$graphify-root$_gun_scripts_build_travel_matrix_resolve_base_dir", "callee": "__file__", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "gun/scripts/build_travel_matrix.py", "source_location": "L45"}, {"caller_nid": "$graphify-root$_gun_scripts_build_travel_matrix_resolve_base_dir", "callee": "cwd", "is_member_call": true, "source_file": "gun/scripts/build_travel_matrix.py", "source_location": "L47", "receiver": "Path"}, {"caller_nid": "$graphify-root$_gun_scripts_build_travel_matrix_load_pois", "callee": "DictReader", "is_member_call": true, "source_file": "gun/scripts/build_travel_matrix.py", "source_location": "L65", "receiver": "csv"}, {"caller_nid": "$graphify-root$_gun_scripts_build_travel_matrix_load_pois", "callee": "f", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "gun/scripts/build_travel_matrix.py", "source_location": "L65"}, {"caller_nid": "$graphify-root$_gun_scripts_build_travel_matrix_load_pois", "callee": "KeyError", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "gun/scripts/build_travel_matrix.py", "source_location": "L70"}, {"caller_nid": "$graphify-root$_gun_scripts_build_travel_matrix_load_pois", "callee": "ValueError", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "gun/scripts/build_travel_matrix.py", "source_location": "L70"}, {"caller_nid": "$graphify-root$_gun_scripts_build_travel_matrix_load_pois", "callee": "TypeError", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "gun/scripts/build_travel_matrix.py", "source_location": "L70"}, {"caller_nid": "$graphify-root$_gun_scripts_build_travel_matrix_load_pois", "callee": "strip", "is_member_call": true, "source_file": "gun/scripts/build_travel_matrix.py", "source_location": "L72", "receiver": null}, {"caller_nid": "$graphify-root$_gun_scripts_build_travel_matrix_load_pois", "callee": "get", "is_member_call": true, "source_file": "gun/scripts/build_travel_matrix.py", "source_location": "L72", "receiver": "row"}, {"caller_nid": "$graphify-root$_gun_scripts_build_travel_matrix_load_pois", "callee": "append", "is_member_call": true, "source_file": "gun/scripts/build_travel_matrix.py", "source_location": "L74", "receiver": "out"}, {"caller_nid": "$graphify-root$_gun_scripts_build_travel_matrix_build_matrix", "callee": "time", "is_member_call": true, "source_file": "gun/scripts/build_travel_matrix.py", "source_location": "L95", "receiver": "time"}, {"caller_nid": "$graphify-root$_gun_scripts_build_travel_matrix_build_matrix", "callee": "get_travel_time", "is_member_call": true, "source_file": "gun/scripts/build_travel_matrix.py", "source_location": "L98", "receiver": "matrix"}, {"caller_nid": "$graphify-root$_gun_scripts_build_travel_matrix_build_matrix", "callee": "save_cache", "is_member_call": true, "source_file": "gun/scripts/build_travel_matrix.py", "source_location": "L104", "receiver": "matrix"}, {"caller_nid": "$graphify-root$_gun_scripts_build_travel_matrix_build_matrix", "callee": "time", "is_member_call": true, "source_file": "gun/scripts/build_travel_matrix.py", "source_location": "L108", "receiver": "time"}, {"caller_nid": "$graphify-root$_gun_scripts_build_travel_matrix_build_matrix", "callee": "sleep", "is_member_call": true, "source_file": "gun/scripts/build_travel_matrix.py", "source_location": "L117", "receiver": "time"}, {"caller_nid": "$graphify-root$_gun_scripts_build_travel_matrix_build_matrix", "callee": "save_cache", "is_member_call": true, "source_file": "gun/scripts/build_travel_matrix.py", "source_location": "L119", "receiver": "matrix"}, {"caller_nid": "$graphify-root$_gun_scripts_build_travel_matrix_main", "callee": "ArgumentParser", "is_member_call": true, "source_file": "gun/scripts/build_travel_matrix.py", "source_location": "L123", "receiver": "argparse"}, {"caller_nid": "$graphify-root$_gun_scripts_build_travel_matrix_main", "callee": "add_argument", "is_member_call": true, "source_file": "gun/scripts/build_travel_matrix.py", "source_location": "L127", "receiver": "parser"}, {"caller_nid": "$graphify-root$_gun_scripts_build_travel_matrix_main", "callee": "add_argument", "is_member_call": true, "source_file": "gun/scripts/build_travel_matrix.py", "source_location": "L131", "receiver": "parser"}, {"caller_nid": "$graphify-root$_gun_scripts_build_travel_matrix_main", "callee": "add_argument", "is_member_call": true, "source_file": "gun/scripts/build_travel_matrix.py", "source_location": "L135", "receiver": "parser"}, {"caller_nid": "$graphify-root$_gun_scripts_build_travel_matrix_main", "callee": "add_argument", "is_member_call": true, "source_file": "gun/scripts/build_travel_matrix.py", "source_location": "L139", "receiver": "parser"}, {"caller_nid": "$graphify-root$_gun_scripts_build_travel_matrix_main", "callee": "add_argument", "is_member_call": true, "source_file": "gun/scripts/build_travel_matrix.py", "source_location": "L143", "receiver": "parser"}, {"caller_nid": "$graphify-root$_gun_scripts_build_travel_matrix_main", "callee": "int", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "gun/scripts/build_travel_matrix.py", "source_location": "L144"}, {"caller_nid": "$graphify-root$_gun_scripts_build_travel_matrix_main", "callee": "add_argument", "is_member_call": true, "source_file": "gun/scripts/build_travel_matrix.py", "source_location": "L147", "receiver": "parser"}, {"caller_nid": "$graphify-root$_gun_scripts_build_travel_matrix_main", "callee": "DEFAULT_CACHE", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "gun/scripts/build_travel_matrix.py", "source_location": "L148"}, {"caller_nid": "$graphify-root$_gun_scripts_build_travel_matrix_main", "callee": "relative_to", "is_member_call": true, "source_file": "gun/scripts/build_travel_matrix.py", "source_location": "L149", "receiver": "DEFAULT_CACHE"}, {"caller_nid": "$graphify-root$_gun_scripts_build_travel_matrix_main", "callee": "BASE_DIR", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "gun/scripts/build_travel_matrix.py", "source_location": "L149"}, {"caller_nid": "$graphify-root$_gun_scripts_build_travel_matrix_main", "callee": "add_argument", "is_member_call": true, "source_file": "gun/scripts/build_travel_matrix.py", "source_location": "L151", "receiver": "parser"}, {"caller_nid": "$graphify-root$_gun_scripts_build_travel_matrix_main", "callee": "float", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "gun/scripts/build_travel_matrix.py", "source_location": "L152"}, {"caller_nid": "$graphify-root$_gun_scripts_build_travel_matrix_main", "callee": "parse_args", "is_member_call": true, "source_file": "gun/scripts/build_travel_matrix.py", "source_location": "L155", "receiver": "parser"}, {"caller_nid": "$graphify-root$_gun_scripts_build_travel_matrix_main", "callee": "is_absolute", "is_member_call": true, "source_file": "gun/scripts/build_travel_matrix.py", "source_location": "L158", "receiver": "csv_path"}, {"caller_nid": "$graphify-root$_gun_scripts_build_travel_matrix_main", "callee": "exists", "is_member_call": true, "source_file": "gun/scripts/build_travel_matrix.py", "source_location": "L160", "receiver": "csv_path"}, {"caller_nid": "$graphify-root$_gun_scripts_build_travel_matrix_main", "callee": "exit", "is_member_call": true, "source_file": "gun/scripts/build_travel_matrix.py", "source_location": "L161", "receiver": "sys"}, {"caller_nid": "$graphify-root$_gun_scripts_build_travel_matrix_main", "callee": "exit", "is_member_call": true, "source_file": "gun/scripts/build_travel_matrix.py", "source_location": "L171", "receiver": "sys"}, {"caller_nid": "$graphify-root$_gun_scripts_build_travel_matrix_main", "callee": "is_absolute", "is_member_call": true, "source_file": "gun/scripts/build_travel_matrix.py", "source_location": "L174", "receiver": "cache_path"}, {"caller_nid": "$graphify-root$_gun_scripts_build_travel_matrix_main", "callee": "from_env", "is_member_call": true, "source_file": "gun/scripts/build_travel_matrix.py", "source_location": "L177", "receiver": "KakaoMobilityMatrix"}, {"caller_nid": "$graphify-root$_gun_scripts_build_travel_matrix_main", "callee": "save_cache", "is_member_call": true, "source_file": "gun/scripts/build_travel_matrix.py", "source_location": "L187", "receiver": "matrix"}, {"caller_nid": "$graphify-root$_gun_scripts_build_travel_matrix_main", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "gun/scripts/build_travel_matrix.py", "source_location": "L189"}, {"caller_nid": "$graphify-root$_gun_scripts_build_travel_matrix_main", "callee": "save_cache", "is_member_call": true, "source_file": "gun/scripts/build_travel_matrix.py", "source_location": "L190", "receiver": "matrix"}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.31/628d5b140ba73e0ac171019edf66e9eeadbd5f222f25ab5a0f211077bba5fd8c.json b/graphify-out/cache/ast/v0.9.31/628d5b140ba73e0ac171019edf66e9eeadbd5f222f25ab5a0f211077bba5fd8c.json new file mode 100644 index 0000000..831a5a5 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.31/628d5b140ba73e0ac171019edf66e9eeadbd5f222f25ab5a0f211077bba5fd8c.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_tests_conftest_py", "label": "conftest.py", "file_type": "code", "source_file": "tests/conftest.py", "source_location": "L1"}, {"id": "fixture", "label": "fixture", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/tests/conftest.py"}, {"id": "$graphify-root$_tests_conftest_clean_anthropic_api_key", "label": "_clean_anthropic_api_key()", "file_type": "code", "source_file": "tests/conftest.py", "source_location": "L11", "_callable": true}, {"id": "$graphify-root$_tests_conftest_rationale_1", "label": "\ud14c\uc2a4\ud2b8 \uc804\uc5ed fixture. src.api.main\uc740 import \uc2dc\uc810\uc5d0 .env\ub97c \uc77d\uc5b4 os.environ\uc5d0\u2026", "file_type": "rationale", "source_file": "tests/conftest.py", "source_location": "L1"}], "edges": [{"source": "$graphify-root$_tests_conftest_py", "target": "pytest", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/conftest.py", "source_location": "L7", "weight": 1.0}, {"source": "$graphify-root$_tests_conftest_clean_anthropic_api_key", "target": "fixture", "relation": "references", "confidence": "EXTRACTED", "source_file": "tests/conftest.py", "source_location": "L10", "weight": 1.0, "context": "decorator"}, {"source": "$graphify-root$_tests_conftest_py", "target": "$graphify-root$_tests_conftest_clean_anthropic_api_key", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/conftest.py", "source_location": "L11", "weight": 1.0}, {"source": "$graphify-root$_tests_conftest_rationale_1", "target": "$graphify-root$_tests_conftest_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/conftest.py", "source_location": "L1", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_tests_conftest_clean_anthropic_api_key", "callee": "delenv", "is_member_call": true, "source_file": "tests/conftest.py", "source_location": "L12", "receiver": "monkeypatch"}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.31/62a1600bad85c2df3c9c7fe88f175da8c8214d38b62ce75d10d59f5e84a18582.json b/graphify-out/cache/ast/v0.9.31/62a1600bad85c2df3c9c7fe88f175da8c8214d38b62ce75d10d59f5e84a18582.json new file mode 100644 index 0000000..b654d93 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.31/62a1600bad85c2df3c9c7fe88f175da8c8214d38b62ce75d10d59f5e84a18582.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_gun_scripts_fetch_google_hours_py", "label": "fetch_google_hours.py", "file_type": "code", "source_file": "gun/scripts/fetch_google_hours.py", "source_location": "L1"}, {"id": "$graphify-root$_gun_scripts_fetch_google_hours_load_env", "label": "load_env()", "file_type": "code", "source_file": "gun/scripts/fetch_google_hours.py", "source_location": "L41", "_callable": true}, {"id": "path", "label": "Path", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/gun/scripts/fetch_google_hours.py"}, {"id": "$graphify-root$_gun_scripts_fetch_google_hours_text_search", "label": "text_search()", "file_type": "code", "source_file": "gun/scripts/fetch_google_hours.py", "source_location": "L58", "_callable": true}, {"id": "$graphify-root$_gun_scripts_fetch_google_hours_place_details", "label": "place_details()", "file_type": "code", "source_file": "gun/scripts/fetch_google_hours.py", "source_location": "L83", "_callable": true}, {"id": "any", "label": "Any", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/gun/scripts/fetch_google_hours.py"}, {"id": "$graphify-root$_gun_scripts_fetch_google_hours_parse_periods", "label": "parse_periods()", "file_type": "code", "source_file": "gun/scripts/fetch_google_hours.py", "source_location": "L102", "_callable": true}, {"id": "$graphify-root$_gun_scripts_fetch_google_hours_load_targets", "label": "load_targets()", "file_type": "code", "source_file": "gun/scripts/fetch_google_hours.py", "source_location": "L124", "_callable": true}, {"id": "$graphify-root$_gun_scripts_fetch_google_hours_main", "label": "main()", "file_type": "code", "source_file": "gun/scripts/fetch_google_hours.py", "source_location": "L148", "_callable": true}, {"id": "$graphify-root$_gun_scripts_fetch_google_hours_rationale_1", "label": "Google Places API (New) \u2014 \uc2dd\ub2f9\u00b7\uce74\ud398 \uc6b4\uc601\uc2dc\uac04 \ubcf4\uac15. \uc0ac\uc6a9\ubc95: 1. .env \uc5d0 GOOGLE_PLACES_API_KEY\u2026", "file_type": "rationale", "source_file": "gun/scripts/fetch_google_hours.py", "source_location": "L1"}, {"id": "$graphify-root$_gun_scripts_fetch_google_hours_rationale_59", "label": "POI \uc774\ub984\uc73c\ub85c \uac80\uc0c9 \u2192 \uccab \ud6c4\ubcf4\uc758 place_id \ubc18\ud658.", "file_type": "rationale", "source_file": "gun/scripts/fetch_google_hours.py", "source_location": "L59"}, {"id": "$graphify-root$_gun_scripts_fetch_google_hours_rationale_103", "label": "API\uc758 periods \uc751\ub2f5\uc744 \uc694\uc77c\ubcc4 'HH:MM-HH:MM' \uc73c\ub85c \ubcc0\ud658. day: 0=\uc77c, 1=\uc6d4, ..., 6=\ud1a0 (Google \uae30\uc900)", "file_type": "rationale", "source_file": "gun/scripts/fetch_google_hours.py", "source_location": "L103"}], "edges": [{"source": "$graphify-root$_gun_scripts_fetch_google_hours_py", "target": "argparse", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "gun/scripts/fetch_google_hours.py", "source_location": "L17", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_fetch_google_hours_py", "target": "csv", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "gun/scripts/fetch_google_hours.py", "source_location": "L18", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_fetch_google_hours_py", "target": "json", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "gun/scripts/fetch_google_hours.py", "source_location": "L19", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_fetch_google_hours_py", "target": "os", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "gun/scripts/fetch_google_hours.py", "source_location": "L20", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_fetch_google_hours_py", "target": "sys", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "gun/scripts/fetch_google_hours.py", "source_location": "L21", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_fetch_google_hours_py", "target": "time", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "gun/scripts/fetch_google_hours.py", "source_location": "L22", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_fetch_google_hours_py", "target": "pathlib", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "gun/scripts/fetch_google_hours.py", "source_location": "L23", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_fetch_google_hours_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "gun/scripts/fetch_google_hours.py", "source_location": "L24", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_fetch_google_hours_py", "target": "httpx", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "gun/scripts/fetch_google_hours.py", "source_location": "L26", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_fetch_google_hours_py", "target": "openpyxl", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "gun/scripts/fetch_google_hours.py", "source_location": "L27", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_fetch_google_hours_py", "target": "$graphify-root$_gun_scripts_fetch_google_hours_load_env", "relation": "contains", "confidence": "EXTRACTED", "source_file": "gun/scripts/fetch_google_hours.py", "source_location": "L41", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_fetch_google_hours_load_env", "target": "path", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "gun/scripts/fetch_google_hours.py", "source_location": "L41", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_fetch_google_hours_py", "target": "$graphify-root$_gun_scripts_fetch_google_hours_text_search", "relation": "contains", "confidence": "EXTRACTED", "source_file": "gun/scripts/fetch_google_hours.py", "source_location": "L58", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_fetch_google_hours_py", "target": "$graphify-root$_gun_scripts_fetch_google_hours_place_details", "relation": "contains", "confidence": "EXTRACTED", "source_file": "gun/scripts/fetch_google_hours.py", "source_location": "L83", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_fetch_google_hours_place_details", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "gun/scripts/fetch_google_hours.py", "source_location": "L83", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_fetch_google_hours_py", "target": "$graphify-root$_gun_scripts_fetch_google_hours_parse_periods", "relation": "contains", "confidence": "EXTRACTED", "source_file": "gun/scripts/fetch_google_hours.py", "source_location": "L102", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_fetch_google_hours_py", "target": "$graphify-root$_gun_scripts_fetch_google_hours_load_targets", "relation": "contains", "confidence": "EXTRACTED", "source_file": "gun/scripts/fetch_google_hours.py", "source_location": "L124", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_fetch_google_hours_load_targets", "target": "path", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "gun/scripts/fetch_google_hours.py", "source_location": "L124", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_fetch_google_hours_py", "target": "$graphify-root$_gun_scripts_fetch_google_hours_main", "relation": "contains", "confidence": "EXTRACTED", "source_file": "gun/scripts/fetch_google_hours.py", "source_location": "L148", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_fetch_google_hours_main", "target": "$graphify-root$_gun_scripts_fetch_google_hours_load_targets", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "gun/scripts/fetch_google_hours.py", "source_location": "L156", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_fetch_google_hours_main", "target": "path", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "gun/scripts/fetch_google_hours.py", "source_location": "L156", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_fetch_google_hours_main", "target": "$graphify-root$_gun_scripts_fetch_google_hours_text_search", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "gun/scripts/fetch_google_hours.py", "source_location": "L176", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_fetch_google_hours_main", "target": "$graphify-root$_gun_scripts_fetch_google_hours_place_details", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "gun/scripts/fetch_google_hours.py", "source_location": "L185", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_fetch_google_hours_main", "target": "$graphify-root$_gun_scripts_fetch_google_hours_parse_periods", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "gun/scripts/fetch_google_hours.py", "source_location": "L197", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_fetch_google_hours_rationale_1", "target": "$graphify-root$_gun_scripts_fetch_google_hours_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "gun/scripts/fetch_google_hours.py", "source_location": "L1", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_fetch_google_hours_rationale_59", "target": "$graphify-root$_gun_scripts_fetch_google_hours_text_search", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "gun/scripts/fetch_google_hours.py", "source_location": "L59", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_fetch_google_hours_rationale_103", "target": "$graphify-root$_gun_scripts_fetch_google_hours_parse_periods", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "gun/scripts/fetch_google_hours.py", "source_location": "L103", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_gun_scripts_fetch_google_hours_load_env", "callee": "exists", "is_member_call": true, "source_file": "gun/scripts/fetch_google_hours.py", "source_location": "L42", "receiver": "path"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_google_hours_load_env", "callee": "splitlines", "is_member_call": true, "source_file": "gun/scripts/fetch_google_hours.py", "source_location": "L44", "receiver": null}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_google_hours_load_env", "callee": "read_text", "is_member_call": true, "source_file": "gun/scripts/fetch_google_hours.py", "source_location": "L44", "receiver": "path"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_google_hours_load_env", "callee": "strip", "is_member_call": true, "source_file": "gun/scripts/fetch_google_hours.py", "source_location": "L45", "receiver": "line"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_google_hours_load_env", "callee": "startswith", "is_member_call": true, "source_file": "gun/scripts/fetch_google_hours.py", "source_location": "L46", "receiver": "line"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_google_hours_load_env", "callee": "partition", "is_member_call": true, "source_file": "gun/scripts/fetch_google_hours.py", "source_location": "L48", "receiver": "line"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_google_hours_load_env", "callee": "setdefault", "is_member_call": true, "source_file": "gun/scripts/fetch_google_hours.py", "source_location": "L49", "receiver": null}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_google_hours_load_env", "callee": "strip", "is_member_call": true, "source_file": "gun/scripts/fetch_google_hours.py", "source_location": "L49", "receiver": "k"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_google_hours_load_env", "callee": "strip", "is_member_call": true, "source_file": "gun/scripts/fetch_google_hours.py", "source_location": "L49", "receiver": "v"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_google_hours_text_search", "callee": "API_KEY", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "gun/scripts/fetch_google_hours.py", "source_location": "L63"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_google_hours_text_search", "callee": "strip", "is_member_call": true, "source_file": "gun/scripts/fetch_google_hours.py", "source_location": "L67", "receiver": null}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_google_hours_text_search", "callee": "post", "is_member_call": true, "source_file": "gun/scripts/fetch_google_hours.py", "source_location": "L73", "receiver": "httpx"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_google_hours_text_search", "callee": "REQUEST_TIMEOUT", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "gun/scripts/fetch_google_hours.py", "source_location": "L73"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_google_hours_text_search", "callee": "raise_for_status", "is_member_call": true, "source_file": "gun/scripts/fetch_google_hours.py", "source_location": "L74", "receiver": "r"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_google_hours_text_search", "callee": "json", "is_member_call": true, "source_file": "gun/scripts/fetch_google_hours.py", "source_location": "L75", "receiver": "r"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_google_hours_text_search", "callee": "get", "is_member_call": true, "source_file": "gun/scripts/fetch_google_hours.py", "source_location": "L76", "receiver": "data"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_google_hours_place_details", "callee": "API_KEY", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "gun/scripts/fetch_google_hours.py", "source_location": "L87"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_google_hours_place_details", "callee": "get", "is_member_call": true, "source_file": "gun/scripts/fetch_google_hours.py", "source_location": "L91", "receiver": "httpx"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_google_hours_place_details", "callee": "REQUEST_TIMEOUT", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "gun/scripts/fetch_google_hours.py", "source_location": "L93"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_google_hours_place_details", "callee": "raise_for_status", "is_member_call": true, "source_file": "gun/scripts/fetch_google_hours.py", "source_location": "L94", "receiver": "r"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_google_hours_place_details", "callee": "json", "is_member_call": true, "source_file": "gun/scripts/fetch_google_hours.py", "source_location": "L95", "receiver": "r"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_google_hours_parse_periods", "callee": "get", "is_member_call": true, "source_file": "gun/scripts/fetch_google_hours.py", "source_location": "L109", "receiver": "p"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_google_hours_parse_periods", "callee": "get", "is_member_call": true, "source_file": "gun/scripts/fetch_google_hours.py", "source_location": "L110", "receiver": "p"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_google_hours_parse_periods", "callee": "get", "is_member_call": true, "source_file": "gun/scripts/fetch_google_hours.py", "source_location": "L114", "receiver": "op"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_google_hours_parse_periods", "callee": "get", "is_member_call": true, "source_file": "gun/scripts/fetch_google_hours.py", "source_location": "L114", "receiver": "op"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_google_hours_parse_periods", "callee": "get", "is_member_call": true, "source_file": "gun/scripts/fetch_google_hours.py", "source_location": "L116", "receiver": "cl"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_google_hours_parse_periods", "callee": "get", "is_member_call": true, "source_file": "gun/scripts/fetch_google_hours.py", "source_location": "L116", "receiver": "cl"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_google_hours_load_targets", "callee": "load_workbook", "is_member_call": false, "source_file": "gun/scripts/fetch_google_hours.py", "source_location": "L125", "receiver": null}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_google_hours_load_targets", "callee": "iter_rows", "is_member_call": true, "source_file": "gun/scripts/fetch_google_hours.py", "source_location": "L130", "receiver": "ws"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_google_hours_load_targets", "callee": "strip", "is_member_call": true, "source_file": "gun/scripts/fetch_google_hours.py", "source_location": "L134", "receiver": null}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_google_hours_load_targets", "callee": "get", "is_member_call": true, "source_file": "gun/scripts/fetch_google_hours.py", "source_location": "L134", "receiver": "rec"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_google_hours_load_targets", "callee": "strip", "is_member_call": true, "source_file": "gun/scripts/fetch_google_hours.py", "source_location": "L135", "receiver": null}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_google_hours_load_targets", "callee": "get", "is_member_call": true, "source_file": "gun/scripts/fetch_google_hours.py", "source_location": "L135", "receiver": "rec"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_google_hours_load_targets", "callee": "strip", "is_member_call": true, "source_file": "gun/scripts/fetch_google_hours.py", "source_location": "L136", "receiver": null}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_google_hours_load_targets", "callee": "get", "is_member_call": true, "source_file": "gun/scripts/fetch_google_hours.py", "source_location": "L136", "receiver": "rec"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_google_hours_load_targets", "callee": "add", "is_member_call": true, "source_file": "gun/scripts/fetch_google_hours.py", "source_location": "L142", "receiver": "seen"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_google_hours_load_targets", "callee": "append", "is_member_call": true, "source_file": "gun/scripts/fetch_google_hours.py", "source_location": "L143", "receiver": "targets"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_google_hours_main", "callee": "ArgumentParser", "is_member_call": true, "source_file": "gun/scripts/fetch_google_hours.py", "source_location": "L149", "receiver": "argparse"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_google_hours_main", "callee": "add_argument", "is_member_call": true, "source_file": "gun/scripts/fetch_google_hours.py", "source_location": "L150", "receiver": "ap"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_google_hours_main", "callee": "add_argument", "is_member_call": true, "source_file": "gun/scripts/fetch_google_hours.py", "source_location": "L151", "receiver": "ap"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_google_hours_main", "callee": "add_argument", "is_member_call": true, "source_file": "gun/scripts/fetch_google_hours.py", "source_location": "L152", "receiver": "ap"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_google_hours_main", "callee": "int", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "gun/scripts/fetch_google_hours.py", "source_location": "L152"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_google_hours_main", "callee": "parse_args", "is_member_call": true, "source_file": "gun/scripts/fetch_google_hours.py", "source_location": "L154", "receiver": "ap"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_google_hours_main", "callee": "DictWriter", "is_member_call": true, "source_file": "gun/scripts/fetch_google_hours.py", "source_location": "L170", "receiver": "csv"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_google_hours_main", "callee": "f", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "gun/scripts/fetch_google_hours.py", "source_location": "L170"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_google_hours_main", "callee": "writeheader", "is_member_call": true, "source_file": "gun/scripts/fetch_google_hours.py", "source_location": "L171", "receiver": "w"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_google_hours_main", "callee": "sleep", "is_member_call": true, "source_file": "gun/scripts/fetch_google_hours.py", "source_location": "L177", "receiver": "time"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_google_hours_main", "callee": "SLEEP_BETWEEN", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "gun/scripts/fetch_google_hours.py", "source_location": "L177"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_google_hours_main", "callee": "writerow", "is_member_call": true, "source_file": "gun/scripts/fetch_google_hours.py", "source_location": "L180", "receiver": "w"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_google_hours_main", "callee": "sleep", "is_member_call": true, "source_file": "gun/scripts/fetch_google_hours.py", "source_location": "L186", "receiver": "time"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_google_hours_main", "callee": "SLEEP_BETWEEN", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "gun/scripts/fetch_google_hours.py", "source_location": "L186"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_google_hours_main", "callee": "writerow", "is_member_call": true, "source_file": "gun/scripts/fetch_google_hours.py", "source_location": "L189", "receiver": "w"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_google_hours_main", "callee": "get", "is_member_call": true, "source_file": "gun/scripts/fetch_google_hours.py", "source_location": "L194", "receiver": "det"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_google_hours_main", "callee": "get", "is_member_call": true, "source_file": "gun/scripts/fetch_google_hours.py", "source_location": "L195", "receiver": "hours"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_google_hours_main", "callee": "get", "is_member_call": true, "source_file": "gun/scripts/fetch_google_hours.py", "source_location": "L196", "receiver": "hours"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_google_hours_main", "callee": "get", "is_member_call": true, "source_file": "gun/scripts/fetch_google_hours.py", "source_location": "L202", "receiver": null}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_google_hours_main", "callee": "get", "is_member_call": true, "source_file": "gun/scripts/fetch_google_hours.py", "source_location": "L202", "receiver": "det"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_google_hours_main", "callee": "get", "is_member_call": true, "source_file": "gun/scripts/fetch_google_hours.py", "source_location": "L203", "receiver": "day_map"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_google_hours_main", "callee": "get", "is_member_call": true, "source_file": "gun/scripts/fetch_google_hours.py", "source_location": "L204", "receiver": "day_map"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_google_hours_main", "callee": "get", "is_member_call": true, "source_file": "gun/scripts/fetch_google_hours.py", "source_location": "L205", "receiver": "day_map"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_google_hours_main", "callee": "get", "is_member_call": true, "source_file": "gun/scripts/fetch_google_hours.py", "source_location": "L206", "receiver": "day_map"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_google_hours_main", "callee": "get", "is_member_call": true, "source_file": "gun/scripts/fetch_google_hours.py", "source_location": "L207", "receiver": "day_map"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_google_hours_main", "callee": "get", "is_member_call": true, "source_file": "gun/scripts/fetch_google_hours.py", "source_location": "L208", "receiver": "day_map"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_google_hours_main", "callee": "get", "is_member_call": true, "source_file": "gun/scripts/fetch_google_hours.py", "source_location": "L209", "receiver": "day_map"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_google_hours_main", "callee": "join", "is_member_call": true, "source_file": "gun/scripts/fetch_google_hours.py", "source_location": "L210", "receiver": null}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_google_hours_main", "callee": "writerow", "is_member_call": true, "source_file": "gun/scripts/fetch_google_hours.py", "source_location": "L212", "receiver": "w"}, {"caller_nid": "$graphify-root$_gun_scripts_fetch_google_hours_main", "callee": "get", "is_member_call": true, "source_file": "gun/scripts/fetch_google_hours.py", "source_location": "L214", "receiver": "hours"}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.31/651d7d4fbc67fb037ee51cee9f0b6685479d63aec7fba9f4f2fb473f7e2e9881.json b/graphify-out/cache/ast/v0.9.31/651d7d4fbc67fb037ee51cee9f0b6685479d63aec7fba9f4f2fb473f7e2e9881.json new file mode 100644 index 0000000..2d9724d --- /dev/null +++ b/graphify-out/cache/ast/v0.9.31/651d7d4fbc67fb037ee51cee9f0b6685479d63aec7fba9f4f2fb473f7e2e9881.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_gun_scripts_setup_and_test_py", "label": "setup_and_test.py", "file_type": "code", "source_file": "gun/scripts/setup_and_test.py", "source_location": "L1"}, {"id": "$graphify-root$_gun_scripts_setup_and_test_rationale_1", "label": "env \uc0dd\uc131 + Kakao API \ud14c\uc2a4\ud2b8. \u26a0\ufe0f \ud0a4\ub294 \uc808\ub300 \ucf54\ub4dc\uc5d0 \ud558\ub4dc\ucf54\ub529\ud558\uc9c0 \ub9d0 \uac83 \u2014 \ud658\uacbd\ubcc0\uc218 \ub610\ub294 .env \ud30c\uc77c\uc5d0\uc11c \uc77d\uc5b4\uc634. \uc0ac\uc6a9\ubc95:\u2026", "file_type": "rationale", "source_file": "gun/scripts/setup_and_test.py", "source_location": "L1"}], "edges": [{"source": "$graphify-root$_gun_scripts_setup_and_test_py", "target": "os", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "gun/scripts/setup_and_test.py", "source_location": "L11", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_setup_and_test_py", "target": "sys", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "gun/scripts/setup_and_test.py", "source_location": "L12", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_setup_and_test_py", "target": "pathlib", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "gun/scripts/setup_and_test.py", "source_location": "L13", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_setup_and_test_py", "target": "dotenv", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "gun/scripts/setup_and_test.py", "source_location": "L28", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_setup_and_test_py", "target": "src_validation_kakao_matrix", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "gun/scripts/setup_and_test.py", "source_location": "L47", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_setup_and_test_py", "target": "src_data_models", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "gun/scripts/setup_and_test.py", "source_location": "L48", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_setup_and_test_rationale_1", "target": "$graphify-root$_gun_scripts_setup_and_test_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "gun/scripts/setup_and_test.py", "source_location": "L1", "weight": 1.0}], "raw_calls": []} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.31/663fefeaf89c8d280cc0f6fec74689e5b7151a7c3f66c3b5423d55f303da6cc4.json b/graphify-out/cache/ast/v0.9.31/663fefeaf89c8d280cc0f6fec74689e5b7151a7c3f66c3b5423d55f303da6cc4.json new file mode 100644 index 0000000..07994d7 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.31/663fefeaf89c8d280cc0f6fec74689e5b7151a7c3f66c3b5423d55f303da6cc4.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_tests_test_kakao_local_py", "label": "test_kakao_local.py", "file_type": "code", "source_file": "tests/test_kakao_local.py", "source_location": "L1"}, {"id": "$graphify-root$_tests_test_kakao_local_ok_response", "label": "_ok_response()", "file_type": "code", "source_file": "tests/test_kakao_local.py", "source_location": "L10", "_callable": true}, {"id": "$graphify-root$_tests_test_kakao_local_test_disabled_without_key_returns_none", "label": "test_disabled_without_key_returns_none()", "file_type": "code", "source_file": "tests/test_kakao_local.py", "source_location": "L29", "_callable": true}, {"id": "$graphify-root$_tests_test_kakao_local_test_search_parses_first_document", "label": "test_search_parses_first_document()", "file_type": "code", "source_file": "tests/test_kakao_local.py", "source_location": "L35", "_callable": true}, {"id": "$graphify-root$_tests_test_kakao_local_test_result_is_cached", "label": "test_result_is_cached()", "file_type": "code", "source_file": "tests/test_kakao_local.py", "source_location": "L46", "_callable": true}, {"id": "$graphify-root$_tests_test_kakao_local_test_empty_documents_returns_none", "label": "test_empty_documents_returns_none()", "file_type": "code", "source_file": "tests/test_kakao_local.py", "source_location": "L55", "_callable": true}, {"id": "$graphify-root$_tests_test_kakao_local_test_http_error_falls_back_to_none", "label": "test_http_error_falls_back_to_none()", "file_type": "code", "source_file": "tests/test_kakao_local.py", "source_location": "L64", "_callable": true}, {"id": "$graphify-root$_tests_test_kakao_local_multi_response", "label": "_multi_response()", "file_type": "code", "source_file": "tests/test_kakao_local.py", "source_location": "L73", "_callable": true}, {"id": "$graphify-root$_tests_test_kakao_local_test_search_keyword_list_parses_all", "label": "test_search_keyword_list_parses_all()", "file_type": "code", "source_file": "tests/test_kakao_local.py", "source_location": "L87", "_callable": true}, {"id": "$graphify-root$_tests_test_kakao_local_test_search_keyword_list_disabled_returns_empty", "label": "test_search_keyword_list_disabled_returns_empty()", "file_type": "code", "source_file": "tests/test_kakao_local.py", "source_location": "L96", "_callable": true}, {"id": "$graphify-root$_tests_test_kakao_local_address_response", "label": "_address_response()", "file_type": "code", "source_file": "tests/test_kakao_local.py", "source_location": "L101", "_callable": true}, {"id": "$graphify-root$_tests_test_kakao_local_test_geocode_address_parses_lat_lng", "label": "test_geocode_address_parses_lat_lng()", "file_type": "code", "source_file": "tests/test_kakao_local.py", "source_location": "L116", "_callable": true}, {"id": "$graphify-root$_tests_test_kakao_local_test_geocode_address_disabled_without_key_returns_none", "label": "test_geocode_address_disabled_without_key_returns_none()", "file_type": "code", "source_file": "tests/test_kakao_local.py", "source_location": "L124", "_callable": true}, {"id": "$graphify-root$_tests_test_kakao_local_test_geocode_address_is_cached", "label": "test_geocode_address_is_cached()", "file_type": "code", "source_file": "tests/test_kakao_local.py", "source_location": "L129", "_callable": true}, {"id": "$graphify-root$_tests_test_kakao_local_test_geocode_address_empty_documents_returns_none", "label": "test_geocode_address_empty_documents_returns_none()", "file_type": "code", "source_file": "tests/test_kakao_local.py", "source_location": "L138", "_callable": true}, {"id": "$graphify-root$_tests_test_kakao_local_test_geocode_address_http_error_falls_back_to_none", "label": "test_geocode_address_http_error_falls_back_to_none()", "file_type": "code", "source_file": "tests/test_kakao_local.py", "source_location": "L147", "_callable": true}, {"id": "$graphify-root$_tests_test_kakao_local_rationale_1", "label": "KakaoLocalClient \ud14c\uc2a4\ud2b8 (\uc2e4\uc81c API \ud638\ucd9c X \u2014 \ubaa8\ub450 mock).", "file_type": "rationale", "source_file": "tests/test_kakao_local.py", "source_location": "L1"}], "edges": [{"source": "$graphify-root$_tests_test_kakao_local_py", "target": "unittest_mock", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_kakao_local.py", "source_location": "L4", "weight": 1.0}, {"source": "$graphify-root$_tests_test_kakao_local_py", "target": "src_data_kakao_local", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_kakao_local.py", "source_location": "L6", "weight": 1.0}, {"source": "$graphify-root$_tests_test_kakao_local_py", "target": "src_data_models", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_kakao_local.py", "source_location": "L7", "weight": 1.0}, {"source": "$graphify-root$_tests_test_kakao_local_py", "target": "$graphify-root$_tests_test_kakao_local_ok_response", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_kakao_local.py", "source_location": "L10", "weight": 1.0}, {"source": "$graphify-root$_tests_test_kakao_local_py", "target": "$graphify-root$_tests_test_kakao_local_test_disabled_without_key_returns_none", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_kakao_local.py", "source_location": "L29", "weight": 1.0}, {"source": "$graphify-root$_tests_test_kakao_local_py", "target": "$graphify-root$_tests_test_kakao_local_test_search_parses_first_document", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_kakao_local.py", "source_location": "L35", "weight": 1.0}, {"source": "$graphify-root$_tests_test_kakao_local_py", "target": "$graphify-root$_tests_test_kakao_local_test_result_is_cached", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_kakao_local.py", "source_location": "L46", "weight": 1.0}, {"source": "$graphify-root$_tests_test_kakao_local_py", "target": "$graphify-root$_tests_test_kakao_local_test_empty_documents_returns_none", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_kakao_local.py", "source_location": "L55", "weight": 1.0}, {"source": "$graphify-root$_tests_test_kakao_local_py", "target": "$graphify-root$_tests_test_kakao_local_test_http_error_falls_back_to_none", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_kakao_local.py", "source_location": "L64", "weight": 1.0}, {"source": "$graphify-root$_tests_test_kakao_local_py", "target": "$graphify-root$_tests_test_kakao_local_multi_response", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_kakao_local.py", "source_location": "L73", "weight": 1.0}, {"source": "$graphify-root$_tests_test_kakao_local_py", "target": "$graphify-root$_tests_test_kakao_local_test_search_keyword_list_parses_all", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_kakao_local.py", "source_location": "L87", "weight": 1.0}, {"source": "$graphify-root$_tests_test_kakao_local_py", "target": "$graphify-root$_tests_test_kakao_local_test_search_keyword_list_disabled_returns_empty", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_kakao_local.py", "source_location": "L96", "weight": 1.0}, {"source": "$graphify-root$_tests_test_kakao_local_py", "target": "$graphify-root$_tests_test_kakao_local_address_response", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_kakao_local.py", "source_location": "L101", "weight": 1.0}, {"source": "$graphify-root$_tests_test_kakao_local_py", "target": "$graphify-root$_tests_test_kakao_local_test_geocode_address_parses_lat_lng", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_kakao_local.py", "source_location": "L116", "weight": 1.0}, {"source": "$graphify-root$_tests_test_kakao_local_py", "target": "$graphify-root$_tests_test_kakao_local_test_geocode_address_disabled_without_key_returns_none", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_kakao_local.py", "source_location": "L124", "weight": 1.0}, {"source": "$graphify-root$_tests_test_kakao_local_py", "target": "$graphify-root$_tests_test_kakao_local_test_geocode_address_is_cached", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_kakao_local.py", "source_location": "L129", "weight": 1.0}, {"source": "$graphify-root$_tests_test_kakao_local_py", "target": "$graphify-root$_tests_test_kakao_local_test_geocode_address_empty_documents_returns_none", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_kakao_local.py", "source_location": "L138", "weight": 1.0}, {"source": "$graphify-root$_tests_test_kakao_local_py", "target": "$graphify-root$_tests_test_kakao_local_test_geocode_address_http_error_falls_back_to_none", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_kakao_local.py", "source_location": "L147", "weight": 1.0}, {"source": "$graphify-root$_tests_test_kakao_local_test_search_parses_first_document", "target": "$graphify-root$_tests_test_kakao_local_ok_response", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_kakao_local.py", "source_location": "L37", "weight": 1.0}, {"source": "$graphify-root$_tests_test_kakao_local_test_result_is_cached", "target": "$graphify-root$_tests_test_kakao_local_ok_response", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_kakao_local.py", "source_location": "L48", "weight": 1.0}, {"source": "$graphify-root$_tests_test_kakao_local_test_search_keyword_list_parses_all", "target": "$graphify-root$_tests_test_kakao_local_multi_response", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_kakao_local.py", "source_location": "L89", "weight": 1.0}, {"source": "$graphify-root$_tests_test_kakao_local_test_geocode_address_parses_lat_lng", "target": "$graphify-root$_tests_test_kakao_local_address_response", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_kakao_local.py", "source_location": "L118", "weight": 1.0}, {"source": "$graphify-root$_tests_test_kakao_local_test_geocode_address_is_cached", "target": "$graphify-root$_tests_test_kakao_local_address_response", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_kakao_local.py", "source_location": "L131", "weight": 1.0}, {"source": "$graphify-root$_tests_test_kakao_local_rationale_1", "target": "$graphify-root$_tests_test_kakao_local_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_kakao_local.py", "source_location": "L1", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_tests_test_kakao_local_ok_response", "callee": "MagicMock", "is_member_call": false, "source_file": "tests/test_kakao_local.py", "source_location": "L11", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_kakao_local_test_disabled_without_key_returns_none", "callee": "KakaoLocalClient", "is_member_call": false, "source_file": "tests/test_kakao_local.py", "source_location": "L30", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_kakao_local_test_disabled_without_key_returns_none", "callee": "search_keyword", "is_member_call": true, "source_file": "tests/test_kakao_local.py", "source_location": "L32", "receiver": "client"}, {"caller_nid": "$graphify-root$_tests_test_kakao_local_test_search_parses_first_document", "callee": "KakaoLocalClient", "is_member_call": false, "source_file": "tests/test_kakao_local.py", "source_location": "L36", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_kakao_local_test_search_parses_first_document", "callee": "patch", "is_member_call": false, "source_file": "tests/test_kakao_local.py", "source_location": "L37", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_kakao_local_test_search_parses_first_document", "callee": "search_keyword", "is_member_call": true, "source_file": "tests/test_kakao_local.py", "source_location": "L38", "receiver": "client"}, {"caller_nid": "$graphify-root$_tests_test_kakao_local_test_search_parses_first_document", "callee": "KakaoPlace", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_kakao_local.py", "source_location": "L40"}, {"caller_nid": "$graphify-root$_tests_test_kakao_local_test_result_is_cached", "callee": "KakaoLocalClient", "is_member_call": false, "source_file": "tests/test_kakao_local.py", "source_location": "L47", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_kakao_local_test_result_is_cached", "callee": "patch", "is_member_call": false, "source_file": "tests/test_kakao_local.py", "source_location": "L48", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_kakao_local_test_result_is_cached", "callee": "search_keyword", "is_member_call": true, "source_file": "tests/test_kakao_local.py", "source_location": "L49", "receiver": "client"}, {"caller_nid": "$graphify-root$_tests_test_kakao_local_test_result_is_cached", "callee": "search_keyword", "is_member_call": true, "source_file": "tests/test_kakao_local.py", "source_location": "L50", "receiver": "client"}, {"caller_nid": "$graphify-root$_tests_test_kakao_local_test_empty_documents_returns_none", "callee": "KakaoLocalClient", "is_member_call": false, "source_file": "tests/test_kakao_local.py", "source_location": "L56", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_kakao_local_test_empty_documents_returns_none", "callee": "MagicMock", "is_member_call": false, "source_file": "tests/test_kakao_local.py", "source_location": "L57", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_kakao_local_test_empty_documents_returns_none", "callee": "patch", "is_member_call": false, "source_file": "tests/test_kakao_local.py", "source_location": "L60", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_kakao_local_test_empty_documents_returns_none", "callee": "search_keyword", "is_member_call": true, "source_file": "tests/test_kakao_local.py", "source_location": "L61", "receiver": "client"}, {"caller_nid": "$graphify-root$_tests_test_kakao_local_test_http_error_falls_back_to_none", "callee": "KakaoLocalClient", "is_member_call": false, "source_file": "tests/test_kakao_local.py", "source_location": "L67", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_kakao_local_test_http_error_falls_back_to_none", "callee": "patch", "is_member_call": false, "source_file": "tests/test_kakao_local.py", "source_location": "L68", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_kakao_local_test_http_error_falls_back_to_none", "callee": "ConnectTimeout", "is_member_call": true, "source_file": "tests/test_kakao_local.py", "source_location": "L68", "receiver": "httpx"}, {"caller_nid": "$graphify-root$_tests_test_kakao_local_test_http_error_falls_back_to_none", "callee": "search_keyword", "is_member_call": true, "source_file": "tests/test_kakao_local.py", "source_location": "L69", "receiver": "client"}, {"caller_nid": "$graphify-root$_tests_test_kakao_local_multi_response", "callee": "MagicMock", "is_member_call": false, "source_file": "tests/test_kakao_local.py", "source_location": "L74", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_kakao_local_test_search_keyword_list_parses_all", "callee": "KakaoLocalClient", "is_member_call": false, "source_file": "tests/test_kakao_local.py", "source_location": "L88", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_kakao_local_test_search_keyword_list_parses_all", "callee": "patch", "is_member_call": false, "source_file": "tests/test_kakao_local.py", "source_location": "L89", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_kakao_local_test_search_keyword_list_parses_all", "callee": "search_keyword_list", "is_member_call": true, "source_file": "tests/test_kakao_local.py", "source_location": "L90", "receiver": "client"}, {"caller_nid": "$graphify-root$_tests_test_kakao_local_test_search_keyword_list_disabled_returns_empty", "callee": "KakaoLocalClient", "is_member_call": false, "source_file": "tests/test_kakao_local.py", "source_location": "L97", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_kakao_local_test_search_keyword_list_disabled_returns_empty", "callee": "search_keyword_list", "is_member_call": true, "source_file": "tests/test_kakao_local.py", "source_location": "L98", "receiver": "client"}, {"caller_nid": "$graphify-root$_tests_test_kakao_local_address_response", "callee": "MagicMock", "is_member_call": false, "source_file": "tests/test_kakao_local.py", "source_location": "L102", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_kakao_local_test_geocode_address_parses_lat_lng", "callee": "KakaoLocalClient", "is_member_call": false, "source_file": "tests/test_kakao_local.py", "source_location": "L117", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_kakao_local_test_geocode_address_parses_lat_lng", "callee": "patch", "is_member_call": false, "source_file": "tests/test_kakao_local.py", "source_location": "L118", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_kakao_local_test_geocode_address_parses_lat_lng", "callee": "geocode_address", "is_member_call": true, "source_file": "tests/test_kakao_local.py", "source_location": "L119", "receiver": "client"}, {"caller_nid": "$graphify-root$_tests_test_kakao_local_test_geocode_address_disabled_without_key_returns_none", "callee": "KakaoLocalClient", "is_member_call": false, "source_file": "tests/test_kakao_local.py", "source_location": "L125", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_kakao_local_test_geocode_address_disabled_without_key_returns_none", "callee": "geocode_address", "is_member_call": true, "source_file": "tests/test_kakao_local.py", "source_location": "L126", "receiver": "client"}, {"caller_nid": "$graphify-root$_tests_test_kakao_local_test_geocode_address_is_cached", "callee": "KakaoLocalClient", "is_member_call": false, "source_file": "tests/test_kakao_local.py", "source_location": "L130", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_kakao_local_test_geocode_address_is_cached", "callee": "patch", "is_member_call": false, "source_file": "tests/test_kakao_local.py", "source_location": "L131", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_kakao_local_test_geocode_address_is_cached", "callee": "geocode_address", "is_member_call": true, "source_file": "tests/test_kakao_local.py", "source_location": "L132", "receiver": "client"}, {"caller_nid": "$graphify-root$_tests_test_kakao_local_test_geocode_address_is_cached", "callee": "geocode_address", "is_member_call": true, "source_file": "tests/test_kakao_local.py", "source_location": "L133", "receiver": "client"}, {"caller_nid": "$graphify-root$_tests_test_kakao_local_test_geocode_address_empty_documents_returns_none", "callee": "KakaoLocalClient", "is_member_call": false, "source_file": "tests/test_kakao_local.py", "source_location": "L139", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_kakao_local_test_geocode_address_empty_documents_returns_none", "callee": "MagicMock", "is_member_call": false, "source_file": "tests/test_kakao_local.py", "source_location": "L140", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_kakao_local_test_geocode_address_empty_documents_returns_none", "callee": "patch", "is_member_call": false, "source_file": "tests/test_kakao_local.py", "source_location": "L143", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_kakao_local_test_geocode_address_empty_documents_returns_none", "callee": "geocode_address", "is_member_call": true, "source_file": "tests/test_kakao_local.py", "source_location": "L144", "receiver": "client"}, {"caller_nid": "$graphify-root$_tests_test_kakao_local_test_geocode_address_http_error_falls_back_to_none", "callee": "KakaoLocalClient", "is_member_call": false, "source_file": "tests/test_kakao_local.py", "source_location": "L150", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_kakao_local_test_geocode_address_http_error_falls_back_to_none", "callee": "patch", "is_member_call": false, "source_file": "tests/test_kakao_local.py", "source_location": "L151", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_kakao_local_test_geocode_address_http_error_falls_back_to_none", "callee": "ConnectTimeout", "is_member_call": true, "source_file": "tests/test_kakao_local.py", "source_location": "L151", "receiver": "httpx"}, {"caller_nid": "$graphify-root$_tests_test_kakao_local_test_geocode_address_http_error_falls_back_to_none", "callee": "geocode_address", "is_member_call": true, "source_file": "tests/test_kakao_local.py", "source_location": "L152", "receiver": "client"}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.31/6ba9d73a3e4386f30c3770c8d83341da973abf28ca1b9ac1da089635100c26b5.json b/graphify-out/cache/ast/v0.9.31/6ba9d73a3e4386f30c3770c8d83341da973abf28ca1b9ac1da089635100c26b5.json new file mode 100644 index 0000000..7a63c76 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.31/6ba9d73a3e4386f30c3770c8d83341da973abf28ca1b9ac1da089635100c26b5.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_tests_test_congestion_engine_py", "label": "test_congestion_engine.py", "file_type": "code", "source_file": "tests/test_congestion_engine.py", "source_location": "L1"}, {"id": "fixture", "label": "fixture", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/tests/test_congestion_engine.py"}, {"id": "$graphify-root$_tests_test_congestion_engine_engine", "label": "engine()", "file_type": "code", "source_file": "tests/test_congestion_engine.py", "source_location": "L48", "_callable": true}, {"id": "parametrize", "label": "parametrize", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/tests/test_congestion_engine.py"}, {"id": "$graphify-root$_tests_test_congestion_engine_test_score_to_level", "label": "test_score_to_level()", "file_type": "code", "source_file": "tests/test_congestion_engine.py", "source_location": "L71", "_callable": true}, {"id": "$graphify-root$_tests_test_congestion_engine_test_exact_match", "label": "test_exact_match()", "file_type": "code", "source_file": "tests/test_congestion_engine.py", "source_location": "L79", "_callable": true}, {"id": "$graphify-root$_tests_test_congestion_engine_test_exact_match_low_season", "label": "test_exact_match_low_season()", "file_type": "code", "source_file": "tests/test_congestion_engine.py", "source_location": "L87", "_callable": true}, {"id": "$graphify-root$_tests_test_congestion_engine_test_partial_match_substring", "label": "test_partial_match_substring()", "file_type": "code", "source_file": "tests/test_congestion_engine.py", "source_location": "L98", "_callable": true}, {"id": "$graphify-root$_tests_test_congestion_engine_test_partial_match_superstring", "label": "test_partial_match_superstring()", "file_type": "code", "source_file": "tests/test_congestion_engine.py", "source_location": "L104", "_callable": true}, {"id": "$graphify-root$_tests_test_congestion_engine_test_global_fallback", "label": "test_global_fallback()", "file_type": "code", "source_file": "tests/test_congestion_engine.py", "source_location": "L114", "_callable": true}, {"id": "$graphify-root$_tests_test_congestion_engine_test_category_fallback", "label": "test_category_fallback()", "file_type": "code", "source_file": "tests/test_congestion_engine.py", "source_location": "L120", "_callable": true}, {"id": "$graphify-root$_tests_test_congestion_engine_test_invalid_month_raises", "label": "test_invalid_month_raises()", "file_type": "code", "source_file": "tests/test_congestion_engine.py", "source_location": "L130", "_callable": true}, {"id": "$graphify-root$_tests_test_congestion_engine_test_result_is_dataclass", "label": "test_result_is_dataclass()", "file_type": "code", "source_file": "tests/test_congestion_engine.py", "source_location": "L137", "_callable": true}, {"id": "$graphify-root$_tests_test_congestion_engine_test_is_crowded_true", "label": "test_is_crowded_true()", "file_type": "code", "source_file": "tests/test_congestion_engine.py", "source_location": "L147", "_callable": true}, {"id": "$graphify-root$_tests_test_congestion_engine_test_is_crowded_false", "label": "test_is_crowded_false()", "file_type": "code", "source_file": "tests/test_congestion_engine.py", "source_location": "L151", "_callable": true}, {"id": "$graphify-root$_tests_test_congestion_engine_test_score_itinerary", "label": "test_score_itinerary()", "file_type": "code", "source_file": "tests/test_congestion_engine.py", "source_location": "L155", "_callable": true}, {"id": "$graphify-root$_tests_test_congestion_engine_test_missing_csv_raises", "label": "test_missing_csv_raises()", "file_type": "code", "source_file": "tests/test_congestion_engine.py", "source_location": "L165", "_callable": true}, {"id": "$graphify-root$_tests_test_congestion_engine_rationale_1", "label": "Unit tests for CongestionEngine.", "file_type": "rationale", "source_file": "tests/test_congestion_engine.py", "source_location": "L1"}], "edges": [{"source": "$graphify-root$_tests_test_congestion_engine_py", "target": "pathlib", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_congestion_engine.py", "source_location": "L4", "weight": 1.0}, {"source": "$graphify-root$_tests_test_congestion_engine_py", "target": "unittest_mock", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_congestion_engine.py", "source_location": "L5", "weight": 1.0}, {"source": "$graphify-root$_tests_test_congestion_engine_py", "target": "pandas", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_congestion_engine.py", "source_location": "L7", "weight": 1.0, "local_alias": "pd"}, {"source": "$graphify-root$_tests_test_congestion_engine_py", "target": "pytest", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_congestion_engine.py", "source_location": "L8", "weight": 1.0}, {"source": "$graphify-root$_tests_test_congestion_engine_py", "target": "src_scoring_congestion_engine", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_congestion_engine.py", "source_location": "L10", "weight": 1.0}, {"source": "$graphify-root$_tests_test_congestion_engine_engine", "target": "fixture", "relation": "references", "confidence": "EXTRACTED", "source_file": "tests/test_congestion_engine.py", "source_location": "L47", "weight": 1.0, "context": "decorator"}, {"source": "$graphify-root$_tests_test_congestion_engine_py", "target": "$graphify-root$_tests_test_congestion_engine_engine", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_congestion_engine.py", "source_location": "L48", "weight": 1.0}, {"source": "$graphify-root$_tests_test_congestion_engine_test_score_to_level", "target": "parametrize", "relation": "references", "confidence": "EXTRACTED", "source_file": "tests/test_congestion_engine.py", "source_location": "L58", "weight": 1.0, "context": "decorator"}, {"source": "$graphify-root$_tests_test_congestion_engine_py", "target": "$graphify-root$_tests_test_congestion_engine_test_score_to_level", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_congestion_engine.py", "source_location": "L71", "weight": 1.0}, {"source": "$graphify-root$_tests_test_congestion_engine_py", "target": "$graphify-root$_tests_test_congestion_engine_test_exact_match", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_congestion_engine.py", "source_location": "L79", "weight": 1.0}, {"source": "$graphify-root$_tests_test_congestion_engine_py", "target": "$graphify-root$_tests_test_congestion_engine_test_exact_match_low_season", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_congestion_engine.py", "source_location": "L87", "weight": 1.0}, {"source": "$graphify-root$_tests_test_congestion_engine_py", "target": "$graphify-root$_tests_test_congestion_engine_test_partial_match_substring", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_congestion_engine.py", "source_location": "L98", "weight": 1.0}, {"source": "$graphify-root$_tests_test_congestion_engine_py", "target": "$graphify-root$_tests_test_congestion_engine_test_partial_match_superstring", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_congestion_engine.py", "source_location": "L104", "weight": 1.0}, {"source": "$graphify-root$_tests_test_congestion_engine_py", "target": "$graphify-root$_tests_test_congestion_engine_test_global_fallback", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_congestion_engine.py", "source_location": "L114", "weight": 1.0}, {"source": "$graphify-root$_tests_test_congestion_engine_py", "target": "$graphify-root$_tests_test_congestion_engine_test_category_fallback", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_congestion_engine.py", "source_location": "L120", "weight": 1.0}, {"source": "$graphify-root$_tests_test_congestion_engine_py", "target": "$graphify-root$_tests_test_congestion_engine_test_invalid_month_raises", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_congestion_engine.py", "source_location": "L130", "weight": 1.0}, {"source": "$graphify-root$_tests_test_congestion_engine_py", "target": "$graphify-root$_tests_test_congestion_engine_test_result_is_dataclass", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_congestion_engine.py", "source_location": "L137", "weight": 1.0}, {"source": "$graphify-root$_tests_test_congestion_engine_py", "target": "$graphify-root$_tests_test_congestion_engine_test_is_crowded_true", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_congestion_engine.py", "source_location": "L147", "weight": 1.0}, {"source": "$graphify-root$_tests_test_congestion_engine_py", "target": "$graphify-root$_tests_test_congestion_engine_test_is_crowded_false", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_congestion_engine.py", "source_location": "L151", "weight": 1.0}, {"source": "$graphify-root$_tests_test_congestion_engine_py", "target": "$graphify-root$_tests_test_congestion_engine_test_score_itinerary", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_congestion_engine.py", "source_location": "L155", "weight": 1.0}, {"source": "$graphify-root$_tests_test_congestion_engine_py", "target": "$graphify-root$_tests_test_congestion_engine_test_missing_csv_raises", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_congestion_engine.py", "source_location": "L165", "weight": 1.0}, {"source": "$graphify-root$_tests_test_congestion_engine_rationale_1", "target": "$graphify-root$_tests_test_congestion_engine_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_congestion_engine.py", "source_location": "L1", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_tests_test_congestion_engine_engine", "callee": "to_csv", "is_member_call": true, "source_file": "tests/test_congestion_engine.py", "source_location": "L50", "receiver": "SAMPLE_CSV_DATA"}, {"caller_nid": "$graphify-root$_tests_test_congestion_engine_engine", "callee": "CongestionEngine", "is_member_call": false, "source_file": "tests/test_congestion_engine.py", "source_location": "L51", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_congestion_engine_test_score_to_level", "callee": "_score_to_level", "is_member_call": false, "source_file": "tests/test_congestion_engine.py", "source_location": "L72", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_congestion_engine_test_exact_match", "callee": "score", "is_member_call": true, "source_file": "tests/test_congestion_engine.py", "source_location": "L80", "receiver": "engine"}, {"caller_nid": "$graphify-root$_tests_test_congestion_engine_test_exact_match", "callee": "approx", "is_member_call": true, "source_file": "tests/test_congestion_engine.py", "source_location": "L83", "receiver": "pytest"}, {"caller_nid": "$graphify-root$_tests_test_congestion_engine_test_exact_match_low_season", "callee": "score", "is_member_call": true, "source_file": "tests/test_congestion_engine.py", "source_location": "L88", "receiver": "engine"}, {"caller_nid": "$graphify-root$_tests_test_congestion_engine_test_partial_match_substring", "callee": "score", "is_member_call": true, "source_file": "tests/test_congestion_engine.py", "source_location": "L99", "receiver": "engine"}, {"caller_nid": "$graphify-root$_tests_test_congestion_engine_test_partial_match_superstring", "callee": "score", "is_member_call": true, "source_file": "tests/test_congestion_engine.py", "source_location": "L105", "receiver": "engine"}, {"caller_nid": "$graphify-root$_tests_test_congestion_engine_test_global_fallback", "callee": "score", "is_member_call": true, "source_file": "tests/test_congestion_engine.py", "source_location": "L115", "receiver": "engine"}, {"caller_nid": "$graphify-root$_tests_test_congestion_engine_test_category_fallback", "callee": "score", "is_member_call": true, "source_file": "tests/test_congestion_engine.py", "source_location": "L122", "receiver": "engine"}, {"caller_nid": "$graphify-root$_tests_test_congestion_engine_test_invalid_month_raises", "callee": "raises", "is_member_call": true, "source_file": "tests/test_congestion_engine.py", "source_location": "L131", "receiver": "pytest"}, {"caller_nid": "$graphify-root$_tests_test_congestion_engine_test_invalid_month_raises", "callee": "ValueError", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_congestion_engine.py", "source_location": "L131"}, {"caller_nid": "$graphify-root$_tests_test_congestion_engine_test_invalid_month_raises", "callee": "score", "is_member_call": true, "source_file": "tests/test_congestion_engine.py", "source_location": "L132", "receiver": "engine"}, {"caller_nid": "$graphify-root$_tests_test_congestion_engine_test_invalid_month_raises", "callee": "raises", "is_member_call": true, "source_file": "tests/test_congestion_engine.py", "source_location": "L133", "receiver": "pytest"}, {"caller_nid": "$graphify-root$_tests_test_congestion_engine_test_invalid_month_raises", "callee": "ValueError", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_congestion_engine.py", "source_location": "L133"}, {"caller_nid": "$graphify-root$_tests_test_congestion_engine_test_invalid_month_raises", "callee": "score", "is_member_call": true, "source_file": "tests/test_congestion_engine.py", "source_location": "L134", "receiver": "engine"}, {"caller_nid": "$graphify-root$_tests_test_congestion_engine_test_result_is_dataclass", "callee": "score", "is_member_call": true, "source_file": "tests/test_congestion_engine.py", "source_location": "L138", "receiver": "engine"}, {"caller_nid": "$graphify-root$_tests_test_congestion_engine_test_result_is_dataclass", "callee": "CongestionResult", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_congestion_engine.py", "source_location": "L139"}, {"caller_nid": "$graphify-root$_tests_test_congestion_engine_test_result_is_dataclass", "callee": "CongestionLevel", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_congestion_engine.py", "source_location": "L140"}, {"caller_nid": "$graphify-root$_tests_test_congestion_engine_test_is_crowded_true", "callee": "is_crowded", "is_member_call": true, "source_file": "tests/test_congestion_engine.py", "source_location": "L148", "receiver": "engine"}, {"caller_nid": "$graphify-root$_tests_test_congestion_engine_test_is_crowded_false", "callee": "is_crowded", "is_member_call": true, "source_file": "tests/test_congestion_engine.py", "source_location": "L152", "receiver": "engine"}, {"caller_nid": "$graphify-root$_tests_test_congestion_engine_test_score_itinerary", "callee": "score_itinerary", "is_member_call": true, "source_file": "tests/test_congestion_engine.py", "source_location": "L156", "receiver": "engine"}, {"caller_nid": "$graphify-root$_tests_test_congestion_engine_test_score_itinerary", "callee": "CongestionResult", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_congestion_engine.py", "source_location": "L158"}, {"caller_nid": "$graphify-root$_tests_test_congestion_engine_test_missing_csv_raises", "callee": "CongestionEngine", "is_member_call": false, "source_file": "tests/test_congestion_engine.py", "source_location": "L166", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_congestion_engine_test_missing_csv_raises", "callee": "Path", "is_member_call": false, "source_file": "tests/test_congestion_engine.py", "source_location": "L166", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_congestion_engine_test_missing_csv_raises", "callee": "raises", "is_member_call": true, "source_file": "tests/test_congestion_engine.py", "source_location": "L167", "receiver": "pytest"}, {"caller_nid": "$graphify-root$_tests_test_congestion_engine_test_missing_csv_raises", "callee": "FileNotFoundError", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_congestion_engine.py", "source_location": "L167"}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.31/6bfe909c3cb46e05bb4831cf9bb32532e16fc50e4417204846a09bde95a514b4.json b/graphify-out/cache/ast/v0.9.31/6bfe909c3cb46e05bb4831cf9bb32532e16fc50e4417204846a09bde95a514b4.json new file mode 100644 index 0000000..82d2b90 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.31/6bfe909c3cb46e05bb4831cf9bb32532e16fc50e4417204846a09bde95a514b4.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_src_data_seoul_citydata_client_py", "label": "seoul_citydata_client.py", "file_type": "code", "source_file": "src/data/seoul_citydata_client.py", "source_location": "L1"}, {"id": "$graphify-root$_src_data_seoul_citydata_client_forecastslot", "label": "ForecastSlot", "file_type": "code", "source_file": "src/data/seoul_citydata_client.py", "source_location": "L62", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_src_data_seoul_citydata_client_seoulrealtimecongestion", "label": "SeoulRealtimeCongestion", "file_type": "code", "source_file": "src/data/seoul_citydata_client.py", "source_location": "L71", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_src_data_seoul_citydata_client_seoulcitydataclient", "label": "SeoulCityDataClient", "file_type": "code", "source_file": "src/data/seoul_citydata_client.py", "source_location": "L83", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_src_data_seoul_citydata_client_seoulcitydataclient_init", "label": ".__init__()", "file_type": "code", "source_file": "src/data/seoul_citydata_client.py", "source_location": "L91", "_callable": true}, {"id": "$graphify-root$_src_data_seoul_citydata_client_seoulcitydataclient_url", "label": "._url()", "file_type": "code", "source_file": "src/data/seoul_citydata_client.py", "source_location": "L101", "_callable": true}, {"id": "$graphify-root$_src_data_seoul_citydata_client_seoulcitydataclient_parse_forecast", "label": "._parse_forecast()", "file_type": "code", "source_file": "src/data/seoul_citydata_client.py", "source_location": "L104", "_callable": true}, {"id": "$graphify-root$_src_data_seoul_citydata_client_seoulcitydataclient_resolve_name", "label": "._resolve_name()", "file_type": "code", "source_file": "src/data/seoul_citydata_client.py", "source_location": "L119", "_callable": true}, {"id": "$graphify-root$_src_data_seoul_citydata_client_seoulcitydataclient_get", "label": ".get()", "file_type": "code", "source_file": "src/data/seoul_citydata_client.py", "source_location": "L127", "_callable": true}, {"id": "$graphify-root$_src_data_seoul_citydata_client_seoulcitydataclient_get_at", "label": ".get_at()", "file_type": "code", "source_file": "src/data/seoul_citydata_client.py", "source_location": "L168", "_callable": true}, {"id": "$graphify-root$_src_data_seoul_citydata_client_rationale_1", "label": "\uc11c\uc6b8 \ub3c4\uc2dc\ub370\uc774\ud130 API \ud074\ub77c\uc774\uc5b8\ud2b8 \u2014 \uc2e4\uc2dc\uac04 \uc778\uad6c \ud63c\uc7a1\ub3c4. API: \uc11c\uc6b8 \uc5f4\ub9b0\ub370\uc774\ud130\uad11\uc7a5 citydata (\ub3c4\uc2dc\ub370\uc774\ud130 API) \uc5d4\ub4dc\ud3ec\uc778\ud2b8:\u2026", "file_type": "rationale", "source_file": "src/data/seoul_citydata_client.py", "source_location": "L1"}, {"id": "$graphify-root$_src_data_seoul_citydata_client_rationale_84", "label": "\uc11c\uc6b8 \ub3c4\uc2dc\ub370\uc774\ud130 \uc2e4\uc2dc\uac04 \ud63c\uc7a1\ub3c4 \ud074\ub77c\uc774\uc5b8\ud2b8 (\ub3d9\uae30). Args: api_key: SEOUL_DATA_API_KEY (\uae30\ubcf8\uac12: \ud658\uacbd\ubcc0\uc218\uc5d0\uc11c \ub85c\ub4dc)\u2026", "file_type": "rationale", "source_file": "src/data/seoul_citydata_client.py", "source_location": "L84"}, {"id": "$graphify-root$_src_data_seoul_citydata_client_rationale_128", "label": "\uc7a5\uc18c\uba85\uc73c\ub85c \uc2e4\uc2dc\uac04 \ud63c\uc7a1\ub3c4\ub97c \uc870\ud68c\ud55c\ub2e4. Args: area_name: \uc7a5\uc18c\uba85 (\ubcc4\uce6d \uc790\ub3d9 \ud574\uc11d \u2014 AREA_ALIASES \ucc38\uc870) \uc608:\u2026", "file_type": "rationale", "source_file": "src/data/seoul_citydata_client.py", "source_location": "L128"}, {"id": "$graphify-root$_src_data_seoul_citydata_client_rationale_169", "label": "\ud2b9\uc815 \uc2dc\uac01(HH:MM)\uc758 \uc608\uce21 \ud63c\uc7a1\ub3c4\ub97c \ubc18\ud658\ud55c\ub2e4. target_time\uc774 \ud604\uc7ac\ub77c\uba74 \uc2e4\uc2dc\uac04, \ubbf8\ub798\ub77c\uba74 \uc608\uce21\uac12\uc744 \uc0ac\uc6a9\ud55c\ub2e4. Args:\u2026", "file_type": "rationale", "source_file": "src/data/seoul_citydata_client.py", "source_location": "L169"}], "edges": [{"source": "$graphify-root$_src_data_seoul_citydata_client_py", "target": "dataclasses", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "src/data/seoul_citydata_client.py", "source_location": "L14", "weight": 1.0}, {"source": "$graphify-root$_src_data_seoul_citydata_client_py", "target": "datetime", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "src/data/seoul_citydata_client.py", "source_location": "L15", "weight": 1.0}, {"source": "$graphify-root$_src_data_seoul_citydata_client_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "src/data/seoul_citydata_client.py", "source_location": "L16", "weight": 1.0}, {"source": "$graphify-root$_src_data_seoul_citydata_client_py", "target": "httpx", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "src/data/seoul_citydata_client.py", "source_location": "L18", "weight": 1.0}, {"source": "$graphify-root$_src_data_seoul_citydata_client_py", "target": "$graphify-root$_src_data_seoul_citydata_client_forecastslot", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/data/seoul_citydata_client.py", "source_location": "L62", "weight": 1.0}, {"source": "$graphify-root$_src_data_seoul_citydata_client_py", "target": "$graphify-root$_src_data_seoul_citydata_client_seoulrealtimecongestion", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/data/seoul_citydata_client.py", "source_location": "L71", "weight": 1.0}, {"source": "$graphify-root$_src_data_seoul_citydata_client_py", "target": "$graphify-root$_src_data_seoul_citydata_client_seoulcitydataclient", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/data/seoul_citydata_client.py", "source_location": "L83", "weight": 1.0}, {"source": "$graphify-root$_src_data_seoul_citydata_client_seoulcitydataclient", "target": "$graphify-root$_src_data_seoul_citydata_client_seoulcitydataclient_init", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/data/seoul_citydata_client.py", "source_location": "L91", "weight": 1.0}, {"source": "$graphify-root$_src_data_seoul_citydata_client_seoulcitydataclient", "target": "$graphify-root$_src_data_seoul_citydata_client_seoulcitydataclient_url", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/data/seoul_citydata_client.py", "source_location": "L101", "weight": 1.0}, {"source": "$graphify-root$_src_data_seoul_citydata_client_seoulcitydataclient", "target": "$graphify-root$_src_data_seoul_citydata_client_seoulcitydataclient_parse_forecast", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/data/seoul_citydata_client.py", "source_location": "L104", "weight": 1.0}, {"source": "$graphify-root$_src_data_seoul_citydata_client_seoulcitydataclient_parse_forecast", "target": "$graphify-root$_src_data_seoul_citydata_client_forecastslot", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "src/data/seoul_citydata_client.py", "source_location": "L104", "weight": 1.0}, {"source": "$graphify-root$_src_data_seoul_citydata_client_seoulcitydataclient", "target": "$graphify-root$_src_data_seoul_citydata_client_seoulcitydataclient_resolve_name", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/data/seoul_citydata_client.py", "source_location": "L119", "weight": 1.0}, {"source": "$graphify-root$_src_data_seoul_citydata_client_seoulcitydataclient", "target": "$graphify-root$_src_data_seoul_citydata_client_seoulcitydataclient_get", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/data/seoul_citydata_client.py", "source_location": "L127", "weight": 1.0}, {"source": "$graphify-root$_src_data_seoul_citydata_client_seoulcitydataclient_get", "target": "$graphify-root$_src_data_seoul_citydata_client_seoulrealtimecongestion", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "src/data/seoul_citydata_client.py", "source_location": "L127", "weight": 1.0}, {"source": "$graphify-root$_src_data_seoul_citydata_client_seoulcitydataclient", "target": "$graphify-root$_src_data_seoul_citydata_client_seoulcitydataclient_get_at", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/data/seoul_citydata_client.py", "source_location": "L168", "weight": 1.0}, {"source": "$graphify-root$_src_data_seoul_citydata_client_seoulcitydataclient_get_at", "target": "$graphify-root$_src_data_seoul_citydata_client_forecastslot", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "src/data/seoul_citydata_client.py", "source_location": "L168", "weight": 1.0}, {"source": "$graphify-root$_src_data_seoul_citydata_client_seoulcitydataclient_parse_forecast", "target": "$graphify-root$_src_data_seoul_citydata_client_seoulcitydataclient_get", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/data/seoul_citydata_client.py", "source_location": "L107", "weight": 1.0}, {"source": "$graphify-root$_src_data_seoul_citydata_client_seoulcitydataclient_parse_forecast", "target": "$graphify-root$_src_data_seoul_citydata_client_forecastslot", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/data/seoul_citydata_client.py", "source_location": "L109", "weight": 1.0}, {"source": "$graphify-root$_src_data_seoul_citydata_client_seoulcitydataclient_get", "target": "$graphify-root$_src_data_seoul_citydata_client_seoulcitydataclient_resolve_name", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/data/seoul_citydata_client.py", "source_location": "L137", "weight": 1.0}, {"source": "$graphify-root$_src_data_seoul_citydata_client_seoulcitydataclient_get", "target": "$graphify-root$_src_data_seoul_citydata_client_seoulcitydataclient_url", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/data/seoul_citydata_client.py", "source_location": "L139", "weight": 1.0}, {"source": "$graphify-root$_src_data_seoul_citydata_client_seoulcitydataclient_get", "target": "$graphify-root$_src_data_seoul_citydata_client_seoulrealtimecongestion", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/data/seoul_citydata_client.py", "source_location": "L156", "weight": 1.0}, {"source": "$graphify-root$_src_data_seoul_citydata_client_seoulcitydataclient_get", "target": "$graphify-root$_src_data_seoul_citydata_client_seoulcitydataclient_parse_forecast", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/data/seoul_citydata_client.py", "source_location": "L164", "weight": 1.0}, {"source": "$graphify-root$_src_data_seoul_citydata_client_seoulcitydataclient_get_at", "target": "$graphify-root$_src_data_seoul_citydata_client_seoulcitydataclient_get", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/data/seoul_citydata_client.py", "source_location": "L178", "weight": 1.0}, {"source": "$graphify-root$_src_data_seoul_citydata_client_seoulcitydataclient_get_at", "target": "$graphify-root$_src_data_seoul_citydata_client_forecastslot", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/data/seoul_citydata_client.py", "source_location": "L191", "weight": 1.0}, {"source": "$graphify-root$_src_data_seoul_citydata_client_rationale_1", "target": "$graphify-root$_src_data_seoul_citydata_client_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/data/seoul_citydata_client.py", "source_location": "L1", "weight": 1.0}, {"source": "$graphify-root$_src_data_seoul_citydata_client_rationale_84", "target": "$graphify-root$_src_data_seoul_citydata_client_seoulcitydataclient", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/data/seoul_citydata_client.py", "source_location": "L84", "weight": 1.0}, {"source": "$graphify-root$_src_data_seoul_citydata_client_rationale_128", "target": "$graphify-root$_src_data_seoul_citydata_client_seoulcitydataclient_get", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/data/seoul_citydata_client.py", "source_location": "L128", "weight": 1.0}, {"source": "$graphify-root$_src_data_seoul_citydata_client_rationale_169", "target": "$graphify-root$_src_data_seoul_citydata_client_seoulcitydataclient_get_at", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/data/seoul_citydata_client.py", "source_location": "L169", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_src_data_seoul_citydata_client_seoulcitydataclient_init", "callee": "Settings", "is_member_call": false, "source_file": "src/data/seoul_citydata_client.py", "source_location": "L96", "receiver": null}, {"caller_nid": "$graphify-root$_src_data_seoul_citydata_client_seoulcitydataclient_init", "callee": "ValueError", "is_member_call": false, "source_file": "src/data/seoul_citydata_client.py", "source_location": "L98", "receiver": null}, {"caller_nid": "$graphify-root$_src_data_seoul_citydata_client_seoulcitydataclient_parse_forecast", "callee": "append", "is_member_call": true, "source_file": "src/data/seoul_citydata_client.py", "source_location": "L108", "receiver": "slots"}, {"caller_nid": "$graphify-root$_src_data_seoul_citydata_client_seoulcitydataclient_parse_forecast", "callee": "get", "is_member_call": true, "source_file": "src/data/seoul_citydata_client.py", "source_location": "L112", "receiver": "CONGEST_SCORE_MAP"}, {"caller_nid": "$graphify-root$_src_data_seoul_citydata_client_seoulcitydataclient_resolve_name", "callee": "lower", "is_member_call": true, "source_file": "src/data/seoul_citydata_client.py", "source_location": "L121", "receiver": null}, {"caller_nid": "$graphify-root$_src_data_seoul_citydata_client_seoulcitydataclient_resolve_name", "callee": "strip", "is_member_call": true, "source_file": "src/data/seoul_citydata_client.py", "source_location": "L121", "receiver": "area_name"}, {"caller_nid": "$graphify-root$_src_data_seoul_citydata_client_seoulcitydataclient_resolve_name", "callee": "items", "is_member_call": true, "source_file": "src/data/seoul_citydata_client.py", "source_location": "L122", "receiver": "AREA_ALIASES"}, {"caller_nid": "$graphify-root$_src_data_seoul_citydata_client_seoulcitydataclient_resolve_name", "callee": "lower", "is_member_call": true, "source_file": "src/data/seoul_citydata_client.py", "source_location": "L123", "receiver": "alias"}, {"caller_nid": "$graphify-root$_src_data_seoul_citydata_client_seoulcitydataclient_resolve_name", "callee": "strip", "is_member_call": true, "source_file": "src/data/seoul_citydata_client.py", "source_location": "L125", "receiver": "area_name"}, {"caller_nid": "$graphify-root$_src_data_seoul_citydata_client_seoulcitydataclient_get", "callee": "raise_for_status", "is_member_call": true, "source_file": "src/data/seoul_citydata_client.py", "source_location": "L140", "receiver": "resp"}, {"caller_nid": "$graphify-root$_src_data_seoul_citydata_client_seoulcitydataclient_get", "callee": "json", "is_member_call": true, "source_file": "src/data/seoul_citydata_client.py", "source_location": "L141", "receiver": "resp"}, {"caller_nid": "$graphify-root$_src_data_seoul_citydata_client_seoulcitydataclient_get", "callee": "ValueError", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "src/data/seoul_citydata_client.py", "source_location": "L142"}, {"caller_nid": "$graphify-root$_src_data_seoul_citydata_client_seoulcitydataclient_get", "callee": "get", "is_member_call": true, "source_file": "src/data/seoul_citydata_client.py", "source_location": "L160", "receiver": "CONGEST_SCORE_MAP"}, {"caller_nid": "$graphify-root$_src_data_seoul_citydata_client_seoulcitydataclient_get_at", "callee": "strftime", "is_member_call": true, "source_file": "src/data/seoul_citydata_client.py", "source_location": "L182", "receiver": null}, {"caller_nid": "$graphify-root$_src_data_seoul_citydata_client_seoulcitydataclient_get_at", "callee": "now", "is_member_call": true, "source_file": "src/data/seoul_citydata_client.py", "source_location": "L182", "receiver": "datetime"}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.31/7086528e6754f06ea0cdfd2f5caf3899f17a27a890e9f30113e5e215c79944fb.json b/graphify-out/cache/ast/v0.9.31/7086528e6754f06ea0cdfd2f5caf3899f17a27a890e9f30113e5e215c79944fb.json new file mode 100644 index 0000000..bd2b819 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.31/7086528e6754f06ea0cdfd2f5caf3899f17a27a890e9f30113e5e215c79944fb.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_src_api_schemas_py", "label": "schemas.py", "file_type": "code", "source_file": "src/api/schemas.py", "source_location": "L1"}, {"id": "$graphify-root$_src_api_schemas_placeinputweb", "label": "PlaceInputWeb", "file_type": "code", "source_file": "src/api/schemas.py", "source_location": "L9", "_callable": true, "_callable_class": true}, {"id": "basemodel", "label": "BaseModel", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/src/api/schemas.py"}, {"id": "$graphify-root$_src_api_schemas_dayplanweb", "label": "DayPlanWeb", "file_type": "code", "source_file": "src/api/schemas.py", "source_location": "L14", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_src_api_schemas_poiinfo", "label": "POIInfo", "file_type": "code", "source_file": "src/api/schemas.py", "source_location": "L18", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_src_api_schemas_placeitem", "label": "PlaceItem", "file_type": "code", "source_file": "src/api/schemas.py", "source_location": "L37", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_src_api_schemas_placesresponse", "label": "PlacesResponse", "file_type": "code", "source_file": "src/api/schemas.py", "source_location": "L49", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_src_api_schemas_validaterequest", "label": "ValidateRequest", "file_type": "code", "source_file": "src/api/schemas.py", "source_location": "L54", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_src_api_schemas_parsetextrequest", "label": "ParseTextRequest", "file_type": "code", "source_file": "src/api/schemas.py", "source_location": "L64", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_src_api_schemas_parsedplace", "label": "ParsedPlace", "file_type": "code", "source_file": "src/api/schemas.py", "source_location": "L68", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_src_api_schemas_parsedday", "label": "ParsedDay", "file_type": "code", "source_file": "src/api/schemas.py", "source_location": "L74", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_src_api_schemas_parsedplanresponse", "label": "ParsedPlanResponse", "file_type": "code", "source_file": "src/api/schemas.py", "source_location": "L78", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_src_api_schemas_validateresponse", "label": "ValidateResponse", "file_type": "code", "source_file": "src/api/schemas.py", "source_location": "L82", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_src_api_schemas_rationale_1", "label": "API \uc694\uccad/\uc751\ub2f5 Pydantic \uc2a4\ud0a4\ub9c8.", "file_type": "rationale", "source_file": "src/api/schemas.py", "source_location": "L1"}], "edges": [{"source": "$graphify-root$_src_api_schemas_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "src/api/schemas.py", "source_location": "L4", "weight": 1.0}, {"source": "$graphify-root$_src_api_schemas_py", "target": "pydantic", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "src/api/schemas.py", "source_location": "L6", "weight": 1.0}, {"source": "$graphify-root$_src_api_schemas_py", "target": "$graphify-root$_src_api_schemas_placeinputweb", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/api/schemas.py", "source_location": "L9", "weight": 1.0}, {"source": "$graphify-root$_src_api_schemas_placeinputweb", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "src/api/schemas.py", "source_location": "L9", "weight": 1.0}, {"source": "$graphify-root$_src_api_schemas_py", "target": "$graphify-root$_src_api_schemas_dayplanweb", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/api/schemas.py", "source_location": "L14", "weight": 1.0}, {"source": "$graphify-root$_src_api_schemas_dayplanweb", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "src/api/schemas.py", "source_location": "L14", "weight": 1.0}, {"source": "$graphify-root$_src_api_schemas_py", "target": "$graphify-root$_src_api_schemas_poiinfo", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/api/schemas.py", "source_location": "L18", "weight": 1.0}, {"source": "$graphify-root$_src_api_schemas_poiinfo", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "src/api/schemas.py", "source_location": "L18", "weight": 1.0}, {"source": "$graphify-root$_src_api_schemas_py", "target": "$graphify-root$_src_api_schemas_placeitem", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/api/schemas.py", "source_location": "L37", "weight": 1.0}, {"source": "$graphify-root$_src_api_schemas_placeitem", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "src/api/schemas.py", "source_location": "L37", "weight": 1.0}, {"source": "$graphify-root$_src_api_schemas_py", "target": "$graphify-root$_src_api_schemas_placesresponse", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/api/schemas.py", "source_location": "L49", "weight": 1.0}, {"source": "$graphify-root$_src_api_schemas_placesresponse", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "src/api/schemas.py", "source_location": "L49", "weight": 1.0}, {"source": "$graphify-root$_src_api_schemas_py", "target": "$graphify-root$_src_api_schemas_validaterequest", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/api/schemas.py", "source_location": "L54", "weight": 1.0}, {"source": "$graphify-root$_src_api_schemas_validaterequest", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "src/api/schemas.py", "source_location": "L54", "weight": 1.0}, {"source": "$graphify-root$_src_api_schemas_py", "target": "$graphify-root$_src_api_schemas_parsetextrequest", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/api/schemas.py", "source_location": "L64", "weight": 1.0}, {"source": "$graphify-root$_src_api_schemas_parsetextrequest", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "src/api/schemas.py", "source_location": "L64", "weight": 1.0}, {"source": "$graphify-root$_src_api_schemas_py", "target": "$graphify-root$_src_api_schemas_parsedplace", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/api/schemas.py", "source_location": "L68", "weight": 1.0}, {"source": "$graphify-root$_src_api_schemas_parsedplace", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "src/api/schemas.py", "source_location": "L68", "weight": 1.0}, {"source": "$graphify-root$_src_api_schemas_py", "target": "$graphify-root$_src_api_schemas_parsedday", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/api/schemas.py", "source_location": "L74", "weight": 1.0}, {"source": "$graphify-root$_src_api_schemas_parsedday", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "src/api/schemas.py", "source_location": "L74", "weight": 1.0}, {"source": "$graphify-root$_src_api_schemas_py", "target": "$graphify-root$_src_api_schemas_parsedplanresponse", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/api/schemas.py", "source_location": "L78", "weight": 1.0}, {"source": "$graphify-root$_src_api_schemas_parsedplanresponse", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "src/api/schemas.py", "source_location": "L78", "weight": 1.0}, {"source": "$graphify-root$_src_api_schemas_py", "target": "$graphify-root$_src_api_schemas_validateresponse", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/api/schemas.py", "source_location": "L82", "weight": 1.0}, {"source": "$graphify-root$_src_api_schemas_validateresponse", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "src/api/schemas.py", "source_location": "L82", "weight": 1.0}, {"source": "$graphify-root$_src_api_schemas_rationale_1", "target": "$graphify-root$_src_api_schemas_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/api/schemas.py", "source_location": "L1", "weight": 1.0}], "raw_calls": []} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.31/73da2dca800e902c041726e4a76f0e5458e6998686b640dfeee456a5e1e38df4.json b/graphify-out/cache/ast/v0.9.31/73da2dca800e902c041726e4a76f0e5458e6998686b640dfeee456a5e1e38df4.json new file mode 100644 index 0000000..f276388 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.31/73da2dca800e902c041726e4a76f0e5458e6998686b640dfeee456a5e1e38df4.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_scripts_test_pipeline_py", "label": "test_pipeline.py", "file_type": "code", "source_file": "scripts/test_pipeline.py", "source_location": "L1"}, {"id": "$graphify-root$_scripts_test_pipeline_guess_coords", "label": "_guess_coords()", "file_type": "code", "source_file": "scripts/test_pipeline.py", "source_location": "L103", "_callable": true}, {"id": "$graphify-root$_scripts_test_pipeline_guess_category", "label": "_guess_category()", "file_type": "code", "source_file": "scripts/test_pipeline.py", "source_location": "L115", "_callable": true}, {"id": "$graphify-root$_scripts_test_pipeline_guess_duration", "label": "_guess_duration()", "file_type": "code", "source_file": "scripts/test_pipeline.py", "source_location": "L122", "_callable": true}, {"id": "$graphify-root$_scripts_test_pipeline_is_accommodation", "label": "_is_accommodation()", "file_type": "code", "source_file": "scripts/test_pipeline.py", "source_location": "L129", "_callable": true}, {"id": "$graphify-root$_scripts_test_pipeline_parse_places", "label": "_parse_places()", "file_type": "code", "source_file": "scripts/test_pipeline.py", "source_location": "L134", "_callable": true}, {"id": "$graphify-root$_scripts_test_pipeline_trip_days", "label": "_trip_days()", "file_type": "code", "source_file": "scripts/test_pipeline.py", "source_location": "L147", "_callable": true}, {"id": "$graphify-root$_scripts_test_pipeline_party_type_from_triple", "label": "_party_type_from_triple()", "file_type": "code", "source_file": "scripts/test_pipeline.py", "source_location": "L158", "_callable": true}, {"id": "$graphify-root$_scripts_test_pipeline_travel_type_from_theme", "label": "_travel_type_from_theme()", "file_type": "code", "source_file": "scripts/test_pipeline.py", "source_location": "L175", "_callable": true}, {"id": "$graphify-root$_scripts_test_pipeline_make_poi", "label": "_make_poi()", "file_type": "code", "source_file": "scripts/test_pipeline.py", "source_location": "L191", "_callable": true}, {"id": "poi", "label": "POI", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/scripts/test_pipeline.py"}, {"id": "$graphify-root$_scripts_test_pipeline_load_gugseok", "label": "load_gugseok()", "file_type": "code", "source_file": "scripts/test_pipeline.py", "source_location": "L213", "_callable": true}, {"id": "$graphify-root$_scripts_test_pipeline_load_triple", "label": "load_triple()", "file_type": "code", "source_file": "scripts/test_pipeline.py", "source_location": "L251", "_callable": true}, {"id": "$graphify-root$_scripts_test_pipeline_build_itinerary", "label": "_build_itinerary()", "file_type": "code", "source_file": "scripts/test_pipeline.py", "source_location": "L277", "_callable": true}, {"id": "itineraryplan", "label": "ItineraryPlan", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/scripts/test_pipeline.py"}, {"id": "$graphify-root$_scripts_test_pipeline_run_pipeline", "label": "run_pipeline()", "file_type": "code", "source_file": "scripts/test_pipeline.py", "source_location": "L356", "_callable": true}, {"id": "$graphify-root$_scripts_test_pipeline_main", "label": "main()", "file_type": "code", "source_file": "scripts/test_pipeline.py", "source_location": "L408", "_callable": true}, {"id": "$graphify-root$_scripts_test_pipeline_rationale_1", "label": "\ud30c\uc774\ud504\ub77c\uc778 QA \ud14c\uc2a4\ud2b8 \u2014 xlsx \uc0d8\ud50c \ub370\uc774\ud130\ub85c HardFail/Warning/Score \uac80\uc99d.", "file_type": "rationale", "source_file": "scripts/test_pipeline.py", "source_location": "L1"}, {"id": "$graphify-root$_scripts_test_pipeline_rationale_104", "label": "\uc88c\ud45c \ud14c\uc774\ube14 \uc870\ud68c \u2192 \uc5c6\uc73c\uba74 \uc81c\uc8fc \uc911\uc2ec \uc88c\ud45c \ud3f4\ubc31.", "file_type": "rationale", "source_file": "scripts/test_pipeline.py", "source_location": "L104"}, {"id": "$graphify-root$_scripts_test_pipeline_rationale_135", "label": "1.\uc7a5\uc18c\uba85, 2.\uc7a5\uc18c\uba85' \u2192 ['\uc7a5\uc18c\uba85', '\uc7a5\uc18c\uba85'] (\uc22b\uc790 \uc811\ub450\uc0ac \uc81c\uac70).", "file_type": "rationale", "source_file": "scripts/test_pipeline.py", "source_location": "L135"}, {"id": "$graphify-root$_scripts_test_pipeline_rationale_214", "label": "\uad6c\uc11d\uad6c\uc11d xlsx \u2192 \uc0d8\ud50c ItineraryPlan \uc7ac\ub8cc \ubaa9\ub85d.", "file_type": "rationale", "source_file": "scripts/test_pipeline.py", "source_location": "L214"}, {"id": "$graphify-root$_scripts_test_pipeline_rationale_252", "label": "\ud2b8\ub9ac\ud50c xlsx \u2192 \uc0d8\ud50c ItineraryPlan \uc7ac\ub8cc \ubaa9\ub85d.", "file_type": "rationale", "source_file": "scripts/test_pipeline.py", "source_location": "L252"}, {"id": "$graphify-root$_scripts_test_pipeline_rationale_278", "label": "\uc0d8\ud50c dict \u2192 (ItineraryPlan, per-day POI lists). \ub2e4\uc77c(multi-day) \uc5f0\uc18d\uc131: Day N \uc758 \ub9c8\uc9c0\ub9c9\u2026", "file_type": "rationale", "source_file": "scripts/test_pipeline.py", "source_location": "L278"}], "edges": [{"source": "$graphify-root$_scripts_test_pipeline_py", "target": "re", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/test_pipeline.py", "source_location": "L4", "weight": 1.0}, {"source": "$graphify-root$_scripts_test_pipeline_py", "target": "sys", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/test_pipeline.py", "source_location": "L5", "weight": 1.0}, {"source": "$graphify-root$_scripts_test_pipeline_py", "target": "pathlib", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/test_pipeline.py", "source_location": "L6", "weight": 1.0}, {"source": "$graphify-root$_scripts_test_pipeline_py", "target": "pandas", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/test_pipeline.py", "source_location": "L8", "weight": 1.0, "local_alias": "pd"}, {"source": "$graphify-root$_scripts_test_pipeline_py", "target": "src_data_models", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/test_pipeline.py", "source_location": "L12", "weight": 1.0}, {"source": "$graphify-root$_scripts_test_pipeline_py", "target": "src_validation_hard_fail", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/test_pipeline.py", "source_location": "L13", "weight": 1.0}, {"source": "$graphify-root$_scripts_test_pipeline_py", "target": "src_validation_warning", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/test_pipeline.py", "source_location": "L14", "weight": 1.0}, {"source": "$graphify-root$_scripts_test_pipeline_py", "target": "src_validation_scoring", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/test_pipeline.py", "source_location": "L15", "weight": 1.0}, {"source": "$graphify-root$_scripts_test_pipeline_py", "target": "$graphify-root$_scripts_test_pipeline_guess_coords", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/test_pipeline.py", "source_location": "L103", "weight": 1.0}, {"source": "$graphify-root$_scripts_test_pipeline_py", "target": "$graphify-root$_scripts_test_pipeline_guess_category", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/test_pipeline.py", "source_location": "L115", "weight": 1.0}, {"source": "$graphify-root$_scripts_test_pipeline_py", "target": "$graphify-root$_scripts_test_pipeline_guess_duration", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/test_pipeline.py", "source_location": "L122", "weight": 1.0}, {"source": "$graphify-root$_scripts_test_pipeline_py", "target": "$graphify-root$_scripts_test_pipeline_is_accommodation", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/test_pipeline.py", "source_location": "L129", "weight": 1.0}, {"source": "$graphify-root$_scripts_test_pipeline_py", "target": "$graphify-root$_scripts_test_pipeline_parse_places", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/test_pipeline.py", "source_location": "L134", "weight": 1.0}, {"source": "$graphify-root$_scripts_test_pipeline_py", "target": "$graphify-root$_scripts_test_pipeline_trip_days", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/test_pipeline.py", "source_location": "L147", "weight": 1.0}, {"source": "$graphify-root$_scripts_test_pipeline_py", "target": "$graphify-root$_scripts_test_pipeline_party_type_from_triple", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/test_pipeline.py", "source_location": "L158", "weight": 1.0}, {"source": "$graphify-root$_scripts_test_pipeline_py", "target": "$graphify-root$_scripts_test_pipeline_travel_type_from_theme", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/test_pipeline.py", "source_location": "L175", "weight": 1.0}, {"source": "$graphify-root$_scripts_test_pipeline_py", "target": "$graphify-root$_scripts_test_pipeline_make_poi", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/test_pipeline.py", "source_location": "L191", "weight": 1.0}, {"source": "$graphify-root$_scripts_test_pipeline_make_poi", "target": "poi", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "scripts/test_pipeline.py", "source_location": "L191", "weight": 1.0}, {"source": "$graphify-root$_scripts_test_pipeline_py", "target": "$graphify-root$_scripts_test_pipeline_load_gugseok", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/test_pipeline.py", "source_location": "L213", "weight": 1.0}, {"source": "$graphify-root$_scripts_test_pipeline_py", "target": "$graphify-root$_scripts_test_pipeline_load_triple", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/test_pipeline.py", "source_location": "L251", "weight": 1.0}, {"source": "$graphify-root$_scripts_test_pipeline_py", "target": "$graphify-root$_scripts_test_pipeline_build_itinerary", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/test_pipeline.py", "source_location": "L277", "weight": 1.0}, {"source": "$graphify-root$_scripts_test_pipeline_build_itinerary", "target": "itineraryplan", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "scripts/test_pipeline.py", "source_location": "L277", "weight": 1.0}, {"source": "$graphify-root$_scripts_test_pipeline_build_itinerary", "target": "poi", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "scripts/test_pipeline.py", "source_location": "L277", "weight": 1.0}, {"source": "$graphify-root$_scripts_test_pipeline_py", "target": "$graphify-root$_scripts_test_pipeline_run_pipeline", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/test_pipeline.py", "source_location": "L356", "weight": 1.0}, {"source": "$graphify-root$_scripts_test_pipeline_py", "target": "$graphify-root$_scripts_test_pipeline_main", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/test_pipeline.py", "source_location": "L408", "weight": 1.0}, {"source": "$graphify-root$_scripts_test_pipeline_make_poi", "target": "$graphify-root$_scripts_test_pipeline_guess_coords", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/test_pipeline.py", "source_location": "L192", "weight": 1.0}, {"source": "$graphify-root$_scripts_test_pipeline_make_poi", "target": "$graphify-root$_scripts_test_pipeline_guess_category", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/test_pipeline.py", "source_location": "L193", "weight": 1.0}, {"source": "$graphify-root$_scripts_test_pipeline_make_poi", "target": "$graphify-root$_scripts_test_pipeline_guess_duration", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/test_pipeline.py", "source_location": "L194", "weight": 1.0}, {"source": "$graphify-root$_scripts_test_pipeline_make_poi", "target": "poi", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/test_pipeline.py", "source_location": "L197", "weight": 1.0}, {"source": "$graphify-root$_scripts_test_pipeline_load_gugseok", "target": "$graphify-root$_scripts_test_pipeline_parse_places", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/test_pipeline.py", "source_location": "L227", "weight": 1.0}, {"source": "$graphify-root$_scripts_test_pipeline_load_triple", "target": "$graphify-root$_scripts_test_pipeline_parse_places", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/test_pipeline.py", "source_location": "L259", "weight": 1.0}, {"source": "$graphify-root$_scripts_test_pipeline_build_itinerary", "target": "$graphify-root$_scripts_test_pipeline_trip_days", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/test_pipeline.py", "source_location": "L285", "weight": 1.0}, {"source": "$graphify-root$_scripts_test_pipeline_build_itinerary", "target": "$graphify-root$_scripts_test_pipeline_party_type_from_triple", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/test_pipeline.py", "source_location": "L288", "weight": 1.0}, {"source": "$graphify-root$_scripts_test_pipeline_build_itinerary", "target": "$graphify-root$_scripts_test_pipeline_travel_type_from_theme", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/test_pipeline.py", "source_location": "L292", "weight": 1.0}, {"source": "$graphify-root$_scripts_test_pipeline_build_itinerary", "target": "$graphify-root$_scripts_test_pipeline_make_poi", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/test_pipeline.py", "source_location": "L312", "weight": 1.0}, {"source": "$graphify-root$_scripts_test_pipeline_build_itinerary", "target": "poi", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/test_pipeline.py", "source_location": "L330", "weight": 1.0}, {"source": "$graphify-root$_scripts_test_pipeline_build_itinerary", "target": "itineraryplan", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/test_pipeline.py", "source_location": "L342", "weight": 1.0}, {"source": "$graphify-root$_scripts_test_pipeline_run_pipeline", "target": "$graphify-root$_scripts_test_pipeline_build_itinerary", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/test_pipeline.py", "source_location": "L362", "weight": 1.0}, {"source": "$graphify-root$_scripts_test_pipeline_run_pipeline", "target": "itineraryplan", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/test_pipeline.py", "source_location": "L375", "weight": 1.0}, {"source": "$graphify-root$_scripts_test_pipeline_main", "target": "$graphify-root$_scripts_test_pipeline_load_gugseok", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/test_pipeline.py", "source_location": "L415", "weight": 1.0}, {"source": "$graphify-root$_scripts_test_pipeline_main", "target": "$graphify-root$_scripts_test_pipeline_run_pipeline", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/test_pipeline.py", "source_location": "L416", "weight": 1.0}, {"source": "$graphify-root$_scripts_test_pipeline_main", "target": "$graphify-root$_scripts_test_pipeline_load_triple", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/test_pipeline.py", "source_location": "L421", "weight": 1.0}, {"source": "$graphify-root$_scripts_test_pipeline_rationale_1", "target": "$graphify-root$_scripts_test_pipeline_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/test_pipeline.py", "source_location": "L1", "weight": 1.0}, {"source": "$graphify-root$_scripts_test_pipeline_rationale_104", "target": "$graphify-root$_scripts_test_pipeline_guess_coords", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/test_pipeline.py", "source_location": "L104", "weight": 1.0}, {"source": "$graphify-root$_scripts_test_pipeline_rationale_135", "target": "$graphify-root$_scripts_test_pipeline_parse_places", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/test_pipeline.py", "source_location": "L135", "weight": 1.0}, {"source": "$graphify-root$_scripts_test_pipeline_rationale_214", "target": "$graphify-root$_scripts_test_pipeline_load_gugseok", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/test_pipeline.py", "source_location": "L214", "weight": 1.0}, {"source": "$graphify-root$_scripts_test_pipeline_rationale_252", "target": "$graphify-root$_scripts_test_pipeline_load_triple", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/test_pipeline.py", "source_location": "L252", "weight": 1.0}, {"source": "$graphify-root$_scripts_test_pipeline_rationale_278", "target": "$graphify-root$_scripts_test_pipeline_build_itinerary", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/test_pipeline.py", "source_location": "L278", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_scripts_test_pipeline_guess_coords", "callee": "COORD_TABLE", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/test_pipeline.py", "source_location": "L109"}, {"caller_nid": "$graphify-root$_scripts_test_pipeline_guess_coords", "callee": "len", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/test_pipeline.py", "source_location": "L109"}, {"caller_nid": "$graphify-root$_scripts_test_pipeline_guess_category", "callee": "items", "is_member_call": true, "source_file": "scripts/test_pipeline.py", "source_location": "L116", "receiver": "CATEGORY_MAP"}, {"caller_nid": "$graphify-root$_scripts_test_pipeline_guess_duration", "callee": "items", "is_member_call": true, "source_file": "scripts/test_pipeline.py", "source_location": "L123", "receiver": "DURATION_HINTS"}, {"caller_nid": "$graphify-root$_scripts_test_pipeline_parse_places", "callee": "str", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/test_pipeline.py", "source_location": "L136"}, {"caller_nid": "$graphify-root$_scripts_test_pipeline_parse_places", "callee": "split", "is_member_call": true, "source_file": "scripts/test_pipeline.py", "source_location": "L138", "receiver": "re"}, {"caller_nid": "$graphify-root$_scripts_test_pipeline_parse_places", "callee": "strip", "is_member_call": true, "source_file": "scripts/test_pipeline.py", "source_location": "L138", "receiver": "cell"}, {"caller_nid": "$graphify-root$_scripts_test_pipeline_parse_places", "callee": "strip", "is_member_call": true, "source_file": "scripts/test_pipeline.py", "source_location": "L141", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_test_pipeline_parse_places", "callee": "sub", "is_member_call": true, "source_file": "scripts/test_pipeline.py", "source_location": "L141", "receiver": "re"}, {"caller_nid": "$graphify-root$_scripts_test_pipeline_parse_places", "callee": "append", "is_member_call": true, "source_file": "scripts/test_pipeline.py", "source_location": "L143", "receiver": "names"}, {"caller_nid": "$graphify-root$_scripts_test_pipeline_trip_days", "callee": "str", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/test_pipeline.py", "source_location": "L148"}, {"caller_nid": "$graphify-root$_scripts_test_pipeline_trip_days", "callee": "search", "is_member_call": true, "source_file": "scripts/test_pipeline.py", "source_location": "L150", "receiver": "re"}, {"caller_nid": "$graphify-root$_scripts_test_pipeline_trip_days", "callee": "group", "is_member_call": true, "source_file": "scripts/test_pipeline.py", "source_location": "L152", "receiver": "m"}, {"caller_nid": "$graphify-root$_scripts_test_pipeline_party_type_from_triple", "callee": "str", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/test_pipeline.py", "source_location": "L159"}, {"caller_nid": "$graphify-root$_scripts_test_pipeline_party_type_from_triple", "callee": "lower", "is_member_call": true, "source_file": "scripts/test_pipeline.py", "source_location": "L161", "receiver": "\ub204\uad6c\uc640"}, {"caller_nid": "$graphify-root$_scripts_test_pipeline_travel_type_from_theme", "callee": "str", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/test_pipeline.py", "source_location": "L176"}, {"caller_nid": "$graphify-root$_scripts_test_pipeline_load_gugseok", "callee": "read_excel", "is_member_call": true, "source_file": "scripts/test_pipeline.py", "source_location": "L215", "receiver": "pd"}, {"caller_nid": "$graphify-root$_scripts_test_pipeline_load_gugseok", "callee": "iterrows", "is_member_call": true, "source_file": "scripts/test_pipeline.py", "source_location": "L219", "receiver": "df"}, {"caller_nid": "$graphify-root$_scripts_test_pipeline_load_gugseok", "callee": "get", "is_member_call": true, "source_file": "scripts/test_pipeline.py", "source_location": "L220", "receiver": "row"}, {"caller_nid": "$graphify-root$_scripts_test_pipeline_load_gugseok", "callee": "notna", "is_member_call": true, "source_file": "scripts/test_pipeline.py", "source_location": "L221", "receiver": "pd"}, {"caller_nid": "$graphify-root$_scripts_test_pipeline_load_gugseok", "callee": "get", "is_member_call": true, "source_file": "scripts/test_pipeline.py", "source_location": "L222", "receiver": "current"}, {"caller_nid": "$graphify-root$_scripts_test_pipeline_load_gugseok", "callee": "append", "is_member_call": true, "source_file": "scripts/test_pipeline.py", "source_location": "L223", "receiver": "results"}, {"caller_nid": "$graphify-root$_scripts_test_pipeline_load_gugseok", "callee": "startswith", "is_member_call": true, "source_file": "scripts/test_pipeline.py", "source_location": "L226", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_test_pipeline_load_gugseok", "callee": "get", "is_member_call": true, "source_file": "scripts/test_pipeline.py", "source_location": "L227", "receiver": "row"}, {"caller_nid": "$graphify-root$_scripts_test_pipeline_load_gugseok", "callee": "get", "is_member_call": true, "source_file": "scripts/test_pipeline.py", "source_location": "L231", "receiver": "row"}, {"caller_nid": "$graphify-root$_scripts_test_pipeline_load_gugseok", "callee": "get", "is_member_call": true, "source_file": "scripts/test_pipeline.py", "source_location": "L232", "receiver": "row"}, {"caller_nid": "$graphify-root$_scripts_test_pipeline_load_gugseok", "callee": "get", "is_member_call": true, "source_file": "scripts/test_pipeline.py", "source_location": "L233", "receiver": "row"}, {"caller_nid": "$graphify-root$_scripts_test_pipeline_load_gugseok", "callee": "get", "is_member_call": true, "source_file": "scripts/test_pipeline.py", "source_location": "L234", "receiver": "row"}, {"caller_nid": "$graphify-root$_scripts_test_pipeline_load_gugseok", "callee": "get", "is_member_call": true, "source_file": "scripts/test_pipeline.py", "source_location": "L239", "receiver": "row"}, {"caller_nid": "$graphify-root$_scripts_test_pipeline_load_gugseok", "callee": "startswith", "is_member_call": true, "source_file": "scripts/test_pipeline.py", "source_location": "L241", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_test_pipeline_load_gugseok", "callee": "get", "is_member_call": true, "source_file": "scripts/test_pipeline.py", "source_location": "L243", "receiver": "row"}, {"caller_nid": "$graphify-root$_scripts_test_pipeline_load_gugseok", "callee": "extend", "is_member_call": true, "source_file": "scripts/test_pipeline.py", "source_location": "L244", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_test_pipeline_load_gugseok", "callee": "get", "is_member_call": true, "source_file": "scripts/test_pipeline.py", "source_location": "L246", "receiver": "current"}, {"caller_nid": "$graphify-root$_scripts_test_pipeline_load_gugseok", "callee": "append", "is_member_call": true, "source_file": "scripts/test_pipeline.py", "source_location": "L247", "receiver": "results"}, {"caller_nid": "$graphify-root$_scripts_test_pipeline_load_triple", "callee": "read_excel", "is_member_call": true, "source_file": "scripts/test_pipeline.py", "source_location": "L253", "receiver": "pd"}, {"caller_nid": "$graphify-root$_scripts_test_pipeline_load_triple", "callee": "reset_index", "is_member_call": true, "source_file": "scripts/test_pipeline.py", "source_location": "L254", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_test_pipeline_load_triple", "callee": "startswith", "is_member_call": true, "source_file": "scripts/test_pipeline.py", "source_location": "L255", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_test_pipeline_load_triple", "callee": "iterrows", "is_member_call": true, "source_file": "scripts/test_pipeline.py", "source_location": "L258", "receiver": "korean"}, {"caller_nid": "$graphify-root$_scripts_test_pipeline_load_triple", "callee": "get", "is_member_call": true, "source_file": "scripts/test_pipeline.py", "source_location": "L259", "receiver": "row"}, {"caller_nid": "$graphify-root$_scripts_test_pipeline_load_triple", "callee": "append", "is_member_call": true, "source_file": "scripts/test_pipeline.py", "source_location": "L262", "receiver": "results"}, {"caller_nid": "$graphify-root$_scripts_test_pipeline_load_triple", "callee": "get", "is_member_call": true, "source_file": "scripts/test_pipeline.py", "source_location": "L264", "receiver": "row"}, {"caller_nid": "$graphify-root$_scripts_test_pipeline_load_triple", "callee": "get", "is_member_call": true, "source_file": "scripts/test_pipeline.py", "source_location": "L265", "receiver": "row"}, {"caller_nid": "$graphify-root$_scripts_test_pipeline_load_triple", "callee": "get", "is_member_call": true, "source_file": "scripts/test_pipeline.py", "source_location": "L266", "receiver": "row"}, {"caller_nid": "$graphify-root$_scripts_test_pipeline_load_triple", "callee": "get", "is_member_call": true, "source_file": "scripts/test_pipeline.py", "source_location": "L267", "receiver": "row"}, {"caller_nid": "$graphify-root$_scripts_test_pipeline_load_triple", "callee": "get", "is_member_call": true, "source_file": "scripts/test_pipeline.py", "source_location": "L268", "receiver": "row"}, {"caller_nid": "$graphify-root$_scripts_test_pipeline_build_itinerary", "callee": "get", "is_member_call": true, "source_file": "scripts/test_pipeline.py", "source_location": "L288", "receiver": "sample"}, {"caller_nid": "$graphify-root$_scripts_test_pipeline_build_itinerary", "callee": "get", "is_member_call": true, "source_file": "scripts/test_pipeline.py", "source_location": "L292", "receiver": "sample"}, {"caller_nid": "$graphify-root$_scripts_test_pipeline_build_itinerary", "callee": "get", "is_member_call": true, "source_file": "scripts/test_pipeline.py", "source_location": "L302", "receiver": "sample"}, {"caller_nid": "$graphify-root$_scripts_test_pipeline_build_itinerary", "callee": "append", "is_member_call": true, "source_file": "scripts/test_pipeline.py", "source_location": "L308", "receiver": "day_last_accom"}, {"caller_nid": "$graphify-root$_scripts_test_pipeline_build_itinerary", "callee": "PlaceInput", "is_member_call": false, "source_file": "scripts/test_pipeline.py", "source_location": "L311", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_test_pipeline_build_itinerary", "callee": "append", "is_member_call": true, "source_file": "scripts/test_pipeline.py", "source_location": "L314", "receiver": "day_plans"}, {"caller_nid": "$graphify-root$_scripts_test_pipeline_build_itinerary", "callee": "DayPlan", "is_member_call": false, "source_file": "scripts/test_pipeline.py", "source_location": "L314", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_test_pipeline_build_itinerary", "callee": "append", "is_member_call": true, "source_file": "scripts/test_pipeline.py", "source_location": "L315", "receiver": "per_day_pois"}, {"caller_nid": "$graphify-root$_scripts_test_pipeline_build_itinerary", "callee": "append", "is_member_call": true, "source_file": "scripts/test_pipeline.py", "source_location": "L319", "receiver": "day_last_accom"}, {"caller_nid": "$graphify-root$_scripts_test_pipeline_build_itinerary", "callee": "append", "is_member_call": true, "source_file": "scripts/test_pipeline.py", "source_location": "L322", "receiver": "day_plans"}, {"caller_nid": "$graphify-root$_scripts_test_pipeline_build_itinerary", "callee": "DayPlan", "is_member_call": false, "source_file": "scripts/test_pipeline.py", "source_location": "L322", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_test_pipeline_build_itinerary", "callee": "PlaceInput", "is_member_call": false, "source_file": "scripts/test_pipeline.py", "source_location": "L322", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_test_pipeline_build_itinerary", "callee": "append", "is_member_call": true, "source_file": "scripts/test_pipeline.py", "source_location": "L323", "receiver": "per_day_pois"}, {"caller_nid": "$graphify-root$_scripts_test_pipeline_build_itinerary", "callee": "append", "is_member_call": true, "source_file": "scripts/test_pipeline.py", "source_location": "L324", "receiver": "day_last_accom"}, {"caller_nid": "$graphify-root$_scripts_test_pipeline_build_itinerary", "callee": "insert", "is_member_call": true, "source_file": "scripts/test_pipeline.py", "source_location": "L340", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_test_pipeline_run_pipeline", "callee": "get", "is_member_call": true, "source_file": "scripts/test_pipeline.py", "source_location": "L360", "receiver": "sample"}, {"caller_nid": "$graphify-root$_scripts_test_pipeline_run_pipeline", "callee": "get", "is_member_call": true, "source_file": "scripts/test_pipeline.py", "source_location": "L360", "receiver": "sample"}, {"caller_nid": "$graphify-root$_scripts_test_pipeline_run_pipeline", "callee": "HardFailDetector", "is_member_call": false, "source_file": "scripts/test_pipeline.py", "source_location": "L366", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_test_pipeline_run_pipeline", "callee": "WarningDetector", "is_member_call": false, "source_file": "scripts/test_pipeline.py", "source_location": "L367", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_test_pipeline_run_pipeline", "callee": "ScoreCalculator", "is_member_call": false, "source_file": "scripts/test_pipeline.py", "source_location": "L368", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_test_pipeline_run_pipeline", "callee": "detect", "is_member_call": true, "source_file": "scripts/test_pipeline.py", "source_location": "L384", "receiver": "detector_hf"}, {"caller_nid": "$graphify-root$_scripts_test_pipeline_run_pipeline", "callee": "detect", "is_member_call": true, "source_file": "scripts/test_pipeline.py", "source_location": "L385", "receiver": "detector_warn"}, {"caller_nid": "$graphify-root$_scripts_test_pipeline_run_pipeline", "callee": "compute", "is_member_call": true, "source_file": "scripts/test_pipeline.py", "source_location": "L386", "receiver": "scorer"}, {"caller_nid": "$graphify-root$_scripts_test_pipeline_run_pipeline", "callee": "extend", "is_member_call": true, "source_file": "scripts/test_pipeline.py", "source_location": "L387", "receiver": "all_hard_fails"}, {"caller_nid": "$graphify-root$_scripts_test_pipeline_run_pipeline", "callee": "extend", "is_member_call": true, "source_file": "scripts/test_pipeline.py", "source_location": "L388", "receiver": "all_warnings"}, {"caller_nid": "$graphify-root$_scripts_test_pipeline_run_pipeline", "callee": "append", "is_member_call": true, "source_file": "scripts/test_pipeline.py", "source_location": "L389", "receiver": "all_scores"}, {"caller_nid": "$graphify-root$_scripts_test_pipeline_run_pipeline", "callee": "join", "is_member_call": true, "source_file": "scripts/test_pipeline.py", "source_location": "L391", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_test_pipeline_main", "callee": "Path", "is_member_call": false, "source_file": "scripts/test_pipeline.py", "source_location": "L409", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_test_pipeline_main", "callee": "__file__", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/test_pipeline.py", "source_location": "L409"}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.31/746211cf1105bf95334ae8d58345e89cff39469079546d60fa716d745faa3af4.json b/graphify-out/cache/ast/v0.9.31/746211cf1105bf95334ae8d58345e89cff39469079546d60fa716d745faa3af4.json new file mode 100644 index 0000000..98fa760 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.31/746211cf1105bf95334ae8d58345e89cff39469079546d60fa716d745faa3af4.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_phases_0_setup_analyze_triple_py", "label": "analyze_triple.py", "file_type": "code", "source_file": "phases/0-setup/analyze_triple.py", "source_location": "L1"}, {"id": "$graphify-root$_phases_0_setup_analyze_triple_load_env", "label": "_load_env()", "file_type": "code", "source_file": "phases/0-setup/analyze_triple.py", "source_location": "L12", "_callable": true}, {"id": "$graphify-root$_phases_0_setup_analyze_triple_parse_numbered", "label": "parse_numbered()", "file_type": "code", "source_file": "phases/0-setup/analyze_triple.py", "source_location": "L68", "_callable": true}, {"id": "$graphify-root$_phases_0_setup_analyze_triple_geocode_tourapi", "label": "geocode_tourapi()", "file_type": "code", "source_file": "phases/0-setup/analyze_triple.py", "source_location": "L159", "_callable": true}, {"id": "$graphify-root$_phases_0_setup_analyze_triple_geocode_kakao_local", "label": "geocode_kakao_local()", "file_type": "code", "source_file": "phases/0-setup/analyze_triple.py", "source_location": "L182", "_callable": true}, {"id": "$graphify-root$_phases_0_setup_analyze_triple_geocode_nominatim", "label": "geocode_nominatim()", "file_type": "code", "source_file": "phases/0-setup/analyze_triple.py", "source_location": "L206", "_callable": true}, {"id": "$graphify-root$_phases_0_setup_analyze_triple_geocode_single", "label": "geocode_single()", "file_type": "code", "source_file": "phases/0-setup/analyze_triple.py", "source_location": "L223", "_callable": true}, {"id": "$graphify-root$_phases_0_setup_analyze_triple_haversine", "label": "haversine()", "file_type": "code", "source_file": "phases/0-setup/analyze_triple.py", "source_location": "L265", "_callable": true}, {"id": "$graphify-root$_phases_0_setup_analyze_triple_haversine_travel_sec", "label": "haversine_travel_sec()", "file_type": "code", "source_file": "phases/0-setup/analyze_triple.py", "source_location": "L273", "_callable": true}, {"id": "$graphify-root$_phases_0_setup_analyze_triple_get_travel_time", "label": "get_travel_time()", "file_type": "code", "source_file": "phases/0-setup/analyze_triple.py", "source_location": "L279", "_callable": true}, {"id": "$graphify-root$_phases_0_setup_analyze_triple_cluster_label", "label": "cluster_label()", "file_type": "code", "source_file": "phases/0-setup/analyze_triple.py", "source_location": "L308", "_callable": true}, {"id": "$graphify-root$_phases_0_setup_analyze_triple_percentile", "label": "percentile()", "file_type": "code", "source_file": "phases/0-setup/analyze_triple.py", "source_location": "L388", "_callable": true}, {"id": "$graphify-root$_phases_0_setup_analyze_triple_stats_block", "label": "stats_block()", "file_type": "code", "source_file": "phases/0-setup/analyze_triple.py", "source_location": "L394", "_callable": true}, {"id": "$graphify-root$_phases_0_setup_analyze_triple_rationale_1", "label": "\ud2b8\ub9ac\ud50c \uc571 \ucd94\ucc9c \uacbd\ub85c \ubd84\uc11d \ud30c\uc774\ud504\ub77c\uc778 (\ub300\ud55c\ubbfc\uad6d \ub178\uc120\ub9cc) \uad6c\uc11d\uad6c\uc11d analyze.py\uc640 \ub3d9\uc77c \uc9c0\ud45c\ub97c \uc0b0\ucd9c\ud558\uc5ec \ube44\uad50 \uae30\ubc18 \ub370\uc774\ud130 \uc0dd\uc131", "file_type": "rationale", "source_file": "phases/0-setup/analyze_triple.py", "source_location": "L1"}, {"id": "$graphify-root$_phases_0_setup_analyze_triple_rationale_69", "label": "1.\uc7a5\uc18cA, 3.\uc7a5\uc18cB' \u2192 {1: '\uc7a5\uc18cA', 3: '\uc7a5\uc18cB'}", "file_type": "rationale", "source_file": "phases/0-setup/analyze_triple.py", "source_location": "L69"}, {"id": "$graphify-root$_phases_0_setup_analyze_triple_rationale_183", "label": "Kakao Local API \u2014 \ud604\uc9c0 \uce74\ud398\u00b7\uc2dd\ub2f9\u00b7\uad00\uad11\uc9c0\uae4c\uc9c0 \uad11\ubc94\uc704\ud558\uac8c \ucee4\ubc84. city\ub294 \uc5b8\ub354\uc2a4\ucf54\uc5b4 \ud615\uc2dd('\uac00\ud3c9_\uc591\ud3c9')\uc774\ubbc0\ub85c \ucffc\ub9ac\uc5d0 \ud3ec\ud568\ud558\uc9c0\u2026", "file_type": "rationale", "source_file": "phases/0-setup/analyze_triple.py", "source_location": "L183"}, {"id": "$graphify-root$_phases_0_setup_analyze_triple_rationale_224", "label": "TourAPI \u2192 Kakao Local \u2192 Nominatim \uc21c\uc73c\ub85c \uc2dc\ub3c4 (\ubcd1\ub82c \ud638\ucd9c \uc548\uc804)", "file_type": "rationale", "source_file": "phases/0-setup/analyze_triple.py", "source_location": "L224"}], "edges": [{"source": "$graphify-root$_phases_0_setup_analyze_triple_py", "target": "json", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "phases/0-setup/analyze_triple.py", "source_location": "L5", "weight": 1.0}, {"source": "$graphify-root$_phases_0_setup_analyze_triple_py", "target": "os", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "phases/0-setup/analyze_triple.py", "source_location": "L5", "weight": 1.0}, {"source": "$graphify-root$_phases_0_setup_analyze_triple_py", "target": "re", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "phases/0-setup/analyze_triple.py", "source_location": "L5", "weight": 1.0}, {"source": "$graphify-root$_phases_0_setup_analyze_triple_py", "target": "time", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "phases/0-setup/analyze_triple.py", "source_location": "L5", "weight": 1.0}, {"source": "$graphify-root$_phases_0_setup_analyze_triple_py", "target": "requests", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "phases/0-setup/analyze_triple.py", "source_location": "L5", "weight": 1.0}, {"source": "$graphify-root$_phases_0_setup_analyze_triple_py", "target": "statistics", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "phases/0-setup/analyze_triple.py", "source_location": "L5", "weight": 1.0}, {"source": "$graphify-root$_phases_0_setup_analyze_triple_py", "target": "math", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "phases/0-setup/analyze_triple.py", "source_location": "L5", "weight": 1.0}, {"source": "$graphify-root$_phases_0_setup_analyze_triple_py", "target": "threading", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "phases/0-setup/analyze_triple.py", "source_location": "L5", "weight": 1.0}, {"source": "$graphify-root$_phases_0_setup_analyze_triple_py", "target": "concurrent_futures", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "phases/0-setup/analyze_triple.py", "source_location": "L6", "weight": 1.0}, {"source": "$graphify-root$_phases_0_setup_analyze_triple_py", "target": "pathlib", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "phases/0-setup/analyze_triple.py", "source_location": "L7", "weight": 1.0}, {"source": "$graphify-root$_phases_0_setup_analyze_triple_py", "target": "$graphify-root$_phases_0_setup_analyze_triple_load_env", "relation": "contains", "confidence": "EXTRACTED", "source_file": "phases/0-setup/analyze_triple.py", "source_location": "L12", "weight": 1.0}, {"source": "$graphify-root$_phases_0_setup_analyze_triple_py", "target": "openpyxl", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "phases/0-setup/analyze_triple.py", "source_location": "L59", "weight": 1.0}, {"source": "$graphify-root$_phases_0_setup_analyze_triple_py", "target": "$graphify-root$_phases_0_setup_analyze_triple_parse_numbered", "relation": "contains", "confidence": "EXTRACTED", "source_file": "phases/0-setup/analyze_triple.py", "source_location": "L68", "weight": 1.0}, {"source": "$graphify-root$_phases_0_setup_analyze_triple_py", "target": "$graphify-root$_phases_0_setup_analyze_triple_geocode_tourapi", "relation": "contains", "confidence": "EXTRACTED", "source_file": "phases/0-setup/analyze_triple.py", "source_location": "L159", "weight": 1.0}, {"source": "$graphify-root$_phases_0_setup_analyze_triple_py", "target": "$graphify-root$_phases_0_setup_analyze_triple_geocode_kakao_local", "relation": "contains", "confidence": "EXTRACTED", "source_file": "phases/0-setup/analyze_triple.py", "source_location": "L182", "weight": 1.0}, {"source": "$graphify-root$_phases_0_setup_analyze_triple_py", "target": "$graphify-root$_phases_0_setup_analyze_triple_geocode_nominatim", "relation": "contains", "confidence": "EXTRACTED", "source_file": "phases/0-setup/analyze_triple.py", "source_location": "L206", "weight": 1.0}, {"source": "$graphify-root$_phases_0_setup_analyze_triple_py", "target": "$graphify-root$_phases_0_setup_analyze_triple_geocode_single", "relation": "contains", "confidence": "EXTRACTED", "source_file": "phases/0-setup/analyze_triple.py", "source_location": "L223", "weight": 1.0}, {"source": "$graphify-root$_phases_0_setup_analyze_triple_py", "target": "$graphify-root$_phases_0_setup_analyze_triple_haversine", "relation": "contains", "confidence": "EXTRACTED", "source_file": "phases/0-setup/analyze_triple.py", "source_location": "L265", "weight": 1.0}, {"source": "$graphify-root$_phases_0_setup_analyze_triple_py", "target": "$graphify-root$_phases_0_setup_analyze_triple_haversine_travel_sec", "relation": "contains", "confidence": "EXTRACTED", "source_file": "phases/0-setup/analyze_triple.py", "source_location": "L273", "weight": 1.0}, {"source": "$graphify-root$_phases_0_setup_analyze_triple_py", "target": "$graphify-root$_phases_0_setup_analyze_triple_get_travel_time", "relation": "contains", "confidence": "EXTRACTED", "source_file": "phases/0-setup/analyze_triple.py", "source_location": "L279", "weight": 1.0}, {"source": "$graphify-root$_phases_0_setup_analyze_triple_py", "target": "$graphify-root$_phases_0_setup_analyze_triple_cluster_label", "relation": "contains", "confidence": "EXTRACTED", "source_file": "phases/0-setup/analyze_triple.py", "source_location": "L308", "weight": 1.0}, {"source": "$graphify-root$_phases_0_setup_analyze_triple_py", "target": "$graphify-root$_phases_0_setup_analyze_triple_percentile", "relation": "contains", "confidence": "EXTRACTED", "source_file": "phases/0-setup/analyze_triple.py", "source_location": "L388", "weight": 1.0}, {"source": "$graphify-root$_phases_0_setup_analyze_triple_py", "target": "$graphify-root$_phases_0_setup_analyze_triple_stats_block", "relation": "contains", "confidence": "EXTRACTED", "source_file": "phases/0-setup/analyze_triple.py", "source_location": "L394", "weight": 1.0}, {"source": "$graphify-root$_phases_0_setup_analyze_triple_geocode_single", "target": "$graphify-root$_phases_0_setup_analyze_triple_geocode_tourapi", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "phases/0-setup/analyze_triple.py", "source_location": "L226", "weight": 1.0}, {"source": "$graphify-root$_phases_0_setup_analyze_triple_geocode_single", "target": "$graphify-root$_phases_0_setup_analyze_triple_geocode_kakao_local", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "phases/0-setup/analyze_triple.py", "source_location": "L228", "weight": 1.0}, {"source": "$graphify-root$_phases_0_setup_analyze_triple_geocode_single", "target": "$graphify-root$_phases_0_setup_analyze_triple_geocode_nominatim", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "phases/0-setup/analyze_triple.py", "source_location": "L232", "weight": 1.0}, {"source": "$graphify-root$_phases_0_setup_analyze_triple_haversine_travel_sec", "target": "$graphify-root$_phases_0_setup_analyze_triple_haversine", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "phases/0-setup/analyze_triple.py", "source_location": "L274", "weight": 1.0}, {"source": "$graphify-root$_phases_0_setup_analyze_triple_get_travel_time", "target": "$graphify-root$_phases_0_setup_analyze_triple_haversine_travel_sec", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "phases/0-setup/analyze_triple.py", "source_location": "L305", "weight": 1.0}, {"source": "$graphify-root$_phases_0_setup_analyze_triple_stats_block", "target": "$graphify-root$_phases_0_setup_analyze_triple_percentile", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "phases/0-setup/analyze_triple.py", "source_location": "L402", "weight": 1.0}, {"source": "$graphify-root$_phases_0_setup_analyze_triple_rationale_1", "target": "$graphify-root$_phases_0_setup_analyze_triple_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "phases/0-setup/analyze_triple.py", "source_location": "L1", "weight": 1.0}, {"source": "$graphify-root$_phases_0_setup_analyze_triple_rationale_69", "target": "$graphify-root$_phases_0_setup_analyze_triple_parse_numbered", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "phases/0-setup/analyze_triple.py", "source_location": "L69", "weight": 1.0}, {"source": "$graphify-root$_phases_0_setup_analyze_triple_rationale_183", "target": "$graphify-root$_phases_0_setup_analyze_triple_geocode_kakao_local", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "phases/0-setup/analyze_triple.py", "source_location": "L183", "weight": 1.0}, {"source": "$graphify-root$_phases_0_setup_analyze_triple_rationale_224", "target": "$graphify-root$_phases_0_setup_analyze_triple_geocode_single", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "phases/0-setup/analyze_triple.py", "source_location": "L224", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_phases_0_setup_analyze_triple_load_env", "callee": "resolve", "is_member_call": true, "source_file": "phases/0-setup/analyze_triple.py", "source_location": "L13", "receiver": null}, {"caller_nid": "$graphify-root$_phases_0_setup_analyze_triple_load_env", "callee": "Path", "is_member_call": false, "source_file": "phases/0-setup/analyze_triple.py", "source_location": "L13", "receiver": null}, {"caller_nid": "$graphify-root$_phases_0_setup_analyze_triple_load_env", "callee": "__file__", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "phases/0-setup/analyze_triple.py", "source_location": "L13"}, {"caller_nid": "$graphify-root$_phases_0_setup_analyze_triple_load_env", "callee": "exists", "is_member_call": true, "source_file": "phases/0-setup/analyze_triple.py", "source_location": "L14", "receiver": "env_path"}, {"caller_nid": "$graphify-root$_phases_0_setup_analyze_triple_load_env", "callee": "splitlines", "is_member_call": true, "source_file": "phases/0-setup/analyze_triple.py", "source_location": "L15", "receiver": null}, {"caller_nid": "$graphify-root$_phases_0_setup_analyze_triple_load_env", "callee": "read_text", "is_member_call": true, "source_file": "phases/0-setup/analyze_triple.py", "source_location": "L15", "receiver": "env_path"}, {"caller_nid": "$graphify-root$_phases_0_setup_analyze_triple_load_env", "callee": "strip", "is_member_call": true, "source_file": "phases/0-setup/analyze_triple.py", "source_location": "L16", "receiver": "line"}, {"caller_nid": "$graphify-root$_phases_0_setup_analyze_triple_load_env", "callee": "startswith", "is_member_call": true, "source_file": "phases/0-setup/analyze_triple.py", "source_location": "L17", "receiver": "line"}, {"caller_nid": "$graphify-root$_phases_0_setup_analyze_triple_load_env", "callee": "partition", "is_member_call": true, "source_file": "phases/0-setup/analyze_triple.py", "source_location": "L18", "receiver": "line"}, {"caller_nid": "$graphify-root$_phases_0_setup_analyze_triple_load_env", "callee": "setdefault", "is_member_call": true, "source_file": "phases/0-setup/analyze_triple.py", "source_location": "L19", "receiver": null}, {"caller_nid": "$graphify-root$_phases_0_setup_analyze_triple_load_env", "callee": "strip", "is_member_call": true, "source_file": "phases/0-setup/analyze_triple.py", "source_location": "L19", "receiver": "k"}, {"caller_nid": "$graphify-root$_phases_0_setup_analyze_triple_load_env", "callee": "strip", "is_member_call": true, "source_file": "phases/0-setup/analyze_triple.py", "source_location": "L19", "receiver": "v"}, {"caller_nid": "$graphify-root$_phases_0_setup_analyze_triple_parse_numbered", "callee": "split", "is_member_call": true, "source_file": "phases/0-setup/analyze_triple.py", "source_location": "L74", "receiver": "re"}, {"caller_nid": "$graphify-root$_phases_0_setup_analyze_triple_parse_numbered", "callee": "strip", "is_member_call": true, "source_file": "phases/0-setup/analyze_triple.py", "source_location": "L76", "receiver": "part"}, {"caller_nid": "$graphify-root$_phases_0_setup_analyze_triple_parse_numbered", "callee": "match", "is_member_call": true, "source_file": "phases/0-setup/analyze_triple.py", "source_location": "L77", "receiver": "re"}, {"caller_nid": "$graphify-root$_phases_0_setup_analyze_triple_parse_numbered", "callee": "group", "is_member_call": true, "source_file": "phases/0-setup/analyze_triple.py", "source_location": "L79", "receiver": "m"}, {"caller_nid": "$graphify-root$_phases_0_setup_analyze_triple_parse_numbered", "callee": "strip", "is_member_call": true, "source_file": "phases/0-setup/analyze_triple.py", "source_location": "L80", "receiver": null}, {"caller_nid": "$graphify-root$_phases_0_setup_analyze_triple_parse_numbered", "callee": "group", "is_member_call": true, "source_file": "phases/0-setup/analyze_triple.py", "source_location": "L80", "receiver": "m"}, {"caller_nid": "$graphify-root$_phases_0_setup_analyze_triple_parse_numbered", "callee": "strip", "is_member_call": true, "source_file": "phases/0-setup/analyze_triple.py", "source_location": "L81", "receiver": null}, {"caller_nid": "$graphify-root$_phases_0_setup_analyze_triple_parse_numbered", "callee": "sub", "is_member_call": true, "source_file": "phases/0-setup/analyze_triple.py", "source_location": "L81", "receiver": "re"}, {"caller_nid": "$graphify-root$_phases_0_setup_analyze_triple_parse_numbered", "callee": "strip", "is_member_call": true, "source_file": "phases/0-setup/analyze_triple.py", "source_location": "L82", "receiver": null}, {"caller_nid": "$graphify-root$_phases_0_setup_analyze_triple_parse_numbered", "callee": "sub", "is_member_call": true, "source_file": "phases/0-setup/analyze_triple.py", "source_location": "L82", "receiver": "re"}, {"caller_nid": "$graphify-root$_phases_0_setup_analyze_triple_geocode_tourapi", "callee": "get", "is_member_call": true, "source_file": "phases/0-setup/analyze_triple.py", "source_location": "L161", "receiver": "requests"}, {"caller_nid": "$graphify-root$_phases_0_setup_analyze_triple_geocode_tourapi", "callee": "TOUR_KEY", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "phases/0-setup/analyze_triple.py", "source_location": "L163"}, {"caller_nid": "$graphify-root$_phases_0_setup_analyze_triple_geocode_tourapi", "callee": "json", "is_member_call": true, "source_file": "phases/0-setup/analyze_triple.py", "source_location": "L169", "receiver": "r"}, {"caller_nid": "$graphify-root$_phases_0_setup_analyze_triple_geocode_tourapi", "callee": "get", "is_member_call": true, "source_file": "phases/0-setup/analyze_triple.py", "source_location": "L170", "receiver": "body"}, {"caller_nid": "$graphify-root$_phases_0_setup_analyze_triple_geocode_tourapi", "callee": "list", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "phases/0-setup/analyze_triple.py", "source_location": "L173"}, {"caller_nid": "$graphify-root$_phases_0_setup_analyze_triple_geocode_kakao_local", "callee": "get", "is_member_call": true, "source_file": "phases/0-setup/analyze_triple.py", "source_location": "L189", "receiver": "requests"}, {"caller_nid": "$graphify-root$_phases_0_setup_analyze_triple_geocode_kakao_local", "callee": "get", "is_member_call": true, "source_file": "phases/0-setup/analyze_triple.py", "source_location": "L196", "receiver": null}, {"caller_nid": "$graphify-root$_phases_0_setup_analyze_triple_geocode_kakao_local", "callee": "json", "is_member_call": true, "source_file": "phases/0-setup/analyze_triple.py", "source_location": "L196", "receiver": "r"}, {"caller_nid": "$graphify-root$_phases_0_setup_analyze_triple_geocode_nominatim", "callee": "strip", "is_member_call": true, "source_file": "phases/0-setup/analyze_triple.py", "source_location": "L207", "receiver": null}, {"caller_nid": "$graphify-root$_phases_0_setup_analyze_triple_geocode_nominatim", "callee": "get", "is_member_call": true, "source_file": "phases/0-setup/analyze_triple.py", "source_location": "L209", "receiver": "requests"}, {"caller_nid": "$graphify-root$_phases_0_setup_analyze_triple_geocode_nominatim", "callee": "json", "is_member_call": true, "source_file": "phases/0-setup/analyze_triple.py", "source_location": "L216", "receiver": "r"}, {"caller_nid": "$graphify-root$_phases_0_setup_analyze_triple_geocode_nominatim", "callee": "json", "is_member_call": true, "source_file": "phases/0-setup/analyze_triple.py", "source_location": "L217", "receiver": "r"}, {"caller_nid": "$graphify-root$_phases_0_setup_analyze_triple_geocode_single", "callee": "sleep", "is_member_call": true, "source_file": "phases/0-setup/analyze_triple.py", "source_location": "L231", "receiver": "time"}, {"caller_nid": "$graphify-root$_phases_0_setup_analyze_triple_haversine", "callee": "radians", "is_member_call": true, "source_file": "phases/0-setup/analyze_triple.py", "source_location": "L267", "receiver": "math"}, {"caller_nid": "$graphify-root$_phases_0_setup_analyze_triple_haversine", "callee": "radians", "is_member_call": true, "source_file": "phases/0-setup/analyze_triple.py", "source_location": "L267", "receiver": "math"}, {"caller_nid": "$graphify-root$_phases_0_setup_analyze_triple_haversine", "callee": "radians", "is_member_call": true, "source_file": "phases/0-setup/analyze_triple.py", "source_location": "L268", "receiver": "math"}, {"caller_nid": "$graphify-root$_phases_0_setup_analyze_triple_haversine", "callee": "radians", "is_member_call": true, "source_file": "phases/0-setup/analyze_triple.py", "source_location": "L269", "receiver": "math"}, {"caller_nid": "$graphify-root$_phases_0_setup_analyze_triple_haversine", "callee": "sin", "is_member_call": true, "source_file": "phases/0-setup/analyze_triple.py", "source_location": "L270", "receiver": "math"}, {"caller_nid": "$graphify-root$_phases_0_setup_analyze_triple_haversine", "callee": "cos", "is_member_call": true, "source_file": "phases/0-setup/analyze_triple.py", "source_location": "L270", "receiver": "math"}, {"caller_nid": "$graphify-root$_phases_0_setup_analyze_triple_haversine", "callee": "cos", "is_member_call": true, "source_file": "phases/0-setup/analyze_triple.py", "source_location": "L270", "receiver": "math"}, {"caller_nid": "$graphify-root$_phases_0_setup_analyze_triple_haversine", "callee": "sin", "is_member_call": true, "source_file": "phases/0-setup/analyze_triple.py", "source_location": "L270", "receiver": "math"}, {"caller_nid": "$graphify-root$_phases_0_setup_analyze_triple_haversine", "callee": "atan2", "is_member_call": true, "source_file": "phases/0-setup/analyze_triple.py", "source_location": "L271", "receiver": "math"}, {"caller_nid": "$graphify-root$_phases_0_setup_analyze_triple_haversine", "callee": "sqrt", "is_member_call": true, "source_file": "phases/0-setup/analyze_triple.py", "source_location": "L271", "receiver": "math"}, {"caller_nid": "$graphify-root$_phases_0_setup_analyze_triple_haversine", "callee": "sqrt", "is_member_call": true, "source_file": "phases/0-setup/analyze_triple.py", "source_location": "L271", "receiver": "math"}, {"caller_nid": "$graphify-root$_phases_0_setup_analyze_triple_get_travel_time", "callee": "get", "is_member_call": true, "source_file": "phases/0-setup/analyze_triple.py", "source_location": "L282", "receiver": "route_cache"}, {"caller_nid": "$graphify-root$_phases_0_setup_analyze_triple_get_travel_time", "callee": "get", "is_member_call": true, "source_file": "phases/0-setup/analyze_triple.py", "source_location": "L287", "receiver": "requests"}, {"caller_nid": "$graphify-root$_phases_0_setup_analyze_triple_get_travel_time", "callee": "get", "is_member_call": true, "source_file": "phases/0-setup/analyze_triple.py", "source_location": "L297", "receiver": null}, {"caller_nid": "$graphify-root$_phases_0_setup_analyze_triple_get_travel_time", "callee": "json", "is_member_call": true, "source_file": "phases/0-setup/analyze_triple.py", "source_location": "L297", "receiver": "r"}, {"caller_nid": "$graphify-root$_phases_0_setup_analyze_triple_get_travel_time", "callee": "get", "is_member_call": true, "source_file": "phases/0-setup/analyze_triple.py", "source_location": "L298", "receiver": null}, {"caller_nid": "$graphify-root$_phases_0_setup_analyze_triple_get_travel_time", "callee": "write_text", "is_member_call": true, "source_file": "phases/0-setup/analyze_triple.py", "source_location": "L301", "receiver": "CACHE_ROUTE"}, {"caller_nid": "$graphify-root$_phases_0_setup_analyze_triple_get_travel_time", "callee": "dumps", "is_member_call": true, "source_file": "phases/0-setup/analyze_triple.py", "source_location": "L301", "receiver": "json"}, {"caller_nid": "$graphify-root$_phases_0_setup_analyze_triple_get_travel_time", "callee": "route_cache", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "phases/0-setup/analyze_triple.py", "source_location": "L301"}, {"caller_nid": "$graphify-root$_phases_0_setup_analyze_triple_stats_block", "callee": "mean", "is_member_call": true, "source_file": "phases/0-setup/analyze_triple.py", "source_location": "L399", "receiver": "statistics"}, {"caller_nid": "$graphify-root$_phases_0_setup_analyze_triple_stats_block", "callee": "median", "is_member_call": true, "source_file": "phases/0-setup/analyze_triple.py", "source_location": "L400", "receiver": "statistics"}, {"caller_nid": "$graphify-root$_phases_0_setup_analyze_triple_stats_block", "callee": "stdev", "is_member_call": true, "source_file": "phases/0-setup/analyze_triple.py", "source_location": "L401", "receiver": "statistics"}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.31/74d131e431371f16377a6da34770d1d197feeeec9ac3844a45880393e39e0778.json b/graphify-out/cache/ast/v0.9.31/74d131e431371f16377a6da34770d1d197feeeec9ac3844a45880393e39e0778.json new file mode 100644 index 0000000..6e2a306 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.31/74d131e431371f16377a6da34770d1d197feeeec9ac3844a45880393e39e0778.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_tests_test_graph_retriever_py", "label": "test_graph_retriever.py", "file_type": "code", "source_file": "tests/test_graph_retriever.py", "source_location": "L1"}, {"id": "$graphify-root$_tests_test_graph_retriever_test_disabled_without_uri_returns_empty", "label": "test_disabled_without_uri_returns_empty()", "file_type": "code", "source_file": "tests/test_graph_retriever.py", "source_location": "L12", "_callable": true}, {"id": "$graphify-root$_tests_test_graph_retriever_test_search_places_parses_records", "label": "test_search_places_parses_records()", "file_type": "code", "source_file": "tests/test_graph_retriever.py", "source_location": "L19", "_callable": true}, {"id": "$graphify-root$_tests_test_graph_retriever_test_search_places_empty_query_skips_call", "label": "test_search_places_empty_query_skips_call()", "file_type": "code", "source_file": "tests/test_graph_retriever.py", "source_location": "L39", "_callable": true}, {"id": "$graphify-root$_tests_test_graph_retriever_test_search_places_neo4j_error_returns_empty", "label": "test_search_places_neo4j_error_returns_empty()", "file_type": "code", "source_file": "tests/test_graph_retriever.py", "source_location": "L46", "_callable": true}, {"id": "$graphify-root$_tests_test_graph_retriever_test_find_nearby_parses_and_converts_distance", "label": "test_find_nearby_parses_and_converts_distance()", "file_type": "code", "source_file": "tests/test_graph_retriever.py", "source_location": "L53", "_callable": true}, {"id": "$graphify-root$_tests_test_graph_retriever_test_repeated_failures_skip_driver_call_during_cooldown", "label": "test_repeated_failures_skip_driver_call_during_cooldown()", "file_type": "code", "source_file": "tests/test_graph_retriever.py", "source_location": "L68", "_callable": true}, {"id": "$graphify-root$_tests_test_graph_retriever_test_close_closes_driver", "label": "test_close_closes_driver()", "file_type": "code", "source_file": "tests/test_graph_retriever.py", "source_location": "L79", "_callable": true}, {"id": "$graphify-root$_tests_test_graph_retriever_test_from_env_reads_variables", "label": "test_from_env_reads_variables()", "file_type": "code", "source_file": "tests/test_graph_retriever.py", "source_location": "L86", "_callable": true}, {"id": "$graphify-root$_tests_test_graph_retriever_rationale_1", "label": "GraphRetriever \ud14c\uc2a4\ud2b8 (\uc2e4\uc81c Neo4j \ud638\ucd9c X \u2014 \ubaa8\ub450 mock).", "file_type": "rationale", "source_file": "tests/test_graph_retriever.py", "source_location": "L1"}], "edges": [{"source": "$graphify-root$_tests_test_graph_retriever_py", "target": "unittest_mock", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_graph_retriever.py", "source_location": "L4", "weight": 1.0}, {"source": "$graphify-root$_tests_test_graph_retriever_py", "target": "neo4j_exceptions", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_graph_retriever.py", "source_location": "L6", "weight": 1.0}, {"source": "$graphify-root$_tests_test_graph_retriever_py", "target": "src_data_graph_retriever", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_graph_retriever.py", "source_location": "L8", "weight": 1.0}, {"source": "$graphify-root$_tests_test_graph_retriever_py", "target": "src_data_models", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_graph_retriever.py", "source_location": "L9", "weight": 1.0}, {"source": "$graphify-root$_tests_test_graph_retriever_py", "target": "$graphify-root$_tests_test_graph_retriever_test_disabled_without_uri_returns_empty", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_graph_retriever.py", "source_location": "L12", "weight": 1.0}, {"source": "$graphify-root$_tests_test_graph_retriever_py", "target": "$graphify-root$_tests_test_graph_retriever_test_search_places_parses_records", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_graph_retriever.py", "source_location": "L19", "weight": 1.0}, {"source": "$graphify-root$_tests_test_graph_retriever_py", "target": "$graphify-root$_tests_test_graph_retriever_test_search_places_empty_query_skips_call", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_graph_retriever.py", "source_location": "L39", "weight": 1.0}, {"source": "$graphify-root$_tests_test_graph_retriever_py", "target": "$graphify-root$_tests_test_graph_retriever_test_search_places_neo4j_error_returns_empty", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_graph_retriever.py", "source_location": "L46", "weight": 1.0}, {"source": "$graphify-root$_tests_test_graph_retriever_py", "target": "$graphify-root$_tests_test_graph_retriever_test_find_nearby_parses_and_converts_distance", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_graph_retriever.py", "source_location": "L53", "weight": 1.0}, {"source": "$graphify-root$_tests_test_graph_retriever_py", "target": "$graphify-root$_tests_test_graph_retriever_test_repeated_failures_skip_driver_call_during_cooldown", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_graph_retriever.py", "source_location": "L68", "weight": 1.0}, {"source": "$graphify-root$_tests_test_graph_retriever_py", "target": "$graphify-root$_tests_test_graph_retriever_test_close_closes_driver", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_graph_retriever.py", "source_location": "L79", "weight": 1.0}, {"source": "$graphify-root$_tests_test_graph_retriever_py", "target": "$graphify-root$_tests_test_graph_retriever_test_from_env_reads_variables", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_graph_retriever.py", "source_location": "L86", "weight": 1.0}, {"source": "$graphify-root$_tests_test_graph_retriever_rationale_1", "target": "$graphify-root$_tests_test_graph_retriever_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_graph_retriever.py", "source_location": "L1", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_tests_test_graph_retriever_test_disabled_without_uri_returns_empty", "callee": "GraphRetriever", "is_member_call": false, "source_file": "tests/test_graph_retriever.py", "source_location": "L13", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_graph_retriever_test_disabled_without_uri_returns_empty", "callee": "search_places", "is_member_call": true, "source_file": "tests/test_graph_retriever.py", "source_location": "L15", "receiver": "retriever"}, {"caller_nid": "$graphify-root$_tests_test_graph_retriever_test_disabled_without_uri_returns_empty", "callee": "find_nearby", "is_member_call": true, "source_file": "tests/test_graph_retriever.py", "source_location": "L16", "receiver": "retriever"}, {"caller_nid": "$graphify-root$_tests_test_graph_retriever_test_search_places_parses_records", "callee": "patch", "is_member_call": false, "source_file": "tests/test_graph_retriever.py", "source_location": "L20", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_graph_retriever_test_search_places_parses_records", "callee": "MagicMock", "is_member_call": false, "source_file": "tests/test_graph_retriever.py", "source_location": "L20", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_graph_retriever_test_search_places_parses_records", "callee": "GraphRetriever", "is_member_call": false, "source_file": "tests/test_graph_retriever.py", "source_location": "L21", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_graph_retriever_test_search_places_parses_records", "callee": "MagicMock", "is_member_call": false, "source_file": "tests/test_graph_retriever.py", "source_location": "L22", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_graph_retriever_test_search_places_parses_records", "callee": "search_places", "is_member_call": true, "source_file": "tests/test_graph_retriever.py", "source_location": "L31", "receiver": "retriever"}, {"caller_nid": "$graphify-root$_tests_test_graph_retriever_test_search_places_parses_records", "callee": "PlaceEvidence", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_graph_retriever.py", "source_location": "L34"}, {"caller_nid": "$graphify-root$_tests_test_graph_retriever_test_search_places_empty_query_skips_call", "callee": "patch", "is_member_call": false, "source_file": "tests/test_graph_retriever.py", "source_location": "L40", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_graph_retriever_test_search_places_empty_query_skips_call", "callee": "MagicMock", "is_member_call": false, "source_file": "tests/test_graph_retriever.py", "source_location": "L40", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_graph_retriever_test_search_places_empty_query_skips_call", "callee": "GraphRetriever", "is_member_call": false, "source_file": "tests/test_graph_retriever.py", "source_location": "L41", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_graph_retriever_test_search_places_empty_query_skips_call", "callee": "search_places", "is_member_call": true, "source_file": "tests/test_graph_retriever.py", "source_location": "L42", "receiver": "retriever"}, {"caller_nid": "$graphify-root$_tests_test_graph_retriever_test_search_places_empty_query_skips_call", "callee": "assert_not_called", "is_member_call": true, "source_file": "tests/test_graph_retriever.py", "source_location": "L43", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_graph_retriever_test_search_places_neo4j_error_returns_empty", "callee": "patch", "is_member_call": false, "source_file": "tests/test_graph_retriever.py", "source_location": "L47", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_graph_retriever_test_search_places_neo4j_error_returns_empty", "callee": "MagicMock", "is_member_call": false, "source_file": "tests/test_graph_retriever.py", "source_location": "L47", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_graph_retriever_test_search_places_neo4j_error_returns_empty", "callee": "GraphRetriever", "is_member_call": false, "source_file": "tests/test_graph_retriever.py", "source_location": "L48", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_graph_retriever_test_search_places_neo4j_error_returns_empty", "callee": "Neo4jError", "is_member_call": false, "source_file": "tests/test_graph_retriever.py", "source_location": "L49", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_graph_retriever_test_search_places_neo4j_error_returns_empty", "callee": "search_places", "is_member_call": true, "source_file": "tests/test_graph_retriever.py", "source_location": "L50", "receiver": "retriever"}, {"caller_nid": "$graphify-root$_tests_test_graph_retriever_test_find_nearby_parses_and_converts_distance", "callee": "patch", "is_member_call": false, "source_file": "tests/test_graph_retriever.py", "source_location": "L54", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_graph_retriever_test_find_nearby_parses_and_converts_distance", "callee": "MagicMock", "is_member_call": false, "source_file": "tests/test_graph_retriever.py", "source_location": "L54", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_graph_retriever_test_find_nearby_parses_and_converts_distance", "callee": "GraphRetriever", "is_member_call": false, "source_file": "tests/test_graph_retriever.py", "source_location": "L55", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_graph_retriever_test_find_nearby_parses_and_converts_distance", "callee": "MagicMock", "is_member_call": false, "source_file": "tests/test_graph_retriever.py", "source_location": "L56", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_graph_retriever_test_find_nearby_parses_and_converts_distance", "callee": "find_nearby", "is_member_call": true, "source_file": "tests/test_graph_retriever.py", "source_location": "L61", "receiver": "retriever"}, {"caller_nid": "$graphify-root$_tests_test_graph_retriever_test_find_nearby_parses_and_converts_distance", "callee": "AlternativePOI", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_graph_retriever.py", "source_location": "L64"}, {"caller_nid": "$graphify-root$_tests_test_graph_retriever_test_repeated_failures_skip_driver_call_during_cooldown", "callee": "patch", "is_member_call": false, "source_file": "tests/test_graph_retriever.py", "source_location": "L69", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_graph_retriever_test_repeated_failures_skip_driver_call_during_cooldown", "callee": "MagicMock", "is_member_call": false, "source_file": "tests/test_graph_retriever.py", "source_location": "L69", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_graph_retriever_test_repeated_failures_skip_driver_call_during_cooldown", "callee": "GraphRetriever", "is_member_call": false, "source_file": "tests/test_graph_retriever.py", "source_location": "L70", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_graph_retriever_test_repeated_failures_skip_driver_call_during_cooldown", "callee": "Neo4jError", "is_member_call": false, "source_file": "tests/test_graph_retriever.py", "source_location": "L71", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_graph_retriever_test_repeated_failures_skip_driver_call_during_cooldown", "callee": "search_places", "is_member_call": true, "source_file": "tests/test_graph_retriever.py", "source_location": "L73", "receiver": "retriever"}, {"caller_nid": "$graphify-root$_tests_test_graph_retriever_test_repeated_failures_skip_driver_call_during_cooldown", "callee": "find_nearby", "is_member_call": true, "source_file": "tests/test_graph_retriever.py", "source_location": "L74", "receiver": "retriever"}, {"caller_nid": "$graphify-root$_tests_test_graph_retriever_test_close_closes_driver", "callee": "patch", "is_member_call": false, "source_file": "tests/test_graph_retriever.py", "source_location": "L80", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_graph_retriever_test_close_closes_driver", "callee": "MagicMock", "is_member_call": false, "source_file": "tests/test_graph_retriever.py", "source_location": "L80", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_graph_retriever_test_close_closes_driver", "callee": "GraphRetriever", "is_member_call": false, "source_file": "tests/test_graph_retriever.py", "source_location": "L81", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_graph_retriever_test_close_closes_driver", "callee": "close", "is_member_call": true, "source_file": "tests/test_graph_retriever.py", "source_location": "L82", "receiver": "retriever"}, {"caller_nid": "$graphify-root$_tests_test_graph_retriever_test_close_closes_driver", "callee": "assert_called_once", "is_member_call": true, "source_file": "tests/test_graph_retriever.py", "source_location": "L83", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_graph_retriever_test_from_env_reads_variables", "callee": "setenv", "is_member_call": true, "source_file": "tests/test_graph_retriever.py", "source_location": "L87", "receiver": "monkeypatch"}, {"caller_nid": "$graphify-root$_tests_test_graph_retriever_test_from_env_reads_variables", "callee": "setenv", "is_member_call": true, "source_file": "tests/test_graph_retriever.py", "source_location": "L88", "receiver": "monkeypatch"}, {"caller_nid": "$graphify-root$_tests_test_graph_retriever_test_from_env_reads_variables", "callee": "setenv", "is_member_call": true, "source_file": "tests/test_graph_retriever.py", "source_location": "L89", "receiver": "monkeypatch"}, {"caller_nid": "$graphify-root$_tests_test_graph_retriever_test_from_env_reads_variables", "callee": "setenv", "is_member_call": true, "source_file": "tests/test_graph_retriever.py", "source_location": "L90", "receiver": "monkeypatch"}, {"caller_nid": "$graphify-root$_tests_test_graph_retriever_test_from_env_reads_variables", "callee": "patch", "is_member_call": false, "source_file": "tests/test_graph_retriever.py", "source_location": "L91", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_graph_retriever_test_from_env_reads_variables", "callee": "MagicMock", "is_member_call": false, "source_file": "tests/test_graph_retriever.py", "source_location": "L91", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_graph_retriever_test_from_env_reads_variables", "callee": "from_env", "is_member_call": true, "source_file": "tests/test_graph_retriever.py", "source_location": "L92", "receiver": "GraphRetriever"}, {"caller_nid": "$graphify-root$_tests_test_graph_retriever_test_from_env_reads_variables", "callee": "assert_called_once_with", "is_member_call": true, "source_file": "tests/test_graph_retriever.py", "source_location": "L94", "receiver": "create"}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.31/761476ae9d54730d0d583bff8af9a3a883c614698c0da15ae346c1b28e65827c.json b/graphify-out/cache/ast/v0.9.31/761476ae9d54730d0d583bff8af9a3a883c614698c0da15ae346c1b28e65827c.json new file mode 100644 index 0000000..d8af9e3 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.31/761476ae9d54730d0d583bff8af9a3a883c614698c0da15ae346c1b28e65827c.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_src_data_wellness_api_py", "label": "wellness_api.py", "file_type": "code", "source_file": "src/data/wellness_api.py", "source_location": "L1"}, {"id": "$graphify-root$_src_data_wellness_api_wellnessplace", "label": "WellnessPlace", "file_type": "code", "source_file": "src/data/wellness_api.py", "source_location": "L16", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_src_data_wellness_api_extract_items", "label": "_extract_items()", "file_type": "code", "source_file": "src/data/wellness_api.py", "source_location": "L27", "_callable": true}, {"id": "$graphify-root$_src_data_wellness_api_safe_float", "label": "_safe_float()", "file_type": "code", "source_file": "src/data/wellness_api.py", "source_location": "L38", "_callable": true}, {"id": "any", "label": "Any", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/src/data/wellness_api.py"}, {"id": "$graphify-root$_src_data_wellness_api_wellnessapiclient", "label": "WellnessAPIClient", "file_type": "code", "source_file": "src/data/wellness_api.py", "source_location": "L45", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_src_data_wellness_api_wellnessapiclient_init", "label": ".__init__()", "file_type": "code", "source_file": "src/data/wellness_api.py", "source_location": "L51", "_callable": true}, {"id": "$graphify-root$_src_data_wellness_api_wellnessapiclient_from_settings", "label": ".from_settings()", "file_type": "code", "source_file": "src/data/wellness_api.py", "source_location": "L58", "_callable": true}, {"id": "settings", "label": "Settings", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/src/data/wellness_api.py"}, {"id": "$graphify-root$_src_data_wellness_api_wellnessapiclient_fetch_page", "label": ".fetch_page()", "file_type": "code", "source_file": "src/data/wellness_api.py", "source_location": "L66", "_callable": true}, {"id": "$graphify-root$_src_data_wellness_api_wellnessapiclient_fetch_all", "label": ".fetch_all()", "file_type": "code", "source_file": "src/data/wellness_api.py", "source_location": "L117", "_callable": true}, {"id": "$graphify-root$_src_data_wellness_api_rationale_1", "label": "\ud55c\uad6d\uad00\uad11\uacf5\uc0ac \uc6f0\ub2c8\uc2a4 \uad00\uad11 \uc815\ubcf4 API \ud074\ub77c\uc774\uc5b8\ud2b8 (B551011/WellnessTursmService).", "file_type": "rationale", "source_file": "src/data/wellness_api.py", "source_location": "L1"}, {"id": "$graphify-root$_src_data_wellness_api_rationale_46", "label": "\uc6f0\ub2c8\uc2a4 \uad00\uad11 \uc815\ubcf4 API \u2014 \ube44\ub3d9\uae30 \ud074\ub77c\uc774\uc5b8\ud2b8. Graceful Fallback: API \ud638\ucd9c \uc2e4\ud328 \uc2dc \ube48 \ub9ac\uc2a4\ud2b8 \ubc18\ud658.", "file_type": "rationale", "source_file": "src/data/wellness_api.py", "source_location": "L46"}, {"id": "$graphify-root$_src_data_wellness_api_rationale_118", "label": "\uc804\uccb4 \uc6f0\ub2c8\uc2a4 \uad00\uad11 \ubaa9\ub85d \uc870\ud68c (\ud398\uc774\uc9c0 \uc21c\ud68c).", "file_type": "rationale", "source_file": "src/data/wellness_api.py", "source_location": "L118"}], "edges": [{"source": "$graphify-root$_src_data_wellness_api_py", "target": "dataclasses", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "src/data/wellness_api.py", "source_location": "L4", "weight": 1.0}, {"source": "$graphify-root$_src_data_wellness_api_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "src/data/wellness_api.py", "source_location": "L5", "weight": 1.0}, {"source": "$graphify-root$_src_data_wellness_api_py", "target": "httpx", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "src/data/wellness_api.py", "source_location": "L7", "weight": 1.0}, {"source": "$graphify-root$_src_data_wellness_api_py", "target": "src_data_models", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "src/data/wellness_api.py", "source_location": "L9", "weight": 1.0}, {"source": "$graphify-root$_src_data_wellness_api_py", "target": "$graphify-root$_src_data_wellness_api_wellnessplace", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/data/wellness_api.py", "source_location": "L16", "weight": 1.0}, {"source": "$graphify-root$_src_data_wellness_api_py", "target": "$graphify-root$_src_data_wellness_api_extract_items", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/data/wellness_api.py", "source_location": "L27", "weight": 1.0}, {"source": "$graphify-root$_src_data_wellness_api_py", "target": "$graphify-root$_src_data_wellness_api_safe_float", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/data/wellness_api.py", "source_location": "L38", "weight": 1.0}, {"source": "$graphify-root$_src_data_wellness_api_safe_float", "target": "any", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "src/data/wellness_api.py", "source_location": "L38", "weight": 1.0}, {"source": "$graphify-root$_src_data_wellness_api_py", "target": "$graphify-root$_src_data_wellness_api_wellnessapiclient", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/data/wellness_api.py", "source_location": "L45", "weight": 1.0}, {"source": "$graphify-root$_src_data_wellness_api_wellnessapiclient", "target": "$graphify-root$_src_data_wellness_api_wellnessapiclient_init", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/data/wellness_api.py", "source_location": "L51", "weight": 1.0}, {"source": "$graphify-root$_src_data_wellness_api_wellnessapiclient", "target": "$graphify-root$_src_data_wellness_api_wellnessapiclient_from_settings", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/data/wellness_api.py", "source_location": "L58", "weight": 1.0}, {"source": "$graphify-root$_src_data_wellness_api_wellnessapiclient_from_settings", "target": "settings", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "src/data/wellness_api.py", "source_location": "L58", "weight": 1.0}, {"source": "$graphify-root$_src_data_wellness_api_wellnessapiclient", "target": "$graphify-root$_src_data_wellness_api_wellnessapiclient_fetch_page", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/data/wellness_api.py", "source_location": "L66", "weight": 1.0}, {"source": "$graphify-root$_src_data_wellness_api_wellnessapiclient_fetch_page", "target": "$graphify-root$_src_data_wellness_api_wellnessplace", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "src/data/wellness_api.py", "source_location": "L66", "weight": 1.0}, {"source": "$graphify-root$_src_data_wellness_api_wellnessapiclient", "target": "$graphify-root$_src_data_wellness_api_wellnessapiclient_fetch_all", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/data/wellness_api.py", "source_location": "L117", "weight": 1.0}, {"source": "$graphify-root$_src_data_wellness_api_wellnessapiclient_fetch_all", "target": "$graphify-root$_src_data_wellness_api_wellnessplace", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "src/data/wellness_api.py", "source_location": "L117", "weight": 1.0}, {"source": "$graphify-root$_src_data_wellness_api_wellnessapiclient_from_settings", "target": "settings", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/data/wellness_api.py", "source_location": "L60", "weight": 1.0}, {"source": "$graphify-root$_src_data_wellness_api_wellnessapiclient_fetch_page", "target": "$graphify-root$_src_data_wellness_api_extract_items", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/data/wellness_api.py", "source_location": "L94", "weight": 1.0}, {"source": "$graphify-root$_src_data_wellness_api_wellnessapiclient_fetch_page", "target": "$graphify-root$_src_data_wellness_api_safe_float", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/data/wellness_api.py", "source_location": "L99", "weight": 1.0}, {"source": "$graphify-root$_src_data_wellness_api_wellnessapiclient_fetch_page", "target": "$graphify-root$_src_data_wellness_api_wellnessplace", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/data/wellness_api.py", "source_location": "L105", "weight": 1.0}, {"source": "$graphify-root$_src_data_wellness_api_wellnessapiclient_fetch_all", "target": "$graphify-root$_src_data_wellness_api_wellnessapiclient_fetch_page", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/data/wellness_api.py", "source_location": "L122", "weight": 1.0}, {"source": "$graphify-root$_src_data_wellness_api_rationale_1", "target": "$graphify-root$_src_data_wellness_api_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/data/wellness_api.py", "source_location": "L1", "weight": 1.0}, {"source": "$graphify-root$_src_data_wellness_api_rationale_46", "target": "$graphify-root$_src_data_wellness_api_wellnessapiclient", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/data/wellness_api.py", "source_location": "L46", "weight": 1.0}, {"source": "$graphify-root$_src_data_wellness_api_rationale_118", "target": "$graphify-root$_src_data_wellness_api_wellnessapiclient_fetch_all", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/data/wellness_api.py", "source_location": "L118", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_src_data_wellness_api_extract_items", "callee": "dict", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "src/data/wellness_api.py", "source_location": "L31"}, {"caller_nid": "$graphify-root$_src_data_wellness_api_extract_items", "callee": "KeyError", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "src/data/wellness_api.py", "source_location": "L34"}, {"caller_nid": "$graphify-root$_src_data_wellness_api_extract_items", "callee": "TypeError", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "src/data/wellness_api.py", "source_location": "L34"}, {"caller_nid": "$graphify-root$_src_data_wellness_api_safe_float", "callee": "TypeError", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "src/data/wellness_api.py", "source_location": "L41"}, {"caller_nid": "$graphify-root$_src_data_wellness_api_safe_float", "callee": "ValueError", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "src/data/wellness_api.py", "source_location": "L41"}, {"caller_nid": "$graphify-root$_src_data_wellness_api_wellnessapiclient_init", "callee": "ValueError", "is_member_call": false, "source_file": "src/data/wellness_api.py", "source_location": "L53", "receiver": null}, {"caller_nid": "$graphify-root$_src_data_wellness_api_wellnessapiclient_from_settings", "callee": "cls", "is_member_call": false, "source_file": "src/data/wellness_api.py", "source_location": "L64", "receiver": null}, {"caller_nid": "$graphify-root$_src_data_wellness_api_wellnessapiclient_fetch_page", "callee": "AsyncClient", "is_member_call": true, "source_file": "src/data/wellness_api.py", "source_location": "L86", "receiver": "httpx"}, {"caller_nid": "$graphify-root$_src_data_wellness_api_wellnessapiclient_fetch_page", "callee": "get", "is_member_call": true, "source_file": "src/data/wellness_api.py", "source_location": "L87", "receiver": "client"}, {"caller_nid": "$graphify-root$_src_data_wellness_api_wellnessapiclient_fetch_page", "callee": "raise_for_status", "is_member_call": true, "source_file": "src/data/wellness_api.py", "source_location": "L88", "receiver": "resp"}, {"caller_nid": "$graphify-root$_src_data_wellness_api_wellnessapiclient_fetch_page", "callee": "json", "is_member_call": true, "source_file": "src/data/wellness_api.py", "source_location": "L89", "receiver": "resp"}, {"caller_nid": "$graphify-root$_src_data_wellness_api_wellnessapiclient_fetch_page", "callee": "get", "is_member_call": true, "source_file": "src/data/wellness_api.py", "source_location": "L96", "receiver": "item"}, {"caller_nid": "$graphify-root$_src_data_wellness_api_wellnessapiclient_fetch_page", "callee": "get", "is_member_call": true, "source_file": "src/data/wellness_api.py", "source_location": "L96", "receiver": "item"}, {"caller_nid": "$graphify-root$_src_data_wellness_api_wellnessapiclient_fetch_page", "callee": "get", "is_member_call": true, "source_file": "src/data/wellness_api.py", "source_location": "L97", "receiver": "item"}, {"caller_nid": "$graphify-root$_src_data_wellness_api_wellnessapiclient_fetch_page", "callee": "get", "is_member_call": true, "source_file": "src/data/wellness_api.py", "source_location": "L98", "receiver": "item"}, {"caller_nid": "$graphify-root$_src_data_wellness_api_wellnessapiclient_fetch_page", "callee": "get", "is_member_call": true, "source_file": "src/data/wellness_api.py", "source_location": "L98", "receiver": "item"}, {"caller_nid": "$graphify-root$_src_data_wellness_api_wellnessapiclient_fetch_page", "callee": "get", "is_member_call": true, "source_file": "src/data/wellness_api.py", "source_location": "L98", "receiver": "item"}, {"caller_nid": "$graphify-root$_src_data_wellness_api_wellnessapiclient_fetch_page", "callee": "get", "is_member_call": true, "source_file": "src/data/wellness_api.py", "source_location": "L99", "receiver": "item"}, {"caller_nid": "$graphify-root$_src_data_wellness_api_wellnessapiclient_fetch_page", "callee": "get", "is_member_call": true, "source_file": "src/data/wellness_api.py", "source_location": "L99", "receiver": "item"}, {"caller_nid": "$graphify-root$_src_data_wellness_api_wellnessapiclient_fetch_page", "callee": "get", "is_member_call": true, "source_file": "src/data/wellness_api.py", "source_location": "L99", "receiver": "item"}, {"caller_nid": "$graphify-root$_src_data_wellness_api_wellnessapiclient_fetch_page", "callee": "get", "is_member_call": true, "source_file": "src/data/wellness_api.py", "source_location": "L100", "receiver": "item"}, {"caller_nid": "$graphify-root$_src_data_wellness_api_wellnessapiclient_fetch_page", "callee": "get", "is_member_call": true, "source_file": "src/data/wellness_api.py", "source_location": "L100", "receiver": "item"}, {"caller_nid": "$graphify-root$_src_data_wellness_api_wellnessapiclient_fetch_page", "callee": "get", "is_member_call": true, "source_file": "src/data/wellness_api.py", "source_location": "L100", "receiver": "item"}, {"caller_nid": "$graphify-root$_src_data_wellness_api_wellnessapiclient_fetch_page", "callee": "append", "is_member_call": true, "source_file": "src/data/wellness_api.py", "source_location": "L105", "receiver": "places"}, {"caller_nid": "$graphify-root$_src_data_wellness_api_wellnessapiclient_fetch_page", "callee": "get", "is_member_call": true, "source_file": "src/data/wellness_api.py", "source_location": "L111", "receiver": "item"}, {"caller_nid": "$graphify-root$_src_data_wellness_api_wellnessapiclient_fetch_page", "callee": "get", "is_member_call": true, "source_file": "src/data/wellness_api.py", "source_location": "L112", "receiver": "item"}, {"caller_nid": "$graphify-root$_src_data_wellness_api_wellnessapiclient_fetch_page", "callee": "get", "is_member_call": true, "source_file": "src/data/wellness_api.py", "source_location": "L113", "receiver": "item"}, {"caller_nid": "$graphify-root$_src_data_wellness_api_wellnessapiclient_fetch_all", "callee": "extend", "is_member_call": true, "source_file": "src/data/wellness_api.py", "source_location": "L125", "receiver": "results"}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.31/77a1d82310031c8c205fa05e8c15c3f0ed4a03d86a793af72917c43dfe6e48ee.json b/graphify-out/cache/ast/v0.9.31/77a1d82310031c8c205fa05e8c15c3f0ed4a03d86a793af72917c43dfe6e48ee.json new file mode 100644 index 0000000..0085e75 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.31/77a1d82310031c8c205fa05e8c15c3f0ed4a03d86a793af72917c43dfe6e48ee.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_src_data_theme_taxonomy_py", "label": "theme_taxonomy.py", "file_type": "code", "source_file": "src/data/theme_taxonomy.py", "source_location": "L1"}, {"id": "$graphify-root$_src_data_theme_taxonomy_userpreferences", "label": "UserPreferences", "file_type": "code", "source_file": "src/data/theme_taxonomy.py", "source_location": "L83", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_src_data_theme_taxonomy_userpreferences_post_init", "label": ".__post_init__()", "file_type": "code", "source_file": "src/data/theme_taxonomy.py", "source_location": "L88", "_callable": true}, {"id": "$graphify-root$_src_data_theme_taxonomy_userpreferences_all_themes", "label": ".all_themes()", "file_type": "code", "source_file": "src/data/theme_taxonomy.py", "source_location": "L105", "_callable": true}, {"id": "$graphify-root$_src_data_theme_taxonomy_matches_place_type", "label": "matches_place_type()", "file_type": "code", "source_file": "src/data/theme_taxonomy.py", "source_location": "L111", "_callable": true}, {"id": "$graphify-root$_src_data_theme_taxonomy_get_place_types_for", "label": "get_place_types_for()", "file_type": "code", "source_file": "src/data/theme_taxonomy.py", "source_location": "L140", "_callable": true}, {"id": "$graphify-root$_src_data_theme_taxonomy_rationale_1", "label": "\ud14c\ub9c8 \ubd84\ub958 \uccb4\uacc4 (2\ucd95 18\ud14c\ub9c8). \ucd95 A: PLACE_TYPES (9\uac1c) \u2014 \uc7a5\uc18c \uc720\ud615 (\uc0b0, \ubc14\ub2e4, \uce74\ud398 \ub4f1 \uad6c\uccb4\uc801) \ucd95 B:\u2026", "file_type": "rationale", "source_file": "src/data/theme_taxonomy.py", "source_location": "L1"}, {"id": "$graphify-root$_src_data_theme_taxonomy_rationale_84", "label": "\uc0ac\uc6a9\uc790\uac00 \uc120\ud0dd\ud55c \ud14c\ub9c8. \ub450 \ucd95 \ubaa8\ub450 \ub2e4\uc911 \uc120\ud0dd \ud5c8\uc6a9 (\uac01 1\uac1c \uc774\uc0c1).", "file_type": "rationale", "source_file": "src/data/theme_taxonomy.py", "source_location": "L84"}, {"id": "$graphify-root$_src_data_theme_taxonomy_rationale_106", "label": "\ub450 \ucd95\uc758 \uc120\ud0dd\uc744 \ud3c9\ud0c4\ud654 (LLM \ud504\ub86c\ud504\ud2b8\uc6a9).", "file_type": "rationale", "source_file": "src/data/theme_taxonomy.py", "source_location": "L106"}, {"id": "$graphify-root$_src_data_theme_taxonomy_rationale_116", "label": "\uc8fc\uc5b4\uc9c4 lcls_systm3 \ub610\ub294 content_type_id\uac00 place_type\uc5d0 \ubd80\ud569\ud558\ub294\uc9c0 \ud310\uc815. \uc608)\u2026", "file_type": "rationale", "source_file": "src/data/theme_taxonomy.py", "source_location": "L116"}, {"id": "$graphify-root$_src_data_theme_taxonomy_rationale_144", "label": "\uc8fc\uc5b4\uc9c4 \ucf54\ub4dc\uac00 \ub9e4\uce6d\ub418\ub294 \ubaa8\ub4e0 PLACE_TYPE \ubc18\ud658 (\ud55c POI\uac00 \uc5ec\ub7ec \uc720\ud615\uc5d0 \uc18d\ud560 \uc218 \uc788\uc74c).", "file_type": "rationale", "source_file": "src/data/theme_taxonomy.py", "source_location": "L144"}], "edges": [{"source": "$graphify-root$_src_data_theme_taxonomy_py", "target": "dataclasses", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "src/data/theme_taxonomy.py", "source_location": "L13", "weight": 1.0}, {"source": "$graphify-root$_src_data_theme_taxonomy_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "src/data/theme_taxonomy.py", "source_location": "L14", "weight": 1.0}, {"source": "$graphify-root$_src_data_theme_taxonomy_py", "target": "$graphify-root$_src_data_theme_taxonomy_userpreferences", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/data/theme_taxonomy.py", "source_location": "L83", "weight": 1.0}, {"source": "$graphify-root$_src_data_theme_taxonomy_userpreferences", "target": "$graphify-root$_src_data_theme_taxonomy_userpreferences_post_init", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/data/theme_taxonomy.py", "source_location": "L88", "weight": 1.0}, {"source": "$graphify-root$_src_data_theme_taxonomy_userpreferences", "target": "$graphify-root$_src_data_theme_taxonomy_userpreferences_all_themes", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/data/theme_taxonomy.py", "source_location": "L105", "weight": 1.0}, {"source": "$graphify-root$_src_data_theme_taxonomy_py", "target": "$graphify-root$_src_data_theme_taxonomy_matches_place_type", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/data/theme_taxonomy.py", "source_location": "L111", "weight": 1.0}, {"source": "$graphify-root$_src_data_theme_taxonomy_py", "target": "$graphify-root$_src_data_theme_taxonomy_get_place_types_for", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/data/theme_taxonomy.py", "source_location": "L140", "weight": 1.0}, {"source": "$graphify-root$_src_data_theme_taxonomy_get_place_types_for", "target": "$graphify-root$_src_data_theme_taxonomy_matches_place_type", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/data/theme_taxonomy.py", "source_location": "L147", "weight": 1.0}, {"source": "$graphify-root$_src_data_theme_taxonomy_rationale_1", "target": "$graphify-root$_src_data_theme_taxonomy_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/data/theme_taxonomy.py", "source_location": "L1", "weight": 1.0}, {"source": "$graphify-root$_src_data_theme_taxonomy_rationale_84", "target": "$graphify-root$_src_data_theme_taxonomy_userpreferences", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/data/theme_taxonomy.py", "source_location": "L84", "weight": 1.0}, {"source": "$graphify-root$_src_data_theme_taxonomy_rationale_106", "target": "$graphify-root$_src_data_theme_taxonomy_userpreferences_all_themes", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/data/theme_taxonomy.py", "source_location": "L106", "weight": 1.0}, {"source": "$graphify-root$_src_data_theme_taxonomy_rationale_116", "target": "$graphify-root$_src_data_theme_taxonomy_matches_place_type", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/data/theme_taxonomy.py", "source_location": "L116", "weight": 1.0}, {"source": "$graphify-root$_src_data_theme_taxonomy_rationale_144", "target": "$graphify-root$_src_data_theme_taxonomy_get_place_types_for", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/data/theme_taxonomy.py", "source_location": "L144", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_src_data_theme_taxonomy_userpreferences_post_init", "callee": "ValueError", "is_member_call": false, "source_file": "src/data/theme_taxonomy.py", "source_location": "L92", "receiver": null}, {"caller_nid": "$graphify-root$_src_data_theme_taxonomy_userpreferences_post_init", "callee": "ValueError", "is_member_call": false, "source_file": "src/data/theme_taxonomy.py", "source_location": "L98", "receiver": null}, {"caller_nid": "$graphify-root$_src_data_theme_taxonomy_userpreferences_post_init", "callee": "ValueError", "is_member_call": false, "source_file": "src/data/theme_taxonomy.py", "source_location": "L103", "receiver": null}, {"caller_nid": "$graphify-root$_src_data_theme_taxonomy_matches_place_type", "callee": "get", "is_member_call": true, "source_file": "src/data/theme_taxonomy.py", "source_location": "L126", "receiver": "PLACE_TYPE_TO_CONTENT_TYPE"}, {"caller_nid": "$graphify-root$_src_data_theme_taxonomy_matches_place_type", "callee": "get", "is_member_call": true, "source_file": "src/data/theme_taxonomy.py", "source_location": "L132", "receiver": "PLACE_TYPE_TO_LCLS"}, {"caller_nid": "$graphify-root$_src_data_theme_taxonomy_matches_place_type", "callee": "startswith", "is_member_call": true, "source_file": "src/data/theme_taxonomy.py", "source_location": "L134", "receiver": "lcls_systm3"}, {"caller_nid": "$graphify-root$_src_data_theme_taxonomy_get_place_types_for", "callee": "append", "is_member_call": true, "source_file": "src/data/theme_taxonomy.py", "source_location": "L148", "receiver": "matched"}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.31/7c4022492eb3f45817366b08c7ef494df640d8ff944f25fd488cefd39cc26494.json b/graphify-out/cache/ast/v0.9.31/7c4022492eb3f45817366b08c7ef494df640d8ff944f25fd488cefd39cc26494.json new file mode 100644 index 0000000..ce83706 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.31/7c4022492eb3f45817366b08c7ef494df640d8ff944f25fd488cefd39cc26494.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_src_validation_scoring_py", "label": "scoring.py", "file_type": "code", "source_file": "src/validation/scoring.py", "source_location": "L1"}, {"id": "$graphify-root$_src_validation_scoring_scorecalculator", "label": "ScoreCalculator", "file_type": "code", "source_file": "src/validation/scoring.py", "source_location": "L20", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_src_validation_scoring_scorecalculator_compute", "label": ".compute()", "file_type": "code", "source_file": "src/validation/scoring.py", "source_location": "L23", "_callable": true}, {"id": "itineraryplan", "label": "ItineraryPlan", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/src/validation/scoring.py"}, {"id": "poi", "label": "POI", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/src/validation/scoring.py"}, {"id": "hardfail", "label": "HardFail", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/src/validation/scoring.py"}, {"id": "scores", "label": "Scores", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/src/validation/scoring.py"}, {"id": "$graphify-root$_src_validation_scoring_scorecalculator_cosine_distance", "label": "._cosine_distance()", "file_type": "code", "source_file": "src/validation/scoring.py", "source_location": "L59", "_callable": true}, {"id": "$graphify-root$_src_validation_scoring_scorecalculator_calc_efficiency", "label": "._calc_efficiency()", "file_type": "code", "source_file": "src/validation/scoring.py", "source_location": "L63", "_callable": true}, {"id": "$graphify-root$_src_validation_scoring_scorecalculator_calc_feasibility", "label": "._calc_feasibility()", "file_type": "code", "source_file": "src/validation/scoring.py", "source_location": "L79", "_callable": true}, {"id": "$graphify-root$_src_validation_scoring_scorecalculator_calc_purpose_fit", "label": "._calc_purpose_fit()", "file_type": "code", "source_file": "src/validation/scoring.py", "source_location": "L113", "_callable": true}, {"id": "$graphify-root$_src_validation_scoring_scorecalculator_calc_flow", "label": "._calc_flow()", "file_type": "code", "source_file": "src/validation/scoring.py", "source_location": "L132", "_callable": true}, {"id": "$graphify-root$_src_validation_scoring_scorecalculator_calc_area_intensity", "label": "._calc_area_intensity()", "file_type": "code", "source_file": "src/validation/scoring.py", "source_location": "L169", "_callable": true}, {"id": "$graphify-root$_src_validation_scoring_rationale_21", "label": "5\uac1c \uc9c0\ud45c \u2192 Final Score (0~100) \uacc4\uc0b0\uae30. External I/O \uc5c6\uc74c.", "file_type": "rationale", "source_file": "src/validation/scoring.py", "source_location": "L21"}, {"id": "$graphify-root$_src_validation_scoring_rationale_30", "label": "5\uac1c \uc9c0\ud45c \uacc4\uc0b0 + Final Score (0~100) \ubc18\ud658. hard_fails \uc788\uc73c\uba74 Final Score \u2264 59. \ubc18\ud658:\u2026", "file_type": "rationale", "source_file": "src/validation/scoring.py", "source_location": "L30"}, {"id": "$graphify-root$_src_validation_scoring_rationale_60", "label": "warning \ubaa8\ub4c8\uc758 \uacf5\uc720 \uad6c\ud604\uc5d0 \uc704\uc784.", "file_type": "rationale", "source_file": "src/validation/scoring.py", "source_location": "L60"}, {"id": "$graphify-root$_src_validation_scoring_rationale_68", "label": "Efficiency = nn_heuristic_km / actual_total_km, clamped to [0, 1].", "file_type": "rationale", "source_file": "src/validation/scoring.py", "source_location": "L68"}, {"id": "$graphify-root$_src_validation_scoring_rationale_87", "label": "Feasibility = hard\u00d70.5 + temporal\u00d70.3 + human\u00d70.2. temporal \uc784\uacc4\uac12\uc740 party_type\ubcc4\u2026", "file_type": "rationale", "source_file": "src/validation/scoring.py", "source_location": "L87"}, {"id": "$graphify-root$_src_validation_scoring_rationale_114", "label": "1 - cosine_distance(intent_vector, activity_vector).", "file_type": "rationale", "source_file": "src/validation/scoring.py", "source_location": "L114"}, {"id": "$graphify-root$_src_validation_scoring_rationale_137", "label": "1 - (backtracking\u00d70.65 + revisit_area\u00d70.35). switch_ratio \uc81c\uac70: \uce74\ud14c\uace0\ub9ac \ub2e4\uc591\uc131\uc740 \ud328\ub110\ud2f0\uac00\u2026", "file_type": "rationale", "source_file": "src/validation/scoring.py", "source_location": "L137"}, {"id": "$graphify-root$_src_validation_scoring_rationale_170", "label": "1 - dominant_category_ratio. \ubd84\uc0b0\ub420\uc218\ub85d 1\uc5d0 \uac00\uae4c\uc6c0.", "file_type": "rationale", "source_file": "src/validation/scoring.py", "source_location": "L170"}], "edges": [{"source": "$graphify-root$_src_validation_scoring_py", "target": "src_data_models", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "src/validation/scoring.py", "source_location": "L4", "weight": 1.0}, {"source": "$graphify-root$_src_validation_scoring_py", "target": "src_data_party_config", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "src/validation/scoring.py", "source_location": "L5", "weight": 1.0}, {"source": "$graphify-root$_src_validation_scoring_py", "target": "src_utils_geo", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "src/validation/scoring.py", "source_location": "L6", "weight": 1.0}, {"source": "$graphify-root$_src_validation_scoring_py", "target": "src_validation_warning", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "src/validation/scoring.py", "source_location": "L7", "weight": 1.0}, {"source": "$graphify-root$_src_validation_scoring_py", "target": "$graphify-root$_src_validation_scoring_scorecalculator", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/validation/scoring.py", "source_location": "L20", "weight": 1.0}, {"source": "$graphify-root$_src_validation_scoring_scorecalculator", "target": "$graphify-root$_src_validation_scoring_scorecalculator_compute", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/validation/scoring.py", "source_location": "L23", "weight": 1.0}, {"source": "$graphify-root$_src_validation_scoring_scorecalculator_compute", "target": "itineraryplan", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "src/validation/scoring.py", "source_location": "L23", "weight": 1.0}, {"source": "$graphify-root$_src_validation_scoring_scorecalculator_compute", "target": "poi", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "src/validation/scoring.py", "source_location": "L23", "weight": 1.0}, {"source": "$graphify-root$_src_validation_scoring_scorecalculator_compute", "target": "hardfail", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "src/validation/scoring.py", "source_location": "L23", "weight": 1.0}, {"source": "$graphify-root$_src_validation_scoring_scorecalculator_compute", "target": "scores", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "src/validation/scoring.py", "source_location": "L23", "weight": 1.0}, {"source": "$graphify-root$_src_validation_scoring_scorecalculator", "target": "$graphify-root$_src_validation_scoring_scorecalculator_cosine_distance", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/validation/scoring.py", "source_location": "L59", "weight": 1.0}, {"source": "$graphify-root$_src_validation_scoring_scorecalculator", "target": "$graphify-root$_src_validation_scoring_scorecalculator_calc_efficiency", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/validation/scoring.py", "source_location": "L63", "weight": 1.0}, {"source": "$graphify-root$_src_validation_scoring_scorecalculator_calc_efficiency", "target": "poi", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "src/validation/scoring.py", "source_location": "L63", "weight": 1.0}, {"source": "$graphify-root$_src_validation_scoring_scorecalculator", "target": "$graphify-root$_src_validation_scoring_scorecalculator_calc_feasibility", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/validation/scoring.py", "source_location": "L79", "weight": 1.0}, {"source": "$graphify-root$_src_validation_scoring_scorecalculator_calc_feasibility", "target": "itineraryplan", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "src/validation/scoring.py", "source_location": "L79", "weight": 1.0}, {"source": "$graphify-root$_src_validation_scoring_scorecalculator_calc_feasibility", "target": "poi", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "src/validation/scoring.py", "source_location": "L79", "weight": 1.0}, {"source": "$graphify-root$_src_validation_scoring_scorecalculator_calc_feasibility", "target": "hardfail", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "src/validation/scoring.py", "source_location": "L79", "weight": 1.0}, {"source": "$graphify-root$_src_validation_scoring_scorecalculator", "target": "$graphify-root$_src_validation_scoring_scorecalculator_calc_purpose_fit", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/validation/scoring.py", "source_location": "L113", "weight": 1.0}, {"source": "$graphify-root$_src_validation_scoring_scorecalculator_calc_purpose_fit", "target": "itineraryplan", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "src/validation/scoring.py", "source_location": "L113", "weight": 1.0}, {"source": "$graphify-root$_src_validation_scoring_scorecalculator_calc_purpose_fit", "target": "poi", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "src/validation/scoring.py", "source_location": "L113", "weight": 1.0}, {"source": "$graphify-root$_src_validation_scoring_scorecalculator", "target": "$graphify-root$_src_validation_scoring_scorecalculator_calc_flow", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/validation/scoring.py", "source_location": "L132", "weight": 1.0}, {"source": "$graphify-root$_src_validation_scoring_scorecalculator_calc_flow", "target": "poi", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "src/validation/scoring.py", "source_location": "L132", "weight": 1.0}, {"source": "$graphify-root$_src_validation_scoring_scorecalculator", "target": "$graphify-root$_src_validation_scoring_scorecalculator_calc_area_intensity", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/validation/scoring.py", "source_location": "L169", "weight": 1.0}, {"source": "$graphify-root$_src_validation_scoring_scorecalculator_calc_area_intensity", "target": "poi", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "src/validation/scoring.py", "source_location": "L169", "weight": 1.0}, {"source": "$graphify-root$_src_validation_scoring_scorecalculator_compute", "target": "$graphify-root$_src_validation_scoring_scorecalculator_calc_efficiency", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/validation/scoring.py", "source_location": "L37", "weight": 1.0}, {"source": "$graphify-root$_src_validation_scoring_scorecalculator_compute", "target": "$graphify-root$_src_validation_scoring_scorecalculator_calc_feasibility", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/validation/scoring.py", "source_location": "L38", "weight": 1.0}, {"source": "$graphify-root$_src_validation_scoring_scorecalculator_compute", "target": "$graphify-root$_src_validation_scoring_scorecalculator_calc_purpose_fit", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/validation/scoring.py", "source_location": "L39", "weight": 1.0}, {"source": "$graphify-root$_src_validation_scoring_scorecalculator_compute", "target": "$graphify-root$_src_validation_scoring_scorecalculator_calc_flow", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/validation/scoring.py", "source_location": "L40", "weight": 1.0}, {"source": "$graphify-root$_src_validation_scoring_scorecalculator_compute", "target": "$graphify-root$_src_validation_scoring_scorecalculator_calc_area_intensity", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/validation/scoring.py", "source_location": "L41", "weight": 1.0}, {"source": "$graphify-root$_src_validation_scoring_scorecalculator_compute", "target": "scores", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/validation/scoring.py", "source_location": "L43", "weight": 1.0}, {"source": "$graphify-root$_src_validation_scoring_scorecalculator_calc_purpose_fit", "target": "$graphify-root$_src_validation_scoring_scorecalculator_cosine_distance", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/validation/scoring.py", "source_location": "L130", "weight": 1.0}, {"source": "$graphify-root$_src_validation_scoring_rationale_21", "target": "$graphify-root$_src_validation_scoring_scorecalculator", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/validation/scoring.py", "source_location": "L21", "weight": 1.0}, {"source": "$graphify-root$_src_validation_scoring_rationale_30", "target": "$graphify-root$_src_validation_scoring_scorecalculator_compute", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/validation/scoring.py", "source_location": "L30", "weight": 1.0}, {"source": "$graphify-root$_src_validation_scoring_rationale_60", "target": "$graphify-root$_src_validation_scoring_scorecalculator_cosine_distance", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/validation/scoring.py", "source_location": "L60", "weight": 1.0}, {"source": "$graphify-root$_src_validation_scoring_rationale_68", "target": "$graphify-root$_src_validation_scoring_scorecalculator_calc_efficiency", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/validation/scoring.py", "source_location": "L68", "weight": 1.0}, {"source": "$graphify-root$_src_validation_scoring_rationale_87", "target": "$graphify-root$_src_validation_scoring_scorecalculator_calc_feasibility", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/validation/scoring.py", "source_location": "L87", "weight": 1.0}, {"source": "$graphify-root$_src_validation_scoring_rationale_114", "target": "$graphify-root$_src_validation_scoring_scorecalculator_calc_purpose_fit", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/validation/scoring.py", "source_location": "L114", "weight": 1.0}, {"source": "$graphify-root$_src_validation_scoring_rationale_137", "target": "$graphify-root$_src_validation_scoring_scorecalculator_calc_flow", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/validation/scoring.py", "source_location": "L137", "weight": 1.0}, {"source": "$graphify-root$_src_validation_scoring_rationale_170", "target": "$graphify-root$_src_validation_scoring_scorecalculator_calc_area_intensity", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/validation/scoring.py", "source_location": "L170", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_src_validation_scoring_scorecalculator_compute", "callee": "build_dist_cache", "is_member_call": false, "source_file": "src/validation/scoring.py", "source_location": "L35", "receiver": null}, {"caller_nid": "$graphify-root$_src_validation_scoring_scorecalculator_compute", "callee": "items", "is_member_call": true, "source_file": "src/validation/scoring.py", "source_location": "L51", "receiver": "WEIGHTS"}, {"caller_nid": "$graphify-root$_src_validation_scoring_scorecalculator_compute", "callee": "HARD_FAIL_SCORE_CAP", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "src/validation/scoring.py", "source_location": "L54"}, {"caller_nid": "$graphify-root$_src_validation_scoring_scorecalculator_calc_efficiency", "callee": "build_dist_cache", "is_member_call": false, "source_file": "src/validation/scoring.py", "source_location": "L72", "receiver": null}, {"caller_nid": "$graphify-root$_src_validation_scoring_scorecalculator_calc_efficiency", "callee": "get", "is_member_call": true, "source_file": "src/validation/scoring.py", "source_location": "L73", "receiver": "dist_cache"}, {"caller_nid": "$graphify-root$_src_validation_scoring_scorecalculator_calc_efficiency", "callee": "nn_heuristic_km", "is_member_call": false, "source_file": "src/validation/scoring.py", "source_location": "L76", "receiver": null}, {"caller_nid": "$graphify-root$_src_validation_scoring_scorecalculator_calc_feasibility", "callee": "build_dist_cache", "is_member_call": false, "source_file": "src/validation/scoring.py", "source_location": "L92", "receiver": null}, {"caller_nid": "$graphify-root$_src_validation_scoring_scorecalculator_calc_feasibility", "callee": "get_party_profile", "is_member_call": false, "source_file": "src/validation/scoring.py", "source_location": "L95", "receiver": null}, {"caller_nid": "$graphify-root$_src_validation_scoring_scorecalculator_calc_feasibility", "callee": "get_travel_min", "is_member_call": false, "source_file": "src/validation/scoring.py", "source_location": "L101", "receiver": null}, {"caller_nid": "$graphify-root$_src_validation_scoring_scorecalculator_calc_feasibility", "callee": "get", "is_member_call": true, "source_file": "src/validation/scoring.py", "source_location": "L108", "receiver": "dist_cache"}, {"caller_nid": "$graphify-root$_src_validation_scoring_scorecalculator_calc_purpose_fit", "callee": "get", "is_member_call": true, "source_file": "src/validation/scoring.py", "source_location": "L117", "receiver": "INTENT_VECTORS"}, {"caller_nid": "$graphify-root$_src_validation_scoring_scorecalculator_calc_purpose_fit", "callee": "get", "is_member_call": true, "source_file": "src/validation/scoring.py", "source_location": "L128", "receiver": "cat_count"}, {"caller_nid": "$graphify-root$_src_validation_scoring_scorecalculator_calc_purpose_fit", "callee": "items", "is_member_call": true, "source_file": "src/validation/scoring.py", "source_location": "L129", "receiver": "cat_count"}, {"caller_nid": "$graphify-root$_src_validation_scoring_scorecalculator_calc_flow", "callee": "build_dist_cache", "is_member_call": false, "source_file": "src/validation/scoring.py", "source_location": "L146", "receiver": null}, {"caller_nid": "$graphify-root$_src_validation_scoring_scorecalculator_calc_flow", "callee": "get", "is_member_call": true, "source_file": "src/validation/scoring.py", "source_location": "L148", "receiver": "dist_cache"}, {"caller_nid": "$graphify-root$_src_validation_scoring_scorecalculator_calc_flow", "callee": "nn_heuristic_km", "is_member_call": false, "source_file": "src/validation/scoring.py", "source_location": "L149", "receiver": null}, {"caller_nid": "$graphify-root$_src_validation_scoring_scorecalculator_calc_area_intensity", "callee": "get", "is_member_call": true, "source_file": "src/validation/scoring.py", "source_location": "L176", "receiver": "cat_counts"}, {"caller_nid": "$graphify-root$_src_validation_scoring_scorecalculator_calc_area_intensity", "callee": "values", "is_member_call": true, "source_file": "src/validation/scoring.py", "source_location": "L177", "receiver": "cat_counts"}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.31/86e9427e650fb2a467fb8b65ea37600d642a8d96f69d00b481a25699ae861c25.json b/graphify-out/cache/ast/v0.9.31/86e9427e650fb2a467fb8b65ea37600d642a8d96f69d00b481a25699ae861c25.json new file mode 100644 index 0000000..94ade4f --- /dev/null +++ b/graphify-out/cache/ast/v0.9.31/86e9427e650fb2a467fb8b65ea37600d642a8d96f69d00b481a25699ae861c25.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_gun_scripts_curated_itineraries_py", "label": "curated_itineraries.py", "file_type": "code", "source_file": "gun/scripts/curated_itineraries.py", "source_location": "L1"}, {"id": "$graphify-root$_gun_scripts_curated_itineraries_make_workbook", "label": "make_workbook()", "file_type": "code", "source_file": "gun/scripts/curated_itineraries.py", "source_location": "L572", "_callable": true}, {"id": "workbook", "label": "Workbook", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/gun/scripts/curated_itineraries.py"}, {"id": "$graphify-root$_gun_scripts_curated_itineraries_main", "label": "main()", "file_type": "code", "source_file": "gun/scripts/curated_itineraries.py", "source_location": "L658", "_callable": true}, {"id": "$graphify-root$_gun_scripts_curated_itineraries_rationale_1", "label": "\ud050\ub808\uc774\uc158 \ucd94\ucc9c \uc77c\uc815 \uc0dd\uc131\uae30. \ud55c\uad6d \uc8fc\uc694 \uad00\uad11\uc9c0 \uae30\ubc18 \uc77c\ubc18 \uc9c0\uc2dd + \ud55c\uad6d\uad00\uad11\uacf5\uc0ac \ucd94\ucc9c \ucf54\uc2a4 \ud328\ud134\uc73c\ub85c 30~40\uac1c \ucd94\ucc9c \uc77c\uc815\uc744\u2026", "file_type": "rationale", "source_file": "gun/scripts/curated_itineraries.py", "source_location": "L1"}], "edges": [{"source": "$graphify-root$_gun_scripts_curated_itineraries_py", "target": "pathlib", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "gun/scripts/curated_itineraries.py", "source_location": "L20", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_curated_itineraries_py", "target": "openpyxl", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "gun/scripts/curated_itineraries.py", "source_location": "L22", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_curated_itineraries_py", "target": "openpyxl_styles", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "gun/scripts/curated_itineraries.py", "source_location": "L23", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_curated_itineraries_py", "target": "openpyxl_utils", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "gun/scripts/curated_itineraries.py", "source_location": "L24", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_curated_itineraries_py", "target": "openpyxl_worksheet_datavalidation", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "gun/scripts/curated_itineraries.py", "source_location": "L25", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_curated_itineraries_py", "target": "$graphify-root$_gun_scripts_curated_itineraries_make_workbook", "relation": "contains", "confidence": "EXTRACTED", "source_file": "gun/scripts/curated_itineraries.py", "source_location": "L572", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_curated_itineraries_make_workbook", "target": "workbook", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "gun/scripts/curated_itineraries.py", "source_location": "L572", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_curated_itineraries_py", "target": "$graphify-root$_gun_scripts_curated_itineraries_main", "relation": "contains", "confidence": "EXTRACTED", "source_file": "gun/scripts/curated_itineraries.py", "source_location": "L658", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_curated_itineraries_make_workbook", "target": "workbook", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "gun/scripts/curated_itineraries.py", "source_location": "L573", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_curated_itineraries_main", "target": "$graphify-root$_gun_scripts_curated_itineraries_make_workbook", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "gun/scripts/curated_itineraries.py", "source_location": "L659", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_curated_itineraries_rationale_1", "target": "$graphify-root$_gun_scripts_curated_itineraries_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "gun/scripts/curated_itineraries.py", "source_location": "L1", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_gun_scripts_curated_itineraries_make_workbook", "callee": "PatternFill", "is_member_call": false, "source_file": "gun/scripts/curated_itineraries.py", "source_location": "L578", "receiver": null}, {"caller_nid": "$graphify-root$_gun_scripts_curated_itineraries_make_workbook", "callee": "COLS", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "gun/scripts/curated_itineraries.py", "source_location": "L580"}, {"caller_nid": "$graphify-root$_gun_scripts_curated_itineraries_make_workbook", "callee": "cell", "is_member_call": true, "source_file": "gun/scripts/curated_itineraries.py", "source_location": "L581", "receiver": "ws"}, {"caller_nid": "$graphify-root$_gun_scripts_curated_itineraries_make_workbook", "callee": "Alignment", "is_member_call": false, "source_file": "gun/scripts/curated_itineraries.py", "source_location": "L584", "receiver": null}, {"caller_nid": "$graphify-root$_gun_scripts_curated_itineraries_make_workbook", "callee": "get", "is_member_call": true, "source_file": "gun/scripts/curated_itineraries.py", "source_location": "L592", "receiver": "SOURCE_MAP"}, {"caller_nid": "$graphify-root$_gun_scripts_curated_itineraries_make_workbook", "callee": "strptime", "is_member_call": true, "source_file": "gun/scripts/curated_itineraries.py", "source_location": "L597", "receiver": "datetime"}, {"caller_nid": "$graphify-root$_gun_scripts_curated_itineraries_make_workbook", "callee": "timedelta", "is_member_call": false, "source_file": "gun/scripts/curated_itineraries.py", "source_location": "L597", "receiver": null}, {"caller_nid": "$graphify-root$_gun_scripts_curated_itineraries_make_workbook", "callee": "strftime", "is_member_call": true, "source_file": "gun/scripts/curated_itineraries.py", "source_location": "L598", "receiver": "date_obj"}, {"caller_nid": "$graphify-root$_gun_scripts_curated_itineraries_make_workbook", "callee": "cell", "is_member_call": true, "source_file": "gun/scripts/curated_itineraries.py", "source_location": "L602", "receiver": "ws"}, {"caller_nid": "$graphify-root$_gun_scripts_curated_itineraries_make_workbook", "callee": "get_column_letter", "is_member_call": false, "source_file": "gun/scripts/curated_itineraries.py", "source_location": "L608", "receiver": null}, {"caller_nid": "$graphify-root$_gun_scripts_curated_itineraries_make_workbook", "callee": "DataValidation", "is_member_call": false, "source_file": "gun/scripts/curated_itineraries.py", "source_location": "L611", "receiver": null}, {"caller_nid": "$graphify-root$_gun_scripts_curated_itineraries_make_workbook", "callee": "join", "is_member_call": true, "source_file": "gun/scripts/curated_itineraries.py", "source_location": "L612", "receiver": null}, {"caller_nid": "$graphify-root$_gun_scripts_curated_itineraries_make_workbook", "callee": "SIDO_OPTIONS", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "gun/scripts/curated_itineraries.py", "source_location": "L612"}, {"caller_nid": "$graphify-root$_gun_scripts_curated_itineraries_make_workbook", "callee": "add", "is_member_call": true, "source_file": "gun/scripts/curated_itineraries.py", "source_location": "L613", "receiver": "dv_sido"}, {"caller_nid": "$graphify-root$_gun_scripts_curated_itineraries_make_workbook", "callee": "add_data_validation", "is_member_call": true, "source_file": "gun/scripts/curated_itineraries.py", "source_location": "L614", "receiver": "ws"}, {"caller_nid": "$graphify-root$_gun_scripts_curated_itineraries_make_workbook", "callee": "DataValidation", "is_member_call": false, "source_file": "gun/scripts/curated_itineraries.py", "source_location": "L615", "receiver": null}, {"caller_nid": "$graphify-root$_gun_scripts_curated_itineraries_make_workbook", "callee": "join", "is_member_call": true, "source_file": "gun/scripts/curated_itineraries.py", "source_location": "L616", "receiver": null}, {"caller_nid": "$graphify-root$_gun_scripts_curated_itineraries_make_workbook", "callee": "PERIOD_OPTIONS", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "gun/scripts/curated_itineraries.py", "source_location": "L616"}, {"caller_nid": "$graphify-root$_gun_scripts_curated_itineraries_make_workbook", "callee": "add", "is_member_call": true, "source_file": "gun/scripts/curated_itineraries.py", "source_location": "L617", "receiver": "dv_period"}, {"caller_nid": "$graphify-root$_gun_scripts_curated_itineraries_make_workbook", "callee": "add_data_validation", "is_member_call": true, "source_file": "gun/scripts/curated_itineraries.py", "source_location": "L618", "receiver": "ws"}, {"caller_nid": "$graphify-root$_gun_scripts_curated_itineraries_make_workbook", "callee": "DataValidation", "is_member_call": false, "source_file": "gun/scripts/curated_itineraries.py", "source_location": "L619", "receiver": null}, {"caller_nid": "$graphify-root$_gun_scripts_curated_itineraries_make_workbook", "callee": "join", "is_member_call": true, "source_file": "gun/scripts/curated_itineraries.py", "source_location": "L620", "receiver": null}, {"caller_nid": "$graphify-root$_gun_scripts_curated_itineraries_make_workbook", "callee": "CATEGORY_HINTS", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "gun/scripts/curated_itineraries.py", "source_location": "L620"}, {"caller_nid": "$graphify-root$_gun_scripts_curated_itineraries_make_workbook", "callee": "add", "is_member_call": true, "source_file": "gun/scripts/curated_itineraries.py", "source_location": "L621", "receiver": "dv_cat"}, {"caller_nid": "$graphify-root$_gun_scripts_curated_itineraries_make_workbook", "callee": "add_data_validation", "is_member_call": true, "source_file": "gun/scripts/curated_itineraries.py", "source_location": "L622", "receiver": "ws"}, {"caller_nid": "$graphify-root$_gun_scripts_curated_itineraries_make_workbook", "callee": "create_sheet", "is_member_call": true, "source_file": "gun/scripts/curated_itineraries.py", "source_location": "L627", "receiver": "wb"}, {"caller_nid": "$graphify-root$_gun_scripts_curated_itineraries_make_workbook", "callee": "cell", "is_member_call": true, "source_file": "gun/scripts/curated_itineraries.py", "source_location": "L649", "receiver": "ws_guide"}, {"caller_nid": "$graphify-root$_gun_scripts_curated_itineraries_make_workbook", "callee": "COLS", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "gun/scripts/curated_itineraries.py", "source_location": "L650"}, {"caller_nid": "$graphify-root$_gun_scripts_curated_itineraries_make_workbook", "callee": "cell", "is_member_call": true, "source_file": "gun/scripts/curated_itineraries.py", "source_location": "L651", "receiver": "ws_guide"}, {"caller_nid": "$graphify-root$_gun_scripts_curated_itineraries_main", "callee": "save", "is_member_call": true, "source_file": "gun/scripts/curated_itineraries.py", "source_location": "L660", "receiver": "wb"}, {"caller_nid": "$graphify-root$_gun_scripts_curated_itineraries_main", "callee": "OUTPUT", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "gun/scripts/curated_itineraries.py", "source_location": "L660"}, {"caller_nid": "$graphify-root$_gun_scripts_curated_itineraries_main", "callee": "ITINERARIES", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "gun/scripts/curated_itineraries.py", "source_location": "L661"}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.31/8b3032d9dea8254432ec455666d0463fd63eb4303321b497da5f465c547305d3.json b/graphify-out/cache/ast/v0.9.31/8b3032d9dea8254432ec455666d0463fd63eb4303321b497da5f465c547305d3.json new file mode 100644 index 0000000..c5315f3 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.31/8b3032d9dea8254432ec455666d0463fd63eb4303321b497da5f465c547305d3.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_src_validation_hard_fail_py", "label": "hard_fail.py", "file_type": "code", "source_file": "src/validation/hard_fail.py", "source_location": "L1"}, {"id": "$graphify-root$_src_validation_hard_fail_hardfaildetector", "label": "HardFailDetector", "file_type": "code", "source_file": "src/validation/hard_fail.py", "source_location": "L16", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_src_validation_hard_fail_hardfaildetector_detect", "label": ".detect()", "file_type": "code", "source_file": "src/validation/hard_fail.py", "source_location": "L24", "_callable": true}, {"id": "itineraryplan", "label": "ItineraryPlan", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/src/validation/hard_fail.py"}, {"id": "poi", "label": "POI", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/src/validation/hard_fail.py"}, {"id": "hardfail", "label": "HardFail", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/src/validation/hard_fail.py"}, {"id": "$graphify-root$_src_validation_hard_fail_hardfaildetector_check_operating_hours", "label": "._check_operating_hours()", "file_type": "code", "source_file": "src/validation/hard_fail.py", "source_location": "L48", "_callable": true}, {"id": "$graphify-root$_src_validation_hard_fail_hardfaildetector_check_travel_impossible", "label": "._check_travel_impossible()", "file_type": "code", "source_file": "src/validation/hard_fail.py", "source_location": "L110", "_callable": true}, {"id": "$graphify-root$_src_validation_hard_fail_hardfaildetector_check_schedule_infeasible", "label": "._check_schedule_infeasible()", "file_type": "code", "source_file": "src/validation/hard_fail.py", "source_location": "L157", "_callable": true}, {"id": "$graphify-root$_src_validation_hard_fail_hardfaildetector_time_to_min", "label": "._time_to_min()", "file_type": "code", "source_file": "src/validation/hard_fail.py", "source_location": "L188", "_callable": true}, {"id": "$graphify-root$_src_validation_hard_fail_hardfaildetector_min_to_time", "label": "._min_to_time()", "file_type": "code", "source_file": "src/validation/hard_fail.py", "source_location": "L193", "_callable": true}, {"id": "$graphify-root$_src_validation_hard_fail_rationale_1", "label": "Hard Fail \ud0d0\uc9c0\uae30 (\uc6b4\uc601\uc2dc\uac04 \ucda9\ub3cc\u00b7\uc774\ub3d9 \ubd88\uac00\u00b7\uc77c\uc815 \uc2dc\uac04 \ucd08\uacfc).", "file_type": "rationale", "source_file": "src/validation/hard_fail.py", "source_location": "L1"}, {"id": "$graphify-root$_src_validation_hard_fail_rationale_17", "label": "\uc5ec\ud589 \uc77c\uc815\uc758 Hard Fail \uc870\uac74\uc744 \ud0d0\uc9c0\ud55c\ub2e4. External I/O \uc5c6\uc74c. matrix: dict[int, dict[int, dict]]\u2026", "file_type": "rationale", "source_file": "src/validation/hard_fail.py", "source_location": "L17"}, {"id": "$graphify-root$_src_validation_hard_fail_rationale_33", "label": "Hard Fail \ubaa9\ub85d \ubc18\ud658. \uc5c6\uc73c\uba74 \ube48 \ub9ac\uc2a4\ud2b8.", "file_type": "rationale", "source_file": "src/validation/hard_fail.py", "source_location": "L33"}, {"id": "$graphify-root$_src_validation_hard_fail_rationale_56", "label": "\uac01 POI \ub3c4\ucc29 \uc608\uc0c1 \uc2dc\uac04\uc774 \uc6b4\uc601\uc2dc\uac04 \ubc16\uc774\uba74 Hard Fail.", "file_type": "rationale", "source_file": "src/validation/hard_fail.py", "source_location": "L56"}, {"id": "$graphify-root$_src_validation_hard_fail_rationale_118", "label": "\uc774\ub3d9\uc2dc\uac04\uc774 \uc774\uc6a9 \uac00\ub2a5\ud55c \uc2dc\uac04 \ucc3d\uc744 \ucd08\uacfc\ud558\uba74 Hard Fail.", "file_type": "rationale", "source_file": "src/validation/hard_fail.py", "source_location": "L118"}, {"id": "$graphify-root$_src_validation_hard_fail_rationale_164", "label": "\uc2e4\uc81c POI \ub4e4\uc758 \ucd1d \uccb4\ub958+\uc774\ub3d9 \uc2dc\uac04\uc774 24\uc2dc\uac04 \ucd08\uacfc \uc2dc Hard Fail.", "file_type": "rationale", "source_file": "src/validation/hard_fail.py", "source_location": "L164"}], "edges": [{"source": "$graphify-root$_src_validation_hard_fail_py", "target": "src_data_models", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "src/validation/hard_fail.py", "source_location": "L4", "weight": 1.0}, {"source": "$graphify-root$_src_validation_hard_fail_py", "target": "src_utils_geo", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "src/validation/hard_fail.py", "source_location": "L5", "weight": 1.0}, {"source": "$graphify-root$_src_validation_hard_fail_py", "target": "$graphify-root$_src_validation_hard_fail_hardfaildetector", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/validation/hard_fail.py", "source_location": "L16", "weight": 1.0}, {"source": "$graphify-root$_src_validation_hard_fail_hardfaildetector", "target": "$graphify-root$_src_validation_hard_fail_hardfaildetector_detect", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/validation/hard_fail.py", "source_location": "L24", "weight": 1.0}, {"source": "$graphify-root$_src_validation_hard_fail_hardfaildetector_detect", "target": "itineraryplan", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "src/validation/hard_fail.py", "source_location": "L24", "weight": 1.0}, {"source": "$graphify-root$_src_validation_hard_fail_hardfaildetector_detect", "target": "poi", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "src/validation/hard_fail.py", "source_location": "L24", "weight": 1.0}, {"source": "$graphify-root$_src_validation_hard_fail_hardfaildetector_detect", "target": "poi", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "src/validation/hard_fail.py", "source_location": "L24", "weight": 1.0}, {"source": "$graphify-root$_src_validation_hard_fail_hardfaildetector_detect", "target": "hardfail", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "src/validation/hard_fail.py", "source_location": "L24", "weight": 1.0}, {"source": "$graphify-root$_src_validation_hard_fail_hardfaildetector", "target": "$graphify-root$_src_validation_hard_fail_hardfaildetector_check_operating_hours", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/validation/hard_fail.py", "source_location": "L48", "weight": 1.0}, {"source": "$graphify-root$_src_validation_hard_fail_hardfaildetector_check_operating_hours", "target": "poi", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "src/validation/hard_fail.py", "source_location": "L48", "weight": 1.0}, {"source": "$graphify-root$_src_validation_hard_fail_hardfaildetector_check_operating_hours", "target": "hardfail", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "src/validation/hard_fail.py", "source_location": "L48", "weight": 1.0}, {"source": "$graphify-root$_src_validation_hard_fail_hardfaildetector", "target": "$graphify-root$_src_validation_hard_fail_hardfaildetector_check_travel_impossible", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/validation/hard_fail.py", "source_location": "L110", "weight": 1.0}, {"source": "$graphify-root$_src_validation_hard_fail_hardfaildetector_check_travel_impossible", "target": "poi", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "src/validation/hard_fail.py", "source_location": "L110", "weight": 1.0}, {"source": "$graphify-root$_src_validation_hard_fail_hardfaildetector_check_travel_impossible", "target": "hardfail", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "src/validation/hard_fail.py", "source_location": "L110", "weight": 1.0}, {"source": "$graphify-root$_src_validation_hard_fail_hardfaildetector", "target": "$graphify-root$_src_validation_hard_fail_hardfaildetector_check_schedule_infeasible", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/validation/hard_fail.py", "source_location": "L157", "weight": 1.0}, {"source": "$graphify-root$_src_validation_hard_fail_hardfaildetector_check_schedule_infeasible", "target": "poi", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "src/validation/hard_fail.py", "source_location": "L157", "weight": 1.0}, {"source": "$graphify-root$_src_validation_hard_fail_hardfaildetector_check_schedule_infeasible", "target": "hardfail", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "src/validation/hard_fail.py", "source_location": "L157", "weight": 1.0}, {"source": "$graphify-root$_src_validation_hard_fail_hardfaildetector", "target": "$graphify-root$_src_validation_hard_fail_hardfaildetector_time_to_min", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/validation/hard_fail.py", "source_location": "L188", "weight": 1.0}, {"source": "$graphify-root$_src_validation_hard_fail_hardfaildetector", "target": "$graphify-root$_src_validation_hard_fail_hardfaildetector_min_to_time", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/validation/hard_fail.py", "source_location": "L193", "weight": 1.0}, {"source": "$graphify-root$_src_validation_hard_fail_hardfaildetector_detect", "target": "$graphify-root$_src_validation_hard_fail_hardfaildetector_check_operating_hours", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/validation/hard_fail.py", "source_location": "L40", "weight": 1.0}, {"source": "$graphify-root$_src_validation_hard_fail_hardfaildetector_detect", "target": "$graphify-root$_src_validation_hard_fail_hardfaildetector_check_travel_impossible", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/validation/hard_fail.py", "source_location": "L41", "weight": 1.0}, {"source": "$graphify-root$_src_validation_hard_fail_hardfaildetector_detect", "target": "$graphify-root$_src_validation_hard_fail_hardfaildetector_check_schedule_infeasible", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/validation/hard_fail.py", "source_location": "L42", "weight": 1.0}, {"source": "$graphify-root$_src_validation_hard_fail_hardfaildetector_check_operating_hours", "target": "$graphify-root$_src_validation_hard_fail_hardfaildetector_time_to_min", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/validation/hard_fail.py", "source_location": "L66", "weight": 1.0}, {"source": "$graphify-root$_src_validation_hard_fail_hardfaildetector_check_operating_hours", "target": "hardfail", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/validation/hard_fail.py", "source_location": "L81", "weight": 1.0}, {"source": "$graphify-root$_src_validation_hard_fail_hardfaildetector_check_operating_hours", "target": "$graphify-root$_src_validation_hard_fail_hardfaildetector_min_to_time", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/validation/hard_fail.py", "source_location": "L84", "weight": 1.0}, {"source": "$graphify-root$_src_validation_hard_fail_hardfaildetector_check_travel_impossible", "target": "$graphify-root$_src_validation_hard_fail_hardfaildetector_time_to_min", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/validation/hard_fail.py", "source_location": "L123", "weight": 1.0}, {"source": "$graphify-root$_src_validation_hard_fail_hardfaildetector_check_travel_impossible", "target": "hardfail", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/validation/hard_fail.py", "source_location": "L137", "weight": 1.0}, {"source": "$graphify-root$_src_validation_hard_fail_hardfaildetector_check_travel_impossible", "target": "$graphify-root$_src_validation_hard_fail_hardfaildetector_min_to_time", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/validation/hard_fail.py", "source_location": "L145", "weight": 1.0}, {"source": "$graphify-root$_src_validation_hard_fail_hardfaildetector_check_schedule_infeasible", "target": "hardfail", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/validation/hard_fail.py", "source_location": "L173", "weight": 1.0}, {"source": "$graphify-root$_src_validation_hard_fail_rationale_1", "target": "$graphify-root$_src_validation_hard_fail_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/validation/hard_fail.py", "source_location": "L1", "weight": 1.0}, {"source": "$graphify-root$_src_validation_hard_fail_rationale_17", "target": "$graphify-root$_src_validation_hard_fail_hardfaildetector", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/validation/hard_fail.py", "source_location": "L17", "weight": 1.0}, {"source": "$graphify-root$_src_validation_hard_fail_rationale_33", "target": "$graphify-root$_src_validation_hard_fail_hardfaildetector_detect", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/validation/hard_fail.py", "source_location": "L33", "weight": 1.0}, {"source": "$graphify-root$_src_validation_hard_fail_rationale_56", "target": "$graphify-root$_src_validation_hard_fail_hardfaildetector_check_operating_hours", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/validation/hard_fail.py", "source_location": "L56", "weight": 1.0}, {"source": "$graphify-root$_src_validation_hard_fail_rationale_118", "target": "$graphify-root$_src_validation_hard_fail_hardfaildetector_check_travel_impossible", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/validation/hard_fail.py", "source_location": "L118", "weight": 1.0}, {"source": "$graphify-root$_src_validation_hard_fail_rationale_164", "target": "$graphify-root$_src_validation_hard_fail_hardfaildetector_check_schedule_infeasible", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/validation/hard_fail.py", "source_location": "L164", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_src_validation_hard_fail_hardfaildetector_detect", "callee": "build_dist_cache", "is_member_call": false, "source_file": "src/validation/hard_fail.py", "source_location": "L38", "receiver": null}, {"caller_nid": "$graphify-root$_src_validation_hard_fail_hardfaildetector_detect", "callee": "extend", "is_member_call": true, "source_file": "src/validation/hard_fail.py", "source_location": "L40", "receiver": "fails"}, {"caller_nid": "$graphify-root$_src_validation_hard_fail_hardfaildetector_detect", "callee": "extend", "is_member_call": true, "source_file": "src/validation/hard_fail.py", "source_location": "L41", "receiver": "fails"}, {"caller_nid": "$graphify-root$_src_validation_hard_fail_hardfaildetector_detect", "callee": "extend", "is_member_call": true, "source_file": "src/validation/hard_fail.py", "source_location": "L42", "receiver": "fails"}, {"caller_nid": "$graphify-root$_src_validation_hard_fail_hardfaildetector_check_operating_hours", "callee": "get_travel_min", "is_member_call": false, "source_file": "src/validation/hard_fail.py", "source_location": "L73", "receiver": null}, {"caller_nid": "$graphify-root$_src_validation_hard_fail_hardfaildetector_check_operating_hours", "callee": "hours_estimated", "is_member_call": false, "indirect": true, "context": "getattr", "source_file": "src/validation/hard_fail.py", "source_location": "L78"}, {"caller_nid": "$graphify-root$_src_validation_hard_fail_hardfaildetector_check_operating_hours", "callee": "append", "is_member_call": true, "source_file": "src/validation/hard_fail.py", "source_location": "L81", "receiver": "fails"}, {"caller_nid": "$graphify-root$_src_validation_hard_fail_hardfaildetector_check_operating_hours", "callee": "append", "is_member_call": true, "source_file": "src/validation/hard_fail.py", "source_location": "L93", "receiver": "fails"}, {"caller_nid": "$graphify-root$_src_validation_hard_fail_hardfaildetector_check_travel_impossible", "callee": "get_travel_min", "is_member_call": false, "source_file": "src/validation/hard_fail.py", "source_location": "L131", "receiver": null}, {"caller_nid": "$graphify-root$_src_validation_hard_fail_hardfaildetector_check_travel_impossible", "callee": "append", "is_member_call": true, "source_file": "src/validation/hard_fail.py", "source_location": "L137", "receiver": "fails"}, {"caller_nid": "$graphify-root$_src_validation_hard_fail_hardfaildetector_check_schedule_infeasible", "callee": "get_travel_min", "is_member_call": false, "source_file": "src/validation/hard_fail.py", "source_location": "L169", "receiver": null}, {"caller_nid": "$graphify-root$_src_validation_hard_fail_hardfaildetector_time_to_min", "callee": "int", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "src/validation/hard_fail.py", "source_location": "L189"}, {"caller_nid": "$graphify-root$_src_validation_hard_fail_hardfaildetector_time_to_min", "callee": "split", "is_member_call": true, "source_file": "src/validation/hard_fail.py", "source_location": "L189", "receiver": "hhmm"}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.31/8bd45a30f857e7c8af8cfca512444e80df8ef9bdfd961b6a9769a622895022dc.json b/graphify-out/cache/ast/v0.9.31/8bd45a30f857e7c8af8cfca512444e80df8ef9bdfd961b6a9769a622895022dc.json new file mode 100644 index 0000000..75a0680 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.31/8bd45a30f857e7c8af8cfca512444e80df8ef9bdfd961b6a9769a622895022dc.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_tests_test_resolve_poi_py", "label": "test_resolve_poi.py", "file_type": "code", "source_file": "tests/test_resolve_poi.py", "source_location": "L1"}, {"id": "$graphify-root$_tests_test_resolve_poi_write_jeju_xlsx", "label": "_write_jeju_xlsx()", "file_type": "code", "source_file": "tests/test_resolve_poi.py", "source_location": "L19", "_callable": true}, {"id": "fixture", "label": "fixture", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/tests/test_resolve_poi.py"}, {"id": "$graphify-root$_tests_test_resolve_poi_jeju_xlsx_index", "label": "jeju_xlsx_index()", "file_type": "code", "source_file": "tests/test_resolve_poi.py", "source_location": "L29", "_callable": true}, {"id": "$graphify-root$_tests_test_resolve_poi_test_jeju_index_prefers_tourapi_hours_over_legacy_text", "label": "test_jeju_index_prefers_tourapi_hours_over_legacy_text()", "file_type": "code", "source_file": "tests/test_resolve_poi.py", "source_location": "L51", "_callable": true}, {"id": "$graphify-root$_tests_test_resolve_poi_test_jeju_index_sets_contentid_when_tourapi_matched", "label": "test_jeju_index_sets_contentid_when_tourapi_matched()", "file_type": "code", "source_file": "tests/test_resolve_poi.py", "source_location": "L56", "_callable": true}, {"id": "$graphify-root$_tests_test_resolve_poi_test_jeju_index_falls_back_to_legacy_hours_when_unmatched", "label": "test_jeju_index_falls_back_to_legacy_hours_when_unmatched()", "file_type": "code", "source_file": "tests/test_resolve_poi.py", "source_location": "L61", "_callable": true}, {"id": "$graphify-root$_tests_test_resolve_poi_test_jeju_index_sets_pet_friendly_flag_when_y", "label": "test_jeju_index_sets_pet_friendly_flag_when_y()", "file_type": "code", "source_file": "tests/test_resolve_poi.py", "source_location": "L67", "_callable": true}, {"id": "$graphify-root$_tests_test_resolve_poi_test_jeju_index_defaults_pet_friendly_false_when_blank", "label": "test_jeju_index_defaults_pet_friendly_false_when_blank()", "file_type": "code", "source_file": "tests/test_resolve_poi.py", "source_location": "L72", "_callable": true}, {"id": "$graphify-root$_tests_test_resolve_poi_test_resolve_poi_propagates_pet_friendly_flag", "label": "test_resolve_poi_propagates_pet_friendly_flag()", "file_type": "code", "source_file": "tests/test_resolve_poi.py", "source_location": "L77", "_callable": true}, {"id": "$graphify-root$_tests_test_resolve_poi_test_geocode_fallback_used_when_keyword_search_fails", "label": "test_geocode_fallback_used_when_keyword_search_fails()", "file_type": "code", "source_file": "tests/test_resolve_poi.py", "source_location": "L94", "_callable": true}, {"id": "$graphify-root$_tests_test_resolve_poi_test_seoul_fallback_when_geocode_also_fails", "label": "test_seoul_fallback_when_geocode_also_fails()", "file_type": "code", "source_file": "tests/test_resolve_poi.py", "source_location": "L110", "_callable": true}, {"id": "$graphify-root$_tests_test_resolve_poi_test_resolve_coords_endpoint_returns_poi_per_place", "label": "test_resolve_coords_endpoint_returns_poi_per_place()", "file_type": "code", "source_file": "tests/test_resolve_poi.py", "source_location": "L123", "_callable": true}, {"id": "$graphify-root$_tests_test_resolve_poi_rationale_1", "label": "_resolve_poi() \uc88c\ud45c \ud574\uc11d \ud3f4\ubc31 \uc21c\uc11c \ud14c\uc2a4\ud2b8 (\uce74\ud0c8\ub85c\uadf8 \u2192 csv \u2192 kakao \ud0a4\uc6cc\ub4dc \u2192 \uc9c0\uc624\ucf54\ub529 \u2192 \uc11c\uc6b8 \ud3f4\ubc31).", "file_type": "rationale", "source_file": "tests/test_resolve_poi.py", "source_location": "L1"}, {"id": "$graphify-root$_tests_test_resolve_poi_rationale_30", "label": "data/\uc81c\uc8fc\ud2b9\ubcc4\uc790\uce58\ub3c4_\ud1b5\ud569_TourAPI\ubcd1\ud569.xlsx \ub97c \uc784\uc2dc \ud30c\uc77c\ub85c \ub300\uccb4\ud574 _build_jeju_place_index()\ub97c \uaca9\ub9ac \uc2e4\ud589.", "file_type": "rationale", "source_file": "tests/test_resolve_poi.py", "source_location": "L30"}, {"id": "$graphify-root$_tests_test_resolve_poi_rationale_78", "label": "_resolve_poi()\uac00 place dict\uc758 pet_friendly \uc18d\uc131\uc744 POI\u00b7POIInfo\ub85c \uc804\ub2ec\ud55c\ub2e4.", "file_type": "rationale", "source_file": "tests/test_resolve_poi.py", "source_location": "L78"}, {"id": "$graphify-root$_tests_test_resolve_poi_rationale_95", "label": "\uce74\uce74\uc624 \ud0a4\uc6cc\ub4dc \uac80\uc0c9\uc774 \uc2e4\ud328\ud574\ub3c4 \uc8fc\uc18c\uac00 \uc788\uc73c\uba74 \uc9c0\uc624\ucf54\ub529\uc73c\ub85c \uc88c\ud45c\ub97c \ubcf4\uac15\ud55c\ub2e4.", "file_type": "rationale", "source_file": "tests/test_resolve_poi.py", "source_location": "L95"}, {"id": "$graphify-root$_tests_test_resolve_poi_rationale_111", "label": "\uc9c0\uc624\ucf54\ub529\uae4c\uc9c0 \uc2e4\ud328\ud558\uba74 \uae30\uc874\uacfc \ub3d9\uc77c\ud558\uac8c \uc11c\uc6b8 \ud3f4\ubc31\uc73c\ub85c \ub5a8\uc5b4\uc9c4\ub2e4.", "file_type": "rationale", "source_file": "tests/test_resolve_poi.py", "source_location": "L111"}, {"id": "$graphify-root$_tests_test_resolve_poi_rationale_124", "label": "POST /api/resolve-coords \u2014 Step2 \ube4c\ub354 \uc9c0\ub3c4\uc6a9 \uc88c\ud45c \uc870\ud68c (\uac80\uc99d \ud30c\uc774\ud504\ub77c\uc778 \uc5c6\uc774 \uc88c\ud45c\ub9cc).", "file_type": "rationale", "source_file": "tests/test_resolve_poi.py", "source_location": "L124"}], "edges": [{"source": "$graphify-root$_tests_test_resolve_poi_py", "target": "unittest_mock", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_resolve_poi.py", "source_location": "L4", "weight": 1.0}, {"source": "$graphify-root$_tests_test_resolve_poi_py", "target": "openpyxl", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_resolve_poi.py", "source_location": "L6", "weight": 1.0}, {"source": "$graphify-root$_tests_test_resolve_poi_py", "target": "pytest", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_resolve_poi.py", "source_location": "L7", "weight": 1.0}, {"source": "$graphify-root$_tests_test_resolve_poi_py", "target": "fastapi_testclient", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_resolve_poi.py", "source_location": "L8", "weight": 1.0}, {"source": "$graphify-root$_tests_test_resolve_poi_py", "target": "src_api", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_resolve_poi.py", "source_location": "L10", "weight": 1.0}, {"source": "$graphify-root$_tests_test_resolve_poi_py", "target": "src_api_main", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_resolve_poi.py", "source_location": "L11", "weight": 1.0}, {"source": "$graphify-root$_tests_test_resolve_poi_py", "target": "$graphify-root$_tests_test_resolve_poi_write_jeju_xlsx", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_resolve_poi.py", "source_location": "L19", "weight": 1.0}, {"source": "$graphify-root$_tests_test_resolve_poi_jeju_xlsx_index", "target": "fixture", "relation": "references", "confidence": "EXTRACTED", "source_file": "tests/test_resolve_poi.py", "source_location": "L28", "weight": 1.0, "context": "decorator"}, {"source": "$graphify-root$_tests_test_resolve_poi_py", "target": "$graphify-root$_tests_test_resolve_poi_jeju_xlsx_index", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_resolve_poi.py", "source_location": "L29", "weight": 1.0}, {"source": "$graphify-root$_tests_test_resolve_poi_py", "target": "$graphify-root$_tests_test_resolve_poi_test_jeju_index_prefers_tourapi_hours_over_legacy_text", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_resolve_poi.py", "source_location": "L51", "weight": 1.0}, {"source": "$graphify-root$_tests_test_resolve_poi_py", "target": "$graphify-root$_tests_test_resolve_poi_test_jeju_index_sets_contentid_when_tourapi_matched", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_resolve_poi.py", "source_location": "L56", "weight": 1.0}, {"source": "$graphify-root$_tests_test_resolve_poi_py", "target": "$graphify-root$_tests_test_resolve_poi_test_jeju_index_falls_back_to_legacy_hours_when_unmatched", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_resolve_poi.py", "source_location": "L61", "weight": 1.0}, {"source": "$graphify-root$_tests_test_resolve_poi_py", "target": "$graphify-root$_tests_test_resolve_poi_test_jeju_index_sets_pet_friendly_flag_when_y", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_resolve_poi.py", "source_location": "L67", "weight": 1.0}, {"source": "$graphify-root$_tests_test_resolve_poi_py", "target": "$graphify-root$_tests_test_resolve_poi_test_jeju_index_defaults_pet_friendly_false_when_blank", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_resolve_poi.py", "source_location": "L72", "weight": 1.0}, {"source": "$graphify-root$_tests_test_resolve_poi_py", "target": "$graphify-root$_tests_test_resolve_poi_test_resolve_poi_propagates_pet_friendly_flag", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_resolve_poi.py", "source_location": "L77", "weight": 1.0}, {"source": "$graphify-root$_tests_test_resolve_poi_py", "target": "$graphify-root$_tests_test_resolve_poi_test_geocode_fallback_used_when_keyword_search_fails", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_resolve_poi.py", "source_location": "L94", "weight": 1.0}, {"source": "$graphify-root$_tests_test_resolve_poi_py", "target": "$graphify-root$_tests_test_resolve_poi_test_seoul_fallback_when_geocode_also_fails", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_resolve_poi.py", "source_location": "L110", "weight": 1.0}, {"source": "$graphify-root$_tests_test_resolve_poi_py", "target": "$graphify-root$_tests_test_resolve_poi_test_resolve_coords_endpoint_returns_poi_per_place", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_resolve_poi.py", "source_location": "L123", "weight": 1.0}, {"source": "$graphify-root$_tests_test_resolve_poi_jeju_xlsx_index", "target": "$graphify-root$_tests_test_resolve_poi_write_jeju_xlsx", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_resolve_poi.py", "source_location": "L31", "weight": 1.0}, {"source": "$graphify-root$_tests_test_resolve_poi_rationale_1", "target": "$graphify-root$_tests_test_resolve_poi_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_resolve_poi.py", "source_location": "L1", "weight": 1.0}, {"source": "$graphify-root$_tests_test_resolve_poi_rationale_30", "target": "$graphify-root$_tests_test_resolve_poi_jeju_xlsx_index", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_resolve_poi.py", "source_location": "L30", "weight": 1.0}, {"source": "$graphify-root$_tests_test_resolve_poi_rationale_78", "target": "$graphify-root$_tests_test_resolve_poi_test_resolve_poi_propagates_pet_friendly_flag", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_resolve_poi.py", "source_location": "L78", "weight": 1.0}, {"source": "$graphify-root$_tests_test_resolve_poi_rationale_95", "target": "$graphify-root$_tests_test_resolve_poi_test_geocode_fallback_used_when_keyword_search_fails", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_resolve_poi.py", "source_location": "L95", "weight": 1.0}, {"source": "$graphify-root$_tests_test_resolve_poi_rationale_111", "target": "$graphify-root$_tests_test_resolve_poi_test_seoul_fallback_when_geocode_also_fails", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_resolve_poi.py", "source_location": "L111", "weight": 1.0}, {"source": "$graphify-root$_tests_test_resolve_poi_rationale_124", "target": "$graphify-root$_tests_test_resolve_poi_test_resolve_coords_endpoint_returns_poi_per_place", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_resolve_poi.py", "source_location": "L124", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_tests_test_resolve_poi_write_jeju_xlsx", "callee": "Workbook", "is_member_call": true, "source_file": "tests/test_resolve_poi.py", "source_location": "L20", "receiver": "openpyxl"}, {"caller_nid": "$graphify-root$_tests_test_resolve_poi_write_jeju_xlsx", "callee": "append", "is_member_call": true, "source_file": "tests/test_resolve_poi.py", "source_location": "L22", "receiver": "ws"}, {"caller_nid": "$graphify-root$_tests_test_resolve_poi_write_jeju_xlsx", "callee": "_XLSX_HEADER", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_resolve_poi.py", "source_location": "L22"}, {"caller_nid": "$graphify-root$_tests_test_resolve_poi_write_jeju_xlsx", "callee": "append", "is_member_call": true, "source_file": "tests/test_resolve_poi.py", "source_location": "L24", "receiver": "ws"}, {"caller_nid": "$graphify-root$_tests_test_resolve_poi_write_jeju_xlsx", "callee": "get", "is_member_call": true, "source_file": "tests/test_resolve_poi.py", "source_location": "L24", "receiver": "row"}, {"caller_nid": "$graphify-root$_tests_test_resolve_poi_write_jeju_xlsx", "callee": "save", "is_member_call": true, "source_file": "tests/test_resolve_poi.py", "source_location": "L25", "receiver": "wb"}, {"caller_nid": "$graphify-root$_tests_test_resolve_poi_jeju_xlsx_index", "callee": "router", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_resolve_poi.py", "source_location": "L47"}, {"caller_nid": "$graphify-root$_tests_test_resolve_poi_jeju_xlsx_index", "callee": "_build_jeju_place_index", "is_member_call": true, "source_file": "tests/test_resolve_poi.py", "source_location": "L48", "receiver": "router"}, {"caller_nid": "$graphify-root$_tests_test_resolve_poi_test_jeju_index_prefers_tourapi_hours_over_legacy_text", "callee": "_normalize", "is_member_call": true, "source_file": "tests/test_resolve_poi.py", "source_location": "L52", "receiver": "router"}, {"caller_nid": "$graphify-root$_tests_test_resolve_poi_test_jeju_index_sets_contentid_when_tourapi_matched", "callee": "_normalize", "is_member_call": true, "source_file": "tests/test_resolve_poi.py", "source_location": "L57", "receiver": "router"}, {"caller_nid": "$graphify-root$_tests_test_resolve_poi_test_jeju_index_falls_back_to_legacy_hours_when_unmatched", "callee": "_normalize", "is_member_call": true, "source_file": "tests/test_resolve_poi.py", "source_location": "L62", "receiver": "router"}, {"caller_nid": "$graphify-root$_tests_test_resolve_poi_test_jeju_index_sets_pet_friendly_flag_when_y", "callee": "_normalize", "is_member_call": true, "source_file": "tests/test_resolve_poi.py", "source_location": "L68", "receiver": "router"}, {"caller_nid": "$graphify-root$_tests_test_resolve_poi_test_jeju_index_defaults_pet_friendly_false_when_blank", "callee": "_normalize", "is_member_call": true, "source_file": "tests/test_resolve_poi.py", "source_location": "L73", "receiver": "router"}, {"caller_nid": "$graphify-root$_tests_test_resolve_poi_test_jeju_index_defaults_pet_friendly_false_when_blank", "callee": "get", "is_member_call": true, "source_file": "tests/test_resolve_poi.py", "source_location": "L74", "receiver": "entry"}, {"caller_nid": "$graphify-root$_tests_test_resolve_poi_test_resolve_poi_propagates_pet_friendly_flag", "callee": "setitem", "is_member_call": true, "source_file": "tests/test_resolve_poi.py", "source_location": "L79", "receiver": "monkeypatch"}, {"caller_nid": "$graphify-root$_tests_test_resolve_poi_test_resolve_poi_propagates_pet_friendly_flag", "callee": "_normalize", "is_member_call": true, "source_file": "tests/test_resolve_poi.py", "source_location": "L81", "receiver": "router"}, {"caller_nid": "$graphify-root$_tests_test_resolve_poi_test_resolve_poi_propagates_pet_friendly_flag", "callee": "_resolve_poi", "is_member_call": true, "source_file": "tests/test_resolve_poi.py", "source_location": "L89", "receiver": "router"}, {"caller_nid": "$graphify-root$_tests_test_resolve_poi_test_geocode_fallback_used_when_keyword_search_fails", "callee": "object", "is_member_call": true, "source_file": "tests/test_resolve_poi.py", "source_location": "L97", "receiver": "patch"}, {"caller_nid": "$graphify-root$_tests_test_resolve_poi_test_geocode_fallback_used_when_keyword_search_fails", "callee": "object", "is_member_call": true, "source_file": "tests/test_resolve_poi.py", "source_location": "L98", "receiver": "patch"}, {"caller_nid": "$graphify-root$_tests_test_resolve_poi_test_geocode_fallback_used_when_keyword_search_fails", "callee": "_resolve_poi", "is_member_call": true, "source_file": "tests/test_resolve_poi.py", "source_location": "L100", "receiver": "router"}, {"caller_nid": "$graphify-root$_tests_test_resolve_poi_test_seoul_fallback_when_geocode_also_fails", "callee": "object", "is_member_call": true, "source_file": "tests/test_resolve_poi.py", "source_location": "L113", "receiver": "patch"}, {"caller_nid": "$graphify-root$_tests_test_resolve_poi_test_seoul_fallback_when_geocode_also_fails", "callee": "object", "is_member_call": true, "source_file": "tests/test_resolve_poi.py", "source_location": "L114", "receiver": "patch"}, {"caller_nid": "$graphify-root$_tests_test_resolve_poi_test_seoul_fallback_when_geocode_also_fails", "callee": "_resolve_poi", "is_member_call": true, "source_file": "tests/test_resolve_poi.py", "source_location": "L116", "receiver": "router"}, {"caller_nid": "$graphify-root$_tests_test_resolve_poi_test_resolve_coords_endpoint_returns_poi_per_place", "callee": "TestClient", "is_member_call": false, "source_file": "tests/test_resolve_poi.py", "source_location": "L125", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_resolve_poi_test_resolve_coords_endpoint_returns_poi_per_place", "callee": "app", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_resolve_poi.py", "source_location": "L125"}, {"caller_nid": "$graphify-root$_tests_test_resolve_poi_test_resolve_coords_endpoint_returns_poi_per_place", "callee": "object", "is_member_call": true, "source_file": "tests/test_resolve_poi.py", "source_location": "L127", "receiver": "patch"}, {"caller_nid": "$graphify-root$_tests_test_resolve_poi_test_resolve_coords_endpoint_returns_poi_per_place", "callee": "object", "is_member_call": true, "source_file": "tests/test_resolve_poi.py", "source_location": "L128", "receiver": "patch"}, {"caller_nid": "$graphify-root$_tests_test_resolve_poi_test_resolve_coords_endpoint_returns_poi_per_place", "callee": "post", "is_member_call": true, "source_file": "tests/test_resolve_poi.py", "source_location": "L130", "receiver": "client"}, {"caller_nid": "$graphify-root$_tests_test_resolve_poi_test_resolve_coords_endpoint_returns_poi_per_place", "callee": "json", "is_member_call": true, "source_file": "tests/test_resolve_poi.py", "source_location": "L136", "receiver": "res"}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.31/8c0bf46d9ea062ee35d3676e1e9130054bdf1a47a46b44385e691c603e8f1954.json b/graphify-out/cache/ast/v0.9.31/8c0bf46d9ea062ee35d3676e1e9130054bdf1a47a46b44385e691c603e8f1954.json new file mode 100644 index 0000000..faf1954 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.31/8c0bf46d9ea062ee35d3676e1e9130054bdf1a47a46b44385e691c603e8f1954.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_gun_scripts_build_hours_db_py", "label": "build_hours_db.py", "file_type": "code", "source_file": "gun/scripts/build_hours_db.py", "source_location": "L1"}, {"id": "$graphify-root$_gun_scripts_build_hours_db_match_sub_category", "label": "match_sub_category()", "file_type": "code", "source_file": "gun/scripts/build_hours_db.py", "source_location": "L403", "_callable": true}, {"id": "$graphify-root$_gun_scripts_build_hours_db_confidence", "label": "confidence()", "file_type": "code", "source_file": "gun/scripts/build_hours_db.py", "source_location": "L428", "_callable": true}, {"id": "$graphify-root$_gun_scripts_build_hours_db_build_place_hours_xlsx", "label": "build_place_hours_xlsx()", "file_type": "code", "source_file": "gun/scripts/build_hours_db.py", "source_location": "L442", "_callable": true}, {"id": "counter", "label": "Counter", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/gun/scripts/build_hours_db.py"}, {"id": "$graphify-root$_gun_scripts_build_hours_db_build_category_std_xlsx", "label": "build_category_std_xlsx()", "file_type": "code", "source_file": "gun/scripts/build_hours_db.py", "source_location": "L543", "_callable": true}, {"id": "$graphify-root$_gun_scripts_build_hours_db_build_hours_db_py", "label": "build_hours_db_py()", "file_type": "code", "source_file": "gun/scripts/build_hours_db.py", "source_location": "L605", "_callable": true}, {"id": "$graphify-root$_gun_scripts_build_hours_db_main", "label": "main()", "file_type": "code", "source_file": "gun/scripts/build_hours_db.py", "source_location": "L700", "_callable": true}, {"id": "$graphify-root$_gun_scripts_build_hours_db_rationale_1", "label": "322\uac1c \uc7a5\uc18c \uc6b4\uc601\uc2dc\uac04 baseline + \uce74\ud14c\uace0\ub9ac \ud45c\uc900\uac12 \uc138\ud305. \uc0b0\ucd9c\ubb3c: 1. gun/data/place_hours_322.xlsx \u2014\u2026", "file_type": "rationale", "source_file": "gun/scripts/build_hours_db.py", "source_location": "L1"}, {"id": "$graphify-root$_gun_scripts_build_hours_db_rationale_404", "label": "\uc774\ub984 + \uce74\ud14c\uace0\ub9ac\ud78c\ud2b8\ub85c sub_category \uacb0\uc815.", "file_type": "rationale", "source_file": "gun/scripts/build_hours_db.py", "source_location": "L404"}, {"id": "$graphify-root$_gun_scripts_build_hours_db_rationale_429", "label": "\ub9e4\uce6d \ud655\uc2e0\ub3c4 \u2014 \ud6c4\uc18d \uac80\uc0c9 \uc6b0\uc120\uc21c\uc704 \uacb0\uc815.", "file_type": "rationale", "source_file": "gun/scripts/build_hours_db.py", "source_location": "L429"}], "edges": [{"source": "$graphify-root$_gun_scripts_build_hours_db_py", "target": "re", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "gun/scripts/build_hours_db.py", "source_location": "L17", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_build_hours_db_py", "target": "pathlib", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "gun/scripts/build_hours_db.py", "source_location": "L18", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_build_hours_db_py", "target": "collections", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "gun/scripts/build_hours_db.py", "source_location": "L19", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_build_hours_db_py", "target": "openpyxl", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "gun/scripts/build_hours_db.py", "source_location": "L21", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_build_hours_db_py", "target": "openpyxl_styles", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "gun/scripts/build_hours_db.py", "source_location": "L22", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_build_hours_db_py", "target": "openpyxl_utils", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "gun/scripts/build_hours_db.py", "source_location": "L23", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_build_hours_db_py", "target": "$graphify-root$_gun_scripts_build_hours_db_match_sub_category", "relation": "contains", "confidence": "EXTRACTED", "source_file": "gun/scripts/build_hours_db.py", "source_location": "L403", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_build_hours_db_py", "target": "$graphify-root$_gun_scripts_build_hours_db_confidence", "relation": "contains", "confidence": "EXTRACTED", "source_file": "gun/scripts/build_hours_db.py", "source_location": "L428", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_build_hours_db_py", "target": "$graphify-root$_gun_scripts_build_hours_db_build_place_hours_xlsx", "relation": "contains", "confidence": "EXTRACTED", "source_file": "gun/scripts/build_hours_db.py", "source_location": "L442", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_build_hours_db_build_place_hours_xlsx", "target": "counter", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "gun/scripts/build_hours_db.py", "source_location": "L442", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_build_hours_db_py", "target": "$graphify-root$_gun_scripts_build_hours_db_build_category_std_xlsx", "relation": "contains", "confidence": "EXTRACTED", "source_file": "gun/scripts/build_hours_db.py", "source_location": "L543", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_build_hours_db_build_category_std_xlsx", "target": "counter", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "gun/scripts/build_hours_db.py", "source_location": "L543", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_build_hours_db_py", "target": "$graphify-root$_gun_scripts_build_hours_db_build_hours_db_py", "relation": "contains", "confidence": "EXTRACTED", "source_file": "gun/scripts/build_hours_db.py", "source_location": "L605", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_build_hours_db_py", "target": "$graphify-root$_gun_scripts_build_hours_db_main", "relation": "contains", "confidence": "EXTRACTED", "source_file": "gun/scripts/build_hours_db.py", "source_location": "L700", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_build_hours_db_build_place_hours_xlsx", "target": "counter", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "gun/scripts/build_hours_db.py", "source_location": "L456", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_build_hours_db_build_place_hours_xlsx", "target": "$graphify-root$_gun_scripts_build_hours_db_match_sub_category", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "gun/scripts/build_hours_db.py", "source_location": "L459", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_build_hours_db_build_place_hours_xlsx", "target": "$graphify-root$_gun_scripts_build_hours_db_confidence", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "gun/scripts/build_hours_db.py", "source_location": "L474", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_build_hours_db_main", "target": "$graphify-root$_gun_scripts_build_hours_db_build_place_hours_xlsx", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "gun/scripts/build_hours_db.py", "source_location": "L701", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_build_hours_db_main", "target": "$graphify-root$_gun_scripts_build_hours_db_build_category_std_xlsx", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "gun/scripts/build_hours_db.py", "source_location": "L702", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_build_hours_db_main", "target": "$graphify-root$_gun_scripts_build_hours_db_build_hours_db_py", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "gun/scripts/build_hours_db.py", "source_location": "L703", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_build_hours_db_rationale_1", "target": "$graphify-root$_gun_scripts_build_hours_db_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "gun/scripts/build_hours_db.py", "source_location": "L1", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_build_hours_db_rationale_404", "target": "$graphify-root$_gun_scripts_build_hours_db_match_sub_category", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "gun/scripts/build_hours_db.py", "source_location": "L404", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_build_hours_db_rationale_429", "target": "$graphify-root$_gun_scripts_build_hours_db_confidence", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "gun/scripts/build_hours_db.py", "source_location": "L429", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_gun_scripts_build_hours_db_match_sub_category", "callee": "replace", "is_member_call": true, "source_file": "gun/scripts/build_hours_db.py", "source_location": "L405", "receiver": null}, {"caller_nid": "$graphify-root$_gun_scripts_build_hours_db_match_sub_category", "callee": "search", "is_member_call": true, "source_file": "gun/scripts/build_hours_db.py", "source_location": "L407", "receiver": "re"}, {"caller_nid": "$graphify-root$_gun_scripts_build_hours_db_match_sub_category", "callee": "strip", "is_member_call": true, "source_file": "gun/scripts/build_hours_db.py", "source_location": "L411", "receiver": null}, {"caller_nid": "$graphify-root$_gun_scripts_build_hours_db_confidence", "callee": "replace", "is_member_call": true, "source_file": "gun/scripts/build_hours_db.py", "source_location": "L433", "receiver": null}, {"caller_nid": "$graphify-root$_gun_scripts_build_hours_db_build_place_hours_xlsx", "callee": "load_workbook", "is_member_call": false, "source_file": "gun/scripts/build_hours_db.py", "source_location": "L443", "receiver": null}, {"caller_nid": "$graphify-root$_gun_scripts_build_hours_db_build_place_hours_xlsx", "callee": "INPUT_XLSX", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "gun/scripts/build_hours_db.py", "source_location": "L443"}, {"caller_nid": "$graphify-root$_gun_scripts_build_hours_db_build_place_hours_xlsx", "callee": "iter_rows", "is_member_call": true, "source_file": "gun/scripts/build_hours_db.py", "source_location": "L448", "receiver": "ws_in"}, {"caller_nid": "$graphify-root$_gun_scripts_build_hours_db_build_place_hours_xlsx", "callee": "strip", "is_member_call": true, "source_file": "gun/scripts/build_hours_db.py", "source_location": "L452", "receiver": null}, {"caller_nid": "$graphify-root$_gun_scripts_build_hours_db_build_place_hours_xlsx", "callee": "get", "is_member_call": true, "source_file": "gun/scripts/build_hours_db.py", "source_location": "L452", "receiver": "rec"}, {"caller_nid": "$graphify-root$_gun_scripts_build_hours_db_build_place_hours_xlsx", "callee": "append", "is_member_call": true, "source_file": "gun/scripts/build_hours_db.py", "source_location": "L454", "receiver": "rows"}, {"caller_nid": "$graphify-root$_gun_scripts_build_hours_db_build_place_hours_xlsx", "callee": "get", "is_member_call": true, "source_file": "gun/scripts/build_hours_db.py", "source_location": "L459", "receiver": "rec"}, {"caller_nid": "$graphify-root$_gun_scripts_build_hours_db_build_place_hours_xlsx", "callee": "get", "is_member_call": true, "source_file": "gun/scripts/build_hours_db.py", "source_location": "L459", "receiver": "rec"}, {"caller_nid": "$graphify-root$_gun_scripts_build_hours_db_build_place_hours_xlsx", "callee": "join", "is_member_call": true, "source_file": "gun/scripts/build_hours_db.py", "source_location": "L463", "receiver": null}, {"caller_nid": "$graphify-root$_gun_scripts_build_hours_db_build_place_hours_xlsx", "callee": "append", "is_member_call": true, "source_file": "gun/scripts/build_hours_db.py", "source_location": "L465", "receiver": "enriched"}, {"caller_nid": "$graphify-root$_gun_scripts_build_hours_db_build_place_hours_xlsx", "callee": "get", "is_member_call": true, "source_file": "gun/scripts/build_hours_db.py", "source_location": "L474", "receiver": "rec"}, {"caller_nid": "$graphify-root$_gun_scripts_build_hours_db_build_place_hours_xlsx", "callee": "Workbook", "is_member_call": false, "source_file": "gun/scripts/build_hours_db.py", "source_location": "L480", "receiver": null}, {"caller_nid": "$graphify-root$_gun_scripts_build_hours_db_build_place_hours_xlsx", "callee": "PatternFill", "is_member_call": false, "source_file": "gun/scripts/build_hours_db.py", "source_location": "L503", "receiver": null}, {"caller_nid": "$graphify-root$_gun_scripts_build_hours_db_build_place_hours_xlsx", "callee": "Side", "is_member_call": false, "source_file": "gun/scripts/build_hours_db.py", "source_location": "L506", "receiver": null}, {"caller_nid": "$graphify-root$_gun_scripts_build_hours_db_build_place_hours_xlsx", "callee": "Border", "is_member_call": false, "source_file": "gun/scripts/build_hours_db.py", "source_location": "L507", "receiver": null}, {"caller_nid": "$graphify-root$_gun_scripts_build_hours_db_build_place_hours_xlsx", "callee": "PatternFill", "is_member_call": false, "source_file": "gun/scripts/build_hours_db.py", "source_location": "L509", "receiver": null}, {"caller_nid": "$graphify-root$_gun_scripts_build_hours_db_build_place_hours_xlsx", "callee": "PatternFill", "is_member_call": false, "source_file": "gun/scripts/build_hours_db.py", "source_location": "L510", "receiver": null}, {"caller_nid": "$graphify-root$_gun_scripts_build_hours_db_build_place_hours_xlsx", "callee": "cell", "is_member_call": true, "source_file": "gun/scripts/build_hours_db.py", "source_location": "L513", "receiver": "ws"}, {"caller_nid": "$graphify-root$_gun_scripts_build_hours_db_build_place_hours_xlsx", "callee": "Alignment", "is_member_call": false, "source_file": "gun/scripts/build_hours_db.py", "source_location": "L516", "receiver": null}, {"caller_nid": "$graphify-root$_gun_scripts_build_hours_db_build_place_hours_xlsx", "callee": "get_column_letter", "is_member_call": false, "source_file": "gun/scripts/build_hours_db.py", "source_location": "L518", "receiver": null}, {"caller_nid": "$graphify-root$_gun_scripts_build_hours_db_build_place_hours_xlsx", "callee": "get", "is_member_call": true, "source_file": "gun/scripts/build_hours_db.py", "source_location": "L522", "receiver": "rec"}, {"caller_nid": "$graphify-root$_gun_scripts_build_hours_db_build_place_hours_xlsx", "callee": "cell", "is_member_call": true, "source_file": "gun/scripts/build_hours_db.py", "source_location": "L523", "receiver": "ws"}, {"caller_nid": "$graphify-root$_gun_scripts_build_hours_db_build_place_hours_xlsx", "callee": "Alignment", "is_member_call": false, "source_file": "gun/scripts/build_hours_db.py", "source_location": "L526", "receiver": null}, {"caller_nid": "$graphify-root$_gun_scripts_build_hours_db_build_place_hours_xlsx", "callee": "save", "is_member_call": true, "source_file": "gun/scripts/build_hours_db.py", "source_location": "L535", "receiver": "wb"}, {"caller_nid": "$graphify-root$_gun_scripts_build_hours_db_build_place_hours_xlsx", "callee": "OUT_PLACE", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "gun/scripts/build_hours_db.py", "source_location": "L535"}, {"caller_nid": "$graphify-root$_gun_scripts_build_hours_db_build_place_hours_xlsx", "callee": "relative_to", "is_member_call": true, "source_file": "gun/scripts/build_hours_db.py", "source_location": "L536", "receiver": "OUT_PLACE"}, {"caller_nid": "$graphify-root$_gun_scripts_build_hours_db_build_place_hours_xlsx", "callee": "ROOT", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "gun/scripts/build_hours_db.py", "source_location": "L536"}, {"caller_nid": "$graphify-root$_gun_scripts_build_hours_db_build_category_std_xlsx", "callee": "Workbook", "is_member_call": false, "source_file": "gun/scripts/build_hours_db.py", "source_location": "L544", "receiver": null}, {"caller_nid": "$graphify-root$_gun_scripts_build_hours_db_build_category_std_xlsx", "callee": "PatternFill", "is_member_call": false, "source_file": "gun/scripts/build_hours_db.py", "source_location": "L560", "receiver": null}, {"caller_nid": "$graphify-root$_gun_scripts_build_hours_db_build_category_std_xlsx", "callee": "Side", "is_member_call": false, "source_file": "gun/scripts/build_hours_db.py", "source_location": "L563", "receiver": null}, {"caller_nid": "$graphify-root$_gun_scripts_build_hours_db_build_category_std_xlsx", "callee": "Border", "is_member_call": false, "source_file": "gun/scripts/build_hours_db.py", "source_location": "L564", "receiver": null}, {"caller_nid": "$graphify-root$_gun_scripts_build_hours_db_build_category_std_xlsx", "callee": "cell", "is_member_call": true, "source_file": "gun/scripts/build_hours_db.py", "source_location": "L567", "receiver": "ws"}, {"caller_nid": "$graphify-root$_gun_scripts_build_hours_db_build_category_std_xlsx", "callee": "Alignment", "is_member_call": false, "source_file": "gun/scripts/build_hours_db.py", "source_location": "L570", "receiver": null}, {"caller_nid": "$graphify-root$_gun_scripts_build_hours_db_build_category_std_xlsx", "callee": "get_column_letter", "is_member_call": false, "source_file": "gun/scripts/build_hours_db.py", "source_location": "L572", "receiver": null}, {"caller_nid": "$graphify-root$_gun_scripts_build_hours_db_build_category_std_xlsx", "callee": "items", "is_member_call": true, "source_file": "gun/scripts/build_hours_db.py", "source_location": "L575", "receiver": "SUB_CATEGORIES"}, {"caller_nid": "$graphify-root$_gun_scripts_build_hours_db_build_category_std_xlsx", "callee": "join", "is_member_call": true, "source_file": "gun/scripts/build_hours_db.py", "source_location": "L576", "receiver": null}, {"caller_nid": "$graphify-root$_gun_scripts_build_hours_db_build_category_std_xlsx", "callee": "join", "is_member_call": true, "source_file": "gun/scripts/build_hours_db.py", "source_location": "L577", "receiver": null}, {"caller_nid": "$graphify-root$_gun_scripts_build_hours_db_build_category_std_xlsx", "callee": "get", "is_member_call": true, "source_file": "gun/scripts/build_hours_db.py", "source_location": "L581", "receiver": "sub_counter"}, {"caller_nid": "$graphify-root$_gun_scripts_build_hours_db_build_category_std_xlsx", "callee": "cell", "is_member_call": true, "source_file": "gun/scripts/build_hours_db.py", "source_location": "L584", "receiver": "ws"}, {"caller_nid": "$graphify-root$_gun_scripts_build_hours_db_build_category_std_xlsx", "callee": "Alignment", "is_member_call": false, "source_file": "gun/scripts/build_hours_db.py", "source_location": "L587", "receiver": null}, {"caller_nid": "$graphify-root$_gun_scripts_build_hours_db_build_category_std_xlsx", "callee": "cell", "is_member_call": true, "source_file": "gun/scripts/build_hours_db.py", "source_location": "L595", "receiver": "ws"}, {"caller_nid": "$graphify-root$_gun_scripts_build_hours_db_build_category_std_xlsx", "callee": "cell", "is_member_call": true, "source_file": "gun/scripts/build_hours_db.py", "source_location": "L596", "receiver": "ws"}, {"caller_nid": "$graphify-root$_gun_scripts_build_hours_db_build_category_std_xlsx", "callee": "save", "is_member_call": true, "source_file": "gun/scripts/build_hours_db.py", "source_location": "L598", "receiver": "wb"}, {"caller_nid": "$graphify-root$_gun_scripts_build_hours_db_build_category_std_xlsx", "callee": "OUT_STD", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "gun/scripts/build_hours_db.py", "source_location": "L598"}, {"caller_nid": "$graphify-root$_gun_scripts_build_hours_db_build_category_std_xlsx", "callee": "relative_to", "is_member_call": true, "source_file": "gun/scripts/build_hours_db.py", "source_location": "L599", "receiver": "OUT_STD"}, {"caller_nid": "$graphify-root$_gun_scripts_build_hours_db_build_category_std_xlsx", "callee": "ROOT", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "gun/scripts/build_hours_db.py", "source_location": "L599"}, {"caller_nid": "$graphify-root$_gun_scripts_build_hours_db_build_category_std_xlsx", "callee": "SUB_CATEGORIES", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "gun/scripts/build_hours_db.py", "source_location": "L599"}, {"caller_nid": "$graphify-root$_gun_scripts_build_hours_db_build_hours_db_py", "callee": "mkdir", "is_member_call": true, "source_file": "gun/scripts/build_hours_db.py", "source_location": "L606", "receiver": null}, {"caller_nid": "$graphify-root$_gun_scripts_build_hours_db_build_hours_db_py", "callee": "items", "is_member_call": true, "source_file": "gun/scripts/build_hours_db.py", "source_location": "L609", "receiver": "SUB_CATEGORIES"}, {"caller_nid": "$graphify-root$_gun_scripts_build_hours_db_build_hours_db_py", "callee": "append", "is_member_call": true, "source_file": "gun/scripts/build_hours_db.py", "source_location": "L610", "receiver": "items_src"}, {"caller_nid": "$graphify-root$_gun_scripts_build_hours_db_build_hours_db_py", "callee": "join", "is_member_call": true, "source_file": "gun/scripts/build_hours_db.py", "source_location": "L618", "receiver": null}, {"caller_nid": "$graphify-root$_gun_scripts_build_hours_db_build_hours_db_py", "callee": "join", "is_member_call": true, "source_file": "gun/scripts/build_hours_db.py", "source_location": "L644", "receiver": null}, {"caller_nid": "$graphify-root$_gun_scripts_build_hours_db_build_hours_db_py", "callee": "chr", "is_member_call": false, "source_file": "gun/scripts/build_hours_db.py", "source_location": "L644", "receiver": null}, {"caller_nid": "$graphify-root$_gun_scripts_build_hours_db_build_hours_db_py", "callee": "write_text", "is_member_call": true, "source_file": "gun/scripts/build_hours_db.py", "source_location": "L695", "receiver": "OUT_PY"}, {"caller_nid": "$graphify-root$_gun_scripts_build_hours_db_build_hours_db_py", "callee": "relative_to", "is_member_call": true, "source_file": "gun/scripts/build_hours_db.py", "source_location": "L696", "receiver": "OUT_PY"}, {"caller_nid": "$graphify-root$_gun_scripts_build_hours_db_build_hours_db_py", "callee": "ROOT", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "gun/scripts/build_hours_db.py", "source_location": "L696"}, {"caller_nid": "$graphify-root$_gun_scripts_build_hours_db_build_hours_db_py", "callee": "SUB_CATEGORIES", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "gun/scripts/build_hours_db.py", "source_location": "L696"}, {"caller_nid": "$graphify-root$_gun_scripts_build_hours_db_build_hours_db_py", "callee": "KEYWORD_RULES", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "gun/scripts/build_hours_db.py", "source_location": "L696"}, {"caller_nid": "$graphify-root$_gun_scripts_build_hours_db_main", "callee": "most_common", "is_member_call": true, "source_file": "gun/scripts/build_hours_db.py", "source_location": "L707", "receiver": "counter"}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.31/8eda4ee5e0635eaecbd4bbed862043f08605b1ca7da57bf076a16dc7e03a163b.json b/graphify-out/cache/ast/v0.9.31/8eda4ee5e0635eaecbd4bbed862043f08605b1ca7da57bf076a16dc7e03a163b.json new file mode 100644 index 0000000..151ad23 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.31/8eda4ee5e0635eaecbd4bbed862043f08605b1ca7da57bf076a16dc7e03a163b.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_src_scoring_travel_ratio_py", "label": "travel_ratio.py", "file_type": "code", "source_file": "src/scoring/travel_ratio.py", "source_location": "L1"}, {"id": "$graphify-root$_src_scoring_travel_ratio_dayratiometric", "label": "DayRatioMetric", "file_type": "code", "source_file": "src/scoring/travel_ratio.py", "source_location": "L28", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_src_scoring_travel_ratio_travelratioreport", "label": "TravelRatioReport", "file_type": "code", "source_file": "src/scoring/travel_ratio.py", "source_location": "L37", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_src_scoring_travel_ratio_compute_day_metric", "label": "_compute_day_metric()", "file_type": "code", "source_file": "src/scoring/travel_ratio.py", "source_location": "L45", "_callable": true}, {"id": "vrptwplace", "label": "VRPTWPlace", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/src/scoring/travel_ratio.py"}, {"id": "timematrix", "label": "TimeMatrix", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/src/scoring/travel_ratio.py"}, {"id": "$graphify-root$_src_scoring_travel_ratio_classify_ratio", "label": "_classify_ratio()", "file_type": "code", "source_file": "src/scoring/travel_ratio.py", "source_location": "L70", "_callable": true}, {"id": "$graphify-root$_src_scoring_travel_ratio_evaluate_travel_ratio", "label": "evaluate_travel_ratio()", "file_type": "code", "source_file": "src/scoring/travel_ratio.py", "source_location": "L81", "_callable": true}, {"id": "vrptwday", "label": "VRPTWDay", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/src/scoring/travel_ratio.py"}, {"id": "$graphify-root$_src_scoring_travel_ratio_rationale_1", "label": "\uc774\ub3d9 vs \uad00\uad11 \uc2dc\uac04 \ube44\uc728 \ud328\ub110\ud2f0 (\ubaa8\ub4c8 \u2464). \uacf5\uc2dd: travel_ratio = travel_sec / (travel_sec +\u2026", "file_type": "rationale", "source_file": "src/scoring/travel_ratio.py", "source_location": "L1"}, {"id": "$graphify-root$_src_scoring_travel_ratio_rationale_50", "label": "\ud558\ub8e8 \uc77c\uc815\uc758 travel_sec, dwell_sec, ratio \uacc4\uc0b0.", "file_type": "rationale", "source_file": "src/scoring/travel_ratio.py", "source_location": "L50"}, {"id": "$graphify-root$_src_scoring_travel_ratio_rationale_71", "label": "\ube44\uc728 \u2192 (\ud328\ub110\ud2f0, risk_label) \ubc18\ud658.", "file_type": "rationale", "source_file": "src/scoring/travel_ratio.py", "source_location": "L71"}, {"id": "$graphify-root$_src_scoring_travel_ratio_rationale_85", "label": "\uc804\uccb4 \uc77c\uc815\uc758 \uc77c\uc790\ubcc4 travel_ratio + \ud328\ub110\ud2f0 \uc0b0\ucd9c.", "file_type": "rationale", "source_file": "src/scoring/travel_ratio.py", "source_location": "L85"}], "edges": [{"source": "$graphify-root$_src_scoring_travel_ratio_py", "target": "dataclasses", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "src/scoring/travel_ratio.py", "source_location": "L10", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_travel_ratio_py", "target": "src_data_models", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "src/scoring/travel_ratio.py", "source_location": "L12", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_travel_ratio_py", "target": "src_validation_vrptw_engine", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "src/scoring/travel_ratio.py", "source_location": "L13", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_travel_ratio_py", "target": "$graphify-root$_src_scoring_travel_ratio_dayratiometric", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/scoring/travel_ratio.py", "source_location": "L28", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_travel_ratio_py", "target": "$graphify-root$_src_scoring_travel_ratio_travelratioreport", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/scoring/travel_ratio.py", "source_location": "L37", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_travel_ratio_py", "target": "$graphify-root$_src_scoring_travel_ratio_compute_day_metric", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/scoring/travel_ratio.py", "source_location": "L45", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_travel_ratio_compute_day_metric", "target": "vrptwplace", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "src/scoring/travel_ratio.py", "source_location": "L45", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_travel_ratio_compute_day_metric", "target": "timematrix", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "src/scoring/travel_ratio.py", "source_location": "L45", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_travel_ratio_compute_day_metric", "target": "$graphify-root$_src_scoring_travel_ratio_dayratiometric", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "src/scoring/travel_ratio.py", "source_location": "L45", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_travel_ratio_py", "target": "$graphify-root$_src_scoring_travel_ratio_classify_ratio", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/scoring/travel_ratio.py", "source_location": "L70", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_travel_ratio_py", "target": "$graphify-root$_src_scoring_travel_ratio_evaluate_travel_ratio", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/scoring/travel_ratio.py", "source_location": "L81", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_travel_ratio_evaluate_travel_ratio", "target": "vrptwday", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "src/scoring/travel_ratio.py", "source_location": "L81", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_travel_ratio_evaluate_travel_ratio", "target": "timematrix", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "src/scoring/travel_ratio.py", "source_location": "L81", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_travel_ratio_evaluate_travel_ratio", "target": "$graphify-root$_src_scoring_travel_ratio_travelratioreport", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "src/scoring/travel_ratio.py", "source_location": "L81", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_travel_ratio_compute_day_metric", "target": "$graphify-root$_src_scoring_travel_ratio_dayratiometric", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/scoring/travel_ratio.py", "source_location": "L62", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_travel_ratio_evaluate_travel_ratio", "target": "$graphify-root$_src_scoring_travel_ratio_compute_day_metric", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/scoring/travel_ratio.py", "source_location": "L95", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_travel_ratio_evaluate_travel_ratio", "target": "$graphify-root$_src_scoring_travel_ratio_classify_ratio", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/scoring/travel_ratio.py", "source_location": "L100", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_travel_ratio_evaluate_travel_ratio", "target": "$graphify-root$_src_scoring_travel_ratio_travelratioreport", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/scoring/travel_ratio.py", "source_location": "L121", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_travel_ratio_rationale_1", "target": "$graphify-root$_src_scoring_travel_ratio_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/scoring/travel_ratio.py", "source_location": "L1", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_travel_ratio_rationale_50", "target": "$graphify-root$_src_scoring_travel_ratio_compute_day_metric", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/scoring/travel_ratio.py", "source_location": "L50", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_travel_ratio_rationale_71", "target": "$graphify-root$_src_scoring_travel_ratio_classify_ratio", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/scoring/travel_ratio.py", "source_location": "L71", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_travel_ratio_rationale_85", "target": "$graphify-root$_src_scoring_travel_ratio_evaluate_travel_ratio", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/scoring/travel_ratio.py", "source_location": "L85", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_src_scoring_travel_ratio_compute_day_metric", "callee": "get_travel_time", "is_member_call": true, "source_file": "src/scoring/travel_ratio.py", "source_location": "L58", "receiver": "matrix"}, {"caller_nid": "$graphify-root$_src_scoring_travel_ratio_classify_ratio", "callee": "PENALTY_CRIT", "is_member_call": false, "indirect": true, "context": "return", "source_file": "src/scoring/travel_ratio.py", "source_location": "L73"}, {"caller_nid": "$graphify-root$_src_scoring_travel_ratio_classify_ratio", "callee": "PENALTY_RISK", "is_member_call": false, "indirect": true, "context": "return", "source_file": "src/scoring/travel_ratio.py", "source_location": "L75"}, {"caller_nid": "$graphify-root$_src_scoring_travel_ratio_classify_ratio", "callee": "PENALTY_WARN", "is_member_call": false, "indirect": true, "context": "return", "source_file": "src/scoring/travel_ratio.py", "source_location": "L77"}, {"caller_nid": "$graphify-root$_src_scoring_travel_ratio_evaluate_travel_ratio", "callee": "HaversineMatrix", "is_member_call": false, "source_file": "src/scoring/travel_ratio.py", "source_location": "L86", "receiver": null}, {"caller_nid": "$graphify-root$_src_scoring_travel_ratio_evaluate_travel_ratio", "callee": "append", "is_member_call": true, "source_file": "src/scoring/travel_ratio.py", "source_location": "L96", "receiver": "per_day"}, {"caller_nid": "$graphify-root$_src_scoring_travel_ratio_evaluate_travel_ratio", "callee": "append", "is_member_call": true, "source_file": "src/scoring/travel_ratio.py", "source_location": "L105", "receiver": "deep_dive"}, {"caller_nid": "$graphify-root$_src_scoring_travel_ratio_evaluate_travel_ratio", "callee": "DeepDiveItem", "is_member_call": false, "source_file": "src/scoring/travel_ratio.py", "source_location": "L105", "receiver": null}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.31/94a5004c2d8e1e00fa7ae4f30103103917d240da2e7c76c342998dc36d2be81e.json b/graphify-out/cache/ast/v0.9.31/94a5004c2d8e1e00fa7ae4f30103103917d240da2e7c76c342998dc36d2be81e.json new file mode 100644 index 0000000..eb23f4a --- /dev/null +++ b/graphify-out/cache/ast/v0.9.31/94a5004c2d8e1e00fa7ae4f30103103917d240da2e7c76c342998dc36d2be81e.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_scripts_demo_live_e2e_py", "label": "demo_live_e2e.py", "file_type": "code", "source_file": "scripts/demo_live_e2e.py", "source_location": "L1"}, {"id": "$graphify-root$_scripts_demo_live_e2e_main", "label": "main()", "file_type": "code", "source_file": "scripts/demo_live_e2e.py", "source_location": "L27", "_callable": true}, {"id": "$graphify-root$_scripts_demo_live_e2e_rationale_1", "label": "\ub77c\uc774\ube0c E2E \ub370\ubaa8 \u2014 \uc2e4\uc81c Claude API + \uc2e4\uc81c Neo4j Aura\ub97c \ub3d9\uc2dc\uc5d0 \ud638\ucd9c\ud55c\ub2e4. mock \uc5c6\uc74c. .env\uc758\u2026", "file_type": "rationale", "source_file": "scripts/demo_live_e2e.py", "source_location": "L1"}], "edges": [{"source": "$graphify-root$_scripts_demo_live_e2e_py", "target": "sys", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/demo_live_e2e.py", "source_location": "L12", "weight": 1.0}, {"source": "$graphify-root$_scripts_demo_live_e2e_py", "target": "pathlib", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/demo_live_e2e.py", "source_location": "L13", "weight": 1.0}, {"source": "$graphify-root$_scripts_demo_live_e2e_py", "target": "dotenv", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/demo_live_e2e.py", "source_location": "L15", "weight": 1.0}, {"source": "$graphify-root$_scripts_demo_live_e2e_py", "target": "src_data_graph_retriever", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/demo_live_e2e.py", "source_location": "L20", "weight": 1.0}, {"source": "$graphify-root$_scripts_demo_live_e2e_py", "target": "src_data_models", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/demo_live_e2e.py", "source_location": "L21", "weight": 1.0}, {"source": "$graphify-root$_scripts_demo_live_e2e_py", "target": "src_explain_explain_engine", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/demo_live_e2e.py", "source_location": "L22", "weight": 1.0}, {"source": "$graphify-root$_scripts_demo_live_e2e_py", "target": "$graphify-root$_scripts_demo_live_e2e_main", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/demo_live_e2e.py", "source_location": "L27", "weight": 1.0}, {"source": "$graphify-root$_scripts_demo_live_e2e_rationale_1", "target": "$graphify-root$_scripts_demo_live_e2e_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/demo_live_e2e.py", "source_location": "L1", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_scripts_demo_live_e2e_main", "callee": "from_env", "is_member_call": true, "source_file": "scripts/demo_live_e2e.py", "source_location": "L28", "receiver": "GraphRetriever"}, {"caller_nid": "$graphify-root$_scripts_demo_live_e2e_main", "callee": "ExplainEngine", "is_member_call": false, "source_file": "scripts/demo_live_e2e.py", "source_location": "L29", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_demo_live_e2e_main", "callee": "is_available", "is_member_call": true, "source_file": "scripts/demo_live_e2e.py", "source_location": "L32", "receiver": "engine"}, {"caller_nid": "$graphify-root$_scripts_demo_live_e2e_main", "callee": "is_available", "is_member_call": true, "source_file": "scripts/demo_live_e2e.py", "source_location": "L34", "receiver": "engine"}, {"caller_nid": "$graphify-root$_scripts_demo_live_e2e_main", "callee": "search_places", "is_member_call": true, "source_file": "scripts/demo_live_e2e.py", "source_location": "L36", "receiver": "graph"}, {"caller_nid": "$graphify-root$_scripts_demo_live_e2e_main", "callee": "POI_NAME", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/demo_live_e2e.py", "source_location": "L36"}, {"caller_nid": "$graphify-root$_scripts_demo_live_e2e_main", "callee": "find_nearby", "is_member_call": true, "source_file": "scripts/demo_live_e2e.py", "source_location": "L39", "receiver": "graph"}, {"caller_nid": "$graphify-root$_scripts_demo_live_e2e_main", "callee": "ItineraryPlan", "is_member_call": false, "source_file": "scripts/demo_live_e2e.py", "source_location": "L44", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_demo_live_e2e_main", "callee": "DayPlan", "is_member_call": false, "source_file": "scripts/demo_live_e2e.py", "source_location": "L45", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_demo_live_e2e_main", "callee": "PlaceInput", "is_member_call": false, "source_file": "scripts/demo_live_e2e.py", "source_location": "L45", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_demo_live_e2e_main", "callee": "POI_NAME", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/demo_live_e2e.py", "source_location": "L45"}, {"caller_nid": "$graphify-root$_scripts_demo_live_e2e_main", "callee": "PlaceInput", "is_member_call": false, "source_file": "scripts/demo_live_e2e.py", "source_location": "L45", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_demo_live_e2e_main", "callee": "HardFail", "is_member_call": false, "source_file": "scripts/demo_live_e2e.py", "source_location": "L48", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_demo_live_e2e_main", "callee": "POI_NAME", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/demo_live_e2e.py", "source_location": "L53"}, {"caller_nid": "$graphify-root$_scripts_demo_live_e2e_main", "callee": "generate", "is_member_call": true, "source_file": "scripts/demo_live_e2e.py", "source_location": "L56", "receiver": "engine"}, {"caller_nid": "$graphify-root$_scripts_demo_live_e2e_main", "callee": "close", "is_member_call": true, "source_file": "scripts/demo_live_e2e.py", "source_location": "L74", "receiver": "graph"}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.31/9766508e5a013c3d3cbb2602719391199e90af5720c9782a77ca71565aa346b1.json b/graphify-out/cache/ast/v0.9.31/9766508e5a013c3d3cbb2602719391199e90af5720c9782a77ca71565aa346b1.json new file mode 100644 index 0000000..968c3f9 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.31/9766508e5a013c3d3cbb2602719391199e90af5720c9782a77ca71565aa346b1.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_tests_init_py", "label": "__init__.py", "file_type": "code", "source_file": "tests/__init__.py", "source_location": "L1"}], "edges": [], "raw_calls": []} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.31/9a1ec4ecf6809dfe35da7c584406986fe24ede1abff95ab5f0710044c3c5e94d.json b/graphify-out/cache/ast/v0.9.31/9a1ec4ecf6809dfe35da7c584406986fe24ede1abff95ab5f0710044c3c5e94d.json new file mode 100644 index 0000000..034b388 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.31/9a1ec4ecf6809dfe35da7c584406986fe24ede1abff95ab5f0710044c3c5e94d.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_tests_test_theme_alignment_py", "label": "test_theme_alignment.py", "file_type": "code", "source_file": "tests/test_theme_alignment.py", "source_location": "L1"}, {"id": "fixture", "label": "fixture", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/tests/test_theme_alignment.py"}, {"id": "$graphify-root$_tests_test_theme_alignment_clear_cache", "label": "_clear_cache()", "file_type": "code", "source_file": "tests/test_theme_alignment.py", "source_location": "L22", "_callable": true}, {"id": "$graphify-root$_tests_test_theme_alignment_testnoapikey", "label": "TestNoApiKey", "file_type": "code", "source_file": "tests/test_theme_alignment.py", "source_location": "L29", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_tests_test_theme_alignment_testnoapikey_test_skip_returns_informational_only", "label": ".test_skip_returns_informational_only()", "file_type": "code", "source_file": "tests/test_theme_alignment.py", "source_location": "L30", "_callable": true}, {"id": "$graphify-root$_tests_test_theme_alignment_testclassifyscore", "label": "TestClassifyScore", "file_type": "code", "source_file": "tests/test_theme_alignment.py", "source_location": "L41", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_tests_test_theme_alignment_testclassifyscore_test_high_score_no_penalty", "label": ".test_high_score_no_penalty()", "file_type": "code", "source_file": "tests/test_theme_alignment.py", "source_location": "L42", "_callable": true}, {"id": "$graphify-root$_tests_test_theme_alignment_testclassifyscore_test_low_score_critical", "label": ".test_low_score_critical()", "file_type": "code", "source_file": "tests/test_theme_alignment.py", "source_location": "L47", "_callable": true}, {"id": "$graphify-root$_tests_test_theme_alignment_testparsellmresponse", "label": "TestParseLlmResponse", "file_type": "code", "source_file": "tests/test_theme_alignment.py", "source_location": "L53", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_tests_test_theme_alignment_testparsellmresponse_test_clean_json", "label": ".test_clean_json()", "file_type": "code", "source_file": "tests/test_theme_alignment.py", "source_location": "L54", "_callable": true}, {"id": "$graphify-root$_tests_test_theme_alignment_testparsellmresponse_test_score_clamped_to_1", "label": ".test_score_clamped_to_1()", "file_type": "code", "source_file": "tests/test_theme_alignment.py", "source_location": "L61", "_callable": true}, {"id": "$graphify-root$_tests_test_theme_alignment_testparsellmresponse_test_code_block_stripped", "label": ".test_code_block_stripped()", "file_type": "code", "source_file": "tests/test_theme_alignment.py", "source_location": "L66", "_callable": true}, {"id": "$graphify-root$_tests_test_theme_alignment_testevaluatewithmockclient", "label": "TestEvaluateWithMockClient", "file_type": "code", "source_file": "tests/test_theme_alignment.py", "source_location": "L72", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_tests_test_theme_alignment_testevaluatewithmockclient_test_high_alignment_no_penalty", "label": ".test_high_alignment_no_penalty()", "file_type": "code", "source_file": "tests/test_theme_alignment.py", "source_location": "L73", "_callable": true}, {"id": "$graphify-root$_tests_test_theme_alignment_testevaluatewithmockclient_test_low_alignment_critical", "label": ".test_low_alignment_critical()", "file_type": "code", "source_file": "tests/test_theme_alignment.py", "source_location": "L90", "_callable": true}, {"id": "$graphify-root$_tests_test_theme_alignment_testevaluatewithmockclient_test_cache_hit_skips_second_call", "label": ".test_cache_hit_skips_second_call()", "file_type": "code", "source_file": "tests/test_theme_alignment.py", "source_location": "L106", "_callable": true}, {"id": "$graphify-root$_tests_test_theme_alignment_testevaluatewithmockclient_test_llm_failure_returns_informational", "label": ".test_llm_failure_returns_informational()", "file_type": "code", "source_file": "tests/test_theme_alignment.py", "source_location": "L121", "_callable": true}, {"id": "$graphify-root$_tests_test_theme_alignment_rationale_1", "label": "Tests for src/scoring/theme_alignment.py \u2014 LLM mocking \ud544\uc218.", "file_type": "rationale", "source_file": "tests/test_theme_alignment.py", "source_location": "L1"}, {"id": "$graphify-root$_tests_test_theme_alignment_rationale_31", "label": "API \ud0a4 \uc5c6\uc73c\uba74 LLM \ud638\ucd9c \uc2a4\ud0b5 + \uc815\ubcf4\uc131 DeepDive.", "file_type": "rationale", "source_file": "tests/test_theme_alignment.py", "source_location": "L31"}, {"id": "$graphify-root$_tests_test_theme_alignment_rationale_91", "label": "LLM\uc774 0.3 \uc751\ub2f5 \u2192 CRITICAL \ud328\ub110\ud2f0.", "file_type": "rationale", "source_file": "tests/test_theme_alignment.py", "source_location": "L91"}, {"id": "$graphify-root$_tests_test_theme_alignment_rationale_107", "label": "\ub3d9\uc77c \uc785\ub825\uc73c\ub85c \ub450 \ubc88 \ud638\ucd9c \uc2dc LLM\uc740 1\ud68c\ub9cc \ud638\ucd9c.", "file_type": "rationale", "source_file": "tests/test_theme_alignment.py", "source_location": "L107"}, {"id": "$graphify-root$_tests_test_theme_alignment_rationale_122", "label": "LLM \ud638\ucd9c\uc774 \uc608\uc678 \ub358\uc9c0\uba74 \uc815\ubcf4\uc131 DeepDive\ub85c \ud3f4\ubc31.", "file_type": "rationale", "source_file": "tests/test_theme_alignment.py", "source_location": "L122"}], "edges": [{"source": "$graphify-root$_tests_test_theme_alignment_py", "target": "unittest_mock", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_theme_alignment.py", "source_location": "L4", "weight": 1.0}, {"source": "$graphify-root$_tests_test_theme_alignment_py", "target": "pytest", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_theme_alignment.py", "source_location": "L6", "weight": 1.0}, {"source": "$graphify-root$_tests_test_theme_alignment_py", "target": "src_data_theme_taxonomy", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_theme_alignment.py", "source_location": "L8", "weight": 1.0}, {"source": "$graphify-root$_tests_test_theme_alignment_py", "target": "src_scoring_theme_alignment", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_theme_alignment.py", "source_location": "L9", "weight": 1.0}, {"source": "$graphify-root$_tests_test_theme_alignment_clear_cache", "target": "fixture", "relation": "references", "confidence": "EXTRACTED", "source_file": "tests/test_theme_alignment.py", "source_location": "L21", "weight": 1.0, "context": "decorator"}, {"source": "$graphify-root$_tests_test_theme_alignment_py", "target": "$graphify-root$_tests_test_theme_alignment_clear_cache", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_theme_alignment.py", "source_location": "L22", "weight": 1.0}, {"source": "$graphify-root$_tests_test_theme_alignment_py", "target": "$graphify-root$_tests_test_theme_alignment_testnoapikey", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_theme_alignment.py", "source_location": "L29", "weight": 1.0}, {"source": "$graphify-root$_tests_test_theme_alignment_testnoapikey", "target": "$graphify-root$_tests_test_theme_alignment_testnoapikey_test_skip_returns_informational_only", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_theme_alignment.py", "source_location": "L30", "weight": 1.0}, {"source": "$graphify-root$_tests_test_theme_alignment_py", "target": "$graphify-root$_tests_test_theme_alignment_testclassifyscore", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_theme_alignment.py", "source_location": "L41", "weight": 1.0}, {"source": "$graphify-root$_tests_test_theme_alignment_testclassifyscore", "target": "$graphify-root$_tests_test_theme_alignment_testclassifyscore_test_high_score_no_penalty", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_theme_alignment.py", "source_location": "L42", "weight": 1.0}, {"source": "$graphify-root$_tests_test_theme_alignment_testclassifyscore", "target": "$graphify-root$_tests_test_theme_alignment_testclassifyscore_test_low_score_critical", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_theme_alignment.py", "source_location": "L47", "weight": 1.0}, {"source": "$graphify-root$_tests_test_theme_alignment_py", "target": "$graphify-root$_tests_test_theme_alignment_testparsellmresponse", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_theme_alignment.py", "source_location": "L53", "weight": 1.0}, {"source": "$graphify-root$_tests_test_theme_alignment_testparsellmresponse", "target": "$graphify-root$_tests_test_theme_alignment_testparsellmresponse_test_clean_json", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_theme_alignment.py", "source_location": "L54", "weight": 1.0}, {"source": "$graphify-root$_tests_test_theme_alignment_testparsellmresponse", "target": "$graphify-root$_tests_test_theme_alignment_testparsellmresponse_test_score_clamped_to_1", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_theme_alignment.py", "source_location": "L61", "weight": 1.0}, {"source": "$graphify-root$_tests_test_theme_alignment_testparsellmresponse", "target": "$graphify-root$_tests_test_theme_alignment_testparsellmresponse_test_code_block_stripped", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_theme_alignment.py", "source_location": "L66", "weight": 1.0}, {"source": "$graphify-root$_tests_test_theme_alignment_py", "target": "$graphify-root$_tests_test_theme_alignment_testevaluatewithmockclient", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_theme_alignment.py", "source_location": "L72", "weight": 1.0}, {"source": "$graphify-root$_tests_test_theme_alignment_testevaluatewithmockclient", "target": "$graphify-root$_tests_test_theme_alignment_testevaluatewithmockclient_test_high_alignment_no_penalty", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_theme_alignment.py", "source_location": "L73", "weight": 1.0}, {"source": "$graphify-root$_tests_test_theme_alignment_testevaluatewithmockclient", "target": "$graphify-root$_tests_test_theme_alignment_testevaluatewithmockclient_test_low_alignment_critical", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_theme_alignment.py", "source_location": "L90", "weight": 1.0}, {"source": "$graphify-root$_tests_test_theme_alignment_testevaluatewithmockclient", "target": "$graphify-root$_tests_test_theme_alignment_testevaluatewithmockclient_test_cache_hit_skips_second_call", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_theme_alignment.py", "source_location": "L106", "weight": 1.0}, {"source": "$graphify-root$_tests_test_theme_alignment_testevaluatewithmockclient", "target": "$graphify-root$_tests_test_theme_alignment_testevaluatewithmockclient_test_llm_failure_returns_informational", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_theme_alignment.py", "source_location": "L121", "weight": 1.0}, {"source": "$graphify-root$_tests_test_theme_alignment_rationale_1", "target": "$graphify-root$_tests_test_theme_alignment_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_theme_alignment.py", "source_location": "L1", "weight": 1.0}, {"source": "$graphify-root$_tests_test_theme_alignment_rationale_31", "target": "$graphify-root$_tests_test_theme_alignment_testnoapikey_test_skip_returns_informational_only", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_theme_alignment.py", "source_location": "L31", "weight": 1.0}, {"source": "$graphify-root$_tests_test_theme_alignment_rationale_91", "target": "$graphify-root$_tests_test_theme_alignment_testevaluatewithmockclient_test_low_alignment_critical", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_theme_alignment.py", "source_location": "L91", "weight": 1.0}, {"source": "$graphify-root$_tests_test_theme_alignment_rationale_107", "target": "$graphify-root$_tests_test_theme_alignment_testevaluatewithmockclient_test_cache_hit_skips_second_call", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_theme_alignment.py", "source_location": "L107", "weight": 1.0}, {"source": "$graphify-root$_tests_test_theme_alignment_rationale_122", "target": "$graphify-root$_tests_test_theme_alignment_testevaluatewithmockclient_test_llm_failure_returns_informational", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_theme_alignment.py", "source_location": "L122", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_tests_test_theme_alignment_clear_cache", "callee": "clear", "is_member_call": true, "source_file": "tests/test_theme_alignment.py", "source_location": "L24", "receiver": "_CACHE"}, {"caller_nid": "$graphify-root$_tests_test_theme_alignment_clear_cache", "callee": "clear", "is_member_call": true, "source_file": "tests/test_theme_alignment.py", "source_location": "L26", "receiver": "_CACHE"}, {"caller_nid": "$graphify-root$_tests_test_theme_alignment_testnoapikey_test_skip_returns_informational_only", "callee": "ThemeAlignmentJudge", "is_member_call": false, "source_file": "tests/test_theme_alignment.py", "source_location": "L32", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_theme_alignment_testnoapikey_test_skip_returns_informational_only", "callee": "UserPreferences", "is_member_call": false, "source_file": "tests/test_theme_alignment.py", "source_location": "L33", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_theme_alignment_testnoapikey_test_skip_returns_informational_only", "callee": "evaluate", "is_member_call": true, "source_file": "tests/test_theme_alignment.py", "source_location": "L34", "receiver": "judge"}, {"caller_nid": "$graphify-root$_tests_test_theme_alignment_testnoapikey_test_skip_returns_informational_only", "callee": "POIWithCategory", "is_member_call": false, "source_file": "tests/test_theme_alignment.py", "source_location": "L34", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_theme_alignment_testclassifyscore_test_high_score_no_penalty", "callee": "_classify_score", "is_member_call": false, "source_file": "tests/test_theme_alignment.py", "source_location": "L43", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_theme_alignment_testclassifyscore_test_low_score_critical", "callee": "_classify_score", "is_member_call": false, "source_file": "tests/test_theme_alignment.py", "source_location": "L48", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_theme_alignment_testparsellmresponse_test_clean_json", "callee": "_parse_llm_response", "is_member_call": false, "source_file": "tests/test_theme_alignment.py", "source_location": "L56", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_theme_alignment_testparsellmresponse_test_score_clamped_to_1", "callee": "_parse_llm_response", "is_member_call": false, "source_file": "tests/test_theme_alignment.py", "source_location": "L63", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_theme_alignment_testparsellmresponse_test_code_block_stripped", "callee": "_parse_llm_response", "is_member_call": false, "source_file": "tests/test_theme_alignment.py", "source_location": "L68", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_theme_alignment_testevaluatewithmockclient_test_high_alignment_no_penalty", "callee": "MagicMock", "is_member_call": false, "source_file": "tests/test_theme_alignment.py", "source_location": "L75", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_theme_alignment_testevaluatewithmockclient_test_high_alignment_no_penalty", "callee": "MagicMock", "is_member_call": false, "source_file": "tests/test_theme_alignment.py", "source_location": "L76", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_theme_alignment_testevaluatewithmockclient_test_high_alignment_no_penalty", "callee": "MagicMock", "is_member_call": false, "source_file": "tests/test_theme_alignment.py", "source_location": "L77", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_theme_alignment_testevaluatewithmockclient_test_high_alignment_no_penalty", "callee": "ThemeAlignmentJudge", "is_member_call": false, "source_file": "tests/test_theme_alignment.py", "source_location": "L80", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_theme_alignment_testevaluatewithmockclient_test_high_alignment_no_penalty", "callee": "UserPreferences", "is_member_call": false, "source_file": "tests/test_theme_alignment.py", "source_location": "L81", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_theme_alignment_testevaluatewithmockclient_test_high_alignment_no_penalty", "callee": "evaluate", "is_member_call": true, "source_file": "tests/test_theme_alignment.py", "source_location": "L82", "receiver": "judge"}, {"caller_nid": "$graphify-root$_tests_test_theme_alignment_testevaluatewithmockclient_test_high_alignment_no_penalty", "callee": "POIWithCategory", "is_member_call": false, "source_file": "tests/test_theme_alignment.py", "source_location": "L83", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_theme_alignment_testevaluatewithmockclient_test_low_alignment_critical", "callee": "MagicMock", "is_member_call": false, "source_file": "tests/test_theme_alignment.py", "source_location": "L92", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_theme_alignment_testevaluatewithmockclient_test_low_alignment_critical", "callee": "MagicMock", "is_member_call": false, "source_file": "tests/test_theme_alignment.py", "source_location": "L93", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_theme_alignment_testevaluatewithmockclient_test_low_alignment_critical", "callee": "MagicMock", "is_member_call": false, "source_file": "tests/test_theme_alignment.py", "source_location": "L94", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_theme_alignment_testevaluatewithmockclient_test_low_alignment_critical", "callee": "ThemeAlignmentJudge", "is_member_call": false, "source_file": "tests/test_theme_alignment.py", "source_location": "L97", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_theme_alignment_testevaluatewithmockclient_test_low_alignment_critical", "callee": "UserPreferences", "is_member_call": false, "source_file": "tests/test_theme_alignment.py", "source_location": "L98", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_theme_alignment_testevaluatewithmockclient_test_low_alignment_critical", "callee": "evaluate", "is_member_call": true, "source_file": "tests/test_theme_alignment.py", "source_location": "L99", "receiver": "judge"}, {"caller_nid": "$graphify-root$_tests_test_theme_alignment_testevaluatewithmockclient_test_low_alignment_critical", "callee": "POIWithCategory", "is_member_call": false, "source_file": "tests/test_theme_alignment.py", "source_location": "L100", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_theme_alignment_testevaluatewithmockclient_test_cache_hit_skips_second_call", "callee": "MagicMock", "is_member_call": false, "source_file": "tests/test_theme_alignment.py", "source_location": "L108", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_theme_alignment_testevaluatewithmockclient_test_cache_hit_skips_second_call", "callee": "MagicMock", "is_member_call": false, "source_file": "tests/test_theme_alignment.py", "source_location": "L109", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_theme_alignment_testevaluatewithmockclient_test_cache_hit_skips_second_call", "callee": "MagicMock", "is_member_call": false, "source_file": "tests/test_theme_alignment.py", "source_location": "L110", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_theme_alignment_testevaluatewithmockclient_test_cache_hit_skips_second_call", "callee": "ThemeAlignmentJudge", "is_member_call": false, "source_file": "tests/test_theme_alignment.py", "source_location": "L113", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_theme_alignment_testevaluatewithmockclient_test_cache_hit_skips_second_call", "callee": "UserPreferences", "is_member_call": false, "source_file": "tests/test_theme_alignment.py", "source_location": "L114", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_theme_alignment_testevaluatewithmockclient_test_cache_hit_skips_second_call", "callee": "POIWithCategory", "is_member_call": false, "source_file": "tests/test_theme_alignment.py", "source_location": "L115", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_theme_alignment_testevaluatewithmockclient_test_cache_hit_skips_second_call", "callee": "evaluate", "is_member_call": true, "source_file": "tests/test_theme_alignment.py", "source_location": "L117", "receiver": "judge"}, {"caller_nid": "$graphify-root$_tests_test_theme_alignment_testevaluatewithmockclient_test_cache_hit_skips_second_call", "callee": "evaluate", "is_member_call": true, "source_file": "tests/test_theme_alignment.py", "source_location": "L118", "receiver": "judge"}, {"caller_nid": "$graphify-root$_tests_test_theme_alignment_testevaluatewithmockclient_test_llm_failure_returns_informational", "callee": "MagicMock", "is_member_call": false, "source_file": "tests/test_theme_alignment.py", "source_location": "L123", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_theme_alignment_testevaluatewithmockclient_test_llm_failure_returns_informational", "callee": "RuntimeError", "is_member_call": false, "source_file": "tests/test_theme_alignment.py", "source_location": "L124", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_theme_alignment_testevaluatewithmockclient_test_llm_failure_returns_informational", "callee": "ThemeAlignmentJudge", "is_member_call": false, "source_file": "tests/test_theme_alignment.py", "source_location": "L126", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_theme_alignment_testevaluatewithmockclient_test_llm_failure_returns_informational", "callee": "UserPreferences", "is_member_call": false, "source_file": "tests/test_theme_alignment.py", "source_location": "L127", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_theme_alignment_testevaluatewithmockclient_test_llm_failure_returns_informational", "callee": "evaluate", "is_member_call": true, "source_file": "tests/test_theme_alignment.py", "source_location": "L128", "receiver": "judge"}, {"caller_nid": "$graphify-root$_tests_test_theme_alignment_testevaluatewithmockclient_test_llm_failure_returns_informational", "callee": "POIWithCategory", "is_member_call": false, "source_file": "tests/test_theme_alignment.py", "source_location": "L128", "receiver": null}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.31/a0678437010cb016ecdc5d16b9c9c58e237868b44f76a02cf7cfd015c033dd87.json b/graphify-out/cache/ast/v0.9.31/a0678437010cb016ecdc5d16b9c9c58e237868b44f76a02cf7cfd015c033dd87.json new file mode 100644 index 0000000..1c15ec3 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.31/a0678437010cb016ecdc5d16b9c9c58e237868b44f76a02cf7cfd015c033dd87.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_tests_test_party_config_py", "label": "test_party_config.py", "file_type": "code", "source_file": "tests/test_party_config.py", "source_location": "L1"}, {"id": "$graphify-root$_tests_test_party_config_testpartyprofiles", "label": "TestPartyProfiles", "file_type": "code", "source_file": "tests/test_party_config.py", "source_location": "L9", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_tests_test_party_config_testpartyprofiles_test_all_types_defined", "label": ".test_all_types_defined()", "file_type": "code", "source_file": "tests/test_party_config.py", "source_location": "L10", "_callable": true}, {"id": "$graphify-root$_tests_test_party_config_testpartyprofiles_test_friends_speed_factor_one", "label": ".test_friends_speed_factor_one()", "file_type": "code", "source_file": "tests/test_party_config.py", "source_location": "L14", "_callable": true}, {"id": "$graphify-root$_tests_test_party_config_testpartyprofiles_test_baby_speed_factor_below_one", "label": ".test_baby_speed_factor_below_one()", "file_type": "code", "source_file": "tests/test_party_config.py", "source_location": "L17", "_callable": true}, {"id": "$graphify-root$_tests_test_party_config_testpartyprofiles_test_elderly_speed_factor_below_one", "label": ".test_elderly_speed_factor_below_one()", "file_type": "code", "source_file": "tests/test_party_config.py", "source_location": "L20", "_callable": true}, {"id": "$graphify-root$_tests_test_party_config_testpartyprofiles_test_baby_fatigue_hours_lower_than_friends", "label": ".test_baby_fatigue_hours_lower_than_friends()", "file_type": "code", "source_file": "tests/test_party_config.py", "source_location": "L23", "_callable": true}, {"id": "$graphify-root$_tests_test_party_config_testpartyprofiles_test_elderly_fatigue_hours_lower_than_friends", "label": ".test_elderly_fatigue_hours_lower_than_friends()", "file_type": "code", "source_file": "tests/test_party_config.py", "source_location": "L28", "_callable": true}, {"id": "$graphify-root$_tests_test_party_config_testpartyprofiles_test_family_fatigue_between_friends_and_baby", "label": ".test_family_fatigue_between_friends_and_baby()", "file_type": "code", "source_file": "tests/test_party_config.py", "source_location": "L33", "_callable": true}, {"id": "$graphify-root$_tests_test_party_config_testpartyprofiles_test_unknown_type_returns_default", "label": ".test_unknown_type_returns_default()", "file_type": "code", "source_file": "tests/test_party_config.py", "source_location": "L39", "_callable": true}, {"id": "$graphify-root$_tests_test_party_config_testpartyprofiles_test_profile_is_frozen", "label": ".test_profile_is_frozen()", "file_type": "code", "source_file": "tests/test_party_config.py", "source_location": "L44", "_callable": true}, {"id": "$graphify-root$_tests_test_party_config_testpartyprofilevalues", "label": "TestPartyProfileValues", "file_type": "code", "source_file": "tests/test_party_config.py", "source_location": "L50", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_tests_test_party_config_testpartyprofilevalues_test_friends_fatigue_12h", "label": ".test_friends_fatigue_12h()", "file_type": "code", "source_file": "tests/test_party_config.py", "source_location": "L51", "_callable": true}, {"id": "$graphify-root$_tests_test_party_config_testpartyprofilevalues_test_baby_fatigue_8h", "label": ".test_baby_fatigue_8h()", "file_type": "code", "source_file": "tests/test_party_config.py", "source_location": "L54", "_callable": true}, {"id": "$graphify-root$_tests_test_party_config_testpartyprofilevalues_test_elderly_fatigue_8h", "label": ".test_elderly_fatigue_8h()", "file_type": "code", "source_file": "tests/test_party_config.py", "source_location": "L57", "_callable": true}, {"id": "$graphify-root$_tests_test_party_config_testpartyprofilevalues_test_family_fatigue_10h", "label": ".test_family_fatigue_10h()", "file_type": "code", "source_file": "tests/test_party_config.py", "source_location": "L60", "_callable": true}, {"id": "$graphify-root$_tests_test_party_config_testpartyprofilevalues_test_baby_speed_factor_is_point_eight", "label": ".test_baby_speed_factor_is_point_eight()", "file_type": "code", "source_file": "tests/test_party_config.py", "source_location": "L63", "_callable": true}, {"id": "$graphify-root$_tests_test_party_config_testpartyprofilevalues_test_family_speed_factor_is_point_nine", "label": ".test_family_speed_factor_is_point_nine()", "file_type": "code", "source_file": "tests/test_party_config.py", "source_location": "L66", "_callable": true}, {"id": "$graphify-root$_tests_test_party_config_teststrainthresholdlogic", "label": "TestStrainThresholdLogic", "file_type": "code", "source_file": "tests/test_party_config.py", "source_location": "L70", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_tests_test_party_config_teststrainthresholdlogic_test_baby_threshold_lower_than_friends", "label": ".test_baby_threshold_lower_than_friends()", "file_type": "code", "source_file": "tests/test_party_config.py", "source_location": "L75", "_callable": true}, {"id": "$graphify-root$_tests_test_party_config_teststrainthresholdlogic_test_baby_threshold_is_24km", "label": ".test_baby_threshold_is_24km()", "file_type": "code", "source_file": "tests/test_party_config.py", "source_location": "L80", "_callable": true}, {"id": "$graphify-root$_tests_test_party_config_teststrainthresholdlogic_test_friends_threshold_unchanged", "label": ".test_friends_threshold_unchanged()", "file_type": "code", "source_file": "tests/test_party_config.py", "source_location": "L84", "_callable": true}, {"id": "$graphify-root$_tests_test_party_config_rationale_1", "label": "PartyProfile \uc218\ub7c9\ud654 \ub85c\uc9c1 \ud14c\uc2a4\ud2b8.", "file_type": "rationale", "source_file": "tests/test_party_config.py", "source_location": "L1"}, {"id": "$graphify-root$_tests_test_party_config_rationale_71", "label": "speed_factor\uac00 \uccb4\ub825 \ubd80\ub2f4 \uc784\uacc4\uc5d0 \uc62c\ubc14\ub974\uac8c \ubc18\uc601\ub418\ub294\uc9c0 \ud655\uc778.", "file_type": "rationale", "source_file": "tests/test_party_config.py", "source_location": "L71"}], "edges": [{"source": "$graphify-root$_tests_test_party_config_py", "target": "pytest", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_party_config.py", "source_location": "L4", "weight": 1.0}, {"source": "$graphify-root$_tests_test_party_config_py", "target": "src_data_party_config", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_party_config.py", "source_location": "L6", "weight": 1.0}, {"source": "$graphify-root$_tests_test_party_config_py", "target": "$graphify-root$_tests_test_party_config_testpartyprofiles", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_party_config.py", "source_location": "L9", "weight": 1.0}, {"source": "$graphify-root$_tests_test_party_config_testpartyprofiles", "target": "$graphify-root$_tests_test_party_config_testpartyprofiles_test_all_types_defined", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_party_config.py", "source_location": "L10", "weight": 1.0}, {"source": "$graphify-root$_tests_test_party_config_testpartyprofiles", "target": "$graphify-root$_tests_test_party_config_testpartyprofiles_test_friends_speed_factor_one", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_party_config.py", "source_location": "L14", "weight": 1.0}, {"source": "$graphify-root$_tests_test_party_config_testpartyprofiles", "target": "$graphify-root$_tests_test_party_config_testpartyprofiles_test_baby_speed_factor_below_one", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_party_config.py", "source_location": "L17", "weight": 1.0}, {"source": "$graphify-root$_tests_test_party_config_testpartyprofiles", "target": "$graphify-root$_tests_test_party_config_testpartyprofiles_test_elderly_speed_factor_below_one", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_party_config.py", "source_location": "L20", "weight": 1.0}, {"source": "$graphify-root$_tests_test_party_config_testpartyprofiles", "target": "$graphify-root$_tests_test_party_config_testpartyprofiles_test_baby_fatigue_hours_lower_than_friends", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_party_config.py", "source_location": "L23", "weight": 1.0}, {"source": "$graphify-root$_tests_test_party_config_testpartyprofiles", "target": "$graphify-root$_tests_test_party_config_testpartyprofiles_test_elderly_fatigue_hours_lower_than_friends", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_party_config.py", "source_location": "L28", "weight": 1.0}, {"source": "$graphify-root$_tests_test_party_config_testpartyprofiles", "target": "$graphify-root$_tests_test_party_config_testpartyprofiles_test_family_fatigue_between_friends_and_baby", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_party_config.py", "source_location": "L33", "weight": 1.0}, {"source": "$graphify-root$_tests_test_party_config_testpartyprofiles", "target": "$graphify-root$_tests_test_party_config_testpartyprofiles_test_unknown_type_returns_default", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_party_config.py", "source_location": "L39", "weight": 1.0}, {"source": "$graphify-root$_tests_test_party_config_testpartyprofiles", "target": "$graphify-root$_tests_test_party_config_testpartyprofiles_test_profile_is_frozen", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_party_config.py", "source_location": "L44", "weight": 1.0}, {"source": "$graphify-root$_tests_test_party_config_py", "target": "$graphify-root$_tests_test_party_config_testpartyprofilevalues", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_party_config.py", "source_location": "L50", "weight": 1.0}, {"source": "$graphify-root$_tests_test_party_config_testpartyprofilevalues", "target": "$graphify-root$_tests_test_party_config_testpartyprofilevalues_test_friends_fatigue_12h", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_party_config.py", "source_location": "L51", "weight": 1.0}, {"source": "$graphify-root$_tests_test_party_config_testpartyprofilevalues", "target": "$graphify-root$_tests_test_party_config_testpartyprofilevalues_test_baby_fatigue_8h", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_party_config.py", "source_location": "L54", "weight": 1.0}, {"source": "$graphify-root$_tests_test_party_config_testpartyprofilevalues", "target": "$graphify-root$_tests_test_party_config_testpartyprofilevalues_test_elderly_fatigue_8h", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_party_config.py", "source_location": "L57", "weight": 1.0}, {"source": "$graphify-root$_tests_test_party_config_testpartyprofilevalues", "target": "$graphify-root$_tests_test_party_config_testpartyprofilevalues_test_family_fatigue_10h", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_party_config.py", "source_location": "L60", "weight": 1.0}, {"source": "$graphify-root$_tests_test_party_config_testpartyprofilevalues", "target": "$graphify-root$_tests_test_party_config_testpartyprofilevalues_test_baby_speed_factor_is_point_eight", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_party_config.py", "source_location": "L63", "weight": 1.0}, {"source": "$graphify-root$_tests_test_party_config_testpartyprofilevalues", "target": "$graphify-root$_tests_test_party_config_testpartyprofilevalues_test_family_speed_factor_is_point_nine", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_party_config.py", "source_location": "L66", "weight": 1.0}, {"source": "$graphify-root$_tests_test_party_config_py", "target": "$graphify-root$_tests_test_party_config_teststrainthresholdlogic", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_party_config.py", "source_location": "L70", "weight": 1.0}, {"source": "$graphify-root$_tests_test_party_config_teststrainthresholdlogic", "target": "$graphify-root$_tests_test_party_config_teststrainthresholdlogic_test_baby_threshold_lower_than_friends", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_party_config.py", "source_location": "L75", "weight": 1.0}, {"source": "$graphify-root$_tests_test_party_config_teststrainthresholdlogic", "target": "$graphify-root$_tests_test_party_config_teststrainthresholdlogic_test_baby_threshold_is_24km", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_party_config.py", "source_location": "L80", "weight": 1.0}, {"source": "$graphify-root$_tests_test_party_config_teststrainthresholdlogic", "target": "$graphify-root$_tests_test_party_config_teststrainthresholdlogic_test_friends_threshold_unchanged", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_party_config.py", "source_location": "L84", "weight": 1.0}, {"source": "$graphify-root$_tests_test_party_config_rationale_1", "target": "$graphify-root$_tests_test_party_config_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_party_config.py", "source_location": "L1", "weight": 1.0}, {"source": "$graphify-root$_tests_test_party_config_rationale_71", "target": "$graphify-root$_tests_test_party_config_teststrainthresholdlogic", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_party_config.py", "source_location": "L71", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_tests_test_party_config_testpartyprofiles_test_friends_speed_factor_one", "callee": "get_party_profile", "is_member_call": false, "source_file": "tests/test_party_config.py", "source_location": "L15", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_party_config_testpartyprofiles_test_baby_speed_factor_below_one", "callee": "get_party_profile", "is_member_call": false, "source_file": "tests/test_party_config.py", "source_location": "L18", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_party_config_testpartyprofiles_test_elderly_speed_factor_below_one", "callee": "get_party_profile", "is_member_call": false, "source_file": "tests/test_party_config.py", "source_location": "L21", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_party_config_testpartyprofiles_test_baby_fatigue_hours_lower_than_friends", "callee": "get_party_profile", "is_member_call": false, "source_file": "tests/test_party_config.py", "source_location": "L24", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_party_config_testpartyprofiles_test_baby_fatigue_hours_lower_than_friends", "callee": "get_party_profile", "is_member_call": false, "source_file": "tests/test_party_config.py", "source_location": "L25", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_party_config_testpartyprofiles_test_elderly_fatigue_hours_lower_than_friends", "callee": "get_party_profile", "is_member_call": false, "source_file": "tests/test_party_config.py", "source_location": "L29", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_party_config_testpartyprofiles_test_elderly_fatigue_hours_lower_than_friends", "callee": "get_party_profile", "is_member_call": false, "source_file": "tests/test_party_config.py", "source_location": "L30", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_party_config_testpartyprofiles_test_family_fatigue_between_friends_and_baby", "callee": "get_party_profile", "is_member_call": false, "source_file": "tests/test_party_config.py", "source_location": "L34", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_party_config_testpartyprofiles_test_family_fatigue_between_friends_and_baby", "callee": "get_party_profile", "is_member_call": false, "source_file": "tests/test_party_config.py", "source_location": "L35", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_party_config_testpartyprofiles_test_family_fatigue_between_friends_and_baby", "callee": "get_party_profile", "is_member_call": false, "source_file": "tests/test_party_config.py", "source_location": "L36", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_party_config_testpartyprofiles_test_unknown_type_returns_default", "callee": "get_party_profile", "is_member_call": false, "source_file": "tests/test_party_config.py", "source_location": "L40", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_party_config_testpartyprofiles_test_unknown_type_returns_default", "callee": "get_party_profile", "is_member_call": false, "source_file": "tests/test_party_config.py", "source_location": "L41", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_party_config_testpartyprofiles_test_profile_is_frozen", "callee": "get_party_profile", "is_member_call": false, "source_file": "tests/test_party_config.py", "source_location": "L45", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_party_config_testpartyprofiles_test_profile_is_frozen", "callee": "raises", "is_member_call": true, "source_file": "tests/test_party_config.py", "source_location": "L46", "receiver": "pytest"}, {"caller_nid": "$graphify-root$_tests_test_party_config_testpartyprofiles_test_profile_is_frozen", "callee": "Exception", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_party_config.py", "source_location": "L46"}, {"caller_nid": "$graphify-root$_tests_test_party_config_testpartyprofilevalues_test_friends_fatigue_12h", "callee": "get_party_profile", "is_member_call": false, "source_file": "tests/test_party_config.py", "source_location": "L52", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_party_config_testpartyprofilevalues_test_baby_fatigue_8h", "callee": "get_party_profile", "is_member_call": false, "source_file": "tests/test_party_config.py", "source_location": "L55", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_party_config_testpartyprofilevalues_test_elderly_fatigue_8h", "callee": "get_party_profile", "is_member_call": false, "source_file": "tests/test_party_config.py", "source_location": "L58", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_party_config_testpartyprofilevalues_test_family_fatigue_10h", "callee": "get_party_profile", "is_member_call": false, "source_file": "tests/test_party_config.py", "source_location": "L61", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_party_config_testpartyprofilevalues_test_baby_speed_factor_is_point_eight", "callee": "get_party_profile", "is_member_call": false, "source_file": "tests/test_party_config.py", "source_location": "L64", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_party_config_testpartyprofilevalues_test_baby_speed_factor_is_point_eight", "callee": "approx", "is_member_call": true, "source_file": "tests/test_party_config.py", "source_location": "L64", "receiver": "pytest"}, {"caller_nid": "$graphify-root$_tests_test_party_config_testpartyprofilevalues_test_family_speed_factor_is_point_nine", "callee": "get_party_profile", "is_member_call": false, "source_file": "tests/test_party_config.py", "source_location": "L67", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_party_config_testpartyprofilevalues_test_family_speed_factor_is_point_nine", "callee": "approx", "is_member_call": true, "source_file": "tests/test_party_config.py", "source_location": "L67", "receiver": "pytest"}, {"caller_nid": "$graphify-root$_tests_test_party_config_teststrainthresholdlogic_test_baby_threshold_lower_than_friends", "callee": "get_party_profile", "is_member_call": false, "source_file": "tests/test_party_config.py", "source_location": "L76", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_party_config_teststrainthresholdlogic_test_baby_threshold_lower_than_friends", "callee": "get_party_profile", "is_member_call": false, "source_file": "tests/test_party_config.py", "source_location": "L77", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_party_config_teststrainthresholdlogic_test_baby_threshold_is_24km", "callee": "get_party_profile", "is_member_call": false, "source_file": "tests/test_party_config.py", "source_location": "L81", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_party_config_teststrainthresholdlogic_test_baby_threshold_is_24km", "callee": "approx", "is_member_call": true, "source_file": "tests/test_party_config.py", "source_location": "L82", "receiver": "pytest"}, {"caller_nid": "$graphify-root$_tests_test_party_config_teststrainthresholdlogic_test_friends_threshold_unchanged", "callee": "get_party_profile", "is_member_call": false, "source_file": "tests/test_party_config.py", "source_location": "L85", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_party_config_teststrainthresholdlogic_test_friends_threshold_unchanged", "callee": "approx", "is_member_call": true, "source_file": "tests/test_party_config.py", "source_location": "L86", "receiver": "pytest"}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.31/a192d8c1d4f0ddbdc8cfad73aa1fef23209222b51a27624e1176b9cf7e4b4f64.json b/graphify-out/cache/ast/v0.9.31/a192d8c1d4f0ddbdc8cfad73aa1fef23209222b51a27624e1176b9cf7e4b4f64.json new file mode 100644 index 0000000..5a22cf3 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.31/a192d8c1d4f0ddbdc8cfad73aa1fef23209222b51a27624e1176b9cf7e4b4f64.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_tests_test_dwell_db_py", "label": "test_dwell_db.py", "file_type": "code", "source_file": "tests/test_dwell_db.py", "source_location": "L1"}, {"id": "$graphify-root$_tests_test_dwell_db_testmanualoverride", "label": "TestManualOverride", "file_type": "code", "source_file": "tests/test_dwell_db.py", "source_location": "L16", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_tests_test_dwell_db_testmanualoverride_test_\uacbd\ubcf5\uad81_returns_manual_source", "label": ".test_\uacbd\ubcf5\uad81_returns_manual_source()", "file_type": "code", "source_file": "tests/test_dwell_db.py", "source_location": "L17", "_callable": true}, {"id": "$graphify-root$_tests_test_dwell_db_testmanualoverride_test_normalization_handles_spaces", "label": ".test_normalization_handles_spaces()", "file_type": "code", "source_file": "tests/test_dwell_db.py", "source_location": "L23", "_callable": true}, {"id": "$graphify-root$_tests_test_dwell_db_testmanualoverride_test_n_seoul_tower_alias", "label": ".test_n_seoul_tower_alias()", "file_type": "code", "source_file": "tests/test_dwell_db.py", "source_location": "L28", "_callable": true}, {"id": "$graphify-root$_tests_test_dwell_db_testlclssystm3", "label": "TestLclsSystm3", "file_type": "code", "source_file": "tests/test_dwell_db.py", "source_location": "L35", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_tests_test_dwell_db_testlclssystm3_test_museum_code", "label": ".test_museum_code()", "file_type": "code", "source_file": "tests/test_dwell_db.py", "source_location": "L36", "_callable": true}, {"id": "$graphify-root$_tests_test_dwell_db_testlclssystm1fallback", "label": "TestLclsSystm1Fallback", "file_type": "code", "source_file": "tests/test_dwell_db.py", "source_location": "L43", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_tests_test_dwell_db_testlclssystm1fallback_test_lcls3_unknown_falls_back_to_lcls1", "label": ".test_lcls3_unknown_falls_back_to_lcls1()", "file_type": "code", "source_file": "tests/test_dwell_db.py", "source_location": "L44", "_callable": true}, {"id": "$graphify-root$_tests_test_dwell_db_testcontenttypefallback", "label": "TestContentTypeFallback", "file_type": "code", "source_file": "tests/test_dwell_db.py", "source_location": "L51", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_tests_test_dwell_db_testcontenttypefallback_test_content_type_used_when_no_lcls", "label": ".test_content_type_used_when_no_lcls()", "file_type": "code", "source_file": "tests/test_dwell_db.py", "source_location": "L52", "_callable": true}, {"id": "$graphify-root$_tests_test_dwell_db_testdefaultfallback", "label": "TestDefaultFallback", "file_type": "code", "source_file": "tests/test_dwell_db.py", "source_location": "L58", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_tests_test_dwell_db_testdefaultfallback_test_no_info_returns_default", "label": ".test_no_info_returns_default()", "file_type": "code", "source_file": "tests/test_dwell_db.py", "source_location": "L59", "_callable": true}, {"id": "$graphify-root$_tests_test_dwell_db_testistooshort", "label": "TestIsTooShort", "file_type": "code", "source_file": "tests/test_dwell_db.py", "source_location": "L65", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_tests_test_dwell_db_testistooshort_test_below_50pct_is_too_short", "label": ".test_below_50pct_is_too_short()", "file_type": "code", "source_file": "tests/test_dwell_db.py", "source_location": "L66", "_callable": true}, {"id": "$graphify-root$_tests_test_dwell_db_rationale_1", "label": "Tests for src/data/dwell_db.py \u2014 5\ub2e8\uacc4 \ud3f4\ubc31 \uac80\uc99d.", "file_type": "rationale", "source_file": "tests/test_dwell_db.py", "source_location": "L1"}], "edges": [{"source": "$graphify-root$_tests_test_dwell_db_py", "target": "pytest", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_dwell_db.py", "source_location": "L4", "weight": 1.0}, {"source": "$graphify-root$_tests_test_dwell_db_py", "target": "src_data_dwell_db", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_dwell_db.py", "source_location": "L6", "weight": 1.0}, {"source": "$graphify-root$_tests_test_dwell_db_py", "target": "$graphify-root$_tests_test_dwell_db_testmanualoverride", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_dwell_db.py", "source_location": "L16", "weight": 1.0}, {"source": "$graphify-root$_tests_test_dwell_db_testmanualoverride", "target": "$graphify-root$_tests_test_dwell_db_testmanualoverride_test_\uacbd\ubcf5\uad81_returns_manual_source", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_dwell_db.py", "source_location": "L17", "weight": 1.0}, {"source": "$graphify-root$_tests_test_dwell_db_testmanualoverride", "target": "$graphify-root$_tests_test_dwell_db_testmanualoverride_test_normalization_handles_spaces", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_dwell_db.py", "source_location": "L23", "weight": 1.0}, {"source": "$graphify-root$_tests_test_dwell_db_testmanualoverride", "target": "$graphify-root$_tests_test_dwell_db_testmanualoverride_test_n_seoul_tower_alias", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_dwell_db.py", "source_location": "L28", "weight": 1.0}, {"source": "$graphify-root$_tests_test_dwell_db_py", "target": "$graphify-root$_tests_test_dwell_db_testlclssystm3", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_dwell_db.py", "source_location": "L35", "weight": 1.0}, {"source": "$graphify-root$_tests_test_dwell_db_testlclssystm3", "target": "$graphify-root$_tests_test_dwell_db_testlclssystm3_test_museum_code", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_dwell_db.py", "source_location": "L36", "weight": 1.0}, {"source": "$graphify-root$_tests_test_dwell_db_py", "target": "$graphify-root$_tests_test_dwell_db_testlclssystm1fallback", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_dwell_db.py", "source_location": "L43", "weight": 1.0}, {"source": "$graphify-root$_tests_test_dwell_db_testlclssystm1fallback", "target": "$graphify-root$_tests_test_dwell_db_testlclssystm1fallback_test_lcls3_unknown_falls_back_to_lcls1", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_dwell_db.py", "source_location": "L44", "weight": 1.0}, {"source": "$graphify-root$_tests_test_dwell_db_py", "target": "$graphify-root$_tests_test_dwell_db_testcontenttypefallback", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_dwell_db.py", "source_location": "L51", "weight": 1.0}, {"source": "$graphify-root$_tests_test_dwell_db_testcontenttypefallback", "target": "$graphify-root$_tests_test_dwell_db_testcontenttypefallback_test_content_type_used_when_no_lcls", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_dwell_db.py", "source_location": "L52", "weight": 1.0}, {"source": "$graphify-root$_tests_test_dwell_db_py", "target": "$graphify-root$_tests_test_dwell_db_testdefaultfallback", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_dwell_db.py", "source_location": "L58", "weight": 1.0}, {"source": "$graphify-root$_tests_test_dwell_db_testdefaultfallback", "target": "$graphify-root$_tests_test_dwell_db_testdefaultfallback_test_no_info_returns_default", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_dwell_db.py", "source_location": "L59", "weight": 1.0}, {"source": "$graphify-root$_tests_test_dwell_db_py", "target": "$graphify-root$_tests_test_dwell_db_testistooshort", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_dwell_db.py", "source_location": "L65", "weight": 1.0}, {"source": "$graphify-root$_tests_test_dwell_db_testistooshort", "target": "$graphify-root$_tests_test_dwell_db_testistooshort_test_below_50pct_is_too_short", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_dwell_db.py", "source_location": "L66", "weight": 1.0}, {"source": "$graphify-root$_tests_test_dwell_db_rationale_1", "target": "$graphify-root$_tests_test_dwell_db_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_dwell_db.py", "source_location": "L1", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_tests_test_dwell_db_testmanualoverride_test_\uacbd\ubcf5\uad81_returns_manual_source", "callee": "get_recommended_dwell", "is_member_call": false, "source_file": "tests/test_dwell_db.py", "source_location": "L18", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_dwell_db_testmanualoverride_test_normalization_handles_spaces", "callee": "get_recommended_dwell", "is_member_call": false, "source_file": "tests/test_dwell_db.py", "source_location": "L25", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_dwell_db_testmanualoverride_test_n_seoul_tower_alias", "callee": "get_recommended_dwell", "is_member_call": false, "source_file": "tests/test_dwell_db.py", "source_location": "L29", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_dwell_db_testmanualoverride_test_n_seoul_tower_alias", "callee": "get_recommended_dwell", "is_member_call": false, "source_file": "tests/test_dwell_db.py", "source_location": "L30", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_dwell_db_testlclssystm3_test_museum_code", "callee": "get_recommended_dwell", "is_member_call": false, "source_file": "tests/test_dwell_db.py", "source_location": "L38", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_dwell_db_testlclssystm1fallback_test_lcls3_unknown_falls_back_to_lcls1", "callee": "get_recommended_dwell", "is_member_call": false, "source_file": "tests/test_dwell_db.py", "source_location": "L46", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_dwell_db_testcontenttypefallback_test_content_type_used_when_no_lcls", "callee": "get_recommended_dwell", "is_member_call": false, "source_file": "tests/test_dwell_db.py", "source_location": "L53", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_dwell_db_testdefaultfallback_test_no_info_returns_default", "callee": "get_recommended_dwell", "is_member_call": false, "source_file": "tests/test_dwell_db.py", "source_location": "L60", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_dwell_db_testistooshort_test_below_50pct_is_too_short", "callee": "DwellRecommendation", "is_member_call": false, "source_file": "tests/test_dwell_db.py", "source_location": "L67", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_dwell_db_testistooshort_test_below_50pct_is_too_short", "callee": "is_too_short", "is_member_call": true, "source_file": "tests/test_dwell_db.py", "source_location": "L68", "receiver": "rec"}, {"caller_nid": "$graphify-root$_tests_test_dwell_db_testistooshort_test_below_50pct_is_too_short", "callee": "is_too_short", "is_member_call": true, "source_file": "tests/test_dwell_db.py", "source_location": "L69", "receiver": "rec"}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.31/a240dd183a68608f5686056562433df371a49bf95788ce3f9b7f42212fce2d77.json b/graphify-out/cache/ast/v0.9.31/a240dd183a68608f5686056562433df371a49bf95788ce3f9b7f42212fce2d77.json new file mode 100644 index 0000000..f4238d6 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.31/a240dd183a68608f5686056562433df371a49bf95788ce3f9b7f42212fce2d77.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_scripts_collect_naver_only_py", "label": "collect_naver_only.py", "file_type": "code", "source_file": "scripts/collect_naver_only.py", "source_location": "L1"}, {"id": "$graphify-root$_scripts_collect_naver_only_rate_get", "label": "_rate_get()", "file_type": "code", "source_file": "scripts/collect_naver_only.py", "source_location": "L66", "_callable": true}, {"id": "client", "label": "Client", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/scripts/collect_naver_only.py"}, {"id": "response", "label": "Response", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/scripts/collect_naver_only.py"}, {"id": "$graphify-root$_scripts_collect_naver_only_strip", "label": "_strip()", "file_type": "code", "source_file": "scripts/collect_naver_only.py", "source_location": "L80", "_callable": true}, {"id": "$graphify-root$_scripts_collect_naver_only_count_hits", "label": "_count_hits()", "file_type": "code", "source_file": "scripts/collect_naver_only.py", "source_location": "L181", "_callable": true}, {"id": "$graphify-root$_scripts_collect_naver_only_parse_price", "label": "_parse_price()", "file_type": "code", "source_file": "scripts/collect_naver_only.py", "source_location": "L204", "_callable": true}, {"id": "$graphify-root$_scripts_collect_naver_only_extract_fields", "label": "extract_fields()", "file_type": "code", "source_file": "scripts/collect_naver_only.py", "source_location": "L228", "_callable": true}, {"id": "$graphify-root$_scripts_collect_naver_only_build_summary_text", "label": "build_summary_text()", "file_type": "code", "source_file": "scripts/collect_naver_only.py", "source_location": "L297", "_callable": true}, {"id": "$graphify-root$_scripts_collect_naver_only_fetch_blog_texts", "label": "_fetch_blog_texts()", "file_type": "code", "source_file": "scripts/collect_naver_only.py", "source_location": "L311", "_callable": true}, {"id": "$graphify-root$_scripts_collect_naver_only_fetch_and_extract", "label": "fetch_and_extract()", "file_type": "code", "source_file": "scripts/collect_naver_only.py", "source_location": "L334", "_callable": true}, {"id": "$graphify-root$_scripts_collect_naver_only_load_csv_sample", "label": "load_csv_sample()", "file_type": "code", "source_file": "scripts/collect_naver_only.py", "source_location": "L372", "_callable": true}, {"id": "$graphify-root$_scripts_collect_naver_only_load_progress", "label": "load_progress()", "file_type": "code", "source_file": "scripts/collect_naver_only.py", "source_location": "L391", "_callable": true}, {"id": "$graphify-root$_scripts_collect_naver_only_save_progress", "label": "save_progress()", "file_type": "code", "source_file": "scripts/collect_naver_only.py", "source_location": "L397", "_callable": true}, {"id": "$graphify-root$_scripts_collect_naver_only_main", "label": "main()", "file_type": "code", "source_file": "scripts/collect_naver_only.py", "source_location": "L404", "_callable": true}, {"id": "$graphify-root$_scripts_collect_naver_only_rationale_298", "label": "RAG \uc784\ubca0\ub529\uc6a9 \uc790\uc5f0\uc5b4 \uc694\uc57d \ubb38\uc7a5 \uc0dd\uc131", "file_type": "rationale", "source_file": "scripts/collect_naver_only.py", "source_location": "L298"}], "edges": [{"source": "$graphify-root$_scripts_collect_naver_only_py", "target": "csv", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/collect_naver_only.py", "source_location": "L9", "weight": 1.0}, {"source": "$graphify-root$_scripts_collect_naver_only_py", "target": "json", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/collect_naver_only.py", "source_location": "L10", "weight": 1.0}, {"source": "$graphify-root$_scripts_collect_naver_only_py", "target": "os", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/collect_naver_only.py", "source_location": "L11", "weight": 1.0}, {"source": "$graphify-root$_scripts_collect_naver_only_py", "target": "random", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/collect_naver_only.py", "source_location": "L12", "weight": 1.0}, {"source": "$graphify-root$_scripts_collect_naver_only_py", "target": "re", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/collect_naver_only.py", "source_location": "L13", "weight": 1.0}, {"source": "$graphify-root$_scripts_collect_naver_only_py", "target": "sys", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/collect_naver_only.py", "source_location": "L14", "weight": 1.0}, {"source": "$graphify-root$_scripts_collect_naver_only_py", "target": "threading", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/collect_naver_only.py", "source_location": "L15", "weight": 1.0}, {"source": "$graphify-root$_scripts_collect_naver_only_py", "target": "time", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/collect_naver_only.py", "source_location": "L16", "weight": 1.0}, {"source": "$graphify-root$_scripts_collect_naver_only_py", "target": "concurrent_futures", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/collect_naver_only.py", "source_location": "L17", "weight": 1.0}, {"source": "$graphify-root$_scripts_collect_naver_only_py", "target": "pathlib", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/collect_naver_only.py", "source_location": "L18", "weight": 1.0}, {"source": "$graphify-root$_scripts_collect_naver_only_py", "target": "httpx", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/collect_naver_only.py", "source_location": "L20", "weight": 1.0}, {"source": "$graphify-root$_scripts_collect_naver_only_py", "target": "dotenv", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/collect_naver_only.py", "source_location": "L21", "weight": 1.0}, {"source": "$graphify-root$_scripts_collect_naver_only_py", "target": "tqdm", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/collect_naver_only.py", "source_location": "L22", "weight": 1.0}, {"source": "$graphify-root$_scripts_collect_naver_only_py", "target": "$graphify-root$_scripts_collect_naver_only_rate_get", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/collect_naver_only.py", "source_location": "L66", "weight": 1.0}, {"source": "$graphify-root$_scripts_collect_naver_only_rate_get", "target": "client", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "scripts/collect_naver_only.py", "source_location": "L66", "weight": 1.0}, {"source": "$graphify-root$_scripts_collect_naver_only_rate_get", "target": "response", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "scripts/collect_naver_only.py", "source_location": "L66", "weight": 1.0}, {"source": "$graphify-root$_scripts_collect_naver_only_py", "target": "$graphify-root$_scripts_collect_naver_only_strip", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/collect_naver_only.py", "source_location": "L80", "weight": 1.0}, {"source": "$graphify-root$_scripts_collect_naver_only_py", "target": "$graphify-root$_scripts_collect_naver_only_count_hits", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/collect_naver_only.py", "source_location": "L181", "weight": 1.0}, {"source": "$graphify-root$_scripts_collect_naver_only_py", "target": "$graphify-root$_scripts_collect_naver_only_parse_price", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/collect_naver_only.py", "source_location": "L204", "weight": 1.0}, {"source": "$graphify-root$_scripts_collect_naver_only_py", "target": "$graphify-root$_scripts_collect_naver_only_extract_fields", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/collect_naver_only.py", "source_location": "L228", "weight": 1.0}, {"source": "$graphify-root$_scripts_collect_naver_only_py", "target": "$graphify-root$_scripts_collect_naver_only_build_summary_text", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/collect_naver_only.py", "source_location": "L297", "weight": 1.0}, {"source": "$graphify-root$_scripts_collect_naver_only_py", "target": "$graphify-root$_scripts_collect_naver_only_fetch_blog_texts", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/collect_naver_only.py", "source_location": "L311", "weight": 1.0}, {"source": "$graphify-root$_scripts_collect_naver_only_fetch_blog_texts", "target": "client", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "scripts/collect_naver_only.py", "source_location": "L311", "weight": 1.0}, {"source": "$graphify-root$_scripts_collect_naver_only_py", "target": "$graphify-root$_scripts_collect_naver_only_fetch_and_extract", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/collect_naver_only.py", "source_location": "L334", "weight": 1.0}, {"source": "$graphify-root$_scripts_collect_naver_only_fetch_and_extract", "target": "client", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "scripts/collect_naver_only.py", "source_location": "L334", "weight": 1.0}, {"source": "$graphify-root$_scripts_collect_naver_only_py", "target": "$graphify-root$_scripts_collect_naver_only_load_csv_sample", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/collect_naver_only.py", "source_location": "L372", "weight": 1.0}, {"source": "$graphify-root$_scripts_collect_naver_only_py", "target": "$graphify-root$_scripts_collect_naver_only_load_progress", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/collect_naver_only.py", "source_location": "L391", "weight": 1.0}, {"source": "$graphify-root$_scripts_collect_naver_only_py", "target": "$graphify-root$_scripts_collect_naver_only_save_progress", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/collect_naver_only.py", "source_location": "L397", "weight": 1.0}, {"source": "$graphify-root$_scripts_collect_naver_only_py", "target": "$graphify-root$_scripts_collect_naver_only_main", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/collect_naver_only.py", "source_location": "L404", "weight": 1.0}, {"source": "$graphify-root$_scripts_collect_naver_only_extract_fields", "target": "$graphify-root$_scripts_collect_naver_only_count_hits", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/collect_naver_only.py", "source_location": "L243", "weight": 1.0}, {"source": "$graphify-root$_scripts_collect_naver_only_extract_fields", "target": "$graphify-root$_scripts_collect_naver_only_parse_price", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/collect_naver_only.py", "source_location": "L265", "weight": 1.0}, {"source": "$graphify-root$_scripts_collect_naver_only_fetch_blog_texts", "target": "$graphify-root$_scripts_collect_naver_only_rate_get", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/collect_naver_only.py", "source_location": "L314", "weight": 1.0}, {"source": "$graphify-root$_scripts_collect_naver_only_fetch_blog_texts", "target": "$graphify-root$_scripts_collect_naver_only_strip", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/collect_naver_only.py", "source_location": "L325", "weight": 1.0}, {"source": "$graphify-root$_scripts_collect_naver_only_fetch_and_extract", "target": "$graphify-root$_scripts_collect_naver_only_fetch_blog_texts", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/collect_naver_only.py", "source_location": "L343", "weight": 1.0}, {"source": "$graphify-root$_scripts_collect_naver_only_fetch_and_extract", "target": "$graphify-root$_scripts_collect_naver_only_extract_fields", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/collect_naver_only.py", "source_location": "L354", "weight": 1.0}, {"source": "$graphify-root$_scripts_collect_naver_only_fetch_and_extract", "target": "$graphify-root$_scripts_collect_naver_only_build_summary_text", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/collect_naver_only.py", "source_location": "L367", "weight": 1.0}, {"source": "$graphify-root$_scripts_collect_naver_only_main", "target": "$graphify-root$_scripts_collect_naver_only_load_csv_sample", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/collect_naver_only.py", "source_location": "L410", "weight": 1.0}, {"source": "$graphify-root$_scripts_collect_naver_only_main", "target": "$graphify-root$_scripts_collect_naver_only_load_progress", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/collect_naver_only.py", "source_location": "L412", "weight": 1.0}, {"source": "$graphify-root$_scripts_collect_naver_only_main", "target": "client", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/collect_naver_only.py", "source_location": "L418", "weight": 1.0}, {"source": "$graphify-root$_scripts_collect_naver_only_main", "target": "$graphify-root$_scripts_collect_naver_only_fetch_and_extract", "relation": "indirect_call", "context": "argument", "confidence": "INFERRED", "source_file": "scripts/collect_naver_only.py", "source_location": "L420", "weight": 1.0}, {"source": "$graphify-root$_scripts_collect_naver_only_main", "target": "$graphify-root$_scripts_collect_naver_only_save_progress", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/collect_naver_only.py", "source_location": "L430", "weight": 1.0}, {"source": "$graphify-root$_scripts_collect_naver_only_rationale_298", "target": "$graphify-root$_scripts_collect_naver_only_build_summary_text", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/collect_naver_only.py", "source_location": "L298", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_scripts_collect_naver_only_rate_get", "callee": "monotonic", "is_member_call": true, "source_file": "scripts/collect_naver_only.py", "source_location": "L68", "receiver": "time"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_only_rate_get", "callee": "pop", "is_member_call": true, "source_file": "scripts/collect_naver_only.py", "source_location": "L70", "receiver": "_req_times"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_only_rate_get", "callee": "_req_times", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/collect_naver_only.py", "source_location": "L71"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_only_rate_get", "callee": "sleep", "is_member_call": true, "source_file": "scripts/collect_naver_only.py", "source_location": "L74", "receiver": "time"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_only_rate_get", "callee": "append", "is_member_call": true, "source_file": "scripts/collect_naver_only.py", "source_location": "L75", "receiver": "_req_times"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_only_rate_get", "callee": "monotonic", "is_member_call": true, "source_file": "scripts/collect_naver_only.py", "source_location": "L75", "receiver": "time"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_only_rate_get", "callee": "get", "is_member_call": true, "source_file": "scripts/collect_naver_only.py", "source_location": "L76", "receiver": "client"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_only_strip", "callee": "sub", "is_member_call": true, "source_file": "scripts/collect_naver_only.py", "source_location": "L81", "receiver": "re"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_only_parse_price", "callee": "get", "is_member_call": true, "source_file": "scripts/collect_naver_only.py", "source_location": "L205", "receiver": "_TYPE_THRESHOLDS"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_only_parse_price", "callee": "finditer", "is_member_call": true, "source_file": "scripts/collect_naver_only.py", "source_location": "L207", "receiver": "_PRICE_RE"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_only_parse_price", "callee": "group", "is_member_call": true, "source_file": "scripts/collect_naver_only.py", "source_location": "L208", "receiver": "m"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_only_parse_price", "callee": "group", "is_member_call": true, "source_file": "scripts/collect_naver_only.py", "source_location": "L208", "receiver": "m"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_only_parse_price", "callee": "append", "is_member_call": true, "source_file": "scripts/collect_naver_only.py", "source_location": "L210", "receiver": "prices"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_only_parse_price", "callee": "replace", "is_member_call": true, "source_file": "scripts/collect_naver_only.py", "source_location": "L210", "receiver": "raw"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_only_parse_price", "callee": "group", "is_member_call": true, "source_file": "scripts/collect_naver_only.py", "source_location": "L211", "receiver": "m"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_only_parse_price", "callee": "append", "is_member_call": true, "source_file": "scripts/collect_naver_only.py", "source_location": "L212", "receiver": "prices"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_only_parse_price", "callee": "group", "is_member_call": true, "source_file": "scripts/collect_naver_only.py", "source_location": "L212", "receiver": "m"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_only_parse_price", "callee": "group", "is_member_call": true, "source_file": "scripts/collect_naver_only.py", "source_location": "L213", "receiver": "m"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_only_parse_price", "callee": "append", "is_member_call": true, "source_file": "scripts/collect_naver_only.py", "source_location": "L214", "receiver": "prices"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_only_parse_price", "callee": "group", "is_member_call": true, "source_file": "scripts/collect_naver_only.py", "source_location": "L214", "receiver": "m"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_only_parse_price", "callee": "group", "is_member_call": true, "source_file": "scripts/collect_naver_only.py", "source_location": "L215", "receiver": "m"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_only_parse_price", "callee": "group", "is_member_call": true, "source_file": "scripts/collect_naver_only.py", "source_location": "L215", "receiver": "m"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_only_parse_price", "callee": "append", "is_member_call": true, "source_file": "scripts/collect_naver_only.py", "source_location": "L216", "receiver": "prices"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_only_parse_price", "callee": "group", "is_member_call": true, "source_file": "scripts/collect_naver_only.py", "source_location": "L216", "receiver": "m"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_only_parse_price", "callee": "group", "is_member_call": true, "source_file": "scripts/collect_naver_only.py", "source_location": "L216", "receiver": "m"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_only_extract_fields", "callee": "join", "is_member_call": true, "source_file": "scripts/collect_naver_only.py", "source_location": "L229", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_collect_naver_only_extract_fields", "callee": "decide", "is_member_call": false, "source_file": "scripts/collect_naver_only.py", "source_location": "L240", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_collect_naver_only_extract_fields", "callee": "decide", "is_member_call": false, "source_file": "scripts/collect_naver_only.py", "source_location": "L256", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_collect_naver_only_extract_fields", "callee": "decide", "is_member_call": false, "source_file": "scripts/collect_naver_only.py", "source_location": "L259", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_collect_naver_only_build_summary_text", "callee": "get", "is_member_call": true, "source_file": "scripts/collect_naver_only.py", "source_location": "L300", "receiver": "record"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_only_build_summary_text", "callee": "get", "is_member_call": true, "source_file": "scripts/collect_naver_only.py", "source_location": "L300", "receiver": "record"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_only_build_summary_text", "callee": "get", "is_member_call": true, "source_file": "scripts/collect_naver_only.py", "source_location": "L301", "receiver": "record"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_only_build_summary_text", "callee": "items", "is_member_call": true, "source_file": "scripts/collect_naver_only.py", "source_location": "L303", "receiver": "_FIELD_TEXT"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_only_build_summary_text", "callee": "get", "is_member_call": true, "source_file": "scripts/collect_naver_only.py", "source_location": "L304", "receiver": "record"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_only_build_summary_text", "callee": "append", "is_member_call": true, "source_file": "scripts/collect_naver_only.py", "source_location": "L306", "receiver": "parts"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_only_build_summary_text", "callee": "join", "is_member_call": true, "source_file": "scripts/collect_naver_only.py", "source_location": "L307", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_collect_naver_only_fetch_blog_texts", "callee": "MAX_RETRIES", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/collect_naver_only.py", "source_location": "L312"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_only_fetch_blog_texts", "callee": "NAVER_BLOG_URL", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/collect_naver_only.py", "source_location": "L315"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_only_fetch_blog_texts", "callee": "NAVER_HEADERS", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/collect_naver_only.py", "source_location": "L316"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_only_fetch_blog_texts", "callee": "BLOG_DISPLAY", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "scripts/collect_naver_only.py", "source_location": "L317"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_only_fetch_blog_texts", "callee": "exit", "is_member_call": true, "source_file": "scripts/collect_naver_only.py", "source_location": "L322", "receiver": "sys"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_only_fetch_blog_texts", "callee": "get", "is_member_call": true, "source_file": "scripts/collect_naver_only.py", "source_location": "L325", "receiver": "it"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_only_fetch_blog_texts", "callee": "get", "is_member_call": true, "source_file": "scripts/collect_naver_only.py", "source_location": "L325", "receiver": "it"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_only_fetch_blog_texts", "callee": "get", "is_member_call": true, "source_file": "scripts/collect_naver_only.py", "source_location": "L326", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_collect_naver_only_fetch_blog_texts", "callee": "json", "is_member_call": true, "source_file": "scripts/collect_naver_only.py", "source_location": "L326", "receiver": "resp"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_only_fetch_blog_texts", "callee": "sleep", "is_member_call": true, "source_file": "scripts/collect_naver_only.py", "source_location": "L330", "receiver": "time"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_only_fetch_and_extract", "callee": "get", "is_member_call": true, "source_file": "scripts/collect_naver_only.py", "source_location": "L336", "receiver": "poi"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_only_fetch_and_extract", "callee": "get", "is_member_call": true, "source_file": "scripts/collect_naver_only.py", "source_location": "L337", "receiver": "poi"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_only_fetch_and_extract", "callee": "get", "is_member_call": true, "source_file": "scripts/collect_naver_only.py", "source_location": "L338", "receiver": "TYPE_QUERY_SUFFIX"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_only_fetch_and_extract", "callee": "strip", "is_member_call": true, "source_file": "scripts/collect_naver_only.py", "source_location": "L340", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_collect_naver_only_fetch_and_extract", "callee": "add", "is_member_call": true, "source_file": "scripts/collect_naver_only.py", "source_location": "L351", "receiver": "seen"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_only_fetch_and_extract", "callee": "append", "is_member_call": true, "source_file": "scripts/collect_naver_only.py", "source_location": "L352", "receiver": "all_texts"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_only_fetch_and_extract", "callee": "update", "is_member_call": true, "source_file": "scripts/collect_naver_only.py", "source_location": "L355", "receiver": "fields"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_only_fetch_and_extract", "callee": "get", "is_member_call": true, "source_file": "scripts/collect_naver_only.py", "source_location": "L358", "receiver": "poi"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_only_fetch_and_extract", "callee": "get", "is_member_call": true, "source_file": "scripts/collect_naver_only.py", "source_location": "L360", "receiver": "poi"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_only_fetch_and_extract", "callee": "get", "is_member_call": true, "source_file": "scripts/collect_naver_only.py", "source_location": "L362", "receiver": "TYPE_LABEL"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_only_fetch_and_extract", "callee": "get", "is_member_call": true, "source_file": "scripts/collect_naver_only.py", "source_location": "L363", "receiver": "poi"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_only_fetch_and_extract", "callee": "get", "is_member_call": true, "source_file": "scripts/collect_naver_only.py", "source_location": "L364", "receiver": "poi"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_only_load_csv_sample", "callee": "CSV_PATH", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/collect_naver_only.py", "source_location": "L374"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_only_load_csv_sample", "callee": "DictReader", "is_member_call": true, "source_file": "scripts/collect_naver_only.py", "source_location": "L375", "receiver": "csv"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_only_load_csv_sample", "callee": "f", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/collect_naver_only.py", "source_location": "L375"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_only_load_csv_sample", "callee": "append", "is_member_call": true, "source_file": "scripts/collect_naver_only.py", "source_location": "L376", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_collect_naver_only_load_csv_sample", "callee": "setdefault", "is_member_call": true, "source_file": "scripts/collect_naver_only.py", "source_location": "L376", "receiver": "buckets"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_only_load_csv_sample", "callee": "items", "is_member_call": true, "source_file": "scripts/collect_naver_only.py", "source_location": "L383", "receiver": "weights"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_only_load_csv_sample", "callee": "get", "is_member_call": true, "source_file": "scripts/collect_naver_only.py", "source_location": "L384", "receiver": "buckets"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_only_load_csv_sample", "callee": "extend", "is_member_call": true, "source_file": "scripts/collect_naver_only.py", "source_location": "L385", "receiver": "sample"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_only_load_csv_sample", "callee": "sample", "is_member_call": true, "source_file": "scripts/collect_naver_only.py", "source_location": "L385", "receiver": "random"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_only_load_csv_sample", "callee": "shuffle", "is_member_call": true, "source_file": "scripts/collect_naver_only.py", "source_location": "L386", "receiver": "random"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_only_load_progress", "callee": "exists", "is_member_call": true, "source_file": "scripts/collect_naver_only.py", "source_location": "L392", "receiver": "PROGRESS_PATH"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_only_load_progress", "callee": "PROGRESS_PATH", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/collect_naver_only.py", "source_location": "L393"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_only_load_progress", "callee": "load", "is_member_call": true, "source_file": "scripts/collect_naver_only.py", "source_location": "L394", "receiver": "json"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_only_load_progress", "callee": "f", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/collect_naver_only.py", "source_location": "L394"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_only_save_progress", "callee": "mkdir", "is_member_call": true, "source_file": "scripts/collect_naver_only.py", "source_location": "L398", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_collect_naver_only_save_progress", "callee": "PROGRESS_PATH", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/collect_naver_only.py", "source_location": "L399"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_only_save_progress", "callee": "dump", "is_member_call": true, "source_file": "scripts/collect_naver_only.py", "source_location": "L400", "receiver": "json"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_only_save_progress", "callee": "f", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/collect_naver_only.py", "source_location": "L400"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_only_save_progress", "callee": "values", "is_member_call": true, "source_file": "scripts/collect_naver_only.py", "source_location": "L400", "receiver": "results"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_only_main", "callee": "exit", "is_member_call": true, "source_file": "scripts/collect_naver_only.py", "source_location": "L407", "receiver": "sys"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_only_main", "callee": "SAMPLE_SIZE", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/collect_naver_only.py", "source_location": "L410"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_only_main", "callee": "monotonic", "is_member_call": true, "source_file": "scripts/collect_naver_only.py", "source_location": "L416", "receiver": "time"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_only_main", "callee": "ThreadPoolExecutor", "is_member_call": false, "source_file": "scripts/collect_naver_only.py", "source_location": "L419", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_collect_naver_only_main", "callee": "MAX_WORKERS", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/collect_naver_only.py", "source_location": "L419"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_only_main", "callee": "submit", "is_member_call": true, "source_file": "scripts/collect_naver_only.py", "source_location": "L420", "receiver": "pool"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_only_main", "callee": "http", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/collect_naver_only.py", "source_location": "L420"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_only_main", "callee": "tqdm", "is_member_call": false, "source_file": "scripts/collect_naver_only.py", "source_location": "L423", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_collect_naver_only_main", "callee": "as_completed", "is_member_call": false, "source_file": "scripts/collect_naver_only.py", "source_location": "L424", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_collect_naver_only_main", "callee": "result", "is_member_call": true, "source_file": "scripts/collect_naver_only.py", "source_location": "L425", "receiver": "fut"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_only_main", "callee": "append", "is_member_call": true, "source_file": "scripts/collect_naver_only.py", "source_location": "L427", "receiver": "batch_buf"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_only_main", "callee": "update", "is_member_call": true, "source_file": "scripts/collect_naver_only.py", "source_location": "L428", "receiver": "pbar"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_only_main", "callee": "clear", "is_member_call": true, "source_file": "scripts/collect_naver_only.py", "source_location": "L431", "receiver": "batch_buf"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_only_main", "callee": "monotonic", "is_member_call": true, "source_file": "scripts/collect_naver_only.py", "source_location": "L436", "receiver": "time"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_only_main", "callee": "mkdir", "is_member_call": true, "source_file": "scripts/collect_naver_only.py", "source_location": "L438", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_collect_naver_only_main", "callee": "values", "is_member_call": true, "source_file": "scripts/collect_naver_only.py", "source_location": "L439", "receiver": "done"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_only_main", "callee": "OUTPUT_PATH", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/collect_naver_only.py", "source_location": "L440"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_only_main", "callee": "dump", "is_member_call": true, "source_file": "scripts/collect_naver_only.py", "source_location": "L441", "receiver": "json"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_only_main", "callee": "f", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/collect_naver_only.py", "source_location": "L441"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_only_main", "callee": "get", "is_member_call": true, "source_file": "scripts/collect_naver_only.py", "source_location": "L449", "receiver": "r"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_only_main", "callee": "cnt", "is_member_call": false, "source_file": "scripts/collect_naver_only.py", "source_location": "L450", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_collect_naver_only_main", "callee": "get", "is_member_call": true, "source_file": "scripts/collect_naver_only.py", "source_location": "L450", "receiver": "r"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_only_main", "callee": "cnt", "is_member_call": false, "source_file": "scripts/collect_naver_only.py", "source_location": "L450", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_collect_naver_only_main", "callee": "get", "is_member_call": true, "source_file": "scripts/collect_naver_only.py", "source_location": "L450", "receiver": "r"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_only_main", "callee": "cnt", "is_member_call": false, "source_file": "scripts/collect_naver_only.py", "source_location": "L450", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_collect_naver_only_main", "callee": "get", "is_member_call": true, "source_file": "scripts/collect_naver_only.py", "source_location": "L450", "receiver": "r"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_only_main", "callee": "cnt", "is_member_call": false, "source_file": "scripts/collect_naver_only.py", "source_location": "L452", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_collect_naver_only_main", "callee": "get", "is_member_call": true, "source_file": "scripts/collect_naver_only.py", "source_location": "L452", "receiver": "r"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_only_main", "callee": "cnt", "is_member_call": false, "source_file": "scripts/collect_naver_only.py", "source_location": "L454", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_collect_naver_only_main", "callee": "get", "is_member_call": true, "source_file": "scripts/collect_naver_only.py", "source_location": "L454", "receiver": "r"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_only_main", "callee": "cnt", "is_member_call": false, "source_file": "scripts/collect_naver_only.py", "source_location": "L454", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_collect_naver_only_main", "callee": "get", "is_member_call": true, "source_file": "scripts/collect_naver_only.py", "source_location": "L454", "receiver": "r"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_only_main", "callee": "cnt", "is_member_call": false, "source_file": "scripts/collect_naver_only.py", "source_location": "L455", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_collect_naver_only_main", "callee": "get", "is_member_call": true, "source_file": "scripts/collect_naver_only.py", "source_location": "L455", "receiver": "r"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_only_main", "callee": "cnt", "is_member_call": false, "source_file": "scripts/collect_naver_only.py", "source_location": "L455", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_collect_naver_only_main", "callee": "get", "is_member_call": true, "source_file": "scripts/collect_naver_only.py", "source_location": "L455", "receiver": "r"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_only_main", "callee": "cnt", "is_member_call": false, "source_file": "scripts/collect_naver_only.py", "source_location": "L457", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_collect_naver_only_main", "callee": "get", "is_member_call": true, "source_file": "scripts/collect_naver_only.py", "source_location": "L457", "receiver": "r"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_only_main", "callee": "cnt", "is_member_call": false, "source_file": "scripts/collect_naver_only.py", "source_location": "L459", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_collect_naver_only_main", "callee": "get", "is_member_call": true, "source_file": "scripts/collect_naver_only.py", "source_location": "L459", "receiver": "r"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_only_main", "callee": "cnt", "is_member_call": false, "source_file": "scripts/collect_naver_only.py", "source_location": "L461", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_collect_naver_only_main", "callee": "get", "is_member_call": true, "source_file": "scripts/collect_naver_only.py", "source_location": "L461", "receiver": "r"}, {"caller_nid": "$graphify-root$_scripts_collect_naver_only_main", "callee": "k", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/collect_naver_only.py", "source_location": "L461"}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.31/a43ed21d165c464c5dbbf231443a8ed295ffb25d9039a0f391edb24120b4dafa.json b/graphify-out/cache/ast/v0.9.31/a43ed21d165c464c5dbbf231443a8ed295ffb25d9039a0f391edb24120b4dafa.json new file mode 100644 index 0000000..ffe03ac --- /dev/null +++ b/graphify-out/cache/ast/v0.9.31/a43ed21d165c464c5dbbf231443a8ed295ffb25d9039a0f391edb24120b4dafa.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_tests_test_hard_fail_py", "label": "test_hard_fail.py", "file_type": "code", "source_file": "tests/test_hard_fail.py", "source_location": "L1"}, {"id": "$graphify-root$_tests_test_hard_fail_make_poi", "label": "make_poi()", "file_type": "code", "source_file": "tests/test_hard_fail.py", "source_location": "L13", "_callable": true}, {"id": "poi", "label": "POI", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/tests/test_hard_fail.py"}, {"id": "$graphify-root$_tests_test_hard_fail_make_plan", "label": "make_plan()", "file_type": "code", "source_file": "tests/test_hard_fail.py", "source_location": "L30", "_callable": true}, {"id": "itineraryplan", "label": "ItineraryPlan", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/tests/test_hard_fail.py"}, {"id": "$graphify-root$_tests_test_hard_fail_make_matrix", "label": "make_matrix()", "file_type": "code", "source_file": "tests/test_hard_fail.py", "source_location": "L41", "_callable": true}, {"id": "fixture", "label": "fixture", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/tests/test_hard_fail.py"}, {"id": "$graphify-root$_tests_test_hard_fail_detector", "label": "detector()", "file_type": "code", "source_file": "tests/test_hard_fail.py", "source_location": "L58", "_callable": true}, {"id": "hardfaildetector", "label": "HardFailDetector", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/tests/test_hard_fail.py"}, {"id": "$graphify-root$_tests_test_hard_fail_open_poi", "label": "open_poi()", "file_type": "code", "source_file": "tests/test_hard_fail.py", "source_location": "L63", "_callable": true}, {"id": "$graphify-root$_tests_test_hard_fail_testhelpers", "label": "TestHelpers", "file_type": "code", "source_file": "tests/test_hard_fail.py", "source_location": "L71", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_tests_test_hard_fail_testhelpers_test_time_to_min", "label": ".test_time_to_min()", "file_type": "code", "source_file": "tests/test_hard_fail.py", "source_location": "L72", "_callable": true}, {"id": "$graphify-root$_tests_test_hard_fail_testhelpers_test_min_to_time", "label": ".test_min_to_time()", "file_type": "code", "source_file": "tests/test_hard_fail.py", "source_location": "L75", "_callable": true}, {"id": "$graphify-root$_tests_test_hard_fail_testhelpers_test_time_to_min_midnight", "label": ".test_time_to_min_midnight()", "file_type": "code", "source_file": "tests/test_hard_fail.py", "source_location": "L78", "_callable": true}, {"id": "$graphify-root$_tests_test_hard_fail_testhelpers_test_min_to_time_midnight", "label": ".test_min_to_time_midnight()", "file_type": "code", "source_file": "tests/test_hard_fail.py", "source_location": "L81", "_callable": true}, {"id": "$graphify-root$_tests_test_hard_fail_testhelpers_test_min_to_time_wraps_past_24h", "label": ".test_min_to_time_wraps_past_24h()", "file_type": "code", "source_file": "tests/test_hard_fail.py", "source_location": "L84", "_callable": true}, {"id": "$graphify-root$_tests_test_hard_fail_testoperatinghours", "label": "TestOperatingHours", "file_type": "code", "source_file": "tests/test_hard_fail.py", "source_location": "L92", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_tests_test_hard_fail_testoperatinghours_test_no_fail_within_hours", "label": ".test_no_fail_within_hours()", "file_type": "code", "source_file": "tests/test_hard_fail.py", "source_location": "L93", "_callable": true}, {"id": "$graphify-root$_tests_test_hard_fail_testoperatinghours_test_fail_arrive_before_open", "label": ".test_fail_arrive_before_open()", "file_type": "code", "source_file": "tests/test_hard_fail.py", "source_location": "L101", "_callable": true}, {"id": "$graphify-root$_tests_test_hard_fail_testoperatinghours_test_fail_arrive_after_close", "label": ".test_fail_arrive_after_close()", "file_type": "code", "source_file": "tests/test_hard_fail.py", "source_location": "L112", "_callable": true}, {"id": "$graphify-root$_tests_test_hard_fail_testoperatinghours_test_no_fail_for_fallback_hours", "label": ".test_no_fail_for_fallback_hours()", "file_type": "code", "source_file": "tests/test_hard_fail.py", "source_location": "L121", "_callable": true}, {"id": "$graphify-root$_tests_test_hard_fail_testtraveltimeimpossible", "label": "TestTravelTimeImpossible", "file_type": "code", "source_file": "tests/test_hard_fail.py", "source_location": "L135", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_tests_test_hard_fail_testtraveltimeimpossible_test_travel_impossible", "label": ".test_travel_impossible()", "file_type": "code", "source_file": "tests/test_hard_fail.py", "source_location": "L136", "_callable": true}, {"id": "$graphify-root$_tests_test_hard_fail_testtraveltimeimpossible_test_no_fail_sufficient_window", "label": ".test_no_fail_sufficient_window()", "file_type": "code", "source_file": "tests/test_hard_fail.py", "source_location": "L150", "_callable": true}, {"id": "$graphify-root$_tests_test_hard_fail_testscheduleinfeasible", "label": "TestScheduleInfeasible", "file_type": "code", "source_file": "tests/test_hard_fail.py", "source_location": "L165", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_tests_test_hard_fail_testscheduleinfeasible_test_schedule_exceeds_24h", "label": ".test_schedule_exceeds_24h()", "file_type": "code", "source_file": "tests/test_hard_fail.py", "source_location": "L166", "_callable": true}, {"id": "$graphify-root$_tests_test_hard_fail_testscheduleinfeasible_test_schedule_within_24h", "label": ".test_schedule_within_24h()", "file_type": "code", "source_file": "tests/test_hard_fail.py", "source_location": "L184", "_callable": true}, {"id": "$graphify-root$_tests_test_hard_fail_testnormalplan", "label": "TestNormalPlan", "file_type": "code", "source_file": "tests/test_hard_fail.py", "source_location": "L201", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_tests_test_hard_fail_testnormalplan_test_normal_plan_no_fails", "label": ".test_normal_plan_no_fails()", "file_type": "code", "source_file": "tests/test_hard_fail.py", "source_location": "L202", "_callable": true}, {"id": "$graphify-root$_tests_test_hard_fail_testdayindex", "label": "TestDayIndex", "file_type": "code", "source_file": "tests/test_hard_fail.py", "source_location": "L221", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_tests_test_hard_fail_testdayindex_test_day_index_defaults_to_none", "label": ".test_day_index_defaults_to_none()", "file_type": "code", "source_file": "tests/test_hard_fail.py", "source_location": "L222", "_callable": true}, {"id": "$graphify-root$_tests_test_hard_fail_testdayindex_test_day_index_set_when_passed", "label": ".test_day_index_set_when_passed()", "file_type": "code", "source_file": "tests/test_hard_fail.py", "source_location": "L229", "_callable": true}, {"id": "$graphify-root$_tests_test_hard_fail_rationale_1", "label": "Tests for HardFailDetector (TDD).", "file_type": "rationale", "source_file": "tests/test_hard_fail.py", "source_location": "L1"}], "edges": [{"source": "$graphify-root$_tests_test_hard_fail_py", "target": "pytest", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_hard_fail.py", "source_location": "L4", "weight": 1.0}, {"source": "$graphify-root$_tests_test_hard_fail_py", "target": "src_data_models", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_hard_fail.py", "source_location": "L6", "weight": 1.0}, {"source": "$graphify-root$_tests_test_hard_fail_py", "target": "src_validation_hard_fail", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_hard_fail.py", "source_location": "L7", "weight": 1.0}, {"source": "$graphify-root$_tests_test_hard_fail_py", "target": "$graphify-root$_tests_test_hard_fail_make_poi", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_hard_fail.py", "source_location": "L13", "weight": 1.0}, {"source": "$graphify-root$_tests_test_hard_fail_make_poi", "target": "poi", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "tests/test_hard_fail.py", "source_location": "L13", "weight": 1.0}, {"source": "$graphify-root$_tests_test_hard_fail_py", "target": "$graphify-root$_tests_test_hard_fail_make_plan", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_hard_fail.py", "source_location": "L30", "weight": 1.0}, {"source": "$graphify-root$_tests_test_hard_fail_make_plan", "target": "itineraryplan", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "tests/test_hard_fail.py", "source_location": "L30", "weight": 1.0}, {"source": "$graphify-root$_tests_test_hard_fail_py", "target": "$graphify-root$_tests_test_hard_fail_make_matrix", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_hard_fail.py", "source_location": "L41", "weight": 1.0}, {"source": "$graphify-root$_tests_test_hard_fail_detector", "target": "fixture", "relation": "references", "confidence": "EXTRACTED", "source_file": "tests/test_hard_fail.py", "source_location": "L57", "weight": 1.0, "context": "decorator"}, {"source": "$graphify-root$_tests_test_hard_fail_py", "target": "$graphify-root$_tests_test_hard_fail_detector", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_hard_fail.py", "source_location": "L58", "weight": 1.0}, {"source": "$graphify-root$_tests_test_hard_fail_detector", "target": "hardfaildetector", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "tests/test_hard_fail.py", "source_location": "L58", "weight": 1.0}, {"source": "$graphify-root$_tests_test_hard_fail_open_poi", "target": "fixture", "relation": "references", "confidence": "EXTRACTED", "source_file": "tests/test_hard_fail.py", "source_location": "L62", "weight": 1.0, "context": "decorator"}, {"source": "$graphify-root$_tests_test_hard_fail_py", "target": "$graphify-root$_tests_test_hard_fail_open_poi", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_hard_fail.py", "source_location": "L63", "weight": 1.0}, {"source": "$graphify-root$_tests_test_hard_fail_open_poi", "target": "poi", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "tests/test_hard_fail.py", "source_location": "L63", "weight": 1.0}, {"source": "$graphify-root$_tests_test_hard_fail_py", "target": "$graphify-root$_tests_test_hard_fail_testhelpers", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_hard_fail.py", "source_location": "L71", "weight": 1.0}, {"source": "$graphify-root$_tests_test_hard_fail_testhelpers", "target": "$graphify-root$_tests_test_hard_fail_testhelpers_test_time_to_min", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_hard_fail.py", "source_location": "L72", "weight": 1.0}, {"source": "$graphify-root$_tests_test_hard_fail_testhelpers", "target": "$graphify-root$_tests_test_hard_fail_testhelpers_test_min_to_time", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_hard_fail.py", "source_location": "L75", "weight": 1.0}, {"source": "$graphify-root$_tests_test_hard_fail_testhelpers", "target": "$graphify-root$_tests_test_hard_fail_testhelpers_test_time_to_min_midnight", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_hard_fail.py", "source_location": "L78", "weight": 1.0}, {"source": "$graphify-root$_tests_test_hard_fail_testhelpers", "target": "$graphify-root$_tests_test_hard_fail_testhelpers_test_min_to_time_midnight", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_hard_fail.py", "source_location": "L81", "weight": 1.0}, {"source": "$graphify-root$_tests_test_hard_fail_testhelpers", "target": "$graphify-root$_tests_test_hard_fail_testhelpers_test_min_to_time_wraps_past_24h", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_hard_fail.py", "source_location": "L84", "weight": 1.0}, {"source": "$graphify-root$_tests_test_hard_fail_py", "target": "$graphify-root$_tests_test_hard_fail_testoperatinghours", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_hard_fail.py", "source_location": "L92", "weight": 1.0}, {"source": "$graphify-root$_tests_test_hard_fail_testoperatinghours", "target": "$graphify-root$_tests_test_hard_fail_testoperatinghours_test_no_fail_within_hours", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_hard_fail.py", "source_location": "L93", "weight": 1.0}, {"source": "$graphify-root$_tests_test_hard_fail_testoperatinghours", "target": "$graphify-root$_tests_test_hard_fail_testoperatinghours_test_fail_arrive_before_open", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_hard_fail.py", "source_location": "L101", "weight": 1.0}, {"source": "$graphify-root$_tests_test_hard_fail_testoperatinghours", "target": "$graphify-root$_tests_test_hard_fail_testoperatinghours_test_fail_arrive_after_close", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_hard_fail.py", "source_location": "L112", "weight": 1.0}, {"source": "$graphify-root$_tests_test_hard_fail_testoperatinghours", "target": "$graphify-root$_tests_test_hard_fail_testoperatinghours_test_no_fail_for_fallback_hours", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_hard_fail.py", "source_location": "L121", "weight": 1.0}, {"source": "$graphify-root$_tests_test_hard_fail_py", "target": "$graphify-root$_tests_test_hard_fail_testtraveltimeimpossible", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_hard_fail.py", "source_location": "L135", "weight": 1.0}, {"source": "$graphify-root$_tests_test_hard_fail_testtraveltimeimpossible", "target": "$graphify-root$_tests_test_hard_fail_testtraveltimeimpossible_test_travel_impossible", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_hard_fail.py", "source_location": "L136", "weight": 1.0}, {"source": "$graphify-root$_tests_test_hard_fail_testtraveltimeimpossible", "target": "$graphify-root$_tests_test_hard_fail_testtraveltimeimpossible_test_no_fail_sufficient_window", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_hard_fail.py", "source_location": "L150", "weight": 1.0}, {"source": "$graphify-root$_tests_test_hard_fail_py", "target": "$graphify-root$_tests_test_hard_fail_testscheduleinfeasible", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_hard_fail.py", "source_location": "L165", "weight": 1.0}, {"source": "$graphify-root$_tests_test_hard_fail_testscheduleinfeasible", "target": "$graphify-root$_tests_test_hard_fail_testscheduleinfeasible_test_schedule_exceeds_24h", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_hard_fail.py", "source_location": "L166", "weight": 1.0}, {"source": "$graphify-root$_tests_test_hard_fail_testscheduleinfeasible", "target": "$graphify-root$_tests_test_hard_fail_testscheduleinfeasible_test_schedule_within_24h", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_hard_fail.py", "source_location": "L184", "weight": 1.0}, {"source": "$graphify-root$_tests_test_hard_fail_py", "target": "$graphify-root$_tests_test_hard_fail_testnormalplan", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_hard_fail.py", "source_location": "L201", "weight": 1.0}, {"source": "$graphify-root$_tests_test_hard_fail_testnormalplan", "target": "$graphify-root$_tests_test_hard_fail_testnormalplan_test_normal_plan_no_fails", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_hard_fail.py", "source_location": "L202", "weight": 1.0}, {"source": "$graphify-root$_tests_test_hard_fail_py", "target": "$graphify-root$_tests_test_hard_fail_testdayindex", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_hard_fail.py", "source_location": "L221", "weight": 1.0}, {"source": "$graphify-root$_tests_test_hard_fail_testdayindex", "target": "$graphify-root$_tests_test_hard_fail_testdayindex_test_day_index_defaults_to_none", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_hard_fail.py", "source_location": "L222", "weight": 1.0}, {"source": "$graphify-root$_tests_test_hard_fail_testdayindex", "target": "$graphify-root$_tests_test_hard_fail_testdayindex_test_day_index_set_when_passed", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_hard_fail.py", "source_location": "L229", "weight": 1.0}, {"source": "$graphify-root$_tests_test_hard_fail_make_poi", "target": "poi", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_hard_fail.py", "source_location": "L23", "weight": 1.0}, {"source": "$graphify-root$_tests_test_hard_fail_make_plan", "target": "itineraryplan", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_hard_fail.py", "source_location": "L32", "weight": 1.0}, {"source": "$graphify-root$_tests_test_hard_fail_detector", "target": "hardfaildetector", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_hard_fail.py", "source_location": "L59", "weight": 1.0}, {"source": "$graphify-root$_tests_test_hard_fail_open_poi", "target": "$graphify-root$_tests_test_hard_fail_make_poi", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_hard_fail.py", "source_location": "L64", "weight": 1.0}, {"source": "$graphify-root$_tests_test_hard_fail_testoperatinghours_test_no_fail_within_hours", "target": "$graphify-root$_tests_test_hard_fail_make_plan", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_hard_fail.py", "source_location": "L96", "weight": 1.0}, {"source": "$graphify-root$_tests_test_hard_fail_testoperatinghours_test_fail_arrive_before_open", "target": "$graphify-root$_tests_test_hard_fail_make_plan", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_hard_fail.py", "source_location": "L104", "weight": 1.0}, {"source": "$graphify-root$_tests_test_hard_fail_testoperatinghours_test_fail_arrive_after_close", "target": "$graphify-root$_tests_test_hard_fail_make_poi", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_hard_fail.py", "source_location": "L114", "weight": 1.0}, {"source": "$graphify-root$_tests_test_hard_fail_testoperatinghours_test_fail_arrive_after_close", "target": "$graphify-root$_tests_test_hard_fail_make_plan", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_hard_fail.py", "source_location": "L116", "weight": 1.0}, {"source": "$graphify-root$_tests_test_hard_fail_testoperatinghours_test_no_fail_for_fallback_hours", "target": "$graphify-root$_tests_test_hard_fail_make_poi", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_hard_fail.py", "source_location": "L123", "weight": 1.0}, {"source": "$graphify-root$_tests_test_hard_fail_testoperatinghours_test_no_fail_for_fallback_hours", "target": "$graphify-root$_tests_test_hard_fail_make_plan", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_hard_fail.py", "source_location": "L125", "weight": 1.0}, {"source": "$graphify-root$_tests_test_hard_fail_testtraveltimeimpossible_test_travel_impossible", "target": "$graphify-root$_tests_test_hard_fail_make_poi", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_hard_fail.py", "source_location": "L139", "weight": 1.0}, {"source": "$graphify-root$_tests_test_hard_fail_testtraveltimeimpossible_test_travel_impossible", "target": "$graphify-root$_tests_test_hard_fail_make_matrix", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_hard_fail.py", "source_location": "L142", "weight": 1.0}, {"source": "$graphify-root$_tests_test_hard_fail_testtraveltimeimpossible_test_travel_impossible", "target": "$graphify-root$_tests_test_hard_fail_make_plan", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_hard_fail.py", "source_location": "L143", "weight": 1.0}, {"source": "$graphify-root$_tests_test_hard_fail_testtraveltimeimpossible_test_no_fail_sufficient_window", "target": "$graphify-root$_tests_test_hard_fail_make_poi", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_hard_fail.py", "source_location": "L151", "weight": 1.0}, {"source": "$graphify-root$_tests_test_hard_fail_testtraveltimeimpossible_test_no_fail_sufficient_window", "target": "$graphify-root$_tests_test_hard_fail_make_matrix", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_hard_fail.py", "source_location": "L154", "weight": 1.0}, {"source": "$graphify-root$_tests_test_hard_fail_testtraveltimeimpossible_test_no_fail_sufficient_window", "target": "$graphify-root$_tests_test_hard_fail_make_plan", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_hard_fail.py", "source_location": "L155", "weight": 1.0}, {"source": "$graphify-root$_tests_test_hard_fail_testscheduleinfeasible_test_schedule_exceeds_24h", "target": "$graphify-root$_tests_test_hard_fail_make_poi", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_hard_fail.py", "source_location": "L169", "weight": 1.0}, {"source": "$graphify-root$_tests_test_hard_fail_testscheduleinfeasible_test_schedule_exceeds_24h", "target": "$graphify-root$_tests_test_hard_fail_make_matrix", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_hard_fail.py", "source_location": "L175", "weight": 1.0}, {"source": "$graphify-root$_tests_test_hard_fail_testscheduleinfeasible_test_schedule_exceeds_24h", "target": "$graphify-root$_tests_test_hard_fail_make_plan", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_hard_fail.py", "source_location": "L178", "weight": 1.0}, {"source": "$graphify-root$_tests_test_hard_fail_testscheduleinfeasible_test_schedule_within_24h", "target": "$graphify-root$_tests_test_hard_fail_make_poi", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_hard_fail.py", "source_location": "L186", "weight": 1.0}, {"source": "$graphify-root$_tests_test_hard_fail_testscheduleinfeasible_test_schedule_within_24h", "target": "$graphify-root$_tests_test_hard_fail_make_matrix", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_hard_fail.py", "source_location": "L189", "weight": 1.0}, {"source": "$graphify-root$_tests_test_hard_fail_testscheduleinfeasible_test_schedule_within_24h", "target": "$graphify-root$_tests_test_hard_fail_make_plan", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_hard_fail.py", "source_location": "L190", "weight": 1.0}, {"source": "$graphify-root$_tests_test_hard_fail_testnormalplan_test_normal_plan_no_fails", "target": "$graphify-root$_tests_test_hard_fail_make_poi", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_hard_fail.py", "source_location": "L204", "weight": 1.0}, {"source": "$graphify-root$_tests_test_hard_fail_testnormalplan_test_normal_plan_no_fails", "target": "$graphify-root$_tests_test_hard_fail_make_matrix", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_hard_fail.py", "source_location": "L209", "weight": 1.0}, {"source": "$graphify-root$_tests_test_hard_fail_testnormalplan_test_normal_plan_no_fails", "target": "$graphify-root$_tests_test_hard_fail_make_plan", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_hard_fail.py", "source_location": "L212", "weight": 1.0}, {"source": "$graphify-root$_tests_test_hard_fail_testdayindex_test_day_index_defaults_to_none", "target": "$graphify-root$_tests_test_hard_fail_make_poi", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_hard_fail.py", "source_location": "L223", "weight": 1.0}, {"source": "$graphify-root$_tests_test_hard_fail_testdayindex_test_day_index_defaults_to_none", "target": "$graphify-root$_tests_test_hard_fail_make_plan", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_hard_fail.py", "source_location": "L224", "weight": 1.0}, {"source": "$graphify-root$_tests_test_hard_fail_testdayindex_test_day_index_set_when_passed", "target": "$graphify-root$_tests_test_hard_fail_make_poi", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_hard_fail.py", "source_location": "L230", "weight": 1.0}, {"source": "$graphify-root$_tests_test_hard_fail_testdayindex_test_day_index_set_when_passed", "target": "$graphify-root$_tests_test_hard_fail_make_plan", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_hard_fail.py", "source_location": "L231", "weight": 1.0}, {"source": "$graphify-root$_tests_test_hard_fail_rationale_1", "target": "$graphify-root$_tests_test_hard_fail_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_hard_fail.py", "source_location": "L1", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_tests_test_hard_fail_make_plan", "callee": "DayPlan", "is_member_call": false, "source_file": "tests/test_hard_fail.py", "source_location": "L33", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_hard_fail_make_plan", "callee": "PlaceInput", "is_member_call": false, "source_file": "tests/test_hard_fail.py", "source_location": "L33", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_hard_fail_make_matrix", "callee": "items", "is_member_call": true, "source_file": "tests/test_hard_fail.py", "source_location": "L43", "receiver": "pairs"}, {"caller_nid": "$graphify-root$_tests_test_hard_fail_make_matrix", "callee": "setdefault", "is_member_call": true, "source_file": "tests/test_hard_fail.py", "source_location": "L44", "receiver": "matrix"}, {"caller_nid": "$graphify-root$_tests_test_hard_fail_testhelpers_test_time_to_min", "callee": "_time_to_min", "is_member_call": true, "source_file": "tests/test_hard_fail.py", "source_location": "L73", "receiver": "HardFailDetector"}, {"caller_nid": "$graphify-root$_tests_test_hard_fail_testhelpers_test_min_to_time", "callee": "_min_to_time", "is_member_call": true, "source_file": "tests/test_hard_fail.py", "source_location": "L76", "receiver": "HardFailDetector"}, {"caller_nid": "$graphify-root$_tests_test_hard_fail_testhelpers_test_time_to_min_midnight", "callee": "_time_to_min", "is_member_call": true, "source_file": "tests/test_hard_fail.py", "source_location": "L79", "receiver": "HardFailDetector"}, {"caller_nid": "$graphify-root$_tests_test_hard_fail_testhelpers_test_min_to_time_midnight", "callee": "_min_to_time", "is_member_call": true, "source_file": "tests/test_hard_fail.py", "source_location": "L82", "receiver": "HardFailDetector"}, {"caller_nid": "$graphify-root$_tests_test_hard_fail_testhelpers_test_min_to_time_wraps_past_24h", "callee": "_min_to_time", "is_member_call": true, "source_file": "tests/test_hard_fail.py", "source_location": "L85", "receiver": "HardFailDetector"}, {"caller_nid": "$graphify-root$_tests_test_hard_fail_testoperatinghours_test_no_fail_within_hours", "callee": "detect", "is_member_call": true, "source_file": "tests/test_hard_fail.py", "source_location": "L97", "receiver": "detector"}, {"caller_nid": "$graphify-root$_tests_test_hard_fail_testoperatinghours_test_fail_arrive_before_open", "callee": "detect", "is_member_call": true, "source_file": "tests/test_hard_fail.py", "source_location": "L105", "receiver": "detector"}, {"caller_nid": "$graphify-root$_tests_test_hard_fail_testoperatinghours_test_fail_arrive_after_close", "callee": "detect", "is_member_call": true, "source_file": "tests/test_hard_fail.py", "source_location": "L117", "receiver": "detector"}, {"caller_nid": "$graphify-root$_tests_test_hard_fail_testoperatinghours_test_no_fail_for_fallback_hours", "callee": "detect", "is_member_call": true, "source_file": "tests/test_hard_fail.py", "source_location": "L126", "receiver": "detector"}, {"caller_nid": "$graphify-root$_tests_test_hard_fail_testtraveltimeimpossible_test_travel_impossible", "callee": "detect", "is_member_call": true, "source_file": "tests/test_hard_fail.py", "source_location": "L144", "receiver": "detector"}, {"caller_nid": "$graphify-root$_tests_test_hard_fail_testtraveltimeimpossible_test_no_fail_sufficient_window", "callee": "detect", "is_member_call": true, "source_file": "tests/test_hard_fail.py", "source_location": "L156", "receiver": "detector"}, {"caller_nid": "$graphify-root$_tests_test_hard_fail_testscheduleinfeasible_test_schedule_exceeds_24h", "callee": "detect", "is_member_call": true, "source_file": "tests/test_hard_fail.py", "source_location": "L179", "receiver": "detector"}, {"caller_nid": "$graphify-root$_tests_test_hard_fail_testscheduleinfeasible_test_schedule_within_24h", "callee": "detect", "is_member_call": true, "source_file": "tests/test_hard_fail.py", "source_location": "L191", "receiver": "detector"}, {"caller_nid": "$graphify-root$_tests_test_hard_fail_testnormalplan_test_normal_plan_no_fails", "callee": "detect", "is_member_call": true, "source_file": "tests/test_hard_fail.py", "source_location": "L213", "receiver": "detector"}, {"caller_nid": "$graphify-root$_tests_test_hard_fail_testdayindex_test_day_index_defaults_to_none", "callee": "detect", "is_member_call": true, "source_file": "tests/test_hard_fail.py", "source_location": "L225", "receiver": "detector"}, {"caller_nid": "$graphify-root$_tests_test_hard_fail_testdayindex_test_day_index_set_when_passed", "callee": "detect", "is_member_call": true, "source_file": "tests/test_hard_fail.py", "source_location": "L232", "receiver": "detector"}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.31/a546b170d2ad6bcb524c3b8763e0befd263cd7904ebb3e6fb501f36d8144fd48.json b/graphify-out/cache/ast/v0.9.31/a546b170d2ad6bcb524c3b8763e0befd263cd7904ebb3e6fb501f36d8144fd48.json new file mode 100644 index 0000000..cf3925c --- /dev/null +++ b/graphify-out/cache/ast/v0.9.31/a546b170d2ad6bcb524c3b8763e0befd263cd7904ebb3e6fb501f36d8144fd48.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_tests_test_estimated_hardfail_py", "label": "test_estimated_hardfail.py", "file_type": "code", "source_file": "tests/test_estimated_hardfail.py", "source_location": "L1"}, {"id": "$graphify-root$_tests_test_estimated_hardfail_poi", "label": "_poi()", "file_type": "code", "source_file": "tests/test_estimated_hardfail.py", "source_location": "L8", "_callable": true}, {"id": "$graphify-root$_tests_test_estimated_hardfail_plan", "label": "_plan()", "file_type": "code", "source_file": "tests/test_estimated_hardfail.py", "source_location": "L22", "_callable": true}, {"id": "itineraryplan", "label": "ItineraryPlan", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/tests/test_estimated_hardfail.py"}, {"id": "$graphify-root$_tests_test_estimated_hardfail_test_estimated_hours_conflict_flagged_estimated", "label": "test_estimated_hours_conflict_flagged_estimated()", "file_type": "code", "source_file": "tests/test_estimated_hardfail.py", "source_location": "L31", "_callable": true}, {"id": "$graphify-root$_tests_test_estimated_hardfail_test_verified_hours_conflict_not_estimated_and_message_unchanged", "label": "test_verified_hours_conflict_not_estimated_and_message_unchanged()", "file_type": "code", "source_file": "tests/test_estimated_hardfail.py", "source_location": "L41", "_callable": true}, {"id": "$graphify-root$_tests_test_estimated_hardfail_rationale_1", "label": "P1: \ucd94\uc815 \uc601\uc5c5\uc2dc\uac04 \ucda9\ub3cc\uc758 \ud558\ub4dc\ud398\uc77c \uac15\ub4f1 \ud14c\uc2a4\ud2b8.", "file_type": "rationale", "source_file": "tests/test_estimated_hardfail.py", "source_location": "L1"}], "edges": [{"source": "$graphify-root$_tests_test_estimated_hardfail_py", "target": "src_data_models", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_estimated_hardfail.py", "source_location": "L4", "weight": 1.0}, {"source": "$graphify-root$_tests_test_estimated_hardfail_py", "target": "src_validation_hard_fail", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_estimated_hardfail.py", "source_location": "L5", "weight": 1.0}, {"source": "$graphify-root$_tests_test_estimated_hardfail_py", "target": "$graphify-root$_tests_test_estimated_hardfail_poi", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_estimated_hardfail.py", "source_location": "L8", "weight": 1.0}, {"source": "$graphify-root$_tests_test_estimated_hardfail_py", "target": "$graphify-root$_tests_test_estimated_hardfail_plan", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_estimated_hardfail.py", "source_location": "L22", "weight": 1.0}, {"source": "$graphify-root$_tests_test_estimated_hardfail_plan", "target": "itineraryplan", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "tests/test_estimated_hardfail.py", "source_location": "L22", "weight": 1.0}, {"source": "$graphify-root$_tests_test_estimated_hardfail_py", "target": "$graphify-root$_tests_test_estimated_hardfail_test_estimated_hours_conflict_flagged_estimated", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_estimated_hardfail.py", "source_location": "L31", "weight": 1.0}, {"source": "$graphify-root$_tests_test_estimated_hardfail_py", "target": "$graphify-root$_tests_test_estimated_hardfail_test_verified_hours_conflict_not_estimated_and_message_unchanged", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_estimated_hardfail.py", "source_location": "L41", "weight": 1.0}, {"source": "$graphify-root$_tests_test_estimated_hardfail_plan", "target": "itineraryplan", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_estimated_hardfail.py", "source_location": "L23", "weight": 1.0}, {"source": "$graphify-root$_tests_test_estimated_hardfail_test_estimated_hours_conflict_flagged_estimated", "target": "$graphify-root$_tests_test_estimated_hardfail_poi", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_estimated_hardfail.py", "source_location": "L33", "weight": 1.0}, {"source": "$graphify-root$_tests_test_estimated_hardfail_test_estimated_hours_conflict_flagged_estimated", "target": "$graphify-root$_tests_test_estimated_hardfail_plan", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_estimated_hardfail.py", "source_location": "L34", "weight": 1.0}, {"source": "$graphify-root$_tests_test_estimated_hardfail_test_verified_hours_conflict_not_estimated_and_message_unchanged", "target": "$graphify-root$_tests_test_estimated_hardfail_poi", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_estimated_hardfail.py", "source_location": "L43", "weight": 1.0}, {"source": "$graphify-root$_tests_test_estimated_hardfail_test_verified_hours_conflict_not_estimated_and_message_unchanged", "target": "$graphify-root$_tests_test_estimated_hardfail_plan", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_estimated_hardfail.py", "source_location": "L44", "weight": 1.0}, {"source": "$graphify-root$_tests_test_estimated_hardfail_rationale_1", "target": "$graphify-root$_tests_test_estimated_hardfail_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_estimated_hardfail.py", "source_location": "L1", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_tests_test_estimated_hardfail_poi", "callee": "POI", "is_member_call": false, "source_file": "tests/test_estimated_hardfail.py", "source_location": "L9", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_estimated_hardfail_plan", "callee": "DayPlan", "is_member_call": false, "source_file": "tests/test_estimated_hardfail.py", "source_location": "L24", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_estimated_hardfail_plan", "callee": "PlaceInput", "is_member_call": false, "source_file": "tests/test_estimated_hardfail.py", "source_location": "L24", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_estimated_hardfail_test_estimated_hours_conflict_flagged_estimated", "callee": "detect", "is_member_call": true, "source_file": "tests/test_estimated_hardfail.py", "source_location": "L34", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_estimated_hardfail_test_estimated_hours_conflict_flagged_estimated", "callee": "HardFailDetector", "is_member_call": false, "source_file": "tests/test_estimated_hardfail.py", "source_location": "L34", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_estimated_hardfail_test_verified_hours_conflict_not_estimated_and_message_unchanged", "callee": "detect", "is_member_call": true, "source_file": "tests/test_estimated_hardfail.py", "source_location": "L44", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_estimated_hardfail_test_verified_hours_conflict_not_estimated_and_message_unchanged", "callee": "HardFailDetector", "is_member_call": false, "source_file": "tests/test_estimated_hardfail.py", "source_location": "L44", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_estimated_hardfail_test_verified_hours_conflict_not_estimated_and_message_unchanged", "callee": "endswith", "is_member_call": true, "source_file": "tests/test_estimated_hardfail.py", "source_location": "L49", "receiver": null}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.31/a54cd9190059c611c8dce01363dfda8f451357b1885d952180e373c1b649dcfa.json b/graphify-out/cache/ast/v0.9.31/a54cd9190059c611c8dce01363dfda8f451357b1885d952180e373c1b649dcfa.json new file mode 100644 index 0000000..6a01f68 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.31/a54cd9190059c611c8dce01363dfda8f451357b1885d952180e373c1b649dcfa.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_scripts_build_knowledge_graph_py", "label": "build_knowledge_graph.py", "file_type": "code", "source_file": "scripts/build_knowledge_graph.py", "source_location": "L1"}, {"id": "$graphify-root$_scripts_build_knowledge_graph_place_type", "label": "_place_type()", "file_type": "code", "source_file": "scripts/build_knowledge_graph.py", "source_location": "L61", "_callable": true}, {"id": "$graphify-root$_scripts_build_knowledge_graph_parse_region_chain", "label": "_parse_region_chain()", "file_type": "code", "source_file": "scripts/build_knowledge_graph.py", "source_location": "L67", "_callable": true}, {"id": "$graphify-root$_scripts_build_knowledge_graph_load_category_group_map", "label": "_load_category_group_map()", "file_type": "code", "source_file": "scripts/build_knowledge_graph.py", "source_location": "L100", "_callable": true}, {"id": "$graphify-root$_scripts_build_knowledge_graph_project_meters", "label": "_project_meters()", "file_type": "code", "source_file": "scripts/build_knowledge_graph.py", "source_location": "L113", "_callable": true}, {"id": "ndarray", "label": "ndarray", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/scripts/build_knowledge_graph.py"}, {"id": "$graphify-root$_scripts_build_knowledge_graph_build_near_by", "label": "build_near_by()", "file_type": "code", "source_file": "scripts/build_knowledge_graph.py", "source_location": "L121", "_callable": true}, {"id": "dataframe", "label": "DataFrame", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/scripts/build_knowledge_graph.py"}, {"id": "$graphify-root$_scripts_build_knowledge_graph_selfcheck", "label": "_selfcheck()", "file_type": "code", "source_file": "scripts/build_knowledge_graph.py", "source_location": "L154", "_callable": true}, {"id": "$graphify-root$_scripts_build_knowledge_graph_main", "label": "main()", "file_type": "code", "source_file": "scripts/build_knowledge_graph.py", "source_location": "L170", "_callable": true}, {"id": "$graphify-root$_scripts_build_knowledge_graph_rationale_68", "label": "\uc8fc\uc18c \u2192 [(id, name), ...] \ucd5c\uc0c1\uc704(\uc74d/\uba74/\ub3d9 \ub610\ub294 \uc2dc) \u2192 \uc2dc \u2192 \ub3c4 \uc21c\uc11c. \ubc18\ud658 \ub9ac\uc2a4\ud2b8\uc758 \uccab \ud56d\ubaa9\uc774 Place\uac00\u2026", "file_type": "rationale", "source_file": "scripts/build_knowledge_graph.py", "source_location": "L68"}, {"id": "$graphify-root$_scripts_build_knowledge_graph_rationale_114", "label": "\uc18c\ubc94\uc704(\uc81c\uc8fc\ub3c4)\uc6a9 \ub4f1\uc7a5\ubc29\ud615 \ud22c\uc601 \u2014 300m \uc2a4\ucf00\uc77c\uc5d0\uc11c \uc624\ucc28 \ubb34\uc2dc \uac00\ub2a5.", "file_type": "rationale", "source_file": "scripts/build_knowledge_graph.py", "source_location": "L114"}], "edges": [{"source": "$graphify-root$_scripts_build_knowledge_graph_py", "target": "math", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/build_knowledge_graph.py", "source_location": "L17", "weight": 1.0}, {"source": "$graphify-root$_scripts_build_knowledge_graph_py", "target": "re", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/build_knowledge_graph.py", "source_location": "L18", "weight": 1.0}, {"source": "$graphify-root$_scripts_build_knowledge_graph_py", "target": "sys", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/build_knowledge_graph.py", "source_location": "L19", "weight": 1.0}, {"source": "$graphify-root$_scripts_build_knowledge_graph_py", "target": "pathlib", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/build_knowledge_graph.py", "source_location": "L20", "weight": 1.0}, {"source": "$graphify-root$_scripts_build_knowledge_graph_py", "target": "numpy", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/build_knowledge_graph.py", "source_location": "L22", "weight": 1.0, "local_alias": "np"}, {"source": "$graphify-root$_scripts_build_knowledge_graph_py", "target": "pandas", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/build_knowledge_graph.py", "source_location": "L23", "weight": 1.0, "local_alias": "pd"}, {"source": "$graphify-root$_scripts_build_knowledge_graph_py", "target": "scipy_spatial", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/build_knowledge_graph.py", "source_location": "L24", "weight": 1.0}, {"source": "$graphify-root$_scripts_build_knowledge_graph_py", "target": "$graphify-root$_scripts_build_knowledge_graph_place_type", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/build_knowledge_graph.py", "source_location": "L61", "weight": 1.0}, {"source": "$graphify-root$_scripts_build_knowledge_graph_py", "target": "$graphify-root$_scripts_build_knowledge_graph_parse_region_chain", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/build_knowledge_graph.py", "source_location": "L67", "weight": 1.0}, {"source": "$graphify-root$_scripts_build_knowledge_graph_py", "target": "$graphify-root$_scripts_build_knowledge_graph_load_category_group_map", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/build_knowledge_graph.py", "source_location": "L100", "weight": 1.0}, {"source": "$graphify-root$_scripts_build_knowledge_graph_py", "target": "$graphify-root$_scripts_build_knowledge_graph_project_meters", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/build_knowledge_graph.py", "source_location": "L113", "weight": 1.0}, {"source": "$graphify-root$_scripts_build_knowledge_graph_project_meters", "target": "ndarray", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "scripts/build_knowledge_graph.py", "source_location": "L113", "weight": 1.0}, {"source": "$graphify-root$_scripts_build_knowledge_graph_project_meters", "target": "ndarray", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "scripts/build_knowledge_graph.py", "source_location": "L113", "weight": 1.0}, {"source": "$graphify-root$_scripts_build_knowledge_graph_project_meters", "target": "ndarray", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "scripts/build_knowledge_graph.py", "source_location": "L113", "weight": 1.0}, {"source": "$graphify-root$_scripts_build_knowledge_graph_py", "target": "$graphify-root$_scripts_build_knowledge_graph_build_near_by", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/build_knowledge_graph.py", "source_location": "L121", "weight": 1.0}, {"source": "$graphify-root$_scripts_build_knowledge_graph_build_near_by", "target": "dataframe", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "scripts/build_knowledge_graph.py", "source_location": "L121", "weight": 1.0}, {"source": "$graphify-root$_scripts_build_knowledge_graph_build_near_by", "target": "dataframe", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "scripts/build_knowledge_graph.py", "source_location": "L121", "weight": 1.0}, {"source": "$graphify-root$_scripts_build_knowledge_graph_py", "target": "$graphify-root$_scripts_build_knowledge_graph_selfcheck", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/build_knowledge_graph.py", "source_location": "L154", "weight": 1.0}, {"source": "$graphify-root$_scripts_build_knowledge_graph_py", "target": "$graphify-root$_scripts_build_knowledge_graph_main", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/build_knowledge_graph.py", "source_location": "L170", "weight": 1.0}, {"source": "$graphify-root$_scripts_build_knowledge_graph_build_near_by", "target": "$graphify-root$_scripts_build_knowledge_graph_project_meters", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/build_knowledge_graph.py", "source_location": "L123", "weight": 1.0}, {"source": "$graphify-root$_scripts_build_knowledge_graph_build_near_by", "target": "dataframe", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/build_knowledge_graph.py", "source_location": "L135", "weight": 1.0}, {"source": "$graphify-root$_scripts_build_knowledge_graph_selfcheck", "target": "$graphify-root$_scripts_build_knowledge_graph_place_type", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/build_knowledge_graph.py", "source_location": "L155", "weight": 1.0}, {"source": "$graphify-root$_scripts_build_knowledge_graph_selfcheck", "target": "$graphify-root$_scripts_build_knowledge_graph_parse_region_chain", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/build_knowledge_graph.py", "source_location": "L159", "weight": 1.0}, {"source": "$graphify-root$_scripts_build_knowledge_graph_main", "target": "$graphify-root$_scripts_build_knowledge_graph_selfcheck", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/build_knowledge_graph.py", "source_location": "L172", "weight": 1.0}, {"source": "$graphify-root$_scripts_build_knowledge_graph_main", "target": "$graphify-root$_scripts_build_knowledge_graph_load_category_group_map", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/build_knowledge_graph.py", "source_location": "L176", "weight": 1.0}, {"source": "$graphify-root$_scripts_build_knowledge_graph_main", "target": "$graphify-root$_scripts_build_knowledge_graph_place_type", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/build_knowledge_graph.py", "source_location": "L181", "weight": 1.0}, {"source": "$graphify-root$_scripts_build_knowledge_graph_main", "target": "dataframe", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/build_knowledge_graph.py", "source_location": "L188", "weight": 1.0}, {"source": "$graphify-root$_scripts_build_knowledge_graph_main", "target": "$graphify-root$_scripts_build_knowledge_graph_parse_region_chain", "relation": "indirect_call", "context": "argument", "confidence": "INFERRED", "source_file": "scripts/build_knowledge_graph.py", "source_location": "L218", "weight": 1.0}, {"source": "$graphify-root$_scripts_build_knowledge_graph_main", "target": "$graphify-root$_scripts_build_knowledge_graph_build_near_by", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/build_knowledge_graph.py", "source_location": "L245", "weight": 1.0}, {"source": "$graphify-root$_scripts_build_knowledge_graph_rationale_68", "target": "$graphify-root$_scripts_build_knowledge_graph_parse_region_chain", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/build_knowledge_graph.py", "source_location": "L68", "weight": 1.0}, {"source": "$graphify-root$_scripts_build_knowledge_graph_rationale_114", "target": "$graphify-root$_scripts_build_knowledge_graph_project_meters", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/build_knowledge_graph.py", "source_location": "L114", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_scripts_build_knowledge_graph_place_type", "callee": "get", "is_member_call": true, "source_file": "scripts/build_knowledge_graph.py", "source_location": "L64", "receiver": "PLACE_TYPE_BY_MAJOR"}, {"caller_nid": "$graphify-root$_scripts_build_knowledge_graph_parse_region_chain", "callee": "search", "is_member_call": true, "source_file": "scripts/build_knowledge_graph.py", "source_location": "L72", "receiver": "CITY_RE"}, {"caller_nid": "$graphify-root$_scripts_build_knowledge_graph_parse_region_chain", "callee": "group", "is_member_call": true, "source_file": "scripts/build_knowledge_graph.py", "source_location": "L76", "receiver": "city_m"}, {"caller_nid": "$graphify-root$_scripts_build_knowledge_graph_parse_region_chain", "callee": "search", "is_member_call": true, "source_file": "scripts/build_knowledge_graph.py", "source_location": "L81", "receiver": "EUPMYEON_RE"}, {"caller_nid": "$graphify-root$_scripts_build_knowledge_graph_parse_region_chain", "callee": "group", "is_member_call": true, "source_file": "scripts/build_knowledge_graph.py", "source_location": "L83", "receiver": "m"}, {"caller_nid": "$graphify-root$_scripts_build_knowledge_graph_parse_region_chain", "callee": "search", "is_member_call": true, "source_file": "scripts/build_knowledge_graph.py", "source_location": "L85", "receiver": "PAREN_DONG_RE"}, {"caller_nid": "$graphify-root$_scripts_build_knowledge_graph_parse_region_chain", "callee": "group", "is_member_call": true, "source_file": "scripts/build_knowledge_graph.py", "source_location": "L87", "receiver": "m"}, {"caller_nid": "$graphify-root$_scripts_build_knowledge_graph_parse_region_chain", "callee": "search", "is_member_call": true, "source_file": "scripts/build_knowledge_graph.py", "source_location": "L89", "receiver": "BARE_DONG_RE"}, {"caller_nid": "$graphify-root$_scripts_build_knowledge_graph_parse_region_chain", "callee": "group", "is_member_call": true, "source_file": "scripts/build_knowledge_graph.py", "source_location": "L91", "receiver": "m"}, {"caller_nid": "$graphify-root$_scripts_build_knowledge_graph_parse_region_chain", "callee": "insert", "is_member_call": true, "source_file": "scripts/build_knowledge_graph.py", "source_location": "L95", "receiver": "chain"}, {"caller_nid": "$graphify-root$_scripts_build_knowledge_graph_load_category_group_map", "callee": "read_excel", "is_member_call": true, "source_file": "scripts/build_knowledge_graph.py", "source_location": "L101", "receiver": "pd"}, {"caller_nid": "$graphify-root$_scripts_build_knowledge_graph_load_category_group_map", "callee": "CATEGORY_XLSX", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/build_knowledge_graph.py", "source_location": "L101"}, {"caller_nid": "$graphify-root$_scripts_build_knowledge_graph_load_category_group_map", "callee": "copy", "is_member_call": true, "source_file": "scripts/build_knowledge_graph.py", "source_location": "L102", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_build_knowledge_graph_load_category_group_map", "callee": "dropna", "is_member_call": true, "source_file": "scripts/build_knowledge_graph.py", "source_location": "L107", "receiver": "tbl"}, {"caller_nid": "$graphify-root$_scripts_build_knowledge_graph_load_category_group_map", "callee": "update", "is_member_call": true, "source_file": "scripts/build_knowledge_graph.py", "source_location": "L109", "receiver": "group_map"}, {"caller_nid": "$graphify-root$_scripts_build_knowledge_graph_load_category_group_map", "callee": "CATEGORY_GROUP_OVERRIDE", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/build_knowledge_graph.py", "source_location": "L109"}, {"caller_nid": "$graphify-root$_scripts_build_knowledge_graph_project_meters", "callee": "radians", "is_member_call": true, "source_file": "scripts/build_knowledge_graph.py", "source_location": "L115", "receiver": "math"}, {"caller_nid": "$graphify-root$_scripts_build_knowledge_graph_project_meters", "callee": "mean", "is_member_call": true, "source_file": "scripts/build_knowledge_graph.py", "source_location": "L115", "receiver": "np"}, {"caller_nid": "$graphify-root$_scripts_build_knowledge_graph_project_meters", "callee": "cos", "is_member_call": true, "source_file": "scripts/build_knowledge_graph.py", "source_location": "L116", "receiver": "math"}, {"caller_nid": "$graphify-root$_scripts_build_knowledge_graph_project_meters", "callee": "column_stack", "is_member_call": true, "source_file": "scripts/build_knowledge_graph.py", "source_location": "L118", "receiver": "np"}, {"caller_nid": "$graphify-root$_scripts_build_knowledge_graph_build_near_by", "callee": "dropna", "is_member_call": true, "source_file": "scripts/build_knowledge_graph.py", "source_location": "L122", "receiver": "places"}, {"caller_nid": "$graphify-root$_scripts_build_knowledge_graph_build_near_by", "callee": "to_numpy", "is_member_call": true, "source_file": "scripts/build_knowledge_graph.py", "source_location": "L123", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_build_knowledge_graph_build_near_by", "callee": "to_numpy", "is_member_call": true, "source_file": "scripts/build_knowledge_graph.py", "source_location": "L123", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_build_knowledge_graph_build_near_by", "callee": "to_numpy", "is_member_call": true, "source_file": "scripts/build_knowledge_graph.py", "source_location": "L124", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_build_knowledge_graph_build_near_by", "callee": "cKDTree", "is_member_call": false, "source_file": "scripts/build_knowledge_graph.py", "source_location": "L126", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_build_knowledge_graph_build_near_by", "callee": "query_pairs", "is_member_call": true, "source_file": "scripts/build_knowledge_graph.py", "source_location": "L127", "receiver": "tree"}, {"caller_nid": "$graphify-root$_scripts_build_knowledge_graph_build_near_by", "callee": "NEAR_BY_RADIUS_M", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/build_knowledge_graph.py", "source_location": "L127"}, {"caller_nid": "$graphify-root$_scripts_build_knowledge_graph_build_near_by", "callee": "norm", "is_member_call": true, "source_file": "scripts/build_knowledge_graph.py", "source_location": "L130", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_build_knowledge_graph_build_near_by", "callee": "column_stack", "is_member_call": true, "source_file": "scripts/build_knowledge_graph.py", "source_location": "L131", "receiver": "np"}, {"caller_nid": "$graphify-root$_scripts_build_knowledge_graph_build_near_by", "callee": "column_stack", "is_member_call": true, "source_file": "scripts/build_knowledge_graph.py", "source_location": "L132", "receiver": "np"}, {"caller_nid": "$graphify-root$_scripts_build_knowledge_graph_build_near_by", "callee": "vstack", "is_member_call": true, "source_file": "scripts/build_knowledge_graph.py", "source_location": "L133", "receiver": "np"}, {"caller_nid": "$graphify-root$_scripts_build_knowledge_graph_build_near_by", "callee": "astype", "is_member_call": true, "source_file": "scripts/build_knowledge_graph.py", "source_location": "L136", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_build_knowledge_graph_build_near_by", "callee": "int", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/build_knowledge_graph.py", "source_location": "L136"}, {"caller_nid": "$graphify-root$_scripts_build_knowledge_graph_build_near_by", "callee": "astype", "is_member_call": true, "source_file": "scripts/build_knowledge_graph.py", "source_location": "L137", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_build_knowledge_graph_build_near_by", "callee": "int", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/build_knowledge_graph.py", "source_location": "L137"}, {"caller_nid": "$graphify-root$_scripts_build_knowledge_graph_build_near_by", "callee": "head", "is_member_call": true, "source_file": "scripts/build_knowledge_graph.py", "source_location": "L138", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_build_knowledge_graph_build_near_by", "callee": "NEAR_BY_TOP_K", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/build_knowledge_graph.py", "source_location": "L138"}, {"caller_nid": "$graphify-root$_scripts_build_knowledge_graph_build_near_by", "callee": "groupby", "is_member_call": true, "source_file": "scripts/build_knowledge_graph.py", "source_location": "L138", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_build_knowledge_graph_build_near_by", "callee": "sort_values", "is_member_call": true, "source_file": "scripts/build_knowledge_graph.py", "source_location": "L138", "receiver": "df"}, {"caller_nid": "$graphify-root$_scripts_build_knowledge_graph_build_near_by", "callee": "to_numpy", "is_member_call": true, "source_file": "scripts/build_knowledge_graph.py", "source_location": "L140", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_build_knowledge_graph_build_near_by", "callee": "to_numpy", "is_member_call": true, "source_file": "scripts/build_knowledge_graph.py", "source_location": "L141", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_build_knowledge_graph_build_near_by", "callee": "astype", "is_member_call": true, "source_file": "scripts/build_knowledge_graph.py", "source_location": "L143", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_build_knowledge_graph_build_near_by", "callee": "int", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/build_knowledge_graph.py", "source_location": "L143"}, {"caller_nid": "$graphify-root$_scripts_build_knowledge_graph_build_near_by", "callee": "maximum", "is_member_call": true, "source_file": "scripts/build_knowledge_graph.py", "source_location": "L143", "receiver": "np"}, {"caller_nid": "$graphify-root$_scripts_build_knowledge_graph_build_near_by", "callee": "nunique", "is_member_call": true, "source_file": "scripts/build_knowledge_graph.py", "source_location": "L146", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_build_knowledge_graph_build_near_by", "callee": "nunique", "is_member_call": true, "source_file": "scripts/build_knowledge_graph.py", "source_location": "L146", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_build_knowledge_graph_build_near_by", "callee": "size", "is_member_call": true, "source_file": "scripts/build_knowledge_graph.py", "source_location": "L147", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_build_knowledge_graph_build_near_by", "callee": "groupby", "is_member_call": true, "source_file": "scripts/build_knowledge_graph.py", "source_location": "L147", "receiver": "df"}, {"caller_nid": "$graphify-root$_scripts_build_knowledge_graph_main", "callee": "read_excel", "is_member_call": true, "source_file": "scripts/build_knowledge_graph.py", "source_location": "L175", "receiver": "pd"}, {"caller_nid": "$graphify-root$_scripts_build_knowledge_graph_main", "callee": "PLACE_XLSX", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/build_knowledge_graph.py", "source_location": "L175"}, {"caller_nid": "$graphify-root$_scripts_build_knowledge_graph_main", "callee": "astype", "is_member_call": true, "source_file": "scripts/build_knowledge_graph.py", "source_location": "L179", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_build_knowledge_graph_main", "callee": "str", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/build_knowledge_graph.py", "source_location": "L179"}, {"caller_nid": "$graphify-root$_scripts_build_knowledge_graph_main", "callee": "apply", "is_member_call": true, "source_file": "scripts/build_knowledge_graph.py", "source_location": "L180", "receiver": "places_raw"}, {"caller_nid": "$graphify-root$_scripts_build_knowledge_graph_main", "callee": "unique", "is_member_call": true, "source_file": "scripts/build_knowledge_graph.py", "source_location": "L184", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_build_knowledge_graph_main", "callee": "isna", "is_member_call": true, "source_file": "scripts/build_knowledge_graph.py", "source_location": "L184", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_build_knowledge_graph_main", "callee": "fillna", "is_member_call": true, "source_file": "scripts/build_knowledge_graph.py", "source_location": "L196", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_build_knowledge_graph_main", "callee": "rename", "is_member_call": true, "source_file": "scripts/build_knowledge_graph.py", "source_location": "L205", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_build_knowledge_graph_main", "callee": "drop_duplicates", "is_member_call": true, "source_file": "scripts/build_knowledge_graph.py", "source_location": "L205", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_build_knowledge_graph_main", "callee": "fillna", "is_member_call": true, "source_file": "scripts/build_knowledge_graph.py", "source_location": "L218", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_build_knowledge_graph_main", "callee": "add", "is_member_call": true, "source_file": "scripts/build_knowledge_graph.py", "source_location": "L227", "receiver": "part_of_edges"}, {"caller_nid": "$graphify-root$_scripts_build_knowledge_graph_main", "callee": "items", "is_member_call": true, "source_file": "scripts/build_knowledge_graph.py", "source_location": "L230", "receiver": "region_seen"}, {"caller_nid": "$graphify-root$_scripts_build_knowledge_graph_main", "callee": "mkdir", "is_member_call": true, "source_file": "scripts/build_knowledge_graph.py", "source_location": "L248", "receiver": "OUT_DIR"}, {"caller_nid": "$graphify-root$_scripts_build_knowledge_graph_main", "callee": "to_csv", "is_member_call": true, "source_file": "scripts/build_knowledge_graph.py", "source_location": "L249", "receiver": "place_nodes"}, {"caller_nid": "$graphify-root$_scripts_build_knowledge_graph_main", "callee": "to_csv", "is_member_call": true, "source_file": "scripts/build_knowledge_graph.py", "source_location": "L250", "receiver": "region_nodes"}, {"caller_nid": "$graphify-root$_scripts_build_knowledge_graph_main", "callee": "to_csv", "is_member_call": true, "source_file": "scripts/build_knowledge_graph.py", "source_location": "L251", "receiver": "category_nodes"}, {"caller_nid": "$graphify-root$_scripts_build_knowledge_graph_main", "callee": "to_csv", "is_member_call": true, "source_file": "scripts/build_knowledge_graph.py", "source_location": "L252", "receiver": "rel_is_located_in"}, {"caller_nid": "$graphify-root$_scripts_build_knowledge_graph_main", "callee": "to_csv", "is_member_call": true, "source_file": "scripts/build_knowledge_graph.py", "source_location": "L253", "receiver": "rel_part_of"}, {"caller_nid": "$graphify-root$_scripts_build_knowledge_graph_main", "callee": "to_csv", "is_member_call": true, "source_file": "scripts/build_knowledge_graph.py", "source_location": "L254", "receiver": "rel_has_category"}, {"caller_nid": "$graphify-root$_scripts_build_knowledge_graph_main", "callee": "to_csv", "is_member_call": true, "source_file": "scripts/build_knowledge_graph.py", "source_location": "L255", "receiver": "rel_near_by"}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.31/a9814e97969c079ec6c71dd016718fe79a944e2a4531fbdef907d3d0e7722132.json b/graphify-out/cache/ast/v0.9.31/a9814e97969c079ec6c71dd016718fe79a944e2a4531fbdef907d3d0e7722132.json new file mode 100644 index 0000000..361ff6f --- /dev/null +++ b/graphify-out/cache/ast/v0.9.31/a9814e97969c079ec6c71dd016718fe79a944e2a4531fbdef907d3d0e7722132.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_tests_test_alternatives_py", "label": "test_alternatives.py", "file_type": "code", "source_file": "tests/test_alternatives.py", "source_location": "L1"}, {"id": "$graphify-root$_tests_test_alternatives_poi", "label": "_poi()", "file_type": "code", "source_file": "tests/test_alternatives.py", "source_location": "L10", "_callable": true}, {"id": "$graphify-root$_tests_test_alternatives_hardfail", "label": "_hardfail()", "file_type": "code", "source_file": "tests/test_alternatives.py", "source_location": "L29", "_callable": true}, {"id": "$graphify-root$_tests_test_alternatives_testfindalternatives", "label": "TestFindAlternatives", "file_type": "code", "source_file": "tests/test_alternatives.py", "source_location": "L39", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_tests_test_alternatives_testfindalternatives_test_returns_nearby_same_category", "label": ".test_returns_nearby_same_category()", "file_type": "code", "source_file": "tests/test_alternatives.py", "source_location": "L40", "_callable": true}, {"id": "$graphify-root$_tests_test_alternatives_testfindalternatives_test_excludes_failed_poi_itself", "label": ".test_excludes_failed_poi_itself()", "file_type": "code", "source_file": "tests/test_alternatives.py", "source_location": "L50", "_callable": true}, {"id": "$graphify-root$_tests_test_alternatives_testfindalternatives_test_respects_max_alternatives", "label": ".test_respects_max_alternatives()", "file_type": "code", "source_file": "tests/test_alternatives.py", "source_location": "L57", "_callable": true}, {"id": "$graphify-root$_tests_test_alternatives_testfindalternatives_test_respects_search_radius", "label": ".test_respects_search_radius()", "file_type": "code", "source_file": "tests/test_alternatives.py", "source_location": "L64", "_callable": true}, {"id": "$graphify-root$_tests_test_alternatives_testfindalternatives_test_distance_km_is_correct", "label": ".test_distance_km_is_correct()", "file_type": "code", "source_file": "tests/test_alternatives.py", "source_location": "L72", "_callable": true}, {"id": "$graphify-root$_tests_test_alternatives_testfindalternatives_test_same_category_sorted_before_different", "label": ".test_same_category_sorted_before_different()", "file_type": "code", "source_file": "tests/test_alternatives.py", "source_location": "L80", "_callable": true}, {"id": "$graphify-root$_tests_test_alternatives_testbuildalternativesmap", "label": "TestBuildAlternativesMap", "file_type": "code", "source_file": "tests/test_alternatives.py", "source_location": "L91", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_tests_test_alternatives_testbuildalternativesmap_test_maps_failed_poi_to_alternatives", "label": ".test_maps_failed_poi_to_alternatives()", "file_type": "code", "source_file": "tests/test_alternatives.py", "source_location": "L92", "_callable": true}, {"id": "$graphify-root$_tests_test_alternatives_testbuildalternativesmap_test_default_no_substitution", "label": ".test_default_no_substitution()", "file_type": "code", "source_file": "tests/test_alternatives.py", "source_location": "L102", "_callable": true}, {"id": "$graphify-root$_tests_test_alternatives_testbuildalternativesmap_test_skips_none_poi_name", "label": ".test_skips_none_poi_name()", "file_type": "code", "source_file": "tests/test_alternatives.py", "source_location": "L110", "_callable": true}, {"id": "$graphify-root$_tests_test_alternatives_testbuildalternativesmap_test_no_duplicate_keys", "label": ".test_no_duplicate_keys()", "file_type": "code", "source_file": "tests/test_alternatives.py", "source_location": "L116", "_callable": true}, {"id": "$graphify-root$_tests_test_alternatives_testbuildalternativesmap_test_excludes_plan_pois_from_alternatives", "label": ".test_excludes_plan_pois_from_alternatives()", "file_type": "code", "source_file": "tests/test_alternatives.py", "source_location": "L123", "_callable": true}, {"id": "$graphify-root$_tests_test_alternatives_rationale_1", "label": "AlternativesFinder \uc720\ub2db \ud14c\uc2a4\ud2b8.", "file_type": "rationale", "source_file": "tests/test_alternatives.py", "source_location": "L1"}], "edges": [{"source": "$graphify-root$_tests_test_alternatives_py", "target": "pytest", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_alternatives.py", "source_location": "L4", "weight": 1.0}, {"source": "$graphify-root$_tests_test_alternatives_py", "target": "src_data_models", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_alternatives.py", "source_location": "L6", "weight": 1.0}, {"source": "$graphify-root$_tests_test_alternatives_py", "target": "src_validation_alternatives", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_alternatives.py", "source_location": "L7", "weight": 1.0}, {"source": "$graphify-root$_tests_test_alternatives_py", "target": "$graphify-root$_tests_test_alternatives_poi", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_alternatives.py", "source_location": "L10", "weight": 1.0}, {"source": "$graphify-root$_tests_test_alternatives_py", "target": "$graphify-root$_tests_test_alternatives_hardfail", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_alternatives.py", "source_location": "L29", "weight": 1.0}, {"source": "$graphify-root$_tests_test_alternatives_py", "target": "$graphify-root$_tests_test_alternatives_testfindalternatives", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_alternatives.py", "source_location": "L39", "weight": 1.0}, {"source": "$graphify-root$_tests_test_alternatives_testfindalternatives", "target": "$graphify-root$_tests_test_alternatives_testfindalternatives_test_returns_nearby_same_category", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_alternatives.py", "source_location": "L40", "weight": 1.0}, {"source": "$graphify-root$_tests_test_alternatives_testfindalternatives", "target": "$graphify-root$_tests_test_alternatives_testfindalternatives_test_excludes_failed_poi_itself", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_alternatives.py", "source_location": "L50", "weight": 1.0}, {"source": "$graphify-root$_tests_test_alternatives_testfindalternatives", "target": "$graphify-root$_tests_test_alternatives_testfindalternatives_test_respects_max_alternatives", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_alternatives.py", "source_location": "L57", "weight": 1.0}, {"source": "$graphify-root$_tests_test_alternatives_testfindalternatives", "target": "$graphify-root$_tests_test_alternatives_testfindalternatives_test_respects_search_radius", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_alternatives.py", "source_location": "L64", "weight": 1.0}, {"source": "$graphify-root$_tests_test_alternatives_testfindalternatives", "target": "$graphify-root$_tests_test_alternatives_testfindalternatives_test_distance_km_is_correct", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_alternatives.py", "source_location": "L72", "weight": 1.0}, {"source": "$graphify-root$_tests_test_alternatives_testfindalternatives", "target": "$graphify-root$_tests_test_alternatives_testfindalternatives_test_same_category_sorted_before_different", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_alternatives.py", "source_location": "L80", "weight": 1.0}, {"source": "$graphify-root$_tests_test_alternatives_py", "target": "$graphify-root$_tests_test_alternatives_testbuildalternativesmap", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_alternatives.py", "source_location": "L91", "weight": 1.0}, {"source": "$graphify-root$_tests_test_alternatives_testbuildalternativesmap", "target": "$graphify-root$_tests_test_alternatives_testbuildalternativesmap_test_maps_failed_poi_to_alternatives", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_alternatives.py", "source_location": "L92", "weight": 1.0}, {"source": "$graphify-root$_tests_test_alternatives_testbuildalternativesmap", "target": "$graphify-root$_tests_test_alternatives_testbuildalternativesmap_test_default_no_substitution", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_alternatives.py", "source_location": "L102", "weight": 1.0}, {"source": "$graphify-root$_tests_test_alternatives_testbuildalternativesmap", "target": "$graphify-root$_tests_test_alternatives_testbuildalternativesmap_test_skips_none_poi_name", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_alternatives.py", "source_location": "L110", "weight": 1.0}, {"source": "$graphify-root$_tests_test_alternatives_testbuildalternativesmap", "target": "$graphify-root$_tests_test_alternatives_testbuildalternativesmap_test_no_duplicate_keys", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_alternatives.py", "source_location": "L116", "weight": 1.0}, {"source": "$graphify-root$_tests_test_alternatives_testbuildalternativesmap", "target": "$graphify-root$_tests_test_alternatives_testbuildalternativesmap_test_excludes_plan_pois_from_alternatives", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_alternatives.py", "source_location": "L123", "weight": 1.0}, {"source": "$graphify-root$_tests_test_alternatives_testfindalternatives_test_returns_nearby_same_category", "target": "$graphify-root$_tests_test_alternatives_poi", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_alternatives.py", "source_location": "L42", "weight": 1.0}, {"source": "$graphify-root$_tests_test_alternatives_testfindalternatives_test_excludes_failed_poi_itself", "target": "$graphify-root$_tests_test_alternatives_poi", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_alternatives.py", "source_location": "L51", "weight": 1.0}, {"source": "$graphify-root$_tests_test_alternatives_testfindalternatives_test_respects_max_alternatives", "target": "$graphify-root$_tests_test_alternatives_poi", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_alternatives.py", "source_location": "L58", "weight": 1.0}, {"source": "$graphify-root$_tests_test_alternatives_testfindalternatives_test_respects_search_radius", "target": "$graphify-root$_tests_test_alternatives_poi", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_alternatives.py", "source_location": "L65", "weight": 1.0}, {"source": "$graphify-root$_tests_test_alternatives_testfindalternatives_test_distance_km_is_correct", "target": "$graphify-root$_tests_test_alternatives_poi", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_alternatives.py", "source_location": "L73", "weight": 1.0}, {"source": "$graphify-root$_tests_test_alternatives_testfindalternatives_test_same_category_sorted_before_different", "target": "$graphify-root$_tests_test_alternatives_poi", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_alternatives.py", "source_location": "L82", "weight": 1.0}, {"source": "$graphify-root$_tests_test_alternatives_testbuildalternativesmap_test_maps_failed_poi_to_alternatives", "target": "$graphify-root$_tests_test_alternatives_poi", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_alternatives.py", "source_location": "L93", "weight": 1.0}, {"source": "$graphify-root$_tests_test_alternatives_testbuildalternativesmap_test_maps_failed_poi_to_alternatives", "target": "$graphify-root$_tests_test_alternatives_hardfail", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_alternatives.py", "source_location": "L96", "weight": 1.0}, {"source": "$graphify-root$_tests_test_alternatives_testbuildalternativesmap_test_default_no_substitution", "target": "$graphify-root$_tests_test_alternatives_poi", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_alternatives.py", "source_location": "L103", "weight": 1.0}, {"source": "$graphify-root$_tests_test_alternatives_testbuildalternativesmap_test_default_no_substitution", "target": "$graphify-root$_tests_test_alternatives_hardfail", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_alternatives.py", "source_location": "L106", "weight": 1.0}, {"source": "$graphify-root$_tests_test_alternatives_testbuildalternativesmap_test_skips_none_poi_name", "target": "$graphify-root$_tests_test_alternatives_hardfail", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_alternatives.py", "source_location": "L112", "weight": 1.0}, {"source": "$graphify-root$_tests_test_alternatives_testbuildalternativesmap_test_no_duplicate_keys", "target": "$graphify-root$_tests_test_alternatives_poi", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_alternatives.py", "source_location": "L117", "weight": 1.0}, {"source": "$graphify-root$_tests_test_alternatives_testbuildalternativesmap_test_no_duplicate_keys", "target": "$graphify-root$_tests_test_alternatives_hardfail", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_alternatives.py", "source_location": "L119", "weight": 1.0}, {"source": "$graphify-root$_tests_test_alternatives_testbuildalternativesmap_test_excludes_plan_pois_from_alternatives", "target": "$graphify-root$_tests_test_alternatives_poi", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_alternatives.py", "source_location": "L124", "weight": 1.0}, {"source": "$graphify-root$_tests_test_alternatives_testbuildalternativesmap_test_excludes_plan_pois_from_alternatives", "target": "$graphify-root$_tests_test_alternatives_hardfail", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_alternatives.py", "source_location": "L126", "weight": 1.0}, {"source": "$graphify-root$_tests_test_alternatives_rationale_1", "target": "$graphify-root$_tests_test_alternatives_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_alternatives.py", "source_location": "L1", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_tests_test_alternatives_poi", "callee": "POI", "is_member_call": false, "source_file": "tests/test_alternatives.py", "source_location": "L17", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_alternatives_hardfail", "callee": "HardFail", "is_member_call": false, "source_file": "tests/test_alternatives.py", "source_location": "L30", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_alternatives_testfindalternatives_test_returns_nearby_same_category", "callee": "AlternativesFinder", "is_member_call": false, "source_file": "tests/test_alternatives.py", "source_location": "L45", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_alternatives_testfindalternatives_test_returns_nearby_same_category", "callee": "find_alternatives", "is_member_call": true, "source_file": "tests/test_alternatives.py", "source_location": "L47", "receiver": "finder"}, {"caller_nid": "$graphify-root$_tests_test_alternatives_testfindalternatives_test_excludes_failed_poi_itself", "callee": "AlternativesFinder", "is_member_call": false, "source_file": "tests/test_alternatives.py", "source_location": "L52", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_alternatives_testfindalternatives_test_excludes_failed_poi_itself", "callee": "find_alternatives", "is_member_call": true, "source_file": "tests/test_alternatives.py", "source_location": "L54", "receiver": "finder"}, {"caller_nid": "$graphify-root$_tests_test_alternatives_testfindalternatives_test_respects_max_alternatives", "callee": "AlternativesFinder", "is_member_call": false, "source_file": "tests/test_alternatives.py", "source_location": "L59", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_alternatives_testfindalternatives_test_respects_max_alternatives", "callee": "find_alternatives", "is_member_call": true, "source_file": "tests/test_alternatives.py", "source_location": "L61", "receiver": "finder"}, {"caller_nid": "$graphify-root$_tests_test_alternatives_testfindalternatives_test_respects_search_radius", "callee": "AlternativesFinder", "is_member_call": false, "source_file": "tests/test_alternatives.py", "source_location": "L67", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_alternatives_testfindalternatives_test_respects_search_radius", "callee": "find_alternatives", "is_member_call": true, "source_file": "tests/test_alternatives.py", "source_location": "L69", "receiver": "finder"}, {"caller_nid": "$graphify-root$_tests_test_alternatives_testfindalternatives_test_distance_km_is_correct", "callee": "AlternativesFinder", "is_member_call": false, "source_file": "tests/test_alternatives.py", "source_location": "L74", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_alternatives_testfindalternatives_test_distance_km_is_correct", "callee": "find_alternatives", "is_member_call": true, "source_file": "tests/test_alternatives.py", "source_location": "L76", "receiver": "finder"}, {"caller_nid": "$graphify-root$_tests_test_alternatives_testfindalternatives_test_same_category_sorted_before_different", "callee": "AlternativesFinder", "is_member_call": false, "source_file": "tests/test_alternatives.py", "source_location": "L85", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_alternatives_testfindalternatives_test_same_category_sorted_before_different", "callee": "find_alternatives", "is_member_call": true, "source_file": "tests/test_alternatives.py", "source_location": "L87", "receiver": "finder"}, {"caller_nid": "$graphify-root$_tests_test_alternatives_testbuildalternativesmap_test_maps_failed_poi_to_alternatives", "callee": "AlternativesFinder", "is_member_call": false, "source_file": "tests/test_alternatives.py", "source_location": "L95", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_alternatives_testbuildalternativesmap_test_maps_failed_poi_to_alternatives", "callee": "build_alternatives_map", "is_member_call": true, "source_file": "tests/test_alternatives.py", "source_location": "L98", "receiver": "finder"}, {"caller_nid": "$graphify-root$_tests_test_alternatives_testbuildalternativesmap_test_default_no_substitution", "callee": "AlternativesFinder", "is_member_call": false, "source_file": "tests/test_alternatives.py", "source_location": "L105", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_alternatives_testbuildalternativesmap_test_default_no_substitution", "callee": "build_alternatives_map", "is_member_call": true, "source_file": "tests/test_alternatives.py", "source_location": "L107", "receiver": "finder"}, {"caller_nid": "$graphify-root$_tests_test_alternatives_testbuildalternativesmap_test_skips_none_poi_name", "callee": "AlternativesFinder", "is_member_call": false, "source_file": "tests/test_alternatives.py", "source_location": "L111", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_alternatives_testbuildalternativesmap_test_skips_none_poi_name", "callee": "build_alternatives_map", "is_member_call": true, "source_file": "tests/test_alternatives.py", "source_location": "L113", "receiver": "finder"}, {"caller_nid": "$graphify-root$_tests_test_alternatives_testbuildalternativesmap_test_no_duplicate_keys", "callee": "AlternativesFinder", "is_member_call": false, "source_file": "tests/test_alternatives.py", "source_location": "L118", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_alternatives_testbuildalternativesmap_test_no_duplicate_keys", "callee": "build_alternatives_map", "is_member_call": true, "source_file": "tests/test_alternatives.py", "source_location": "L120", "receiver": "finder"}, {"caller_nid": "$graphify-root$_tests_test_alternatives_testbuildalternativesmap_test_no_duplicate_keys", "callee": "count", "is_member_call": true, "source_file": "tests/test_alternatives.py", "source_location": "L121", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_alternatives_testbuildalternativesmap_test_no_duplicate_keys", "callee": "keys", "is_member_call": true, "source_file": "tests/test_alternatives.py", "source_location": "L121", "receiver": "result"}, {"caller_nid": "$graphify-root$_tests_test_alternatives_testbuildalternativesmap_test_excludes_plan_pois_from_alternatives", "callee": "AlternativesFinder", "is_member_call": false, "source_file": "tests/test_alternatives.py", "source_location": "L125", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_alternatives_testbuildalternativesmap_test_excludes_plan_pois_from_alternatives", "callee": "build_alternatives_map", "is_member_call": true, "source_file": "tests/test_alternatives.py", "source_location": "L127", "receiver": "finder"}, {"caller_nid": "$graphify-root$_tests_test_alternatives_testbuildalternativesmap_test_excludes_plan_pois_from_alternatives", "callee": "get", "is_member_call": true, "source_file": "tests/test_alternatives.py", "source_location": "L129", "receiver": "result"}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.31/ad1d63af2a7ba70861b2e237e4b0492e85fcfc8f5647e123d0619502c39c7964.json b/graphify-out/cache/ast/v0.9.31/ad1d63af2a7ba70861b2e237e4b0492e85fcfc8f5647e123d0619502c39c7964.json new file mode 100644 index 0000000..0fa348b --- /dev/null +++ b/graphify-out/cache/ast/v0.9.31/ad1d63af2a7ba70861b2e237e4b0492e85fcfc8f5647e123d0619502c39c7964.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_tests_test_pipeline_orchestrator_py", "label": "test_pipeline_orchestrator.py", "file_type": "code", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L1"}, {"id": "$graphify-root$_tests_test_pipeline_orchestrator_make_poi", "label": "make_poi()", "file_type": "code", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L17", "_callable": true}, {"id": "poi", "label": "POI", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/tests/test_pipeline_orchestrator.py"}, {"id": "$graphify-root$_tests_test_pipeline_orchestrator_make_plan", "label": "make_plan()", "file_type": "code", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L33", "_callable": true}, {"id": "itineraryplan", "label": "ItineraryPlan", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/tests/test_pipeline_orchestrator.py"}, {"id": "$graphify-root$_tests_test_pipeline_orchestrator_make_multi_day_plan", "label": "make_multi_day_plan()", "file_type": "code", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L47", "_callable": true}, {"id": "$graphify-root$_tests_test_pipeline_orchestrator_make_empty_bonus_engine", "label": "make_empty_bonus_engine()", "file_type": "code", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L56", "_callable": true}, {"id": "bonusengine", "label": "BonusEngine", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/tests/test_pipeline_orchestrator.py"}, {"id": "fixture", "label": "fixture", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/tests/test_pipeline_orchestrator.py"}, {"id": "$graphify-root$_tests_test_pipeline_orchestrator_pipeline", "label": "pipeline()", "file_type": "code", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L61", "_callable": true}, {"id": "validatorpipeline", "label": "ValidatorPipeline", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/tests/test_pipeline_orchestrator.py"}, {"id": "$graphify-root$_tests_test_pipeline_orchestrator_sample_pois", "label": "sample_pois()", "file_type": "code", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L66", "_callable": true}, {"id": "$graphify-root$_tests_test_pipeline_orchestrator_sample_plan", "label": "sample_plan()", "file_type": "code", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L76", "_callable": true}, {"id": "$graphify-root$_tests_test_pipeline_orchestrator_testtovrptwday", "label": "TestToVrptwDay", "file_type": "code", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L84", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_tests_test_pipeline_orchestrator_testtovrptwday_test_converts_poi_fields", "label": ".test_converts_poi_fields()", "file_type": "code", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L85", "_callable": true}, {"id": "$graphify-root$_tests_test_pipeline_orchestrator_testtovrptwday_test_is_depot_false", "label": ".test_is_depot_false()", "file_type": "code", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L94", "_callable": true}, {"id": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinebasic", "label": "TestPipelineBasic", "file_type": "code", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L104", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinebasic_test_returns_validation_result", "label": ".test_returns_validation_result()", "file_type": "code", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L105", "_callable": true}, {"id": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinebasic_test_final_score_in_range", "label": ".test_final_score_in_range()", "file_type": "code", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L113", "_callable": true}, {"id": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinebasic_test_plan_id_matches", "label": ".test_plan_id_matches()", "file_type": "code", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L121", "_callable": true}, {"id": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinebasic_test_scores_populated", "label": ".test_scores_populated()", "file_type": "code", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L129", "_callable": true}, {"id": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinebasic_test_empty_pois_returns_zero_score", "label": ".test_empty_pois_returns_zero_score()", "file_type": "code", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L138", "_callable": true}, {"id": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinebasic_test_base_score_populated", "label": ".test_base_score_populated()", "file_type": "code", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L143", "_callable": true}, {"id": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinehardfail", "label": "TestPipelineHardFail", "file_type": "code", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L156", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinehardfail_test_open_hours_conflict_caps_score", "label": ".test_open_hours_conflict_caps_score()", "file_type": "code", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L157", "_callable": true}, {"id": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinehardfail_test_no_hard_fail_score_above_59_possible", "label": ".test_no_hard_fail_score_above_59_possible()", "file_type": "code", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L173", "_callable": true}, {"id": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinehardfail_test_hard_fail_day_index_matches_offending_day", "label": ".test_hard_fail_day_index_matches_offending_day()", "file_type": "code", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L181", "_callable": true}, {"id": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinehardfail_test_alternatives_populated_from_explain_engine", "label": ".test_alternatives_populated_from_explain_engine()", "file_type": "code", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L196", "_callable": true}, {"id": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinehardfail_test_alternatives_not_computed_without_hard_fails", "label": ".test_alternatives_not_computed_without_hard_fails()", "file_type": "code", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L215", "_callable": true}, {"id": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinebreakdown", "label": "TestPipelineBreakdown", "file_type": "code", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L225", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinebreakdown_test_breakdown_fields_are_dicts", "label": ".test_breakdown_fields_are_dicts()", "file_type": "code", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L226", "_callable": true}, {"id": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinebreakdown_test_wellness_bonus_reflected_in_breakdown", "label": ".test_wellness_bonus_reflected_in_breakdown()", "file_type": "code", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L235", "_callable": true}, {"id": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinebreakdown_test_accessibility_bonus_for_accessible_party", "label": ".test_accessibility_bonus_for_accessible_party()", "file_type": "code", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L246", "_callable": true}, {"id": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinebreakdown_test_pet_friendly_bonus_when_enabled", "label": ".test_pet_friendly_bonus_when_enabled()", "file_type": "code", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L257", "_callable": true}, {"id": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinebreakdown_test_pet_friendly_bonus_absent_when_disabled", "label": ".test_pet_friendly_bonus_absent_when_disabled()", "file_type": "code", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L266", "_callable": true}, {"id": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinebreakdown_test_wellness_matched_exposed_on_result", "label": ".test_wellness_matched_exposed_on_result()", "file_type": "code", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L274", "_callable": true}, {"id": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinemultiday", "label": "TestPipelineMultiDay", "file_type": "code", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L289", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinemultiday_test_multi_day_runs_without_error", "label": ".test_multi_day_runs_without_error()", "file_type": "code", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L290", "_callable": true}, {"id": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinemultiday_test_sigungu_codes_accepted", "label": ".test_sigungu_codes_accepted()", "file_type": "code", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L301", "_callable": true}, {"id": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinevrptw", "label": "TestPipelineVRPTW", "file_type": "code", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L318", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinevrptw_test_vrptw_fields_present", "label": ".test_vrptw_fields_present()", "file_type": "code", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L319", "_callable": true}, {"id": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinevrptw_test_vrptw_efficiency_gap_is_float_or_none", "label": ".test_vrptw_efficiency_gap_is_float_or_none()", "file_type": "code", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L329", "_callable": true}, {"id": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinevrptw_test_vrptw_efficiency_gap_non_negative", "label": ".test_vrptw_efficiency_gap_non_negative()", "file_type": "code", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L337", "_callable": true}, {"id": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinevrptw_test_vrptw_optimal_route_per_day_count", "label": ".test_vrptw_optimal_route_per_day_count()", "file_type": "code", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L346", "_callable": true}, {"id": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinevrptw_test_vrptw_penalty_in_breakdown_when_gap_exceeds_threshold", "label": ".test_vrptw_penalty_in_breakdown_when_gap_exceeds_threshold()", "file_type": "code", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L359", "_callable": true}, {"id": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinevrptw_test_vrptw_penalty_does_not_double_count_with_single_poi", "label": ".test_vrptw_penalty_does_not_double_count_with_single_poi()", "file_type": "code", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L373", "_callable": true}, {"id": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinerepairgainestimation", "label": "TestPipelineRepairGainEstimation", "file_type": "code", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L385", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinerepairgainestimation_test_deletion_suggestion_carries_gain_and_resolves_flag", "label": ".test_deletion_suggestion_carries_gain_and_resolves_flag()", "file_type": "code", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L386", "_callable": true}, {"id": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinerepairgainestimation_test_no_repair_no_gain_fields_needed", "label": ".test_no_repair_no_gain_fields_needed()", "file_type": "code", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L406", "_callable": true}, {"id": "$graphify-root$_tests_test_pipeline_orchestrator_rationale_1", "label": "Tests for ValidatorPipeline (TDD).", "file_type": "rationale", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L1"}, {"id": "$graphify-root$_tests_test_pipeline_orchestrator_rationale_387", "label": "\uc9c0\ub9ac\uc801 \uc774\uc0c1\uce58\uc774\uc790 Hard Fail \uc720\ubc1c POI\ub97c \uc0ad\uc81c\ud558\uba74 \uc810\uc218\uac00 \uc624\ub974\uace0 \ubb38\uc81c\uac00 \ud574\uc18c\ub3fc\uc57c \ud55c\ub2e4.", "file_type": "rationale", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L387"}, {"id": "$graphify-root$_tests_test_pipeline_orchestrator_rationale_407", "label": "Hard Fail\uc774 \uc5c6\uc73c\uba74 repair \uc790\uccb4\uac00 \ube44\uc5b4 \uc788\uc5b4\uc57c \ud55c\ub2e4 (\uae30\uc874 \ub3d9\uc791 \uc720\uc9c0).", "file_type": "rationale", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L407"}], "edges": [{"source": "$graphify-root$_tests_test_pipeline_orchestrator_py", "target": "unittest_mock", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L4", "weight": 1.0}, {"source": "$graphify-root$_tests_test_pipeline_orchestrator_py", "target": "pytest", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L6", "weight": 1.0}, {"source": "$graphify-root$_tests_test_pipeline_orchestrator_py", "target": "src_data_models", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L8", "weight": 1.0}, {"source": "$graphify-root$_tests_test_pipeline_orchestrator_py", "target": "src_explain_pipeline", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L9", "weight": 1.0}, {"source": "$graphify-root$_tests_test_pipeline_orchestrator_py", "target": "src_scoring_bonus_engine", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L10", "weight": 1.0}, {"source": "$graphify-root$_tests_test_pipeline_orchestrator_py", "target": "$graphify-root$_tests_test_pipeline_orchestrator_make_poi", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L17", "weight": 1.0}, {"source": "$graphify-root$_tests_test_pipeline_orchestrator_make_poi", "target": "poi", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L17", "weight": 1.0}, {"source": "$graphify-root$_tests_test_pipeline_orchestrator_py", "target": "$graphify-root$_tests_test_pipeline_orchestrator_make_plan", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L33", "weight": 1.0}, {"source": "$graphify-root$_tests_test_pipeline_orchestrator_make_plan", "target": "itineraryplan", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L33", "weight": 1.0}, {"source": "$graphify-root$_tests_test_pipeline_orchestrator_py", "target": "$graphify-root$_tests_test_pipeline_orchestrator_make_multi_day_plan", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L47", "weight": 1.0}, {"source": "$graphify-root$_tests_test_pipeline_orchestrator_make_multi_day_plan", "target": "itineraryplan", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L47", "weight": 1.0}, {"source": "$graphify-root$_tests_test_pipeline_orchestrator_py", "target": "$graphify-root$_tests_test_pipeline_orchestrator_make_empty_bonus_engine", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L56", "weight": 1.0}, {"source": "$graphify-root$_tests_test_pipeline_orchestrator_make_empty_bonus_engine", "target": "bonusengine", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L56", "weight": 1.0}, {"source": "$graphify-root$_tests_test_pipeline_orchestrator_pipeline", "target": "fixture", "relation": "references", "confidence": "EXTRACTED", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L60", "weight": 1.0, "context": "decorator"}, {"source": "$graphify-root$_tests_test_pipeline_orchestrator_py", "target": "$graphify-root$_tests_test_pipeline_orchestrator_pipeline", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L61", "weight": 1.0}, {"source": "$graphify-root$_tests_test_pipeline_orchestrator_pipeline", "target": "validatorpipeline", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L61", "weight": 1.0}, {"source": "$graphify-root$_tests_test_pipeline_orchestrator_sample_pois", "target": "fixture", "relation": "references", "confidence": "EXTRACTED", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L65", "weight": 1.0, "context": "decorator"}, {"source": "$graphify-root$_tests_test_pipeline_orchestrator_py", "target": "$graphify-root$_tests_test_pipeline_orchestrator_sample_pois", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L66", "weight": 1.0}, {"source": "$graphify-root$_tests_test_pipeline_orchestrator_sample_pois", "target": "poi", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L66", "weight": 1.0}, {"source": "$graphify-root$_tests_test_pipeline_orchestrator_sample_plan", "target": "fixture", "relation": "references", "confidence": "EXTRACTED", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L75", "weight": 1.0, "context": "decorator"}, {"source": "$graphify-root$_tests_test_pipeline_orchestrator_py", "target": "$graphify-root$_tests_test_pipeline_orchestrator_sample_plan", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L76", "weight": 1.0}, {"source": "$graphify-root$_tests_test_pipeline_orchestrator_sample_plan", "target": "poi", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L76", "weight": 1.0}, {"source": "$graphify-root$_tests_test_pipeline_orchestrator_sample_plan", "target": "itineraryplan", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L76", "weight": 1.0}, {"source": "$graphify-root$_tests_test_pipeline_orchestrator_py", "target": "$graphify-root$_tests_test_pipeline_orchestrator_testtovrptwday", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L84", "weight": 1.0}, {"source": "$graphify-root$_tests_test_pipeline_orchestrator_testtovrptwday", "target": "$graphify-root$_tests_test_pipeline_orchestrator_testtovrptwday_test_converts_poi_fields", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L85", "weight": 1.0}, {"source": "$graphify-root$_tests_test_pipeline_orchestrator_testtovrptwday", "target": "$graphify-root$_tests_test_pipeline_orchestrator_testtovrptwday_test_is_depot_false", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L94", "weight": 1.0}, {"source": "$graphify-root$_tests_test_pipeline_orchestrator_py", "target": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinebasic", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L104", "weight": 1.0}, {"source": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinebasic", "target": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinebasic_test_returns_validation_result", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L105", "weight": 1.0}, {"source": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinebasic", "target": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinebasic_test_final_score_in_range", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L113", "weight": 1.0}, {"source": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinebasic", "target": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinebasic_test_plan_id_matches", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L121", "weight": 1.0}, {"source": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinebasic", "target": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinebasic_test_scores_populated", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L129", "weight": 1.0}, {"source": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinebasic", "target": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinebasic_test_empty_pois_returns_zero_score", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L138", "weight": 1.0}, {"source": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinebasic", "target": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinebasic_test_base_score_populated", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L143", "weight": 1.0}, {"source": "$graphify-root$_tests_test_pipeline_orchestrator_py", "target": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinehardfail", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L156", "weight": 1.0}, {"source": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinehardfail", "target": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinehardfail_test_open_hours_conflict_caps_score", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L157", "weight": 1.0}, {"source": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinehardfail", "target": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinehardfail_test_no_hard_fail_score_above_59_possible", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L173", "weight": 1.0}, {"source": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinehardfail", "target": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinehardfail_test_hard_fail_day_index_matches_offending_day", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L181", "weight": 1.0}, {"source": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinehardfail", "target": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinehardfail_test_alternatives_populated_from_explain_engine", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L196", "weight": 1.0}, {"source": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinehardfail", "target": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinehardfail_test_alternatives_not_computed_without_hard_fails", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L215", "weight": 1.0}, {"source": "$graphify-root$_tests_test_pipeline_orchestrator_py", "target": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinebreakdown", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L225", "weight": 1.0}, {"source": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinebreakdown", "target": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinebreakdown_test_breakdown_fields_are_dicts", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L226", "weight": 1.0}, {"source": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinebreakdown", "target": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinebreakdown_test_wellness_bonus_reflected_in_breakdown", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L235", "weight": 1.0}, {"source": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinebreakdown", "target": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinebreakdown_test_accessibility_bonus_for_accessible_party", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L246", "weight": 1.0}, {"source": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinebreakdown", "target": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinebreakdown_test_pet_friendly_bonus_when_enabled", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L257", "weight": 1.0}, {"source": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinebreakdown", "target": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinebreakdown_test_pet_friendly_bonus_absent_when_disabled", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L266", "weight": 1.0}, {"source": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinebreakdown", "target": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinebreakdown_test_wellness_matched_exposed_on_result", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L274", "weight": 1.0}, {"source": "$graphify-root$_tests_test_pipeline_orchestrator_py", "target": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinemultiday", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L289", "weight": 1.0}, {"source": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinemultiday", "target": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinemultiday_test_multi_day_runs_without_error", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L290", "weight": 1.0}, {"source": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinemultiday", "target": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinemultiday_test_sigungu_codes_accepted", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L301", "weight": 1.0}, {"source": "$graphify-root$_tests_test_pipeline_orchestrator_py", "target": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinevrptw", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L318", "weight": 1.0}, {"source": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinevrptw", "target": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinevrptw_test_vrptw_fields_present", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L319", "weight": 1.0}, {"source": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinevrptw", "target": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinevrptw_test_vrptw_efficiency_gap_is_float_or_none", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L329", "weight": 1.0}, {"source": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinevrptw", "target": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinevrptw_test_vrptw_efficiency_gap_non_negative", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L337", "weight": 1.0}, {"source": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinevrptw", "target": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinevrptw_test_vrptw_optimal_route_per_day_count", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L346", "weight": 1.0}, {"source": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinevrptw", "target": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinevrptw_test_vrptw_penalty_in_breakdown_when_gap_exceeds_threshold", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L359", "weight": 1.0}, {"source": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinevrptw", "target": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinevrptw_test_vrptw_penalty_does_not_double_count_with_single_poi", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L373", "weight": 1.0}, {"source": "$graphify-root$_tests_test_pipeline_orchestrator_py", "target": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinerepairgainestimation", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L385", "weight": 1.0}, {"source": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinerepairgainestimation", "target": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinerepairgainestimation_test_deletion_suggestion_carries_gain_and_resolves_flag", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L386", "weight": 1.0}, {"source": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinerepairgainestimation", "target": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinerepairgainestimation_test_no_repair_no_gain_fields_needed", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L406", "weight": 1.0}, {"source": "$graphify-root$_tests_test_pipeline_orchestrator_make_poi", "target": "poi", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L24", "weight": 1.0}, {"source": "$graphify-root$_tests_test_pipeline_orchestrator_make_plan", "target": "itineraryplan", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L38", "weight": 1.0}, {"source": "$graphify-root$_tests_test_pipeline_orchestrator_make_multi_day_plan", "target": "itineraryplan", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L48", "weight": 1.0}, {"source": "$graphify-root$_tests_test_pipeline_orchestrator_make_empty_bonus_engine", "target": "bonusengine", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L57", "weight": 1.0}, {"source": "$graphify-root$_tests_test_pipeline_orchestrator_pipeline", "target": "validatorpipeline", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L62", "weight": 1.0}, {"source": "$graphify-root$_tests_test_pipeline_orchestrator_pipeline", "target": "$graphify-root$_tests_test_pipeline_orchestrator_make_empty_bonus_engine", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L62", "weight": 1.0}, {"source": "$graphify-root$_tests_test_pipeline_orchestrator_sample_pois", "target": "$graphify-root$_tests_test_pipeline_orchestrator_make_poi", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L68", "weight": 1.0}, {"source": "$graphify-root$_tests_test_pipeline_orchestrator_sample_plan", "target": "$graphify-root$_tests_test_pipeline_orchestrator_make_plan", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L77", "weight": 1.0}, {"source": "$graphify-root$_tests_test_pipeline_orchestrator_testtovrptwday_test_converts_poi_fields", "target": "$graphify-root$_tests_test_pipeline_orchestrator_make_poi", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L86", "weight": 1.0}, {"source": "$graphify-root$_tests_test_pipeline_orchestrator_testtovrptwday_test_is_depot_false", "target": "$graphify-root$_tests_test_pipeline_orchestrator_make_poi", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L95", "weight": 1.0}, {"source": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinebasic_test_empty_pois_returns_zero_score", "target": "$graphify-root$_tests_test_pipeline_orchestrator_make_plan", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L139", "weight": 1.0}, {"source": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinehardfail_test_open_hours_conflict_caps_score", "target": "poi", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L160", "weight": 1.0}, {"source": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinehardfail_test_open_hours_conflict_caps_score", "target": "$graphify-root$_tests_test_pipeline_orchestrator_make_poi", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L166", "weight": 1.0}, {"source": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinehardfail_test_open_hours_conflict_caps_score", "target": "$graphify-root$_tests_test_pipeline_orchestrator_make_plan", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L168", "weight": 1.0}, {"source": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinehardfail_test_hard_fail_day_index_matches_offending_day", "target": "$graphify-root$_tests_test_pipeline_orchestrator_make_poi", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L183", "weight": 1.0}, {"source": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinehardfail_test_hard_fail_day_index_matches_offending_day", "target": "poi", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L184", "weight": 1.0}, {"source": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinehardfail_test_hard_fail_day_index_matches_offending_day", "target": "$graphify-root$_tests_test_pipeline_orchestrator_make_multi_day_plan", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L191", "weight": 1.0}, {"source": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinehardfail_test_alternatives_populated_from_explain_engine", "target": "validatorpipeline", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L202", "weight": 1.0}, {"source": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinehardfail_test_alternatives_populated_from_explain_engine", "target": "$graphify-root$_tests_test_pipeline_orchestrator_make_empty_bonus_engine", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L203", "weight": 1.0}, {"source": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinehardfail_test_alternatives_populated_from_explain_engine", "target": "poi", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L205", "weight": 1.0}, {"source": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinehardfail_test_alternatives_populated_from_explain_engine", "target": "$graphify-root$_tests_test_pipeline_orchestrator_make_plan", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L209", "weight": 1.0}, {"source": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinebreakdown_test_wellness_bonus_reflected_in_breakdown", "target": "bonusengine", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L237", "weight": 1.0}, {"source": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinebreakdown_test_wellness_bonus_reflected_in_breakdown", "target": "validatorpipeline", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L238", "weight": 1.0}, {"source": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinebreakdown_test_wellness_bonus_reflected_in_breakdown", "target": "$graphify-root$_tests_test_pipeline_orchestrator_make_poi", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L240", "weight": 1.0}, {"source": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinebreakdown_test_wellness_bonus_reflected_in_breakdown", "target": "$graphify-root$_tests_test_pipeline_orchestrator_make_plan", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L241", "weight": 1.0}, {"source": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinebreakdown_test_accessibility_bonus_for_accessible_party", "target": "bonusengine", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L248", "weight": 1.0}, {"source": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinebreakdown_test_accessibility_bonus_for_accessible_party", "target": "validatorpipeline", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L249", "weight": 1.0}, {"source": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinebreakdown_test_accessibility_bonus_for_accessible_party", "target": "$graphify-root$_tests_test_pipeline_orchestrator_make_poi", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L251", "weight": 1.0}, {"source": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinebreakdown_test_accessibility_bonus_for_accessible_party", "target": "$graphify-root$_tests_test_pipeline_orchestrator_make_plan", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L252", "weight": 1.0}, {"source": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinebreakdown_test_pet_friendly_bonus_when_enabled", "target": "$graphify-root$_tests_test_pipeline_orchestrator_make_poi", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L258", "weight": 1.0}, {"source": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinebreakdown_test_pet_friendly_bonus_when_enabled", "target": "$graphify-root$_tests_test_pipeline_orchestrator_make_plan", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L259", "weight": 1.0}, {"source": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinebreakdown_test_pet_friendly_bonus_absent_when_disabled", "target": "$graphify-root$_tests_test_pipeline_orchestrator_make_poi", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L267", "weight": 1.0}, {"source": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinebreakdown_test_pet_friendly_bonus_absent_when_disabled", "target": "$graphify-root$_tests_test_pipeline_orchestrator_make_plan", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L268", "weight": 1.0}, {"source": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinebreakdown_test_wellness_matched_exposed_on_result", "target": "bonusengine", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L276", "weight": 1.0}, {"source": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinebreakdown_test_wellness_matched_exposed_on_result", "target": "validatorpipeline", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L277", "weight": 1.0}, {"source": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinebreakdown_test_wellness_matched_exposed_on_result", "target": "$graphify-root$_tests_test_pipeline_orchestrator_make_poi", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L279", "weight": 1.0}, {"source": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinebreakdown_test_wellness_matched_exposed_on_result", "target": "$graphify-root$_tests_test_pipeline_orchestrator_make_plan", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L280", "weight": 1.0}, {"source": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinemultiday_test_multi_day_runs_without_error", "target": "$graphify-root$_tests_test_pipeline_orchestrator_make_poi", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L291", "weight": 1.0}, {"source": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinemultiday_test_multi_day_runs_without_error", "target": "$graphify-root$_tests_test_pipeline_orchestrator_make_multi_day_plan", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L293", "weight": 1.0}, {"source": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinemultiday_test_sigungu_codes_accepted", "target": "$graphify-root$_tests_test_pipeline_orchestrator_make_poi", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L302", "weight": 1.0}, {"source": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinemultiday_test_sigungu_codes_accepted", "target": "$graphify-root$_tests_test_pipeline_orchestrator_make_plan", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L303", "weight": 1.0}, {"source": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinevrptw_test_vrptw_optimal_route_per_day_count", "target": "$graphify-root$_tests_test_pipeline_orchestrator_make_poi", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L347", "weight": 1.0}, {"source": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinevrptw_test_vrptw_optimal_route_per_day_count", "target": "$graphify-root$_tests_test_pipeline_orchestrator_make_multi_day_plan", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L349", "weight": 1.0}, {"source": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinevrptw_test_vrptw_penalty_in_breakdown_when_gap_exceeds_threshold", "target": "$graphify-root$_tests_test_pipeline_orchestrator_make_poi", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L363", "weight": 1.0}, {"source": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinevrptw_test_vrptw_penalty_in_breakdown_when_gap_exceeds_threshold", "target": "$graphify-root$_tests_test_pipeline_orchestrator_make_plan", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L367", "weight": 1.0}, {"source": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinevrptw_test_vrptw_penalty_does_not_double_count_with_single_poi", "target": "$graphify-root$_tests_test_pipeline_orchestrator_make_poi", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L374", "weight": 1.0}, {"source": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinevrptw_test_vrptw_penalty_does_not_double_count_with_single_poi", "target": "$graphify-root$_tests_test_pipeline_orchestrator_make_plan", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L375", "weight": 1.0}, {"source": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinerepairgainestimation_test_deletion_suggestion_carries_gain_and_resolves_flag", "target": "$graphify-root$_tests_test_pipeline_orchestrator_make_poi", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L388", "weight": 1.0}, {"source": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinerepairgainestimation_test_deletion_suggestion_carries_gain_and_resolves_flag", "target": "poi", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L390", "weight": 1.0}, {"source": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinerepairgainestimation_test_deletion_suggestion_carries_gain_and_resolves_flag", "target": "$graphify-root$_tests_test_pipeline_orchestrator_make_plan", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L395", "weight": 1.0}, {"source": "$graphify-root$_tests_test_pipeline_orchestrator_rationale_1", "target": "$graphify-root$_tests_test_pipeline_orchestrator_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L1", "weight": 1.0}, {"source": "$graphify-root$_tests_test_pipeline_orchestrator_rationale_387", "target": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinerepairgainestimation_test_deletion_suggestion_carries_gain_and_resolves_flag", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L387", "weight": 1.0}, {"source": "$graphify-root$_tests_test_pipeline_orchestrator_rationale_407", "target": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinerepairgainestimation_test_no_repair_no_gain_fields_needed", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L407", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_tests_test_pipeline_orchestrator_make_plan", "callee": "DayPlan", "is_member_call": false, "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L39", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_pipeline_orchestrator_make_plan", "callee": "PlaceInput", "is_member_call": false, "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L39", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_pipeline_orchestrator_make_multi_day_plan", "callee": "DayPlan", "is_member_call": false, "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L49", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_pipeline_orchestrator_make_multi_day_plan", "callee": "PlaceInput", "is_member_call": false, "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L49", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_pipeline_orchestrator_testtovrptwday_test_converts_poi_fields", "callee": "_to_vrptw_day", "is_member_call": false, "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L87", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_pipeline_orchestrator_testtovrptwday_test_is_depot_false", "callee": "_to_vrptw_day", "is_member_call": false, "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L96", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinebasic_test_returns_validation_result", "callee": "run", "is_member_call": true, "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L106", "receiver": "pipeline"}, {"caller_nid": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinebasic_test_returns_validation_result", "callee": "ValidationResult", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L111"}, {"caller_nid": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinebasic_test_final_score_in_range", "callee": "run", "is_member_call": true, "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L114", "receiver": "pipeline"}, {"caller_nid": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinebasic_test_plan_id_matches", "callee": "run", "is_member_call": true, "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L122", "receiver": "pipeline"}, {"caller_nid": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinebasic_test_scores_populated", "callee": "run", "is_member_call": true, "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L130", "receiver": "pipeline"}, {"caller_nid": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinebasic_test_empty_pois_returns_zero_score", "callee": "run", "is_member_call": true, "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L140", "receiver": "pipeline"}, {"caller_nid": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinebasic_test_base_score_populated", "callee": "run", "is_member_call": true, "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L144", "receiver": "pipeline"}, {"caller_nid": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinehardfail_test_open_hours_conflict_caps_score", "callee": "run", "is_member_call": true, "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L169", "receiver": "pipeline"}, {"caller_nid": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinehardfail_test_no_hard_fail_score_above_59_possible", "callee": "run", "is_member_call": true, "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L174", "receiver": "pipeline"}, {"caller_nid": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinehardfail_test_hard_fail_day_index_matches_offending_day", "callee": "run", "is_member_call": true, "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L192", "receiver": "pipeline"}, {"caller_nid": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinehardfail_test_alternatives_populated_from_explain_engine", "callee": "MagicMock", "is_member_call": false, "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L197", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinehardfail_test_alternatives_populated_from_explain_engine", "callee": "AlternativePOI", "is_member_call": false, "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L200", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinehardfail_test_alternatives_populated_from_explain_engine", "callee": "run", "is_member_call": true, "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L210", "receiver": "pipeline"}, {"caller_nid": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinehardfail_test_alternatives_populated_from_explain_engine", "callee": "assert_called_once_with", "is_member_call": true, "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L212", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinehardfail_test_alternatives_not_computed_without_hard_fails", "callee": "run", "is_member_call": true, "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L216", "receiver": "pipeline"}, {"caller_nid": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinebreakdown_test_breakdown_fields_are_dicts", "callee": "run", "is_member_call": true, "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L227", "receiver": "pipeline"}, {"caller_nid": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinebreakdown_test_breakdown_fields_are_dicts", "callee": "dict", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L232"}, {"caller_nid": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinebreakdown_test_breakdown_fields_are_dicts", "callee": "dict", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L233"}, {"caller_nid": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinebreakdown_test_wellness_bonus_reflected_in_breakdown", "callee": "_PlaceCoord", "is_member_call": false, "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L236", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinebreakdown_test_wellness_bonus_reflected_in_breakdown", "callee": "run", "is_member_call": true, "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L242", "receiver": "pipeline"}, {"caller_nid": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinebreakdown_test_accessibility_bonus_for_accessible_party", "callee": "_PlaceCoord", "is_member_call": false, "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L247", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinebreakdown_test_accessibility_bonus_for_accessible_party", "callee": "run", "is_member_call": true, "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L253", "receiver": "pipeline"}, {"caller_nid": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinebreakdown_test_pet_friendly_bonus_when_enabled", "callee": "model_copy", "is_member_call": true, "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L258", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinebreakdown_test_pet_friendly_bonus_when_enabled", "callee": "run", "is_member_call": true, "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L260", "receiver": "pipeline"}, {"caller_nid": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinebreakdown_test_pet_friendly_bonus_absent_when_disabled", "callee": "model_copy", "is_member_call": true, "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L267", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinebreakdown_test_pet_friendly_bonus_absent_when_disabled", "callee": "run", "is_member_call": true, "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L269", "receiver": "pipeline"}, {"caller_nid": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinebreakdown_test_wellness_matched_exposed_on_result", "callee": "_PlaceCoord", "is_member_call": false, "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L275", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinebreakdown_test_wellness_matched_exposed_on_result", "callee": "run", "is_member_call": true, "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L281", "receiver": "pipeline"}, {"caller_nid": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinemultiday_test_multi_day_runs_without_error", "callee": "run", "is_member_call": true, "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L297", "receiver": "pipeline"}, {"caller_nid": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinemultiday_test_multi_day_runs_without_error", "callee": "ValidationResult", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L298"}, {"caller_nid": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinemultiday_test_sigungu_codes_accepted", "callee": "run", "is_member_call": true, "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L305", "receiver": "pipeline"}, {"caller_nid": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinemultiday_test_sigungu_codes_accepted", "callee": "ValidationResult", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L311"}, {"caller_nid": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinevrptw_test_vrptw_fields_present", "callee": "run", "is_member_call": true, "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L320", "receiver": "pipeline"}, {"caller_nid": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinevrptw_test_vrptw_efficiency_gap_is_float_or_none", "callee": "run", "is_member_call": true, "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L330", "receiver": "pipeline"}, {"caller_nid": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinevrptw_test_vrptw_efficiency_gap_is_float_or_none", "callee": "float", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L335"}, {"caller_nid": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinevrptw_test_vrptw_efficiency_gap_non_negative", "callee": "run", "is_member_call": true, "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L338", "receiver": "pipeline"}, {"caller_nid": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinevrptw_test_vrptw_optimal_route_per_day_count", "callee": "run", "is_member_call": true, "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L353", "receiver": "pipeline"}, {"caller_nid": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinevrptw_test_vrptw_penalty_in_breakdown_when_gap_exceeds_threshold", "callee": "run", "is_member_call": true, "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L368", "receiver": "pipeline"}, {"caller_nid": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinevrptw_test_vrptw_penalty_does_not_double_count_with_single_poi", "callee": "run", "is_member_call": true, "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L376", "receiver": "pipeline"}, {"caller_nid": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinevrptw_test_vrptw_penalty_does_not_double_count_with_single_poi", "callee": "get", "is_member_call": true, "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L378", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinerepairgainestimation_test_deletion_suggestion_carries_gain_and_resolves_flag", "callee": "run", "is_member_call": true, "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L396", "receiver": "pipeline"}, {"caller_nid": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinerepairgainestimation_test_deletion_suggestion_carries_gain_and_resolves_flag", "callee": "get", "is_member_call": true, "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L399", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_pipeline_orchestrator_testpipelinerepairgainestimation_test_no_repair_no_gain_fields_needed", "callee": "run", "is_member_call": true, "source_file": "tests/test_pipeline_orchestrator.py", "source_location": "L408", "receiver": "pipeline"}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.31/aebd9818bb704e3273f3ae2f096c24bbe8bc876e0edd6356fd016d0f6fb2ceac.json b/graphify-out/cache/ast/v0.9.31/aebd9818bb704e3273f3ae2f096c24bbe8bc876e0edd6356fd016d0f6fb2ceac.json new file mode 100644 index 0000000..b1ba37c --- /dev/null +++ b/graphify-out/cache/ast/v0.9.31/aebd9818bb704e3273f3ae2f096c24bbe8bc876e0edd6356fd016d0f6fb2ceac.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_src_explain_init_py", "label": "__init__.py", "file_type": "code", "source_file": "src/explain/__init__.py", "source_location": "L1"}], "edges": [], "raw_calls": []} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.31/b3274ebc249bbd43ebfbaf6c94a018cf00c634bfc78ff54b6b05eb98109b8f21.json b/graphify-out/cache/ast/v0.9.31/b3274ebc249bbd43ebfbaf6c94a018cf00c634bfc78ff54b6b05eb98109b8f21.json new file mode 100644 index 0000000..14d4ebb --- /dev/null +++ b/graphify-out/cache/ast/v0.9.31/b3274ebc249bbd43ebfbaf6c94a018cf00c634bfc78ff54b6b05eb98109b8f21.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_scripts_neo4j_coverage_analysis_py", "label": "neo4j_coverage_analysis.py", "file_type": "code", "source_file": "scripts/neo4j_coverage_analysis.py", "source_location": "L1"}, {"id": "$graphify-root$_scripts_neo4j_coverage_analysis_make_place", "label": "make_place()", "file_type": "code", "source_file": "scripts/neo4j_coverage_analysis.py", "source_location": "L46", "_callable": true}, {"id": "vrptwplace", "label": "VRPTWPlace", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/scripts/neo4j_coverage_analysis.py"}, {"id": "$graphify-root$_scripts_neo4j_coverage_analysis_sigungu_for", "label": "sigungu_for()", "file_type": "code", "source_file": "scripts/neo4j_coverage_analysis.py", "source_location": "L60", "_callable": true}, {"id": "$graphify-root$_scripts_neo4j_coverage_analysis_neo4j_backtrack_count", "label": "neo4j_backtrack_count()", "file_type": "code", "source_file": "scripts/neo4j_coverage_analysis.py", "source_location": "L66", "_callable": true}, {"id": "$graphify-root$_scripts_neo4j_coverage_analysis_neo4j_timeslot_density", "label": "neo4j_timeslot_density()", "file_type": "code", "source_file": "scripts/neo4j_coverage_analysis.py", "source_location": "L84", "_callable": true}, {"id": "$graphify-root$_scripts_neo4j_coverage_analysis_coverageresult", "label": "CoverageResult", "file_type": "code", "source_file": "scripts/neo4j_coverage_analysis.py", "source_location": "L114", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_scripts_neo4j_coverage_analysis_coverageresult_covered", "label": ".covered()", "file_type": "code", "source_file": "scripts/neo4j_coverage_analysis.py", "source_location": "L122", "_callable": true}, {"id": "$graphify-root$_scripts_neo4j_coverage_analysis_run_vrptw", "label": "run_vrptw()", "file_type": "code", "source_file": "scripts/neo4j_coverage_analysis.py", "source_location": "L126", "_callable": true}, {"id": "$graphify-root$_scripts_neo4j_coverage_analysis_print_result", "label": "print_result()", "file_type": "code", "source_file": "scripts/neo4j_coverage_analysis.py", "source_location": "L141", "_callable": true}, {"id": "$graphify-root$_scripts_neo4j_coverage_analysis_test_role_a", "label": "test_role_a()", "file_type": "code", "source_file": "scripts/neo4j_coverage_analysis.py", "source_location": "L152", "_callable": true}, {"id": "$graphify-root$_scripts_neo4j_coverage_analysis_test_role_b", "label": "test_role_b()", "file_type": "code", "source_file": "scripts/neo4j_coverage_analysis.py", "source_location": "L217", "_callable": true}, {"id": "$graphify-root$_scripts_neo4j_coverage_analysis_test_role_c", "label": "test_role_c()", "file_type": "code", "source_file": "scripts/neo4j_coverage_analysis.py", "source_location": "L264", "_callable": true}, {"id": "$graphify-root$_scripts_neo4j_coverage_analysis_main", "label": "main()", "file_type": "code", "source_file": "scripts/neo4j_coverage_analysis.py", "source_location": "L312", "_callable": true}, {"id": "$graphify-root$_scripts_neo4j_coverage_analysis_rationale_1", "label": "Neo4j \uc81c\uac70 \ud0c0\ub2f9\uc131 \ubd84\uc11d \u2014 \uc124\uacc4 \uc758\ub3c4 vs \ud604\uc7ac Python \ub85c\uc9c1 \ucee4\ubc84\ub9ac\uc9c0 \ube44\uad50. Neo4j\uac00 SUMMARY.md\uc5d0\uc11c \ub9e1\uae30\ub85c \ud55c 3\uac00\uc9c0\u2026", "file_type": "rationale", "source_file": "scripts/neo4j_coverage_analysis.py", "source_location": "L1"}, {"id": "$graphify-root$_scripts_neo4j_coverage_analysis_rationale_67", "label": "Neo4j IN_AREA \ub178\ub4dc \ub85c\uc9c1 \uc2dc\ubbac\ub808\uc774\uc158. \ubc29\ubb38 \uc21c\uc11c\uc5d0\uc11c \uc774\ubbf8 \ubc29\ubb38\ud55c Area(\uc2dc\uad70\uad6c)\uc5d0 \ube44\uc5f0\uc18d\uc73c\ub85c \uc7ac\uc9c4\uc785\ud558\ub294 \ud69f\uc218\ub97c \uacc4\uc0b0.\u2026", "file_type": "rationale", "source_file": "scripts/neo4j_coverage_analysis.py", "source_location": "L67"}, {"id": "$graphify-root$_scripts_neo4j_coverage_analysis_rationale_85", "label": "Neo4j TimeSlot \ub178\ub4dc \ubc00\ub3c4 \uc2dc\ubbac\ub808\uc774\uc158. 09:00 \ucd9c\ubc1c, \uac01 POI\ub97c \uc21c\uc11c\ub300\ub85c \ubc29\ubb38\ud588\uc744 \ub54c \uc2dc\uac04\ub300\ubcc4 \uc810\uc720 \uc218 \uacc4\uc0b0.", "file_type": "rationale", "source_file": "scripts/neo4j_coverage_analysis.py", "source_location": "L85"}, {"id": "$graphify-root$_scripts_neo4j_coverage_analysis_rationale_127", "label": "VRPTWEngine + cluster_dispersion \uc2e4\ud589, (vrptw_result, dispersion_report) \ubc18\ud658.", "file_type": "rationale", "source_file": "scripts/neo4j_coverage_analysis.py", "source_location": "L127"}], "edges": [{"source": "$graphify-root$_scripts_neo4j_coverage_analysis_py", "target": "sys", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/neo4j_coverage_analysis.py", "source_location": "L17", "weight": 1.0}, {"source": "$graphify-root$_scripts_neo4j_coverage_analysis_py", "target": "dataclasses", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/neo4j_coverage_analysis.py", "source_location": "L18", "weight": 1.0}, {"source": "$graphify-root$_scripts_neo4j_coverage_analysis_py", "target": "src_data_models", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/neo4j_coverage_analysis.py", "source_location": "L22", "weight": 1.0}, {"source": "$graphify-root$_scripts_neo4j_coverage_analysis_py", "target": "src_scoring_cluster_dispersion", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/neo4j_coverage_analysis.py", "source_location": "L23", "weight": 1.0}, {"source": "$graphify-root$_scripts_neo4j_coverage_analysis_py", "target": "src_scoring_travel_ratio", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/neo4j_coverage_analysis.py", "source_location": "L24", "weight": 1.0}, {"source": "$graphify-root$_scripts_neo4j_coverage_analysis_py", "target": "src_validation_vrptw_engine", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/neo4j_coverage_analysis.py", "source_location": "L25", "weight": 1.0}, {"source": "$graphify-root$_scripts_neo4j_coverage_analysis_py", "target": "$graphify-root$_scripts_neo4j_coverage_analysis_make_place", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/neo4j_coverage_analysis.py", "source_location": "L46", "weight": 1.0}, {"source": "$graphify-root$_scripts_neo4j_coverage_analysis_make_place", "target": "vrptwplace", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "scripts/neo4j_coverage_analysis.py", "source_location": "L46", "weight": 1.0}, {"source": "$graphify-root$_scripts_neo4j_coverage_analysis_py", "target": "$graphify-root$_scripts_neo4j_coverage_analysis_sigungu_for", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/neo4j_coverage_analysis.py", "source_location": "L60", "weight": 1.0}, {"source": "$graphify-root$_scripts_neo4j_coverage_analysis_py", "target": "$graphify-root$_scripts_neo4j_coverage_analysis_neo4j_backtrack_count", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/neo4j_coverage_analysis.py", "source_location": "L66", "weight": 1.0}, {"source": "$graphify-root$_scripts_neo4j_coverage_analysis_py", "target": "$graphify-root$_scripts_neo4j_coverage_analysis_neo4j_timeslot_density", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/neo4j_coverage_analysis.py", "source_location": "L84", "weight": 1.0}, {"source": "$graphify-root$_scripts_neo4j_coverage_analysis_py", "target": "$graphify-root$_scripts_neo4j_coverage_analysis_coverageresult", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/neo4j_coverage_analysis.py", "source_location": "L114", "weight": 1.0}, {"source": "$graphify-root$_scripts_neo4j_coverage_analysis_coverageresult", "target": "$graphify-root$_scripts_neo4j_coverage_analysis_coverageresult_covered", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/neo4j_coverage_analysis.py", "source_location": "L122", "weight": 1.0}, {"source": "$graphify-root$_scripts_neo4j_coverage_analysis_py", "target": "$graphify-root$_scripts_neo4j_coverage_analysis_run_vrptw", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/neo4j_coverage_analysis.py", "source_location": "L126", "weight": 1.0}, {"source": "$graphify-root$_scripts_neo4j_coverage_analysis_py", "target": "$graphify-root$_scripts_neo4j_coverage_analysis_print_result", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/neo4j_coverage_analysis.py", "source_location": "L141", "weight": 1.0}, {"source": "$graphify-root$_scripts_neo4j_coverage_analysis_print_result", "target": "$graphify-root$_scripts_neo4j_coverage_analysis_coverageresult", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "scripts/neo4j_coverage_analysis.py", "source_location": "L141", "weight": 1.0}, {"source": "$graphify-root$_scripts_neo4j_coverage_analysis_py", "target": "$graphify-root$_scripts_neo4j_coverage_analysis_test_role_a", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/neo4j_coverage_analysis.py", "source_location": "L152", "weight": 1.0}, {"source": "$graphify-root$_scripts_neo4j_coverage_analysis_test_role_a", "target": "$graphify-root$_scripts_neo4j_coverage_analysis_coverageresult", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "scripts/neo4j_coverage_analysis.py", "source_location": "L152", "weight": 1.0}, {"source": "$graphify-root$_scripts_neo4j_coverage_analysis_py", "target": "$graphify-root$_scripts_neo4j_coverage_analysis_test_role_b", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/neo4j_coverage_analysis.py", "source_location": "L217", "weight": 1.0}, {"source": "$graphify-root$_scripts_neo4j_coverage_analysis_test_role_b", "target": "$graphify-root$_scripts_neo4j_coverage_analysis_coverageresult", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "scripts/neo4j_coverage_analysis.py", "source_location": "L217", "weight": 1.0}, {"source": "$graphify-root$_scripts_neo4j_coverage_analysis_py", "target": "$graphify-root$_scripts_neo4j_coverage_analysis_test_role_c", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/neo4j_coverage_analysis.py", "source_location": "L264", "weight": 1.0}, {"source": "$graphify-root$_scripts_neo4j_coverage_analysis_test_role_c", "target": "$graphify-root$_scripts_neo4j_coverage_analysis_coverageresult", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "scripts/neo4j_coverage_analysis.py", "source_location": "L264", "weight": 1.0}, {"source": "$graphify-root$_scripts_neo4j_coverage_analysis_py", "target": "$graphify-root$_scripts_neo4j_coverage_analysis_main", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/neo4j_coverage_analysis.py", "source_location": "L312", "weight": 1.0}, {"source": "$graphify-root$_scripts_neo4j_coverage_analysis_make_place", "target": "vrptwplace", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/neo4j_coverage_analysis.py", "source_location": "L52", "weight": 1.0}, {"source": "$graphify-root$_scripts_neo4j_coverage_analysis_neo4j_backtrack_count", "target": "$graphify-root$_scripts_neo4j_coverage_analysis_sigungu_for", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/neo4j_coverage_analysis.py", "source_location": "L76", "weight": 1.0}, {"source": "$graphify-root$_scripts_neo4j_coverage_analysis_neo4j_timeslot_density", "target": "$graphify-root$_scripts_neo4j_coverage_analysis_make_place", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/neo4j_coverage_analysis.py", "source_location": "L90", "weight": 1.0}, {"source": "$graphify-root$_scripts_neo4j_coverage_analysis_run_vrptw", "target": "$graphify-root$_scripts_neo4j_coverage_analysis_make_place", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/neo4j_coverage_analysis.py", "source_location": "L129", "weight": 1.0}, {"source": "$graphify-root$_scripts_neo4j_coverage_analysis_run_vrptw", "target": "$graphify-root$_scripts_neo4j_coverage_analysis_sigungu_for", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/neo4j_coverage_analysis.py", "source_location": "L133", "weight": 1.0}, {"source": "$graphify-root$_scripts_neo4j_coverage_analysis_test_role_a", "target": "$graphify-root$_scripts_neo4j_coverage_analysis_neo4j_backtrack_count", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/neo4j_coverage_analysis.py", "source_location": "L157", "weight": 1.0}, {"source": "$graphify-root$_scripts_neo4j_coverage_analysis_test_role_a", "target": "$graphify-root$_scripts_neo4j_coverage_analysis_run_vrptw", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/neo4j_coverage_analysis.py", "source_location": "L158", "weight": 1.0}, {"source": "$graphify-root$_scripts_neo4j_coverage_analysis_test_role_a", "target": "$graphify-root$_scripts_neo4j_coverage_analysis_coverageresult", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/neo4j_coverage_analysis.py", "source_location": "L163", "weight": 1.0}, {"source": "$graphify-root$_scripts_neo4j_coverage_analysis_test_role_b", "target": "$graphify-root$_scripts_neo4j_coverage_analysis_run_vrptw", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/neo4j_coverage_analysis.py", "source_location": "L223", "weight": 1.0}, {"source": "$graphify-root$_scripts_neo4j_coverage_analysis_test_role_b", "target": "$graphify-root$_scripts_neo4j_coverage_analysis_coverageresult", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/neo4j_coverage_analysis.py", "source_location": "L227", "weight": 1.0}, {"source": "$graphify-root$_scripts_neo4j_coverage_analysis_test_role_c", "target": "$graphify-root$_scripts_neo4j_coverage_analysis_neo4j_timeslot_density", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/neo4j_coverage_analysis.py", "source_location": "L269", "weight": 1.0}, {"source": "$graphify-root$_scripts_neo4j_coverage_analysis_test_role_c", "target": "$graphify-root$_scripts_neo4j_coverage_analysis_run_vrptw", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/neo4j_coverage_analysis.py", "source_location": "L273", "weight": 1.0}, {"source": "$graphify-root$_scripts_neo4j_coverage_analysis_test_role_c", "target": "$graphify-root$_scripts_neo4j_coverage_analysis_coverageresult", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/neo4j_coverage_analysis.py", "source_location": "L277", "weight": 1.0}, {"source": "$graphify-root$_scripts_neo4j_coverage_analysis_main", "target": "$graphify-root$_scripts_neo4j_coverage_analysis_test_role_a", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/neo4j_coverage_analysis.py", "source_location": "L320", "weight": 1.0}, {"source": "$graphify-root$_scripts_neo4j_coverage_analysis_main", "target": "$graphify-root$_scripts_neo4j_coverage_analysis_print_result", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/neo4j_coverage_analysis.py", "source_location": "L321", "weight": 1.0}, {"source": "$graphify-root$_scripts_neo4j_coverage_analysis_main", "target": "$graphify-root$_scripts_neo4j_coverage_analysis_test_role_b", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/neo4j_coverage_analysis.py", "source_location": "L325", "weight": 1.0}, {"source": "$graphify-root$_scripts_neo4j_coverage_analysis_main", "target": "$graphify-root$_scripts_neo4j_coverage_analysis_test_role_c", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/neo4j_coverage_analysis.py", "source_location": "L330", "weight": 1.0}, {"source": "$graphify-root$_scripts_neo4j_coverage_analysis_rationale_1", "target": "$graphify-root$_scripts_neo4j_coverage_analysis_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/neo4j_coverage_analysis.py", "source_location": "L1", "weight": 1.0}, {"source": "$graphify-root$_scripts_neo4j_coverage_analysis_rationale_67", "target": "$graphify-root$_scripts_neo4j_coverage_analysis_neo4j_backtrack_count", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/neo4j_coverage_analysis.py", "source_location": "L67", "weight": 1.0}, {"source": "$graphify-root$_scripts_neo4j_coverage_analysis_rationale_85", "target": "$graphify-root$_scripts_neo4j_coverage_analysis_neo4j_timeslot_density", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/neo4j_coverage_analysis.py", "source_location": "L85", "weight": 1.0}, {"source": "$graphify-root$_scripts_neo4j_coverage_analysis_rationale_127", "target": "$graphify-root$_scripts_neo4j_coverage_analysis_run_vrptw", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/neo4j_coverage_analysis.py", "source_location": "L127", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_scripts_neo4j_coverage_analysis_neo4j_backtrack_count", "callee": "add", "is_member_call": true, "source_file": "scripts/neo4j_coverage_analysis.py", "source_location": "L79", "receiver": "seen"}, {"caller_nid": "$graphify-root$_scripts_neo4j_coverage_analysis_neo4j_backtrack_count", "callee": "append", "is_member_call": true, "source_file": "scripts/neo4j_coverage_analysis.py", "source_location": "L80", "receiver": "visited"}, {"caller_nid": "$graphify-root$_scripts_neo4j_coverage_analysis_neo4j_timeslot_density", "callee": "HaversineMatrix", "is_member_call": false, "source_file": "scripts/neo4j_coverage_analysis.py", "source_location": "L89", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_neo4j_coverage_analysis_neo4j_timeslot_density", "callee": "get_travel_time", "is_member_call": true, "source_file": "scripts/neo4j_coverage_analysis.py", "source_location": "L96", "receiver": "matrix"}, {"caller_nid": "$graphify-root$_scripts_neo4j_coverage_analysis_neo4j_timeslot_density", "callee": "get", "is_member_call": true, "source_file": "scripts/neo4j_coverage_analysis.py", "source_location": "L104", "receiver": "slots"}, {"caller_nid": "$graphify-root$_scripts_neo4j_coverage_analysis_run_vrptw", "callee": "VRPTWEngine", "is_member_call": false, "source_file": "scripts/neo4j_coverage_analysis.py", "source_location": "L128", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_neo4j_coverage_analysis_run_vrptw", "callee": "VRPTWDay", "is_member_call": false, "source_file": "scripts/neo4j_coverage_analysis.py", "source_location": "L129", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_neo4j_coverage_analysis_run_vrptw", "callee": "VRPTWRequest", "is_member_call": false, "source_file": "scripts/neo4j_coverage_analysis.py", "source_location": "L130", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_neo4j_coverage_analysis_run_vrptw", "callee": "validate", "is_member_call": true, "source_file": "scripts/neo4j_coverage_analysis.py", "source_location": "L131", "receiver": "engine"}, {"caller_nid": "$graphify-root$_scripts_neo4j_coverage_analysis_run_vrptw", "callee": "evaluate_cluster_dispersion", "is_member_call": false, "source_file": "scripts/neo4j_coverage_analysis.py", "source_location": "L134", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_neo4j_coverage_analysis_run_vrptw", "callee": "evaluate_travel_ratio", "is_member_call": false, "source_file": "scripts/neo4j_coverage_analysis.py", "source_location": "L136", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_neo4j_coverage_analysis_test_role_a", "callee": "append", "is_member_call": true, "source_file": "scripts/neo4j_coverage_analysis.py", "source_location": "L163", "receiver": "results"}, {"caller_nid": "$graphify-root$_scripts_neo4j_coverage_analysis_test_role_a", "callee": "append", "is_member_call": true, "source_file": "scripts/neo4j_coverage_analysis.py", "source_location": "L184", "receiver": "results"}, {"caller_nid": "$graphify-root$_scripts_neo4j_coverage_analysis_test_role_a", "callee": "append", "is_member_call": true, "source_file": "scripts/neo4j_coverage_analysis.py", "source_location": "L202", "receiver": "results"}, {"caller_nid": "$graphify-root$_scripts_neo4j_coverage_analysis_test_role_b", "callee": "append", "is_member_call": true, "source_file": "scripts/neo4j_coverage_analysis.py", "source_location": "L227", "receiver": "results"}, {"caller_nid": "$graphify-root$_scripts_neo4j_coverage_analysis_test_role_b", "callee": "append", "is_member_call": true, "source_file": "scripts/neo4j_coverage_analysis.py", "source_location": "L246", "receiver": "results"}, {"caller_nid": "$graphify-root$_scripts_neo4j_coverage_analysis_test_role_c", "callee": "values", "is_member_call": true, "source_file": "scripts/neo4j_coverage_analysis.py", "source_location": "L270", "receiver": "slots"}, {"caller_nid": "$graphify-root$_scripts_neo4j_coverage_analysis_test_role_c", "callee": "items", "is_member_call": true, "source_file": "scripts/neo4j_coverage_analysis.py", "source_location": "L271", "receiver": "slots"}, {"caller_nid": "$graphify-root$_scripts_neo4j_coverage_analysis_test_role_c", "callee": "append", "is_member_call": true, "source_file": "scripts/neo4j_coverage_analysis.py", "source_location": "L277", "receiver": "results"}, {"caller_nid": "$graphify-root$_scripts_neo4j_coverage_analysis_test_role_c", "callee": "values", "is_member_call": true, "source_file": "scripts/neo4j_coverage_analysis.py", "source_location": "L292", "receiver": "slots2"}, {"caller_nid": "$graphify-root$_scripts_neo4j_coverage_analysis_test_role_c", "callee": "append", "is_member_call": true, "source_file": "scripts/neo4j_coverage_analysis.py", "source_location": "L297", "receiver": "results"}, {"caller_nid": "$graphify-root$_scripts_neo4j_coverage_analysis_main", "callee": "append", "is_member_call": true, "source_file": "scripts/neo4j_coverage_analysis.py", "source_location": "L322", "receiver": "all_results"}, {"caller_nid": "$graphify-root$_scripts_neo4j_coverage_analysis_main", "callee": "append", "is_member_call": true, "source_file": "scripts/neo4j_coverage_analysis.py", "source_location": "L327", "receiver": "all_results"}, {"caller_nid": "$graphify-root$_scripts_neo4j_coverage_analysis_main", "callee": "append", "is_member_call": true, "source_file": "scripts/neo4j_coverage_analysis.py", "source_location": "L332", "receiver": "all_results"}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.31/b44a90018ceb78e047b4587cdd5b1784b241ff87045d4fc33005cf64e52c1db3.json b/graphify-out/cache/ast/v0.9.31/b44a90018ceb78e047b4587cdd5b1784b241ff87045d4fc33005cf64e52c1db3.json new file mode 100644 index 0000000..2f7c5c3 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.31/b44a90018ceb78e047b4587cdd5b1784b241ff87045d4fc33005cf64e52c1db3.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_gun_src_validation_init_py", "label": "__init__.py", "file_type": "code", "source_file": "gun/src/validation/__init__.py", "source_location": "L1"}], "edges": [], "raw_calls": []} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.31/b455e0d85674b0ac7990f236708d68ab16026bdb66cc972478dcd97863867932.json b/graphify-out/cache/ast/v0.9.31/b455e0d85674b0ac7990f236708d68ab16026bdb66cc972478dcd97863867932.json new file mode 100644 index 0000000..d71d494 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.31/b455e0d85674b0ac7990f236708d68ab16026bdb66cc972478dcd97863867932.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_src_data_region_config_py", "label": "region_config.py", "file_type": "code", "source_file": "src/data/region_config.py", "source_location": "L1"}, {"id": "$graphify-root$_src_data_region_config_regionthresholds", "label": "RegionThresholds", "file_type": "code", "source_file": "src/data/region_config.py", "source_location": "L17", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_src_data_region_config_get_thresholds", "label": "get_thresholds()", "file_type": "code", "source_file": "src/data/region_config.py", "source_location": "L94", "_callable": true}, {"id": "$graphify-root$_src_data_region_config_rationale_1", "label": "\uc9c0\uc5ed\ubcc4 \ub3d9\uc801 \uc784\uacc4\uac12 \uc124\uc815 \u2014 3-tier POI \ubc00\ub3c4 \uae30\ubc18. \uc2dc\uad70\uad6c \ucf54\ub4dc(5\uc790\ub9ac) \uae30\uc900\uc73c\ub85c \ubc00\ub3c4 \ud2f0\uc5b4\ub97c \uacb0\uc815\ud558\uace0,\u2026", "file_type": "rationale", "source_file": "src/data/region_config.py", "source_location": "L1"}, {"id": "$graphify-root$_src_data_region_config_rationale_18", "label": "\uc9c0\uc5ed \ud2f0\uc5b4\ubcc4 VRPTW/Scoring \uc784\uacc4\uac12.", "file_type": "rationale", "source_file": "src/data/region_config.py", "source_location": "L18"}, {"id": "$graphify-root$_src_data_region_config_rationale_95", "label": "\uc2dc\uad70\uad6c \ucf54\ub4dc\ub85c \uc9c0\uc5ed \uc784\uacc4\uac12 \ubc18\ud658. \ubbf8\uc9c0\uc815\u00b7\ubbf8\ubd84\ub958 \u2192 MEDIUM.", "file_type": "rationale", "source_file": "src/data/region_config.py", "source_location": "L95"}], "edges": [{"source": "$graphify-root$_src_data_region_config_py", "target": "dataclasses", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "src/data/region_config.py", "source_location": "L13", "weight": 1.0}, {"source": "$graphify-root$_src_data_region_config_py", "target": "$graphify-root$_src_data_region_config_regionthresholds", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/data/region_config.py", "source_location": "L17", "weight": 1.0}, {"source": "$graphify-root$_src_data_region_config_py", "target": "$graphify-root$_src_data_region_config_get_thresholds", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/data/region_config.py", "source_location": "L94", "weight": 1.0}, {"source": "$graphify-root$_src_data_region_config_get_thresholds", "target": "$graphify-root$_src_data_region_config_regionthresholds", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "src/data/region_config.py", "source_location": "L94", "weight": 1.0}, {"source": "$graphify-root$_src_data_region_config_rationale_1", "target": "$graphify-root$_src_data_region_config_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/data/region_config.py", "source_location": "L1", "weight": 1.0}, {"source": "$graphify-root$_src_data_region_config_rationale_18", "target": "$graphify-root$_src_data_region_config_regionthresholds", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/data/region_config.py", "source_location": "L18", "weight": 1.0}, {"source": "$graphify-root$_src_data_region_config_rationale_95", "target": "$graphify-root$_src_data_region_config_get_thresholds", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/data/region_config.py", "source_location": "L95", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_src_data_region_config_get_thresholds", "callee": "TIER_MEDIUM_DENSITY", "is_member_call": false, "indirect": true, "context": "return", "source_file": "src/data/region_config.py", "source_location": "L97"}, {"caller_nid": "$graphify-root$_src_data_region_config_get_thresholds", "callee": "TIER_HIGH_DENSITY", "is_member_call": false, "indirect": true, "context": "return", "source_file": "src/data/region_config.py", "source_location": "L100"}, {"caller_nid": "$graphify-root$_src_data_region_config_get_thresholds", "callee": "TIER_MEDIUM_DENSITY", "is_member_call": false, "indirect": true, "context": "return", "source_file": "src/data/region_config.py", "source_location": "L102"}, {"caller_nid": "$graphify-root$_src_data_region_config_get_thresholds", "callee": "TIER_LOW_DENSITY", "is_member_call": false, "indirect": true, "context": "return", "source_file": "src/data/region_config.py", "source_location": "L103"}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.31/bc1d1b8d4443a45922e2152d306b6157ddbd9db8bbf19013cf5c4786368363d9.json b/graphify-out/cache/ast/v0.9.31/bc1d1b8d4443a45922e2152d306b6157ddbd9db8bbf19013cf5c4786368363d9.json new file mode 100644 index 0000000..9a84298 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.31/bc1d1b8d4443a45922e2152d306b6157ddbd9db8bbf19013cf5c4786368363d9.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_tests_test_bonus_engine_py", "label": "test_bonus_engine.py", "file_type": "code", "source_file": "tests/test_bonus_engine.py", "source_location": "L1"}, {"id": "$graphify-root$_tests_test_bonus_engine_make_poi", "label": "make_poi()", "file_type": "code", "source_file": "tests/test_bonus_engine.py", "source_location": "L22", "_callable": true}, {"id": "poi", "label": "POI", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/tests/test_bonus_engine.py"}, {"id": "$graphify-root$_tests_test_bonus_engine_make_engine", "label": "make_engine()", "file_type": "code", "source_file": "tests/test_bonus_engine.py", "source_location": "L34", "_callable": true}, {"id": "bonusengine", "label": "BonusEngine", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/tests/test_bonus_engine.py"}, {"id": "$graphify-root$_tests_test_bonus_engine_testwellnessbonus", "label": "TestWellnessBonus", "file_type": "code", "source_file": "tests/test_bonus_engine.py", "source_location": "L47", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_tests_test_bonus_engine_testwellnessbonus_test_no_wellness_data_gives_zero", "label": ".test_no_wellness_data_gives_zero()", "file_type": "code", "source_file": "tests/test_bonus_engine.py", "source_location": "L48", "_callable": true}, {"id": "$graphify-root$_tests_test_bonus_engine_testwellnessbonus_test_matching_poi_gives_bonus", "label": ".test_matching_poi_gives_bonus()", "file_type": "code", "source_file": "tests/test_bonus_engine.py", "source_location": "L54", "_callable": true}, {"id": "$graphify-root$_tests_test_bonus_engine_testwellnessbonus_test_two_matching_pois_give_double_bonus", "label": ".test_two_matching_pois_give_double_bonus()", "file_type": "code", "source_file": "tests/test_bonus_engine.py", "source_location": "L60", "_callable": true}, {"id": "$graphify-root$_tests_test_bonus_engine_testwellnessbonus_test_wellness_bonus_capped", "label": ".test_wellness_bonus_capped()", "file_type": "code", "source_file": "tests/test_bonus_engine.py", "source_location": "L69", "_callable": true}, {"id": "$graphify-root$_tests_test_bonus_engine_testwellnessbonus_test_non_matching_poi_no_bonus", "label": ".test_non_matching_poi_no_bonus()", "file_type": "code", "source_file": "tests/test_bonus_engine.py", "source_location": "L77", "_callable": true}, {"id": "$graphify-root$_tests_test_bonus_engine_testwellnessbonus_test_wellness_applies_to_all_party_types", "label": ".test_wellness_applies_to_all_party_types()", "file_type": "code", "source_file": "tests/test_bonus_engine.py", "source_location": "L83", "_callable": true}, {"id": "$graphify-root$_tests_test_bonus_engine_testaccessibilitybonus", "label": "TestAccessibilityBonus", "file_type": "code", "source_file": "tests/test_bonus_engine.py", "source_location": "L95", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_tests_test_bonus_engine_testaccessibilitybonus_test_accessible_party_gets_bonus", "label": ".test_accessible_party_gets_bonus()", "file_type": "code", "source_file": "tests/test_bonus_engine.py", "source_location": "L96", "_callable": true}, {"id": "$graphify-root$_tests_test_bonus_engine_testaccessibilitybonus_test_non_accessible_party_no_bonus", "label": ".test_non_accessible_party_no_bonus()", "file_type": "code", "source_file": "tests/test_bonus_engine.py", "source_location": "L103", "_callable": true}, {"id": "$graphify-root$_tests_test_bonus_engine_testaccessibilitybonus_test_accessibility_bonus_capped", "label": ".test_accessibility_bonus_capped()", "file_type": "code", "source_file": "tests/test_bonus_engine.py", "source_location": "L110", "_callable": true}, {"id": "$graphify-root$_tests_test_bonus_engine_testpetfriendlybonus", "label": "TestPetFriendlyBonus", "file_type": "code", "source_file": "tests/test_bonus_engine.py", "source_location": "L122", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_tests_test_bonus_engine_testpetfriendlybonus_test_disabled_gives_zero_even_if_matched", "label": ".test_disabled_gives_zero_even_if_matched()", "file_type": "code", "source_file": "tests/test_bonus_engine.py", "source_location": "L123", "_callable": true}, {"id": "$graphify-root$_tests_test_bonus_engine_testpetfriendlybonus_test_enabled_and_flagged_gives_bonus", "label": ".test_enabled_and_flagged_gives_bonus()", "file_type": "code", "source_file": "tests/test_bonus_engine.py", "source_location": "L129", "_callable": true}, {"id": "$graphify-root$_tests_test_bonus_engine_testpetfriendlybonus_test_enabled_but_not_flagged_no_bonus_no_penalty", "label": ".test_enabled_but_not_flagged_no_bonus_no_penalty()", "file_type": "code", "source_file": "tests/test_bonus_engine.py", "source_location": "L135", "_callable": true}, {"id": "$graphify-root$_tests_test_bonus_engine_testpetfriendlybonus_test_pet_friendly_bonus_capped", "label": ".test_pet_friendly_bonus_capped()", "file_type": "code", "source_file": "tests/test_bonus_engine.py", "source_location": "L142", "_callable": true}, {"id": "$graphify-root$_tests_test_bonus_engine_testpetfriendlybonus_test_pet_friendly_matched_names_populated", "label": ".test_pet_friendly_matched_names_populated()", "file_type": "code", "source_file": "tests/test_bonus_engine.py", "source_location": "L148", "_callable": true}, {"id": "$graphify-root$_tests_test_bonus_engine_testtotalbonuscap", "label": "TestTotalBonusCap", "file_type": "code", "source_file": "tests/test_bonus_engine.py", "source_location": "L159", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_tests_test_bonus_engine_testtotalbonuscap_test_combined_bonus_capped_at_cap", "label": ".test_combined_bonus_capped_at_cap()", "file_type": "code", "source_file": "tests/test_bonus_engine.py", "source_location": "L160", "_callable": true}, {"id": "$graphify-root$_tests_test_bonus_engine_testtotalbonuscap_test_total_is_sum_when_under_cap", "label": ".test_total_is_sum_when_under_cap()", "file_type": "code", "source_file": "tests/test_bonus_engine.py", "source_location": "L167", "_callable": true}, {"id": "$graphify-root$_tests_test_bonus_engine_testfromdataset", "label": "TestFromDataset", "file_type": "code", "source_file": "tests/test_bonus_engine.py", "source_location": "L187", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_tests_test_bonus_engine_testfromdataset_test_missing_files_give_empty_engine", "label": ".test_missing_files_give_empty_engine()", "file_type": "code", "source_file": "tests/test_bonus_engine.py", "source_location": "L188", "_callable": true}, {"id": "$graphify-root$_tests_test_bonus_engine_testfromdataset_test_loads_from_json_files", "label": ".test_loads_from_json_files()", "file_type": "code", "source_file": "tests/test_bonus_engine.py", "source_location": "L197", "_callable": true}, {"id": "$graphify-root$_tests_test_bonus_engine_testfromdataset_test_zero_coords_skipped", "label": ".test_zero_coords_skipped()", "file_type": "code", "source_file": "tests/test_bonus_engine.py", "source_location": "L211", "_callable": true}, {"id": "$graphify-root$_tests_test_bonus_engine_testbonusresultfields", "label": "TestBonusResultFields", "file_type": "code", "source_file": "tests/test_bonus_engine.py", "source_location": "L227", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_tests_test_bonus_engine_testbonusresultfields_test_matched_names_populated", "label": ".test_matched_names_populated()", "file_type": "code", "source_file": "tests/test_bonus_engine.py", "source_location": "L228", "_callable": true}, {"id": "$graphify-root$_tests_test_bonus_engine_testbonusresultfields_test_no_match_empty_lists", "label": ".test_no_match_empty_lists()", "file_type": "code", "source_file": "tests/test_bonus_engine.py", "source_location": "L234", "_callable": true}, {"id": "$graphify-root$_tests_test_bonus_engine_rationale_1", "label": "Tests for BonusEngine (TDD).", "file_type": "rationale", "source_file": "tests/test_bonus_engine.py", "source_location": "L1"}], "edges": [{"source": "$graphify-root$_tests_test_bonus_engine_py", "target": "json", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_bonus_engine.py", "source_location": "L4", "weight": 1.0}, {"source": "$graphify-root$_tests_test_bonus_engine_py", "target": "tempfile", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_bonus_engine.py", "source_location": "L5", "weight": 1.0}, {"source": "$graphify-root$_tests_test_bonus_engine_py", "target": "pathlib", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_bonus_engine.py", "source_location": "L6", "weight": 1.0}, {"source": "$graphify-root$_tests_test_bonus_engine_py", "target": "pytest", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_bonus_engine.py", "source_location": "L8", "weight": 1.0}, {"source": "$graphify-root$_tests_test_bonus_engine_py", "target": "src_data_models", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_bonus_engine.py", "source_location": "L10", "weight": 1.0}, {"source": "$graphify-root$_tests_test_bonus_engine_py", "target": "src_scoring_bonus_engine", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_bonus_engine.py", "source_location": "L11", "weight": 1.0}, {"source": "$graphify-root$_tests_test_bonus_engine_py", "target": "$graphify-root$_tests_test_bonus_engine_make_poi", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_bonus_engine.py", "source_location": "L22", "weight": 1.0}, {"source": "$graphify-root$_tests_test_bonus_engine_make_poi", "target": "poi", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "tests/test_bonus_engine.py", "source_location": "L22", "weight": 1.0}, {"source": "$graphify-root$_tests_test_bonus_engine_py", "target": "$graphify-root$_tests_test_bonus_engine_make_engine", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_bonus_engine.py", "source_location": "L34", "weight": 1.0}, {"source": "$graphify-root$_tests_test_bonus_engine_make_engine", "target": "bonusengine", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "tests/test_bonus_engine.py", "source_location": "L34", "weight": 1.0}, {"source": "$graphify-root$_tests_test_bonus_engine_py", "target": "$graphify-root$_tests_test_bonus_engine_testwellnessbonus", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_bonus_engine.py", "source_location": "L47", "weight": 1.0}, {"source": "$graphify-root$_tests_test_bonus_engine_testwellnessbonus", "target": "$graphify-root$_tests_test_bonus_engine_testwellnessbonus_test_no_wellness_data_gives_zero", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_bonus_engine.py", "source_location": "L48", "weight": 1.0}, {"source": "$graphify-root$_tests_test_bonus_engine_testwellnessbonus", "target": "$graphify-root$_tests_test_bonus_engine_testwellnessbonus_test_matching_poi_gives_bonus", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_bonus_engine.py", "source_location": "L54", "weight": 1.0}, {"source": "$graphify-root$_tests_test_bonus_engine_testwellnessbonus", "target": "$graphify-root$_tests_test_bonus_engine_testwellnessbonus_test_two_matching_pois_give_double_bonus", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_bonus_engine.py", "source_location": "L60", "weight": 1.0}, {"source": "$graphify-root$_tests_test_bonus_engine_testwellnessbonus", "target": "$graphify-root$_tests_test_bonus_engine_testwellnessbonus_test_wellness_bonus_capped", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_bonus_engine.py", "source_location": "L69", "weight": 1.0}, {"source": "$graphify-root$_tests_test_bonus_engine_testwellnessbonus", "target": "$graphify-root$_tests_test_bonus_engine_testwellnessbonus_test_non_matching_poi_no_bonus", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_bonus_engine.py", "source_location": "L77", "weight": 1.0}, {"source": "$graphify-root$_tests_test_bonus_engine_testwellnessbonus", "target": "$graphify-root$_tests_test_bonus_engine_testwellnessbonus_test_wellness_applies_to_all_party_types", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_bonus_engine.py", "source_location": "L83", "weight": 1.0}, {"source": "$graphify-root$_tests_test_bonus_engine_py", "target": "$graphify-root$_tests_test_bonus_engine_testaccessibilitybonus", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_bonus_engine.py", "source_location": "L95", "weight": 1.0}, {"source": "$graphify-root$_tests_test_bonus_engine_testaccessibilitybonus", "target": "$graphify-root$_tests_test_bonus_engine_testaccessibilitybonus_test_accessible_party_gets_bonus", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_bonus_engine.py", "source_location": "L96", "weight": 1.0}, {"source": "$graphify-root$_tests_test_bonus_engine_testaccessibilitybonus", "target": "$graphify-root$_tests_test_bonus_engine_testaccessibilitybonus_test_non_accessible_party_no_bonus", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_bonus_engine.py", "source_location": "L103", "weight": 1.0}, {"source": "$graphify-root$_tests_test_bonus_engine_testaccessibilitybonus", "target": "$graphify-root$_tests_test_bonus_engine_testaccessibilitybonus_test_accessibility_bonus_capped", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_bonus_engine.py", "source_location": "L110", "weight": 1.0}, {"source": "$graphify-root$_tests_test_bonus_engine_py", "target": "$graphify-root$_tests_test_bonus_engine_testpetfriendlybonus", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_bonus_engine.py", "source_location": "L122", "weight": 1.0}, {"source": "$graphify-root$_tests_test_bonus_engine_testpetfriendlybonus", "target": "$graphify-root$_tests_test_bonus_engine_testpetfriendlybonus_test_disabled_gives_zero_even_if_matched", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_bonus_engine.py", "source_location": "L123", "weight": 1.0}, {"source": "$graphify-root$_tests_test_bonus_engine_testpetfriendlybonus", "target": "$graphify-root$_tests_test_bonus_engine_testpetfriendlybonus_test_enabled_and_flagged_gives_bonus", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_bonus_engine.py", "source_location": "L129", "weight": 1.0}, {"source": "$graphify-root$_tests_test_bonus_engine_testpetfriendlybonus", "target": "$graphify-root$_tests_test_bonus_engine_testpetfriendlybonus_test_enabled_but_not_flagged_no_bonus_no_penalty", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_bonus_engine.py", "source_location": "L135", "weight": 1.0}, {"source": "$graphify-root$_tests_test_bonus_engine_testpetfriendlybonus", "target": "$graphify-root$_tests_test_bonus_engine_testpetfriendlybonus_test_pet_friendly_bonus_capped", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_bonus_engine.py", "source_location": "L142", "weight": 1.0}, {"source": "$graphify-root$_tests_test_bonus_engine_testpetfriendlybonus", "target": "$graphify-root$_tests_test_bonus_engine_testpetfriendlybonus_test_pet_friendly_matched_names_populated", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_bonus_engine.py", "source_location": "L148", "weight": 1.0}, {"source": "$graphify-root$_tests_test_bonus_engine_py", "target": "$graphify-root$_tests_test_bonus_engine_testtotalbonuscap", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_bonus_engine.py", "source_location": "L159", "weight": 1.0}, {"source": "$graphify-root$_tests_test_bonus_engine_testtotalbonuscap", "target": "$graphify-root$_tests_test_bonus_engine_testtotalbonuscap_test_combined_bonus_capped_at_cap", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_bonus_engine.py", "source_location": "L160", "weight": 1.0}, {"source": "$graphify-root$_tests_test_bonus_engine_testtotalbonuscap", "target": "$graphify-root$_tests_test_bonus_engine_testtotalbonuscap_test_total_is_sum_when_under_cap", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_bonus_engine.py", "source_location": "L167", "weight": 1.0}, {"source": "$graphify-root$_tests_test_bonus_engine_py", "target": "$graphify-root$_tests_test_bonus_engine_testfromdataset", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_bonus_engine.py", "source_location": "L187", "weight": 1.0}, {"source": "$graphify-root$_tests_test_bonus_engine_testfromdataset", "target": "$graphify-root$_tests_test_bonus_engine_testfromdataset_test_missing_files_give_empty_engine", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_bonus_engine.py", "source_location": "L188", "weight": 1.0}, {"source": "$graphify-root$_tests_test_bonus_engine_testfromdataset", "target": "$graphify-root$_tests_test_bonus_engine_testfromdataset_test_loads_from_json_files", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_bonus_engine.py", "source_location": "L197", "weight": 1.0}, {"source": "$graphify-root$_tests_test_bonus_engine_testfromdataset", "target": "$graphify-root$_tests_test_bonus_engine_testfromdataset_test_zero_coords_skipped", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_bonus_engine.py", "source_location": "L211", "weight": 1.0}, {"source": "$graphify-root$_tests_test_bonus_engine_py", "target": "$graphify-root$_tests_test_bonus_engine_testbonusresultfields", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_bonus_engine.py", "source_location": "L227", "weight": 1.0}, {"source": "$graphify-root$_tests_test_bonus_engine_testbonusresultfields", "target": "$graphify-root$_tests_test_bonus_engine_testbonusresultfields_test_matched_names_populated", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_bonus_engine.py", "source_location": "L228", "weight": 1.0}, {"source": "$graphify-root$_tests_test_bonus_engine_testbonusresultfields", "target": "$graphify-root$_tests_test_bonus_engine_testbonusresultfields_test_no_match_empty_lists", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_bonus_engine.py", "source_location": "L234", "weight": 1.0}, {"source": "$graphify-root$_tests_test_bonus_engine_make_poi", "target": "poi", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_bonus_engine.py", "source_location": "L25", "weight": 1.0}, {"source": "$graphify-root$_tests_test_bonus_engine_make_engine", "target": "bonusengine", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_bonus_engine.py", "source_location": "L40", "weight": 1.0}, {"source": "$graphify-root$_tests_test_bonus_engine_testwellnessbonus_test_no_wellness_data_gives_zero", "target": "$graphify-root$_tests_test_bonus_engine_make_engine", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_bonus_engine.py", "source_location": "L49", "weight": 1.0}, {"source": "$graphify-root$_tests_test_bonus_engine_testwellnessbonus_test_no_wellness_data_gives_zero", "target": "$graphify-root$_tests_test_bonus_engine_make_poi", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_bonus_engine.py", "source_location": "L50", "weight": 1.0}, {"source": "$graphify-root$_tests_test_bonus_engine_testwellnessbonus_test_matching_poi_gives_bonus", "target": "$graphify-root$_tests_test_bonus_engine_make_engine", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_bonus_engine.py", "source_location": "L55", "weight": 1.0}, {"source": "$graphify-root$_tests_test_bonus_engine_testwellnessbonus_test_matching_poi_gives_bonus", "target": "$graphify-root$_tests_test_bonus_engine_make_poi", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_bonus_engine.py", "source_location": "L56", "weight": 1.0}, {"source": "$graphify-root$_tests_test_bonus_engine_testwellnessbonus_test_two_matching_pois_give_double_bonus", "target": "$graphify-root$_tests_test_bonus_engine_make_engine", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_bonus_engine.py", "source_location": "L61", "weight": 1.0}, {"source": "$graphify-root$_tests_test_bonus_engine_testwellnessbonus_test_two_matching_pois_give_double_bonus", "target": "$graphify-root$_tests_test_bonus_engine_make_poi", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_bonus_engine.py", "source_location": "L63", "weight": 1.0}, {"source": "$graphify-root$_tests_test_bonus_engine_testwellnessbonus_test_wellness_bonus_capped", "target": "$graphify-root$_tests_test_bonus_engine_make_engine", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_bonus_engine.py", "source_location": "L72", "weight": 1.0}, {"source": "$graphify-root$_tests_test_bonus_engine_testwellnessbonus_test_wellness_bonus_capped", "target": "$graphify-root$_tests_test_bonus_engine_make_poi", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_bonus_engine.py", "source_location": "L73", "weight": 1.0}, {"source": "$graphify-root$_tests_test_bonus_engine_testwellnessbonus_test_non_matching_poi_no_bonus", "target": "$graphify-root$_tests_test_bonus_engine_make_engine", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_bonus_engine.py", "source_location": "L78", "weight": 1.0}, {"source": "$graphify-root$_tests_test_bonus_engine_testwellnessbonus_test_non_matching_poi_no_bonus", "target": "$graphify-root$_tests_test_bonus_engine_make_poi", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_bonus_engine.py", "source_location": "L79", "weight": 1.0}, {"source": "$graphify-root$_tests_test_bonus_engine_testwellnessbonus_test_wellness_applies_to_all_party_types", "target": "$graphify-root$_tests_test_bonus_engine_make_engine", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_bonus_engine.py", "source_location": "L84", "weight": 1.0}, {"source": "$graphify-root$_tests_test_bonus_engine_testwellnessbonus_test_wellness_applies_to_all_party_types", "target": "$graphify-root$_tests_test_bonus_engine_make_poi", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_bonus_engine.py", "source_location": "L85", "weight": 1.0}, {"source": "$graphify-root$_tests_test_bonus_engine_testaccessibilitybonus_test_accessible_party_gets_bonus", "target": "$graphify-root$_tests_test_bonus_engine_make_engine", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_bonus_engine.py", "source_location": "L97", "weight": 1.0}, {"source": "$graphify-root$_tests_test_bonus_engine_testaccessibilitybonus_test_accessible_party_gets_bonus", "target": "$graphify-root$_tests_test_bonus_engine_make_poi", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_bonus_engine.py", "source_location": "L98", "weight": 1.0}, {"source": "$graphify-root$_tests_test_bonus_engine_testaccessibilitybonus_test_non_accessible_party_no_bonus", "target": "$graphify-root$_tests_test_bonus_engine_make_engine", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_bonus_engine.py", "source_location": "L104", "weight": 1.0}, {"source": "$graphify-root$_tests_test_bonus_engine_testaccessibilitybonus_test_non_accessible_party_no_bonus", "target": "$graphify-root$_tests_test_bonus_engine_make_poi", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_bonus_engine.py", "source_location": "L105", "weight": 1.0}, {"source": "$graphify-root$_tests_test_bonus_engine_testaccessibilitybonus_test_accessibility_bonus_capped", "target": "$graphify-root$_tests_test_bonus_engine_make_engine", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_bonus_engine.py", "source_location": "L112", "weight": 1.0}, {"source": "$graphify-root$_tests_test_bonus_engine_testaccessibilitybonus_test_accessibility_bonus_capped", "target": "$graphify-root$_tests_test_bonus_engine_make_poi", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_bonus_engine.py", "source_location": "L113", "weight": 1.0}, {"source": "$graphify-root$_tests_test_bonus_engine_testpetfriendlybonus_test_disabled_gives_zero_even_if_matched", "target": "$graphify-root$_tests_test_bonus_engine_make_engine", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_bonus_engine.py", "source_location": "L124", "weight": 1.0}, {"source": "$graphify-root$_tests_test_bonus_engine_testpetfriendlybonus_test_disabled_gives_zero_even_if_matched", "target": "$graphify-root$_tests_test_bonus_engine_make_poi", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_bonus_engine.py", "source_location": "L125", "weight": 1.0}, {"source": "$graphify-root$_tests_test_bonus_engine_testpetfriendlybonus_test_enabled_and_flagged_gives_bonus", "target": "$graphify-root$_tests_test_bonus_engine_make_engine", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_bonus_engine.py", "source_location": "L130", "weight": 1.0}, {"source": "$graphify-root$_tests_test_bonus_engine_testpetfriendlybonus_test_enabled_and_flagged_gives_bonus", "target": "$graphify-root$_tests_test_bonus_engine_make_poi", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_bonus_engine.py", "source_location": "L131", "weight": 1.0}, {"source": "$graphify-root$_tests_test_bonus_engine_testpetfriendlybonus_test_enabled_but_not_flagged_no_bonus_no_penalty", "target": "$graphify-root$_tests_test_bonus_engine_make_engine", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_bonus_engine.py", "source_location": "L136", "weight": 1.0}, {"source": "$graphify-root$_tests_test_bonus_engine_testpetfriendlybonus_test_enabled_but_not_flagged_no_bonus_no_penalty", "target": "$graphify-root$_tests_test_bonus_engine_make_poi", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_bonus_engine.py", "source_location": "L137", "weight": 1.0}, {"source": "$graphify-root$_tests_test_bonus_engine_testpetfriendlybonus_test_pet_friendly_bonus_capped", "target": "$graphify-root$_tests_test_bonus_engine_make_poi", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_bonus_engine.py", "source_location": "L143", "weight": 1.0}, {"source": "$graphify-root$_tests_test_bonus_engine_testpetfriendlybonus_test_pet_friendly_bonus_capped", "target": "$graphify-root$_tests_test_bonus_engine_make_engine", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_bonus_engine.py", "source_location": "L144", "weight": 1.0}, {"source": "$graphify-root$_tests_test_bonus_engine_testpetfriendlybonus_test_pet_friendly_matched_names_populated", "target": "$graphify-root$_tests_test_bonus_engine_make_engine", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_bonus_engine.py", "source_location": "L149", "weight": 1.0}, {"source": "$graphify-root$_tests_test_bonus_engine_testpetfriendlybonus_test_pet_friendly_matched_names_populated", "target": "$graphify-root$_tests_test_bonus_engine_make_poi", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_bonus_engine.py", "source_location": "L150", "weight": 1.0}, {"source": "$graphify-root$_tests_test_bonus_engine_testtotalbonuscap_test_combined_bonus_capped_at_cap", "target": "$graphify-root$_tests_test_bonus_engine_make_engine", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_bonus_engine.py", "source_location": "L162", "weight": 1.0}, {"source": "$graphify-root$_tests_test_bonus_engine_testtotalbonuscap_test_combined_bonus_capped_at_cap", "target": "$graphify-root$_tests_test_bonus_engine_make_poi", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_bonus_engine.py", "source_location": "L163", "weight": 1.0}, {"source": "$graphify-root$_tests_test_bonus_engine_testtotalbonuscap_test_total_is_sum_when_under_cap", "target": "$graphify-root$_tests_test_bonus_engine_make_engine", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_bonus_engine.py", "source_location": "L168", "weight": 1.0}, {"source": "$graphify-root$_tests_test_bonus_engine_testtotalbonuscap_test_total_is_sum_when_under_cap", "target": "$graphify-root$_tests_test_bonus_engine_make_poi", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_bonus_engine.py", "source_location": "L173", "weight": 1.0}, {"source": "$graphify-root$_tests_test_bonus_engine_testfromdataset_test_missing_files_give_empty_engine", "target": "$graphify-root$_tests_test_bonus_engine_make_poi", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_bonus_engine.py", "source_location": "L193", "weight": 1.0}, {"source": "$graphify-root$_tests_test_bonus_engine_testfromdataset_test_loads_from_json_files", "target": "$graphify-root$_tests_test_bonus_engine_make_poi", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_bonus_engine.py", "source_location": "L206", "weight": 1.0}, {"source": "$graphify-root$_tests_test_bonus_engine_testfromdataset_test_zero_coords_skipped", "target": "$graphify-root$_tests_test_bonus_engine_make_poi", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_bonus_engine.py", "source_location": "L218", "weight": 1.0}, {"source": "$graphify-root$_tests_test_bonus_engine_testbonusresultfields_test_matched_names_populated", "target": "$graphify-root$_tests_test_bonus_engine_make_engine", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_bonus_engine.py", "source_location": "L229", "weight": 1.0}, {"source": "$graphify-root$_tests_test_bonus_engine_testbonusresultfields_test_matched_names_populated", "target": "$graphify-root$_tests_test_bonus_engine_make_poi", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_bonus_engine.py", "source_location": "L230", "weight": 1.0}, {"source": "$graphify-root$_tests_test_bonus_engine_testbonusresultfields_test_no_match_empty_lists", "target": "$graphify-root$_tests_test_bonus_engine_make_engine", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_bonus_engine.py", "source_location": "L235", "weight": 1.0}, {"source": "$graphify-root$_tests_test_bonus_engine_testbonusresultfields_test_no_match_empty_lists", "target": "$graphify-root$_tests_test_bonus_engine_make_poi", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_bonus_engine.py", "source_location": "L236", "weight": 1.0}, {"source": "$graphify-root$_tests_test_bonus_engine_rationale_1", "target": "$graphify-root$_tests_test_bonus_engine_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_bonus_engine.py", "source_location": "L1", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_tests_test_bonus_engine_make_engine", "callee": "_PlaceCoord", "is_member_call": false, "source_file": "tests/test_bonus_engine.py", "source_location": "L38", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_bonus_engine_make_engine", "callee": "_PlaceCoord", "is_member_call": false, "source_file": "tests/test_bonus_engine.py", "source_location": "L39", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_bonus_engine_testwellnessbonus_test_no_wellness_data_gives_zero", "callee": "compute", "is_member_call": true, "source_file": "tests/test_bonus_engine.py", "source_location": "L51", "receiver": "engine"}, {"caller_nid": "$graphify-root$_tests_test_bonus_engine_testwellnessbonus_test_matching_poi_gives_bonus", "callee": "compute", "is_member_call": true, "source_file": "tests/test_bonus_engine.py", "source_location": "L57", "receiver": "engine"}, {"caller_nid": "$graphify-root$_tests_test_bonus_engine_testwellnessbonus_test_two_matching_pois_give_double_bonus", "callee": "compute", "is_member_call": true, "source_file": "tests/test_bonus_engine.py", "source_location": "L66", "receiver": "engine"}, {"caller_nid": "$graphify-root$_tests_test_bonus_engine_testwellnessbonus_test_wellness_bonus_capped", "callee": "compute", "is_member_call": true, "source_file": "tests/test_bonus_engine.py", "source_location": "L74", "receiver": "engine"}, {"caller_nid": "$graphify-root$_tests_test_bonus_engine_testwellnessbonus_test_non_matching_poi_no_bonus", "callee": "compute", "is_member_call": true, "source_file": "tests/test_bonus_engine.py", "source_location": "L80", "receiver": "engine"}, {"caller_nid": "$graphify-root$_tests_test_bonus_engine_testwellnessbonus_test_wellness_applies_to_all_party_types", "callee": "compute", "is_member_call": true, "source_file": "tests/test_bonus_engine.py", "source_location": "L87", "receiver": "engine"}, {"caller_nid": "$graphify-root$_tests_test_bonus_engine_testaccessibilitybonus_test_accessible_party_gets_bonus", "callee": "compute", "is_member_call": true, "source_file": "tests/test_bonus_engine.py", "source_location": "L100", "receiver": "engine"}, {"caller_nid": "$graphify-root$_tests_test_bonus_engine_testaccessibilitybonus_test_non_accessible_party_no_bonus", "callee": "compute", "is_member_call": true, "source_file": "tests/test_bonus_engine.py", "source_location": "L107", "receiver": "engine"}, {"caller_nid": "$graphify-root$_tests_test_bonus_engine_testaccessibilitybonus_test_accessibility_bonus_capped", "callee": "compute", "is_member_call": true, "source_file": "tests/test_bonus_engine.py", "source_location": "L114", "receiver": "engine"}, {"caller_nid": "$graphify-root$_tests_test_bonus_engine_testpetfriendlybonus_test_disabled_gives_zero_even_if_matched", "callee": "compute", "is_member_call": true, "source_file": "tests/test_bonus_engine.py", "source_location": "L126", "receiver": "engine"}, {"caller_nid": "$graphify-root$_tests_test_bonus_engine_testpetfriendlybonus_test_enabled_and_flagged_gives_bonus", "callee": "compute", "is_member_call": true, "source_file": "tests/test_bonus_engine.py", "source_location": "L132", "receiver": "engine"}, {"caller_nid": "$graphify-root$_tests_test_bonus_engine_testpetfriendlybonus_test_enabled_but_not_flagged_no_bonus_no_penalty", "callee": "compute", "is_member_call": true, "source_file": "tests/test_bonus_engine.py", "source_location": "L138", "receiver": "engine"}, {"caller_nid": "$graphify-root$_tests_test_bonus_engine_testpetfriendlybonus_test_pet_friendly_bonus_capped", "callee": "compute", "is_member_call": true, "source_file": "tests/test_bonus_engine.py", "source_location": "L145", "receiver": "engine"}, {"caller_nid": "$graphify-root$_tests_test_bonus_engine_testpetfriendlybonus_test_pet_friendly_matched_names_populated", "callee": "compute", "is_member_call": true, "source_file": "tests/test_bonus_engine.py", "source_location": "L151", "receiver": "engine"}, {"caller_nid": "$graphify-root$_tests_test_bonus_engine_testtotalbonuscap_test_combined_bonus_capped_at_cap", "callee": "compute", "is_member_call": true, "source_file": "tests/test_bonus_engine.py", "source_location": "L164", "receiver": "engine"}, {"caller_nid": "$graphify-root$_tests_test_bonus_engine_testtotalbonuscap_test_total_is_sum_when_under_cap", "callee": "compute", "is_member_call": true, "source_file": "tests/test_bonus_engine.py", "source_location": "L176", "receiver": "engine"}, {"caller_nid": "$graphify-root$_tests_test_bonus_engine_testtotalbonuscap_test_total_is_sum_when_under_cap", "callee": "BONUS_CAP", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_bonus_engine.py", "source_location": "L178"}, {"caller_nid": "$graphify-root$_tests_test_bonus_engine_testfromdataset_test_missing_files_give_empty_engine", "callee": "from_dataset", "is_member_call": true, "source_file": "tests/test_bonus_engine.py", "source_location": "L189", "receiver": "BonusEngine"}, {"caller_nid": "$graphify-root$_tests_test_bonus_engine_testfromdataset_test_missing_files_give_empty_engine", "callee": "compute", "is_member_call": true, "source_file": "tests/test_bonus_engine.py", "source_location": "L194", "receiver": "engine"}, {"caller_nid": "$graphify-root$_tests_test_bonus_engine_testfromdataset_test_loads_from_json_files", "callee": "TemporaryDirectory", "is_member_call": true, "source_file": "tests/test_bonus_engine.py", "source_location": "L199", "receiver": "tempfile"}, {"caller_nid": "$graphify-root$_tests_test_bonus_engine_testfromdataset_test_loads_from_json_files", "callee": "Path", "is_member_call": false, "source_file": "tests/test_bonus_engine.py", "source_location": "L200", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_bonus_engine_testfromdataset_test_loads_from_json_files", "callee": "tmp", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_bonus_engine.py", "source_location": "L200"}, {"caller_nid": "$graphify-root$_tests_test_bonus_engine_testfromdataset_test_loads_from_json_files", "callee": "Path", "is_member_call": false, "source_file": "tests/test_bonus_engine.py", "source_location": "L201", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_bonus_engine_testfromdataset_test_loads_from_json_files", "callee": "tmp", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_bonus_engine.py", "source_location": "L201"}, {"caller_nid": "$graphify-root$_tests_test_bonus_engine_testfromdataset_test_loads_from_json_files", "callee": "write_text", "is_member_call": true, "source_file": "tests/test_bonus_engine.py", "source_location": "L202", "receiver": "wp"}, {"caller_nid": "$graphify-root$_tests_test_bonus_engine_testfromdataset_test_loads_from_json_files", "callee": "dumps", "is_member_call": true, "source_file": "tests/test_bonus_engine.py", "source_location": "L202", "receiver": "json"}, {"caller_nid": "$graphify-root$_tests_test_bonus_engine_testfromdataset_test_loads_from_json_files", "callee": "write_text", "is_member_call": true, "source_file": "tests/test_bonus_engine.py", "source_location": "L203", "receiver": "bp"}, {"caller_nid": "$graphify-root$_tests_test_bonus_engine_testfromdataset_test_loads_from_json_files", "callee": "dumps", "is_member_call": true, "source_file": "tests/test_bonus_engine.py", "source_location": "L203", "receiver": "json"}, {"caller_nid": "$graphify-root$_tests_test_bonus_engine_testfromdataset_test_loads_from_json_files", "callee": "from_dataset", "is_member_call": true, "source_file": "tests/test_bonus_engine.py", "source_location": "L205", "receiver": "BonusEngine"}, {"caller_nid": "$graphify-root$_tests_test_bonus_engine_testfromdataset_test_loads_from_json_files", "callee": "compute", "is_member_call": true, "source_file": "tests/test_bonus_engine.py", "source_location": "L207", "receiver": "engine"}, {"caller_nid": "$graphify-root$_tests_test_bonus_engine_testfromdataset_test_zero_coords_skipped", "callee": "TemporaryDirectory", "is_member_call": true, "source_file": "tests/test_bonus_engine.py", "source_location": "L213", "receiver": "tempfile"}, {"caller_nid": "$graphify-root$_tests_test_bonus_engine_testfromdataset_test_zero_coords_skipped", "callee": "Path", "is_member_call": false, "source_file": "tests/test_bonus_engine.py", "source_location": "L214", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_bonus_engine_testfromdataset_test_zero_coords_skipped", "callee": "tmp", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_bonus_engine.py", "source_location": "L214"}, {"caller_nid": "$graphify-root$_tests_test_bonus_engine_testfromdataset_test_zero_coords_skipped", "callee": "write_text", "is_member_call": true, "source_file": "tests/test_bonus_engine.py", "source_location": "L215", "receiver": "wp"}, {"caller_nid": "$graphify-root$_tests_test_bonus_engine_testfromdataset_test_zero_coords_skipped", "callee": "dumps", "is_member_call": true, "source_file": "tests/test_bonus_engine.py", "source_location": "L215", "receiver": "json"}, {"caller_nid": "$graphify-root$_tests_test_bonus_engine_testfromdataset_test_zero_coords_skipped", "callee": "from_dataset", "is_member_call": true, "source_file": "tests/test_bonus_engine.py", "source_location": "L217", "receiver": "BonusEngine"}, {"caller_nid": "$graphify-root$_tests_test_bonus_engine_testfromdataset_test_zero_coords_skipped", "callee": "compute", "is_member_call": true, "source_file": "tests/test_bonus_engine.py", "source_location": "L219", "receiver": "engine"}, {"caller_nid": "$graphify-root$_tests_test_bonus_engine_testbonusresultfields_test_matched_names_populated", "callee": "compute", "is_member_call": true, "source_file": "tests/test_bonus_engine.py", "source_location": "L231", "receiver": "engine"}, {"caller_nid": "$graphify-root$_tests_test_bonus_engine_testbonusresultfields_test_no_match_empty_lists", "callee": "compute", "is_member_call": true, "source_file": "tests/test_bonus_engine.py", "source_location": "L237", "receiver": "engine"}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.31/c55543abeef8e54ee00023c4a3b962bbe6db55fb6110bac1ec5f2dcadf0240ac.json b/graphify-out/cache/ast/v0.9.31/c55543abeef8e54ee00023c4a3b962bbe6db55fb6110bac1ec5f2dcadf0240ac.json new file mode 100644 index 0000000..8f241ef --- /dev/null +++ b/graphify-out/cache/ast/v0.9.31/c55543abeef8e54ee00023c4a3b962bbe6db55fb6110bac1ec5f2dcadf0240ac.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_tests_test_explain_engine_py", "label": "test_explain_engine.py", "file_type": "code", "source_file": "tests/test_explain_engine.py", "source_location": "L1"}, {"id": "$graphify-root$_tests_test_explain_engine_make_plan", "label": "make_plan()", "file_type": "code", "source_file": "tests/test_explain_engine.py", "source_location": "L34", "_callable": true}, {"id": "itineraryplan", "label": "ItineraryPlan", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/tests/test_explain_engine.py"}, {"id": "$graphify-root$_tests_test_explain_engine_make_scores", "label": "make_scores()", "file_type": "code", "source_file": "tests/test_explain_engine.py", "source_location": "L43", "_callable": true}, {"id": "scores", "label": "Scores", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/tests/test_explain_engine.py"}, {"id": "$graphify-root$_tests_test_explain_engine_make_hard_fail", "label": "make_hard_fail()", "file_type": "code", "source_file": "tests/test_explain_engine.py", "source_location": "L47", "_callable": true}, {"id": "hardfail", "label": "HardFail", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/tests/test_explain_engine.py"}, {"id": "$graphify-root$_tests_test_explain_engine_make_warning", "label": "make_warning()", "file_type": "code", "source_file": "tests/test_explain_engine.py", "source_location": "L57", "_callable": true}, {"id": "warning", "label": "Warning", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/tests/test_explain_engine.py"}, {"id": "$graphify-root$_tests_test_explain_engine_make_graph_stub", "label": "make_graph_stub()", "file_type": "code", "source_file": "tests/test_explain_engine.py", "source_location": "L65", "_callable": true}, {"id": "$graphify-root$_tests_test_explain_engine_make_disabled_graph_stub", "label": "make_disabled_graph_stub()", "file_type": "code", "source_file": "tests/test_explain_engine.py", "source_location": "L83", "_callable": true}, {"id": "$graphify-root$_tests_test_explain_engine_testcachekey", "label": "TestCacheKey", "file_type": "code", "source_file": "tests/test_explain_engine.py", "source_location": "L93", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_tests_test_explain_engine_testcachekey_test_same_inputs_same_key", "label": ".test_same_inputs_same_key()", "file_type": "code", "source_file": "tests/test_explain_engine.py", "source_location": "L94", "_callable": true}, {"id": "$graphify-root$_tests_test_explain_engine_testcachekey_test_different_score_different_key", "label": ".test_different_score_different_key()", "file_type": "code", "source_file": "tests/test_explain_engine.py", "source_location": "L100", "_callable": true}, {"id": "$graphify-root$_tests_test_explain_engine_testcachekey_test_empty_inputs", "label": ".test_empty_inputs()", "file_type": "code", "source_file": "tests/test_explain_engine.py", "source_location": "L104", "_callable": true}, {"id": "$graphify-root$_tests_test_explain_engine_testcachekey_test_different_day_index_different_key", "label": ".test_different_day_index_different_key()", "file_type": "code", "source_file": "tests/test_explain_engine.py", "source_location": "L108", "_callable": true}, {"id": "$graphify-root$_tests_test_explain_engine_testgraphcontext", "label": "TestGraphContext", "file_type": "code", "source_file": "tests/test_explain_engine.py", "source_location": "L120", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_tests_test_explain_engine_testgraphcontext_test_none_graph_returns_none", "label": ".test_none_graph_returns_none()", "file_type": "code", "source_file": "tests/test_explain_engine.py", "source_location": "L121", "_callable": true}, {"id": "$graphify-root$_tests_test_explain_engine_testgraphcontext_test_disabled_graph_returns_none", "label": ".test_disabled_graph_returns_none()", "file_type": "code", "source_file": "tests/test_explain_engine.py", "source_location": "L124", "_callable": true}, {"id": "$graphify-root$_tests_test_explain_engine_testgraphcontext_test_empty_poi_name_returns_none", "label": ".test_empty_poi_name_returns_none()", "file_type": "code", "source_file": "tests/test_explain_engine.py", "source_location": "L127", "_callable": true}, {"id": "$graphify-root$_tests_test_explain_engine_testgraphcontext_test_no_match_returns_none", "label": ".test_no_match_returns_none()", "file_type": "code", "source_file": "tests/test_explain_engine.py", "source_location": "L130", "_callable": true}, {"id": "$graphify-root$_tests_test_explain_engine_testgraphcontext_test_match_includes_region_and_category", "label": ".test_match_includes_region_and_category()", "file_type": "code", "source_file": "tests/test_explain_engine.py", "source_location": "L135", "_callable": true}, {"id": "$graphify-root$_tests_test_explain_engine_testgraphcontext_test_match_includes_nearby_alternatives", "label": ".test_match_includes_nearby_alternatives()", "file_type": "code", "source_file": "tests/test_explain_engine.py", "source_location": "L140", "_callable": true}, {"id": "$graphify-root$_tests_test_explain_engine_testgraphcontext_test_no_nearby_omits_key", "label": ".test_no_nearby_omits_key()", "file_type": "code", "source_file": "tests/test_explain_engine.py", "source_location": "L145", "_callable": true}, {"id": "$graphify-root$_tests_test_explain_engine_testbuilduserprompt", "label": "TestBuildUserPrompt", "file_type": "code", "source_file": "tests/test_explain_engine.py", "source_location": "L154", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_tests_test_explain_engine_testbuilduserprompt_test_contains_plan_info", "label": ".test_contains_plan_info()", "file_type": "code", "source_file": "tests/test_explain_engine.py", "source_location": "L155", "_callable": true}, {"id": "$graphify-root$_tests_test_explain_engine_testbuilduserprompt_test_hard_fail_in_prompt", "label": ".test_hard_fail_in_prompt()", "file_type": "code", "source_file": "tests/test_explain_engine.py", "source_location": "L160", "_callable": true}, {"id": "$graphify-root$_tests_test_explain_engine_testbuilduserprompt_test_warning_in_prompt", "label": ".test_warning_in_prompt()", "file_type": "code", "source_file": "tests/test_explain_engine.py", "source_location": "L165", "_callable": true}, {"id": "$graphify-root$_tests_test_explain_engine_testbuilduserprompt_test_penalty_in_prompt", "label": ".test_penalty_in_prompt()", "file_type": "code", "source_file": "tests/test_explain_engine.py", "source_location": "L169", "_callable": true}, {"id": "$graphify-root$_tests_test_explain_engine_testbuilduserprompt_test_scores_included_when_provided", "label": ".test_scores_included_when_provided()", "file_type": "code", "source_file": "tests/test_explain_engine.py", "source_location": "L173", "_callable": true}, {"id": "$graphify-root$_tests_test_explain_engine_testbuilduserprompt_test_overall_item_present", "label": ".test_overall_item_present()", "file_type": "code", "source_file": "tests/test_explain_engine.py", "source_location": "L177", "_callable": true}, {"id": "$graphify-root$_tests_test_explain_engine_testbuilduserprompt_test_graph_evidence_included_when_matched", "label": ".test_graph_evidence_included_when_matched()", "file_type": "code", "source_file": "tests/test_explain_engine.py", "source_location": "L182", "_callable": true}, {"id": "$graphify-root$_tests_test_explain_engine_testbuilduserprompt_test_no_graph_omits_evidence_key", "label": ".test_no_graph_omits_evidence_key()", "file_type": "code", "source_file": "tests/test_explain_engine.py", "source_location": "L190", "_callable": true}, {"id": "$graphify-root$_tests_test_explain_engine_testbuilduserprompt_test_day_index_included_for_hard_fail", "label": ".test_day_index_included_for_hard_fail()", "file_type": "code", "source_file": "tests/test_explain_engine.py", "source_location": "L194", "_callable": true}, {"id": "$graphify-root$_tests_test_explain_engine_testbuilduserprompt_test_day_index_included_for_warning", "label": ".test_day_index_included_for_warning()", "file_type": "code", "source_file": "tests/test_explain_engine.py", "source_location": "L200", "_callable": true}, {"id": "$graphify-root$_tests_test_explain_engine_testbuilduserprompt_test_no_day_index_omits_day_field", "label": ".test_no_day_index_omits_day_field()", "file_type": "code", "source_file": "tests/test_explain_engine.py", "source_location": "L209", "_callable": true}, {"id": "$graphify-root$_tests_test_explain_engine_testbuilduserprompt_test_warning_graph_evidence_uses_first_poi_name", "label": ".test_warning_graph_evidence_uses_first_poi_name()", "file_type": "code", "source_file": "tests/test_explain_engine.py", "source_location": "L213", "_callable": true}, {"id": "$graphify-root$_tests_test_explain_engine_testparsellmresponse", "label": "TestParseLlmResponse", "file_type": "code", "source_file": "tests/test_explain_engine.py", "source_location": "L225", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_tests_test_explain_engine_testparsellmresponse_test_parses_valid_json_array", "label": ".test_parses_valid_json_array()", "file_type": "code", "source_file": "tests/test_explain_engine.py", "source_location": "L226", "_callable": true}, {"id": "$graphify-root$_tests_test_explain_engine_testparsellmresponse_test_strips_code_block_wrapper", "label": ".test_strips_code_block_wrapper()", "file_type": "code", "source_file": "tests/test_explain_engine.py", "source_location": "L240", "_callable": true}, {"id": "$graphify-root$_tests_test_explain_engine_testparsellmresponse_test_multiple_items", "label": ".test_multiple_items()", "file_type": "code", "source_file": "tests/test_explain_engine.py", "source_location": "L246", "_callable": true}, {"id": "$graphify-root$_tests_test_explain_engine_testparsellmresponse_test_returns_explanation_items", "label": ".test_returns_explanation_items()", "file_type": "code", "source_file": "tests/test_explain_engine.py", "source_location": "L254", "_callable": true}, {"id": "$graphify-root$_tests_test_explain_engine_testparsellmresponse_test_day_index_echoed_back", "label": ".test_day_index_echoed_back()", "file_type": "code", "source_file": "tests/test_explain_engine.py", "source_location": "L262", "_callable": true}, {"id": "$graphify-root$_tests_test_explain_engine_testparsellmresponse_test_missing_day_index_defaults_to_none", "label": ".test_missing_day_index_defaults_to_none()", "file_type": "code", "source_file": "tests/test_explain_engine.py", "source_location": "L270", "_callable": true}, {"id": "$graphify-root$_tests_test_explain_engine_testfallback", "label": "TestFallback", "file_type": "code", "source_file": "tests/test_explain_engine.py", "source_location": "L283", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_tests_test_explain_engine_testfallback_test_hard_fail_becomes_critical", "label": ".test_hard_fail_becomes_critical()", "file_type": "code", "source_file": "tests/test_explain_engine.py", "source_location": "L284", "_callable": true}, {"id": "$graphify-root$_tests_test_explain_engine_testfallback_test_warning_becomes_warning", "label": ".test_warning_becomes_warning()", "file_type": "code", "source_file": "tests/test_explain_engine.py", "source_location": "L289", "_callable": true}, {"id": "$graphify-root$_tests_test_explain_engine_testfallback_test_large_penalty_is_critical", "label": ".test_large_penalty_is_critical()", "file_type": "code", "source_file": "tests/test_explain_engine.py", "source_location": "L294", "_callable": true}, {"id": "$graphify-root$_tests_test_explain_engine_testfallback_test_small_penalty_is_warning", "label": ".test_small_penalty_is_warning()", "file_type": "code", "source_file": "tests/test_explain_engine.py", "source_location": "L299", "_callable": true}, {"id": "$graphify-root$_tests_test_explain_engine_testfallback_test_always_has_overall_item", "label": ".test_always_has_overall_item()", "file_type": "code", "source_file": "tests/test_explain_engine.py", "source_location": "L304", "_callable": true}, {"id": "$graphify-root$_tests_test_explain_engine_testfallback_test_failed_overall_is_critical", "label": ".test_failed_overall_is_critical()", "file_type": "code", "source_file": "tests/test_explain_engine.py", "source_location": "L314", "_callable": true}, {"id": "$graphify-root$_tests_test_explain_engine_testfallback_test_passed_overall_is_ok", "label": ".test_passed_overall_is_ok()", "file_type": "code", "source_file": "tests/test_explain_engine.py", "source_location": "L319", "_callable": true}, {"id": "$graphify-root$_tests_test_explain_engine_testfallback_test_hard_fail_day_index_propagated_and_prefixed", "label": ".test_hard_fail_day_index_propagated_and_prefixed()", "file_type": "code", "source_file": "tests/test_explain_engine.py", "source_location": "L324", "_callable": true}, {"id": "$graphify-root$_tests_test_explain_engine_testfallback_test_warning_day_index_propagated_and_prefixed", "label": ".test_warning_day_index_propagated_and_prefixed()", "file_type": "code", "source_file": "tests/test_explain_engine.py", "source_location": "L332", "_callable": true}, {"id": "$graphify-root$_tests_test_explain_engine_testfallback_test_no_day_index_no_prefix", "label": ".test_no_day_index_no_prefix()", "file_type": "code", "source_file": "tests/test_explain_engine.py", "source_location": "L340", "_callable": true}, {"id": "$graphify-root$_tests_test_explain_engine_testexplainenginenollm", "label": "TestExplainEngineNoLLM", "file_type": "code", "source_file": "tests/test_explain_engine.py", "source_location": "L351", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_tests_test_explain_engine_testexplainenginenollm_setup_method", "label": ".setup_method()", "file_type": "code", "source_file": "tests/test_explain_engine.py", "source_location": "L352", "_callable": true}, {"id": "$graphify-root$_tests_test_explain_engine_testexplainenginenollm_test_is_available_false_without_key", "label": ".test_is_available_false_without_key()", "file_type": "code", "source_file": "tests/test_explain_engine.py", "source_location": "L356", "_callable": true}, {"id": "$graphify-root$_tests_test_explain_engine_testexplainenginenollm_test_generate_returns_list_of_explanation_items", "label": ".test_generate_returns_list_of_explanation_items()", "file_type": "code", "source_file": "tests/test_explain_engine.py", "source_location": "L359", "_callable": true}, {"id": "$graphify-root$_tests_test_explain_engine_testexplainenginenollm_test_no_issues_returns_ok_overall", "label": ".test_no_issues_returns_ok_overall()", "file_type": "code", "source_file": "tests/test_explain_engine.py", "source_location": "L372", "_callable": true}, {"id": "$graphify-root$_tests_test_explain_engine_testexplainenginenollm_test_hard_fail_present_in_results", "label": ".test_hard_fail_present_in_results()", "file_type": "code", "source_file": "tests/test_explain_engine.py", "source_location": "L381", "_callable": true}, {"id": "$graphify-root$_tests_test_explain_engine_testexplainenginenollm_test_warning_present_in_results", "label": ".test_warning_present_in_results()", "file_type": "code", "source_file": "tests/test_explain_engine.py", "source_location": "L389", "_callable": true}, {"id": "$graphify-root$_tests_test_explain_engine_testexplainenginenollm_test_penalty_present_in_results", "label": ".test_penalty_present_in_results()", "file_type": "code", "source_file": "tests/test_explain_engine.py", "source_location": "L397", "_callable": true}, {"id": "$graphify-root$_tests_test_explain_engine_testexplainenginemockllm", "label": "TestExplainEngineMockLLM", "file_type": "code", "source_file": "tests/test_explain_engine.py", "source_location": "L410", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_tests_test_explain_engine_testexplainenginemockllm_make_mock_client", "label": "._make_mock_client()", "file_type": "code", "source_file": "tests/test_explain_engine.py", "source_location": "L411", "_callable": true}, {"id": "$graphify-root$_tests_test_explain_engine_testexplainenginemockllm_test_llm_response_used_when_available", "label": ".test_llm_response_used_when_available()", "file_type": "code", "source_file": "tests/test_explain_engine.py", "source_location": "L421", "_callable": true}, {"id": "$graphify-root$_tests_test_explain_engine_testexplainenginemockllm_test_llm_failure_falls_back_gracefully", "label": ".test_llm_failure_falls_back_gracefully()", "file_type": "code", "source_file": "tests/test_explain_engine.py", "source_location": "L445", "_callable": true}, {"id": "$graphify-root$_tests_test_explain_engine_testexplainenginemockllm_test_cache_prevents_second_llm_call", "label": ".test_cache_prevents_second_llm_call()", "file_type": "code", "source_file": "tests/test_explain_engine.py", "source_location": "L456", "_callable": true}, {"id": "$graphify-root$_tests_test_explain_engine_testexplainenginemockllm_test_is_available_with_client", "label": ".test_is_available_with_client()", "file_type": "code", "source_file": "tests/test_explain_engine.py", "source_location": "L472", "_callable": true}, {"id": "$graphify-root$_tests_test_explain_engine_testexplainenginemockllm_test_graph_evidence_reaches_llm_prompt", "label": ".test_graph_evidence_reaches_llm_prompt()", "file_type": "code", "source_file": "tests/test_explain_engine.py", "source_location": "L477", "_callable": true}, {"id": "$graphify-root$_tests_test_explain_engine_testexplainenginegraphdefault", "label": "TestExplainEngineGraphDefault", "file_type": "code", "source_file": "tests/test_explain_engine.py", "source_location": "L496", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_tests_test_explain_engine_testexplainenginegraphdefault_test_default_graph_disabled_without_env", "label": ".test_default_graph_disabled_without_env()", "file_type": "code", "source_file": "tests/test_explain_engine.py", "source_location": "L497", "_callable": true}, {"id": "$graphify-root$_tests_test_explain_engine_testbuildalternatives", "label": "TestBuildAlternatives", "file_type": "code", "source_file": "tests/test_explain_engine.py", "source_location": "L507", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_tests_test_explain_engine_testbuildalternatives_test_no_hard_fails_returns_empty", "label": ".test_no_hard_fails_returns_empty()", "file_type": "code", "source_file": "tests/test_explain_engine.py", "source_location": "L508", "_callable": true}, {"id": "$graphify-root$_tests_test_explain_engine_testbuildalternatives_test_disabled_graph_returns_empty", "label": ".test_disabled_graph_returns_empty()", "file_type": "code", "source_file": "tests/test_explain_engine.py", "source_location": "L512", "_callable": true}, {"id": "$graphify-root$_tests_test_explain_engine_testbuildalternatives_test_hard_fail_without_poi_name_skipped", "label": ".test_hard_fail_without_poi_name_skipped()", "file_type": "code", "source_file": "tests/test_explain_engine.py", "source_location": "L518", "_callable": true}, {"id": "$graphify-root$_tests_test_explain_engine_testbuildalternatives_test_match_returns_alternatives_keyed_by_poi_name", "label": ".test_match_returns_alternatives_keyed_by_poi_name()", "file_type": "code", "source_file": "tests/test_explain_engine.py", "source_location": "L524", "_callable": true}, {"id": "$graphify-root$_tests_test_explain_engine_testbuildalternatives_test_no_nearby_omits_poi", "label": ".test_no_nearby_omits_poi()", "file_type": "code", "source_file": "tests/test_explain_engine.py", "source_location": "L532", "_callable": true}, {"id": "$graphify-root$_tests_test_explain_engine_testbuildalternatives_test_no_search_match_omits_poi", "label": ".test_no_search_match_omits_poi()", "file_type": "code", "source_file": "tests/test_explain_engine.py", "source_location": "L540", "_callable": true}, {"id": "$graphify-root$_tests_test_explain_engine_testbuildalternatives_test_duplicate_poi_name_only_looked_up_once", "label": ".test_duplicate_poi_name_only_looked_up_once()", "file_type": "code", "source_file": "tests/test_explain_engine.py", "source_location": "L548", "_callable": true}, {"id": "$graphify-root$_tests_test_explain_engine_rationale_1", "label": "Tests for ExplainEngine (TDD) \u2014 LLM\uc740 mock\uc73c\ub85c \ub300\uccb4.", "file_type": "rationale", "source_file": "tests/test_explain_engine.py", "source_location": "L1"}, {"id": "$graphify-root$_tests_test_explain_engine_rationale_66", "label": "GraphRetriever \uc2a4\ud141 \u2014 \uc2e4\uc81c Neo4j \uc5f0\uacb0 \uc5c6\uc774 \uc131\uc0b0\uc77c\ucd9c\ubd09 \uac80\uc0c9 \uacb0\uacfc\ub97c \ud749\ub0b4\ub0b8\ub2e4.", "file_type": "rationale", "source_file": "tests/test_explain_engine.py", "source_location": "L66"}], "edges": [{"source": "$graphify-root$_tests_test_explain_engine_py", "target": "json", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L4", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_py", "target": "unittest_mock", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L5", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_py", "target": "pytest", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L7", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_py", "target": "src_data_models", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L9", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_py", "target": "src_explain_explain_engine", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L20", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_py", "target": "$graphify-root$_tests_test_explain_engine_make_plan", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L34", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_make_plan", "target": "itineraryplan", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L34", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_py", "target": "$graphify-root$_tests_test_explain_engine_make_scores", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L43", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_make_scores", "target": "scores", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L43", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_py", "target": "$graphify-root$_tests_test_explain_engine_make_hard_fail", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L47", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_make_hard_fail", "target": "hardfail", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L47", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_py", "target": "$graphify-root$_tests_test_explain_engine_make_warning", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L57", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_make_warning", "target": "warning", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L57", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_py", "target": "$graphify-root$_tests_test_explain_engine_make_graph_stub", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L65", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_py", "target": "$graphify-root$_tests_test_explain_engine_make_disabled_graph_stub", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L83", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_py", "target": "$graphify-root$_tests_test_explain_engine_testcachekey", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L93", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_testcachekey", "target": "$graphify-root$_tests_test_explain_engine_testcachekey_test_same_inputs_same_key", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L94", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_testcachekey", "target": "$graphify-root$_tests_test_explain_engine_testcachekey_test_different_score_different_key", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L100", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_testcachekey", "target": "$graphify-root$_tests_test_explain_engine_testcachekey_test_empty_inputs", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L104", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_testcachekey", "target": "$graphify-root$_tests_test_explain_engine_testcachekey_test_different_day_index_different_key", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L108", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_py", "target": "$graphify-root$_tests_test_explain_engine_testgraphcontext", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L120", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_testgraphcontext", "target": "$graphify-root$_tests_test_explain_engine_testgraphcontext_test_none_graph_returns_none", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L121", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_testgraphcontext", "target": "$graphify-root$_tests_test_explain_engine_testgraphcontext_test_disabled_graph_returns_none", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L124", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_testgraphcontext", "target": "$graphify-root$_tests_test_explain_engine_testgraphcontext_test_empty_poi_name_returns_none", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L127", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_testgraphcontext", "target": "$graphify-root$_tests_test_explain_engine_testgraphcontext_test_no_match_returns_none", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L130", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_testgraphcontext", "target": "$graphify-root$_tests_test_explain_engine_testgraphcontext_test_match_includes_region_and_category", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L135", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_testgraphcontext", "target": "$graphify-root$_tests_test_explain_engine_testgraphcontext_test_match_includes_nearby_alternatives", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L140", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_testgraphcontext", "target": "$graphify-root$_tests_test_explain_engine_testgraphcontext_test_no_nearby_omits_key", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L145", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_py", "target": "$graphify-root$_tests_test_explain_engine_testbuilduserprompt", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L154", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_testbuilduserprompt", "target": "$graphify-root$_tests_test_explain_engine_testbuilduserprompt_test_contains_plan_info", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L155", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_testbuilduserprompt", "target": "$graphify-root$_tests_test_explain_engine_testbuilduserprompt_test_hard_fail_in_prompt", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L160", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_testbuilduserprompt", "target": "$graphify-root$_tests_test_explain_engine_testbuilduserprompt_test_warning_in_prompt", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L165", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_testbuilduserprompt", "target": "$graphify-root$_tests_test_explain_engine_testbuilduserprompt_test_penalty_in_prompt", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L169", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_testbuilduserprompt", "target": "$graphify-root$_tests_test_explain_engine_testbuilduserprompt_test_scores_included_when_provided", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L173", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_testbuilduserprompt", "target": "$graphify-root$_tests_test_explain_engine_testbuilduserprompt_test_overall_item_present", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L177", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_testbuilduserprompt", "target": "$graphify-root$_tests_test_explain_engine_testbuilduserprompt_test_graph_evidence_included_when_matched", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L182", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_testbuilduserprompt", "target": "$graphify-root$_tests_test_explain_engine_testbuilduserprompt_test_no_graph_omits_evidence_key", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L190", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_testbuilduserprompt", "target": "$graphify-root$_tests_test_explain_engine_testbuilduserprompt_test_day_index_included_for_hard_fail", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L194", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_testbuilduserprompt", "target": "$graphify-root$_tests_test_explain_engine_testbuilduserprompt_test_day_index_included_for_warning", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L200", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_testbuilduserprompt", "target": "$graphify-root$_tests_test_explain_engine_testbuilduserprompt_test_no_day_index_omits_day_field", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L209", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_testbuilduserprompt", "target": "$graphify-root$_tests_test_explain_engine_testbuilduserprompt_test_warning_graph_evidence_uses_first_poi_name", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L213", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_py", "target": "$graphify-root$_tests_test_explain_engine_testparsellmresponse", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L225", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_testparsellmresponse", "target": "$graphify-root$_tests_test_explain_engine_testparsellmresponse_test_parses_valid_json_array", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L226", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_testparsellmresponse", "target": "$graphify-root$_tests_test_explain_engine_testparsellmresponse_test_strips_code_block_wrapper", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L240", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_testparsellmresponse", "target": "$graphify-root$_tests_test_explain_engine_testparsellmresponse_test_multiple_items", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L246", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_testparsellmresponse", "target": "$graphify-root$_tests_test_explain_engine_testparsellmresponse_test_returns_explanation_items", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L254", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_testparsellmresponse", "target": "$graphify-root$_tests_test_explain_engine_testparsellmresponse_test_day_index_echoed_back", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L262", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_testparsellmresponse", "target": "$graphify-root$_tests_test_explain_engine_testparsellmresponse_test_missing_day_index_defaults_to_none", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L270", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_py", "target": "$graphify-root$_tests_test_explain_engine_testfallback", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L283", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_testfallback", "target": "$graphify-root$_tests_test_explain_engine_testfallback_test_hard_fail_becomes_critical", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L284", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_testfallback", "target": "$graphify-root$_tests_test_explain_engine_testfallback_test_warning_becomes_warning", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L289", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_testfallback", "target": "$graphify-root$_tests_test_explain_engine_testfallback_test_large_penalty_is_critical", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L294", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_testfallback", "target": "$graphify-root$_tests_test_explain_engine_testfallback_test_small_penalty_is_warning", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L299", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_testfallback", "target": "$graphify-root$_tests_test_explain_engine_testfallback_test_always_has_overall_item", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L304", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_testfallback", "target": "$graphify-root$_tests_test_explain_engine_testfallback_test_failed_overall_is_critical", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L314", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_testfallback", "target": "$graphify-root$_tests_test_explain_engine_testfallback_test_passed_overall_is_ok", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L319", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_testfallback", "target": "$graphify-root$_tests_test_explain_engine_testfallback_test_hard_fail_day_index_propagated_and_prefixed", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L324", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_testfallback", "target": "$graphify-root$_tests_test_explain_engine_testfallback_test_warning_day_index_propagated_and_prefixed", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L332", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_testfallback", "target": "$graphify-root$_tests_test_explain_engine_testfallback_test_no_day_index_no_prefix", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L340", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_py", "target": "$graphify-root$_tests_test_explain_engine_testexplainenginenollm", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L351", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_testexplainenginenollm", "target": "$graphify-root$_tests_test_explain_engine_testexplainenginenollm_setup_method", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L352", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_testexplainenginenollm", "target": "$graphify-root$_tests_test_explain_engine_testexplainenginenollm_test_is_available_false_without_key", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L356", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_testexplainenginenollm", "target": "$graphify-root$_tests_test_explain_engine_testexplainenginenollm_test_generate_returns_list_of_explanation_items", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L359", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_testexplainenginenollm", "target": "$graphify-root$_tests_test_explain_engine_testexplainenginenollm_test_no_issues_returns_ok_overall", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L372", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_testexplainenginenollm", "target": "$graphify-root$_tests_test_explain_engine_testexplainenginenollm_test_hard_fail_present_in_results", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L381", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_testexplainenginenollm", "target": "$graphify-root$_tests_test_explain_engine_testexplainenginenollm_test_warning_present_in_results", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L389", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_testexplainenginenollm", "target": "$graphify-root$_tests_test_explain_engine_testexplainenginenollm_test_penalty_present_in_results", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L397", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_py", "target": "$graphify-root$_tests_test_explain_engine_testexplainenginemockllm", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L410", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_testexplainenginemockllm", "target": "$graphify-root$_tests_test_explain_engine_testexplainenginemockllm_make_mock_client", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L411", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_testexplainenginemockllm", "target": "$graphify-root$_tests_test_explain_engine_testexplainenginemockllm_test_llm_response_used_when_available", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L421", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_testexplainenginemockllm", "target": "$graphify-root$_tests_test_explain_engine_testexplainenginemockllm_test_llm_failure_falls_back_gracefully", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L445", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_testexplainenginemockllm", "target": "$graphify-root$_tests_test_explain_engine_testexplainenginemockllm_test_cache_prevents_second_llm_call", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L456", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_testexplainenginemockllm", "target": "$graphify-root$_tests_test_explain_engine_testexplainenginemockllm_test_is_available_with_client", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L472", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_testexplainenginemockllm", "target": "$graphify-root$_tests_test_explain_engine_testexplainenginemockllm_test_graph_evidence_reaches_llm_prompt", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L477", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_py", "target": "$graphify-root$_tests_test_explain_engine_testexplainenginegraphdefault", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L496", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_testexplainenginegraphdefault", "target": "$graphify-root$_tests_test_explain_engine_testexplainenginegraphdefault_test_default_graph_disabled_without_env", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L497", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_py", "target": "$graphify-root$_tests_test_explain_engine_testbuildalternatives", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L507", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_testbuildalternatives", "target": "$graphify-root$_tests_test_explain_engine_testbuildalternatives_test_no_hard_fails_returns_empty", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L508", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_testbuildalternatives", "target": "$graphify-root$_tests_test_explain_engine_testbuildalternatives_test_disabled_graph_returns_empty", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L512", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_testbuildalternatives", "target": "$graphify-root$_tests_test_explain_engine_testbuildalternatives_test_hard_fail_without_poi_name_skipped", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L518", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_testbuildalternatives", "target": "$graphify-root$_tests_test_explain_engine_testbuildalternatives_test_match_returns_alternatives_keyed_by_poi_name", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L524", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_testbuildalternatives", "target": "$graphify-root$_tests_test_explain_engine_testbuildalternatives_test_no_nearby_omits_poi", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L532", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_testbuildalternatives", "target": "$graphify-root$_tests_test_explain_engine_testbuildalternatives_test_no_search_match_omits_poi", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L540", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_testbuildalternatives", "target": "$graphify-root$_tests_test_explain_engine_testbuildalternatives_test_duplicate_poi_name_only_looked_up_once", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L548", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_make_plan", "target": "itineraryplan", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L35", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_make_scores", "target": "scores", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L44", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_make_hard_fail", "target": "hardfail", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L48", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_make_warning", "target": "warning", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L58", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_testcachekey_test_same_inputs_same_key", "target": "$graphify-root$_tests_test_explain_engine_make_hard_fail", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L95", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_testcachekey_test_same_inputs_same_key", "target": "$graphify-root$_tests_test_explain_engine_make_warning", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L96", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_testcachekey_test_different_score_different_key", "target": "$graphify-root$_tests_test_explain_engine_make_hard_fail", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L101", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_testcachekey_test_different_day_index_different_key", "target": "$graphify-root$_tests_test_explain_engine_make_hard_fail", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L109", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_testgraphcontext_test_disabled_graph_returns_none", "target": "$graphify-root$_tests_test_explain_engine_make_disabled_graph_stub", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L125", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_testgraphcontext_test_empty_poi_name_returns_none", "target": "$graphify-root$_tests_test_explain_engine_make_graph_stub", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L128", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_testgraphcontext_test_no_match_returns_none", "target": "$graphify-root$_tests_test_explain_engine_make_graph_stub", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L131", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_testgraphcontext_test_match_includes_region_and_category", "target": "$graphify-root$_tests_test_explain_engine_make_graph_stub", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L136", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_testgraphcontext_test_match_includes_nearby_alternatives", "target": "$graphify-root$_tests_test_explain_engine_make_graph_stub", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L141", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_testgraphcontext_test_no_nearby_omits_key", "target": "$graphify-root$_tests_test_explain_engine_make_graph_stub", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L146", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_testbuilduserprompt_test_contains_plan_info", "target": "$graphify-root$_tests_test_explain_engine_make_plan", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L156", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_testbuilduserprompt_test_hard_fail_in_prompt", "target": "$graphify-root$_tests_test_explain_engine_make_hard_fail", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L161", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_testbuilduserprompt_test_hard_fail_in_prompt", "target": "$graphify-root$_tests_test_explain_engine_make_plan", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L161", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_testbuilduserprompt_test_warning_in_prompt", "target": "$graphify-root$_tests_test_explain_engine_make_warning", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L166", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_testbuilduserprompt_test_warning_in_prompt", "target": "$graphify-root$_tests_test_explain_engine_make_plan", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L166", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_testbuilduserprompt_test_penalty_in_prompt", "target": "$graphify-root$_tests_test_explain_engine_make_plan", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L170", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_testbuilduserprompt_test_scores_included_when_provided", "target": "$graphify-root$_tests_test_explain_engine_make_scores", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L174", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_testbuilduserprompt_test_scores_included_when_provided", "target": "$graphify-root$_tests_test_explain_engine_make_plan", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L174", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_testbuilduserprompt_test_overall_item_present", "target": "$graphify-root$_tests_test_explain_engine_make_plan", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L178", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_testbuilduserprompt_test_graph_evidence_included_when_matched", "target": "$graphify-root$_tests_test_explain_engine_make_hard_fail", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L184", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_testbuilduserprompt_test_graph_evidence_included_when_matched", "target": "$graphify-root$_tests_test_explain_engine_make_plan", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L184", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_testbuilduserprompt_test_graph_evidence_included_when_matched", "target": "$graphify-root$_tests_test_explain_engine_make_graph_stub", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L185", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_testbuilduserprompt_test_no_graph_omits_evidence_key", "target": "$graphify-root$_tests_test_explain_engine_make_hard_fail", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L191", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_testbuilduserprompt_test_no_graph_omits_evidence_key", "target": "$graphify-root$_tests_test_explain_engine_make_plan", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L191", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_testbuilduserprompt_test_day_index_included_for_hard_fail", "target": "$graphify-root$_tests_test_explain_engine_make_hard_fail", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L195", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_testbuilduserprompt_test_day_index_included_for_hard_fail", "target": "$graphify-root$_tests_test_explain_engine_make_plan", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L197", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_testbuilduserprompt_test_day_index_included_for_warning", "target": "$graphify-root$_tests_test_explain_engine_make_warning", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L201", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_testbuilduserprompt_test_day_index_included_for_warning", "target": "$graphify-root$_tests_test_explain_engine_make_plan", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L204", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_testbuilduserprompt_test_no_day_index_omits_day_field", "target": "$graphify-root$_tests_test_explain_engine_make_hard_fail", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L210", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_testbuilduserprompt_test_no_day_index_omits_day_field", "target": "$graphify-root$_tests_test_explain_engine_make_warning", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L210", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_testbuilduserprompt_test_no_day_index_omits_day_field", "target": "$graphify-root$_tests_test_explain_engine_make_plan", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L210", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_testbuilduserprompt_test_warning_graph_evidence_uses_first_poi_name", "target": "$graphify-root$_tests_test_explain_engine_make_warning", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L214", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_testbuilduserprompt_test_warning_graph_evidence_uses_first_poi_name", "target": "$graphify-root$_tests_test_explain_engine_make_plan", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L216", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_testbuilduserprompt_test_warning_graph_evidence_uses_first_poi_name", "target": "$graphify-root$_tests_test_explain_engine_make_graph_stub", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L216", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_testfallback_test_hard_fail_becomes_critical", "target": "$graphify-root$_tests_test_explain_engine_make_hard_fail", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L285", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_testfallback_test_warning_becomes_warning", "target": "$graphify-root$_tests_test_explain_engine_make_warning", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L290", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_testfallback_test_always_has_overall_item", "target": "$graphify-root$_tests_test_explain_engine_make_hard_fail", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L306", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_testfallback_test_always_has_overall_item", "target": "$graphify-root$_tests_test_explain_engine_make_warning", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L307", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_testfallback_test_failed_overall_is_critical", "target": "$graphify-root$_tests_test_explain_engine_make_hard_fail", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L315", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_testfallback_test_hard_fail_day_index_propagated_and_prefixed", "target": "$graphify-root$_tests_test_explain_engine_make_hard_fail", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L325", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_testfallback_test_warning_day_index_propagated_and_prefixed", "target": "$graphify-root$_tests_test_explain_engine_make_warning", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L333", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_testfallback_test_no_day_index_no_prefix", "target": "$graphify-root$_tests_test_explain_engine_make_hard_fail", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L341", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_testexplainenginenollm_test_generate_returns_list_of_explanation_items", "target": "$graphify-root$_tests_test_explain_engine_make_hard_fail", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L361", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_testexplainenginenollm_test_generate_returns_list_of_explanation_items", "target": "$graphify-root$_tests_test_explain_engine_make_warning", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L362", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_testexplainenginenollm_test_generate_returns_list_of_explanation_items", "target": "$graphify-root$_tests_test_explain_engine_make_scores", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L365", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_testexplainenginenollm_test_generate_returns_list_of_explanation_items", "target": "$graphify-root$_tests_test_explain_engine_make_plan", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L366", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_testexplainenginenollm_test_no_issues_returns_ok_overall", "target": "$graphify-root$_tests_test_explain_engine_make_scores", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L375", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_testexplainenginenollm_test_no_issues_returns_ok_overall", "target": "$graphify-root$_tests_test_explain_engine_make_plan", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L375", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_testexplainenginenollm_test_hard_fail_present_in_results", "target": "$graphify-root$_tests_test_explain_engine_make_hard_fail", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L383", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_testexplainenginenollm_test_hard_fail_present_in_results", "target": "$graphify-root$_tests_test_explain_engine_make_plan", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L384", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_testexplainenginenollm_test_warning_present_in_results", "target": "$graphify-root$_tests_test_explain_engine_make_warning", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L391", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_testexplainenginenollm_test_warning_present_in_results", "target": "$graphify-root$_tests_test_explain_engine_make_plan", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L392", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_testexplainenginenollm_test_penalty_present_in_results", "target": "$graphify-root$_tests_test_explain_engine_make_plan", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L400", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_testexplainenginemockllm_test_llm_response_used_when_available", "target": "$graphify-root$_tests_test_explain_engine_testexplainenginemockllm_make_mock_client", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L437", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_testexplainenginemockllm_test_llm_response_used_when_available", "target": "$graphify-root$_tests_test_explain_engine_make_hard_fail", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L439", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_testexplainenginemockllm_test_llm_response_used_when_available", "target": "$graphify-root$_tests_test_explain_engine_make_plan", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L440", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_testexplainenginemockllm_test_llm_failure_falls_back_gracefully", "target": "$graphify-root$_tests_test_explain_engine_make_hard_fail", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L450", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_testexplainenginemockllm_test_llm_failure_falls_back_gracefully", "target": "$graphify-root$_tests_test_explain_engine_make_plan", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L451", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_testexplainenginemockllm_test_cache_prevents_second_llm_call", "target": "$graphify-root$_tests_test_explain_engine_testexplainenginemockllm_make_mock_client", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L464", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_testexplainenginemockllm_test_cache_prevents_second_llm_call", "target": "$graphify-root$_tests_test_explain_engine_make_hard_fail", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L467", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_testexplainenginemockllm_test_cache_prevents_second_llm_call", "target": "$graphify-root$_tests_test_explain_engine_make_plan", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L468", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_testexplainenginemockllm_test_graph_evidence_reaches_llm_prompt", "target": "$graphify-root$_tests_test_explain_engine_testexplainenginemockllm_make_mock_client", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L485", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_testexplainenginemockllm_test_graph_evidence_reaches_llm_prompt", "target": "$graphify-root$_tests_test_explain_engine_make_graph_stub", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L486", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_testexplainenginemockllm_test_graph_evidence_reaches_llm_prompt", "target": "$graphify-root$_tests_test_explain_engine_make_hard_fail", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L488", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_testexplainenginemockllm_test_graph_evidence_reaches_llm_prompt", "target": "$graphify-root$_tests_test_explain_engine_make_plan", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L489", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_testbuildalternatives_test_no_hard_fails_returns_empty", "target": "$graphify-root$_tests_test_explain_engine_make_graph_stub", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L509", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_testbuildalternatives_test_disabled_graph_returns_empty", "target": "$graphify-root$_tests_test_explain_engine_make_disabled_graph_stub", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L513", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_testbuildalternatives_test_disabled_graph_returns_empty", "target": "$graphify-root$_tests_test_explain_engine_make_hard_fail", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L514", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_testbuildalternatives_test_hard_fail_without_poi_name_skipped", "target": "$graphify-root$_tests_test_explain_engine_make_graph_stub", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L519", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_testbuildalternatives_test_hard_fail_without_poi_name_skipped", "target": "$graphify-root$_tests_test_explain_engine_make_hard_fail", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L520", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_testbuildalternatives_test_match_returns_alternatives_keyed_by_poi_name", "target": "$graphify-root$_tests_test_explain_engine_make_graph_stub", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L525", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_testbuildalternatives_test_match_returns_alternatives_keyed_by_poi_name", "target": "$graphify-root$_tests_test_explain_engine_make_hard_fail", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L526", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_testbuildalternatives_test_no_nearby_omits_poi", "target": "$graphify-root$_tests_test_explain_engine_make_graph_stub", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L534", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_testbuildalternatives_test_no_nearby_omits_poi", "target": "$graphify-root$_tests_test_explain_engine_make_hard_fail", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L536", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_testbuildalternatives_test_no_search_match_omits_poi", "target": "$graphify-root$_tests_test_explain_engine_make_graph_stub", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L541", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_testbuildalternatives_test_no_search_match_omits_poi", "target": "$graphify-root$_tests_test_explain_engine_make_hard_fail", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L544", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_testbuildalternatives_test_duplicate_poi_name_only_looked_up_once", "target": "$graphify-root$_tests_test_explain_engine_make_graph_stub", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L549", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_testbuildalternatives_test_duplicate_poi_name_only_looked_up_once", "target": "$graphify-root$_tests_test_explain_engine_make_hard_fail", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L551", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_rationale_1", "target": "$graphify-root$_tests_test_explain_engine_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L1", "weight": 1.0}, {"source": "$graphify-root$_tests_test_explain_engine_rationale_66", "target": "$graphify-root$_tests_test_explain_engine_make_graph_stub", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_explain_engine.py", "source_location": "L66", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_tests_test_explain_engine_make_plan", "callee": "DayPlan", "is_member_call": false, "source_file": "tests/test_explain_engine.py", "source_location": "L36", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_explain_engine_make_plan", "callee": "PlaceInput", "is_member_call": false, "source_file": "tests/test_explain_engine.py", "source_location": "L36", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_explain_engine_make_plan", "callee": "PlaceInput", "is_member_call": false, "source_file": "tests/test_explain_engine.py", "source_location": "L36", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_explain_engine_make_graph_stub", "callee": "MagicMock", "is_member_call": false, "source_file": "tests/test_explain_engine.py", "source_location": "L67", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_explain_engine_make_graph_stub", "callee": "PlaceEvidence", "is_member_call": false, "source_file": "tests/test_explain_engine.py", "source_location": "L70", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_explain_engine_make_graph_stub", "callee": "AlternativePOI", "is_member_call": false, "source_file": "tests/test_explain_engine.py", "source_location": "L77", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_explain_engine_make_disabled_graph_stub", "callee": "MagicMock", "is_member_call": false, "source_file": "tests/test_explain_engine.py", "source_location": "L84", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_explain_engine_testcachekey_test_same_inputs_same_key", "callee": "_cache_key", "is_member_call": false, "source_file": "tests/test_explain_engine.py", "source_location": "L98", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_explain_engine_testcachekey_test_same_inputs_same_key", "callee": "_cache_key", "is_member_call": false, "source_file": "tests/test_explain_engine.py", "source_location": "L98", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_explain_engine_testcachekey_test_different_score_different_key", "callee": "_cache_key", "is_member_call": false, "source_file": "tests/test_explain_engine.py", "source_location": "L102", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_explain_engine_testcachekey_test_different_score_different_key", "callee": "_cache_key", "is_member_call": false, "source_file": "tests/test_explain_engine.py", "source_location": "L102", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_explain_engine_testcachekey_test_empty_inputs", "callee": "_cache_key", "is_member_call": false, "source_file": "tests/test_explain_engine.py", "source_location": "L105", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_explain_engine_testcachekey_test_empty_inputs", "callee": "str", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_explain_engine.py", "source_location": "L106"}, {"caller_nid": "$graphify-root$_tests_test_explain_engine_testcachekey_test_different_day_index_different_key", "callee": "_cache_key", "is_member_call": false, "source_file": "tests/test_explain_engine.py", "source_location": "L113", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_explain_engine_testcachekey_test_different_day_index_different_key", "callee": "_cache_key", "is_member_call": false, "source_file": "tests/test_explain_engine.py", "source_location": "L113", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_explain_engine_testgraphcontext_test_none_graph_returns_none", "callee": "_graph_context", "is_member_call": false, "source_file": "tests/test_explain_engine.py", "source_location": "L122", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_explain_engine_testgraphcontext_test_disabled_graph_returns_none", "callee": "_graph_context", "is_member_call": false, "source_file": "tests/test_explain_engine.py", "source_location": "L125", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_explain_engine_testgraphcontext_test_empty_poi_name_returns_none", "callee": "_graph_context", "is_member_call": false, "source_file": "tests/test_explain_engine.py", "source_location": "L128", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_explain_engine_testgraphcontext_test_no_match_returns_none", "callee": "_graph_context", "is_member_call": false, "source_file": "tests/test_explain_engine.py", "source_location": "L133", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_explain_engine_testgraphcontext_test_match_includes_region_and_category", "callee": "_graph_context", "is_member_call": false, "source_file": "tests/test_explain_engine.py", "source_location": "L136", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_explain_engine_testgraphcontext_test_match_includes_nearby_alternatives", "callee": "_graph_context", "is_member_call": false, "source_file": "tests/test_explain_engine.py", "source_location": "L141", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_explain_engine_testgraphcontext_test_no_nearby_omits_key", "callee": "_graph_context", "is_member_call": false, "source_file": "tests/test_explain_engine.py", "source_location": "L146", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_explain_engine_testbuilduserprompt_test_contains_plan_info", "callee": "_build_user_prompt", "is_member_call": false, "source_file": "tests/test_explain_engine.py", "source_location": "L156", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_explain_engine_testbuilduserprompt_test_hard_fail_in_prompt", "callee": "_build_user_prompt", "is_member_call": false, "source_file": "tests/test_explain_engine.py", "source_location": "L161", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_explain_engine_testbuilduserprompt_test_warning_in_prompt", "callee": "_build_user_prompt", "is_member_call": false, "source_file": "tests/test_explain_engine.py", "source_location": "L166", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_explain_engine_testbuilduserprompt_test_penalty_in_prompt", "callee": "_build_user_prompt", "is_member_call": false, "source_file": "tests/test_explain_engine.py", "source_location": "L170", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_explain_engine_testbuilduserprompt_test_scores_included_when_provided", "callee": "_build_user_prompt", "is_member_call": false, "source_file": "tests/test_explain_engine.py", "source_location": "L174", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_explain_engine_testbuilduserprompt_test_scores_included_when_provided", "callee": "lower", "is_member_call": true, "source_file": "tests/test_explain_engine.py", "source_location": "L175", "receiver": "prompt"}, {"caller_nid": "$graphify-root$_tests_test_explain_engine_testbuilduserprompt_test_overall_item_present", "callee": "_build_user_prompt", "is_member_call": false, "source_file": "tests/test_explain_engine.py", "source_location": "L178", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_explain_engine_testbuilduserprompt_test_graph_evidence_included_when_matched", "callee": "_build_user_prompt", "is_member_call": false, "source_file": "tests/test_explain_engine.py", "source_location": "L183", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_explain_engine_testbuilduserprompt_test_no_graph_omits_evidence_key", "callee": "_build_user_prompt", "is_member_call": false, "source_file": "tests/test_explain_engine.py", "source_location": "L191", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_explain_engine_testbuilduserprompt_test_day_index_included_for_hard_fail", "callee": "_build_user_prompt", "is_member_call": false, "source_file": "tests/test_explain_engine.py", "source_location": "L197", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_explain_engine_testbuilduserprompt_test_day_index_included_for_warning", "callee": "_build_user_prompt", "is_member_call": false, "source_file": "tests/test_explain_engine.py", "source_location": "L204", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_explain_engine_testbuilduserprompt_test_no_day_index_omits_day_field", "callee": "_build_user_prompt", "is_member_call": false, "source_file": "tests/test_explain_engine.py", "source_location": "L210", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_explain_engine_testbuilduserprompt_test_no_day_index_omits_day_field", "callee": "split", "is_member_call": true, "source_file": "tests/test_explain_engine.py", "source_location": "L211", "receiver": "prompt"}, {"caller_nid": "$graphify-root$_tests_test_explain_engine_testbuilduserprompt_test_warning_graph_evidence_uses_first_poi_name", "callee": "_build_user_prompt", "is_member_call": false, "source_file": "tests/test_explain_engine.py", "source_location": "L216", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_explain_engine_testparsellmresponse_test_parses_valid_json_array", "callee": "dumps", "is_member_call": true, "source_file": "tests/test_explain_engine.py", "source_location": "L227", "receiver": "json"}, {"caller_nid": "$graphify-root$_tests_test_explain_engine_testparsellmresponse_test_parses_valid_json_array", "callee": "_parse_llm_response", "is_member_call": false, "source_file": "tests/test_explain_engine.py", "source_location": "L235", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_explain_engine_testparsellmresponse_test_strips_code_block_wrapper", "callee": "_parse_llm_response", "is_member_call": false, "source_file": "tests/test_explain_engine.py", "source_location": "L242", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_explain_engine_testparsellmresponse_test_multiple_items", "callee": "dumps", "is_member_call": true, "source_file": "tests/test_explain_engine.py", "source_location": "L247", "receiver": "json"}, {"caller_nid": "$graphify-root$_tests_test_explain_engine_testparsellmresponse_test_multiple_items", "callee": "_parse_llm_response", "is_member_call": false, "source_file": "tests/test_explain_engine.py", "source_location": "L251", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_explain_engine_testparsellmresponse_test_returns_explanation_items", "callee": "dumps", "is_member_call": true, "source_file": "tests/test_explain_engine.py", "source_location": "L255", "receiver": "json"}, {"caller_nid": "$graphify-root$_tests_test_explain_engine_testparsellmresponse_test_returns_explanation_items", "callee": "_parse_llm_response", "is_member_call": false, "source_file": "tests/test_explain_engine.py", "source_location": "L259", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_explain_engine_testparsellmresponse_test_returns_explanation_items", "callee": "ExplanationItem", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_explain_engine.py", "source_location": "L260"}, {"caller_nid": "$graphify-root$_tests_test_explain_engine_testparsellmresponse_test_day_index_echoed_back", "callee": "dumps", "is_member_call": true, "source_file": "tests/test_explain_engine.py", "source_location": "L263", "receiver": "json"}, {"caller_nid": "$graphify-root$_tests_test_explain_engine_testparsellmresponse_test_day_index_echoed_back", "callee": "_parse_llm_response", "is_member_call": false, "source_file": "tests/test_explain_engine.py", "source_location": "L267", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_explain_engine_testparsellmresponse_test_missing_day_index_defaults_to_none", "callee": "dumps", "is_member_call": true, "source_file": "tests/test_explain_engine.py", "source_location": "L271", "receiver": "json"}, {"caller_nid": "$graphify-root$_tests_test_explain_engine_testparsellmresponse_test_missing_day_index_defaults_to_none", "callee": "_parse_llm_response", "is_member_call": false, "source_file": "tests/test_explain_engine.py", "source_location": "L275", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_explain_engine_testfallback_test_hard_fail_becomes_critical", "callee": "_fallback", "is_member_call": false, "source_file": "tests/test_explain_engine.py", "source_location": "L285", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_explain_engine_testfallback_test_warning_becomes_warning", "callee": "_fallback", "is_member_call": false, "source_file": "tests/test_explain_engine.py", "source_location": "L290", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_explain_engine_testfallback_test_large_penalty_is_critical", "callee": "_fallback", "is_member_call": false, "source_file": "tests/test_explain_engine.py", "source_location": "L295", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_explain_engine_testfallback_test_small_penalty_is_warning", "callee": "_fallback", "is_member_call": false, "source_file": "tests/test_explain_engine.py", "source_location": "L300", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_explain_engine_testfallback_test_always_has_overall_item", "callee": "_fallback", "is_member_call": false, "source_file": "tests/test_explain_engine.py", "source_location": "L310", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_explain_engine_testfallback_test_failed_overall_is_critical", "callee": "_fallback", "is_member_call": false, "source_file": "tests/test_explain_engine.py", "source_location": "L315", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_explain_engine_testfallback_test_passed_overall_is_ok", "callee": "_fallback", "is_member_call": false, "source_file": "tests/test_explain_engine.py", "source_location": "L320", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_explain_engine_testfallback_test_hard_fail_day_index_propagated_and_prefixed", "callee": "_fallback", "is_member_call": false, "source_file": "tests/test_explain_engine.py", "source_location": "L327", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_explain_engine_testfallback_test_hard_fail_day_index_propagated_and_prefixed", "callee": "startswith", "is_member_call": true, "source_file": "tests/test_explain_engine.py", "source_location": "L330", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_explain_engine_testfallback_test_warning_day_index_propagated_and_prefixed", "callee": "_fallback", "is_member_call": false, "source_file": "tests/test_explain_engine.py", "source_location": "L335", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_explain_engine_testfallback_test_warning_day_index_propagated_and_prefixed", "callee": "startswith", "is_member_call": true, "source_file": "tests/test_explain_engine.py", "source_location": "L338", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_explain_engine_testfallback_test_no_day_index_no_prefix", "callee": "_fallback", "is_member_call": false, "source_file": "tests/test_explain_engine.py", "source_location": "L341", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_explain_engine_testfallback_test_no_day_index_no_prefix", "callee": "startswith", "is_member_call": true, "source_file": "tests/test_explain_engine.py", "source_location": "L344", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_explain_engine_testexplainenginenollm_setup_method", "callee": "ExplainEngine", "is_member_call": false, "source_file": "tests/test_explain_engine.py", "source_location": "L354", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_explain_engine_testexplainenginenollm_test_is_available_false_without_key", "callee": "is_available", "is_member_call": true, "source_file": "tests/test_explain_engine.py", "source_location": "L357", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_explain_engine_testexplainenginenollm_test_generate_returns_list_of_explanation_items", "callee": "generate", "is_member_call": true, "source_file": "tests/test_explain_engine.py", "source_location": "L360", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_explain_engine_testexplainenginenollm_test_generate_returns_list_of_explanation_items", "callee": "list", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_explain_engine.py", "source_location": "L369"}, {"caller_nid": "$graphify-root$_tests_test_explain_engine_testexplainenginenollm_test_generate_returns_list_of_explanation_items", "callee": "ExplanationItem", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_explain_engine.py", "source_location": "L370"}, {"caller_nid": "$graphify-root$_tests_test_explain_engine_testexplainenginenollm_test_no_issues_returns_ok_overall", "callee": "generate", "is_member_call": true, "source_file": "tests/test_explain_engine.py", "source_location": "L373", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_explain_engine_testexplainenginenollm_test_hard_fail_present_in_results", "callee": "generate", "is_member_call": true, "source_file": "tests/test_explain_engine.py", "source_location": "L382", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_explain_engine_testexplainenginenollm_test_warning_present_in_results", "callee": "generate", "is_member_call": true, "source_file": "tests/test_explain_engine.py", "source_location": "L390", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_explain_engine_testexplainenginenollm_test_penalty_present_in_results", "callee": "generate", "is_member_call": true, "source_file": "tests/test_explain_engine.py", "source_location": "L398", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_explain_engine_testexplainenginemockllm_make_mock_client", "callee": "dumps", "is_member_call": true, "source_file": "tests/test_explain_engine.py", "source_location": "L412", "receiver": "json"}, {"caller_nid": "$graphify-root$_tests_test_explain_engine_testexplainenginemockllm_make_mock_client", "callee": "MagicMock", "is_member_call": false, "source_file": "tests/test_explain_engine.py", "source_location": "L413", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_explain_engine_testexplainenginemockllm_make_mock_client", "callee": "MagicMock", "is_member_call": false, "source_file": "tests/test_explain_engine.py", "source_location": "L415", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_explain_engine_testexplainenginemockllm_make_mock_client", "callee": "MagicMock", "is_member_call": false, "source_file": "tests/test_explain_engine.py", "source_location": "L417", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_explain_engine_testexplainenginemockllm_test_llm_response_used_when_available", "callee": "ExplainEngine", "is_member_call": false, "source_file": "tests/test_explain_engine.py", "source_location": "L437", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_explain_engine_testexplainenginemockllm_test_llm_response_used_when_available", "callee": "generate", "is_member_call": true, "source_file": "tests/test_explain_engine.py", "source_location": "L438", "receiver": "engine"}, {"caller_nid": "$graphify-root$_tests_test_explain_engine_testexplainenginemockllm_test_llm_failure_falls_back_gracefully", "callee": "MagicMock", "is_member_call": false, "source_file": "tests/test_explain_engine.py", "source_location": "L446", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_explain_engine_testexplainenginemockllm_test_llm_failure_falls_back_gracefully", "callee": "Exception", "is_member_call": false, "source_file": "tests/test_explain_engine.py", "source_location": "L447", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_explain_engine_testexplainenginemockllm_test_llm_failure_falls_back_gracefully", "callee": "ExplainEngine", "is_member_call": false, "source_file": "tests/test_explain_engine.py", "source_location": "L448", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_explain_engine_testexplainenginemockllm_test_llm_failure_falls_back_gracefully", "callee": "generate", "is_member_call": true, "source_file": "tests/test_explain_engine.py", "source_location": "L449", "receiver": "engine"}, {"caller_nid": "$graphify-root$_tests_test_explain_engine_testexplainenginemockllm_test_llm_failure_falls_back_gracefully", "callee": "ExplanationItem", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_explain_engine.py", "source_location": "L454"}, {"caller_nid": "$graphify-root$_tests_test_explain_engine_testexplainenginemockllm_test_cache_prevents_second_llm_call", "callee": "clear", "is_member_call": true, "source_file": "tests/test_explain_engine.py", "source_location": "L458", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_explain_engine_testexplainenginemockllm_test_cache_prevents_second_llm_call", "callee": "ExplainEngine", "is_member_call": false, "source_file": "tests/test_explain_engine.py", "source_location": "L465", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_explain_engine_testexplainenginemockllm_test_cache_prevents_second_llm_call", "callee": "generate", "is_member_call": true, "source_file": "tests/test_explain_engine.py", "source_location": "L468", "receiver": "engine"}, {"caller_nid": "$graphify-root$_tests_test_explain_engine_testexplainenginemockllm_test_cache_prevents_second_llm_call", "callee": "generate", "is_member_call": true, "source_file": "tests/test_explain_engine.py", "source_location": "L469", "receiver": "engine"}, {"caller_nid": "$graphify-root$_tests_test_explain_engine_testexplainenginemockllm_test_is_available_with_client", "callee": "MagicMock", "is_member_call": false, "source_file": "tests/test_explain_engine.py", "source_location": "L473", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_explain_engine_testexplainenginemockllm_test_is_available_with_client", "callee": "ExplainEngine", "is_member_call": false, "source_file": "tests/test_explain_engine.py", "source_location": "L474", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_explain_engine_testexplainenginemockllm_test_is_available_with_client", "callee": "is_available", "is_member_call": true, "source_file": "tests/test_explain_engine.py", "source_location": "L475", "receiver": "engine"}, {"caller_nid": "$graphify-root$_tests_test_explain_engine_testexplainenginemockllm_test_graph_evidence_reaches_llm_prompt", "callee": "clear", "is_member_call": true, "source_file": "tests/test_explain_engine.py", "source_location": "L479", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_explain_engine_testexplainenginemockllm_test_graph_evidence_reaches_llm_prompt", "callee": "ExplainEngine", "is_member_call": false, "source_file": "tests/test_explain_engine.py", "source_location": "L486", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_explain_engine_testexplainenginemockllm_test_graph_evidence_reaches_llm_prompt", "callee": "generate", "is_member_call": true, "source_file": "tests/test_explain_engine.py", "source_location": "L487", "receiver": "engine"}, {"caller_nid": "$graphify-root$_tests_test_explain_engine_testexplainenginegraphdefault_test_default_graph_disabled_without_env", "callee": "delenv", "is_member_call": true, "source_file": "tests/test_explain_engine.py", "source_location": "L498", "receiver": "monkeypatch"}, {"caller_nid": "$graphify-root$_tests_test_explain_engine_testexplainenginegraphdefault_test_default_graph_disabled_without_env", "callee": "ExplainEngine", "is_member_call": false, "source_file": "tests/test_explain_engine.py", "source_location": "L499", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_explain_engine_testbuildalternatives_test_no_hard_fails_returns_empty", "callee": "ExplainEngine", "is_member_call": false, "source_file": "tests/test_explain_engine.py", "source_location": "L509", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_explain_engine_testbuildalternatives_test_no_hard_fails_returns_empty", "callee": "build_alternatives", "is_member_call": true, "source_file": "tests/test_explain_engine.py", "source_location": "L510", "receiver": "engine"}, {"caller_nid": "$graphify-root$_tests_test_explain_engine_testbuildalternatives_test_disabled_graph_returns_empty", "callee": "ExplainEngine", "is_member_call": false, "source_file": "tests/test_explain_engine.py", "source_location": "L513", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_explain_engine_testbuildalternatives_test_disabled_graph_returns_empty", "callee": "build_alternatives", "is_member_call": true, "source_file": "tests/test_explain_engine.py", "source_location": "L516", "receiver": "engine"}, {"caller_nid": "$graphify-root$_tests_test_explain_engine_testbuildalternatives_test_hard_fail_without_poi_name_skipped", "callee": "ExplainEngine", "is_member_call": false, "source_file": "tests/test_explain_engine.py", "source_location": "L519", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_explain_engine_testbuildalternatives_test_hard_fail_without_poi_name_skipped", "callee": "build_alternatives", "is_member_call": true, "source_file": "tests/test_explain_engine.py", "source_location": "L522", "receiver": "engine"}, {"caller_nid": "$graphify-root$_tests_test_explain_engine_testbuildalternatives_test_match_returns_alternatives_keyed_by_poi_name", "callee": "ExplainEngine", "is_member_call": false, "source_file": "tests/test_explain_engine.py", "source_location": "L525", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_explain_engine_testbuildalternatives_test_match_returns_alternatives_keyed_by_poi_name", "callee": "build_alternatives", "is_member_call": true, "source_file": "tests/test_explain_engine.py", "source_location": "L528", "receiver": "engine"}, {"caller_nid": "$graphify-root$_tests_test_explain_engine_testbuildalternatives_test_no_nearby_omits_poi", "callee": "ExplainEngine", "is_member_call": false, "source_file": "tests/test_explain_engine.py", "source_location": "L533", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_explain_engine_testbuildalternatives_test_no_nearby_omits_poi", "callee": "build_alternatives", "is_member_call": true, "source_file": "tests/test_explain_engine.py", "source_location": "L538", "receiver": "engine"}, {"caller_nid": "$graphify-root$_tests_test_explain_engine_testbuildalternatives_test_no_search_match_omits_poi", "callee": "ExplainEngine", "is_member_call": false, "source_file": "tests/test_explain_engine.py", "source_location": "L543", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_explain_engine_testbuildalternatives_test_no_search_match_omits_poi", "callee": "build_alternatives", "is_member_call": true, "source_file": "tests/test_explain_engine.py", "source_location": "L546", "receiver": "engine"}, {"caller_nid": "$graphify-root$_tests_test_explain_engine_testbuildalternatives_test_duplicate_poi_name_only_looked_up_once", "callee": "ExplainEngine", "is_member_call": false, "source_file": "tests/test_explain_engine.py", "source_location": "L550", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_explain_engine_testbuildalternatives_test_duplicate_poi_name_only_looked_up_once", "callee": "build_alternatives", "is_member_call": true, "source_file": "tests/test_explain_engine.py", "source_location": "L555", "receiver": "engine"}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.31/c6a1439abb298710266bf3f026fda27743a6aa0606c227edf47b45d4b4dbbe5b.json b/graphify-out/cache/ast/v0.9.31/c6a1439abb298710266bf3f026fda27743a6aa0606c227edf47b45d4b4dbbe5b.json new file mode 100644 index 0000000..6078158 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.31/c6a1439abb298710266bf3f026fda27743a6aa0606c227edf47b45d4b4dbbe5b.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_src_data_restaurant_catalog_py", "label": "restaurant_catalog.py", "file_type": "code", "source_file": "src/data/restaurant_catalog.py", "source_location": "L1"}, {"id": "$graphify-root$_src_data_restaurant_catalog_normalize", "label": "_normalize()", "file_type": "code", "source_file": "src/data/restaurant_catalog.py", "source_location": "L20", "_callable": true}, {"id": "$graphify-root$_src_data_restaurant_catalog_restaurantcatalog", "label": "RestaurantCatalog", "file_type": "code", "source_file": "src/data/restaurant_catalog.py", "source_location": "L24", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_src_data_restaurant_catalog_restaurantcatalog_init", "label": ".__init__()", "file_type": "code", "source_file": "src/data/restaurant_catalog.py", "source_location": "L27", "_callable": true}, {"id": "$graphify-root$_src_data_restaurant_catalog_restaurantcatalog_from_csv", "label": ".from_csv()", "file_type": "code", "source_file": "src/data/restaurant_catalog.py", "source_location": "L31", "_callable": true}, {"id": "path", "label": "Path", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/src/data/restaurant_catalog.py"}, {"id": "$graphify-root$_src_data_restaurant_catalog_restaurantcatalog_from_default", "label": ".from_default()", "file_type": "code", "source_file": "src/data/restaurant_catalog.py", "source_location": "L50", "_callable": true}, {"id": "$graphify-root$_src_data_restaurant_catalog_restaurantcatalog_nearby", "label": ".nearby()", "file_type": "code", "source_file": "src/data/restaurant_catalog.py", "source_location": "L53", "_callable": true}, {"id": "alternativepoi", "label": "AlternativePOI", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/src/data/restaurant_catalog.py"}, {"id": "$graphify-root$_src_data_restaurant_catalog_rationale_1", "label": "\uc81c\uc8fc \uc74c\uc2dd\uc810 \uadfc\uc811 \uac80\uc0c9 \uce74\ud0c8\ub85c\uadf8 \u2014 data/jeju_places.csv \uae30\ubc18. RepairEngine\uc758 Outlier Deletion \uc81c\uc548\u2026", "file_type": "rationale", "source_file": "src/data/restaurant_catalog.py", "source_location": "L1"}, {"id": "$graphify-root$_src_data_restaurant_catalog_rationale_25", "label": "\uce74\ud14c\uace0\ub9ac=\uc74c\uc2dd\uc810(FD) \uc7a5\uc18c\uc758 \uc88c\ud45c \uadfc\uc811 \uac80\uc0c9.", "file_type": "rationale", "source_file": "src/data/restaurant_catalog.py", "source_location": "L25"}, {"id": "$graphify-root$_src_data_restaurant_catalog_rationale_61", "label": "\ubc18\uacbd \ub0b4 \uac00\uc7a5 \uac00\uae4c\uc6b4 \uc74c\uc2dd\uc810 \ubaa9\ub85d (\uac70\ub9ac\uc21c, exclude_name \uc790\uae30 \uc790\uc2e0 \uc81c\uc678).", "file_type": "rationale", "source_file": "src/data/restaurant_catalog.py", "source_location": "L61"}], "edges": [{"source": "$graphify-root$_src_data_restaurant_catalog_py", "target": "csv", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "src/data/restaurant_catalog.py", "source_location": "L11", "weight": 1.0}, {"source": "$graphify-root$_src_data_restaurant_catalog_py", "target": "pathlib", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "src/data/restaurant_catalog.py", "source_location": "L12", "weight": 1.0}, {"source": "$graphify-root$_src_data_restaurant_catalog_py", "target": "src_data_models", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "src/data/restaurant_catalog.py", "source_location": "L14", "weight": 1.0}, {"source": "$graphify-root$_src_data_restaurant_catalog_py", "target": "src_utils_geo", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "src/data/restaurant_catalog.py", "source_location": "L15", "weight": 1.0}, {"source": "$graphify-root$_src_data_restaurant_catalog_py", "target": "$graphify-root$_src_data_restaurant_catalog_normalize", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/data/restaurant_catalog.py", "source_location": "L20", "weight": 1.0}, {"source": "$graphify-root$_src_data_restaurant_catalog_py", "target": "$graphify-root$_src_data_restaurant_catalog_restaurantcatalog", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/data/restaurant_catalog.py", "source_location": "L24", "weight": 1.0}, {"source": "$graphify-root$_src_data_restaurant_catalog_restaurantcatalog", "target": "$graphify-root$_src_data_restaurant_catalog_restaurantcatalog_init", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/data/restaurant_catalog.py", "source_location": "L27", "weight": 1.0}, {"source": "$graphify-root$_src_data_restaurant_catalog_restaurantcatalog", "target": "$graphify-root$_src_data_restaurant_catalog_restaurantcatalog_from_csv", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/data/restaurant_catalog.py", "source_location": "L31", "weight": 1.0}, {"source": "$graphify-root$_src_data_restaurant_catalog_restaurantcatalog_from_csv", "target": "path", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "src/data/restaurant_catalog.py", "source_location": "L31", "weight": 1.0}, {"source": "$graphify-root$_src_data_restaurant_catalog_restaurantcatalog_from_csv", "target": "$graphify-root$_src_data_restaurant_catalog_restaurantcatalog", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "src/data/restaurant_catalog.py", "source_location": "L31", "weight": 1.0}, {"source": "$graphify-root$_src_data_restaurant_catalog_restaurantcatalog", "target": "$graphify-root$_src_data_restaurant_catalog_restaurantcatalog_from_default", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/data/restaurant_catalog.py", "source_location": "L50", "weight": 1.0}, {"source": "$graphify-root$_src_data_restaurant_catalog_restaurantcatalog_from_default", "target": "$graphify-root$_src_data_restaurant_catalog_restaurantcatalog", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "src/data/restaurant_catalog.py", "source_location": "L50", "weight": 1.0}, {"source": "$graphify-root$_src_data_restaurant_catalog_restaurantcatalog", "target": "$graphify-root$_src_data_restaurant_catalog_restaurantcatalog_nearby", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/data/restaurant_catalog.py", "source_location": "L53", "weight": 1.0}, {"source": "$graphify-root$_src_data_restaurant_catalog_restaurantcatalog_nearby", "target": "alternativepoi", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "src/data/restaurant_catalog.py", "source_location": "L53", "weight": 1.0}, {"source": "$graphify-root$_src_data_restaurant_catalog_restaurantcatalog_from_default", "target": "$graphify-root$_src_data_restaurant_catalog_restaurantcatalog_from_csv", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/data/restaurant_catalog.py", "source_location": "L51", "weight": 1.0}, {"source": "$graphify-root$_src_data_restaurant_catalog_restaurantcatalog_from_default", "target": "path", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/data/restaurant_catalog.py", "source_location": "L51", "weight": 1.0}, {"source": "$graphify-root$_src_data_restaurant_catalog_restaurantcatalog_nearby", "target": "$graphify-root$_src_data_restaurant_catalog_normalize", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/data/restaurant_catalog.py", "source_location": "L62", "weight": 1.0}, {"source": "$graphify-root$_src_data_restaurant_catalog_restaurantcatalog_nearby", "target": "alternativepoi", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/data/restaurant_catalog.py", "source_location": "L72", "weight": 1.0}, {"source": "$graphify-root$_src_data_restaurant_catalog_rationale_1", "target": "$graphify-root$_src_data_restaurant_catalog_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/data/restaurant_catalog.py", "source_location": "L1", "weight": 1.0}, {"source": "$graphify-root$_src_data_restaurant_catalog_rationale_25", "target": "$graphify-root$_src_data_restaurant_catalog_restaurantcatalog", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/data/restaurant_catalog.py", "source_location": "L25", "weight": 1.0}, {"source": "$graphify-root$_src_data_restaurant_catalog_rationale_61", "target": "$graphify-root$_src_data_restaurant_catalog_restaurantcatalog_nearby", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/data/restaurant_catalog.py", "source_location": "L61", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_src_data_restaurant_catalog_normalize", "callee": "lower", "is_member_call": true, "source_file": "src/data/restaurant_catalog.py", "source_location": "L21", "receiver": null}, {"caller_nid": "$graphify-root$_src_data_restaurant_catalog_normalize", "callee": "strip", "is_member_call": true, "source_file": "src/data/restaurant_catalog.py", "source_location": "L21", "receiver": "name"}, {"caller_nid": "$graphify-root$_src_data_restaurant_catalog_restaurantcatalog_from_csv", "callee": "exists", "is_member_call": true, "source_file": "src/data/restaurant_catalog.py", "source_location": "L33", "receiver": "path"}, {"caller_nid": "$graphify-root$_src_data_restaurant_catalog_restaurantcatalog_from_csv", "callee": "cls", "is_member_call": false, "source_file": "src/data/restaurant_catalog.py", "source_location": "L34", "receiver": null}, {"caller_nid": "$graphify-root$_src_data_restaurant_catalog_restaurantcatalog_from_csv", "callee": "DictReader", "is_member_call": true, "source_file": "src/data/restaurant_catalog.py", "source_location": "L36", "receiver": "csv"}, {"caller_nid": "$graphify-root$_src_data_restaurant_catalog_restaurantcatalog_from_csv", "callee": "f", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "src/data/restaurant_catalog.py", "source_location": "L36"}, {"caller_nid": "$graphify-root$_src_data_restaurant_catalog_restaurantcatalog_from_csv", "callee": "get", "is_member_call": true, "source_file": "src/data/restaurant_catalog.py", "source_location": "L37", "receiver": "row"}, {"caller_nid": "$graphify-root$_src_data_restaurant_catalog_restaurantcatalog_from_csv", "callee": "strip", "is_member_call": true, "source_file": "src/data/restaurant_catalog.py", "source_location": "L39", "receiver": null}, {"caller_nid": "$graphify-root$_src_data_restaurant_catalog_restaurantcatalog_from_csv", "callee": "get", "is_member_call": true, "source_file": "src/data/restaurant_catalog.py", "source_location": "L39", "receiver": "row"}, {"caller_nid": "$graphify-root$_src_data_restaurant_catalog_restaurantcatalog_from_csv", "callee": "ValueError", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "src/data/restaurant_catalog.py", "source_location": "L44"}, {"caller_nid": "$graphify-root$_src_data_restaurant_catalog_restaurantcatalog_from_csv", "callee": "TypeError", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "src/data/restaurant_catalog.py", "source_location": "L44"}, {"caller_nid": "$graphify-root$_src_data_restaurant_catalog_restaurantcatalog_from_csv", "callee": "KeyError", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "src/data/restaurant_catalog.py", "source_location": "L44"}, {"caller_nid": "$graphify-root$_src_data_restaurant_catalog_restaurantcatalog_from_csv", "callee": "append", "is_member_call": true, "source_file": "src/data/restaurant_catalog.py", "source_location": "L46", "receiver": "restaurants"}, {"caller_nid": "$graphify-root$_src_data_restaurant_catalog_restaurantcatalog_from_csv", "callee": "cls", "is_member_call": false, "source_file": "src/data/restaurant_catalog.py", "source_location": "L47", "receiver": null}, {"caller_nid": "$graphify-root$_src_data_restaurant_catalog_restaurantcatalog_nearby", "callee": "haversine_km", "is_member_call": false, "source_file": "src/data/restaurant_catalog.py", "source_location": "L67", "receiver": null}, {"caller_nid": "$graphify-root$_src_data_restaurant_catalog_restaurantcatalog_nearby", "callee": "append", "is_member_call": true, "source_file": "src/data/restaurant_catalog.py", "source_location": "L69", "receiver": "candidates"}, {"caller_nid": "$graphify-root$_src_data_restaurant_catalog_restaurantcatalog_nearby", "callee": "sort", "is_member_call": true, "source_file": "src/data/restaurant_catalog.py", "source_location": "L70", "receiver": "candidates"}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.31/c7b785c4eeb6cd80fb8ef2cdbcba02265a18cd641e3e91bb098108575e736aeb.json b/graphify-out/cache/ast/v0.9.31/c7b785c4eeb6cd80fb8ef2cdbcba02265a18cd641e3e91bb098108575e736aeb.json new file mode 100644 index 0000000..89810d1 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.31/c7b785c4eeb6cd80fb8ef2cdbcba02265a18cd641e3e91bb098108575e736aeb.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_tests_test_vrptw_engine_py", "label": "test_vrptw_engine.py", "file_type": "code", "source_file": "tests/test_vrptw_engine.py", "source_location": "L1"}, {"id": "$graphify-root$_tests_test_vrptw_engine_make_place", "label": "make_place()", "file_type": "code", "source_file": "tests/test_vrptw_engine.py", "source_location": "L24", "_callable": true}, {"id": "vrptwplace", "label": "VRPTWPlace", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/tests/test_vrptw_engine.py"}, {"id": "$graphify-root$_tests_test_vrptw_engine_testhaversinematrix", "label": "TestHaversineMatrix", "file_type": "code", "source_file": "tests/test_vrptw_engine.py", "source_location": "L54", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_tests_test_vrptw_engine_testhaversinematrix_test_same_point_is_zero", "label": ".test_same_point_is_zero()", "file_type": "code", "source_file": "tests/test_vrptw_engine.py", "source_location": "L55", "_callable": true}, {"id": "$graphify-root$_tests_test_vrptw_engine_testhaversinematrix_test_known_distance", "label": ".test_known_distance()", "file_type": "code", "source_file": "tests/test_vrptw_engine.py", "source_location": "L59", "_callable": true}, {"id": "$graphify-root$_tests_test_vrptw_engine_testhaversinematrix_test_symmetry", "label": ".test_symmetry()", "file_type": "code", "source_file": "tests/test_vrptw_engine.py", "source_location": "L66", "_callable": true}, {"id": "$graphify-root$_tests_test_vrptw_engine_testcachedroutematrix", "label": "TestCachedRouteMatrix", "file_type": "code", "source_file": "tests/test_vrptw_engine.py", "source_location": "L75", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_tests_test_vrptw_engine_testcachedroutematrix_test_cache_hit", "label": ".test_cache_hit()", "file_type": "code", "source_file": "tests/test_vrptw_engine.py", "source_location": "L76", "_callable": true}, {"id": "$graphify-root$_tests_test_vrptw_engine_testcachedroutematrix_test_cache_miss_falls_back_to_haversine", "label": ".test_cache_miss_falls_back_to_haversine()", "file_type": "code", "source_file": "tests/test_vrptw_engine.py", "source_location": "L81", "_callable": true}, {"id": "$graphify-root$_tests_test_vrptw_engine_testcachedroutematrix_test_reverse_key_fallback", "label": ".test_reverse_key_fallback()", "file_type": "code", "source_file": "tests/test_vrptw_engine.py", "source_location": "L87", "_callable": true}, {"id": "$graphify-root$_tests_test_vrptw_engine_testcachedroutematrix_test_load_from_dict", "label": ".test_load_from_dict()", "file_type": "code", "source_file": "tests/test_vrptw_engine.py", "source_location": "L93", "_callable": true}, {"id": "$graphify-root$_tests_test_vrptw_engine_testdepotconstraint", "label": "TestDepotConstraint", "file_type": "code", "source_file": "tests/test_vrptw_engine.py", "source_location": "L105", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_tests_test_vrptw_engine_testdepotconstraint_engine_with_haversine", "label": "._engine_with_haversine()", "file_type": "code", "source_file": "tests/test_vrptw_engine.py", "source_location": "L106", "_callable": true}, {"id": "vrptwengine", "label": "VRPTWEngine", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/tests/test_vrptw_engine.py"}, {"id": "$graphify-root$_tests_test_vrptw_engine_testdepotconstraint_test_2n3d_day1_must_end_at_depot", "label": ".test_2n3d_day1_must_end_at_depot()", "file_type": "code", "source_file": "tests/test_vrptw_engine.py", "source_location": "L109", "_callable": true}, {"id": "$graphify-root$_tests_test_vrptw_engine_testdepotconstraint_test_2n3d_middle_day_must_start_and_end_at_depot", "label": ".test_2n3d_middle_day_must_start_and_end_at_depot()", "file_type": "code", "source_file": "tests/test_vrptw_engine.py", "source_location": "L126", "_callable": true}, {"id": "$graphify-root$_tests_test_vrptw_engine_testdepotconstraint_test_1n2d_no_depot_constraint_applied", "label": ".test_1n2d_no_depot_constraint_applied()", "file_type": "code", "source_file": "tests/test_vrptw_engine.py", "source_location": "L139", "_callable": true}, {"id": "$graphify-root$_tests_test_vrptw_engine_testtimewindowfeasibility", "label": "TestTimeWindowFeasibility", "file_type": "code", "source_file": "tests/test_vrptw_engine.py", "source_location": "L161", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_tests_test_vrptw_engine_testtimewindowfeasibility_engine", "label": "._engine()", "file_type": "code", "source_file": "tests/test_vrptw_engine.py", "source_location": "L162", "_callable": true}, {"id": "$graphify-root$_tests_test_vrptw_engine_testtimewindowfeasibility_test_feasible_schedule_passes", "label": ".test_feasible_schedule_passes()", "file_type": "code", "source_file": "tests/test_vrptw_engine.py", "source_location": "L165", "_callable": true}, {"id": "$graphify-root$_tests_test_vrptw_engine_testtimewindowfeasibility_test_infeasible_close_time_triggers_critical", "label": ".test_infeasible_close_time_triggers_critical()", "file_type": "code", "source_file": "tests/test_vrptw_engine.py", "source_location": "L174", "_callable": true}, {"id": "$graphify-root$_tests_test_vrptw_engine_testtimewindowfeasibility_test_safety_margin_warning", "label": ".test_safety_margin_warning()", "file_type": "code", "source_file": "tests/test_vrptw_engine.py", "source_location": "L185", "_callable": true}, {"id": "$graphify-root$_tests_test_vrptw_engine_testefficiencygap", "label": "TestEfficiencyGap", "file_type": "code", "source_file": "tests/test_vrptw_engine.py", "source_location": "L203", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_tests_test_vrptw_engine_testefficiencygap_test_optimal_order_same_as_user_gives_zero_gap", "label": ".test_optimal_order_same_as_user_gives_zero_gap()", "file_type": "code", "source_file": "tests/test_vrptw_engine.py", "source_location": "L204", "_callable": true}, {"id": "$graphify-root$_tests_test_vrptw_engine_testefficiencygap_test_reversed_inefficient_route_shows_gap", "label": ".test_reversed_inefficient_route_shows_gap()", "file_type": "code", "source_file": "tests/test_vrptw_engine.py", "source_location": "L212", "_callable": true}, {"id": "$graphify-root$_tests_test_vrptw_engine_testfatiguescore", "label": "TestFatigueScore", "file_type": "code", "source_file": "tests/test_vrptw_engine.py", "source_location": "L225", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_tests_test_vrptw_engine_testfatiguescore_test_12h_schedule_no_fatigue_penalty", "label": ".test_12h_schedule_no_fatigue_penalty()", "file_type": "code", "source_file": "tests/test_vrptw_engine.py", "source_location": "L226", "_callable": true}, {"id": "$graphify-root$_tests_test_vrptw_engine_testfatiguescore_test_long_schedule_triggers_fatigue", "label": ".test_long_schedule_triggers_fatigue()", "file_type": "code", "source_file": "tests/test_vrptw_engine.py", "source_location": "L239", "_callable": true}, {"id": "$graphify-root$_tests_test_vrptw_engine_testortoolsdegradation", "label": "TestORToolsDegradation", "file_type": "code", "source_file": "tests/test_vrptw_engine.py", "source_location": "L256", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_tests_test_vrptw_engine_testortoolsdegradation_test_missing_ortools_still_returns_result", "label": ".test_missing_ortools_still_returns_result()", "file_type": "code", "source_file": "tests/test_vrptw_engine.py", "source_location": "L257", "_callable": true}, {"id": "$graphify-root$_tests_test_vrptw_engine_testriskscore", "label": "TestRiskScore", "file_type": "code", "source_file": "tests/test_vrptw_engine.py", "source_location": "L277", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_tests_test_vrptw_engine_testriskscore_test_risk_score_in_0_100", "label": ".test_risk_score_in_0_100()", "file_type": "code", "source_file": "tests/test_vrptw_engine.py", "source_location": "L278", "_callable": true}, {"id": "$graphify-root$_tests_test_vrptw_engine_testriskscore_test_pass_fail_threshold", "label": ".test_pass_fail_threshold()", "file_type": "code", "source_file": "tests/test_vrptw_engine.py", "source_location": "L284", "_callable": true}, {"id": "$graphify-root$_tests_test_vrptw_engine_test_constants_accessible", "label": "test_constants_accessible()", "file_type": "code", "source_file": "tests/test_vrptw_engine.py", "source_location": "L298", "_callable": true}, {"id": "$graphify-root$_tests_test_vrptw_engine_testmodelvalidation", "label": "TestModelValidation", "file_type": "code", "source_file": "tests/test_vrptw_engine.py", "source_location": "L308", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_tests_test_vrptw_engine_testmodelvalidation_test_invalid_lat_raises", "label": ".test_invalid_lat_raises()", "file_type": "code", "source_file": "tests/test_vrptw_engine.py", "source_location": "L309", "_callable": true}, {"id": "$graphify-root$_tests_test_vrptw_engine_testmodelvalidation_test_invalid_lng_raises", "label": ".test_invalid_lng_raises()", "file_type": "code", "source_file": "tests/test_vrptw_engine.py", "source_location": "L313", "_callable": true}, {"id": "$graphify-root$_tests_test_vrptw_engine_testmodelvalidation_test_invalid_time_format_raises", "label": ".test_invalid_time_format_raises()", "file_type": "code", "source_file": "tests/test_vrptw_engine.py", "source_location": "L317", "_callable": true}, {"id": "$graphify-root$_tests_test_vrptw_engine_testmodelvalidation_test_invalid_time_value_raises", "label": ".test_invalid_time_value_raises()", "file_type": "code", "source_file": "tests/test_vrptw_engine.py", "source_location": "L321", "_callable": true}, {"id": "$graphify-root$_tests_test_vrptw_engine_testmodelvalidation_test_negative_stay_raises", "label": ".test_negative_stay_raises()", "file_type": "code", "source_file": "tests/test_vrptw_engine.py", "source_location": "L325", "_callable": true}, {"id": "$graphify-root$_tests_test_vrptw_engine_testmodelvalidation_test_zero_stay_allowed_for_depot", "label": ".test_zero_stay_allowed_for_depot()", "file_type": "code", "source_file": "tests/test_vrptw_engine.py", "source_location": "L329", "_callable": true}, {"id": "$graphify-root$_tests_test_vrptw_engine_testmodelvalidation_test_empty_day_raises", "label": ".test_empty_day_raises()", "file_type": "code", "source_file": "tests/test_vrptw_engine.py", "source_location": "L334", "_callable": true}, {"id": "$graphify-root$_tests_test_vrptw_engine_testmodelvalidation_test_empty_days_raises", "label": ".test_empty_days_raises()", "file_type": "code", "source_file": "tests/test_vrptw_engine.py", "source_location": "L338", "_callable": true}, {"id": "$graphify-root$_tests_test_vrptw_engine_testmodelvalidation_test_open_minutes_property", "label": ".test_open_minutes_property()", "file_type": "code", "source_file": "tests/test_vrptw_engine.py", "source_location": "L342", "_callable": true}, {"id": "$graphify-root$_tests_test_vrptw_engine_testmodelvalidation_test_close_minutes_property", "label": ".test_close_minutes_property()", "file_type": "code", "source_file": "tests/test_vrptw_engine.py", "source_location": "L346", "_callable": true}, {"id": "$graphify-root$_tests_test_vrptw_engine_testefficiencygapthreshold", "label": "TestEfficiencyGapThreshold", "file_type": "code", "source_file": "tests/test_vrptw_engine.py", "source_location": "L355", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_tests_test_vrptw_engine_testefficiencygapthreshold_test_gap_over_threshold_adds_warning", "label": ".test_gap_over_threshold_adds_warning()", "file_type": "code", "source_file": "tests/test_vrptw_engine.py", "source_location": "L356", "_callable": true}, {"id": "$graphify-root$_tests_test_vrptw_engine_testmultidayresult", "label": "TestMultiDayResult", "file_type": "code", "source_file": "tests/test_vrptw_engine.py", "source_location": "L376", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_tests_test_vrptw_engine_testmultidayresult_test_multi_day_returns_per_day_comparison", "label": ".test_multi_day_returns_per_day_comparison()", "file_type": "code", "source_file": "tests/test_vrptw_engine.py", "source_location": "L377", "_callable": true}, {"id": "$graphify-root$_tests_test_vrptw_engine_testmultidayresult_test_multi_day_user_total_travel_is_sum", "label": ".test_multi_day_user_total_travel_is_sum()", "file_type": "code", "source_file": "tests/test_vrptw_engine.py", "source_location": "L391", "_callable": true}, {"id": "$graphify-root$_tests_test_vrptw_engine_testmultidayresult_test_single_place_day_no_travel", "label": ".test_single_place_day_no_travel()", "file_type": "code", "source_file": "tests/test_vrptw_engine.py", "source_location": "L404", "_callable": true}, {"id": "$graphify-root$_tests_test_vrptw_engine_test_summary_contains_score", "label": "test_summary_contains_score()", "file_type": "code", "source_file": "tests/test_vrptw_engine.py", "source_location": "L415", "_callable": true}, {"id": "$graphify-root$_tests_test_vrptw_engine_test_deep_dive_items_have_all_fields", "label": "test_deep_dive_items_have_all_fields()", "file_type": "code", "source_file": "tests/test_vrptw_engine.py", "source_location": "L427", "_callable": true}, {"id": "$graphify-root$_tests_test_vrptw_engine_test_cached_matrix_from_actual_file", "label": "test_cached_matrix_from_actual_file()", "file_type": "code", "source_file": "tests/test_vrptw_engine.py", "source_location": "L444", "_callable": true}, {"id": "$graphify-root$_tests_test_vrptw_engine_rationale_1", "label": "Tests for VRPTW validation engine (TDD).", "file_type": "rationale", "source_file": "tests/test_vrptw_engine.py", "source_location": "L1"}, {"id": "$graphify-root$_tests_test_vrptw_engine_rationale_88", "label": "If only the reverse direction is cached, use it.", "file_type": "rationale", "source_file": "tests/test_vrptw_engine.py", "source_location": "L88"}, {"id": "$graphify-root$_tests_test_vrptw_engine_rationale_110", "label": "2\ubc153\uc77c: day1 last place must be depot.", "file_type": "rationale", "source_file": "tests/test_vrptw_engine.py", "source_location": "L110"}, {"id": "$graphify-root$_tests_test_vrptw_engine_rationale_140", "label": "1\ubc152\uc77c: depot constraint NOT enforced.", "file_type": "rationale", "source_file": "tests/test_vrptw_engine.py", "source_location": "L140"}, {"id": "$graphify-root$_tests_test_vrptw_engine_rationale_175", "label": "A place that closes at 09:05 \u2014 impossible to visit after travel from A.", "file_type": "rationale", "source_file": "tests/test_vrptw_engine.py", "source_location": "L175"}, {"id": "$graphify-root$_tests_test_vrptw_engine_rationale_186", "label": "Arrival within 60 min of close triggers safety margin warning.", "file_type": "rationale", "source_file": "tests/test_vrptw_engine.py", "source_location": "L186"}, {"id": "$graphify-root$_tests_test_vrptw_engine_rationale_205", "label": "With 2 POIs the optimal is always the same, gap should be 0 or minimal.", "file_type": "rationale", "source_file": "tests/test_vrptw_engine.py", "source_location": "L205"}, {"id": "$graphify-root$_tests_test_vrptw_engine_rationale_213", "label": "A\u2192C\u2192B is longer than A\u2192B\u2192C when laid out linearly.", "file_type": "rationale", "source_file": "tests/test_vrptw_engine.py", "source_location": "L213"}, {"id": "$graphify-root$_tests_test_vrptw_engine_rationale_258", "label": "When ortools is not available, engine still returns a VRPTWResult.", "file_type": "rationale", "source_file": "tests/test_vrptw_engine.py", "source_location": "L258"}, {"id": "$graphify-root$_tests_test_vrptw_engine_rationale_357", "label": "If efficiency gap > 20%, a deep_dive WARNING should appear.", "file_type": "rationale", "source_file": "tests/test_vrptw_engine.py", "source_location": "L357"}, {"id": "$graphify-root$_tests_test_vrptw_engine_rationale_428", "label": "Every DeepDiveItem must have non-empty fact, rule, risk, suggestion.", "file_type": "rationale", "source_file": "tests/test_vrptw_engine.py", "source_location": "L428"}, {"id": "$graphify-root$_tests_test_vrptw_engine_rationale_445", "label": "Smoke test: load real cache_route.json and verify at least one hit.", "file_type": "rationale", "source_file": "tests/test_vrptw_engine.py", "source_location": "L445"}], "edges": [{"source": "$graphify-root$_tests_test_vrptw_engine_py", "target": "math", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_vrptw_engine.py", "source_location": "L4", "weight": 1.0}, {"source": "$graphify-root$_tests_test_vrptw_engine_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_vrptw_engine.py", "source_location": "L5", "weight": 1.0}, {"source": "$graphify-root$_tests_test_vrptw_engine_py", "target": "unittest_mock", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_vrptw_engine.py", "source_location": "L6", "weight": 1.0}, {"source": "$graphify-root$_tests_test_vrptw_engine_py", "target": "pytest", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_vrptw_engine.py", "source_location": "L8", "weight": 1.0}, {"source": "$graphify-root$_tests_test_vrptw_engine_py", "target": "src_data_models", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_vrptw_engine.py", "source_location": "L10", "weight": 1.0}, {"source": "$graphify-root$_tests_test_vrptw_engine_py", "target": "src_validation_vrptw_engine", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_vrptw_engine.py", "source_location": "L11", "weight": 1.0}, {"source": "$graphify-root$_tests_test_vrptw_engine_py", "target": "$graphify-root$_tests_test_vrptw_engine_make_place", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_vrptw_engine.py", "source_location": "L24", "weight": 1.0}, {"source": "$graphify-root$_tests_test_vrptw_engine_make_place", "target": "vrptwplace", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "tests/test_vrptw_engine.py", "source_location": "L24", "weight": 1.0}, {"source": "$graphify-root$_tests_test_vrptw_engine_py", "target": "$graphify-root$_tests_test_vrptw_engine_testhaversinematrix", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_vrptw_engine.py", "source_location": "L54", "weight": 1.0}, {"source": "$graphify-root$_tests_test_vrptw_engine_testhaversinematrix", "target": "$graphify-root$_tests_test_vrptw_engine_testhaversinematrix_test_same_point_is_zero", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_vrptw_engine.py", "source_location": "L55", "weight": 1.0}, {"source": "$graphify-root$_tests_test_vrptw_engine_testhaversinematrix", "target": "$graphify-root$_tests_test_vrptw_engine_testhaversinematrix_test_known_distance", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_vrptw_engine.py", "source_location": "L59", "weight": 1.0}, {"source": "$graphify-root$_tests_test_vrptw_engine_testhaversinematrix", "target": "$graphify-root$_tests_test_vrptw_engine_testhaversinematrix_test_symmetry", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_vrptw_engine.py", "source_location": "L66", "weight": 1.0}, {"source": "$graphify-root$_tests_test_vrptw_engine_py", "target": "$graphify-root$_tests_test_vrptw_engine_testcachedroutematrix", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_vrptw_engine.py", "source_location": "L75", "weight": 1.0}, {"source": "$graphify-root$_tests_test_vrptw_engine_testcachedroutematrix", "target": "$graphify-root$_tests_test_vrptw_engine_testcachedroutematrix_test_cache_hit", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_vrptw_engine.py", "source_location": "L76", "weight": 1.0}, {"source": "$graphify-root$_tests_test_vrptw_engine_testcachedroutematrix", "target": "$graphify-root$_tests_test_vrptw_engine_testcachedroutematrix_test_cache_miss_falls_back_to_haversine", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_vrptw_engine.py", "source_location": "L81", "weight": 1.0}, {"source": "$graphify-root$_tests_test_vrptw_engine_testcachedroutematrix", "target": "$graphify-root$_tests_test_vrptw_engine_testcachedroutematrix_test_reverse_key_fallback", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_vrptw_engine.py", "source_location": "L87", "weight": 1.0}, {"source": "$graphify-root$_tests_test_vrptw_engine_testcachedroutematrix", "target": "$graphify-root$_tests_test_vrptw_engine_testcachedroutematrix_test_load_from_dict", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_vrptw_engine.py", "source_location": "L93", "weight": 1.0}, {"source": "$graphify-root$_tests_test_vrptw_engine_py", "target": "$graphify-root$_tests_test_vrptw_engine_testdepotconstraint", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_vrptw_engine.py", "source_location": "L105", "weight": 1.0}, {"source": "$graphify-root$_tests_test_vrptw_engine_testdepotconstraint", "target": "$graphify-root$_tests_test_vrptw_engine_testdepotconstraint_engine_with_haversine", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_vrptw_engine.py", "source_location": "L106", "weight": 1.0}, {"source": "$graphify-root$_tests_test_vrptw_engine_testdepotconstraint_engine_with_haversine", "target": "vrptwengine", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "tests/test_vrptw_engine.py", "source_location": "L106", "weight": 1.0}, {"source": "$graphify-root$_tests_test_vrptw_engine_testdepotconstraint", "target": "$graphify-root$_tests_test_vrptw_engine_testdepotconstraint_test_2n3d_day1_must_end_at_depot", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_vrptw_engine.py", "source_location": "L109", "weight": 1.0}, {"source": "$graphify-root$_tests_test_vrptw_engine_testdepotconstraint", "target": "$graphify-root$_tests_test_vrptw_engine_testdepotconstraint_test_2n3d_middle_day_must_start_and_end_at_depot", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_vrptw_engine.py", "source_location": "L126", "weight": 1.0}, {"source": "$graphify-root$_tests_test_vrptw_engine_testdepotconstraint", "target": "$graphify-root$_tests_test_vrptw_engine_testdepotconstraint_test_1n2d_no_depot_constraint_applied", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_vrptw_engine.py", "source_location": "L139", "weight": 1.0}, {"source": "$graphify-root$_tests_test_vrptw_engine_py", "target": "$graphify-root$_tests_test_vrptw_engine_testtimewindowfeasibility", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_vrptw_engine.py", "source_location": "L161", "weight": 1.0}, {"source": "$graphify-root$_tests_test_vrptw_engine_testtimewindowfeasibility", "target": "$graphify-root$_tests_test_vrptw_engine_testtimewindowfeasibility_engine", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_vrptw_engine.py", "source_location": "L162", "weight": 1.0}, {"source": "$graphify-root$_tests_test_vrptw_engine_testtimewindowfeasibility_engine", "target": "vrptwengine", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "tests/test_vrptw_engine.py", "source_location": "L162", "weight": 1.0}, {"source": "$graphify-root$_tests_test_vrptw_engine_testtimewindowfeasibility", "target": "$graphify-root$_tests_test_vrptw_engine_testtimewindowfeasibility_test_feasible_schedule_passes", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_vrptw_engine.py", "source_location": "L165", "weight": 1.0}, {"source": "$graphify-root$_tests_test_vrptw_engine_testtimewindowfeasibility", "target": "$graphify-root$_tests_test_vrptw_engine_testtimewindowfeasibility_test_infeasible_close_time_triggers_critical", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_vrptw_engine.py", "source_location": "L174", "weight": 1.0}, {"source": "$graphify-root$_tests_test_vrptw_engine_testtimewindowfeasibility", "target": "$graphify-root$_tests_test_vrptw_engine_testtimewindowfeasibility_test_safety_margin_warning", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_vrptw_engine.py", "source_location": "L185", "weight": 1.0}, {"source": "$graphify-root$_tests_test_vrptw_engine_py", "target": "$graphify-root$_tests_test_vrptw_engine_testefficiencygap", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_vrptw_engine.py", "source_location": "L203", "weight": 1.0}, {"source": "$graphify-root$_tests_test_vrptw_engine_testefficiencygap", "target": "$graphify-root$_tests_test_vrptw_engine_testefficiencygap_test_optimal_order_same_as_user_gives_zero_gap", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_vrptw_engine.py", "source_location": "L204", "weight": 1.0}, {"source": "$graphify-root$_tests_test_vrptw_engine_testefficiencygap", "target": "$graphify-root$_tests_test_vrptw_engine_testefficiencygap_test_reversed_inefficient_route_shows_gap", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_vrptw_engine.py", "source_location": "L212", "weight": 1.0}, {"source": "$graphify-root$_tests_test_vrptw_engine_py", "target": "$graphify-root$_tests_test_vrptw_engine_testfatiguescore", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_vrptw_engine.py", "source_location": "L225", "weight": 1.0}, {"source": "$graphify-root$_tests_test_vrptw_engine_testfatiguescore", "target": "$graphify-root$_tests_test_vrptw_engine_testfatiguescore_test_12h_schedule_no_fatigue_penalty", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_vrptw_engine.py", "source_location": "L226", "weight": 1.0}, {"source": "$graphify-root$_tests_test_vrptw_engine_testfatiguescore", "target": "$graphify-root$_tests_test_vrptw_engine_testfatiguescore_test_long_schedule_triggers_fatigue", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_vrptw_engine.py", "source_location": "L239", "weight": 1.0}, {"source": "$graphify-root$_tests_test_vrptw_engine_py", "target": "$graphify-root$_tests_test_vrptw_engine_testortoolsdegradation", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_vrptw_engine.py", "source_location": "L256", "weight": 1.0}, {"source": "$graphify-root$_tests_test_vrptw_engine_testortoolsdegradation", "target": "$graphify-root$_tests_test_vrptw_engine_testortoolsdegradation_test_missing_ortools_still_returns_result", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_vrptw_engine.py", "source_location": "L257", "weight": 1.0}, {"source": "$graphify-root$_tests_test_vrptw_engine_py", "target": "$graphify-root$_tests_test_vrptw_engine_testriskscore", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_vrptw_engine.py", "source_location": "L277", "weight": 1.0}, {"source": "$graphify-root$_tests_test_vrptw_engine_testriskscore", "target": "$graphify-root$_tests_test_vrptw_engine_testriskscore_test_risk_score_in_0_100", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_vrptw_engine.py", "source_location": "L278", "weight": 1.0}, {"source": "$graphify-root$_tests_test_vrptw_engine_testriskscore", "target": "$graphify-root$_tests_test_vrptw_engine_testriskscore_test_pass_fail_threshold", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_vrptw_engine.py", "source_location": "L284", "weight": 1.0}, {"source": "$graphify-root$_tests_test_vrptw_engine_py", "target": "$graphify-root$_tests_test_vrptw_engine_test_constants_accessible", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_vrptw_engine.py", "source_location": "L298", "weight": 1.0}, {"source": "$graphify-root$_tests_test_vrptw_engine_py", "target": "$graphify-root$_tests_test_vrptw_engine_testmodelvalidation", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_vrptw_engine.py", "source_location": "L308", "weight": 1.0}, {"source": "$graphify-root$_tests_test_vrptw_engine_testmodelvalidation", "target": "$graphify-root$_tests_test_vrptw_engine_testmodelvalidation_test_invalid_lat_raises", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_vrptw_engine.py", "source_location": "L309", "weight": 1.0}, {"source": "$graphify-root$_tests_test_vrptw_engine_testmodelvalidation", "target": "$graphify-root$_tests_test_vrptw_engine_testmodelvalidation_test_invalid_lng_raises", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_vrptw_engine.py", "source_location": "L313", "weight": 1.0}, {"source": "$graphify-root$_tests_test_vrptw_engine_testmodelvalidation", "target": "$graphify-root$_tests_test_vrptw_engine_testmodelvalidation_test_invalid_time_format_raises", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_vrptw_engine.py", "source_location": "L317", "weight": 1.0}, {"source": "$graphify-root$_tests_test_vrptw_engine_testmodelvalidation", "target": "$graphify-root$_tests_test_vrptw_engine_testmodelvalidation_test_invalid_time_value_raises", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_vrptw_engine.py", "source_location": "L321", "weight": 1.0}, {"source": "$graphify-root$_tests_test_vrptw_engine_testmodelvalidation", "target": "$graphify-root$_tests_test_vrptw_engine_testmodelvalidation_test_negative_stay_raises", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_vrptw_engine.py", "source_location": "L325", "weight": 1.0}, {"source": "$graphify-root$_tests_test_vrptw_engine_testmodelvalidation", "target": "$graphify-root$_tests_test_vrptw_engine_testmodelvalidation_test_zero_stay_allowed_for_depot", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_vrptw_engine.py", "source_location": "L329", "weight": 1.0}, {"source": "$graphify-root$_tests_test_vrptw_engine_testmodelvalidation", "target": "$graphify-root$_tests_test_vrptw_engine_testmodelvalidation_test_empty_day_raises", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_vrptw_engine.py", "source_location": "L334", "weight": 1.0}, {"source": "$graphify-root$_tests_test_vrptw_engine_testmodelvalidation", "target": "$graphify-root$_tests_test_vrptw_engine_testmodelvalidation_test_empty_days_raises", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_vrptw_engine.py", "source_location": "L338", "weight": 1.0}, {"source": "$graphify-root$_tests_test_vrptw_engine_testmodelvalidation", "target": "$graphify-root$_tests_test_vrptw_engine_testmodelvalidation_test_open_minutes_property", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_vrptw_engine.py", "source_location": "L342", "weight": 1.0}, {"source": "$graphify-root$_tests_test_vrptw_engine_testmodelvalidation", "target": "$graphify-root$_tests_test_vrptw_engine_testmodelvalidation_test_close_minutes_property", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_vrptw_engine.py", "source_location": "L346", "weight": 1.0}, {"source": "$graphify-root$_tests_test_vrptw_engine_py", "target": "$graphify-root$_tests_test_vrptw_engine_testefficiencygapthreshold", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_vrptw_engine.py", "source_location": "L355", "weight": 1.0}, {"source": "$graphify-root$_tests_test_vrptw_engine_testefficiencygapthreshold", "target": "$graphify-root$_tests_test_vrptw_engine_testefficiencygapthreshold_test_gap_over_threshold_adds_warning", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_vrptw_engine.py", "source_location": "L356", "weight": 1.0}, {"source": "$graphify-root$_tests_test_vrptw_engine_py", "target": "$graphify-root$_tests_test_vrptw_engine_testmultidayresult", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_vrptw_engine.py", "source_location": "L376", "weight": 1.0}, {"source": "$graphify-root$_tests_test_vrptw_engine_testmultidayresult", "target": "$graphify-root$_tests_test_vrptw_engine_testmultidayresult_test_multi_day_returns_per_day_comparison", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_vrptw_engine.py", "source_location": "L377", "weight": 1.0}, {"source": "$graphify-root$_tests_test_vrptw_engine_testmultidayresult", "target": "$graphify-root$_tests_test_vrptw_engine_testmultidayresult_test_multi_day_user_total_travel_is_sum", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_vrptw_engine.py", "source_location": "L391", "weight": 1.0}, {"source": "$graphify-root$_tests_test_vrptw_engine_testmultidayresult", "target": "$graphify-root$_tests_test_vrptw_engine_testmultidayresult_test_single_place_day_no_travel", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_vrptw_engine.py", "source_location": "L404", "weight": 1.0}, {"source": "$graphify-root$_tests_test_vrptw_engine_py", "target": "$graphify-root$_tests_test_vrptw_engine_test_summary_contains_score", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_vrptw_engine.py", "source_location": "L415", "weight": 1.0}, {"source": "$graphify-root$_tests_test_vrptw_engine_py", "target": "$graphify-root$_tests_test_vrptw_engine_test_deep_dive_items_have_all_fields", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_vrptw_engine.py", "source_location": "L427", "weight": 1.0}, {"source": "$graphify-root$_tests_test_vrptw_engine_py", "target": "$graphify-root$_tests_test_vrptw_engine_test_cached_matrix_from_actual_file", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_vrptw_engine.py", "source_location": "L444", "weight": 1.0}, {"source": "$graphify-root$_tests_test_vrptw_engine_make_place", "target": "vrptwplace", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_vrptw_engine.py", "source_location": "L33", "weight": 1.0}, {"source": "$graphify-root$_tests_test_vrptw_engine_testcachedroutematrix_test_load_from_dict", "target": "$graphify-root$_tests_test_vrptw_engine_make_place", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_vrptw_engine.py", "source_location": "L96", "weight": 1.0}, {"source": "$graphify-root$_tests_test_vrptw_engine_testdepotconstraint_engine_with_haversine", "target": "vrptwengine", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_vrptw_engine.py", "source_location": "L107", "weight": 1.0}, {"source": "$graphify-root$_tests_test_vrptw_engine_testdepotconstraint_test_2n3d_day1_must_end_at_depot", "target": "$graphify-root$_tests_test_vrptw_engine_testdepotconstraint_engine_with_haversine", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_vrptw_engine.py", "source_location": "L118", "weight": 1.0}, {"source": "$graphify-root$_tests_test_vrptw_engine_testdepotconstraint_test_2n3d_middle_day_must_start_and_end_at_depot", "target": "$graphify-root$_tests_test_vrptw_engine_testdepotconstraint_engine_with_haversine", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_vrptw_engine.py", "source_location": "L134", "weight": 1.0}, {"source": "$graphify-root$_tests_test_vrptw_engine_testdepotconstraint_test_1n2d_no_depot_constraint_applied", "target": "$graphify-root$_tests_test_vrptw_engine_testdepotconstraint_engine_with_haversine", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_vrptw_engine.py", "source_location": "L147", "weight": 1.0}, {"source": "$graphify-root$_tests_test_vrptw_engine_testtimewindowfeasibility_engine", "target": "vrptwengine", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_vrptw_engine.py", "source_location": "L163", "weight": 1.0}, {"source": "$graphify-root$_tests_test_vrptw_engine_testtimewindowfeasibility_test_feasible_schedule_passes", "target": "$graphify-root$_tests_test_vrptw_engine_testtimewindowfeasibility_engine", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_vrptw_engine.py", "source_location": "L169", "weight": 1.0}, {"source": "$graphify-root$_tests_test_vrptw_engine_testtimewindowfeasibility_test_infeasible_close_time_triggers_critical", "target": "$graphify-root$_tests_test_vrptw_engine_make_place", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_vrptw_engine.py", "source_location": "L176", "weight": 1.0}, {"source": "$graphify-root$_tests_test_vrptw_engine_testtimewindowfeasibility_test_infeasible_close_time_triggers_critical", "target": "$graphify-root$_tests_test_vrptw_engine_testtimewindowfeasibility_engine", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_vrptw_engine.py", "source_location": "L180", "weight": 1.0}, {"source": "$graphify-root$_tests_test_vrptw_engine_testtimewindowfeasibility_test_safety_margin_warning", "target": "$graphify-root$_tests_test_vrptw_engine_make_place", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_vrptw_engine.py", "source_location": "L189", "weight": 1.0}, {"source": "$graphify-root$_tests_test_vrptw_engine_testtimewindowfeasibility_test_safety_margin_warning", "target": "$graphify-root$_tests_test_vrptw_engine_testtimewindowfeasibility_engine", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_vrptw_engine.py", "source_location": "L193", "weight": 1.0}, {"source": "$graphify-root$_tests_test_vrptw_engine_testefficiencygap_test_optimal_order_same_as_user_gives_zero_gap", "target": "vrptwengine", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_vrptw_engine.py", "source_location": "L207", "weight": 1.0}, {"source": "$graphify-root$_tests_test_vrptw_engine_testefficiencygap_test_reversed_inefficient_route_shows_gap", "target": "vrptwengine", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_vrptw_engine.py", "source_location": "L215", "weight": 1.0}, {"source": "$graphify-root$_tests_test_vrptw_engine_testfatiguescore_test_12h_schedule_no_fatigue_penalty", "target": "$graphify-root$_tests_test_vrptw_engine_make_place", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_vrptw_engine.py", "source_location": "L229", "weight": 1.0}, {"source": "$graphify-root$_tests_test_vrptw_engine_testfatiguescore_test_12h_schedule_no_fatigue_penalty", "target": "vrptwengine", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_vrptw_engine.py", "source_location": "L233", "weight": 1.0}, {"source": "$graphify-root$_tests_test_vrptw_engine_testfatiguescore_test_long_schedule_triggers_fatigue", "target": "$graphify-root$_tests_test_vrptw_engine_make_place", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_vrptw_engine.py", "source_location": "L242", "weight": 1.0}, {"source": "$graphify-root$_tests_test_vrptw_engine_testfatiguescore_test_long_schedule_triggers_fatigue", "target": "vrptwengine", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_vrptw_engine.py", "source_location": "L246", "weight": 1.0}, {"source": "$graphify-root$_tests_test_vrptw_engine_testortoolsdegradation_test_missing_ortools_still_returns_result", "target": "vrptwengine", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_vrptw_engine.py", "source_location": "L265", "weight": 1.0}, {"source": "$graphify-root$_tests_test_vrptw_engine_testriskscore_test_risk_score_in_0_100", "target": "vrptwengine", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_vrptw_engine.py", "source_location": "L280", "weight": 1.0}, {"source": "$graphify-root$_tests_test_vrptw_engine_testriskscore_test_pass_fail_threshold", "target": "vrptwengine", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_vrptw_engine.py", "source_location": "L286", "weight": 1.0}, {"source": "$graphify-root$_tests_test_vrptw_engine_testmodelvalidation_test_invalid_lat_raises", "target": "vrptwplace", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_vrptw_engine.py", "source_location": "L311", "weight": 1.0}, {"source": "$graphify-root$_tests_test_vrptw_engine_testmodelvalidation_test_invalid_lng_raises", "target": "vrptwplace", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_vrptw_engine.py", "source_location": "L315", "weight": 1.0}, {"source": "$graphify-root$_tests_test_vrptw_engine_testmodelvalidation_test_invalid_time_format_raises", "target": "vrptwplace", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_vrptw_engine.py", "source_location": "L319", "weight": 1.0}, {"source": "$graphify-root$_tests_test_vrptw_engine_testmodelvalidation_test_invalid_time_value_raises", "target": "vrptwplace", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_vrptw_engine.py", "source_location": "L323", "weight": 1.0}, {"source": "$graphify-root$_tests_test_vrptw_engine_testmodelvalidation_test_negative_stay_raises", "target": "vrptwplace", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_vrptw_engine.py", "source_location": "L327", "weight": 1.0}, {"source": "$graphify-root$_tests_test_vrptw_engine_testmodelvalidation_test_zero_stay_allowed_for_depot", "target": "vrptwplace", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_vrptw_engine.py", "source_location": "L330", "weight": 1.0}, {"source": "$graphify-root$_tests_test_vrptw_engine_testmodelvalidation_test_open_minutes_property", "target": "$graphify-root$_tests_test_vrptw_engine_make_place", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_vrptw_engine.py", "source_location": "L343", "weight": 1.0}, {"source": "$graphify-root$_tests_test_vrptw_engine_testmodelvalidation_test_close_minutes_property", "target": "$graphify-root$_tests_test_vrptw_engine_make_place", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_vrptw_engine.py", "source_location": "L347", "weight": 1.0}, {"source": "$graphify-root$_tests_test_vrptw_engine_testefficiencygapthreshold_test_gap_over_threshold_adds_warning", "target": "$graphify-root$_tests_test_vrptw_engine_make_place", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_vrptw_engine.py", "source_location": "L360", "weight": 1.0}, {"source": "$graphify-root$_tests_test_vrptw_engine_testefficiencygapthreshold_test_gap_over_threshold_adds_warning", "target": "vrptwengine", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_vrptw_engine.py", "source_location": "L364", "weight": 1.0}, {"source": "$graphify-root$_tests_test_vrptw_engine_testmultidayresult_test_multi_day_returns_per_day_comparison", "target": "vrptwengine", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_vrptw_engine.py", "source_location": "L384", "weight": 1.0}, {"source": "$graphify-root$_tests_test_vrptw_engine_testmultidayresult_test_multi_day_user_total_travel_is_sum", "target": "vrptwengine", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_vrptw_engine.py", "source_location": "L398", "weight": 1.0}, {"source": "$graphify-root$_tests_test_vrptw_engine_testmultidayresult_test_single_place_day_no_travel", "target": "vrptwengine", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_vrptw_engine.py", "source_location": "L406", "weight": 1.0}, {"source": "$graphify-root$_tests_test_vrptw_engine_test_summary_contains_score", "target": "vrptwengine", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_vrptw_engine.py", "source_location": "L417", "weight": 1.0}, {"source": "$graphify-root$_tests_test_vrptw_engine_test_deep_dive_items_have_all_fields", "target": "$graphify-root$_tests_test_vrptw_engine_make_place", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_vrptw_engine.py", "source_location": "L429", "weight": 1.0}, {"source": "$graphify-root$_tests_test_vrptw_engine_test_deep_dive_items_have_all_fields", "target": "vrptwengine", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_vrptw_engine.py", "source_location": "L431", "weight": 1.0}, {"source": "$graphify-root$_tests_test_vrptw_engine_test_cached_matrix_from_actual_file", "target": "$graphify-root$_tests_test_vrptw_engine_make_place", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_vrptw_engine.py", "source_location": "L454", "weight": 1.0}, {"source": "$graphify-root$_tests_test_vrptw_engine_rationale_1", "target": "$graphify-root$_tests_test_vrptw_engine_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_vrptw_engine.py", "source_location": "L1", "weight": 1.0}, {"source": "$graphify-root$_tests_test_vrptw_engine_rationale_88", "target": "$graphify-root$_tests_test_vrptw_engine_testcachedroutematrix_test_reverse_key_fallback", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_vrptw_engine.py", "source_location": "L88", "weight": 1.0}, {"source": "$graphify-root$_tests_test_vrptw_engine_rationale_110", "target": "$graphify-root$_tests_test_vrptw_engine_testdepotconstraint_test_2n3d_day1_must_end_at_depot", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_vrptw_engine.py", "source_location": "L110", "weight": 1.0}, {"source": "$graphify-root$_tests_test_vrptw_engine_rationale_140", "target": "$graphify-root$_tests_test_vrptw_engine_testdepotconstraint_test_1n2d_no_depot_constraint_applied", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_vrptw_engine.py", "source_location": "L140", "weight": 1.0}, {"source": "$graphify-root$_tests_test_vrptw_engine_rationale_175", "target": "$graphify-root$_tests_test_vrptw_engine_testtimewindowfeasibility_test_infeasible_close_time_triggers_critical", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_vrptw_engine.py", "source_location": "L175", "weight": 1.0}, {"source": "$graphify-root$_tests_test_vrptw_engine_rationale_186", "target": "$graphify-root$_tests_test_vrptw_engine_testtimewindowfeasibility_test_safety_margin_warning", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_vrptw_engine.py", "source_location": "L186", "weight": 1.0}, {"source": "$graphify-root$_tests_test_vrptw_engine_rationale_205", "target": "$graphify-root$_tests_test_vrptw_engine_testefficiencygap_test_optimal_order_same_as_user_gives_zero_gap", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_vrptw_engine.py", "source_location": "L205", "weight": 1.0}, {"source": "$graphify-root$_tests_test_vrptw_engine_rationale_213", "target": "$graphify-root$_tests_test_vrptw_engine_testefficiencygap_test_reversed_inefficient_route_shows_gap", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_vrptw_engine.py", "source_location": "L213", "weight": 1.0}, {"source": "$graphify-root$_tests_test_vrptw_engine_rationale_258", "target": "$graphify-root$_tests_test_vrptw_engine_testortoolsdegradation_test_missing_ortools_still_returns_result", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_vrptw_engine.py", "source_location": "L258", "weight": 1.0}, {"source": "$graphify-root$_tests_test_vrptw_engine_rationale_357", "target": "$graphify-root$_tests_test_vrptw_engine_testefficiencygapthreshold_test_gap_over_threshold_adds_warning", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_vrptw_engine.py", "source_location": "L357", "weight": 1.0}, {"source": "$graphify-root$_tests_test_vrptw_engine_rationale_428", "target": "$graphify-root$_tests_test_vrptw_engine_test_deep_dive_items_have_all_fields", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_vrptw_engine.py", "source_location": "L428", "weight": 1.0}, {"source": "$graphify-root$_tests_test_vrptw_engine_rationale_445", "target": "$graphify-root$_tests_test_vrptw_engine_test_cached_matrix_from_actual_file", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_vrptw_engine.py", "source_location": "L445", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testhaversinematrix_test_same_point_is_zero", "callee": "HaversineMatrix", "is_member_call": false, "source_file": "tests/test_vrptw_engine.py", "source_location": "L56", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testhaversinematrix_test_same_point_is_zero", "callee": "get_travel_time", "is_member_call": true, "source_file": "tests/test_vrptw_engine.py", "source_location": "L57", "receiver": "m"}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testhaversinematrix_test_same_point_is_zero", "callee": "DEPOT", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_vrptw_engine.py", "source_location": "L57"}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testhaversinematrix_test_same_point_is_zero", "callee": "DEPOT", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_vrptw_engine.py", "source_location": "L57"}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testhaversinematrix_test_known_distance", "callee": "HaversineMatrix", "is_member_call": false, "source_file": "tests/test_vrptw_engine.py", "source_location": "L62", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testhaversinematrix_test_known_distance", "callee": "get_travel_time", "is_member_call": true, "source_file": "tests/test_vrptw_engine.py", "source_location": "L63", "receiver": "m"}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testhaversinematrix_test_known_distance", "callee": "POI_A", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_vrptw_engine.py", "source_location": "L63"}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testhaversinematrix_test_known_distance", "callee": "POI_B", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_vrptw_engine.py", "source_location": "L63"}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testhaversinematrix_test_symmetry", "callee": "HaversineMatrix", "is_member_call": false, "source_file": "tests/test_vrptw_engine.py", "source_location": "L67", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testhaversinematrix_test_symmetry", "callee": "get_travel_time", "is_member_call": true, "source_file": "tests/test_vrptw_engine.py", "source_location": "L68", "receiver": "m"}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testhaversinematrix_test_symmetry", "callee": "POI_A", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_vrptw_engine.py", "source_location": "L68"}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testhaversinematrix_test_symmetry", "callee": "POI_B", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_vrptw_engine.py", "source_location": "L68"}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testhaversinematrix_test_symmetry", "callee": "get_travel_time", "is_member_call": true, "source_file": "tests/test_vrptw_engine.py", "source_location": "L68", "receiver": "m"}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testhaversinematrix_test_symmetry", "callee": "POI_B", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_vrptw_engine.py", "source_location": "L68"}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testhaversinematrix_test_symmetry", "callee": "POI_A", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_vrptw_engine.py", "source_location": "L68"}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testcachedroutematrix_test_cache_hit", "callee": "CachedRouteMatrix", "is_member_call": false, "source_file": "tests/test_vrptw_engine.py", "source_location": "L78", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testcachedroutematrix_test_cache_hit", "callee": "get_travel_time", "is_member_call": true, "source_file": "tests/test_vrptw_engine.py", "source_location": "L79", "receiver": "m"}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testcachedroutematrix_test_cache_hit", "callee": "POI_A", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_vrptw_engine.py", "source_location": "L79"}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testcachedroutematrix_test_cache_hit", "callee": "POI_B", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_vrptw_engine.py", "source_location": "L79"}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testcachedroutematrix_test_cache_miss_falls_back_to_haversine", "callee": "CachedRouteMatrix", "is_member_call": false, "source_file": "tests/test_vrptw_engine.py", "source_location": "L82", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testcachedroutematrix_test_cache_miss_falls_back_to_haversine", "callee": "get_travel_time", "is_member_call": true, "source_file": "tests/test_vrptw_engine.py", "source_location": "L83", "receiver": "m"}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testcachedroutematrix_test_cache_miss_falls_back_to_haversine", "callee": "POI_A", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_vrptw_engine.py", "source_location": "L83"}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testcachedroutematrix_test_cache_miss_falls_back_to_haversine", "callee": "POI_B", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_vrptw_engine.py", "source_location": "L83"}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testcachedroutematrix_test_cache_miss_falls_back_to_haversine", "callee": "get_travel_time", "is_member_call": true, "source_file": "tests/test_vrptw_engine.py", "source_location": "L84", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testcachedroutematrix_test_cache_miss_falls_back_to_haversine", "callee": "POI_A", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_vrptw_engine.py", "source_location": "L84"}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testcachedroutematrix_test_cache_miss_falls_back_to_haversine", "callee": "POI_B", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_vrptw_engine.py", "source_location": "L84"}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testcachedroutematrix_test_cache_miss_falls_back_to_haversine", "callee": "HaversineMatrix", "is_member_call": false, "source_file": "tests/test_vrptw_engine.py", "source_location": "L84", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testcachedroutematrix_test_reverse_key_fallback", "callee": "CachedRouteMatrix", "is_member_call": false, "source_file": "tests/test_vrptw_engine.py", "source_location": "L90", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testcachedroutematrix_test_reverse_key_fallback", "callee": "get_travel_time", "is_member_call": true, "source_file": "tests/test_vrptw_engine.py", "source_location": "L91", "receiver": "m"}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testcachedroutematrix_test_reverse_key_fallback", "callee": "POI_A", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_vrptw_engine.py", "source_location": "L91"}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testcachedroutematrix_test_reverse_key_fallback", "callee": "POI_B", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_vrptw_engine.py", "source_location": "L91"}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testcachedroutematrix_test_load_from_dict", "callee": "CachedRouteMatrix", "is_member_call": false, "source_file": "tests/test_vrptw_engine.py", "source_location": "L95", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testcachedroutematrix_test_load_from_dict", "callee": "get_travel_time", "is_member_call": true, "source_file": "tests/test_vrptw_engine.py", "source_location": "L98", "receiver": "m"}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testdepotconstraint_engine_with_haversine", "callee": "HaversineMatrix", "is_member_call": false, "source_file": "tests/test_vrptw_engine.py", "source_location": "L107", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testdepotconstraint_test_2n3d_day1_must_end_at_depot", "callee": "VRPTWRequest", "is_member_call": false, "source_file": "tests/test_vrptw_engine.py", "source_location": "L111", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testdepotconstraint_test_2n3d_day1_must_end_at_depot", "callee": "VRPTWDay", "is_member_call": false, "source_file": "tests/test_vrptw_engine.py", "source_location": "L113", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testdepotconstraint_test_2n3d_day1_must_end_at_depot", "callee": "DEPOT", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "tests/test_vrptw_engine.py", "source_location": "L113"}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testdepotconstraint_test_2n3d_day1_must_end_at_depot", "callee": "POI_A", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "tests/test_vrptw_engine.py", "source_location": "L113"}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testdepotconstraint_test_2n3d_day1_must_end_at_depot", "callee": "POI_B", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "tests/test_vrptw_engine.py", "source_location": "L113"}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testdepotconstraint_test_2n3d_day1_must_end_at_depot", "callee": "VRPTWDay", "is_member_call": false, "source_file": "tests/test_vrptw_engine.py", "source_location": "L114", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testdepotconstraint_test_2n3d_day1_must_end_at_depot", "callee": "DEPOT", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "tests/test_vrptw_engine.py", "source_location": "L114"}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testdepotconstraint_test_2n3d_day1_must_end_at_depot", "callee": "POI_C", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "tests/test_vrptw_engine.py", "source_location": "L114"}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testdepotconstraint_test_2n3d_day1_must_end_at_depot", "callee": "DEPOT", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "tests/test_vrptw_engine.py", "source_location": "L114"}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testdepotconstraint_test_2n3d_day1_must_end_at_depot", "callee": "VRPTWDay", "is_member_call": false, "source_file": "tests/test_vrptw_engine.py", "source_location": "L115", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testdepotconstraint_test_2n3d_day1_must_end_at_depot", "callee": "DEPOT", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "tests/test_vrptw_engine.py", "source_location": "L115"}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testdepotconstraint_test_2n3d_day1_must_end_at_depot", "callee": "POI_A", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "tests/test_vrptw_engine.py", "source_location": "L115"}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testdepotconstraint_test_2n3d_day1_must_end_at_depot", "callee": "validate", "is_member_call": true, "source_file": "tests/test_vrptw_engine.py", "source_location": "L119", "receiver": "engine"}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testdepotconstraint_test_2n3d_day1_must_end_at_depot", "callee": "lower", "is_member_call": true, "source_file": "tests/test_vrptw_engine.py", "source_location": "L121", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testdepotconstraint_test_2n3d_middle_day_must_start_and_end_at_depot", "callee": "VRPTWRequest", "is_member_call": false, "source_file": "tests/test_vrptw_engine.py", "source_location": "L127", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testdepotconstraint_test_2n3d_middle_day_must_start_and_end_at_depot", "callee": "VRPTWDay", "is_member_call": false, "source_file": "tests/test_vrptw_engine.py", "source_location": "L129", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testdepotconstraint_test_2n3d_middle_day_must_start_and_end_at_depot", "callee": "DEPOT", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "tests/test_vrptw_engine.py", "source_location": "L129"}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testdepotconstraint_test_2n3d_middle_day_must_start_and_end_at_depot", "callee": "POI_A", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "tests/test_vrptw_engine.py", "source_location": "L129"}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testdepotconstraint_test_2n3d_middle_day_must_start_and_end_at_depot", "callee": "DEPOT", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "tests/test_vrptw_engine.py", "source_location": "L129"}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testdepotconstraint_test_2n3d_middle_day_must_start_and_end_at_depot", "callee": "VRPTWDay", "is_member_call": false, "source_file": "tests/test_vrptw_engine.py", "source_location": "L130", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testdepotconstraint_test_2n3d_middle_day_must_start_and_end_at_depot", "callee": "POI_A", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "tests/test_vrptw_engine.py", "source_location": "L130"}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testdepotconstraint_test_2n3d_middle_day_must_start_and_end_at_depot", "callee": "POI_B", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "tests/test_vrptw_engine.py", "source_location": "L130"}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testdepotconstraint_test_2n3d_middle_day_must_start_and_end_at_depot", "callee": "POI_C", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "tests/test_vrptw_engine.py", "source_location": "L130"}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testdepotconstraint_test_2n3d_middle_day_must_start_and_end_at_depot", "callee": "VRPTWDay", "is_member_call": false, "source_file": "tests/test_vrptw_engine.py", "source_location": "L131", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testdepotconstraint_test_2n3d_middle_day_must_start_and_end_at_depot", "callee": "DEPOT", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "tests/test_vrptw_engine.py", "source_location": "L131"}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testdepotconstraint_test_2n3d_middle_day_must_start_and_end_at_depot", "callee": "POI_B", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "tests/test_vrptw_engine.py", "source_location": "L131"}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testdepotconstraint_test_2n3d_middle_day_must_start_and_end_at_depot", "callee": "validate", "is_member_call": true, "source_file": "tests/test_vrptw_engine.py", "source_location": "L135", "receiver": "engine"}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testdepotconstraint_test_2n3d_middle_day_must_start_and_end_at_depot", "callee": "lower", "is_member_call": true, "source_file": "tests/test_vrptw_engine.py", "source_location": "L136", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testdepotconstraint_test_1n2d_no_depot_constraint_applied", "callee": "VRPTWRequest", "is_member_call": false, "source_file": "tests/test_vrptw_engine.py", "source_location": "L141", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testdepotconstraint_test_1n2d_no_depot_constraint_applied", "callee": "VRPTWDay", "is_member_call": false, "source_file": "tests/test_vrptw_engine.py", "source_location": "L143", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testdepotconstraint_test_1n2d_no_depot_constraint_applied", "callee": "POI_A", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "tests/test_vrptw_engine.py", "source_location": "L143"}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testdepotconstraint_test_1n2d_no_depot_constraint_applied", "callee": "POI_B", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "tests/test_vrptw_engine.py", "source_location": "L143"}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testdepotconstraint_test_1n2d_no_depot_constraint_applied", "callee": "VRPTWDay", "is_member_call": false, "source_file": "tests/test_vrptw_engine.py", "source_location": "L144", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testdepotconstraint_test_1n2d_no_depot_constraint_applied", "callee": "POI_B", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "tests/test_vrptw_engine.py", "source_location": "L144"}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testdepotconstraint_test_1n2d_no_depot_constraint_applied", "callee": "POI_C", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "tests/test_vrptw_engine.py", "source_location": "L144"}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testdepotconstraint_test_1n2d_no_depot_constraint_applied", "callee": "validate", "is_member_call": true, "source_file": "tests/test_vrptw_engine.py", "source_location": "L148", "receiver": "engine"}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testdepotconstraint_test_1n2d_no_depot_constraint_applied", "callee": "lower", "is_member_call": true, "source_file": "tests/test_vrptw_engine.py", "source_location": "L151", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testdepotconstraint_test_1n2d_no_depot_constraint_applied", "callee": "lower", "is_member_call": true, "source_file": "tests/test_vrptw_engine.py", "source_location": "L151", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testtimewindowfeasibility_engine", "callee": "HaversineMatrix", "is_member_call": false, "source_file": "tests/test_vrptw_engine.py", "source_location": "L163", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testtimewindowfeasibility_test_feasible_schedule_passes", "callee": "VRPTWRequest", "is_member_call": false, "source_file": "tests/test_vrptw_engine.py", "source_location": "L166", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testtimewindowfeasibility_test_feasible_schedule_passes", "callee": "VRPTWDay", "is_member_call": false, "source_file": "tests/test_vrptw_engine.py", "source_location": "L167", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testtimewindowfeasibility_test_feasible_schedule_passes", "callee": "POI_A", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "tests/test_vrptw_engine.py", "source_location": "L167"}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testtimewindowfeasibility_test_feasible_schedule_passes", "callee": "POI_B", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "tests/test_vrptw_engine.py", "source_location": "L167"}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testtimewindowfeasibility_test_feasible_schedule_passes", "callee": "validate", "is_member_call": true, "source_file": "tests/test_vrptw_engine.py", "source_location": "L170", "receiver": "engine"}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testtimewindowfeasibility_test_feasible_schedule_passes", "callee": "lower", "is_member_call": true, "source_file": "tests/test_vrptw_engine.py", "source_location": "L171", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testtimewindowfeasibility_test_infeasible_close_time_triggers_critical", "callee": "VRPTWRequest", "is_member_call": false, "source_file": "tests/test_vrptw_engine.py", "source_location": "L177", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testtimewindowfeasibility_test_infeasible_close_time_triggers_critical", "callee": "VRPTWDay", "is_member_call": false, "source_file": "tests/test_vrptw_engine.py", "source_location": "L178", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testtimewindowfeasibility_test_infeasible_close_time_triggers_critical", "callee": "POI_A", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "tests/test_vrptw_engine.py", "source_location": "L178"}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testtimewindowfeasibility_test_infeasible_close_time_triggers_critical", "callee": "validate", "is_member_call": true, "source_file": "tests/test_vrptw_engine.py", "source_location": "L181", "receiver": "engine"}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testtimewindowfeasibility_test_safety_margin_warning", "callee": "VRPTWRequest", "is_member_call": false, "source_file": "tests/test_vrptw_engine.py", "source_location": "L190", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testtimewindowfeasibility_test_safety_margin_warning", "callee": "VRPTWDay", "is_member_call": false, "source_file": "tests/test_vrptw_engine.py", "source_location": "L191", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testtimewindowfeasibility_test_safety_margin_warning", "callee": "POI_A", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "tests/test_vrptw_engine.py", "source_location": "L191"}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testtimewindowfeasibility_test_safety_margin_warning", "callee": "validate", "is_member_call": true, "source_file": "tests/test_vrptw_engine.py", "source_location": "L194", "receiver": "engine"}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testtimewindowfeasibility_test_safety_margin_warning", "callee": "lower", "is_member_call": true, "source_file": "tests/test_vrptw_engine.py", "source_location": "L195", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testefficiencygap_test_optimal_order_same_as_user_gives_zero_gap", "callee": "VRPTWRequest", "is_member_call": false, "source_file": "tests/test_vrptw_engine.py", "source_location": "L206", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testefficiencygap_test_optimal_order_same_as_user_gives_zero_gap", "callee": "VRPTWDay", "is_member_call": false, "source_file": "tests/test_vrptw_engine.py", "source_location": "L206", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testefficiencygap_test_optimal_order_same_as_user_gives_zero_gap", "callee": "POI_A", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "tests/test_vrptw_engine.py", "source_location": "L206"}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testefficiencygap_test_optimal_order_same_as_user_gives_zero_gap", "callee": "POI_B", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "tests/test_vrptw_engine.py", "source_location": "L206"}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testefficiencygap_test_optimal_order_same_as_user_gives_zero_gap", "callee": "HaversineMatrix", "is_member_call": false, "source_file": "tests/test_vrptw_engine.py", "source_location": "L207", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testefficiencygap_test_optimal_order_same_as_user_gives_zero_gap", "callee": "validate", "is_member_call": true, "source_file": "tests/test_vrptw_engine.py", "source_location": "L208", "receiver": "engine"}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testefficiencygap_test_reversed_inefficient_route_shows_gap", "callee": "VRPTWRequest", "is_member_call": false, "source_file": "tests/test_vrptw_engine.py", "source_location": "L214", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testefficiencygap_test_reversed_inefficient_route_shows_gap", "callee": "VRPTWDay", "is_member_call": false, "source_file": "tests/test_vrptw_engine.py", "source_location": "L214", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testefficiencygap_test_reversed_inefficient_route_shows_gap", "callee": "POI_A", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "tests/test_vrptw_engine.py", "source_location": "L214"}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testefficiencygap_test_reversed_inefficient_route_shows_gap", "callee": "POI_C", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "tests/test_vrptw_engine.py", "source_location": "L214"}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testefficiencygap_test_reversed_inefficient_route_shows_gap", "callee": "POI_B", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "tests/test_vrptw_engine.py", "source_location": "L214"}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testefficiencygap_test_reversed_inefficient_route_shows_gap", "callee": "HaversineMatrix", "is_member_call": false, "source_file": "tests/test_vrptw_engine.py", "source_location": "L215", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testefficiencygap_test_reversed_inefficient_route_shows_gap", "callee": "validate", "is_member_call": true, "source_file": "tests/test_vrptw_engine.py", "source_location": "L216", "receiver": "engine"}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testfatiguescore_test_12h_schedule_no_fatigue_penalty", "callee": "VRPTWRequest", "is_member_call": false, "source_file": "tests/test_vrptw_engine.py", "source_location": "L232", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testfatiguescore_test_12h_schedule_no_fatigue_penalty", "callee": "VRPTWDay", "is_member_call": false, "source_file": "tests/test_vrptw_engine.py", "source_location": "L232", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testfatiguescore_test_12h_schedule_no_fatigue_penalty", "callee": "HaversineMatrix", "is_member_call": false, "source_file": "tests/test_vrptw_engine.py", "source_location": "L233", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testfatiguescore_test_12h_schedule_no_fatigue_penalty", "callee": "validate", "is_member_call": true, "source_file": "tests/test_vrptw_engine.py", "source_location": "L234", "receiver": "engine"}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testfatiguescore_test_12h_schedule_no_fatigue_penalty", "callee": "lower", "is_member_call": true, "source_file": "tests/test_vrptw_engine.py", "source_location": "L235", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testfatiguescore_test_long_schedule_triggers_fatigue", "callee": "VRPTWRequest", "is_member_call": false, "source_file": "tests/test_vrptw_engine.py", "source_location": "L245", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testfatiguescore_test_long_schedule_triggers_fatigue", "callee": "VRPTWDay", "is_member_call": false, "source_file": "tests/test_vrptw_engine.py", "source_location": "L245", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testfatiguescore_test_long_schedule_triggers_fatigue", "callee": "HaversineMatrix", "is_member_call": false, "source_file": "tests/test_vrptw_engine.py", "source_location": "L246", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testfatiguescore_test_long_schedule_triggers_fatigue", "callee": "validate", "is_member_call": true, "source_file": "tests/test_vrptw_engine.py", "source_location": "L247", "receiver": "engine"}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testfatiguescore_test_long_schedule_triggers_fatigue", "callee": "lower", "is_member_call": true, "source_file": "tests/test_vrptw_engine.py", "source_location": "L248", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testortoolsdegradation_test_missing_ortools_still_returns_result", "callee": "VRPTWRequest", "is_member_call": false, "source_file": "tests/test_vrptw_engine.py", "source_location": "L259", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testortoolsdegradation_test_missing_ortools_still_returns_result", "callee": "VRPTWDay", "is_member_call": false, "source_file": "tests/test_vrptw_engine.py", "source_location": "L259", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testortoolsdegradation_test_missing_ortools_still_returns_result", "callee": "POI_A", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "tests/test_vrptw_engine.py", "source_location": "L259"}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testortoolsdegradation_test_missing_ortools_still_returns_result", "callee": "POI_B", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "tests/test_vrptw_engine.py", "source_location": "L259"}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testortoolsdegradation_test_missing_ortools_still_returns_result", "callee": "HaversineMatrix", "is_member_call": false, "source_file": "tests/test_vrptw_engine.py", "source_location": "L265", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testortoolsdegradation_test_missing_ortools_still_returns_result", "callee": "validate", "is_member_call": true, "source_file": "tests/test_vrptw_engine.py", "source_location": "L266", "receiver": "engine"}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testortoolsdegradation_test_missing_ortools_still_returns_result", "callee": "VRPTWResult", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_vrptw_engine.py", "source_location": "L267"}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testriskscore_test_risk_score_in_0_100", "callee": "VRPTWRequest", "is_member_call": false, "source_file": "tests/test_vrptw_engine.py", "source_location": "L279", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testriskscore_test_risk_score_in_0_100", "callee": "VRPTWDay", "is_member_call": false, "source_file": "tests/test_vrptw_engine.py", "source_location": "L279", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testriskscore_test_risk_score_in_0_100", "callee": "POI_A", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "tests/test_vrptw_engine.py", "source_location": "L279"}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testriskscore_test_risk_score_in_0_100", "callee": "POI_B", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "tests/test_vrptw_engine.py", "source_location": "L279"}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testriskscore_test_risk_score_in_0_100", "callee": "HaversineMatrix", "is_member_call": false, "source_file": "tests/test_vrptw_engine.py", "source_location": "L280", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testriskscore_test_risk_score_in_0_100", "callee": "validate", "is_member_call": true, "source_file": "tests/test_vrptw_engine.py", "source_location": "L281", "receiver": "engine"}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testriskscore_test_pass_fail_threshold", "callee": "VRPTWRequest", "is_member_call": false, "source_file": "tests/test_vrptw_engine.py", "source_location": "L285", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testriskscore_test_pass_fail_threshold", "callee": "VRPTWDay", "is_member_call": false, "source_file": "tests/test_vrptw_engine.py", "source_location": "L285", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testriskscore_test_pass_fail_threshold", "callee": "POI_A", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "tests/test_vrptw_engine.py", "source_location": "L285"}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testriskscore_test_pass_fail_threshold", "callee": "POI_B", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "tests/test_vrptw_engine.py", "source_location": "L285"}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testriskscore_test_pass_fail_threshold", "callee": "HaversineMatrix", "is_member_call": false, "source_file": "tests/test_vrptw_engine.py", "source_location": "L286", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testriskscore_test_pass_fail_threshold", "callee": "validate", "is_member_call": true, "source_file": "tests/test_vrptw_engine.py", "source_location": "L287", "receiver": "engine"}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testmodelvalidation_test_invalid_lat_raises", "callee": "raises", "is_member_call": true, "source_file": "tests/test_vrptw_engine.py", "source_location": "L310", "receiver": "pytest"}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testmodelvalidation_test_invalid_lat_raises", "callee": "Exception", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_vrptw_engine.py", "source_location": "L310"}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testmodelvalidation_test_invalid_lng_raises", "callee": "raises", "is_member_call": true, "source_file": "tests/test_vrptw_engine.py", "source_location": "L314", "receiver": "pytest"}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testmodelvalidation_test_invalid_lng_raises", "callee": "Exception", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_vrptw_engine.py", "source_location": "L314"}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testmodelvalidation_test_invalid_time_format_raises", "callee": "raises", "is_member_call": true, "source_file": "tests/test_vrptw_engine.py", "source_location": "L318", "receiver": "pytest"}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testmodelvalidation_test_invalid_time_format_raises", "callee": "Exception", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_vrptw_engine.py", "source_location": "L318"}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testmodelvalidation_test_invalid_time_value_raises", "callee": "raises", "is_member_call": true, "source_file": "tests/test_vrptw_engine.py", "source_location": "L322", "receiver": "pytest"}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testmodelvalidation_test_invalid_time_value_raises", "callee": "Exception", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_vrptw_engine.py", "source_location": "L322"}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testmodelvalidation_test_negative_stay_raises", "callee": "raises", "is_member_call": true, "source_file": "tests/test_vrptw_engine.py", "source_location": "L326", "receiver": "pytest"}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testmodelvalidation_test_negative_stay_raises", "callee": "Exception", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_vrptw_engine.py", "source_location": "L326"}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testmodelvalidation_test_empty_day_raises", "callee": "raises", "is_member_call": true, "source_file": "tests/test_vrptw_engine.py", "source_location": "L335", "receiver": "pytest"}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testmodelvalidation_test_empty_day_raises", "callee": "Exception", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_vrptw_engine.py", "source_location": "L335"}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testmodelvalidation_test_empty_day_raises", "callee": "VRPTWDay", "is_member_call": false, "source_file": "tests/test_vrptw_engine.py", "source_location": "L336", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testmodelvalidation_test_empty_days_raises", "callee": "raises", "is_member_call": true, "source_file": "tests/test_vrptw_engine.py", "source_location": "L339", "receiver": "pytest"}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testmodelvalidation_test_empty_days_raises", "callee": "Exception", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_vrptw_engine.py", "source_location": "L339"}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testmodelvalidation_test_empty_days_raises", "callee": "VRPTWRequest", "is_member_call": false, "source_file": "tests/test_vrptw_engine.py", "source_location": "L340", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testefficiencygapthreshold_test_gap_over_threshold_adds_warning", "callee": "VRPTWRequest", "is_member_call": false, "source_file": "tests/test_vrptw_engine.py", "source_location": "L363", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testefficiencygapthreshold_test_gap_over_threshold_adds_warning", "callee": "VRPTWDay", "is_member_call": false, "source_file": "tests/test_vrptw_engine.py", "source_location": "L363", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testefficiencygapthreshold_test_gap_over_threshold_adds_warning", "callee": "HaversineMatrix", "is_member_call": false, "source_file": "tests/test_vrptw_engine.py", "source_location": "L364", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testefficiencygapthreshold_test_gap_over_threshold_adds_warning", "callee": "validate", "is_member_call": true, "source_file": "tests/test_vrptw_engine.py", "source_location": "L365", "receiver": "engine"}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testmultidayresult_test_multi_day_returns_per_day_comparison", "callee": "VRPTWRequest", "is_member_call": false, "source_file": "tests/test_vrptw_engine.py", "source_location": "L378", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testmultidayresult_test_multi_day_returns_per_day_comparison", "callee": "VRPTWDay", "is_member_call": false, "source_file": "tests/test_vrptw_engine.py", "source_location": "L380", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testmultidayresult_test_multi_day_returns_per_day_comparison", "callee": "POI_A", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "tests/test_vrptw_engine.py", "source_location": "L380"}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testmultidayresult_test_multi_day_returns_per_day_comparison", "callee": "POI_B", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "tests/test_vrptw_engine.py", "source_location": "L380"}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testmultidayresult_test_multi_day_returns_per_day_comparison", "callee": "VRPTWDay", "is_member_call": false, "source_file": "tests/test_vrptw_engine.py", "source_location": "L381", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testmultidayresult_test_multi_day_returns_per_day_comparison", "callee": "POI_B", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "tests/test_vrptw_engine.py", "source_location": "L381"}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testmultidayresult_test_multi_day_returns_per_day_comparison", "callee": "POI_C", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "tests/test_vrptw_engine.py", "source_location": "L381"}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testmultidayresult_test_multi_day_returns_per_day_comparison", "callee": "HaversineMatrix", "is_member_call": false, "source_file": "tests/test_vrptw_engine.py", "source_location": "L384", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testmultidayresult_test_multi_day_returns_per_day_comparison", "callee": "validate", "is_member_call": true, "source_file": "tests/test_vrptw_engine.py", "source_location": "L385", "receiver": "engine"}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testmultidayresult_test_multi_day_user_total_travel_is_sum", "callee": "VRPTWRequest", "is_member_call": false, "source_file": "tests/test_vrptw_engine.py", "source_location": "L392", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testmultidayresult_test_multi_day_user_total_travel_is_sum", "callee": "VRPTWDay", "is_member_call": false, "source_file": "tests/test_vrptw_engine.py", "source_location": "L394", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testmultidayresult_test_multi_day_user_total_travel_is_sum", "callee": "POI_A", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "tests/test_vrptw_engine.py", "source_location": "L394"}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testmultidayresult_test_multi_day_user_total_travel_is_sum", "callee": "POI_B", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "tests/test_vrptw_engine.py", "source_location": "L394"}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testmultidayresult_test_multi_day_user_total_travel_is_sum", "callee": "VRPTWDay", "is_member_call": false, "source_file": "tests/test_vrptw_engine.py", "source_location": "L395", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testmultidayresult_test_multi_day_user_total_travel_is_sum", "callee": "POI_B", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "tests/test_vrptw_engine.py", "source_location": "L395"}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testmultidayresult_test_multi_day_user_total_travel_is_sum", "callee": "POI_C", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "tests/test_vrptw_engine.py", "source_location": "L395"}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testmultidayresult_test_multi_day_user_total_travel_is_sum", "callee": "HaversineMatrix", "is_member_call": false, "source_file": "tests/test_vrptw_engine.py", "source_location": "L398", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testmultidayresult_test_multi_day_user_total_travel_is_sum", "callee": "validate", "is_member_call": true, "source_file": "tests/test_vrptw_engine.py", "source_location": "L399", "receiver": "engine"}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testmultidayresult_test_single_place_day_no_travel", "callee": "VRPTWRequest", "is_member_call": false, "source_file": "tests/test_vrptw_engine.py", "source_location": "L405", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testmultidayresult_test_single_place_day_no_travel", "callee": "VRPTWDay", "is_member_call": false, "source_file": "tests/test_vrptw_engine.py", "source_location": "L405", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testmultidayresult_test_single_place_day_no_travel", "callee": "POI_A", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "tests/test_vrptw_engine.py", "source_location": "L405"}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testmultidayresult_test_single_place_day_no_travel", "callee": "HaversineMatrix", "is_member_call": false, "source_file": "tests/test_vrptw_engine.py", "source_location": "L406", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_testmultidayresult_test_single_place_day_no_travel", "callee": "validate", "is_member_call": true, "source_file": "tests/test_vrptw_engine.py", "source_location": "L407", "receiver": "engine"}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_test_summary_contains_score", "callee": "VRPTWRequest", "is_member_call": false, "source_file": "tests/test_vrptw_engine.py", "source_location": "L416", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_test_summary_contains_score", "callee": "VRPTWDay", "is_member_call": false, "source_file": "tests/test_vrptw_engine.py", "source_location": "L416", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_test_summary_contains_score", "callee": "POI_A", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "tests/test_vrptw_engine.py", "source_location": "L416"}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_test_summary_contains_score", "callee": "POI_B", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "tests/test_vrptw_engine.py", "source_location": "L416"}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_test_summary_contains_score", "callee": "HaversineMatrix", "is_member_call": false, "source_file": "tests/test_vrptw_engine.py", "source_location": "L417", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_test_summary_contains_score", "callee": "validate", "is_member_call": true, "source_file": "tests/test_vrptw_engine.py", "source_location": "L418", "receiver": "engine"}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_test_deep_dive_items_have_all_fields", "callee": "VRPTWRequest", "is_member_call": false, "source_file": "tests/test_vrptw_engine.py", "source_location": "L430", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_test_deep_dive_items_have_all_fields", "callee": "VRPTWDay", "is_member_call": false, "source_file": "tests/test_vrptw_engine.py", "source_location": "L430", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_test_deep_dive_items_have_all_fields", "callee": "POI_A", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "tests/test_vrptw_engine.py", "source_location": "L430"}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_test_deep_dive_items_have_all_fields", "callee": "HaversineMatrix", "is_member_call": false, "source_file": "tests/test_vrptw_engine.py", "source_location": "L431", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_test_deep_dive_items_have_all_fields", "callee": "validate", "is_member_call": true, "source_file": "tests/test_vrptw_engine.py", "source_location": "L432", "receiver": "engine"}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_test_cached_matrix_from_actual_file", "callee": "join", "is_member_call": true, "source_file": "tests/test_vrptw_engine.py", "source_location": "L447", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_test_cached_matrix_from_actual_file", "callee": "dirname", "is_member_call": true, "source_file": "tests/test_vrptw_engine.py", "source_location": "L448", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_test_cached_matrix_from_actual_file", "callee": "__file__", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_vrptw_engine.py", "source_location": "L448"}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_test_cached_matrix_from_actual_file", "callee": "exists", "is_member_call": true, "source_file": "tests/test_vrptw_engine.py", "source_location": "L450", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_test_cached_matrix_from_actual_file", "callee": "skip", "is_member_call": true, "source_file": "tests/test_vrptw_engine.py", "source_location": "L451", "receiver": "pytest"}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_test_cached_matrix_from_actual_file", "callee": "from_file", "is_member_call": true, "source_file": "tests/test_vrptw_engine.py", "source_location": "L452", "receiver": "CachedRouteMatrix"}, {"caller_nid": "$graphify-root$_tests_test_vrptw_engine_test_cached_matrix_from_actual_file", "callee": "get_travel_time", "is_member_call": true, "source_file": "tests/test_vrptw_engine.py", "source_location": "L456", "receiver": "m"}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.31/c7d3ca447b831b996c8fb62a4a4ed76d2e6c33051a260b10ed80d19489db1435.json b/graphify-out/cache/ast/v0.9.31/c7d3ca447b831b996c8fb62a4a4ed76d2e6c33051a260b10ed80d19489db1435.json new file mode 100644 index 0000000..3c76a08 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.31/c7d3ca447b831b996c8fb62a4a4ed76d2e6c33051a260b10ed80d19489db1435.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_scripts_build_poi_dataset_py", "label": "build_poi_dataset.py", "file_type": "code", "source_file": "scripts/build_poi_dataset.py", "source_location": "L1"}, {"id": "$graphify-root$_scripts_build_poi_dataset_build_wellness", "label": "build_wellness()", "file_type": "code", "source_file": "scripts/build_poi_dataset.py", "source_location": "L34", "_callable": true}, {"id": "wellnessapiclient", "label": "WellnessAPIClient", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/scripts/build_poi_dataset.py"}, {"id": "$graphify-root$_scripts_build_poi_dataset_build_barrier_free", "label": "build_barrier_free()", "file_type": "code", "source_file": "scripts/build_poi_dataset.py", "source_location": "L49", "_callable": true}, {"id": "barrierfreeapiclient", "label": "BarrierFreeAPIClient", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/scripts/build_poi_dataset.py"}, {"id": "$graphify-root$_scripts_build_poi_dataset_main", "label": "main()", "file_type": "code", "source_file": "scripts/build_poi_dataset.py", "source_location": "L64", "_callable": true}, {"id": "$graphify-root$_scripts_build_poi_dataset_rationale_1", "label": "\uc6f0\ub2c8\uc2a4\u00b7\ubb34\uc7a5\uc560 \uc5ec\ud589\uc9c0 \ub370\uc774\ud130\uc14b \ube4c\ub354. \uacf5\uacf5\ub370\uc774\ud130\ud3ec\ud138 API\ub97c \ud638\ucd9c\ud558\uc5ec \uc804\uccb4 \ubaa9\ub85d\uc744 JSON\uc73c\ub85c \uc800\uc7a5. \uc800\uc7a5 \uacbd\ub85c:\u2026", "file_type": "rationale", "source_file": "scripts/build_poi_dataset.py", "source_location": "L1"}], "edges": [{"source": "$graphify-root$_scripts_build_poi_dataset_py", "target": "asyncio", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/build_poi_dataset.py", "source_location": "L17", "weight": 1.0}, {"source": "$graphify-root$_scripts_build_poi_dataset_py", "target": "json", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/build_poi_dataset.py", "source_location": "L18", "weight": 1.0}, {"source": "$graphify-root$_scripts_build_poi_dataset_py", "target": "sys", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/build_poi_dataset.py", "source_location": "L19", "weight": 1.0}, {"source": "$graphify-root$_scripts_build_poi_dataset_py", "target": "dataclasses", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/build_poi_dataset.py", "source_location": "L20", "weight": 1.0}, {"source": "$graphify-root$_scripts_build_poi_dataset_py", "target": "pathlib", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/build_poi_dataset.py", "source_location": "L21", "weight": 1.0}, {"source": "$graphify-root$_scripts_build_poi_dataset_py", "target": "src_data_barrier_free_api", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/build_poi_dataset.py", "source_location": "L25", "weight": 1.0}, {"source": "$graphify-root$_scripts_build_poi_dataset_py", "target": "src_data_models", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/build_poi_dataset.py", "source_location": "L26", "weight": 1.0}, {"source": "$graphify-root$_scripts_build_poi_dataset_py", "target": "src_data_wellness_api", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/build_poi_dataset.py", "source_location": "L27", "weight": 1.0}, {"source": "$graphify-root$_scripts_build_poi_dataset_py", "target": "$graphify-root$_scripts_build_poi_dataset_build_wellness", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/build_poi_dataset.py", "source_location": "L34", "weight": 1.0}, {"source": "$graphify-root$_scripts_build_poi_dataset_build_wellness", "target": "wellnessapiclient", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "scripts/build_poi_dataset.py", "source_location": "L34", "weight": 1.0}, {"source": "$graphify-root$_scripts_build_poi_dataset_py", "target": "$graphify-root$_scripts_build_poi_dataset_build_barrier_free", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/build_poi_dataset.py", "source_location": "L49", "weight": 1.0}, {"source": "$graphify-root$_scripts_build_poi_dataset_build_barrier_free", "target": "barrierfreeapiclient", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "scripts/build_poi_dataset.py", "source_location": "L49", "weight": 1.0}, {"source": "$graphify-root$_scripts_build_poi_dataset_py", "target": "$graphify-root$_scripts_build_poi_dataset_main", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/build_poi_dataset.py", "source_location": "L64", "weight": 1.0}, {"source": "$graphify-root$_scripts_build_poi_dataset_main", "target": "$graphify-root$_scripts_build_poi_dataset_build_wellness", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/build_poi_dataset.py", "source_location": "L81", "weight": 1.0}, {"source": "$graphify-root$_scripts_build_poi_dataset_main", "target": "$graphify-root$_scripts_build_poi_dataset_build_barrier_free", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/build_poi_dataset.py", "source_location": "L86", "weight": 1.0}, {"source": "$graphify-root$_scripts_build_poi_dataset_rationale_1", "target": "$graphify-root$_scripts_build_poi_dataset_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/build_poi_dataset.py", "source_location": "L1", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_scripts_build_poi_dataset_build_wellness", "callee": "fetch_all", "is_member_call": true, "source_file": "scripts/build_poi_dataset.py", "source_location": "L36", "receiver": "client"}, {"caller_nid": "$graphify-root$_scripts_build_poi_dataset_build_wellness", "callee": "asdict", "is_member_call": false, "source_file": "scripts/build_poi_dataset.py", "source_location": "L41", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_build_poi_dataset_build_wellness", "callee": "write_text", "is_member_call": true, "source_file": "scripts/build_poi_dataset.py", "source_location": "L42", "receiver": "WELLNESS_PATH"}, {"caller_nid": "$graphify-root$_scripts_build_poi_dataset_build_wellness", "callee": "dumps", "is_member_call": true, "source_file": "scripts/build_poi_dataset.py", "source_location": "L43", "receiver": "json"}, {"caller_nid": "$graphify-root$_scripts_build_poi_dataset_build_barrier_free", "callee": "fetch_all", "is_member_call": true, "source_file": "scripts/build_poi_dataset.py", "source_location": "L51", "receiver": "client"}, {"caller_nid": "$graphify-root$_scripts_build_poi_dataset_build_barrier_free", "callee": "asdict", "is_member_call": false, "source_file": "scripts/build_poi_dataset.py", "source_location": "L56", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_build_poi_dataset_build_barrier_free", "callee": "write_text", "is_member_call": true, "source_file": "scripts/build_poi_dataset.py", "source_location": "L57", "receiver": "BARRIER_FREE_PATH"}, {"caller_nid": "$graphify-root$_scripts_build_poi_dataset_build_barrier_free", "callee": "dumps", "is_member_call": true, "source_file": "scripts/build_poi_dataset.py", "source_location": "L58", "receiver": "json"}, {"caller_nid": "$graphify-root$_scripts_build_poi_dataset_main", "callee": "mkdir", "is_member_call": true, "source_file": "scripts/build_poi_dataset.py", "source_location": "L65", "receiver": "DATA_DIR"}, {"caller_nid": "$graphify-root$_scripts_build_poi_dataset_main", "callee": "Settings", "is_member_call": false, "source_file": "scripts/build_poi_dataset.py", "source_location": "L67", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_build_poi_dataset_main", "callee": "from_settings", "is_member_call": true, "source_file": "scripts/build_poi_dataset.py", "source_location": "L69", "receiver": "WellnessAPIClient"}, {"caller_nid": "$graphify-root$_scripts_build_poi_dataset_main", "callee": "from_settings", "is_member_call": true, "source_file": "scripts/build_poi_dataset.py", "source_location": "L70", "receiver": "BarrierFreeAPIClient"}, {"caller_nid": "$graphify-root$_scripts_build_poi_dataset_main", "callee": "exit", "is_member_call": true, "source_file": "scripts/build_poi_dataset.py", "source_location": "L77", "receiver": "sys"}, {"caller_nid": "$graphify-root$_scripts_build_poi_dataset_main", "callee": "append", "is_member_call": true, "source_file": "scripts/build_poi_dataset.py", "source_location": "L81", "receiver": "tasks"}, {"caller_nid": "$graphify-root$_scripts_build_poi_dataset_main", "callee": "append", "is_member_call": true, "source_file": "scripts/build_poi_dataset.py", "source_location": "L86", "receiver": "tasks"}, {"caller_nid": "$graphify-root$_scripts_build_poi_dataset_main", "callee": "gather", "is_member_call": true, "source_file": "scripts/build_poi_dataset.py", "source_location": "L90", "receiver": "asyncio"}, {"caller_nid": "$graphify-root$_scripts_build_poi_dataset_main", "callee": "Exception", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/build_poi_dataset.py", "source_location": "L92"}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.31/c9488ccdf6a6a86610a112cb0547d095e2605beae3c248776c39209c65b4f49b.json b/graphify-out/cache/ast/v0.9.31/c9488ccdf6a6a86610a112cb0547d095e2605beae3c248776c39209c65b4f49b.json new file mode 100644 index 0000000..684789a --- /dev/null +++ b/graphify-out/cache/ast/v0.9.31/c9488ccdf6a6a86610a112cb0547d095e2605beae3c248776c39209c65b4f49b.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_tests_test_cluster_dispersion_py", "label": "test_cluster_dispersion.py", "file_type": "code", "source_file": "tests/test_cluster_dispersion.py", "source_location": "L1"}, {"id": "$graphify-root$_tests_test_cluster_dispersion_make_place", "label": "_make_place()", "file_type": "code", "source_file": "tests/test_cluster_dispersion.py", "source_location": "L17", "_callable": true}, {"id": "$graphify-root$_tests_test_cluster_dispersion_test_compact_day_no_penalty", "label": "test_compact_day_no_penalty()", "file_type": "code", "source_file": "tests/test_cluster_dispersion.py", "source_location": "L24", "_callable": true}, {"id": "$graphify-root$_tests_test_cluster_dispersion_test_lightning_pattern_high_penalty", "label": "test_lightning_pattern_high_penalty()", "file_type": "code", "source_file": "tests/test_cluster_dispersion.py", "source_location": "L38", "_callable": true}, {"id": "$graphify-root$_tests_test_cluster_dispersion_test_per_day_independence", "label": "test_per_day_independence()", "file_type": "code", "source_file": "tests/test_cluster_dispersion.py", "source_location": "L53", "_callable": true}, {"id": "skipif", "label": "skipif", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/tests/test_cluster_dispersion.py"}, {"id": "$graphify-root$_tests_test_cluster_dispersion_test_geo_cluster_backtrack_gyeongju", "label": "test_geo_cluster_backtrack_gyeongju()", "file_type": "code", "source_file": "tests/test_cluster_dispersion.py", "source_location": "L69", "_callable": true}, {"id": "$graphify-root$_tests_test_cluster_dispersion_test_geo_cluster_no_false_positive_sequential", "label": "test_geo_cluster_no_false_positive_sequential()", "file_type": "code", "source_file": "tests/test_cluster_dispersion.py", "source_location": "L90", "_callable": true}, {"id": "$graphify-root$_tests_test_cluster_dispersion_test_geo_cluster_no_double_penalty_when_m3_fires", "label": "test_geo_cluster_no_double_penalty_when_m3_fires()", "file_type": "code", "source_file": "tests/test_cluster_dispersion.py", "source_location": "L103", "_callable": true}, {"id": "$graphify-root$_tests_test_cluster_dispersion_test_sigungu_switches_only", "label": "test_sigungu_switches_only()", "file_type": "code", "source_file": "tests/test_cluster_dispersion.py", "source_location": "L125", "_callable": true}, {"id": "$graphify-root$_tests_test_cluster_dispersion_rationale_1", "label": "Tests for src/scoring/cluster_dispersion.py \u2014 per-day \uac80\uc99d.", "file_type": "rationale", "source_file": "tests/test_cluster_dispersion.py", "source_location": "L1"}, {"id": "$graphify-root$_tests_test_cluster_dispersion_rationale_25", "label": "\uac19\uc740 \uc2dc\uad70\uad6c + \uac70\ub9ac < 30km \u2192 \ud328\ub110\ud2f0 0.", "file_type": "rationale", "source_file": "tests/test_cluster_dispersion.py", "source_location": "L25"}, {"id": "$graphify-root$_tests_test_cluster_dispersion_rationale_39", "label": "1\uc77c\ucc28\uc5d0 \uc11c\uc6b8\u2194\ubd80\uc0b0 \uc11e\uae30 \u2192 \uac70\ub9ac \uba54\ud2b8\ub9ad CRITICAL + \ucea1 \uc801\uc6a9.", "file_type": "rationale", "source_file": "tests/test_cluster_dispersion.py", "source_location": "L39"}, {"id": "$graphify-root$_tests_test_cluster_dispersion_rationale_54", "label": "Day1=\uc11c\uc6b8 / Day2=\ubd80\uc0b0 (\uac01 day \uc548\uc5d0\uc11c\ub294 \uc751\uc9d1) \u2192 \ud328\ub110\ud2f0 \uc5c6\uc74c.", "file_type": "rationale", "source_file": "tests/test_cluster_dispersion.py", "source_location": "L54"}, {"id": "$graphify-root$_tests_test_cluster_dispersion_rationale_70", "label": "M4: \uacbd\uc8fc \u2014 \ub3d9\uc77c \uc2dc\uad70\uad6c\uc9c0\ub9cc \uc9c0\ub9ac\uc801\uc73c\ub85c \ubd84\uc0b0 \uc655\ubcf5 \u2192 M3=0\uc778\ub370 M4\u22651.", "file_type": "rationale", "source_file": "tests/test_cluster_dispersion.py", "source_location": "L70"}, {"id": "$graphify-root$_tests_test_cluster_dispersion_rationale_91", "label": "M4 false positive: \uac15\ub0a8\u2192\ud64d\ub300 \uc21c\ubc29\ud5a5 \ubc29\ubb38\uc740 \ud328\ub110\ud2f0 \uc5c6\uc5b4\uc57c.", "file_type": "rationale", "source_file": "tests/test_cluster_dispersion.py", "source_location": "L91"}, {"id": "$graphify-root$_tests_test_cluster_dispersion_rationale_104", "label": "M3\uac00 \uc774\ubbf8 \ud0d0\uc9c0\ud55c \uc774\ubca4\ud2b8\uc5d0 M4\uac00 \uc911\ubcf5 \ud328\ub110\ud2f0\ub97c \ucd94\uac00\ud558\uc9c0 \uc54a\ub294\ub2e4. \uac15\ub0a8\uc5ed\u2194\uc5ed\uc0bc\uc5ed: ~0.9km (\uac19\uc740 geo cluster), \ud64d\ub300\uc785\uad6c:\u2026", "file_type": "rationale", "source_file": "tests/test_cluster_dispersion.py", "source_location": "L104"}, {"id": "$graphify-root$_tests_test_cluster_dispersion_rationale_126", "label": "\uac70\ub9ac\ub294 \uc548 \uba40\uc9c0\ub9cc \uc2dc\uad70\uad6c \uc804\ud658 4\ud68c+ \u2192 \uc2dc\uad70\uad6c \ud328\ub110\ud2f0\ub9cc \ubc1c\uc0dd.", "file_type": "rationale", "source_file": "tests/test_cluster_dispersion.py", "source_location": "L126"}], "edges": [{"source": "$graphify-root$_tests_test_cluster_dispersion_py", "target": "pytest", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_cluster_dispersion.py", "source_location": "L4", "weight": 1.0}, {"source": "$graphify-root$_tests_test_cluster_dispersion_py", "target": "src_data_models", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_cluster_dispersion.py", "source_location": "L6", "weight": 1.0}, {"source": "$graphify-root$_tests_test_cluster_dispersion_py", "target": "src_scoring_cluster_dispersion", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_cluster_dispersion.py", "source_location": "L7", "weight": 1.0}, {"source": "$graphify-root$_tests_test_cluster_dispersion_py", "target": "$graphify-root$_tests_test_cluster_dispersion_make_place", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_cluster_dispersion.py", "source_location": "L17", "weight": 1.0}, {"source": "$graphify-root$_tests_test_cluster_dispersion_py", "target": "$graphify-root$_tests_test_cluster_dispersion_test_compact_day_no_penalty", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_cluster_dispersion.py", "source_location": "L24", "weight": 1.0}, {"source": "$graphify-root$_tests_test_cluster_dispersion_py", "target": "$graphify-root$_tests_test_cluster_dispersion_test_lightning_pattern_high_penalty", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_cluster_dispersion.py", "source_location": "L38", "weight": 1.0}, {"source": "$graphify-root$_tests_test_cluster_dispersion_py", "target": "$graphify-root$_tests_test_cluster_dispersion_test_per_day_independence", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_cluster_dispersion.py", "source_location": "L53", "weight": 1.0}, {"source": "$graphify-root$_tests_test_cluster_dispersion_test_geo_cluster_backtrack_gyeongju", "target": "skipif", "relation": "references", "confidence": "EXTRACTED", "source_file": "tests/test_cluster_dispersion.py", "source_location": "L68", "weight": 1.0, "context": "decorator"}, {"source": "$graphify-root$_tests_test_cluster_dispersion_py", "target": "$graphify-root$_tests_test_cluster_dispersion_test_geo_cluster_backtrack_gyeongju", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_cluster_dispersion.py", "source_location": "L69", "weight": 1.0}, {"source": "$graphify-root$_tests_test_cluster_dispersion_test_geo_cluster_no_false_positive_sequential", "target": "skipif", "relation": "references", "confidence": "EXTRACTED", "source_file": "tests/test_cluster_dispersion.py", "source_location": "L89", "weight": 1.0, "context": "decorator"}, {"source": "$graphify-root$_tests_test_cluster_dispersion_py", "target": "$graphify-root$_tests_test_cluster_dispersion_test_geo_cluster_no_false_positive_sequential", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_cluster_dispersion.py", "source_location": "L90", "weight": 1.0}, {"source": "$graphify-root$_tests_test_cluster_dispersion_test_geo_cluster_no_double_penalty_when_m3_fires", "target": "skipif", "relation": "references", "confidence": "EXTRACTED", "source_file": "tests/test_cluster_dispersion.py", "source_location": "L102", "weight": 1.0, "context": "decorator"}, {"source": "$graphify-root$_tests_test_cluster_dispersion_py", "target": "$graphify-root$_tests_test_cluster_dispersion_test_geo_cluster_no_double_penalty_when_m3_fires", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_cluster_dispersion.py", "source_location": "L103", "weight": 1.0}, {"source": "$graphify-root$_tests_test_cluster_dispersion_py", "target": "$graphify-root$_tests_test_cluster_dispersion_test_sigungu_switches_only", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_cluster_dispersion.py", "source_location": "L125", "weight": 1.0}, {"source": "$graphify-root$_tests_test_cluster_dispersion_test_compact_day_no_penalty", "target": "$graphify-root$_tests_test_cluster_dispersion_make_place", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_cluster_dispersion.py", "source_location": "L27", "weight": 1.0}, {"source": "$graphify-root$_tests_test_cluster_dispersion_test_lightning_pattern_high_penalty", "target": "$graphify-root$_tests_test_cluster_dispersion_make_place", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_cluster_dispersion.py", "source_location": "L41", "weight": 1.0}, {"source": "$graphify-root$_tests_test_cluster_dispersion_test_per_day_independence", "target": "$graphify-root$_tests_test_cluster_dispersion_make_place", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_cluster_dispersion.py", "source_location": "L56", "weight": 1.0}, {"source": "$graphify-root$_tests_test_cluster_dispersion_test_geo_cluster_backtrack_gyeongju", "target": "$graphify-root$_tests_test_cluster_dispersion_make_place", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_cluster_dispersion.py", "source_location": "L72", "weight": 1.0}, {"source": "$graphify-root$_tests_test_cluster_dispersion_test_geo_cluster_no_false_positive_sequential", "target": "$graphify-root$_tests_test_cluster_dispersion_make_place", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_cluster_dispersion.py", "source_location": "L93", "weight": 1.0}, {"source": "$graphify-root$_tests_test_cluster_dispersion_test_geo_cluster_no_double_penalty_when_m3_fires", "target": "$graphify-root$_tests_test_cluster_dispersion_make_place", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_cluster_dispersion.py", "source_location": "L111", "weight": 1.0}, {"source": "$graphify-root$_tests_test_cluster_dispersion_test_sigungu_switches_only", "target": "$graphify-root$_tests_test_cluster_dispersion_make_place", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_cluster_dispersion.py", "source_location": "L128", "weight": 1.0}, {"source": "$graphify-root$_tests_test_cluster_dispersion_rationale_1", "target": "$graphify-root$_tests_test_cluster_dispersion_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_cluster_dispersion.py", "source_location": "L1", "weight": 1.0}, {"source": "$graphify-root$_tests_test_cluster_dispersion_rationale_25", "target": "$graphify-root$_tests_test_cluster_dispersion_test_compact_day_no_penalty", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_cluster_dispersion.py", "source_location": "L25", "weight": 1.0}, {"source": "$graphify-root$_tests_test_cluster_dispersion_rationale_39", "target": "$graphify-root$_tests_test_cluster_dispersion_test_lightning_pattern_high_penalty", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_cluster_dispersion.py", "source_location": "L39", "weight": 1.0}, {"source": "$graphify-root$_tests_test_cluster_dispersion_rationale_54", "target": "$graphify-root$_tests_test_cluster_dispersion_test_per_day_independence", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_cluster_dispersion.py", "source_location": "L54", "weight": 1.0}, {"source": "$graphify-root$_tests_test_cluster_dispersion_rationale_70", "target": "$graphify-root$_tests_test_cluster_dispersion_test_geo_cluster_backtrack_gyeongju", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_cluster_dispersion.py", "source_location": "L70", "weight": 1.0}, {"source": "$graphify-root$_tests_test_cluster_dispersion_rationale_91", "target": "$graphify-root$_tests_test_cluster_dispersion_test_geo_cluster_no_false_positive_sequential", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_cluster_dispersion.py", "source_location": "L91", "weight": 1.0}, {"source": "$graphify-root$_tests_test_cluster_dispersion_rationale_104", "target": "$graphify-root$_tests_test_cluster_dispersion_test_geo_cluster_no_double_penalty_when_m3_fires", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_cluster_dispersion.py", "source_location": "L104", "weight": 1.0}, {"source": "$graphify-root$_tests_test_cluster_dispersion_rationale_126", "target": "$graphify-root$_tests_test_cluster_dispersion_test_sigungu_switches_only", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_cluster_dispersion.py", "source_location": "L126", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_tests_test_cluster_dispersion_make_place", "callee": "VRPTWPlace", "is_member_call": false, "source_file": "tests/test_cluster_dispersion.py", "source_location": "L18", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_cluster_dispersion_test_compact_day_no_penalty", "callee": "VRPTWDay", "is_member_call": false, "source_file": "tests/test_cluster_dispersion.py", "source_location": "L26", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_cluster_dispersion_test_compact_day_no_penalty", "callee": "evaluate_cluster_dispersion", "is_member_call": false, "source_file": "tests/test_cluster_dispersion.py", "source_location": "L32", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_cluster_dispersion_test_lightning_pattern_high_penalty", "callee": "VRPTWDay", "is_member_call": false, "source_file": "tests/test_cluster_dispersion.py", "source_location": "L40", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_cluster_dispersion_test_lightning_pattern_high_penalty", "callee": "evaluate_cluster_dispersion", "is_member_call": false, "source_file": "tests/test_cluster_dispersion.py", "source_location": "L46", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_cluster_dispersion_test_per_day_independence", "callee": "VRPTWDay", "is_member_call": false, "source_file": "tests/test_cluster_dispersion.py", "source_location": "L55", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_cluster_dispersion_test_per_day_independence", "callee": "VRPTWDay", "is_member_call": false, "source_file": "tests/test_cluster_dispersion.py", "source_location": "L59", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_cluster_dispersion_test_per_day_independence", "callee": "evaluate_cluster_dispersion", "is_member_call": false, "source_file": "tests/test_cluster_dispersion.py", "source_location": "L64", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_cluster_dispersion_test_geo_cluster_backtrack_gyeongju", "callee": "VRPTWDay", "is_member_call": false, "source_file": "tests/test_cluster_dispersion.py", "source_location": "L71", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_cluster_dispersion_test_geo_cluster_backtrack_gyeongju", "callee": "evaluate_cluster_dispersion", "is_member_call": false, "source_file": "tests/test_cluster_dispersion.py", "source_location": "L79", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_cluster_dispersion_test_geo_cluster_no_false_positive_sequential", "callee": "VRPTWDay", "is_member_call": false, "source_file": "tests/test_cluster_dispersion.py", "source_location": "L92", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_cluster_dispersion_test_geo_cluster_no_false_positive_sequential", "callee": "count_geo_cluster_backtracks", "is_member_call": false, "source_file": "tests/test_cluster_dispersion.py", "source_location": "L98", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_cluster_dispersion_test_geo_cluster_no_double_penalty_when_m3_fires", "callee": "VRPTWDay", "is_member_call": false, "source_file": "tests/test_cluster_dispersion.py", "source_location": "L110", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_cluster_dispersion_test_geo_cluster_no_double_penalty_when_m3_fires", "callee": "evaluate_cluster_dispersion", "is_member_call": false, "source_file": "tests/test_cluster_dispersion.py", "source_location": "L116", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_cluster_dispersion_test_sigungu_switches_only", "callee": "VRPTWDay", "is_member_call": false, "source_file": "tests/test_cluster_dispersion.py", "source_location": "L127", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_cluster_dispersion_test_sigungu_switches_only", "callee": "evaluate_cluster_dispersion", "is_member_call": false, "source_file": "tests/test_cluster_dispersion.py", "source_location": "L135", "receiver": null}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.31/c99aa95f1b05dac935f12799c24b8d471a5fb159f68eb75ed0aad642e997a0a2.json b/graphify-out/cache/ast/v0.9.31/c99aa95f1b05dac935f12799c24b8d471a5fb159f68eb75ed0aad642e997a0a2.json new file mode 100644 index 0000000..bf213f2 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.31/c99aa95f1b05dac935f12799c24b8d471a5fb159f68eb75ed0aad642e997a0a2.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_tests_test_plan_extractor_py", "label": "test_plan_extractor.py", "file_type": "code", "source_file": "tests/test_plan_extractor.py", "source_location": "L1"}, {"id": "$graphify-root$_tests_test_plan_extractor_client_returning", "label": "_client_returning()", "file_type": "code", "source_file": "tests/test_plan_extractor.py", "source_location": "L11", "_callable": true}, {"id": "$graphify-root$_tests_test_plan_extractor_test_extract_from_text_parses_llm_response", "label": "test_extract_from_text_parses_llm_response()", "file_type": "code", "source_file": "tests/test_plan_extractor.py", "source_location": "L19", "_callable": true}, {"id": "$graphify-root$_tests_test_plan_extractor_test_extract_from_text_strips_code_fence", "label": "test_extract_from_text_strips_code_fence()", "file_type": "code", "source_file": "tests/test_plan_extractor.py", "source_location": "L32", "_callable": true}, {"id": "$graphify-root$_tests_test_plan_extractor_test_extract_from_text_empty_raises", "label": "test_extract_from_text_empty_raises()", "file_type": "code", "source_file": "tests/test_plan_extractor.py", "source_location": "L41", "_callable": true}, {"id": "$graphify-root$_tests_test_plan_extractor_test_extract_from_text_without_client_falls_back_to_heuristic", "label": "test_extract_from_text_without_client_falls_back_to_heuristic()", "file_type": "code", "source_file": "tests/test_plan_extractor.py", "source_location": "L47", "_callable": true}, {"id": "$graphify-root$_tests_test_plan_extractor_test_extract_from_document_without_client_raises", "label": "test_extract_from_document_without_client_raises()", "file_type": "code", "source_file": "tests/test_plan_extractor.py", "source_location": "L58", "_callable": true}, {"id": "$graphify-root$_tests_test_plan_extractor_test_extract_from_document_empty_bytes_raises", "label": "test_extract_from_document_empty_bytes_raises()", "file_type": "code", "source_file": "tests/test_plan_extractor.py", "source_location": "L64", "_callable": true}, {"id": "$graphify-root$_tests_test_plan_extractor_test_extract_from_document_sends_document_block_for_pdf", "label": "test_extract_from_document_sends_document_block_for_pdf()", "file_type": "code", "source_file": "tests/test_plan_extractor.py", "source_location": "L70", "_callable": true}, {"id": "$graphify-root$_tests_test_plan_extractor_test_extract_from_document_sends_image_block_for_png", "label": "test_extract_from_document_sends_image_block_for_png()", "file_type": "code", "source_file": "tests/test_plan_extractor.py", "source_location": "L81", "_callable": true}, {"id": "$graphify-root$_tests_test_plan_extractor_test_invalid_json_response_raises", "label": "test_invalid_json_response_raises()", "file_type": "code", "source_file": "tests/test_plan_extractor.py", "source_location": "L91", "_callable": true}, {"id": "$graphify-root$_tests_test_plan_extractor_test_api_call_failure_raises_extraction_error", "label": "test_api_call_failure_raises_extraction_error()", "file_type": "code", "source_file": "tests/test_plan_extractor.py", "source_location": "L97", "_callable": true}, {"id": "$graphify-root$_tests_test_plan_extractor_test_system_prompt_uses_prompt_caching", "label": "test_system_prompt_uses_prompt_caching()", "file_type": "code", "source_file": "tests/test_plan_extractor.py", "source_location": "L106", "_callable": true}, {"id": "$graphify-root$_tests_test_plan_extractor_rationale_1", "label": "PlanExtractor \ud14c\uc2a4\ud2b8 (\uc2e4\uc81c Claude API \ud638\ucd9c X \u2014 \ubaa8\ub450 mock).", "file_type": "rationale", "source_file": "tests/test_plan_extractor.py", "source_location": "L1"}, {"id": "$graphify-root$_tests_test_plan_extractor_rationale_107", "label": "system \ud504\ub86c\ud504\ud2b8\ub294 \ub9e4 \ud638\ucd9c \ub3d9\uc77c\ud558\ubbc0\ub85c ephemeral \uce90\uc2f1 \ub300\uc0c1\uc774\uc5b4\uc57c \ud568(\uc9c0\uc5f0/\ud1a0\ud070 \uc808\uac10).", "file_type": "rationale", "source_file": "tests/test_plan_extractor.py", "source_location": "L107"}], "edges": [{"source": "$graphify-root$_tests_test_plan_extractor_py", "target": "unittest_mock", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_plan_extractor.py", "source_location": "L4", "weight": 1.0}, {"source": "$graphify-root$_tests_test_plan_extractor_py", "target": "pytest", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_plan_extractor.py", "source_location": "L6", "weight": 1.0}, {"source": "$graphify-root$_tests_test_plan_extractor_py", "target": "src_explain_plan_extractor", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_plan_extractor.py", "source_location": "L8", "weight": 1.0}, {"source": "$graphify-root$_tests_test_plan_extractor_py", "target": "$graphify-root$_tests_test_plan_extractor_client_returning", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_plan_extractor.py", "source_location": "L11", "weight": 1.0}, {"source": "$graphify-root$_tests_test_plan_extractor_py", "target": "$graphify-root$_tests_test_plan_extractor_test_extract_from_text_parses_llm_response", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_plan_extractor.py", "source_location": "L19", "weight": 1.0}, {"source": "$graphify-root$_tests_test_plan_extractor_py", "target": "$graphify-root$_tests_test_plan_extractor_test_extract_from_text_strips_code_fence", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_plan_extractor.py", "source_location": "L32", "weight": 1.0}, {"source": "$graphify-root$_tests_test_plan_extractor_py", "target": "$graphify-root$_tests_test_plan_extractor_test_extract_from_text_empty_raises", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_plan_extractor.py", "source_location": "L41", "weight": 1.0}, {"source": "$graphify-root$_tests_test_plan_extractor_py", "target": "$graphify-root$_tests_test_plan_extractor_test_extract_from_text_without_client_falls_back_to_heuristic", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_plan_extractor.py", "source_location": "L47", "weight": 1.0}, {"source": "$graphify-root$_tests_test_plan_extractor_py", "target": "$graphify-root$_tests_test_plan_extractor_test_extract_from_document_without_client_raises", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_plan_extractor.py", "source_location": "L58", "weight": 1.0}, {"source": "$graphify-root$_tests_test_plan_extractor_py", "target": "$graphify-root$_tests_test_plan_extractor_test_extract_from_document_empty_bytes_raises", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_plan_extractor.py", "source_location": "L64", "weight": 1.0}, {"source": "$graphify-root$_tests_test_plan_extractor_py", "target": "$graphify-root$_tests_test_plan_extractor_test_extract_from_document_sends_document_block_for_pdf", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_plan_extractor.py", "source_location": "L70", "weight": 1.0}, {"source": "$graphify-root$_tests_test_plan_extractor_py", "target": "$graphify-root$_tests_test_plan_extractor_test_extract_from_document_sends_image_block_for_png", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_plan_extractor.py", "source_location": "L81", "weight": 1.0}, {"source": "$graphify-root$_tests_test_plan_extractor_py", "target": "$graphify-root$_tests_test_plan_extractor_test_invalid_json_response_raises", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_plan_extractor.py", "source_location": "L91", "weight": 1.0}, {"source": "$graphify-root$_tests_test_plan_extractor_py", "target": "$graphify-root$_tests_test_plan_extractor_test_api_call_failure_raises_extraction_error", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_plan_extractor.py", "source_location": "L97", "weight": 1.0}, {"source": "$graphify-root$_tests_test_plan_extractor_py", "target": "$graphify-root$_tests_test_plan_extractor_test_system_prompt_uses_prompt_caching", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_plan_extractor.py", "source_location": "L106", "weight": 1.0}, {"source": "$graphify-root$_tests_test_plan_extractor_test_extract_from_text_parses_llm_response", "target": "$graphify-root$_tests_test_plan_extractor_client_returning", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_plan_extractor.py", "source_location": "L20", "weight": 1.0}, {"source": "$graphify-root$_tests_test_plan_extractor_test_extract_from_text_strips_code_fence", "target": "$graphify-root$_tests_test_plan_extractor_client_returning", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_plan_extractor.py", "source_location": "L33", "weight": 1.0}, {"source": "$graphify-root$_tests_test_plan_extractor_test_extract_from_text_empty_raises", "target": "$graphify-root$_tests_test_plan_extractor_client_returning", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_plan_extractor.py", "source_location": "L42", "weight": 1.0}, {"source": "$graphify-root$_tests_test_plan_extractor_test_extract_from_document_empty_bytes_raises", "target": "$graphify-root$_tests_test_plan_extractor_client_returning", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_plan_extractor.py", "source_location": "L65", "weight": 1.0}, {"source": "$graphify-root$_tests_test_plan_extractor_test_extract_from_document_sends_document_block_for_pdf", "target": "$graphify-root$_tests_test_plan_extractor_client_returning", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_plan_extractor.py", "source_location": "L71", "weight": 1.0}, {"source": "$graphify-root$_tests_test_plan_extractor_test_extract_from_document_sends_image_block_for_png", "target": "$graphify-root$_tests_test_plan_extractor_client_returning", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_plan_extractor.py", "source_location": "L82", "weight": 1.0}, {"source": "$graphify-root$_tests_test_plan_extractor_test_invalid_json_response_raises", "target": "$graphify-root$_tests_test_plan_extractor_client_returning", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_plan_extractor.py", "source_location": "L92", "weight": 1.0}, {"source": "$graphify-root$_tests_test_plan_extractor_test_system_prompt_uses_prompt_caching", "target": "$graphify-root$_tests_test_plan_extractor_client_returning", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_plan_extractor.py", "source_location": "L108", "weight": 1.0}, {"source": "$graphify-root$_tests_test_plan_extractor_rationale_1", "target": "$graphify-root$_tests_test_plan_extractor_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_plan_extractor.py", "source_location": "L1", "weight": 1.0}, {"source": "$graphify-root$_tests_test_plan_extractor_rationale_107", "target": "$graphify-root$_tests_test_plan_extractor_test_system_prompt_uses_prompt_caching", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_plan_extractor.py", "source_location": "L107", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_tests_test_plan_extractor_client_returning", "callee": "MagicMock", "is_member_call": false, "source_file": "tests/test_plan_extractor.py", "source_location": "L12", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_plan_extractor_client_returning", "callee": "MagicMock", "is_member_call": false, "source_file": "tests/test_plan_extractor.py", "source_location": "L13", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_plan_extractor_client_returning", "callee": "MagicMock", "is_member_call": false, "source_file": "tests/test_plan_extractor.py", "source_location": "L15", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_plan_extractor_test_extract_from_text_parses_llm_response", "callee": "PlanExtractor", "is_member_call": false, "source_file": "tests/test_plan_extractor.py", "source_location": "L23", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_plan_extractor_test_extract_from_text_parses_llm_response", "callee": "extract_from_text", "is_member_call": true, "source_file": "tests/test_plan_extractor.py", "source_location": "L25", "receiver": "extractor"}, {"caller_nid": "$graphify-root$_tests_test_plan_extractor_test_extract_from_text_parses_llm_response", "callee": "assert_called_once", "is_member_call": true, "source_file": "tests/test_plan_extractor.py", "source_location": "L29", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_plan_extractor_test_extract_from_text_strips_code_fence", "callee": "PlanExtractor", "is_member_call": false, "source_file": "tests/test_plan_extractor.py", "source_location": "L34", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_plan_extractor_test_extract_from_text_strips_code_fence", "callee": "extract_from_text", "is_member_call": true, "source_file": "tests/test_plan_extractor.py", "source_location": "L36", "receiver": "extractor"}, {"caller_nid": "$graphify-root$_tests_test_plan_extractor_test_extract_from_text_empty_raises", "callee": "PlanExtractor", "is_member_call": false, "source_file": "tests/test_plan_extractor.py", "source_location": "L42", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_plan_extractor_test_extract_from_text_empty_raises", "callee": "raises", "is_member_call": true, "source_file": "tests/test_plan_extractor.py", "source_location": "L43", "receiver": "pytest"}, {"caller_nid": "$graphify-root$_tests_test_plan_extractor_test_extract_from_text_empty_raises", "callee": "PlanExtractionError", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_plan_extractor.py", "source_location": "L43"}, {"caller_nid": "$graphify-root$_tests_test_plan_extractor_test_extract_from_text_empty_raises", "callee": "extract_from_text", "is_member_call": true, "source_file": "tests/test_plan_extractor.py", "source_location": "L44", "receiver": "extractor"}, {"caller_nid": "$graphify-root$_tests_test_plan_extractor_test_extract_from_text_without_client_falls_back_to_heuristic", "callee": "PlanExtractor", "is_member_call": false, "source_file": "tests/test_plan_extractor.py", "source_location": "L48", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_plan_extractor_test_extract_from_text_without_client_falls_back_to_heuristic", "callee": "extract_from_text", "is_member_call": true, "source_file": "tests/test_plan_extractor.py", "source_location": "L50", "receiver": "extractor"}, {"caller_nid": "$graphify-root$_tests_test_plan_extractor_test_extract_from_document_without_client_raises", "callee": "PlanExtractor", "is_member_call": false, "source_file": "tests/test_plan_extractor.py", "source_location": "L59", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_plan_extractor_test_extract_from_document_without_client_raises", "callee": "raises", "is_member_call": true, "source_file": "tests/test_plan_extractor.py", "source_location": "L60", "receiver": "pytest"}, {"caller_nid": "$graphify-root$_tests_test_plan_extractor_test_extract_from_document_without_client_raises", "callee": "PlanExtractionError", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_plan_extractor.py", "source_location": "L60"}, {"caller_nid": "$graphify-root$_tests_test_plan_extractor_test_extract_from_document_without_client_raises", "callee": "extract_from_document", "is_member_call": true, "source_file": "tests/test_plan_extractor.py", "source_location": "L61", "receiver": "extractor"}, {"caller_nid": "$graphify-root$_tests_test_plan_extractor_test_extract_from_document_empty_bytes_raises", "callee": "PlanExtractor", "is_member_call": false, "source_file": "tests/test_plan_extractor.py", "source_location": "L65", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_plan_extractor_test_extract_from_document_empty_bytes_raises", "callee": "raises", "is_member_call": true, "source_file": "tests/test_plan_extractor.py", "source_location": "L66", "receiver": "pytest"}, {"caller_nid": "$graphify-root$_tests_test_plan_extractor_test_extract_from_document_empty_bytes_raises", "callee": "PlanExtractionError", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_plan_extractor.py", "source_location": "L66"}, {"caller_nid": "$graphify-root$_tests_test_plan_extractor_test_extract_from_document_empty_bytes_raises", "callee": "extract_from_document", "is_member_call": true, "source_file": "tests/test_plan_extractor.py", "source_location": "L67", "receiver": "extractor"}, {"caller_nid": "$graphify-root$_tests_test_plan_extractor_test_extract_from_document_sends_document_block_for_pdf", "callee": "PlanExtractor", "is_member_call": false, "source_file": "tests/test_plan_extractor.py", "source_location": "L72", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_plan_extractor_test_extract_from_document_sends_document_block_for_pdf", "callee": "extract_from_document", "is_member_call": true, "source_file": "tests/test_plan_extractor.py", "source_location": "L74", "receiver": "extractor"}, {"caller_nid": "$graphify-root$_tests_test_plan_extractor_test_extract_from_document_sends_image_block_for_png", "callee": "PlanExtractor", "is_member_call": false, "source_file": "tests/test_plan_extractor.py", "source_location": "L83", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_plan_extractor_test_extract_from_document_sends_image_block_for_png", "callee": "extract_from_document", "is_member_call": true, "source_file": "tests/test_plan_extractor.py", "source_location": "L85", "receiver": "extractor"}, {"caller_nid": "$graphify-root$_tests_test_plan_extractor_test_invalid_json_response_raises", "callee": "PlanExtractor", "is_member_call": false, "source_file": "tests/test_plan_extractor.py", "source_location": "L92", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_plan_extractor_test_invalid_json_response_raises", "callee": "raises", "is_member_call": true, "source_file": "tests/test_plan_extractor.py", "source_location": "L93", "receiver": "pytest"}, {"caller_nid": "$graphify-root$_tests_test_plan_extractor_test_invalid_json_response_raises", "callee": "PlanExtractionError", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_plan_extractor.py", "source_location": "L93"}, {"caller_nid": "$graphify-root$_tests_test_plan_extractor_test_invalid_json_response_raises", "callee": "extract_from_text", "is_member_call": true, "source_file": "tests/test_plan_extractor.py", "source_location": "L94", "receiver": "extractor"}, {"caller_nid": "$graphify-root$_tests_test_plan_extractor_test_api_call_failure_raises_extraction_error", "callee": "MagicMock", "is_member_call": false, "source_file": "tests/test_plan_extractor.py", "source_location": "L98", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_plan_extractor_test_api_call_failure_raises_extraction_error", "callee": "RuntimeError", "is_member_call": false, "source_file": "tests/test_plan_extractor.py", "source_location": "L99", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_plan_extractor_test_api_call_failure_raises_extraction_error", "callee": "PlanExtractor", "is_member_call": false, "source_file": "tests/test_plan_extractor.py", "source_location": "L100", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_plan_extractor_test_api_call_failure_raises_extraction_error", "callee": "raises", "is_member_call": true, "source_file": "tests/test_plan_extractor.py", "source_location": "L102", "receiver": "pytest"}, {"caller_nid": "$graphify-root$_tests_test_plan_extractor_test_api_call_failure_raises_extraction_error", "callee": "PlanExtractionError", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_plan_extractor.py", "source_location": "L102"}, {"caller_nid": "$graphify-root$_tests_test_plan_extractor_test_api_call_failure_raises_extraction_error", "callee": "extract_from_text", "is_member_call": true, "source_file": "tests/test_plan_extractor.py", "source_location": "L103", "receiver": "extractor"}, {"caller_nid": "$graphify-root$_tests_test_plan_extractor_test_system_prompt_uses_prompt_caching", "callee": "PlanExtractor", "is_member_call": false, "source_file": "tests/test_plan_extractor.py", "source_location": "L109", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_plan_extractor_test_system_prompt_uses_prompt_caching", "callee": "extract_from_text", "is_member_call": true, "source_file": "tests/test_plan_extractor.py", "source_location": "L111", "receiver": "extractor"}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.31/caa1ad54c2c0b12774e306037a9557964a2e789ce4aad927bad2453e6758bedf.json b/graphify-out/cache/ast/v0.9.31/caa1ad54c2c0b12774e306037a9557964a2e789ce4aad927bad2453e6758bedf.json new file mode 100644 index 0000000..7532b06 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.31/caa1ad54c2c0b12774e306037a9557964a2e789ce4aad927bad2453e6758bedf.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_scripts_load_knowledge_graph_neo4j_py", "label": "load_knowledge_graph_neo4j.py", "file_type": "code", "source_file": "scripts/load_knowledge_graph_neo4j.py", "source_location": "L1"}, {"id": "$graphify-root$_scripts_load_knowledge_graph_neo4j_strip_type_suffix", "label": "_strip_type_suffix()", "file_type": "code", "source_file": "scripts/load_knowledge_graph_neo4j.py", "source_location": "L37", "_callable": true}, {"id": "$graphify-root$_scripts_load_knowledge_graph_neo4j_load_rows", "label": "_load_rows()", "file_type": "code", "source_file": "scripts/load_knowledge_graph_neo4j.py", "source_location": "L45", "_callable": true}, {"id": "$graphify-root$_scripts_load_knowledge_graph_neo4j_run_batched", "label": "_run_batched()", "file_type": "code", "source_file": "scripts/load_knowledge_graph_neo4j.py", "source_location": "L52", "_callable": true}, {"id": "driver", "label": "Driver", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/scripts/load_knowledge_graph_neo4j.py"}, {"id": "$graphify-root$_scripts_load_knowledge_graph_neo4j_main", "label": "main()", "file_type": "code", "source_file": "scripts/load_knowledge_graph_neo4j.py", "source_location": "L61", "_callable": true}], "edges": [{"source": "$graphify-root$_scripts_load_knowledge_graph_neo4j_py", "target": "os", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/load_knowledge_graph_neo4j.py", "source_location": "L17", "weight": 1.0}, {"source": "$graphify-root$_scripts_load_knowledge_graph_neo4j_py", "target": "sys", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/load_knowledge_graph_neo4j.py", "source_location": "L18", "weight": 1.0}, {"source": "$graphify-root$_scripts_load_knowledge_graph_neo4j_py", "target": "pathlib", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/load_knowledge_graph_neo4j.py", "source_location": "L19", "weight": 1.0}, {"source": "$graphify-root$_scripts_load_knowledge_graph_neo4j_py", "target": "pandas", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/load_knowledge_graph_neo4j.py", "source_location": "L21", "weight": 1.0, "local_alias": "pd"}, {"source": "$graphify-root$_scripts_load_knowledge_graph_neo4j_py", "target": "dotenv", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/load_knowledge_graph_neo4j.py", "source_location": "L22", "weight": 1.0}, {"source": "$graphify-root$_scripts_load_knowledge_graph_neo4j_py", "target": "neo4j", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/load_knowledge_graph_neo4j.py", "source_location": "L23", "weight": 1.0}, {"source": "$graphify-root$_scripts_load_knowledge_graph_neo4j_py", "target": "neo4j_exceptions", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/load_knowledge_graph_neo4j.py", "source_location": "L24", "weight": 1.0}, {"source": "$graphify-root$_scripts_load_knowledge_graph_neo4j_py", "target": "$graphify-root$_scripts_load_knowledge_graph_neo4j_strip_type_suffix", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/load_knowledge_graph_neo4j.py", "source_location": "L37", "weight": 1.0}, {"source": "$graphify-root$_scripts_load_knowledge_graph_neo4j_py", "target": "$graphify-root$_scripts_load_knowledge_graph_neo4j_load_rows", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/load_knowledge_graph_neo4j.py", "source_location": "L45", "weight": 1.0}, {"source": "$graphify-root$_scripts_load_knowledge_graph_neo4j_py", "target": "$graphify-root$_scripts_load_knowledge_graph_neo4j_run_batched", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/load_knowledge_graph_neo4j.py", "source_location": "L52", "weight": 1.0}, {"source": "$graphify-root$_scripts_load_knowledge_graph_neo4j_run_batched", "target": "driver", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "scripts/load_knowledge_graph_neo4j.py", "source_location": "L52", "weight": 1.0}, {"source": "$graphify-root$_scripts_load_knowledge_graph_neo4j_py", "target": "$graphify-root$_scripts_load_knowledge_graph_neo4j_main", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/load_knowledge_graph_neo4j.py", "source_location": "L61", "weight": 1.0}, {"source": "$graphify-root$_scripts_load_knowledge_graph_neo4j_load_rows", "target": "$graphify-root$_scripts_load_knowledge_graph_neo4j_strip_type_suffix", "relation": "indirect_call", "context": "argument", "confidence": "INFERRED", "source_file": "scripts/load_knowledge_graph_neo4j.py", "source_location": "L47", "weight": 1.0}, {"source": "$graphify-root$_scripts_load_knowledge_graph_neo4j_main", "target": "$graphify-root$_scripts_load_knowledge_graph_neo4j_run_batched", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/load_knowledge_graph_neo4j.py", "source_location": "L77", "weight": 1.0}, {"source": "$graphify-root$_scripts_load_knowledge_graph_neo4j_main", "target": "$graphify-root$_scripts_load_knowledge_graph_neo4j_load_rows", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/load_knowledge_graph_neo4j.py", "source_location": "L80", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_scripts_load_knowledge_graph_neo4j_strip_type_suffix", "callee": "startswith", "is_member_call": true, "source_file": "scripts/load_knowledge_graph_neo4j.py", "source_location": "L40", "receiver": "col"}, {"caller_nid": "$graphify-root$_scripts_load_knowledge_graph_neo4j_strip_type_suffix", "callee": "split", "is_member_call": true, "source_file": "scripts/load_knowledge_graph_neo4j.py", "source_location": "L42", "receiver": "col"}, {"caller_nid": "$graphify-root$_scripts_load_knowledge_graph_neo4j_load_rows", "callee": "read_csv", "is_member_call": true, "source_file": "scripts/load_knowledge_graph_neo4j.py", "source_location": "L46", "receiver": "pd"}, {"caller_nid": "$graphify-root$_scripts_load_knowledge_graph_neo4j_load_rows", "callee": "rename", "is_member_call": true, "source_file": "scripts/load_knowledge_graph_neo4j.py", "source_location": "L47", "receiver": "df"}, {"caller_nid": "$graphify-root$_scripts_load_knowledge_graph_neo4j_load_rows", "callee": "where", "is_member_call": true, "source_file": "scripts/load_knowledge_graph_neo4j.py", "source_location": "L48", "receiver": "df"}, {"caller_nid": "$graphify-root$_scripts_load_knowledge_graph_neo4j_load_rows", "callee": "notna", "is_member_call": true, "source_file": "scripts/load_knowledge_graph_neo4j.py", "source_location": "L48", "receiver": "pd"}, {"caller_nid": "$graphify-root$_scripts_load_knowledge_graph_neo4j_load_rows", "callee": "to_dict", "is_member_call": true, "source_file": "scripts/load_knowledge_graph_neo4j.py", "source_location": "L49", "receiver": "df"}, {"caller_nid": "$graphify-root$_scripts_load_knowledge_graph_neo4j_run_batched", "callee": "BATCH_SIZE", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/load_knowledge_graph_neo4j.py", "source_location": "L54"}, {"caller_nid": "$graphify-root$_scripts_load_knowledge_graph_neo4j_run_batched", "callee": "execute_query", "is_member_call": true, "source_file": "scripts/load_knowledge_graph_neo4j.py", "source_location": "L56", "receiver": "driver"}, {"caller_nid": "$graphify-root$_scripts_load_knowledge_graph_neo4j_main", "callee": "load_dotenv", "is_member_call": false, "source_file": "scripts/load_knowledge_graph_neo4j.py", "source_location": "L62", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_load_knowledge_graph_neo4j_main", "callee": "get", "is_member_call": true, "source_file": "scripts/load_knowledge_graph_neo4j.py", "source_location": "L66", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_load_knowledge_graph_neo4j_main", "callee": "driver", "is_member_call": true, "source_file": "scripts/load_knowledge_graph_neo4j.py", "source_location": "L68", "receiver": "GraphDatabase"}, {"caller_nid": "$graphify-root$_scripts_load_knowledge_graph_neo4j_main", "callee": "verify_connectivity", "is_member_call": true, "source_file": "scripts/load_knowledge_graph_neo4j.py", "source_location": "L69", "receiver": "driver"}, {"caller_nid": "$graphify-root$_scripts_load_knowledge_graph_neo4j_main", "callee": "execute_query", "is_member_call": true, "source_file": "scripts/load_knowledge_graph_neo4j.py", "source_location": "L74", "receiver": "driver"}, {"caller_nid": "$graphify-root$_scripts_load_knowledge_graph_neo4j_main", "callee": "BATCH_SIZE", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/load_knowledge_graph_neo4j.py", "source_location": "L145"}, {"caller_nid": "$graphify-root$_scripts_load_knowledge_graph_neo4j_main", "callee": "execute_query", "is_member_call": true, "source_file": "scripts/load_knowledge_graph_neo4j.py", "source_location": "L147", "receiver": "driver"}, {"caller_nid": "$graphify-root$_scripts_load_knowledge_graph_neo4j_main", "callee": "close", "is_member_call": true, "source_file": "scripts/load_knowledge_graph_neo4j.py", "source_location": "L162", "receiver": "driver"}, {"caller_nid": "$graphify-root$_scripts_load_knowledge_graph_neo4j_main", "callee": "exit", "is_member_call": true, "source_file": "scripts/load_knowledge_graph_neo4j.py", "source_location": "L163", "receiver": "sys"}, {"caller_nid": "$graphify-root$_scripts_load_knowledge_graph_neo4j_main", "callee": "close", "is_member_call": true, "source_file": "scripts/load_knowledge_graph_neo4j.py", "source_location": "L165", "receiver": "driver"}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.31/cbcedc6fa0fe399384ca41bf750a73abb2a764fb459d59b3e554690902595190.json b/graphify-out/cache/ast/v0.9.31/cbcedc6fa0fe399384ca41bf750a73abb2a764fb459d59b3e554690902595190.json new file mode 100644 index 0000000..db38aa8 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.31/cbcedc6fa0fe399384ca41bf750a73abb2a764fb459d59b3e554690902595190.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_tests_test_kakao_matrix_py", "label": "test_kakao_matrix.py", "file_type": "code", "source_file": "tests/test_kakao_matrix.py", "source_location": "L1"}, {"id": "$graphify-root$_tests_test_kakao_matrix_place", "label": "_place()", "file_type": "code", "source_file": "tests/test_kakao_matrix.py", "source_location": "L13", "_callable": true}, {"id": "vrptwplace", "label": "VRPTWPlace", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/tests/test_kakao_matrix.py"}, {"id": "$graphify-root$_tests_test_kakao_matrix_ok_response", "label": "_ok_response()", "file_type": "code", "source_file": "tests/test_kakao_matrix.py", "source_location": "L20", "_callable": true}, {"id": "$graphify-root$_tests_test_kakao_matrix_httpx_sync_client", "label": "_httpx_sync_client()", "file_type": "code", "source_file": "tests/test_kakao_matrix.py", "source_location": "L33", "_callable": true}, {"id": "$graphify-root$_tests_test_kakao_matrix_testsamepoint", "label": "TestSamePoint", "file_type": "code", "source_file": "tests/test_kakao_matrix.py", "source_location": "L47", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_tests_test_kakao_matrix_testsamepoint_test_same_coords_returns_zero", "label": ".test_same_coords_returns_zero()", "file_type": "code", "source_file": "tests/test_kakao_matrix.py", "source_location": "L48", "_callable": true}, {"id": "$graphify-root$_tests_test_kakao_matrix_testapicall", "label": "TestApiCall", "file_type": "code", "source_file": "tests/test_kakao_matrix.py", "source_location": "L58", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_tests_test_kakao_matrix_testapicall_test_sync_call_populates_cache", "label": ".test_sync_call_populates_cache()", "file_type": "code", "source_file": "tests/test_kakao_matrix.py", "source_location": "L59", "_callable": true}, {"id": "$graphify-root$_tests_test_kakao_matrix_testapicall_test_get_travel_time_uses_cache_after_sync_call", "label": ".test_get_travel_time_uses_cache_after_sync_call()", "file_type": "code", "source_file": "tests/test_kakao_matrix.py", "source_location": "L71", "_callable": true}, {"id": "$graphify-root$_tests_test_kakao_matrix_testapicall_test_get_travel_time_second_call_cache_hit", "label": ".test_get_travel_time_second_call_cache_hit()", "file_type": "code", "source_file": "tests/test_kakao_matrix.py", "source_location": "L85", "_callable": true}, {"id": "$graphify-root$_tests_test_kakao_matrix_testapicall_test_reverse_direction_also_cached", "label": ".test_reverse_direction_also_cached()", "file_type": "code", "source_file": "tests/test_kakao_matrix.py", "source_location": "L98", "_callable": true}, {"id": "$graphify-root$_tests_test_kakao_matrix_testquotaexhaustion", "label": "TestQuotaExhaustion", "file_type": "code", "source_file": "tests/test_kakao_matrix.py", "source_location": "L116", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_tests_test_kakao_matrix_testquotaexhaustion_test_429_sets_quota_exhausted", "label": ".test_429_sets_quota_exhausted()", "file_type": "code", "source_file": "tests/test_kakao_matrix.py", "source_location": "L117", "_callable": true}, {"id": "$graphify-root$_tests_test_kakao_matrix_testquotaexhaustion_test_get_travel_time_haversine_fallback_when_no_cache", "label": ".test_get_travel_time_haversine_fallback_when_no_cache()", "file_type": "code", "source_file": "tests/test_kakao_matrix.py", "source_location": "L132", "_callable": true}, {"id": "$graphify-root$_tests_test_kakao_matrix_testquotaexhaustion_test_after_quota_exhausted_get_travel_time_falls_back", "label": ".test_after_quota_exhausted_get_travel_time_falls_back()", "file_type": "code", "source_file": "tests/test_kakao_matrix.py", "source_location": "L141", "_callable": true}, {"id": "$graphify-root$_tests_test_kakao_matrix_testautherror", "label": "TestAuthError", "file_type": "code", "source_file": "tests/test_kakao_matrix.py", "source_location": "L155", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_tests_test_kakao_matrix_testautherror_test_401_raises", "label": ".test_401_raises()", "file_type": "code", "source_file": "tests/test_kakao_matrix.py", "source_location": "L156", "_callable": true}, {"id": "$graphify-root$_tests_test_kakao_matrix_testcachepersistence", "label": "TestCachePersistence", "file_type": "code", "source_file": "tests/test_kakao_matrix.py", "source_location": "L174", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_tests_test_kakao_matrix_testcachepersistence_test_save_and_load_cache", "label": ".test_save_and_load_cache()", "file_type": "code", "source_file": "tests/test_kakao_matrix.py", "source_location": "L175", "_callable": true}, {"id": "$graphify-root$_tests_test_kakao_matrix_testfromenv", "label": "TestFromEnv", "file_type": "code", "source_file": "tests/test_kakao_matrix.py", "source_location": "L201", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_tests_test_kakao_matrix_testfromenv_test_no_key_raises", "label": ".test_no_key_raises()", "file_type": "code", "source_file": "tests/test_kakao_matrix.py", "source_location": "L202", "_callable": true}, {"id": "$graphify-root$_tests_test_kakao_matrix_testfromenv_test_uses_mobility_key_first", "label": ".test_uses_mobility_key_first()", "file_type": "code", "source_file": "tests/test_kakao_matrix.py", "source_location": "L208", "_callable": true}, {"id": "$graphify-root$_tests_test_kakao_matrix_testfromenv_test_falls_back_to_rest_key", "label": ".test_falls_back_to_rest_key()", "file_type": "code", "source_file": "tests/test_kakao_matrix.py", "source_location": "L214", "_callable": true}, {"id": "$graphify-root$_tests_test_kakao_matrix_testasyncprefetch", "label": "TestAsyncPrefetch", "file_type": "code", "source_file": "tests/test_kakao_matrix.py", "source_location": "L225", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_tests_test_kakao_matrix_testasyncprefetch_test_aprefetch_populates_cache_and_hit_on_get", "label": ".test_aprefetch_populates_cache_and_hit_on_get()", "file_type": "code", "source_file": "tests/test_kakao_matrix.py", "source_location": "L226", "_callable": true}, {"id": "$graphify-root$_tests_test_kakao_matrix_testasyncprefetch_test_aprefetch_deduplicates_bidirectional", "label": ".test_aprefetch_deduplicates_bidirectional()", "file_type": "code", "source_file": "tests/test_kakao_matrix.py", "source_location": "L241", "_callable": true}, {"id": "$graphify-root$_tests_test_kakao_matrix_rationale_1", "label": "KakaoMobilityMatrix \ud14c\uc2a4\ud2b8 (\uc2e4\uc81c API \ud638\ucd9c X \u2014 \ubaa8\ub450 mock).", "file_type": "rationale", "source_file": "tests/test_kakao_matrix.py", "source_location": "L1"}, {"id": "$graphify-root$_tests_test_kakao_matrix_rationale_21", "label": "\uce74\uce74\uc624 \uc815\uc0c1 \uc751\ub2f5 mock \u2014 duration 600\ucd08.", "file_type": "rationale", "source_file": "tests/test_kakao_matrix.py", "source_location": "L21"}, {"id": "$graphify-root$_tests_test_kakao_matrix_rationale_34", "label": "httpx.Client() context manager mock.", "file_type": "rationale", "source_file": "tests/test_kakao_matrix.py", "source_location": "L34"}, {"id": "$graphify-root$_tests_test_kakao_matrix_rationale_227", "label": "aprefetch_matrix \ud6c4 get_travel_time\uc774 \uce90\uc2dc\ub97c \uc0ac\uc6a9\ud55c\ub2e4.", "file_type": "rationale", "source_file": "tests/test_kakao_matrix.py", "source_location": "L227"}, {"id": "$graphify-root$_tests_test_kakao_matrix_rationale_242", "label": "A\u2192B \uce90\uc2dc \uc874\uc7ac \uc2dc B\u2192A prefetch\ub294 \uc2a4\ud0b5\ub41c\ub2e4.", "file_type": "rationale", "source_file": "tests/test_kakao_matrix.py", "source_location": "L242"}], "edges": [{"source": "$graphify-root$_tests_test_kakao_matrix_py", "target": "json", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_kakao_matrix.py", "source_location": "L4", "weight": 1.0}, {"source": "$graphify-root$_tests_test_kakao_matrix_py", "target": "unittest_mock", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_kakao_matrix.py", "source_location": "L5", "weight": 1.0}, {"source": "$graphify-root$_tests_test_kakao_matrix_py", "target": "pytest", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_kakao_matrix.py", "source_location": "L7", "weight": 1.0}, {"source": "$graphify-root$_tests_test_kakao_matrix_py", "target": "src_data_models", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_kakao_matrix.py", "source_location": "L9", "weight": 1.0}, {"source": "$graphify-root$_tests_test_kakao_matrix_py", "target": "src_validation_kakao_matrix", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_kakao_matrix.py", "source_location": "L10", "weight": 1.0}, {"source": "$graphify-root$_tests_test_kakao_matrix_py", "target": "$graphify-root$_tests_test_kakao_matrix_place", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_kakao_matrix.py", "source_location": "L13", "weight": 1.0}, {"source": "$graphify-root$_tests_test_kakao_matrix_place", "target": "vrptwplace", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "tests/test_kakao_matrix.py", "source_location": "L13", "weight": 1.0}, {"source": "$graphify-root$_tests_test_kakao_matrix_py", "target": "$graphify-root$_tests_test_kakao_matrix_ok_response", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_kakao_matrix.py", "source_location": "L20", "weight": 1.0}, {"source": "$graphify-root$_tests_test_kakao_matrix_py", "target": "$graphify-root$_tests_test_kakao_matrix_httpx_sync_client", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_kakao_matrix.py", "source_location": "L33", "weight": 1.0}, {"source": "$graphify-root$_tests_test_kakao_matrix_py", "target": "$graphify-root$_tests_test_kakao_matrix_testsamepoint", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_kakao_matrix.py", "source_location": "L47", "weight": 1.0}, {"source": "$graphify-root$_tests_test_kakao_matrix_testsamepoint", "target": "$graphify-root$_tests_test_kakao_matrix_testsamepoint_test_same_coords_returns_zero", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_kakao_matrix.py", "source_location": "L48", "weight": 1.0}, {"source": "$graphify-root$_tests_test_kakao_matrix_py", "target": "$graphify-root$_tests_test_kakao_matrix_testapicall", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_kakao_matrix.py", "source_location": "L58", "weight": 1.0}, {"source": "$graphify-root$_tests_test_kakao_matrix_testapicall", "target": "$graphify-root$_tests_test_kakao_matrix_testapicall_test_sync_call_populates_cache", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_kakao_matrix.py", "source_location": "L59", "weight": 1.0}, {"source": "$graphify-root$_tests_test_kakao_matrix_testapicall", "target": "$graphify-root$_tests_test_kakao_matrix_testapicall_test_get_travel_time_uses_cache_after_sync_call", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_kakao_matrix.py", "source_location": "L71", "weight": 1.0}, {"source": "$graphify-root$_tests_test_kakao_matrix_testapicall", "target": "$graphify-root$_tests_test_kakao_matrix_testapicall_test_get_travel_time_second_call_cache_hit", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_kakao_matrix.py", "source_location": "L85", "weight": 1.0}, {"source": "$graphify-root$_tests_test_kakao_matrix_testapicall", "target": "$graphify-root$_tests_test_kakao_matrix_testapicall_test_reverse_direction_also_cached", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_kakao_matrix.py", "source_location": "L98", "weight": 1.0}, {"source": "$graphify-root$_tests_test_kakao_matrix_py", "target": "$graphify-root$_tests_test_kakao_matrix_testquotaexhaustion", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_kakao_matrix.py", "source_location": "L116", "weight": 1.0}, {"source": "$graphify-root$_tests_test_kakao_matrix_testquotaexhaustion", "target": "$graphify-root$_tests_test_kakao_matrix_testquotaexhaustion_test_429_sets_quota_exhausted", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_kakao_matrix.py", "source_location": "L117", "weight": 1.0}, {"source": "$graphify-root$_tests_test_kakao_matrix_testquotaexhaustion", "target": "$graphify-root$_tests_test_kakao_matrix_testquotaexhaustion_test_get_travel_time_haversine_fallback_when_no_cache", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_kakao_matrix.py", "source_location": "L132", "weight": 1.0}, {"source": "$graphify-root$_tests_test_kakao_matrix_testquotaexhaustion", "target": "$graphify-root$_tests_test_kakao_matrix_testquotaexhaustion_test_after_quota_exhausted_get_travel_time_falls_back", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_kakao_matrix.py", "source_location": "L141", "weight": 1.0}, {"source": "$graphify-root$_tests_test_kakao_matrix_py", "target": "$graphify-root$_tests_test_kakao_matrix_testautherror", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_kakao_matrix.py", "source_location": "L155", "weight": 1.0}, {"source": "$graphify-root$_tests_test_kakao_matrix_testautherror", "target": "$graphify-root$_tests_test_kakao_matrix_testautherror_test_401_raises", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_kakao_matrix.py", "source_location": "L156", "weight": 1.0}, {"source": "$graphify-root$_tests_test_kakao_matrix_py", "target": "$graphify-root$_tests_test_kakao_matrix_testcachepersistence", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_kakao_matrix.py", "source_location": "L174", "weight": 1.0}, {"source": "$graphify-root$_tests_test_kakao_matrix_testcachepersistence", "target": "$graphify-root$_tests_test_kakao_matrix_testcachepersistence_test_save_and_load_cache", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_kakao_matrix.py", "source_location": "L175", "weight": 1.0}, {"source": "$graphify-root$_tests_test_kakao_matrix_py", "target": "$graphify-root$_tests_test_kakao_matrix_testfromenv", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_kakao_matrix.py", "source_location": "L201", "weight": 1.0}, {"source": "$graphify-root$_tests_test_kakao_matrix_testfromenv", "target": "$graphify-root$_tests_test_kakao_matrix_testfromenv_test_no_key_raises", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_kakao_matrix.py", "source_location": "L202", "weight": 1.0}, {"source": "$graphify-root$_tests_test_kakao_matrix_testfromenv", "target": "$graphify-root$_tests_test_kakao_matrix_testfromenv_test_uses_mobility_key_first", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_kakao_matrix.py", "source_location": "L208", "weight": 1.0}, {"source": "$graphify-root$_tests_test_kakao_matrix_testfromenv", "target": "$graphify-root$_tests_test_kakao_matrix_testfromenv_test_falls_back_to_rest_key", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_kakao_matrix.py", "source_location": "L214", "weight": 1.0}, {"source": "$graphify-root$_tests_test_kakao_matrix_py", "target": "$graphify-root$_tests_test_kakao_matrix_testasyncprefetch", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_kakao_matrix.py", "source_location": "L225", "weight": 1.0}, {"source": "$graphify-root$_tests_test_kakao_matrix_testasyncprefetch", "target": "$graphify-root$_tests_test_kakao_matrix_testasyncprefetch_test_aprefetch_populates_cache_and_hit_on_get", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_kakao_matrix.py", "source_location": "L226", "weight": 1.0}, {"source": "$graphify-root$_tests_test_kakao_matrix_testasyncprefetch", "target": "$graphify-root$_tests_test_kakao_matrix_testasyncprefetch_test_aprefetch_deduplicates_bidirectional", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_kakao_matrix.py", "source_location": "L241", "weight": 1.0}, {"source": "$graphify-root$_tests_test_kakao_matrix_place", "target": "vrptwplace", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_kakao_matrix.py", "source_location": "L14", "weight": 1.0}, {"source": "$graphify-root$_tests_test_kakao_matrix_testsamepoint_test_same_coords_returns_zero", "target": "$graphify-root$_tests_test_kakao_matrix_place", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_kakao_matrix.py", "source_location": "L50", "weight": 1.0}, {"source": "$graphify-root$_tests_test_kakao_matrix_testapicall_test_sync_call_populates_cache", "target": "$graphify-root$_tests_test_kakao_matrix_place", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_kakao_matrix.py", "source_location": "L61", "weight": 1.0}, {"source": "$graphify-root$_tests_test_kakao_matrix_testapicall_test_sync_call_populates_cache", "target": "$graphify-root$_tests_test_kakao_matrix_httpx_sync_client", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_kakao_matrix.py", "source_location": "L65", "weight": 1.0}, {"source": "$graphify-root$_tests_test_kakao_matrix_testapicall_test_sync_call_populates_cache", "target": "$graphify-root$_tests_test_kakao_matrix_ok_response", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_kakao_matrix.py", "source_location": "L65", "weight": 1.0}, {"source": "$graphify-root$_tests_test_kakao_matrix_testapicall_test_get_travel_time_uses_cache_after_sync_call", "target": "$graphify-root$_tests_test_kakao_matrix_place", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_kakao_matrix.py", "source_location": "L73", "weight": 1.0}, {"source": "$graphify-root$_tests_test_kakao_matrix_testapicall_test_get_travel_time_uses_cache_after_sync_call", "target": "$graphify-root$_tests_test_kakao_matrix_httpx_sync_client", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_kakao_matrix.py", "source_location": "L77", "weight": 1.0}, {"source": "$graphify-root$_tests_test_kakao_matrix_testapicall_test_get_travel_time_uses_cache_after_sync_call", "target": "$graphify-root$_tests_test_kakao_matrix_ok_response", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_kakao_matrix.py", "source_location": "L77", "weight": 1.0}, {"source": "$graphify-root$_tests_test_kakao_matrix_testapicall_test_get_travel_time_second_call_cache_hit", "target": "$graphify-root$_tests_test_kakao_matrix_place", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_kakao_matrix.py", "source_location": "L87", "weight": 1.0}, {"source": "$graphify-root$_tests_test_kakao_matrix_testapicall_test_get_travel_time_second_call_cache_hit", "target": "$graphify-root$_tests_test_kakao_matrix_httpx_sync_client", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_kakao_matrix.py", "source_location": "L91", "weight": 1.0}, {"source": "$graphify-root$_tests_test_kakao_matrix_testapicall_test_get_travel_time_second_call_cache_hit", "target": "$graphify-root$_tests_test_kakao_matrix_ok_response", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_kakao_matrix.py", "source_location": "L91", "weight": 1.0}, {"source": "$graphify-root$_tests_test_kakao_matrix_testapicall_test_reverse_direction_also_cached", "target": "$graphify-root$_tests_test_kakao_matrix_place", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_kakao_matrix.py", "source_location": "L100", "weight": 1.0}, {"source": "$graphify-root$_tests_test_kakao_matrix_testapicall_test_reverse_direction_also_cached", "target": "$graphify-root$_tests_test_kakao_matrix_httpx_sync_client", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_kakao_matrix.py", "source_location": "L104", "weight": 1.0}, {"source": "$graphify-root$_tests_test_kakao_matrix_testapicall_test_reverse_direction_also_cached", "target": "$graphify-root$_tests_test_kakao_matrix_ok_response", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_kakao_matrix.py", "source_location": "L104", "weight": 1.0}, {"source": "$graphify-root$_tests_test_kakao_matrix_testquotaexhaustion_test_429_sets_quota_exhausted", "target": "$graphify-root$_tests_test_kakao_matrix_place", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_kakao_matrix.py", "source_location": "L119", "weight": 1.0}, {"source": "$graphify-root$_tests_test_kakao_matrix_testquotaexhaustion_test_429_sets_quota_exhausted", "target": "$graphify-root$_tests_test_kakao_matrix_httpx_sync_client", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_kakao_matrix.py", "source_location": "L126", "weight": 1.0}, {"source": "$graphify-root$_tests_test_kakao_matrix_testquotaexhaustion_test_get_travel_time_haversine_fallback_when_no_cache", "target": "$graphify-root$_tests_test_kakao_matrix_place", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_kakao_matrix.py", "source_location": "L134", "weight": 1.0}, {"source": "$graphify-root$_tests_test_kakao_matrix_testquotaexhaustion_test_after_quota_exhausted_get_travel_time_falls_back", "target": "$graphify-root$_tests_test_kakao_matrix_place", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_kakao_matrix.py", "source_location": "L144", "weight": 1.0}, {"source": "$graphify-root$_tests_test_kakao_matrix_testautherror_test_401_raises", "target": "$graphify-root$_tests_test_kakao_matrix_place", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_kakao_matrix.py", "source_location": "L161", "weight": 1.0}, {"source": "$graphify-root$_tests_test_kakao_matrix_testautherror_test_401_raises", "target": "$graphify-root$_tests_test_kakao_matrix_httpx_sync_client", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_kakao_matrix.py", "source_location": "L165", "weight": 1.0}, {"source": "$graphify-root$_tests_test_kakao_matrix_testcachepersistence_test_save_and_load_cache", "target": "$graphify-root$_tests_test_kakao_matrix_place", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_kakao_matrix.py", "source_location": "L179", "weight": 1.0}, {"source": "$graphify-root$_tests_test_kakao_matrix_testcachepersistence_test_save_and_load_cache", "target": "$graphify-root$_tests_test_kakao_matrix_httpx_sync_client", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_kakao_matrix.py", "source_location": "L183", "weight": 1.0}, {"source": "$graphify-root$_tests_test_kakao_matrix_testcachepersistence_test_save_and_load_cache", "target": "$graphify-root$_tests_test_kakao_matrix_ok_response", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_kakao_matrix.py", "source_location": "L183", "weight": 1.0}, {"source": "$graphify-root$_tests_test_kakao_matrix_testasyncprefetch_test_aprefetch_populates_cache_and_hit_on_get", "target": "$graphify-root$_tests_test_kakao_matrix_place", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_kakao_matrix.py", "source_location": "L231", "weight": 1.0}, {"source": "$graphify-root$_tests_test_kakao_matrix_testasyncprefetch_test_aprefetch_deduplicates_bidirectional", "target": "$graphify-root$_tests_test_kakao_matrix_place", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_kakao_matrix.py", "source_location": "L249", "weight": 1.0}, {"source": "$graphify-root$_tests_test_kakao_matrix_rationale_1", "target": "$graphify-root$_tests_test_kakao_matrix_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_kakao_matrix.py", "source_location": "L1", "weight": 1.0}, {"source": "$graphify-root$_tests_test_kakao_matrix_rationale_21", "target": "$graphify-root$_tests_test_kakao_matrix_ok_response", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_kakao_matrix.py", "source_location": "L21", "weight": 1.0}, {"source": "$graphify-root$_tests_test_kakao_matrix_rationale_34", "target": "$graphify-root$_tests_test_kakao_matrix_httpx_sync_client", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_kakao_matrix.py", "source_location": "L34", "weight": 1.0}, {"source": "$graphify-root$_tests_test_kakao_matrix_rationale_227", "target": "$graphify-root$_tests_test_kakao_matrix_testasyncprefetch_test_aprefetch_populates_cache_and_hit_on_get", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_kakao_matrix.py", "source_location": "L227", "weight": 1.0}, {"source": "$graphify-root$_tests_test_kakao_matrix_rationale_242", "target": "$graphify-root$_tests_test_kakao_matrix_testasyncprefetch_test_aprefetch_deduplicates_bidirectional", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_kakao_matrix.py", "source_location": "L242", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_tests_test_kakao_matrix_ok_response", "callee": "MagicMock", "is_member_call": false, "source_file": "tests/test_kakao_matrix.py", "source_location": "L22", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_kakao_matrix_httpx_sync_client", "callee": "MagicMock", "is_member_call": false, "source_file": "tests/test_kakao_matrix.py", "source_location": "L35", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_kakao_matrix_httpx_sync_client", "callee": "MagicMock", "is_member_call": false, "source_file": "tests/test_kakao_matrix.py", "source_location": "L37", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_kakao_matrix_httpx_sync_client", "callee": "MagicMock", "is_member_call": false, "source_file": "tests/test_kakao_matrix.py", "source_location": "L38", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_kakao_matrix_httpx_sync_client", "callee": "MagicMock", "is_member_call": false, "source_file": "tests/test_kakao_matrix.py", "source_location": "L39", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_kakao_matrix_testsamepoint_test_same_coords_returns_zero", "callee": "KakaoMobilityMatrix", "is_member_call": false, "source_file": "tests/test_kakao_matrix.py", "source_location": "L49", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_kakao_matrix_testsamepoint_test_same_coords_returns_zero", "callee": "get_travel_time", "is_member_call": true, "source_file": "tests/test_kakao_matrix.py", "source_location": "L51", "receiver": "m"}, {"caller_nid": "$graphify-root$_tests_test_kakao_matrix_testapicall_test_sync_call_populates_cache", "callee": "KakaoMobilityMatrix", "is_member_call": false, "source_file": "tests/test_kakao_matrix.py", "source_location": "L60", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_kakao_matrix_testapicall_test_sync_call_populates_cache", "callee": "patch", "is_member_call": false, "source_file": "tests/test_kakao_matrix.py", "source_location": "L64", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_kakao_matrix_testapicall_test_sync_call_populates_cache", "callee": "_call_kakao_sync", "is_member_call": true, "source_file": "tests/test_kakao_matrix.py", "source_location": "L66", "receiver": "m"}, {"caller_nid": "$graphify-root$_tests_test_kakao_matrix_testapicall_test_get_travel_time_uses_cache_after_sync_call", "callee": "KakaoMobilityMatrix", "is_member_call": false, "source_file": "tests/test_kakao_matrix.py", "source_location": "L72", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_kakao_matrix_testapicall_test_get_travel_time_uses_cache_after_sync_call", "callee": "patch", "is_member_call": false, "source_file": "tests/test_kakao_matrix.py", "source_location": "L76", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_kakao_matrix_testapicall_test_get_travel_time_uses_cache_after_sync_call", "callee": "_call_kakao_sync", "is_member_call": true, "source_file": "tests/test_kakao_matrix.py", "source_location": "L78", "receiver": "m"}, {"caller_nid": "$graphify-root$_tests_test_kakao_matrix_testapicall_test_get_travel_time_uses_cache_after_sync_call", "callee": "get_travel_time", "is_member_call": true, "source_file": "tests/test_kakao_matrix.py", "source_location": "L80", "receiver": "m"}, {"caller_nid": "$graphify-root$_tests_test_kakao_matrix_testapicall_test_get_travel_time_second_call_cache_hit", "callee": "KakaoMobilityMatrix", "is_member_call": false, "source_file": "tests/test_kakao_matrix.py", "source_location": "L86", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_kakao_matrix_testapicall_test_get_travel_time_second_call_cache_hit", "callee": "patch", "is_member_call": false, "source_file": "tests/test_kakao_matrix.py", "source_location": "L90", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_kakao_matrix_testapicall_test_get_travel_time_second_call_cache_hit", "callee": "_call_kakao_sync", "is_member_call": true, "source_file": "tests/test_kakao_matrix.py", "source_location": "L92", "receiver": "m"}, {"caller_nid": "$graphify-root$_tests_test_kakao_matrix_testapicall_test_get_travel_time_second_call_cache_hit", "callee": "get_travel_time", "is_member_call": true, "source_file": "tests/test_kakao_matrix.py", "source_location": "L94", "receiver": "m"}, {"caller_nid": "$graphify-root$_tests_test_kakao_matrix_testapicall_test_get_travel_time_second_call_cache_hit", "callee": "get_travel_time", "is_member_call": true, "source_file": "tests/test_kakao_matrix.py", "source_location": "L95", "receiver": "m"}, {"caller_nid": "$graphify-root$_tests_test_kakao_matrix_testapicall_test_reverse_direction_also_cached", "callee": "KakaoMobilityMatrix", "is_member_call": false, "source_file": "tests/test_kakao_matrix.py", "source_location": "L99", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_kakao_matrix_testapicall_test_reverse_direction_also_cached", "callee": "patch", "is_member_call": false, "source_file": "tests/test_kakao_matrix.py", "source_location": "L103", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_kakao_matrix_testapicall_test_reverse_direction_also_cached", "callee": "_call_kakao_sync", "is_member_call": true, "source_file": "tests/test_kakao_matrix.py", "source_location": "L105", "receiver": "m"}, {"caller_nid": "$graphify-root$_tests_test_kakao_matrix_testapicall_test_reverse_direction_also_cached", "callee": "get_travel_time", "is_member_call": true, "source_file": "tests/test_kakao_matrix.py", "source_location": "L107", "receiver": "m"}, {"caller_nid": "$graphify-root$_tests_test_kakao_matrix_testquotaexhaustion_test_429_sets_quota_exhausted", "callee": "KakaoMobilityMatrix", "is_member_call": false, "source_file": "tests/test_kakao_matrix.py", "source_location": "L118", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_kakao_matrix_testquotaexhaustion_test_429_sets_quota_exhausted", "callee": "MagicMock", "is_member_call": false, "source_file": "tests/test_kakao_matrix.py", "source_location": "L122", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_kakao_matrix_testquotaexhaustion_test_429_sets_quota_exhausted", "callee": "patch", "is_member_call": false, "source_file": "tests/test_kakao_matrix.py", "source_location": "L125", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_kakao_matrix_testquotaexhaustion_test_429_sets_quota_exhausted", "callee": "_call_kakao_sync", "is_member_call": true, "source_file": "tests/test_kakao_matrix.py", "source_location": "L127", "receiver": "m"}, {"caller_nid": "$graphify-root$_tests_test_kakao_matrix_testquotaexhaustion_test_get_travel_time_haversine_fallback_when_no_cache", "callee": "KakaoMobilityMatrix", "is_member_call": false, "source_file": "tests/test_kakao_matrix.py", "source_location": "L133", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_kakao_matrix_testquotaexhaustion_test_get_travel_time_haversine_fallback_when_no_cache", "callee": "get_travel_time", "is_member_call": true, "source_file": "tests/test_kakao_matrix.py", "source_location": "L137", "receiver": "m"}, {"caller_nid": "$graphify-root$_tests_test_kakao_matrix_testquotaexhaustion_test_after_quota_exhausted_get_travel_time_falls_back", "callee": "KakaoMobilityMatrix", "is_member_call": false, "source_file": "tests/test_kakao_matrix.py", "source_location": "L142", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_kakao_matrix_testquotaexhaustion_test_after_quota_exhausted_get_travel_time_falls_back", "callee": "get_travel_time", "is_member_call": true, "source_file": "tests/test_kakao_matrix.py", "source_location": "L146", "receiver": "m"}, {"caller_nid": "$graphify-root$_tests_test_kakao_matrix_testautherror_test_401_raises", "callee": "MagicMock", "is_member_call": false, "source_file": "tests/test_kakao_matrix.py", "source_location": "L157", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_kakao_matrix_testautherror_test_401_raises", "callee": "KakaoMobilityMatrix", "is_member_call": false, "source_file": "tests/test_kakao_matrix.py", "source_location": "L160", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_kakao_matrix_testautherror_test_401_raises", "callee": "patch", "is_member_call": false, "source_file": "tests/test_kakao_matrix.py", "source_location": "L164", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_kakao_matrix_testautherror_test_401_raises", "callee": "raises", "is_member_call": true, "source_file": "tests/test_kakao_matrix.py", "source_location": "L166", "receiver": "pytest"}, {"caller_nid": "$graphify-root$_tests_test_kakao_matrix_testautherror_test_401_raises", "callee": "RuntimeError", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_kakao_matrix.py", "source_location": "L166"}, {"caller_nid": "$graphify-root$_tests_test_kakao_matrix_testautherror_test_401_raises", "callee": "_call_kakao_sync", "is_member_call": true, "source_file": "tests/test_kakao_matrix.py", "source_location": "L167", "receiver": "m"}, {"caller_nid": "$graphify-root$_tests_test_kakao_matrix_testcachepersistence_test_save_and_load_cache", "callee": "KakaoMobilityMatrix", "is_member_call": false, "source_file": "tests/test_kakao_matrix.py", "source_location": "L178", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_kakao_matrix_testcachepersistence_test_save_and_load_cache", "callee": "patch", "is_member_call": false, "source_file": "tests/test_kakao_matrix.py", "source_location": "L182", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_kakao_matrix_testcachepersistence_test_save_and_load_cache", "callee": "_call_kakao_sync", "is_member_call": true, "source_file": "tests/test_kakao_matrix.py", "source_location": "L184", "receiver": "m1"}, {"caller_nid": "$graphify-root$_tests_test_kakao_matrix_testcachepersistence_test_save_and_load_cache", "callee": "save_cache", "is_member_call": true, "source_file": "tests/test_kakao_matrix.py", "source_location": "L185", "receiver": "m1"}, {"caller_nid": "$graphify-root$_tests_test_kakao_matrix_testcachepersistence_test_save_and_load_cache", "callee": "exists", "is_member_call": true, "source_file": "tests/test_kakao_matrix.py", "source_location": "L187", "receiver": "cache_file"}, {"caller_nid": "$graphify-root$_tests_test_kakao_matrix_testcachepersistence_test_save_and_load_cache", "callee": "loads", "is_member_call": true, "source_file": "tests/test_kakao_matrix.py", "source_location": "L188", "receiver": "json"}, {"caller_nid": "$graphify-root$_tests_test_kakao_matrix_testcachepersistence_test_save_and_load_cache", "callee": "read_text", "is_member_call": true, "source_file": "tests/test_kakao_matrix.py", "source_location": "L188", "receiver": "cache_file"}, {"caller_nid": "$graphify-root$_tests_test_kakao_matrix_testcachepersistence_test_save_and_load_cache", "callee": "KakaoMobilityMatrix", "is_member_call": false, "source_file": "tests/test_kakao_matrix.py", "source_location": "L191", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_kakao_matrix_testcachepersistence_test_save_and_load_cache", "callee": "get_travel_time", "is_member_call": true, "source_file": "tests/test_kakao_matrix.py", "source_location": "L192", "receiver": "m2"}, {"caller_nid": "$graphify-root$_tests_test_kakao_matrix_testfromenv_test_no_key_raises", "callee": "delenv", "is_member_call": true, "source_file": "tests/test_kakao_matrix.py", "source_location": "L203", "receiver": "monkeypatch"}, {"caller_nid": "$graphify-root$_tests_test_kakao_matrix_testfromenv_test_no_key_raises", "callee": "delenv", "is_member_call": true, "source_file": "tests/test_kakao_matrix.py", "source_location": "L204", "receiver": "monkeypatch"}, {"caller_nid": "$graphify-root$_tests_test_kakao_matrix_testfromenv_test_no_key_raises", "callee": "raises", "is_member_call": true, "source_file": "tests/test_kakao_matrix.py", "source_location": "L205", "receiver": "pytest"}, {"caller_nid": "$graphify-root$_tests_test_kakao_matrix_testfromenv_test_no_key_raises", "callee": "ValueError", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_kakao_matrix.py", "source_location": "L205"}, {"caller_nid": "$graphify-root$_tests_test_kakao_matrix_testfromenv_test_no_key_raises", "callee": "from_env", "is_member_call": true, "source_file": "tests/test_kakao_matrix.py", "source_location": "L206", "receiver": "KakaoMobilityMatrix"}, {"caller_nid": "$graphify-root$_tests_test_kakao_matrix_testfromenv_test_uses_mobility_key_first", "callee": "setenv", "is_member_call": true, "source_file": "tests/test_kakao_matrix.py", "source_location": "L209", "receiver": "monkeypatch"}, {"caller_nid": "$graphify-root$_tests_test_kakao_matrix_testfromenv_test_uses_mobility_key_first", "callee": "setenv", "is_member_call": true, "source_file": "tests/test_kakao_matrix.py", "source_location": "L210", "receiver": "monkeypatch"}, {"caller_nid": "$graphify-root$_tests_test_kakao_matrix_testfromenv_test_uses_mobility_key_first", "callee": "from_env", "is_member_call": true, "source_file": "tests/test_kakao_matrix.py", "source_location": "L211", "receiver": "KakaoMobilityMatrix"}, {"caller_nid": "$graphify-root$_tests_test_kakao_matrix_testfromenv_test_falls_back_to_rest_key", "callee": "delenv", "is_member_call": true, "source_file": "tests/test_kakao_matrix.py", "source_location": "L215", "receiver": "monkeypatch"}, {"caller_nid": "$graphify-root$_tests_test_kakao_matrix_testfromenv_test_falls_back_to_rest_key", "callee": "setenv", "is_member_call": true, "source_file": "tests/test_kakao_matrix.py", "source_location": "L216", "receiver": "monkeypatch"}, {"caller_nid": "$graphify-root$_tests_test_kakao_matrix_testfromenv_test_falls_back_to_rest_key", "callee": "from_env", "is_member_call": true, "source_file": "tests/test_kakao_matrix.py", "source_location": "L217", "receiver": "KakaoMobilityMatrix"}, {"caller_nid": "$graphify-root$_tests_test_kakao_matrix_testasyncprefetch_test_aprefetch_populates_cache_and_hit_on_get", "callee": "KakaoMobilityMatrix", "is_member_call": false, "source_file": "tests/test_kakao_matrix.py", "source_location": "L230", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_kakao_matrix_testasyncprefetch_test_aprefetch_populates_cache_and_hit_on_get", "callee": "_make_key", "is_member_call": true, "source_file": "tests/test_kakao_matrix.py", "source_location": "L235", "receiver": "m"}, {"caller_nid": "$graphify-root$_tests_test_kakao_matrix_testasyncprefetch_test_aprefetch_populates_cache_and_hit_on_get", "callee": "get_travel_time", "is_member_call": true, "source_file": "tests/test_kakao_matrix.py", "source_location": "L237", "receiver": "m"}, {"caller_nid": "$graphify-root$_tests_test_kakao_matrix_testasyncprefetch_test_aprefetch_deduplicates_bidirectional", "callee": "KakaoMobilityMatrix", "is_member_call": false, "source_file": "tests/test_kakao_matrix.py", "source_location": "L248", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_kakao_matrix_testasyncprefetch_test_aprefetch_deduplicates_bidirectional", "callee": "_make_key", "is_member_call": true, "source_file": "tests/test_kakao_matrix.py", "source_location": "L253", "receiver": "m"}, {"caller_nid": "$graphify-root$_tests_test_kakao_matrix_testasyncprefetch_test_aprefetch_deduplicates_bidirectional", "callee": "object", "is_member_call": true, "source_file": "tests/test_kakao_matrix.py", "source_location": "L256", "receiver": "patch"}, {"caller_nid": "$graphify-root$_tests_test_kakao_matrix_testasyncprefetch_test_aprefetch_deduplicates_bidirectional", "callee": "AsyncMock", "is_member_call": false, "source_file": "tests/test_kakao_matrix.py", "source_location": "L256", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_kakao_matrix_testasyncprefetch_test_aprefetch_deduplicates_bidirectional", "callee": "fake_acall", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_kakao_matrix.py", "source_location": "L256"}, {"caller_nid": "$graphify-root$_tests_test_kakao_matrix_testasyncprefetch_test_aprefetch_deduplicates_bidirectional", "callee": "run", "is_member_call": true, "source_file": "tests/test_kakao_matrix.py", "source_location": "L257", "receiver": "asyncio"}, {"caller_nid": "$graphify-root$_tests_test_kakao_matrix_testasyncprefetch_test_aprefetch_deduplicates_bidirectional", "callee": "aprefetch_matrix", "is_member_call": true, "source_file": "tests/test_kakao_matrix.py", "source_location": "L257", "receiver": "m"}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.31/cc736d76033e07fac230fbd5c99f992c33f3ad0a25c95689d7ab5a297a6b8940.json b/graphify-out/cache/ast/v0.9.31/cc736d76033e07fac230fbd5c99f992c33f3ad0a25c95689d7ab5a297a6b8940.json new file mode 100644 index 0000000..f097cd0 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.31/cc736d76033e07fac230fbd5c99f992c33f3ad0a25c95689d7ab5a297a6b8940.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_src_matrix_redis_matrix_py", "label": "redis_matrix.py", "file_type": "code", "source_file": "src/matrix/redis_matrix.py", "source_location": "L1"}, {"id": "$graphify-root$_src_matrix_redis_matrix_redistimematrix", "label": "RedisTimeMatrix", "file_type": "code", "source_file": "src/matrix/redis_matrix.py", "source_location": "L35", "_callable": true, "_callable_class": true}, {"id": "timematrix", "label": "TimeMatrix", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/src/matrix/redis_matrix.py"}, {"id": "$graphify-root$_src_matrix_redis_matrix_redistimematrix_init", "label": ".__init__()", "file_type": "code", "source_file": "src/matrix/redis_matrix.py", "source_location": "L43", "_callable": true}, {"id": "$graphify-root$_src_matrix_redis_matrix_redistimematrix_from_env", "label": ".from_env()", "file_type": "code", "source_file": "src/matrix/redis_matrix.py", "source_location": "L56", "_callable": true}, {"id": "path", "label": "Path", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/src/matrix/redis_matrix.py"}, {"id": "$graphify-root$_src_matrix_redis_matrix_redistimematrix_load_dotenv", "label": "._load_dotenv()", "file_type": "code", "source_file": "src/matrix/redis_matrix.py", "source_location": "L82", "_callable": true}, {"id": "$graphify-root$_src_matrix_redis_matrix_redistimematrix_get_travel_time", "label": ".get_travel_time()", "file_type": "code", "source_file": "src/matrix/redis_matrix.py", "source_location": "L92", "_callable": true}, {"id": "vrptwplace", "label": "VRPTWPlace", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/src/matrix/redis_matrix.py"}, {"id": "$graphify-root$_src_matrix_redis_matrix_redistimematrix_set_travel_time", "label": ".set_travel_time()", "file_type": "code", "source_file": "src/matrix/redis_matrix.py", "source_location": "L110", "_callable": true}, {"id": "$graphify-root$_src_matrix_redis_matrix_redistimematrix_make_key", "label": "._make_key()", "file_type": "code", "source_file": "src/matrix/redis_matrix.py", "source_location": "L130", "_callable": true}, {"id": "$graphify-root$_src_matrix_redis_matrix_redistimematrix_stats", "label": ".stats()", "file_type": "code", "source_file": "src/matrix/redis_matrix.py", "source_location": "L138", "_callable": true}, {"id": "$graphify-root$_src_matrix_redis_matrix_redistimematrix_is_available", "label": ".is_available()", "file_type": "code", "source_file": "src/matrix/redis_matrix.py", "source_location": "L142", "_callable": true}, {"id": "$graphify-root$_src_matrix_redis_matrix_rationale_1", "label": "Redis \uae30\ubc18 TimeMatrix \u2014 REDIS_URL \ud658\uacbd\ubcc0\uc218\ub85c \uc790\ub3d9 \ud65c\uc131\ud654. KakaoMobilityMatrix\uc758 drop-in \ub300\uccb4\uc7ac:\u2026", "file_type": "rationale", "source_file": "src/matrix/redis_matrix.py", "source_location": "L1"}, {"id": "$graphify-root$_src_matrix_redis_matrix_rationale_36", "label": "Redis \uae30\ubc18 TimeMatrix. redis-py\uac00 \uc124\uce58\ub418\uc5b4 \uc788\uace0 REDIS_URL\uc774 \uc720\ud6a8\ud560 \ub54c\ub9cc \ub3d9\uc791. get_travel_time\uc740\u2026", "file_type": "rationale", "source_file": "src/matrix/redis_matrix.py", "source_location": "L36"}, {"id": "$graphify-root$_src_matrix_redis_matrix_rationale_60", "label": "REDIS_URL \ud658\uacbd\ubcc0\uc218\uac00 \uc788\uc73c\uba74 \uc778\uc2a4\ud134\uc2a4 \ubc18\ud658, \uc5c6\uc73c\uba74 None.", "file_type": "rationale", "source_file": "src/matrix/redis_matrix.py", "source_location": "L60"}], "edges": [{"source": "$graphify-root$_src_matrix_redis_matrix_py", "target": "os", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "src/matrix/redis_matrix.py", "source_location": "L18", "weight": 1.0}, {"source": "$graphify-root$_src_matrix_redis_matrix_py", "target": "pathlib", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "src/matrix/redis_matrix.py", "source_location": "L19", "weight": 1.0}, {"source": "$graphify-root$_src_matrix_redis_matrix_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "src/matrix/redis_matrix.py", "source_location": "L20", "weight": 1.0}, {"source": "$graphify-root$_src_matrix_redis_matrix_py", "target": "src_data_models", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "src/matrix/redis_matrix.py", "source_location": "L22", "weight": 1.0}, {"source": "$graphify-root$_src_matrix_redis_matrix_py", "target": "src_validation_vrptw_engine", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "src/matrix/redis_matrix.py", "source_location": "L23", "weight": 1.0}, {"source": "$graphify-root$_src_matrix_redis_matrix_py", "target": "redis", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "src/matrix/redis_matrix.py", "source_location": "L26", "weight": 1.0, "local_alias": "_redis_lib"}, {"source": "$graphify-root$_src_matrix_redis_matrix_py", "target": "$graphify-root$_src_matrix_redis_matrix_redistimematrix", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/matrix/redis_matrix.py", "source_location": "L35", "weight": 1.0}, {"source": "$graphify-root$_src_matrix_redis_matrix_redistimematrix", "target": "timematrix", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "src/matrix/redis_matrix.py", "source_location": "L35", "weight": 1.0}, {"source": "$graphify-root$_src_matrix_redis_matrix_redistimematrix", "target": "$graphify-root$_src_matrix_redis_matrix_redistimematrix_init", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/matrix/redis_matrix.py", "source_location": "L43", "weight": 1.0}, {"source": "$graphify-root$_src_matrix_redis_matrix_redistimematrix", "target": "$graphify-root$_src_matrix_redis_matrix_redistimematrix_from_env", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/matrix/redis_matrix.py", "source_location": "L56", "weight": 1.0}, {"source": "$graphify-root$_src_matrix_redis_matrix_redistimematrix_from_env", "target": "path", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "src/matrix/redis_matrix.py", "source_location": "L56", "weight": 1.0}, {"source": "$graphify-root$_src_matrix_redis_matrix_redistimematrix", "target": "$graphify-root$_src_matrix_redis_matrix_redistimematrix_load_dotenv", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/matrix/redis_matrix.py", "source_location": "L82", "weight": 1.0}, {"source": "$graphify-root$_src_matrix_redis_matrix_redistimematrix_load_dotenv", "target": "path", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "src/matrix/redis_matrix.py", "source_location": "L82", "weight": 1.0}, {"source": "$graphify-root$_src_matrix_redis_matrix_redistimematrix", "target": "$graphify-root$_src_matrix_redis_matrix_redistimematrix_get_travel_time", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/matrix/redis_matrix.py", "source_location": "L92", "weight": 1.0}, {"source": "$graphify-root$_src_matrix_redis_matrix_redistimematrix_get_travel_time", "target": "vrptwplace", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "src/matrix/redis_matrix.py", "source_location": "L92", "weight": 1.0}, {"source": "$graphify-root$_src_matrix_redis_matrix_redistimematrix_get_travel_time", "target": "vrptwplace", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "src/matrix/redis_matrix.py", "source_location": "L92", "weight": 1.0}, {"source": "$graphify-root$_src_matrix_redis_matrix_redistimematrix", "target": "$graphify-root$_src_matrix_redis_matrix_redistimematrix_set_travel_time", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/matrix/redis_matrix.py", "source_location": "L110", "weight": 1.0}, {"source": "$graphify-root$_src_matrix_redis_matrix_redistimematrix_set_travel_time", "target": "vrptwplace", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "src/matrix/redis_matrix.py", "source_location": "L110", "weight": 1.0}, {"source": "$graphify-root$_src_matrix_redis_matrix_redistimematrix_set_travel_time", "target": "vrptwplace", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "src/matrix/redis_matrix.py", "source_location": "L110", "weight": 1.0}, {"source": "$graphify-root$_src_matrix_redis_matrix_redistimematrix", "target": "$graphify-root$_src_matrix_redis_matrix_redistimematrix_make_key", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/matrix/redis_matrix.py", "source_location": "L130", "weight": 1.0}, {"source": "$graphify-root$_src_matrix_redis_matrix_redistimematrix_make_key", "target": "vrptwplace", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "src/matrix/redis_matrix.py", "source_location": "L130", "weight": 1.0}, {"source": "$graphify-root$_src_matrix_redis_matrix_redistimematrix_make_key", "target": "vrptwplace", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "src/matrix/redis_matrix.py", "source_location": "L130", "weight": 1.0}, {"source": "$graphify-root$_src_matrix_redis_matrix_redistimematrix", "target": "$graphify-root$_src_matrix_redis_matrix_redistimematrix_stats", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/matrix/redis_matrix.py", "source_location": "L138", "weight": 1.0}, {"source": "$graphify-root$_src_matrix_redis_matrix_redistimematrix", "target": "$graphify-root$_src_matrix_redis_matrix_redistimematrix_is_available", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/matrix/redis_matrix.py", "source_location": "L142", "weight": 1.0}, {"source": "$graphify-root$_src_matrix_redis_matrix_redistimematrix_from_env", "target": "$graphify-root$_src_matrix_redis_matrix_redistimematrix_load_dotenv", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/matrix/redis_matrix.py", "source_location": "L62", "weight": 1.0}, {"source": "$graphify-root$_src_matrix_redis_matrix_redistimematrix_from_env", "target": "path", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/matrix/redis_matrix.py", "source_location": "L62", "weight": 1.0}, {"source": "$graphify-root$_src_matrix_redis_matrix_redistimematrix_get_travel_time", "target": "$graphify-root$_src_matrix_redis_matrix_redistimematrix_make_key", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/matrix/redis_matrix.py", "source_location": "L96", "weight": 1.0}, {"source": "$graphify-root$_src_matrix_redis_matrix_redistimematrix_set_travel_time", "target": "$graphify-root$_src_matrix_redis_matrix_redistimematrix_make_key", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/matrix/redis_matrix.py", "source_location": "L118", "weight": 1.0}, {"source": "$graphify-root$_src_matrix_redis_matrix_rationale_1", "target": "$graphify-root$_src_matrix_redis_matrix_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/matrix/redis_matrix.py", "source_location": "L1", "weight": 1.0}, {"source": "$graphify-root$_src_matrix_redis_matrix_rationale_36", "target": "$graphify-root$_src_matrix_redis_matrix_redistimematrix", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/matrix/redis_matrix.py", "source_location": "L36", "weight": 1.0}, {"source": "$graphify-root$_src_matrix_redis_matrix_rationale_60", "target": "$graphify-root$_src_matrix_redis_matrix_redistimematrix_from_env", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/matrix/redis_matrix.py", "source_location": "L60", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_src_matrix_redis_matrix_redistimematrix_init", "callee": "RuntimeError", "is_member_call": false, "source_file": "src/matrix/redis_matrix.py", "source_location": "L45", "receiver": null}, {"caller_nid": "$graphify-root$_src_matrix_redis_matrix_redistimematrix_init", "callee": "from_url", "is_member_call": true, "source_file": "src/matrix/redis_matrix.py", "source_location": "L48", "receiver": "_redis_lib"}, {"caller_nid": "$graphify-root$_src_matrix_redis_matrix_redistimematrix_init", "callee": "HaversineMatrix", "is_member_call": false, "source_file": "src/matrix/redis_matrix.py", "source_location": "L49", "receiver": null}, {"caller_nid": "$graphify-root$_src_matrix_redis_matrix_redistimematrix_from_env", "callee": "resolve", "is_member_call": true, "source_file": "src/matrix/redis_matrix.py", "source_location": "L64", "receiver": null}, {"caller_nid": "$graphify-root$_src_matrix_redis_matrix_redistimematrix_from_env", "callee": "__file__", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "src/matrix/redis_matrix.py", "source_location": "L64"}, {"caller_nid": "$graphify-root$_src_matrix_redis_matrix_redistimematrix_from_env", "callee": "exists", "is_member_call": true, "source_file": "src/matrix/redis_matrix.py", "source_location": "L66", "receiver": "env_default"}, {"caller_nid": "$graphify-root$_src_matrix_redis_matrix_redistimematrix_from_env", "callee": "strip", "is_member_call": true, "source_file": "src/matrix/redis_matrix.py", "source_location": "L69", "receiver": null}, {"caller_nid": "$graphify-root$_src_matrix_redis_matrix_redistimematrix_from_env", "callee": "get", "is_member_call": true, "source_file": "src/matrix/redis_matrix.py", "source_location": "L69", "receiver": null}, {"caller_nid": "$graphify-root$_src_matrix_redis_matrix_redistimematrix_from_env", "callee": "cls", "is_member_call": false, "source_file": "src/matrix/redis_matrix.py", "source_location": "L75", "receiver": null}, {"caller_nid": "$graphify-root$_src_matrix_redis_matrix_redistimematrix_from_env", "callee": "ping", "is_member_call": true, "source_file": "src/matrix/redis_matrix.py", "source_location": "L76", "receiver": null}, {"caller_nid": "$graphify-root$_src_matrix_redis_matrix_redistimematrix_load_dotenv", "callee": "exists", "is_member_call": true, "source_file": "src/matrix/redis_matrix.py", "source_location": "L83", "receiver": "env_path"}, {"caller_nid": "$graphify-root$_src_matrix_redis_matrix_redistimematrix_load_dotenv", "callee": "splitlines", "is_member_call": true, "source_file": "src/matrix/redis_matrix.py", "source_location": "L85", "receiver": null}, {"caller_nid": "$graphify-root$_src_matrix_redis_matrix_redistimematrix_load_dotenv", "callee": "read_text", "is_member_call": true, "source_file": "src/matrix/redis_matrix.py", "source_location": "L85", "receiver": "env_path"}, {"caller_nid": "$graphify-root$_src_matrix_redis_matrix_redistimematrix_load_dotenv", "callee": "strip", "is_member_call": true, "source_file": "src/matrix/redis_matrix.py", "source_location": "L86", "receiver": "line"}, {"caller_nid": "$graphify-root$_src_matrix_redis_matrix_redistimematrix_load_dotenv", "callee": "startswith", "is_member_call": true, "source_file": "src/matrix/redis_matrix.py", "source_location": "L87", "receiver": "line"}, {"caller_nid": "$graphify-root$_src_matrix_redis_matrix_redistimematrix_load_dotenv", "callee": "partition", "is_member_call": true, "source_file": "src/matrix/redis_matrix.py", "source_location": "L88", "receiver": "line"}, {"caller_nid": "$graphify-root$_src_matrix_redis_matrix_redistimematrix_load_dotenv", "callee": "setdefault", "is_member_call": true, "source_file": "src/matrix/redis_matrix.py", "source_location": "L89", "receiver": null}, {"caller_nid": "$graphify-root$_src_matrix_redis_matrix_redistimematrix_load_dotenv", "callee": "strip", "is_member_call": true, "source_file": "src/matrix/redis_matrix.py", "source_location": "L89", "receiver": "k"}, {"caller_nid": "$graphify-root$_src_matrix_redis_matrix_redistimematrix_load_dotenv", "callee": "strip", "is_member_call": true, "source_file": "src/matrix/redis_matrix.py", "source_location": "L89", "receiver": "v"}, {"caller_nid": "$graphify-root$_src_matrix_redis_matrix_redistimematrix_get_travel_time", "callee": "get", "is_member_call": true, "source_file": "src/matrix/redis_matrix.py", "source_location": "L100", "receiver": null}, {"caller_nid": "$graphify-root$_src_matrix_redis_matrix_redistimematrix_get_travel_time", "callee": "get", "is_member_call": true, "source_file": "src/matrix/redis_matrix.py", "source_location": "L100", "receiver": null}, {"caller_nid": "$graphify-root$_src_matrix_redis_matrix_redistimematrix_is_available", "callee": "ping", "is_member_call": true, "source_file": "src/matrix/redis_matrix.py", "source_location": "L144", "receiver": null}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.31/cdd822b431df58c4227138afaee87957fd97fad329839c82e40657ca255f04fd.json b/graphify-out/cache/ast/v0.9.31/cdd822b431df58c4227138afaee87957fd97fad329839c82e40657ca255f04fd.json new file mode 100644 index 0000000..90b472f --- /dev/null +++ b/graphify-out/cache/ast/v0.9.31/cdd822b431df58c4227138afaee87957fd97fad329839c82e40657ca255f04fd.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_src_utils_geo_py", "label": "geo.py", "file_type": "code", "source_file": "src/utils/geo.py", "source_location": "L1"}, {"id": "$graphify-root$_src_utils_geo_haversine_km", "label": "haversine_km()", "file_type": "code", "source_file": "src/utils/geo.py", "source_location": "L10", "_callable": true}, {"id": "$graphify-root$_src_utils_geo_build_dist_cache", "label": "build_dist_cache()", "file_type": "code", "source_file": "src/utils/geo.py", "source_location": "L20", "_callable": true}, {"id": "$graphify-root$_src_utils_geo_nn_heuristic_km", "label": "nn_heuristic_km()", "file_type": "code", "source_file": "src/utils/geo.py", "source_location": "L36", "_callable": true}, {"id": "$graphify-root$_src_utils_geo_get_travel_min", "label": "get_travel_min()", "file_type": "code", "source_file": "src/utils/geo.py", "source_location": "L72", "_callable": true}, {"id": "$graphify-root$_src_utils_geo_rationale_1", "label": "\uacf5\uc720 \uc9c0\ub9ac \uacc4\uc0b0 \uc720\ud2f8\ub9ac\ud2f0 \u2014 Haversine, NN \ud734\ub9ac\uc2a4\ud2f1, \uc774\ub3d9\uc2dc\uac04 \uc870\ud68c.", "file_type": "rationale", "source_file": "src/utils/geo.py", "source_location": "L1"}, {"id": "$graphify-root$_src_utils_geo_rationale_11", "label": "\ub450 \uc88c\ud45c \uc0ac\uc774\uc758 Haversine \uc9c1\uc120 \uac70\ub9ac(km).", "file_type": "rationale", "source_file": "src/utils/geo.py", "source_location": "L11"}, {"id": "$graphify-root$_src_utils_geo_rationale_21", "label": "POI \ub9ac\uc2a4\ud2b8\uc758 \ubaa8\ub4e0 (i, j) \uc30d Haversine \uac70\ub9ac(km)\ub97c \ud55c \ubc88\uc5d0 \uacc4\uc0b0\ud574 \ubc18\ud658. \uc774 \uce90\uc2dc\ub97c nn_heuristic_km /\u2026", "file_type": "rationale", "source_file": "src/utils/geo.py", "source_location": "L21"}, {"id": "$graphify-root$_src_utils_geo_rationale_40", "label": "\ucd5c\uadfc\uc811 \uc774\uc6c3 \ud734\ub9ac\uc2a4\ud2f1\uc73c\ub85c \ucd94\uc815\ud55c \ucd5c\uc18c \uc21c\ud68c \uac70\ub9ac(km). dist_cache \ub97c \ub118\uae30\uba74 Haversine \uc7ac\uacc4\uc0b0 \uc5c6\uc774 \uc870\ud68c\ud55c\ub2e4.", "file_type": "rationale", "source_file": "src/utils/geo.py", "source_location": "L40"}, {"id": "$graphify-root$_src_utils_geo_rationale_80", "label": "matrix[i][j]['travel_min'] \uc870\ud68c, \uc5c6\uc73c\uba74 Haversine \ud3f4\ubc31(\ubd84). dist_cache \ub97c \ub118\uae30\uba74 \ud3f4\ubc31 \uc2dc \uc7ac\uacc4\uc0b0\u2026", "file_type": "rationale", "source_file": "src/utils/geo.py", "source_location": "L80"}], "edges": [{"source": "$graphify-root$_src_utils_geo_py", "target": "math", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "src/utils/geo.py", "source_location": "L4", "weight": 1.0}, {"source": "$graphify-root$_src_utils_geo_py", "target": "$graphify-root$_src_utils_geo_haversine_km", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/utils/geo.py", "source_location": "L10", "weight": 1.0}, {"source": "$graphify-root$_src_utils_geo_py", "target": "$graphify-root$_src_utils_geo_build_dist_cache", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/utils/geo.py", "source_location": "L20", "weight": 1.0}, {"source": "$graphify-root$_src_utils_geo_py", "target": "$graphify-root$_src_utils_geo_nn_heuristic_km", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/utils/geo.py", "source_location": "L36", "weight": 1.0}, {"source": "$graphify-root$_src_utils_geo_py", "target": "$graphify-root$_src_utils_geo_get_travel_min", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/utils/geo.py", "source_location": "L72", "weight": 1.0}, {"source": "$graphify-root$_src_utils_geo_build_dist_cache", "target": "$graphify-root$_src_utils_geo_haversine_km", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/utils/geo.py", "source_location": "L30", "weight": 1.0}, {"source": "$graphify-root$_src_utils_geo_nn_heuristic_km", "target": "$graphify-root$_src_utils_geo_haversine_km", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/utils/geo.py", "source_location": "L57", "weight": 1.0}, {"source": "$graphify-root$_src_utils_geo_get_travel_min", "target": "$graphify-root$_src_utils_geo_haversine_km", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/utils/geo.py", "source_location": "L89", "weight": 1.0}, {"source": "$graphify-root$_src_utils_geo_rationale_1", "target": "$graphify-root$_src_utils_geo_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/utils/geo.py", "source_location": "L1", "weight": 1.0}, {"source": "$graphify-root$_src_utils_geo_rationale_11", "target": "$graphify-root$_src_utils_geo_haversine_km", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/utils/geo.py", "source_location": "L11", "weight": 1.0}, {"source": "$graphify-root$_src_utils_geo_rationale_21", "target": "$graphify-root$_src_utils_geo_build_dist_cache", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/utils/geo.py", "source_location": "L21", "weight": 1.0}, {"source": "$graphify-root$_src_utils_geo_rationale_40", "target": "$graphify-root$_src_utils_geo_nn_heuristic_km", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/utils/geo.py", "source_location": "L40", "weight": 1.0}, {"source": "$graphify-root$_src_utils_geo_rationale_80", "target": "$graphify-root$_src_utils_geo_get_travel_min", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/utils/geo.py", "source_location": "L80", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_src_utils_geo_haversine_km", "callee": "radians", "is_member_call": true, "source_file": "src/utils/geo.py", "source_location": "L12", "receiver": "math"}, {"caller_nid": "$graphify-root$_src_utils_geo_haversine_km", "callee": "radians", "is_member_call": true, "source_file": "src/utils/geo.py", "source_location": "L13", "receiver": "math"}, {"caller_nid": "$graphify-root$_src_utils_geo_haversine_km", "callee": "radians", "is_member_call": true, "source_file": "src/utils/geo.py", "source_location": "L14", "receiver": "math"}, {"caller_nid": "$graphify-root$_src_utils_geo_haversine_km", "callee": "radians", "is_member_call": true, "source_file": "src/utils/geo.py", "source_location": "L15", "receiver": "math"}, {"caller_nid": "$graphify-root$_src_utils_geo_haversine_km", "callee": "sin", "is_member_call": true, "source_file": "src/utils/geo.py", "source_location": "L16", "receiver": "math"}, {"caller_nid": "$graphify-root$_src_utils_geo_haversine_km", "callee": "cos", "is_member_call": true, "source_file": "src/utils/geo.py", "source_location": "L16", "receiver": "math"}, {"caller_nid": "$graphify-root$_src_utils_geo_haversine_km", "callee": "cos", "is_member_call": true, "source_file": "src/utils/geo.py", "source_location": "L16", "receiver": "math"}, {"caller_nid": "$graphify-root$_src_utils_geo_haversine_km", "callee": "sin", "is_member_call": true, "source_file": "src/utils/geo.py", "source_location": "L16", "receiver": "math"}, {"caller_nid": "$graphify-root$_src_utils_geo_haversine_km", "callee": "asin", "is_member_call": true, "source_file": "src/utils/geo.py", "source_location": "L17", "receiver": "math"}, {"caller_nid": "$graphify-root$_src_utils_geo_haversine_km", "callee": "sqrt", "is_member_call": true, "source_file": "src/utils/geo.py", "source_location": "L17", "receiver": "math"}, {"caller_nid": "$graphify-root$_src_utils_geo_nn_heuristic_km", "callee": "add", "is_member_call": true, "source_file": "src/utils/geo.py", "source_location": "L67", "receiver": "visited"}, {"caller_nid": "$graphify-root$_src_utils_geo_get_travel_min", "callee": "get", "is_member_call": true, "source_file": "src/utils/geo.py", "source_location": "L84", "receiver": null}, {"caller_nid": "$graphify-root$_src_utils_geo_get_travel_min", "callee": "get", "is_member_call": true, "source_file": "src/utils/geo.py", "source_location": "L84", "receiver": "matrix"}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.31/ce4f4206546db46e7aaaf2dd45659f5f585f86f2b43888646fda099d9bf1adb5.json b/graphify-out/cache/ast/v0.9.31/ce4f4206546db46e7aaaf2dd45659f5f585f86f2b43888646fda099d9bf1adb5.json new file mode 100644 index 0000000..1d7a7de --- /dev/null +++ b/graphify-out/cache/ast/v0.9.31/ce4f4206546db46e7aaaf2dd45659f5f585f86f2b43888646fda099d9bf1adb5.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_src_matrix_init_py", "label": "__init__.py", "file_type": "code", "source_file": "src/matrix/__init__.py", "source_location": "L1"}, {"id": "$graphify-root$_src_matrix_init_rationale_1", "label": "matrix \u2014 \uc774\ub3d9\uc2dc\uac04 \ud589\ub82c \uad6c\ud604\uccb4 \ud328\ud0a4\uc9c0.", "file_type": "rationale", "source_file": "src/matrix/__init__.py", "source_location": "L1"}], "edges": [{"source": "$graphify-root$_src_matrix_init_py", "target": "src_matrix_redis_matrix", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "src/matrix/__init__.py", "source_location": "L2", "weight": 1.0}, {"source": "$graphify-root$_src_matrix_init_rationale_1", "target": "$graphify-root$_src_matrix_init_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/matrix/__init__.py", "source_location": "L1", "weight": 1.0}], "raw_calls": []} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.31/cfcc66c4b0c6cdc64b680f4732791cca779f9666d52f94581cf457b821c9ef8a.json b/graphify-out/cache/ast/v0.9.31/cfcc66c4b0c6cdc64b680f4732791cca779f9666d52f94581cf457b821c9ef8a.json new file mode 100644 index 0000000..a4809ee --- /dev/null +++ b/graphify-out/cache/ast/v0.9.31/cfcc66c4b0c6cdc64b680f4732791cca779f9666d52f94581cf457b821c9ef8a.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_src_api_init_py", "label": "__init__.py", "file_type": "code", "source_file": "src/api/__init__.py", "source_location": "L1"}], "edges": [], "raw_calls": []} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.31/d28e1c146ae48649d1ee4632184814b817efc9f4c39cbc4d6f87ac1b903318dd.json b/graphify-out/cache/ast/v0.9.31/d28e1c146ae48649d1ee4632184814b817efc9f4c39cbc4d6f87ac1b903318dd.json new file mode 100644 index 0000000..982d6d3 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.31/d28e1c146ae48649d1ee4632184814b817efc9f4c39cbc4d6f87ac1b903318dd.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_src_validation_init_py", "label": "__init__.py", "file_type": "code", "source_file": "src/validation/__init__.py", "source_location": "L1"}], "edges": [], "raw_calls": []} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.31/d879a3ae59268bc118f5e88cc666fecbcde6a6be901dbd05cb5306830eaaf534.json b/graphify-out/cache/ast/v0.9.31/d879a3ae59268bc118f5e88cc666fecbcde6a6be901dbd05cb5306830eaaf534.json new file mode 100644 index 0000000..e9c9e3f --- /dev/null +++ b/graphify-out/cache/ast/v0.9.31/d879a3ae59268bc118f5e88cc666fecbcde6a6be901dbd05cb5306830eaaf534.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_src_scoring_theme_alignment_py", "label": "theme_alignment.py", "file_type": "code", "source_file": "src/scoring/theme_alignment.py", "source_location": "L1"}, {"id": "$graphify-root$_src_scoring_theme_alignment_poiwithcategory", "label": "POIWithCategory", "file_type": "code", "source_file": "src/scoring/theme_alignment.py", "source_location": "L68", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_src_scoring_theme_alignment_themejudgment", "label": "ThemeJudgment", "file_type": "code", "source_file": "src/scoring/theme_alignment.py", "source_location": "L77", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_src_scoring_theme_alignment_themealignmentreport", "label": "ThemeAlignmentReport", "file_type": "code", "source_file": "src/scoring/theme_alignment.py", "source_location": "L86", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_src_scoring_theme_alignment_cache_key", "label": "_cache_key()", "file_type": "code", "source_file": "src/scoring/theme_alignment.py", "source_location": "L96", "_callable": true}, {"id": "userpreferences", "label": "UserPreferences", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/src/scoring/theme_alignment.py"}, {"id": "$graphify-root$_src_scoring_theme_alignment_build_user_prompt", "label": "_build_user_prompt()", "file_type": "code", "source_file": "src/scoring/theme_alignment.py", "source_location": "L107", "_callable": true}, {"id": "$graphify-root$_src_scoring_theme_alignment_classify_score", "label": "_classify_score()", "file_type": "code", "source_file": "src/scoring/theme_alignment.py", "source_location": "L132", "_callable": true}, {"id": "$graphify-root$_src_scoring_theme_alignment_parse_llm_response", "label": "_parse_llm_response()", "file_type": "code", "source_file": "src/scoring/theme_alignment.py", "source_location": "L143", "_callable": true}, {"id": "$graphify-root$_src_scoring_theme_alignment_themealignmentjudge", "label": "ThemeAlignmentJudge", "file_type": "code", "source_file": "src/scoring/theme_alignment.py", "source_location": "L163", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_src_scoring_theme_alignment_themealignmentjudge_init", "label": ".__init__()", "file_type": "code", "source_file": "src/scoring/theme_alignment.py", "source_location": "L171", "_callable": true}, {"id": "any", "label": "Any", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/src/scoring/theme_alignment.py"}, {"id": "$graphify-root$_src_scoring_theme_alignment_themealignmentjudge_is_available", "label": ".is_available()", "file_type": "code", "source_file": "src/scoring/theme_alignment.py", "source_location": "L187", "_callable": true}, {"id": "$graphify-root$_src_scoring_theme_alignment_themealignmentjudge_evaluate", "label": ".evaluate()", "file_type": "code", "source_file": "src/scoring/theme_alignment.py", "source_location": "L191", "_callable": true}, {"id": "$graphify-root$_src_scoring_theme_alignment_themealignmentjudge_call_llm", "label": "._call_llm()", "file_type": "code", "source_file": "src/scoring/theme_alignment.py", "source_location": "L261", "_callable": true}, {"id": "$graphify-root$_src_scoring_theme_alignment_rationale_1", "label": "\ud14c\ub9c8 \uc77c\uce58\uc131 LLM \ud310\uc815 (\ubaa8\ub4c8 \u2466) \u2014 Anthropic Claude API \uae30\ubc18. \uc694\uad6c\uc0ac\ud56d: \uc0ac\uc6a9\uc790\uac00 \uc120\ud0dd\ud55c \ud14c\ub9c8(\uc608: \uc561\ud2f0\ube44\ud2f0)\uc640 \uc77c\uc815\u2026", "file_type": "rationale", "source_file": "src/scoring/theme_alignment.py", "source_location": "L1"}, {"id": "$graphify-root$_src_scoring_theme_alignment_rationale_69", "label": "LLM\uc5d0\uac8c \uc804\ub2ec\ud560 POI \uc815\ubcf4 (\uce74\ud14c\uace0\ub9ac \uba85 \ud3ec\ud568).", "file_type": "rationale", "source_file": "src/scoring/theme_alignment.py", "source_location": "L69"}, {"id": "$graphify-root$_src_scoring_theme_alignment_rationale_97", "label": "\uce90\uc2dc \ud0a4: \ud14c\ub9c8 + \uc815\ub82c\ub41c \uc7a5\uc18c\uba85 \ud574\uc2dc.", "file_type": "rationale", "source_file": "src/scoring/theme_alignment.py", "source_location": "L97"}, {"id": "$graphify-root$_src_scoring_theme_alignment_rationale_111", "label": "LLM\uc5d0\uac8c \uc804\ub2ec\ud560 user \uba54\uc2dc\uc9c0 \uad6c\uc131.", "file_type": "rationale", "source_file": "src/scoring/theme_alignment.py", "source_location": "L111"}, {"id": "$graphify-root$_src_scoring_theme_alignment_rationale_133", "label": "\uc77c\uce58\ub3c4 \uc810\uc218 \u2192 (\ud328\ub110\ud2f0, risk_label).", "file_type": "rationale", "source_file": "src/scoring/theme_alignment.py", "source_location": "L133"}, {"id": "$graphify-root$_src_scoring_theme_alignment_rationale_144", "label": "Claude \uc751\ub2f5 \ud14d\uc2a4\ud2b8\uc5d0\uc11c JSON \ucd94\ucd9c.", "file_type": "rationale", "source_file": "src/scoring/theme_alignment.py", "source_location": "L144"}, {"id": "$graphify-root$_src_scoring_theme_alignment_rationale_164", "label": "LLM \uae30\ubc18 \ud14c\ub9c8 \uc77c\uce58\uc131 \ud310\uc815\uae30. \uc0ac\uc6a9 \uc608: judge = ThemeAlignmentJudge() # ANTHROPIC_API_KEY \uc790\ub3d9\u2026", "file_type": "rationale", "source_file": "src/scoring/theme_alignment.py", "source_location": "L164"}, {"id": "$graphify-root$_src_scoring_theme_alignment_rationale_188", "label": "LLM \ud638\ucd9c \uac00\ub2a5 \uc5ec\ubd80 (SDK + \ud0a4 + \ud074\ub77c\uc774\uc5b8\ud2b8 \ubaa8\ub450 \uc900\ube44\ub41c \uacbd\uc6b0 True).", "file_type": "rationale", "source_file": "src/scoring/theme_alignment.py", "source_location": "L188"}], "edges": [{"source": "$graphify-root$_src_scoring_theme_alignment_py", "target": "hashlib", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "src/scoring/theme_alignment.py", "source_location": "L15", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_theme_alignment_py", "target": "json", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "src/scoring/theme_alignment.py", "source_location": "L16", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_theme_alignment_py", "target": "os", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "src/scoring/theme_alignment.py", "source_location": "L17", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_theme_alignment_py", "target": "dataclasses", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "src/scoring/theme_alignment.py", "source_location": "L18", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_theme_alignment_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "src/scoring/theme_alignment.py", "source_location": "L19", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_theme_alignment_py", "target": "src_data_models", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "src/scoring/theme_alignment.py", "source_location": "L21", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_theme_alignment_py", "target": "src_data_theme_taxonomy", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "src/scoring/theme_alignment.py", "source_location": "L22", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_theme_alignment_py", "target": "anthropic", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "src/scoring/theme_alignment.py", "source_location": "L26", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_theme_alignment_py", "target": "$graphify-root$_src_scoring_theme_alignment_poiwithcategory", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/scoring/theme_alignment.py", "source_location": "L68", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_theme_alignment_py", "target": "$graphify-root$_src_scoring_theme_alignment_themejudgment", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/scoring/theme_alignment.py", "source_location": "L77", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_theme_alignment_py", "target": "$graphify-root$_src_scoring_theme_alignment_themealignmentreport", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/scoring/theme_alignment.py", "source_location": "L86", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_theme_alignment_py", "target": "$graphify-root$_src_scoring_theme_alignment_cache_key", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/scoring/theme_alignment.py", "source_location": "L96", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_theme_alignment_cache_key", "target": "userpreferences", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "src/scoring/theme_alignment.py", "source_location": "L96", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_theme_alignment_cache_key", "target": "$graphify-root$_src_scoring_theme_alignment_poiwithcategory", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "src/scoring/theme_alignment.py", "source_location": "L96", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_theme_alignment_py", "target": "$graphify-root$_src_scoring_theme_alignment_build_user_prompt", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/scoring/theme_alignment.py", "source_location": "L107", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_theme_alignment_build_user_prompt", "target": "userpreferences", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "src/scoring/theme_alignment.py", "source_location": "L107", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_theme_alignment_build_user_prompt", "target": "$graphify-root$_src_scoring_theme_alignment_poiwithcategory", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "src/scoring/theme_alignment.py", "source_location": "L107", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_theme_alignment_py", "target": "$graphify-root$_src_scoring_theme_alignment_classify_score", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/scoring/theme_alignment.py", "source_location": "L132", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_theme_alignment_py", "target": "$graphify-root$_src_scoring_theme_alignment_parse_llm_response", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/scoring/theme_alignment.py", "source_location": "L143", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_theme_alignment_parse_llm_response", "target": "$graphify-root$_src_scoring_theme_alignment_themejudgment", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "src/scoring/theme_alignment.py", "source_location": "L143", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_theme_alignment_py", "target": "$graphify-root$_src_scoring_theme_alignment_themealignmentjudge", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/scoring/theme_alignment.py", "source_location": "L163", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_theme_alignment_themealignmentjudge", "target": "$graphify-root$_src_scoring_theme_alignment_themealignmentjudge_init", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/scoring/theme_alignment.py", "source_location": "L171", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_theme_alignment_themealignmentjudge_init", "target": "any", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "src/scoring/theme_alignment.py", "source_location": "L171", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_theme_alignment_themealignmentjudge", "target": "$graphify-root$_src_scoring_theme_alignment_themealignmentjudge_is_available", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/scoring/theme_alignment.py", "source_location": "L187", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_theme_alignment_themealignmentjudge", "target": "$graphify-root$_src_scoring_theme_alignment_themealignmentjudge_evaluate", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/scoring/theme_alignment.py", "source_location": "L191", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_theme_alignment_themealignmentjudge_evaluate", "target": "userpreferences", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "src/scoring/theme_alignment.py", "source_location": "L191", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_theme_alignment_themealignmentjudge_evaluate", "target": "$graphify-root$_src_scoring_theme_alignment_poiwithcategory", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "src/scoring/theme_alignment.py", "source_location": "L191", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_theme_alignment_themealignmentjudge_evaluate", "target": "$graphify-root$_src_scoring_theme_alignment_themealignmentreport", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "src/scoring/theme_alignment.py", "source_location": "L191", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_theme_alignment_themealignmentjudge", "target": "$graphify-root$_src_scoring_theme_alignment_themealignmentjudge_call_llm", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/scoring/theme_alignment.py", "source_location": "L261", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_theme_alignment_themealignmentjudge_call_llm", "target": "userpreferences", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "src/scoring/theme_alignment.py", "source_location": "L261", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_theme_alignment_themealignmentjudge_call_llm", "target": "$graphify-root$_src_scoring_theme_alignment_poiwithcategory", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "src/scoring/theme_alignment.py", "source_location": "L261", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_theme_alignment_themealignmentjudge_call_llm", "target": "$graphify-root$_src_scoring_theme_alignment_themejudgment", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "src/scoring/theme_alignment.py", "source_location": "L261", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_theme_alignment_parse_llm_response", "target": "$graphify-root$_src_scoring_theme_alignment_themejudgment", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/scoring/theme_alignment.py", "source_location": "L155", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_theme_alignment_themealignmentjudge_evaluate", "target": "$graphify-root$_src_scoring_theme_alignment_themealignmentjudge_is_available", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/scoring/theme_alignment.py", "source_location": "L198", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_theme_alignment_themealignmentjudge_evaluate", "target": "$graphify-root$_src_scoring_theme_alignment_themealignmentreport", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/scoring/theme_alignment.py", "source_location": "L203", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_theme_alignment_themealignmentjudge_evaluate", "target": "$graphify-root$_src_scoring_theme_alignment_cache_key", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/scoring/theme_alignment.py", "source_location": "L215", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_theme_alignment_themealignmentjudge_evaluate", "target": "$graphify-root$_src_scoring_theme_alignment_themealignmentjudge_call_llm", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/scoring/theme_alignment.py", "source_location": "L220", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_theme_alignment_themealignmentjudge_evaluate", "target": "$graphify-root$_src_scoring_theme_alignment_classify_score", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/scoring/theme_alignment.py", "source_location": "L235", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_theme_alignment_themealignmentjudge_call_llm", "target": "$graphify-root$_src_scoring_theme_alignment_build_user_prompt", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/scoring/theme_alignment.py", "source_location": "L267", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_theme_alignment_themealignmentjudge_call_llm", "target": "$graphify-root$_src_scoring_theme_alignment_parse_llm_response", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/scoring/theme_alignment.py", "source_location": "L285", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_theme_alignment_rationale_1", "target": "$graphify-root$_src_scoring_theme_alignment_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/scoring/theme_alignment.py", "source_location": "L1", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_theme_alignment_rationale_69", "target": "$graphify-root$_src_scoring_theme_alignment_poiwithcategory", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/scoring/theme_alignment.py", "source_location": "L69", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_theme_alignment_rationale_97", "target": "$graphify-root$_src_scoring_theme_alignment_cache_key", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/scoring/theme_alignment.py", "source_location": "L97", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_theme_alignment_rationale_111", "target": "$graphify-root$_src_scoring_theme_alignment_build_user_prompt", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/scoring/theme_alignment.py", "source_location": "L111", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_theme_alignment_rationale_133", "target": "$graphify-root$_src_scoring_theme_alignment_classify_score", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/scoring/theme_alignment.py", "source_location": "L133", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_theme_alignment_rationale_144", "target": "$graphify-root$_src_scoring_theme_alignment_parse_llm_response", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/scoring/theme_alignment.py", "source_location": "L144", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_theme_alignment_rationale_164", "target": "$graphify-root$_src_scoring_theme_alignment_themealignmentjudge", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/scoring/theme_alignment.py", "source_location": "L164", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_theme_alignment_rationale_188", "target": "$graphify-root$_src_scoring_theme_alignment_themealignmentjudge_is_available", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/scoring/theme_alignment.py", "source_location": "L188", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_src_scoring_theme_alignment_cache_key", "callee": "dumps", "is_member_call": true, "source_file": "src/scoring/theme_alignment.py", "source_location": "L103", "receiver": "json"}, {"caller_nid": "$graphify-root$_src_scoring_theme_alignment_cache_key", "callee": "hexdigest", "is_member_call": true, "source_file": "src/scoring/theme_alignment.py", "source_location": "L104", "receiver": null}, {"caller_nid": "$graphify-root$_src_scoring_theme_alignment_cache_key", "callee": "md5", "is_member_call": true, "source_file": "src/scoring/theme_alignment.py", "source_location": "L104", "receiver": "hashlib"}, {"caller_nid": "$graphify-root$_src_scoring_theme_alignment_cache_key", "callee": "encode", "is_member_call": true, "source_file": "src/scoring/theme_alignment.py", "source_location": "L104", "receiver": "raw"}, {"caller_nid": "$graphify-root$_src_scoring_theme_alignment_build_user_prompt", "callee": "get", "is_member_call": true, "source_file": "src/scoring/theme_alignment.py", "source_location": "L114", "receiver": "TRAVEL_STYLE_DESCRIPTIONS"}, {"caller_nid": "$graphify-root$_src_scoring_theme_alignment_build_user_prompt", "callee": "append", "is_member_call": true, "source_file": "src/scoring/theme_alignment.py", "source_location": "L115", "receiver": "style_lines"}, {"caller_nid": "$graphify-root$_src_scoring_theme_alignment_build_user_prompt", "callee": "append", "is_member_call": true, "source_file": "src/scoring/theme_alignment.py", "source_location": "L121", "receiver": "place_lines"}, {"caller_nid": "$graphify-root$_src_scoring_theme_alignment_build_user_prompt", "callee": "join", "is_member_call": true, "source_file": "src/scoring/theme_alignment.py", "source_location": "L125", "receiver": null}, {"caller_nid": "$graphify-root$_src_scoring_theme_alignment_build_user_prompt", "callee": "join", "is_member_call": true, "source_file": "src/scoring/theme_alignment.py", "source_location": "L126", "receiver": null}, {"caller_nid": "$graphify-root$_src_scoring_theme_alignment_build_user_prompt", "callee": "join", "is_member_call": true, "source_file": "src/scoring/theme_alignment.py", "source_location": "L127", "receiver": null}, {"caller_nid": "$graphify-root$_src_scoring_theme_alignment_classify_score", "callee": "PENALTY_CRIT", "is_member_call": false, "indirect": true, "context": "return", "source_file": "src/scoring/theme_alignment.py", "source_location": "L135"}, {"caller_nid": "$graphify-root$_src_scoring_theme_alignment_classify_score", "callee": "PENALTY_RISK", "is_member_call": false, "indirect": true, "context": "return", "source_file": "src/scoring/theme_alignment.py", "source_location": "L137"}, {"caller_nid": "$graphify-root$_src_scoring_theme_alignment_classify_score", "callee": "PENALTY_WARN", "is_member_call": false, "indirect": true, "context": "return", "source_file": "src/scoring/theme_alignment.py", "source_location": "L139"}, {"caller_nid": "$graphify-root$_src_scoring_theme_alignment_parse_llm_response", "callee": "strip", "is_member_call": true, "source_file": "src/scoring/theme_alignment.py", "source_location": "L146", "receiver": "raw_text"}, {"caller_nid": "$graphify-root$_src_scoring_theme_alignment_parse_llm_response", "callee": "startswith", "is_member_call": true, "source_file": "src/scoring/theme_alignment.py", "source_location": "L147", "receiver": "text"}, {"caller_nid": "$graphify-root$_src_scoring_theme_alignment_parse_llm_response", "callee": "split", "is_member_call": true, "source_file": "src/scoring/theme_alignment.py", "source_location": "L149", "receiver": "text"}, {"caller_nid": "$graphify-root$_src_scoring_theme_alignment_parse_llm_response", "callee": "join", "is_member_call": true, "source_file": "src/scoring/theme_alignment.py", "source_location": "L150", "receiver": null}, {"caller_nid": "$graphify-root$_src_scoring_theme_alignment_parse_llm_response", "callee": "strip", "is_member_call": true, "source_file": "src/scoring/theme_alignment.py", "source_location": "L150", "receiver": null}, {"caller_nid": "$graphify-root$_src_scoring_theme_alignment_parse_llm_response", "callee": "loads", "is_member_call": true, "source_file": "src/scoring/theme_alignment.py", "source_location": "L152", "receiver": "json"}, {"caller_nid": "$graphify-root$_src_scoring_theme_alignment_parse_llm_response", "callee": "get", "is_member_call": true, "source_file": "src/scoring/theme_alignment.py", "source_location": "L153", "receiver": "data"}, {"caller_nid": "$graphify-root$_src_scoring_theme_alignment_parse_llm_response", "callee": "get", "is_member_call": true, "source_file": "src/scoring/theme_alignment.py", "source_location": "L157", "receiver": "data"}, {"caller_nid": "$graphify-root$_src_scoring_theme_alignment_parse_llm_response", "callee": "get", "is_member_call": true, "source_file": "src/scoring/theme_alignment.py", "source_location": "L158", "receiver": "data"}, {"caller_nid": "$graphify-root$_src_scoring_theme_alignment_themealignmentjudge_init", "callee": "get", "is_member_call": true, "source_file": "src/scoring/theme_alignment.py", "source_location": "L182", "receiver": null}, {"caller_nid": "$graphify-root$_src_scoring_theme_alignment_themealignmentjudge_init", "callee": "Anthropic", "is_member_call": true, "source_file": "src/scoring/theme_alignment.py", "source_location": "L185", "receiver": "anthropic"}, {"caller_nid": "$graphify-root$_src_scoring_theme_alignment_themealignmentjudge_evaluate", "callee": "DeepDiveItem", "is_member_call": false, "source_file": "src/scoring/theme_alignment.py", "source_location": "L206", "receiver": null}, {"caller_nid": "$graphify-root$_src_scoring_theme_alignment_themealignmentjudge_evaluate", "callee": "DeepDiveItem", "is_member_call": false, "source_file": "src/scoring/theme_alignment.py", "source_location": "L226", "receiver": null}, {"caller_nid": "$graphify-root$_src_scoring_theme_alignment_themealignmentjudge_evaluate", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "src/scoring/theme_alignment.py", "source_location": "L227"}, {"caller_nid": "$graphify-root$_src_scoring_theme_alignment_themealignmentjudge_evaluate", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "src/scoring/theme_alignment.py", "source_location": "L227"}, {"caller_nid": "$graphify-root$_src_scoring_theme_alignment_themealignmentjudge_evaluate", "callee": "join", "is_member_call": true, "source_file": "src/scoring/theme_alignment.py", "source_location": "L239", "receiver": null}, {"caller_nid": "$graphify-root$_src_scoring_theme_alignment_themealignmentjudge_evaluate", "callee": "append", "is_member_call": true, "source_file": "src/scoring/theme_alignment.py", "source_location": "L242", "receiver": "deep_dive"}, {"caller_nid": "$graphify-root$_src_scoring_theme_alignment_themealignmentjudge_evaluate", "callee": "DeepDiveItem", "is_member_call": false, "source_file": "src/scoring/theme_alignment.py", "source_location": "L242", "receiver": null}, {"caller_nid": "$graphify-root$_src_scoring_theme_alignment_themealignmentjudge_call_llm", "callee": "create", "is_member_call": true, "source_file": "src/scoring/theme_alignment.py", "source_location": "L270", "receiver": null}, {"caller_nid": "$graphify-root$_src_scoring_theme_alignment_themealignmentjudge_call_llm", "callee": "SYSTEM_PROMPT", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "src/scoring/theme_alignment.py", "source_location": "L276"}, {"caller_nid": "$graphify-root$_src_scoring_theme_alignment_themealignmentjudge_call_llm", "callee": "join", "is_member_call": true, "source_file": "src/scoring/theme_alignment.py", "source_location": "L284", "receiver": null}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.31/dcb76677107618c486fbfd6c36851965e380035eea5b2ba6219af356123c9ed6.json b/graphify-out/cache/ast/v0.9.31/dcb76677107618c486fbfd6c36851965e380035eea5b2ba6219af356123c9ed6.json new file mode 100644 index 0000000..8eb76b6 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.31/dcb76677107618c486fbfd6c36851965e380035eea5b2ba6219af356123c9ed6.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_scripts_fetch_missing_pois_py", "label": "fetch_missing_pois.py", "file_type": "code", "source_file": "scripts/fetch_missing_pois.py", "source_location": "L1"}, {"id": "$graphify-root$_scripts_fetch_missing_pois_load_existing_ids", "label": "load_existing_ids()", "file_type": "code", "source_file": "scripts/fetch_missing_pois.py", "source_location": "L26", "_callable": true}, {"id": "$graphify-root$_scripts_fetch_missing_pois_load_api_key", "label": "load_api_key()", "file_type": "code", "source_file": "scripts/fetch_missing_pois.py", "source_location": "L38", "_callable": true}, {"id": "$graphify-root$_scripts_fetch_missing_pois_fetch_page", "label": "fetch_page()", "file_type": "code", "source_file": "scripts/fetch_missing_pois.py", "source_location": "L48", "_callable": true}, {"id": "asyncclient", "label": "AsyncClient", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/scripts/fetch_missing_pois.py"}, {"id": "$graphify-root$_scripts_fetch_missing_pois_fetch_region_type", "label": "fetch_region_type()", "file_type": "code", "source_file": "scripts/fetch_missing_pois.py", "source_location": "L87", "_callable": true}, {"id": "$graphify-root$_scripts_fetch_missing_pois_main", "label": "main()", "file_type": "code", "source_file": "scripts/fetch_missing_pois.py", "source_location": "L150", "_callable": true}, {"id": "$graphify-root$_scripts_fetch_missing_pois_rationale_1", "label": "TourAPI areaBasedList2\ub85c \uc804\uad6d POI \uc218\uc9d1 \u2192 pois.csv\uc5d0 \ub204\ub77d\ubd84 \ucd94\uac00.", "file_type": "rationale", "source_file": "scripts/fetch_missing_pois.py", "source_location": "L1"}], "edges": [{"source": "$graphify-root$_scripts_fetch_missing_pois_py", "target": "asyncio", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/fetch_missing_pois.py", "source_location": "L4", "weight": 1.0}, {"source": "$graphify-root$_scripts_fetch_missing_pois_py", "target": "csv", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/fetch_missing_pois.py", "source_location": "L5", "weight": 1.0}, {"source": "$graphify-root$_scripts_fetch_missing_pois_py", "target": "time", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/fetch_missing_pois.py", "source_location": "L6", "weight": 1.0}, {"source": "$graphify-root$_scripts_fetch_missing_pois_py", "target": "pathlib", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/fetch_missing_pois.py", "source_location": "L7", "weight": 1.0}, {"source": "$graphify-root$_scripts_fetch_missing_pois_py", "target": "httpx", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/fetch_missing_pois.py", "source_location": "L8", "weight": 1.0}, {"source": "$graphify-root$_scripts_fetch_missing_pois_py", "target": "$graphify-root$_scripts_fetch_missing_pois_load_existing_ids", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/fetch_missing_pois.py", "source_location": "L26", "weight": 1.0}, {"source": "$graphify-root$_scripts_fetch_missing_pois_py", "target": "$graphify-root$_scripts_fetch_missing_pois_load_api_key", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/fetch_missing_pois.py", "source_location": "L38", "weight": 1.0}, {"source": "$graphify-root$_scripts_fetch_missing_pois_py", "target": "$graphify-root$_scripts_fetch_missing_pois_fetch_page", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/fetch_missing_pois.py", "source_location": "L48", "weight": 1.0}, {"source": "$graphify-root$_scripts_fetch_missing_pois_fetch_page", "target": "asyncclient", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "scripts/fetch_missing_pois.py", "source_location": "L48", "weight": 1.0}, {"source": "$graphify-root$_scripts_fetch_missing_pois_py", "target": "$graphify-root$_scripts_fetch_missing_pois_fetch_region_type", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/fetch_missing_pois.py", "source_location": "L87", "weight": 1.0}, {"source": "$graphify-root$_scripts_fetch_missing_pois_fetch_region_type", "target": "asyncclient", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "scripts/fetch_missing_pois.py", "source_location": "L87", "weight": 1.0}, {"source": "$graphify-root$_scripts_fetch_missing_pois_py", "target": "$graphify-root$_scripts_fetch_missing_pois_main", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/fetch_missing_pois.py", "source_location": "L150", "weight": 1.0}, {"source": "$graphify-root$_scripts_fetch_missing_pois_fetch_region_type", "target": "$graphify-root$_scripts_fetch_missing_pois_fetch_page", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/fetch_missing_pois.py", "source_location": "L100", "weight": 1.0}, {"source": "$graphify-root$_scripts_fetch_missing_pois_main", "target": "$graphify-root$_scripts_fetch_missing_pois_load_api_key", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/fetch_missing_pois.py", "source_location": "L151", "weight": 1.0}, {"source": "$graphify-root$_scripts_fetch_missing_pois_main", "target": "$graphify-root$_scripts_fetch_missing_pois_load_existing_ids", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/fetch_missing_pois.py", "source_location": "L156", "weight": 1.0}, {"source": "$graphify-root$_scripts_fetch_missing_pois_main", "target": "asyncclient", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/fetch_missing_pois.py", "source_location": "L162", "weight": 1.0}, {"source": "$graphify-root$_scripts_fetch_missing_pois_main", "target": "$graphify-root$_scripts_fetch_missing_pois_fetch_region_type", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/fetch_missing_pois.py", "source_location": "L166", "weight": 1.0}, {"source": "$graphify-root$_scripts_fetch_missing_pois_rationale_1", "target": "$graphify-root$_scripts_fetch_missing_pois_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/fetch_missing_pois.py", "source_location": "L1", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_scripts_fetch_missing_pois_load_existing_ids", "callee": "exists", "is_member_call": true, "source_file": "scripts/fetch_missing_pois.py", "source_location": "L28", "receiver": "POIS_CSV"}, {"caller_nid": "$graphify-root$_scripts_fetch_missing_pois_load_existing_ids", "callee": "POIS_CSV", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/fetch_missing_pois.py", "source_location": "L30"}, {"caller_nid": "$graphify-root$_scripts_fetch_missing_pois_load_existing_ids", "callee": "DictReader", "is_member_call": true, "source_file": "scripts/fetch_missing_pois.py", "source_location": "L31", "receiver": "csv"}, {"caller_nid": "$graphify-root$_scripts_fetch_missing_pois_load_existing_ids", "callee": "f", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/fetch_missing_pois.py", "source_location": "L31"}, {"caller_nid": "$graphify-root$_scripts_fetch_missing_pois_load_existing_ids", "callee": "strip", "is_member_call": true, "source_file": "scripts/fetch_missing_pois.py", "source_location": "L32", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_fetch_missing_pois_load_existing_ids", "callee": "get", "is_member_call": true, "source_file": "scripts/fetch_missing_pois.py", "source_location": "L32", "receiver": "row"}, {"caller_nid": "$graphify-root$_scripts_fetch_missing_pois_load_existing_ids", "callee": "add", "is_member_call": true, "source_file": "scripts/fetch_missing_pois.py", "source_location": "L34", "receiver": "ids"}, {"caller_nid": "$graphify-root$_scripts_fetch_missing_pois_load_api_key", "callee": "Path", "is_member_call": false, "source_file": "scripts/fetch_missing_pois.py", "source_location": "L39", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_fetch_missing_pois_load_api_key", "callee": "__file__", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/fetch_missing_pois.py", "source_location": "L39"}, {"caller_nid": "$graphify-root$_scripts_fetch_missing_pois_load_api_key", "callee": "exists", "is_member_call": true, "source_file": "scripts/fetch_missing_pois.py", "source_location": "L40", "receiver": "env_file"}, {"caller_nid": "$graphify-root$_scripts_fetch_missing_pois_load_api_key", "callee": "splitlines", "is_member_call": true, "source_file": "scripts/fetch_missing_pois.py", "source_location": "L41", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_fetch_missing_pois_load_api_key", "callee": "read_text", "is_member_call": true, "source_file": "scripts/fetch_missing_pois.py", "source_location": "L41", "receiver": "env_file"}, {"caller_nid": "$graphify-root$_scripts_fetch_missing_pois_load_api_key", "callee": "startswith", "is_member_call": true, "source_file": "scripts/fetch_missing_pois.py", "source_location": "L42", "receiver": "line"}, {"caller_nid": "$graphify-root$_scripts_fetch_missing_pois_load_api_key", "callee": "strip", "is_member_call": true, "source_file": "scripts/fetch_missing_pois.py", "source_location": "L43", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_fetch_missing_pois_load_api_key", "callee": "split", "is_member_call": true, "source_file": "scripts/fetch_missing_pois.py", "source_location": "L43", "receiver": "line"}, {"caller_nid": "$graphify-root$_scripts_fetch_missing_pois_load_api_key", "callee": "getenv", "is_member_call": true, "source_file": "scripts/fetch_missing_pois.py", "source_location": "L45", "receiver": "os"}, {"caller_nid": "$graphify-root$_scripts_fetch_missing_pois_fetch_page", "callee": "ROWS_PER_PAGE", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "scripts/fetch_missing_pois.py", "source_location": "L57"}, {"caller_nid": "$graphify-root$_scripts_fetch_missing_pois_fetch_page", "callee": "get", "is_member_call": true, "source_file": "scripts/fetch_missing_pois.py", "source_location": "L68", "receiver": "client"}, {"caller_nid": "$graphify-root$_scripts_fetch_missing_pois_fetch_page", "callee": "BASE_URL", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/fetch_missing_pois.py", "source_location": "L68"}, {"caller_nid": "$graphify-root$_scripts_fetch_missing_pois_fetch_page", "callee": "sleep", "is_member_call": true, "source_file": "scripts/fetch_missing_pois.py", "source_location": "L70", "receiver": "asyncio"}, {"caller_nid": "$graphify-root$_scripts_fetch_missing_pois_fetch_page", "callee": "get", "is_member_call": true, "source_file": "scripts/fetch_missing_pois.py", "source_location": "L72", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_fetch_missing_pois_fetch_page", "callee": "get", "is_member_call": true, "source_file": "scripts/fetch_missing_pois.py", "source_location": "L72", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_fetch_missing_pois_fetch_page", "callee": "json", "is_member_call": true, "source_file": "scripts/fetch_missing_pois.py", "source_location": "L72", "receiver": "r"}, {"caller_nid": "$graphify-root$_scripts_fetch_missing_pois_fetch_page", "callee": "get", "is_member_call": true, "source_file": "scripts/fetch_missing_pois.py", "source_location": "L73", "receiver": "body"}, {"caller_nid": "$graphify-root$_scripts_fetch_missing_pois_fetch_page", "callee": "get", "is_member_call": true, "source_file": "scripts/fetch_missing_pois.py", "source_location": "L74", "receiver": "body"}, {"caller_nid": "$graphify-root$_scripts_fetch_missing_pois_fetch_page", "callee": "get", "is_member_call": true, "source_file": "scripts/fetch_missing_pois.py", "source_location": "L77", "receiver": "raw"}, {"caller_nid": "$graphify-root$_scripts_fetch_missing_pois_fetch_page", "callee": "dict", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/fetch_missing_pois.py", "source_location": "L78"}, {"caller_nid": "$graphify-root$_scripts_fetch_missing_pois_fetch_page", "callee": "sleep", "is_member_call": true, "source_file": "scripts/fetch_missing_pois.py", "source_location": "L83", "receiver": "asyncio"}, {"caller_nid": "$graphify-root$_scripts_fetch_missing_pois_fetch_region_type", "callee": "strip", "is_member_call": true, "source_file": "scripts/fetch_missing_pois.py", "source_location": "L105", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_fetch_missing_pois_fetch_region_type", "callee": "get", "is_member_call": true, "source_file": "scripts/fetch_missing_pois.py", "source_location": "L105", "receiver": "item"}, {"caller_nid": "$graphify-root$_scripts_fetch_missing_pois_fetch_region_type", "callee": "strip", "is_member_call": true, "source_file": "scripts/fetch_missing_pois.py", "source_location": "L108", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_fetch_missing_pois_fetch_region_type", "callee": "get", "is_member_call": true, "source_file": "scripts/fetch_missing_pois.py", "source_location": "L108", "receiver": "item"}, {"caller_nid": "$graphify-root$_scripts_fetch_missing_pois_fetch_region_type", "callee": "strip", "is_member_call": true, "source_file": "scripts/fetch_missing_pois.py", "source_location": "L109", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_fetch_missing_pois_fetch_region_type", "callee": "get", "is_member_call": true, "source_file": "scripts/fetch_missing_pois.py", "source_location": "L109", "receiver": "item"}, {"caller_nid": "$graphify-root$_scripts_fetch_missing_pois_fetch_region_type", "callee": "append", "is_member_call": true, "source_file": "scripts/fetch_missing_pois.py", "source_location": "L110", "receiver": "new_items"}, {"caller_nid": "$graphify-root$_scripts_fetch_missing_pois_fetch_region_type", "callee": "get", "is_member_call": true, "source_file": "scripts/fetch_missing_pois.py", "source_location": "L112", "receiver": "item"}, {"caller_nid": "$graphify-root$_scripts_fetch_missing_pois_fetch_region_type", "callee": "get", "is_member_call": true, "source_file": "scripts/fetch_missing_pois.py", "source_location": "L113", "receiver": "item"}, {"caller_nid": "$graphify-root$_scripts_fetch_missing_pois_fetch_region_type", "callee": "get", "is_member_call": true, "source_file": "scripts/fetch_missing_pois.py", "source_location": "L114", "receiver": "item"}, {"caller_nid": "$graphify-root$_scripts_fetch_missing_pois_fetch_region_type", "callee": "get", "is_member_call": true, "source_file": "scripts/fetch_missing_pois.py", "source_location": "L115", "receiver": "item"}, {"caller_nid": "$graphify-root$_scripts_fetch_missing_pois_fetch_region_type", "callee": "get", "is_member_call": true, "source_file": "scripts/fetch_missing_pois.py", "source_location": "L116", "receiver": "item"}, {"caller_nid": "$graphify-root$_scripts_fetch_missing_pois_fetch_region_type", "callee": "get", "is_member_call": true, "source_file": "scripts/fetch_missing_pois.py", "source_location": "L124", "receiver": "item"}, {"caller_nid": "$graphify-root$_scripts_fetch_missing_pois_fetch_region_type", "callee": "get", "is_member_call": true, "source_file": "scripts/fetch_missing_pois.py", "source_location": "L125", "receiver": "item"}, {"caller_nid": "$graphify-root$_scripts_fetch_missing_pois_fetch_region_type", "callee": "get", "is_member_call": true, "source_file": "scripts/fetch_missing_pois.py", "source_location": "L126", "receiver": "item"}, {"caller_nid": "$graphify-root$_scripts_fetch_missing_pois_fetch_region_type", "callee": "get", "is_member_call": true, "source_file": "scripts/fetch_missing_pois.py", "source_location": "L127", "receiver": "item"}, {"caller_nid": "$graphify-root$_scripts_fetch_missing_pois_fetch_region_type", "callee": "get", "is_member_call": true, "source_file": "scripts/fetch_missing_pois.py", "source_location": "L128", "receiver": "item"}, {"caller_nid": "$graphify-root$_scripts_fetch_missing_pois_fetch_region_type", "callee": "get", "is_member_call": true, "source_file": "scripts/fetch_missing_pois.py", "source_location": "L129", "receiver": "item"}, {"caller_nid": "$graphify-root$_scripts_fetch_missing_pois_fetch_region_type", "callee": "get", "is_member_call": true, "source_file": "scripts/fetch_missing_pois.py", "source_location": "L130", "receiver": "item"}, {"caller_nid": "$graphify-root$_scripts_fetch_missing_pois_fetch_region_type", "callee": "sleep", "is_member_call": true, "source_file": "scripts/fetch_missing_pois.py", "source_location": "L137", "receiver": "asyncio"}, {"caller_nid": "$graphify-root$_scripts_fetch_missing_pois_main", "callee": "time", "is_member_call": true, "source_file": "scripts/fetch_missing_pois.py", "source_location": "L160", "receiver": "time"}, {"caller_nid": "$graphify-root$_scripts_fetch_missing_pois_main", "callee": "items", "is_member_call": true, "source_file": "scripts/fetch_missing_pois.py", "source_location": "L163", "receiver": "AREA_CODES"}, {"caller_nid": "$graphify-root$_scripts_fetch_missing_pois_main", "callee": "client", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/fetch_missing_pois.py", "source_location": "L167"}, {"caller_nid": "$graphify-root$_scripts_fetch_missing_pois_main", "callee": "add", "is_member_call": true, "source_file": "scripts/fetch_missing_pois.py", "source_location": "L170", "receiver": "existing_ids"}, {"caller_nid": "$graphify-root$_scripts_fetch_missing_pois_main", "callee": "extend", "is_member_call": true, "source_file": "scripts/fetch_missing_pois.py", "source_location": "L171", "receiver": "area_new"}, {"caller_nid": "$graphify-root$_scripts_fetch_missing_pois_main", "callee": "sleep", "is_member_call": true, "source_file": "scripts/fetch_missing_pois.py", "source_location": "L172", "receiver": "asyncio"}, {"caller_nid": "$graphify-root$_scripts_fetch_missing_pois_main", "callee": "extend", "is_member_call": true, "source_file": "scripts/fetch_missing_pois.py", "source_location": "L174", "receiver": "all_new"}, {"caller_nid": "$graphify-root$_scripts_fetch_missing_pois_main", "callee": "time", "is_member_call": true, "source_file": "scripts/fetch_missing_pois.py", "source_location": "L175", "receiver": "time"}, {"caller_nid": "$graphify-root$_scripts_fetch_missing_pois_main", "callee": "POIS_CSV", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/fetch_missing_pois.py", "source_location": "L183"}, {"caller_nid": "$graphify-root$_scripts_fetch_missing_pois_main", "callee": "DictWriter", "is_member_call": true, "source_file": "scripts/fetch_missing_pois.py", "source_location": "L184", "receiver": "csv"}, {"caller_nid": "$graphify-root$_scripts_fetch_missing_pois_main", "callee": "f", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/fetch_missing_pois.py", "source_location": "L184"}, {"caller_nid": "$graphify-root$_scripts_fetch_missing_pois_main", "callee": "FIELDNAMES", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/fetch_missing_pois.py", "source_location": "L184"}, {"caller_nid": "$graphify-root$_scripts_fetch_missing_pois_main", "callee": "writerow", "is_member_call": true, "source_file": "scripts/fetch_missing_pois.py", "source_location": "L186", "receiver": "writer"}, {"caller_nid": "$graphify-root$_scripts_fetch_missing_pois_main", "callee": "time", "is_member_call": true, "source_file": "scripts/fetch_missing_pois.py", "source_location": "L190", "receiver": "time"}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.31/dcc67140df0396e3e5c3337dc9ae1631b2fce2ab2c8a7d76dca2f2bc4b7eacc1.json b/graphify-out/cache/ast/v0.9.31/dcc67140df0396e3e5c3337dc9ae1631b2fce2ab2c8a7d76dca2f2bc4b7eacc1.json new file mode 100644 index 0000000..9bba5f0 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.31/dcc67140df0396e3e5c3337dc9ae1631b2fce2ab2c8a7d76dca2f2bc4b7eacc1.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_src_scoring_congestion_engine_py", "label": "congestion_engine.py", "file_type": "code", "source_file": "src/scoring/congestion_engine.py", "source_location": "L1"}, {"id": "$graphify-root$_src_scoring_congestion_engine_congestionlevel", "label": "CongestionLevel", "file_type": "code", "source_file": "src/scoring/congestion_engine.py", "source_location": "L27", "_callable": true, "_callable_class": true}, {"id": "str", "label": "str", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/src/scoring/congestion_engine.py"}, {"id": "enum", "label": "Enum", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/src/scoring/congestion_engine.py"}, {"id": "$graphify-root$_src_scoring_congestion_engine_congestionresult", "label": "CongestionResult", "file_type": "code", "source_file": "src/scoring/congestion_engine.py", "source_location": "L35", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_src_scoring_congestion_engine_normalize", "label": "_normalize()", "file_type": "code", "source_file": "src/scoring/congestion_engine.py", "source_location": "L45", "_callable": true}, {"id": "$graphify-root$_src_scoring_congestion_engine_score_to_level", "label": "_score_to_level()", "file_type": "code", "source_file": "src/scoring/congestion_engine.py", "source_location": "L49", "_callable": true}, {"id": "$graphify-root$_src_scoring_congestion_engine_congestionengine", "label": "CongestionEngine", "file_type": "code", "source_file": "src/scoring/congestion_engine.py", "source_location": "L59", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_src_scoring_congestion_engine_congestionengine_init", "label": ".__init__()", "file_type": "code", "source_file": "src/scoring/congestion_engine.py", "source_location": "L68", "_callable": true}, {"id": "path", "label": "Path", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/src/scoring/congestion_engine.py"}, {"id": "seoulcitydataclient", "label": "SeoulCityDataClient", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/src/scoring/congestion_engine.py"}, {"id": "$graphify-root$_src_scoring_congestion_engine_congestionengine_df", "label": "._df()", "file_type": "code", "source_file": "src/scoring/congestion_engine.py", "source_location": "L79", "_callable": true}, {"id": "dataframe", "label": "DataFrame", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/src/scoring/congestion_engine.py"}, {"id": "$graphify-root$_src_scoring_congestion_engine_congestionengine_poi_names", "label": "._poi_names()", "file_type": "code", "source_file": "src/scoring/congestion_engine.py", "source_location": "L90", "_callable": true}, {"id": "$graphify-root$_src_scoring_congestion_engine_congestionengine_global_avg_by_month", "label": "._global_avg_by_month()", "file_type": "code", "source_file": "src/scoring/congestion_engine.py", "source_location": "L94", "_callable": true}, {"id": "$graphify-root$_src_scoring_congestion_engine_congestionengine_category_avg_by_month", "label": "._category_avg_by_month()", "file_type": "code", "source_file": "src/scoring/congestion_engine.py", "source_location": "L100", "_callable": true}, {"id": "$graphify-root$_src_scoring_congestion_engine_congestionengine_lookup_exact", "label": "._lookup_exact()", "file_type": "code", "source_file": "src/scoring/congestion_engine.py", "source_location": "L113", "_callable": true}, {"id": "series", "label": "Series", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/src/scoring/congestion_engine.py"}, {"id": "$graphify-root$_src_scoring_congestion_engine_congestionengine_lookup_partial", "label": "._lookup_partial()", "file_type": "code", "source_file": "src/scoring/congestion_engine.py", "source_location": "L119", "_callable": true}, {"id": "$graphify-root$_src_scoring_congestion_engine_congestionengine_score", "label": ".score()", "file_type": "code", "source_file": "src/scoring/congestion_engine.py", "source_location": "L130", "_callable": true}, {"id": "$graphify-root$_src_scoring_congestion_engine_congestionengine_is_crowded", "label": ".is_crowded()", "file_type": "code", "source_file": "src/scoring/congestion_engine.py", "source_location": "L209", "_callable": true}, {"id": "$graphify-root$_src_scoring_congestion_engine_congestionengine_score_itinerary", "label": ".score_itinerary()", "file_type": "code", "source_file": "src/scoring/congestion_engine.py", "source_location": "L213", "_callable": true}, {"id": "$graphify-root$_src_scoring_congestion_engine_rationale_1", "label": "\ud63c\uc7a1\ub3c4 \ud310\uc815 \uc5d4\uc9c4 \u2014 \uacb0\uc815\ub860\uc801 \uaddc\uce59 \uae30\ubc18 (LLM \uc758\uc874 \uc5c6\uc74c). \ub370\uc774\ud130 \uc18c\uc2a4 \uc6b0\uc120\uc21c\uc704: 0. \uc11c\uc6b8 \ub3c4\uc2dc\ub370\uc774\ud130 API (\uc2e4\uc2dc\uac04) \u2014\u2026", "file_type": "rationale", "source_file": "src/scoring/congestion_engine.py", "source_location": "L1"}, {"id": "$graphify-root$_src_scoring_congestion_engine_rationale_60", "label": "POI \u00d7 month \u2192 congestion_score \ud310\uc815\uae30. Args: csv_path: congestion_stats.csv \uacbd\ub85c\u2026", "file_type": "rationale", "source_file": "src/scoring/congestion_engine.py", "source_location": "L60"}, {"id": "$graphify-root$_src_scoring_congestion_engine_rationale_95", "label": "month \u2192 (avg_visitors, congestion_score) \uc804\uccb4 \ud3c9\uade0.", "file_type": "rationale", "source_file": "src/scoring/congestion_engine.py", "source_location": "L95"}, {"id": "$graphify-root$_src_scoring_congestion_engine_rationale_101", "label": "prefix \u2192 month \u2192 (avg_visitors, congestion_score).", "file_type": "rationale", "source_file": "src/scoring/congestion_engine.py", "source_location": "L101"}, {"id": "$graphify-root$_src_scoring_congestion_engine_rationale_131", "label": "POI\uc640 \ubc29\ubb38 \uc6d4\ub85c \ud63c\uc7a1\ub3c4\ub97c \ud310\uc815\ud55c\ub2e4. \uc11c\uc6b8 POI\uc5d0 SeoulCityDataClient\uac00 \uc8fc\uc785\ub41c \uacbd\uc6b0 \uc2e4\uc2dc\uac04 \ub370\uc774\ud130\ub97c \uc6b0\uc120 \uc0ac\uc6a9\ud55c\ub2e4.\u2026", "file_type": "rationale", "source_file": "src/scoring/congestion_engine.py", "source_location": "L131"}, {"id": "$graphify-root$_src_scoring_congestion_engine_rationale_210", "label": "congestion_score >= threshold \uc774\uba74 True.", "file_type": "rationale", "source_file": "src/scoring/congestion_engine.py", "source_location": "L210"}, {"id": "$graphify-root$_src_scoring_congestion_engine_rationale_216", "label": "\uc5ec\ud589 \uc77c\uc815\uc758 \ubaa8\ub4e0 POI \ud63c\uc7a1\ub3c4\ub97c \uc77c\uad04 \ubc18\ud658\ud55c\ub2e4.", "file_type": "rationale", "source_file": "src/scoring/congestion_engine.py", "source_location": "L216"}], "edges": [{"source": "$graphify-root$_src_scoring_congestion_engine_py", "target": "unicodedata", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "src/scoring/congestion_engine.py", "source_location": "L12", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_congestion_engine_py", "target": "dataclasses", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "src/scoring/congestion_engine.py", "source_location": "L13", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_congestion_engine_py", "target": "enum", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "src/scoring/congestion_engine.py", "source_location": "L14", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_congestion_engine_py", "target": "functools", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "src/scoring/congestion_engine.py", "source_location": "L15", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_congestion_engine_py", "target": "pathlib", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "src/scoring/congestion_engine.py", "source_location": "L16", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_congestion_engine_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "src/scoring/congestion_engine.py", "source_location": "L17", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_congestion_engine_py", "target": "pandas", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "src/scoring/congestion_engine.py", "source_location": "L19", "weight": 1.0, "local_alias": "pd"}, {"source": "$graphify-root$_src_scoring_congestion_engine_py", "target": "src_data_seoul_citydata_client", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "src/scoring/congestion_engine.py", "source_location": "L22", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_congestion_engine_py", "target": "$graphify-root$_src_scoring_congestion_engine_congestionlevel", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/scoring/congestion_engine.py", "source_location": "L27", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_congestion_engine_congestionlevel", "target": "str", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "src/scoring/congestion_engine.py", "source_location": "L27", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_congestion_engine_congestionlevel", "target": "enum", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "src/scoring/congestion_engine.py", "source_location": "L27", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_congestion_engine_py", "target": "$graphify-root$_src_scoring_congestion_engine_congestionresult", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/scoring/congestion_engine.py", "source_location": "L35", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_congestion_engine_py", "target": "$graphify-root$_src_scoring_congestion_engine_normalize", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/scoring/congestion_engine.py", "source_location": "L45", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_congestion_engine_py", "target": "$graphify-root$_src_scoring_congestion_engine_score_to_level", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/scoring/congestion_engine.py", "source_location": "L49", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_congestion_engine_score_to_level", "target": "$graphify-root$_src_scoring_congestion_engine_congestionlevel", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "src/scoring/congestion_engine.py", "source_location": "L49", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_congestion_engine_py", "target": "$graphify-root$_src_scoring_congestion_engine_congestionengine", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/scoring/congestion_engine.py", "source_location": "L59", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_congestion_engine_congestionengine", "target": "$graphify-root$_src_scoring_congestion_engine_congestionengine_init", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/scoring/congestion_engine.py", "source_location": "L68", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_congestion_engine_congestionengine_init", "target": "path", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "src/scoring/congestion_engine.py", "source_location": "L68", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_congestion_engine_congestionengine_init", "target": "seoulcitydataclient", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "src/scoring/congestion_engine.py", "source_location": "L68", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_congestion_engine_congestionengine", "target": "$graphify-root$_src_scoring_congestion_engine_congestionengine_df", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/scoring/congestion_engine.py", "source_location": "L79", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_congestion_engine_congestionengine_df", "target": "dataframe", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "src/scoring/congestion_engine.py", "source_location": "L79", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_congestion_engine_congestionengine", "target": "$graphify-root$_src_scoring_congestion_engine_congestionengine_poi_names", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/scoring/congestion_engine.py", "source_location": "L90", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_congestion_engine_congestionengine", "target": "$graphify-root$_src_scoring_congestion_engine_congestionengine_global_avg_by_month", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/scoring/congestion_engine.py", "source_location": "L94", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_congestion_engine_congestionengine", "target": "$graphify-root$_src_scoring_congestion_engine_congestionengine_category_avg_by_month", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/scoring/congestion_engine.py", "source_location": "L100", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_congestion_engine_congestionengine", "target": "$graphify-root$_src_scoring_congestion_engine_congestionengine_lookup_exact", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/scoring/congestion_engine.py", "source_location": "L113", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_congestion_engine_congestionengine_lookup_exact", "target": "series", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "src/scoring/congestion_engine.py", "source_location": "L113", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_congestion_engine_congestionengine", "target": "$graphify-root$_src_scoring_congestion_engine_congestionengine_lookup_partial", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/scoring/congestion_engine.py", "source_location": "L119", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_congestion_engine_congestionengine_lookup_partial", "target": "series", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "src/scoring/congestion_engine.py", "source_location": "L119", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_congestion_engine_congestionengine", "target": "$graphify-root$_src_scoring_congestion_engine_congestionengine_score", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/scoring/congestion_engine.py", "source_location": "L130", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_congestion_engine_congestionengine_score", "target": "$graphify-root$_src_scoring_congestion_engine_congestionresult", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "src/scoring/congestion_engine.py", "source_location": "L130", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_congestion_engine_congestionengine", "target": "$graphify-root$_src_scoring_congestion_engine_congestionengine_is_crowded", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/scoring/congestion_engine.py", "source_location": "L209", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_congestion_engine_congestionengine", "target": "$graphify-root$_src_scoring_congestion_engine_congestionengine_score_itinerary", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/scoring/congestion_engine.py", "source_location": "L213", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_congestion_engine_congestionengine_score_itinerary", "target": "$graphify-root$_src_scoring_congestion_engine_congestionresult", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "src/scoring/congestion_engine.py", "source_location": "L213", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_congestion_engine_congestionengine_df", "target": "$graphify-root$_src_scoring_congestion_engine_normalize", "relation": "indirect_call", "context": "argument", "confidence": "INFERRED", "source_file": "src/scoring/congestion_engine.py", "source_location": "L86", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_congestion_engine_congestionengine_score", "target": "$graphify-root$_src_scoring_congestion_engine_normalize", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/scoring/congestion_engine.py", "source_location": "L145", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_congestion_engine_congestionengine_score", "target": "$graphify-root$_src_scoring_congestion_engine_congestionresult", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/scoring/congestion_engine.py", "source_location": "L152", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_congestion_engine_congestionengine_score", "target": "$graphify-root$_src_scoring_congestion_engine_score_to_level", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/scoring/congestion_engine.py", "source_location": "L155", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_congestion_engine_congestionengine_score", "target": "$graphify-root$_src_scoring_congestion_engine_congestionengine_lookup_exact", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/scoring/congestion_engine.py", "source_location": "L164", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_congestion_engine_congestionengine_score", "target": "$graphify-root$_src_scoring_congestion_engine_congestionengine_lookup_partial", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/scoring/congestion_engine.py", "source_location": "L175", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_congestion_engine_congestionengine_is_crowded", "target": "$graphify-root$_src_scoring_congestion_engine_congestionengine_score", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/scoring/congestion_engine.py", "source_location": "L211", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_congestion_engine_congestionengine_score_itinerary", "target": "$graphify-root$_src_scoring_congestion_engine_congestionengine_score", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/scoring/congestion_engine.py", "source_location": "L217", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_congestion_engine_rationale_1", "target": "$graphify-root$_src_scoring_congestion_engine_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/scoring/congestion_engine.py", "source_location": "L1", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_congestion_engine_rationale_60", "target": "$graphify-root$_src_scoring_congestion_engine_congestionengine", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/scoring/congestion_engine.py", "source_location": "L60", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_congestion_engine_rationale_95", "target": "$graphify-root$_src_scoring_congestion_engine_congestionengine_global_avg_by_month", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/scoring/congestion_engine.py", "source_location": "L95", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_congestion_engine_rationale_101", "target": "$graphify-root$_src_scoring_congestion_engine_congestionengine_category_avg_by_month", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/scoring/congestion_engine.py", "source_location": "L101", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_congestion_engine_rationale_131", "target": "$graphify-root$_src_scoring_congestion_engine_congestionengine_score", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/scoring/congestion_engine.py", "source_location": "L131", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_congestion_engine_rationale_210", "target": "$graphify-root$_src_scoring_congestion_engine_congestionengine_is_crowded", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/scoring/congestion_engine.py", "source_location": "L210", "weight": 1.0}, {"source": "$graphify-root$_src_scoring_congestion_engine_rationale_216", "target": "$graphify-root$_src_scoring_congestion_engine_congestionengine_score_itinerary", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/scoring/congestion_engine.py", "source_location": "L216", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_src_scoring_congestion_engine_normalize", "callee": "strip", "is_member_call": true, "source_file": "src/scoring/congestion_engine.py", "source_location": "L46", "receiver": null}, {"caller_nid": "$graphify-root$_src_scoring_congestion_engine_normalize", "callee": "normalize", "is_member_call": true, "source_file": "src/scoring/congestion_engine.py", "source_location": "L46", "receiver": "unicodedata"}, {"caller_nid": "$graphify-root$_src_scoring_congestion_engine_congestionengine_df", "callee": "exists", "is_member_call": true, "source_file": "src/scoring/congestion_engine.py", "source_location": "L80", "receiver": null}, {"caller_nid": "$graphify-root$_src_scoring_congestion_engine_congestionengine_df", "callee": "FileNotFoundError", "is_member_call": false, "source_file": "src/scoring/congestion_engine.py", "source_location": "L81", "receiver": null}, {"caller_nid": "$graphify-root$_src_scoring_congestion_engine_congestionengine_df", "callee": "read_csv", "is_member_call": true, "source_file": "src/scoring/congestion_engine.py", "source_location": "L85", "receiver": "pd"}, {"caller_nid": "$graphify-root$_src_scoring_congestion_engine_congestionengine_df", "callee": "apply", "is_member_call": true, "source_file": "src/scoring/congestion_engine.py", "source_location": "L86", "receiver": null}, {"caller_nid": "$graphify-root$_src_scoring_congestion_engine_congestionengine_poi_names", "callee": "tolist", "is_member_call": true, "source_file": "src/scoring/congestion_engine.py", "source_location": "L91", "receiver": null}, {"caller_nid": "$graphify-root$_src_scoring_congestion_engine_congestionengine_poi_names", "callee": "unique", "is_member_call": true, "source_file": "src/scoring/congestion_engine.py", "source_location": "L91", "receiver": null}, {"caller_nid": "$graphify-root$_src_scoring_congestion_engine_congestionengine_global_avg_by_month", "callee": "mean", "is_member_call": true, "source_file": "src/scoring/congestion_engine.py", "source_location": "L96", "receiver": null}, {"caller_nid": "$graphify-root$_src_scoring_congestion_engine_congestionengine_global_avg_by_month", "callee": "groupby", "is_member_call": true, "source_file": "src/scoring/congestion_engine.py", "source_location": "L96", "receiver": null}, {"caller_nid": "$graphify-root$_src_scoring_congestion_engine_congestionengine_global_avg_by_month", "callee": "iterrows", "is_member_call": true, "source_file": "src/scoring/congestion_engine.py", "source_location": "L97", "receiver": "agg"}, {"caller_nid": "$graphify-root$_src_scoring_congestion_engine_congestionengine_category_avg_by_month", "callee": "copy", "is_member_call": true, "source_file": "src/scoring/congestion_engine.py", "source_location": "L102", "receiver": null}, {"caller_nid": "$graphify-root$_src_scoring_congestion_engine_congestionengine_category_avg_by_month", "callee": "groupby", "is_member_call": true, "source_file": "src/scoring/congestion_engine.py", "source_location": "L105", "receiver": "df"}, {"caller_nid": "$graphify-root$_src_scoring_congestion_engine_congestionengine_category_avg_by_month", "callee": "mean", "is_member_call": true, "source_file": "src/scoring/congestion_engine.py", "source_location": "L106", "receiver": null}, {"caller_nid": "$graphify-root$_src_scoring_congestion_engine_congestionengine_category_avg_by_month", "callee": "groupby", "is_member_call": true, "source_file": "src/scoring/congestion_engine.py", "source_location": "L106", "receiver": "group"}, {"caller_nid": "$graphify-root$_src_scoring_congestion_engine_congestionengine_category_avg_by_month", "callee": "iterrows", "is_member_call": true, "source_file": "src/scoring/congestion_engine.py", "source_location": "L109", "receiver": "agg"}, {"caller_nid": "$graphify-root$_src_scoring_congestion_engine_congestionengine_lookup_partial", "callee": "len", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "src/scoring/congestion_engine.py", "source_location": "L124"}, {"caller_nid": "$graphify-root$_src_scoring_congestion_engine_congestionengine_score", "callee": "ValueError", "is_member_call": false, "source_file": "src/scoring/congestion_engine.py", "source_location": "L143", "receiver": null}, {"caller_nid": "$graphify-root$_src_scoring_congestion_engine_congestionengine_score", "callee": "get", "is_member_call": true, "source_file": "src/scoring/congestion_engine.py", "source_location": "L150", "receiver": null}, {"caller_nid": "$graphify-root$_src_scoring_congestion_engine_congestionengine_score", "callee": "get", "is_member_call": true, "source_file": "src/scoring/congestion_engine.py", "source_location": "L188", "receiver": null}, {"caller_nid": "$graphify-root$_src_scoring_congestion_engine_congestionengine_score", "callee": "get", "is_member_call": true, "source_file": "src/scoring/congestion_engine.py", "source_location": "L200", "receiver": null}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.31/e02744d06cc9ad7bfd17c0b4373df8fa368ff97ee387aef62c7a4bc8b6e4f41c.json b/graphify-out/cache/ast/v0.9.31/e02744d06cc9ad7bfd17c0b4373df8fa368ff97ee387aef62c7a4bc8b6e4f41c.json new file mode 100644 index 0000000..e5804a9 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.31/e02744d06cc9ad7bfd17c0b4373df8fa368ff97ee387aef62c7a4bc8b6e4f41c.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_tests_test_travel_ratio_py", "label": "test_travel_ratio.py", "file_type": "code", "source_file": "tests/test_travel_ratio.py", "source_location": "L1"}, {"id": "$graphify-root$_tests_test_travel_ratio_make_place", "label": "_make_place()", "file_type": "code", "source_file": "tests/test_travel_ratio.py", "source_location": "L15", "_callable": true}, {"id": "$graphify-root$_tests_test_travel_ratio_test_no_penalty_when_ratio_low", "label": "test_no_penalty_when_ratio_low()", "file_type": "code", "source_file": "tests/test_travel_ratio.py", "source_location": "L22", "_callable": true}, {"id": "$graphify-root$_tests_test_travel_ratio_test_penalty_when_ratio_high", "label": "test_penalty_when_ratio_high()", "file_type": "code", "source_file": "tests/test_travel_ratio.py", "source_location": "L35", "_callable": true}, {"id": "$graphify-root$_tests_test_travel_ratio_test_overall_ratio_aggregates_across_days", "label": "test_overall_ratio_aggregates_across_days()", "file_type": "code", "source_file": "tests/test_travel_ratio.py", "source_location": "L48", "_callable": true}, {"id": "$graphify-root$_tests_test_travel_ratio_rationale_1", "label": "Tests for src/scoring/travel_ratio.py.", "file_type": "rationale", "source_file": "tests/test_travel_ratio.py", "source_location": "L1"}, {"id": "$graphify-root$_tests_test_travel_ratio_rationale_23", "label": "4\uac1c \uc7a5\uc18c\uac00 \ubaa8\ub450 \uac00\uae4c\uc774 \uc788\uc73c\uba74 travel_ratio\uac00 \ub0ae\uc74c \u2192 \ud328\ub110\ud2f0 0.", "file_type": "rationale", "source_file": "tests/test_travel_ratio.py", "source_location": "L23"}, {"id": "$graphify-root$_tests_test_travel_ratio_rationale_36", "label": "\uc7a5\uc18c\uac00 \uba40\ub9ac \ub5a8\uc5b4\uc838 \uc774\ub3d9 \uc2dc\uac04\uc774 \uad00\uad11 \uc2dc\uac04\uc744 \uc555\ub3c4\ud558\uba74 \ud328\ub110\ud2f0 \ubc1c\uc0dd.", "file_type": "rationale", "source_file": "tests/test_travel_ratio.py", "source_location": "L36"}], "edges": [{"source": "$graphify-root$_tests_test_travel_ratio_py", "target": "pytest", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_travel_ratio.py", "source_location": "L4", "weight": 1.0}, {"source": "$graphify-root$_tests_test_travel_ratio_py", "target": "src_data_models", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_travel_ratio.py", "source_location": "L6", "weight": 1.0}, {"source": "$graphify-root$_tests_test_travel_ratio_py", "target": "src_scoring_travel_ratio", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_travel_ratio.py", "source_location": "L7", "weight": 1.0}, {"source": "$graphify-root$_tests_test_travel_ratio_py", "target": "src_validation_vrptw_engine", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_travel_ratio.py", "source_location": "L12", "weight": 1.0}, {"source": "$graphify-root$_tests_test_travel_ratio_py", "target": "$graphify-root$_tests_test_travel_ratio_make_place", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_travel_ratio.py", "source_location": "L15", "weight": 1.0}, {"source": "$graphify-root$_tests_test_travel_ratio_py", "target": "$graphify-root$_tests_test_travel_ratio_test_no_penalty_when_ratio_low", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_travel_ratio.py", "source_location": "L22", "weight": 1.0}, {"source": "$graphify-root$_tests_test_travel_ratio_py", "target": "$graphify-root$_tests_test_travel_ratio_test_penalty_when_ratio_high", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_travel_ratio.py", "source_location": "L35", "weight": 1.0}, {"source": "$graphify-root$_tests_test_travel_ratio_py", "target": "$graphify-root$_tests_test_travel_ratio_test_overall_ratio_aggregates_across_days", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_travel_ratio.py", "source_location": "L48", "weight": 1.0}, {"source": "$graphify-root$_tests_test_travel_ratio_test_no_penalty_when_ratio_low", "target": "$graphify-root$_tests_test_travel_ratio_make_place", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_travel_ratio.py", "source_location": "L25", "weight": 1.0}, {"source": "$graphify-root$_tests_test_travel_ratio_test_penalty_when_ratio_high", "target": "$graphify-root$_tests_test_travel_ratio_make_place", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_travel_ratio.py", "source_location": "L38", "weight": 1.0}, {"source": "$graphify-root$_tests_test_travel_ratio_test_overall_ratio_aggregates_across_days", "target": "$graphify-root$_tests_test_travel_ratio_make_place", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_travel_ratio.py", "source_location": "L51", "weight": 1.0}, {"source": "$graphify-root$_tests_test_travel_ratio_rationale_1", "target": "$graphify-root$_tests_test_travel_ratio_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_travel_ratio.py", "source_location": "L1", "weight": 1.0}, {"source": "$graphify-root$_tests_test_travel_ratio_rationale_23", "target": "$graphify-root$_tests_test_travel_ratio_test_no_penalty_when_ratio_low", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_travel_ratio.py", "source_location": "L23", "weight": 1.0}, {"source": "$graphify-root$_tests_test_travel_ratio_rationale_36", "target": "$graphify-root$_tests_test_travel_ratio_test_penalty_when_ratio_high", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_travel_ratio.py", "source_location": "L36", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_tests_test_travel_ratio_make_place", "callee": "VRPTWPlace", "is_member_call": false, "source_file": "tests/test_travel_ratio.py", "source_location": "L16", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_travel_ratio_test_no_penalty_when_ratio_low", "callee": "VRPTWDay", "is_member_call": false, "source_file": "tests/test_travel_ratio.py", "source_location": "L24", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_travel_ratio_test_no_penalty_when_ratio_low", "callee": "evaluate_travel_ratio", "is_member_call": false, "source_file": "tests/test_travel_ratio.py", "source_location": "L30", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_travel_ratio_test_no_penalty_when_ratio_low", "callee": "HaversineMatrix", "is_member_call": false, "source_file": "tests/test_travel_ratio.py", "source_location": "L30", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_travel_ratio_test_penalty_when_ratio_high", "callee": "VRPTWDay", "is_member_call": false, "source_file": "tests/test_travel_ratio.py", "source_location": "L37", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_travel_ratio_test_penalty_when_ratio_high", "callee": "evaluate_travel_ratio", "is_member_call": false, "source_file": "tests/test_travel_ratio.py", "source_location": "L41", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_travel_ratio_test_penalty_when_ratio_high", "callee": "HaversineMatrix", "is_member_call": false, "source_file": "tests/test_travel_ratio.py", "source_location": "L41", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_travel_ratio_test_overall_ratio_aggregates_across_days", "callee": "VRPTWDay", "is_member_call": false, "source_file": "tests/test_travel_ratio.py", "source_location": "L50", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_travel_ratio_test_overall_ratio_aggregates_across_days", "callee": "VRPTWDay", "is_member_call": false, "source_file": "tests/test_travel_ratio.py", "source_location": "L54", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_travel_ratio_test_overall_ratio_aggregates_across_days", "callee": "evaluate_travel_ratio", "is_member_call": false, "source_file": "tests/test_travel_ratio.py", "source_location": "L59", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_travel_ratio_test_overall_ratio_aggregates_across_days", "callee": "HaversineMatrix", "is_member_call": false, "source_file": "tests/test_travel_ratio.py", "source_location": "L59", "receiver": null}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.31/e0f516a85c8039f189c4e8c728cc8d7c2fa4cb6aed920648ac261cd1ba909e03.json b/graphify-out/cache/ast/v0.9.31/e0f516a85c8039f189c4e8c728cc8d7c2fa4cb6aed920648ac261cd1ba909e03.json new file mode 100644 index 0000000..2fe428a --- /dev/null +++ b/graphify-out/cache/ast/v0.9.31/e0f516a85c8039f189c4e8c728cc8d7c2fa4cb6aed920648ac261cd1ba909e03.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_src_utils_init_py", "label": "__init__.py", "file_type": "code", "source_file": "src/utils/__init__.py", "source_location": "L1"}], "edges": [], "raw_calls": []} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.31/e6df9426218af420db0d9ef2a46f9ef03340443dcb54ff3155dc8e4f2e8c106c.json b/graphify-out/cache/ast/v0.9.31/e6df9426218af420db0d9ef2a46f9ef03340443dcb54ff3155dc8e4f2e8c106c.json new file mode 100644 index 0000000..4eb8110 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.31/e6df9426218af420db0d9ef2a46f9ef03340443dcb54ff3155dc8e4f2e8c106c.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_src_validation_kakao_matrix_py", "label": "kakao_matrix.py", "file_type": "code", "source_file": "src/validation/kakao_matrix.py", "source_location": "L1"}, {"id": "$graphify-root$_src_validation_kakao_matrix_kakaomobilitymatrix", "label": "KakaoMobilityMatrix", "file_type": "code", "source_file": "src/validation/kakao_matrix.py", "source_location": "L47", "_callable": true, "_callable_class": true}, {"id": "timematrix", "label": "TimeMatrix", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/src/validation/kakao_matrix.py"}, {"id": "$graphify-root$_src_validation_kakao_matrix_kakaomobilitymatrix_init", "label": ".__init__()", "file_type": "code", "source_file": "src/validation/kakao_matrix.py", "source_location": "L58", "_callable": true}, {"id": "path", "label": "Path", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/src/validation/kakao_matrix.py"}, {"id": "$graphify-root$_src_validation_kakao_matrix_kakaomobilitymatrix_from_env", "label": ".from_env()", "file_type": "code", "source_file": "src/validation/kakao_matrix.py", "source_location": "L89", "_callable": true}, {"id": "any", "label": "Any", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/src/validation/kakao_matrix.py"}, {"id": "$graphify-root$_src_validation_kakao_matrix_kakaomobilitymatrix_load_dotenv", "label": "._load_dotenv()", "file_type": "code", "source_file": "src/validation/kakao_matrix.py", "source_location": "L111", "_callable": true}, {"id": "$graphify-root$_src_validation_kakao_matrix_kakaomobilitymatrix_get_travel_time", "label": ".get_travel_time()", "file_type": "code", "source_file": "src/validation/kakao_matrix.py", "source_location": "L121", "_callable": true}, {"id": "vrptwplace", "label": "VRPTWPlace", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/src/validation/kakao_matrix.py"}, {"id": "$graphify-root$_src_validation_kakao_matrix_kakaomobilitymatrix_aprefetch_matrix", "label": ".aprefetch_matrix()", "file_type": "code", "source_file": "src/validation/kakao_matrix.py", "source_location": "L139", "_callable": true}, {"id": "$graphify-root$_src_validation_kakao_matrix_kakaomobilitymatrix_acall_kakao", "label": "._acall_kakao()", "file_type": "code", "source_file": "src/validation/kakao_matrix.py", "source_location": "L177", "_callable": true}, {"id": "$graphify-root$_src_validation_kakao_matrix_kakaomobilitymatrix_call_kakao_sync", "label": "._call_kakao_sync()", "file_type": "code", "source_file": "src/validation/kakao_matrix.py", "source_location": "L212", "_callable": true}, {"id": "$graphify-root$_src_validation_kakao_matrix_kakaomobilitymatrix_parse_duration", "label": "._parse_duration()", "file_type": "code", "source_file": "src/validation/kakao_matrix.py", "source_location": "L265", "_callable": true}, {"id": "$graphify-root$_src_validation_kakao_matrix_kakaomobilitymatrix_make_key", "label": "._make_key()", "file_type": "code", "source_file": "src/validation/kakao_matrix.py", "source_location": "L278", "_callable": true}, {"id": "$graphify-root$_src_validation_kakao_matrix_kakaomobilitymatrix_load_cache", "label": "._load_cache()", "file_type": "code", "source_file": "src/validation/kakao_matrix.py", "source_location": "L284", "_callable": true}, {"id": "$graphify-root$_src_validation_kakao_matrix_kakaomobilitymatrix_maybe_save_cache", "label": "._maybe_save_cache()", "file_type": "code", "source_file": "src/validation/kakao_matrix.py", "source_location": "L294", "_callable": true}, {"id": "$graphify-root$_src_validation_kakao_matrix_kakaomobilitymatrix_save_cache", "label": ".save_cache()", "file_type": "code", "source_file": "src/validation/kakao_matrix.py", "source_location": "L299", "_callable": true}, {"id": "$graphify-root$_src_validation_kakao_matrix_kakaomobilitymatrix_stats", "label": ".stats()", "file_type": "code", "source_file": "src/validation/kakao_matrix.py", "source_location": "L310", "_callable": true}, {"id": "$graphify-root$_src_validation_kakao_matrix_kakaomobilitymatrix_cache_size", "label": ".cache_size()", "file_type": "code", "source_file": "src/validation/kakao_matrix.py", "source_location": "L314", "_callable": true}, {"id": "$graphify-root$_src_validation_kakao_matrix_kakaomobilitymatrix_is_quota_exhausted", "label": ".is_quota_exhausted()", "file_type": "code", "source_file": "src/validation/kakao_matrix.py", "source_location": "L318", "_callable": true}, {"id": "$graphify-root$_src_validation_kakao_matrix_rationale_1", "label": "\uce74\uce74\uc624 \ubaa8\ube4c\ub9ac\ud2f0 \uae38\ucc3e\uae30 API \u2192 TimeMatrix \uc5b4\ub311\ud130 (httpx \uae30\ubc18). VRPTW \uc5d4\uc9c4\uc758 TimeMatrix \uc778\ud130\ud398\uc774\uc2a4\ub97c \uad6c\ud604\ud574\u2026", "file_type": "rationale", "source_file": "src/validation/kakao_matrix.py", "source_location": "L1"}, {"id": "$graphify-root$_src_validation_kakao_matrix_rationale_48", "label": "\uce74\uce74\uc624 \ubaa8\ube4c\ub9ac\ud2f0 \uae38\ucc3e\uae30 API \uae30\ubc18 TimeMatrix. \uce90\uc2dc \ud0a4: 'lng1,lat1|lng2,lat2' (\uc18c\uc218\uc810 4\uc790\ub9ac = \uc57d 11m\u2026", "file_type": "rationale", "source_file": "src/validation/kakao_matrix.py", "source_location": "L48"}, {"id": "$graphify-root$_src_validation_kakao_matrix_rationale_95", "label": "`.env`\uc5d0\uc11c KAKAO_MOBILITY_KEY (\uc5c6\uc73c\uba74 KAKAO_REST_API_KEY) \ub85c\ub4dc.", "file_type": "rationale", "source_file": "src/validation/kakao_matrix.py", "source_location": "L95"}, {"id": "$graphify-root$_src_validation_kakao_matrix_rationale_122", "label": "\uce90\uc2dc \uc870\ud68c + Haversine \ud3f4\ubc31. API \uc9c1\uc811 \ud638\ucd9c \uc5c6\uc74c.", "file_type": "rationale", "source_file": "src/validation/kakao_matrix.py", "source_location": "L122"}, {"id": "$graphify-root$_src_validation_kakao_matrix_rationale_144", "label": "\ubaa8\ub4e0 POI \uc30d\uc758 \uc774\ub3d9\uc2dc\uac04\uc744 \ube44\ub3d9\uae30\ub85c \uc0ac\uc804 \ub85c\ub4dc\ud55c\ub2e4. VRPTWEngine.validate() \ud638\ucd9c \uc804\uc5d0 await \ud574\ub450\uba74\u2026", "file_type": "rationale", "source_file": "src/validation/kakao_matrix.py", "source_location": "L144"}, {"id": "$graphify-root$_src_validation_kakao_matrix_rationale_180", "label": "\uce74\uce74\uc624 \ubaa8\ube4c\ub9ac\ud2f0 \ube44\ub3d9\uae30 \ud638\ucd9c (httpx.AsyncClient).", "file_type": "rationale", "source_file": "src/validation/kakao_matrix.py", "source_location": "L180"}, {"id": "$graphify-root$_src_validation_kakao_matrix_rationale_215", "label": "\ub3d9\uae30 API \ud638\ucd9c + \uce90\uc2dc \uc800\uc7a5 + \ud1b5\uacc4 \uc5c5\ub370\uc774\ud2b8 (httpx.Client). \uce90\uc2dc\uc5d0 \uc774\ubbf8 \uc788\uc73c\uba74 API \ud638\ucd9c \uc5c6\uc774 \uce90\uc2dc \uac12 \ubc18\ud658.", "file_type": "rationale", "source_file": "src/validation/kakao_matrix.py", "source_location": "L215"}], "edges": [{"source": "$graphify-root$_src_validation_kakao_matrix_py", "target": "asyncio", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "src/validation/kakao_matrix.py", "source_location": "L26", "weight": 1.0}, {"source": "$graphify-root$_src_validation_kakao_matrix_py", "target": "json", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "src/validation/kakao_matrix.py", "source_location": "L27", "weight": 1.0}, {"source": "$graphify-root$_src_validation_kakao_matrix_py", "target": "os", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "src/validation/kakao_matrix.py", "source_location": "L28", "weight": 1.0}, {"source": "$graphify-root$_src_validation_kakao_matrix_py", "target": "time", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "src/validation/kakao_matrix.py", "source_location": "L29", "weight": 1.0}, {"source": "$graphify-root$_src_validation_kakao_matrix_py", "target": "pathlib", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "src/validation/kakao_matrix.py", "source_location": "L30", "weight": 1.0}, {"source": "$graphify-root$_src_validation_kakao_matrix_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "src/validation/kakao_matrix.py", "source_location": "L31", "weight": 1.0}, {"source": "$graphify-root$_src_validation_kakao_matrix_py", "target": "httpx", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "src/validation/kakao_matrix.py", "source_location": "L33", "weight": 1.0}, {"source": "$graphify-root$_src_validation_kakao_matrix_py", "target": "src_data_models", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "src/validation/kakao_matrix.py", "source_location": "L35", "weight": 1.0}, {"source": "$graphify-root$_src_validation_kakao_matrix_py", "target": "src_validation_vrptw_engine", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "src/validation/kakao_matrix.py", "source_location": "L36", "weight": 1.0}, {"source": "$graphify-root$_src_validation_kakao_matrix_py", "target": "$graphify-root$_src_validation_kakao_matrix_kakaomobilitymatrix", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/validation/kakao_matrix.py", "source_location": "L47", "weight": 1.0}, {"source": "$graphify-root$_src_validation_kakao_matrix_kakaomobilitymatrix", "target": "timematrix", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "src/validation/kakao_matrix.py", "source_location": "L47", "weight": 1.0}, {"source": "$graphify-root$_src_validation_kakao_matrix_kakaomobilitymatrix", "target": "$graphify-root$_src_validation_kakao_matrix_kakaomobilitymatrix_init", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/validation/kakao_matrix.py", "source_location": "L58", "weight": 1.0}, {"source": "$graphify-root$_src_validation_kakao_matrix_kakaomobilitymatrix_init", "target": "path", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "src/validation/kakao_matrix.py", "source_location": "L58", "weight": 1.0}, {"source": "$graphify-root$_src_validation_kakao_matrix_kakaomobilitymatrix", "target": "$graphify-root$_src_validation_kakao_matrix_kakaomobilitymatrix_from_env", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/validation/kakao_matrix.py", "source_location": "L89", "weight": 1.0}, {"source": "$graphify-root$_src_validation_kakao_matrix_kakaomobilitymatrix_from_env", "target": "path", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "src/validation/kakao_matrix.py", "source_location": "L89", "weight": 1.0}, {"source": "$graphify-root$_src_validation_kakao_matrix_kakaomobilitymatrix_from_env", "target": "path", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "src/validation/kakao_matrix.py", "source_location": "L89", "weight": 1.0}, {"source": "$graphify-root$_src_validation_kakao_matrix_kakaomobilitymatrix_from_env", "target": "any", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "src/validation/kakao_matrix.py", "source_location": "L89", "weight": 1.0}, {"source": "$graphify-root$_src_validation_kakao_matrix_kakaomobilitymatrix", "target": "$graphify-root$_src_validation_kakao_matrix_kakaomobilitymatrix_load_dotenv", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/validation/kakao_matrix.py", "source_location": "L111", "weight": 1.0}, {"source": "$graphify-root$_src_validation_kakao_matrix_kakaomobilitymatrix_load_dotenv", "target": "path", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "src/validation/kakao_matrix.py", "source_location": "L111", "weight": 1.0}, {"source": "$graphify-root$_src_validation_kakao_matrix_kakaomobilitymatrix", "target": "$graphify-root$_src_validation_kakao_matrix_kakaomobilitymatrix_get_travel_time", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/validation/kakao_matrix.py", "source_location": "L121", "weight": 1.0}, {"source": "$graphify-root$_src_validation_kakao_matrix_kakaomobilitymatrix_get_travel_time", "target": "vrptwplace", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "src/validation/kakao_matrix.py", "source_location": "L121", "weight": 1.0}, {"source": "$graphify-root$_src_validation_kakao_matrix_kakaomobilitymatrix_get_travel_time", "target": "vrptwplace", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "src/validation/kakao_matrix.py", "source_location": "L121", "weight": 1.0}, {"source": "$graphify-root$_src_validation_kakao_matrix_kakaomobilitymatrix", "target": "$graphify-root$_src_validation_kakao_matrix_kakaomobilitymatrix_aprefetch_matrix", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/validation/kakao_matrix.py", "source_location": "L139", "weight": 1.0}, {"source": "$graphify-root$_src_validation_kakao_matrix_kakaomobilitymatrix_aprefetch_matrix", "target": "vrptwplace", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "src/validation/kakao_matrix.py", "source_location": "L139", "weight": 1.0}, {"source": "$graphify-root$_src_validation_kakao_matrix_kakaomobilitymatrix", "target": "$graphify-root$_src_validation_kakao_matrix_kakaomobilitymatrix_acall_kakao", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/validation/kakao_matrix.py", "source_location": "L177", "weight": 1.0}, {"source": "$graphify-root$_src_validation_kakao_matrix_kakaomobilitymatrix_acall_kakao", "target": "vrptwplace", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "src/validation/kakao_matrix.py", "source_location": "L177", "weight": 1.0}, {"source": "$graphify-root$_src_validation_kakao_matrix_kakaomobilitymatrix_acall_kakao", "target": "vrptwplace", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "src/validation/kakao_matrix.py", "source_location": "L177", "weight": 1.0}, {"source": "$graphify-root$_src_validation_kakao_matrix_kakaomobilitymatrix", "target": "$graphify-root$_src_validation_kakao_matrix_kakaomobilitymatrix_call_kakao_sync", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/validation/kakao_matrix.py", "source_location": "L212", "weight": 1.0}, {"source": "$graphify-root$_src_validation_kakao_matrix_kakaomobilitymatrix_call_kakao_sync", "target": "vrptwplace", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "src/validation/kakao_matrix.py", "source_location": "L212", "weight": 1.0}, {"source": "$graphify-root$_src_validation_kakao_matrix_kakaomobilitymatrix_call_kakao_sync", "target": "vrptwplace", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "src/validation/kakao_matrix.py", "source_location": "L212", "weight": 1.0}, {"source": "$graphify-root$_src_validation_kakao_matrix_kakaomobilitymatrix", "target": "$graphify-root$_src_validation_kakao_matrix_kakaomobilitymatrix_parse_duration", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/validation/kakao_matrix.py", "source_location": "L265", "weight": 1.0}, {"source": "$graphify-root$_src_validation_kakao_matrix_kakaomobilitymatrix", "target": "$graphify-root$_src_validation_kakao_matrix_kakaomobilitymatrix_make_key", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/validation/kakao_matrix.py", "source_location": "L278", "weight": 1.0}, {"source": "$graphify-root$_src_validation_kakao_matrix_kakaomobilitymatrix_make_key", "target": "vrptwplace", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "src/validation/kakao_matrix.py", "source_location": "L278", "weight": 1.0}, {"source": "$graphify-root$_src_validation_kakao_matrix_kakaomobilitymatrix_make_key", "target": "vrptwplace", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "src/validation/kakao_matrix.py", "source_location": "L278", "weight": 1.0}, {"source": "$graphify-root$_src_validation_kakao_matrix_kakaomobilitymatrix", "target": "$graphify-root$_src_validation_kakao_matrix_kakaomobilitymatrix_load_cache", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/validation/kakao_matrix.py", "source_location": "L284", "weight": 1.0}, {"source": "$graphify-root$_src_validation_kakao_matrix_kakaomobilitymatrix", "target": "$graphify-root$_src_validation_kakao_matrix_kakaomobilitymatrix_maybe_save_cache", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/validation/kakao_matrix.py", "source_location": "L294", "weight": 1.0}, {"source": "$graphify-root$_src_validation_kakao_matrix_kakaomobilitymatrix", "target": "$graphify-root$_src_validation_kakao_matrix_kakaomobilitymatrix_save_cache", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/validation/kakao_matrix.py", "source_location": "L299", "weight": 1.0}, {"source": "$graphify-root$_src_validation_kakao_matrix_kakaomobilitymatrix", "target": "$graphify-root$_src_validation_kakao_matrix_kakaomobilitymatrix_stats", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/validation/kakao_matrix.py", "source_location": "L310", "weight": 1.0}, {"source": "$graphify-root$_src_validation_kakao_matrix_kakaomobilitymatrix", "target": "$graphify-root$_src_validation_kakao_matrix_kakaomobilitymatrix_cache_size", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/validation/kakao_matrix.py", "source_location": "L314", "weight": 1.0}, {"source": "$graphify-root$_src_validation_kakao_matrix_kakaomobilitymatrix", "target": "$graphify-root$_src_validation_kakao_matrix_kakaomobilitymatrix_is_quota_exhausted", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/validation/kakao_matrix.py", "source_location": "L318", "weight": 1.0}, {"source": "$graphify-root$_src_validation_kakao_matrix_kakaomobilitymatrix_init", "target": "path", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/validation/kakao_matrix.py", "source_location": "L73", "weight": 1.0}, {"source": "$graphify-root$_src_validation_kakao_matrix_kakaomobilitymatrix_init", "target": "$graphify-root$_src_validation_kakao_matrix_kakaomobilitymatrix_load_cache", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/validation/kakao_matrix.py", "source_location": "L79", "weight": 1.0}, {"source": "$graphify-root$_src_validation_kakao_matrix_kakaomobilitymatrix_from_env", "target": "$graphify-root$_src_validation_kakao_matrix_kakaomobilitymatrix_load_dotenv", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/validation/kakao_matrix.py", "source_location": "L97", "weight": 1.0}, {"source": "$graphify-root$_src_validation_kakao_matrix_kakaomobilitymatrix_from_env", "target": "path", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/validation/kakao_matrix.py", "source_location": "L97", "weight": 1.0}, {"source": "$graphify-root$_src_validation_kakao_matrix_kakaomobilitymatrix_get_travel_time", "target": "$graphify-root$_src_validation_kakao_matrix_kakaomobilitymatrix_make_key", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/validation/kakao_matrix.py", "source_location": "L126", "weight": 1.0}, {"source": "$graphify-root$_src_validation_kakao_matrix_kakaomobilitymatrix_aprefetch_matrix", "target": "$graphify-root$_src_validation_kakao_matrix_kakaomobilitymatrix_save_cache", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/validation/kakao_matrix.py", "source_location": "L174", "weight": 1.0}, {"source": "$graphify-root$_src_validation_kakao_matrix_kakaomobilitymatrix_acall_kakao", "target": "$graphify-root$_src_validation_kakao_matrix_kakaomobilitymatrix_parse_duration", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/validation/kakao_matrix.py", "source_location": "L194", "weight": 1.0}, {"source": "$graphify-root$_src_validation_kakao_matrix_kakaomobilitymatrix_call_kakao_sync", "target": "$graphify-root$_src_validation_kakao_matrix_kakaomobilitymatrix_make_key", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/validation/kakao_matrix.py", "source_location": "L219", "weight": 1.0}, {"source": "$graphify-root$_src_validation_kakao_matrix_kakaomobilitymatrix_call_kakao_sync", "target": "$graphify-root$_src_validation_kakao_matrix_kakaomobilitymatrix_parse_duration", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/validation/kakao_matrix.py", "source_location": "L242", "weight": 1.0}, {"source": "$graphify-root$_src_validation_kakao_matrix_kakaomobilitymatrix_call_kakao_sync", "target": "$graphify-root$_src_validation_kakao_matrix_kakaomobilitymatrix_maybe_save_cache", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/validation/kakao_matrix.py", "source_location": "L246", "weight": 1.0}, {"source": "$graphify-root$_src_validation_kakao_matrix_kakaomobilitymatrix_maybe_save_cache", "target": "$graphify-root$_src_validation_kakao_matrix_kakaomobilitymatrix_save_cache", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/validation/kakao_matrix.py", "source_location": "L297", "weight": 1.0}, {"source": "$graphify-root$_src_validation_kakao_matrix_rationale_1", "target": "$graphify-root$_src_validation_kakao_matrix_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/validation/kakao_matrix.py", "source_location": "L1", "weight": 1.0}, {"source": "$graphify-root$_src_validation_kakao_matrix_rationale_48", "target": "$graphify-root$_src_validation_kakao_matrix_kakaomobilitymatrix", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/validation/kakao_matrix.py", "source_location": "L48", "weight": 1.0}, {"source": "$graphify-root$_src_validation_kakao_matrix_rationale_95", "target": "$graphify-root$_src_validation_kakao_matrix_kakaomobilitymatrix_from_env", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/validation/kakao_matrix.py", "source_location": "L95", "weight": 1.0}, {"source": "$graphify-root$_src_validation_kakao_matrix_rationale_122", "target": "$graphify-root$_src_validation_kakao_matrix_kakaomobilitymatrix_get_travel_time", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/validation/kakao_matrix.py", "source_location": "L122", "weight": 1.0}, {"source": "$graphify-root$_src_validation_kakao_matrix_rationale_144", "target": "$graphify-root$_src_validation_kakao_matrix_kakaomobilitymatrix_aprefetch_matrix", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/validation/kakao_matrix.py", "source_location": "L144", "weight": 1.0}, {"source": "$graphify-root$_src_validation_kakao_matrix_rationale_180", "target": "$graphify-root$_src_validation_kakao_matrix_kakaomobilitymatrix_acall_kakao", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/validation/kakao_matrix.py", "source_location": "L180", "weight": 1.0}, {"source": "$graphify-root$_src_validation_kakao_matrix_rationale_215", "target": "$graphify-root$_src_validation_kakao_matrix_kakaomobilitymatrix_call_kakao_sync", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/validation/kakao_matrix.py", "source_location": "L215", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_src_validation_kakao_matrix_kakaomobilitymatrix_init", "callee": "ValueError", "is_member_call": false, "source_file": "src/validation/kakao_matrix.py", "source_location": "L68", "receiver": null}, {"caller_nid": "$graphify-root$_src_validation_kakao_matrix_kakaomobilitymatrix_init", "callee": "HaversineMatrix", "is_member_call": false, "source_file": "src/validation/kakao_matrix.py", "source_location": "L80", "receiver": null}, {"caller_nid": "$graphify-root$_src_validation_kakao_matrix_kakaomobilitymatrix_from_env", "callee": "resolve", "is_member_call": true, "source_file": "src/validation/kakao_matrix.py", "source_location": "L99", "receiver": null}, {"caller_nid": "$graphify-root$_src_validation_kakao_matrix_kakaomobilitymatrix_from_env", "callee": "__file__", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "src/validation/kakao_matrix.py", "source_location": "L99"}, {"caller_nid": "$graphify-root$_src_validation_kakao_matrix_kakaomobilitymatrix_from_env", "callee": "exists", "is_member_call": true, "source_file": "src/validation/kakao_matrix.py", "source_location": "L101", "receiver": "env_default"}, {"caller_nid": "$graphify-root$_src_validation_kakao_matrix_kakaomobilitymatrix_from_env", "callee": "get", "is_member_call": true, "source_file": "src/validation/kakao_matrix.py", "source_location": "L105", "receiver": null}, {"caller_nid": "$graphify-root$_src_validation_kakao_matrix_kakaomobilitymatrix_from_env", "callee": "get", "is_member_call": true, "source_file": "src/validation/kakao_matrix.py", "source_location": "L106", "receiver": null}, {"caller_nid": "$graphify-root$_src_validation_kakao_matrix_kakaomobilitymatrix_from_env", "callee": "cls", "is_member_call": false, "source_file": "src/validation/kakao_matrix.py", "source_location": "L108", "receiver": null}, {"caller_nid": "$graphify-root$_src_validation_kakao_matrix_kakaomobilitymatrix_load_dotenv", "callee": "exists", "is_member_call": true, "source_file": "src/validation/kakao_matrix.py", "source_location": "L112", "receiver": "env_path"}, {"caller_nid": "$graphify-root$_src_validation_kakao_matrix_kakaomobilitymatrix_load_dotenv", "callee": "splitlines", "is_member_call": true, "source_file": "src/validation/kakao_matrix.py", "source_location": "L114", "receiver": null}, {"caller_nid": "$graphify-root$_src_validation_kakao_matrix_kakaomobilitymatrix_load_dotenv", "callee": "read_text", "is_member_call": true, "source_file": "src/validation/kakao_matrix.py", "source_location": "L114", "receiver": "env_path"}, {"caller_nid": "$graphify-root$_src_validation_kakao_matrix_kakaomobilitymatrix_load_dotenv", "callee": "strip", "is_member_call": true, "source_file": "src/validation/kakao_matrix.py", "source_location": "L115", "receiver": "line"}, {"caller_nid": "$graphify-root$_src_validation_kakao_matrix_kakaomobilitymatrix_load_dotenv", "callee": "startswith", "is_member_call": true, "source_file": "src/validation/kakao_matrix.py", "source_location": "L116", "receiver": "line"}, {"caller_nid": "$graphify-root$_src_validation_kakao_matrix_kakaomobilitymatrix_load_dotenv", "callee": "partition", "is_member_call": true, "source_file": "src/validation/kakao_matrix.py", "source_location": "L117", "receiver": "line"}, {"caller_nid": "$graphify-root$_src_validation_kakao_matrix_kakaomobilitymatrix_load_dotenv", "callee": "setdefault", "is_member_call": true, "source_file": "src/validation/kakao_matrix.py", "source_location": "L118", "receiver": null}, {"caller_nid": "$graphify-root$_src_validation_kakao_matrix_kakaomobilitymatrix_load_dotenv", "callee": "strip", "is_member_call": true, "source_file": "src/validation/kakao_matrix.py", "source_location": "L118", "receiver": "k"}, {"caller_nid": "$graphify-root$_src_validation_kakao_matrix_kakaomobilitymatrix_load_dotenv", "callee": "strip", "is_member_call": true, "source_file": "src/validation/kakao_matrix.py", "source_location": "L118", "receiver": "v"}, {"caller_nid": "$graphify-root$_src_validation_kakao_matrix_kakaomobilitymatrix_aprefetch_matrix", "callee": "Semaphore", "is_member_call": true, "source_file": "src/validation/kakao_matrix.py", "source_location": "L156", "receiver": "asyncio"}, {"caller_nid": "$graphify-root$_src_validation_kakao_matrix_kakaomobilitymatrix_aprefetch_matrix", "callee": "gather", "is_member_call": true, "source_file": "src/validation/kakao_matrix.py", "source_location": "L172", "receiver": "asyncio"}, {"caller_nid": "$graphify-root$_src_validation_kakao_matrix_kakaomobilitymatrix_aprefetch_matrix", "callee": "fetch_one", "is_member_call": false, "source_file": "src/validation/kakao_matrix.py", "source_location": "L172", "receiver": null}, {"caller_nid": "$graphify-root$_src_validation_kakao_matrix_kakaomobilitymatrix_acall_kakao", "callee": "AsyncClient", "is_member_call": true, "source_file": "src/validation/kakao_matrix.py", "source_location": "L187", "receiver": "httpx"}, {"caller_nid": "$graphify-root$_src_validation_kakao_matrix_kakaomobilitymatrix_acall_kakao", "callee": "get", "is_member_call": true, "source_file": "src/validation/kakao_matrix.py", "source_location": "L190", "receiver": "client"}, {"caller_nid": "$graphify-root$_src_validation_kakao_matrix_kakaomobilitymatrix_acall_kakao", "callee": "KAKAO_DIRECTIONS_URL", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "src/validation/kakao_matrix.py", "source_location": "L191"}, {"caller_nid": "$graphify-root$_src_validation_kakao_matrix_kakaomobilitymatrix_acall_kakao", "callee": "json", "is_member_call": true, "source_file": "src/validation/kakao_matrix.py", "source_location": "L194", "receiver": "r"}, {"caller_nid": "$graphify-root$_src_validation_kakao_matrix_kakaomobilitymatrix_acall_kakao", "callee": "RuntimeError", "is_member_call": false, "source_file": "src/validation/kakao_matrix.py", "source_location": "L200", "receiver": null}, {"caller_nid": "$graphify-root$_src_validation_kakao_matrix_kakaomobilitymatrix_acall_kakao", "callee": "sleep", "is_member_call": true, "source_file": "src/validation/kakao_matrix.py", "source_location": "L201", "receiver": "asyncio"}, {"caller_nid": "$graphify-root$_src_validation_kakao_matrix_kakaomobilitymatrix_acall_kakao", "callee": "sleep", "is_member_call": true, "source_file": "src/validation/kakao_matrix.py", "source_location": "L204", "receiver": "asyncio"}, {"caller_nid": "$graphify-root$_src_validation_kakao_matrix_kakaomobilitymatrix_call_kakao_sync", "callee": "Client", "is_member_call": true, "source_file": "src/validation/kakao_matrix.py", "source_location": "L239", "receiver": "httpx"}, {"caller_nid": "$graphify-root$_src_validation_kakao_matrix_kakaomobilitymatrix_call_kakao_sync", "callee": "get", "is_member_call": true, "source_file": "src/validation/kakao_matrix.py", "source_location": "L240", "receiver": "client"}, {"caller_nid": "$graphify-root$_src_validation_kakao_matrix_kakaomobilitymatrix_call_kakao_sync", "callee": "KAKAO_DIRECTIONS_URL", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "src/validation/kakao_matrix.py", "source_location": "L240"}, {"caller_nid": "$graphify-root$_src_validation_kakao_matrix_kakaomobilitymatrix_call_kakao_sync", "callee": "json", "is_member_call": true, "source_file": "src/validation/kakao_matrix.py", "source_location": "L242", "receiver": "r"}, {"caller_nid": "$graphify-root$_src_validation_kakao_matrix_kakaomobilitymatrix_call_kakao_sync", "callee": "RuntimeError", "is_member_call": false, "source_file": "src/validation/kakao_matrix.py", "source_location": "L253", "receiver": null}, {"caller_nid": "$graphify-root$_src_validation_kakao_matrix_kakaomobilitymatrix_call_kakao_sync", "callee": "sleep", "is_member_call": true, "source_file": "src/validation/kakao_matrix.py", "source_location": "L254", "receiver": "time"}, {"caller_nid": "$graphify-root$_src_validation_kakao_matrix_kakaomobilitymatrix_call_kakao_sync", "callee": "sleep", "is_member_call": true, "source_file": "src/validation/kakao_matrix.py", "source_location": "L257", "receiver": "time"}, {"caller_nid": "$graphify-root$_src_validation_kakao_matrix_kakaomobilitymatrix_parse_duration", "callee": "get", "is_member_call": true, "source_file": "src/validation/kakao_matrix.py", "source_location": "L266", "receiver": "data"}, {"caller_nid": "$graphify-root$_src_validation_kakao_matrix_kakaomobilitymatrix_parse_duration", "callee": "get", "is_member_call": true, "source_file": "src/validation/kakao_matrix.py", "source_location": "L269", "receiver": null}, {"caller_nid": "$graphify-root$_src_validation_kakao_matrix_kakaomobilitymatrix_parse_duration", "callee": "get", "is_member_call": true, "source_file": "src/validation/kakao_matrix.py", "source_location": "L270", "receiver": null}, {"caller_nid": "$graphify-root$_src_validation_kakao_matrix_kakaomobilitymatrix_parse_duration", "callee": "get", "is_member_call": true, "source_file": "src/validation/kakao_matrix.py", "source_location": "L274", "receiver": null}, {"caller_nid": "$graphify-root$_src_validation_kakao_matrix_kakaomobilitymatrix_load_cache", "callee": "exists", "is_member_call": true, "source_file": "src/validation/kakao_matrix.py", "source_location": "L285", "receiver": null}, {"caller_nid": "$graphify-root$_src_validation_kakao_matrix_kakaomobilitymatrix_load_cache", "callee": "loads", "is_member_call": true, "source_file": "src/validation/kakao_matrix.py", "source_location": "L288", "receiver": "json"}, {"caller_nid": "$graphify-root$_src_validation_kakao_matrix_kakaomobilitymatrix_load_cache", "callee": "read_text", "is_member_call": true, "source_file": "src/validation/kakao_matrix.py", "source_location": "L288", "receiver": null}, {"caller_nid": "$graphify-root$_src_validation_kakao_matrix_kakaomobilitymatrix_load_cache", "callee": "items", "is_member_call": true, "source_file": "src/validation/kakao_matrix.py", "source_location": "L289", "receiver": "data"}, {"caller_nid": "$graphify-root$_src_validation_kakao_matrix_kakaomobilitymatrix_load_cache", "callee": "ValueError", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "src/validation/kakao_matrix.py", "source_location": "L290"}, {"caller_nid": "$graphify-root$_src_validation_kakao_matrix_kakaomobilitymatrix_save_cache", "callee": "mkdir", "is_member_call": true, "source_file": "src/validation/kakao_matrix.py", "source_location": "L302", "receiver": null}, {"caller_nid": "$graphify-root$_src_validation_kakao_matrix_kakaomobilitymatrix_save_cache", "callee": "write_text", "is_member_call": true, "source_file": "src/validation/kakao_matrix.py", "source_location": "L303", "receiver": null}, {"caller_nid": "$graphify-root$_src_validation_kakao_matrix_kakaomobilitymatrix_save_cache", "callee": "dumps", "is_member_call": true, "source_file": "src/validation/kakao_matrix.py", "source_location": "L304", "receiver": "json"}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.31/e6f41625a2ab2c40d1c03c6d87d4dd08f54c38cb277788d42c155b68b3ad26a0.json b/graphify-out/cache/ast/v0.9.31/e6f41625a2ab2c40d1c03c6d87d4dd08f54c38cb277788d42c155b68b3ad26a0.json new file mode 100644 index 0000000..2694a80 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.31/e6f41625a2ab2c40d1c03c6d87d4dd08f54c38cb277788d42c155b68b3ad26a0.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_src_data_kakao_local_py", "label": "kakao_local.py", "file_type": "code", "source_file": "src/data/kakao_local.py", "source_location": "L1"}, {"id": "$graphify-root$_src_data_kakao_local_kakaolocalclient", "label": "KakaoLocalClient", "file_type": "code", "source_file": "src/data/kakao_local.py", "source_location": "L24", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_src_data_kakao_local_kakaolocalclient_init", "label": ".__init__()", "file_type": "code", "source_file": "src/data/kakao_local.py", "source_location": "L27", "_callable": true}, {"id": "$graphify-root$_src_data_kakao_local_kakaolocalclient_from_env", "label": ".from_env()", "file_type": "code", "source_file": "src/data/kakao_local.py", "source_location": "L36", "_callable": true}, {"id": "$graphify-root$_src_data_kakao_local_kakaolocalclient_enabled", "label": ".enabled()", "file_type": "code", "source_file": "src/data/kakao_local.py", "source_location": "L40", "_callable": true}, {"id": "$graphify-root$_src_data_kakao_local_kakaolocalclient_search_keyword", "label": ".search_keyword()", "file_type": "code", "source_file": "src/data/kakao_local.py", "source_location": "L43", "_callable": true}, {"id": "kakaoplace", "label": "KakaoPlace", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/src/data/kakao_local.py"}, {"id": "$graphify-root$_src_data_kakao_local_kakaolocalclient_search_keyword_list", "label": ".search_keyword_list()", "file_type": "code", "source_file": "src/data/kakao_local.py", "source_location": "L82", "_callable": true}, {"id": "$graphify-root$_src_data_kakao_local_kakaolocalclient_geocode_address", "label": ".geocode_address()", "file_type": "code", "source_file": "src/data/kakao_local.py", "source_location": "L125", "_callable": true}, {"id": "$graphify-root$_src_data_kakao_local_rationale_1", "label": "\uce74\uce74\uc624 \ub85c\uceec \ud0a4\uc6cc\ub4dc \uc7a5\uc18c \uac80\uc0c9 \ud074\ub77c\uc774\uc5b8\ud2b8 (httpx + Graceful Fallback). \uc2dd\ub2f9\u00b7\uce74\ud398 \ub4f1 TourAPI\u2026", "file_type": "rationale", "source_file": "src/data/kakao_local.py", "source_location": "L1"}, {"id": "$graphify-root$_src_data_kakao_local_rationale_25", "label": "\uce74\uce74\uc624 \ub85c\uceec \ud0a4\uc6cc\ub4dc \uac80\uc0c9. \uc778\uba54\ubaa8\ub9ac \uce90\uc2dc\ub85c \ub3d9\uc77c \uc9c8\uc758 \uc911\ubcf5 \ud638\ucd9c\uc744 \ub9c9\ub294\ub2e4.", "file_type": "rationale", "source_file": "src/data/kakao_local.py", "source_location": "L25"}, {"id": "$graphify-root$_src_data_kakao_local_rationale_44", "label": "\uc7a5\uc18c\uba85\uc73c\ub85c \uac00\uc7a5 \uad00\ub828\ub3c4 \ub192\uc740 1\uac74\uc744 \uc870\ud68c. \uc2e4\ud328 \uc2dc None.", "file_type": "rationale", "source_file": "src/data/kakao_local.py", "source_location": "L44"}, {"id": "$graphify-root$_src_data_kakao_local_rationale_83", "label": "\ud0a4\uc6cc\ub4dc\ub85c \ub2e4\uc218 \ud6c4\ubcf4\ub97c \uc870\ud68c(\uac80\uc0c9 \ud328\ub110 \ubcf4\uac15\uc6a9). \uc2e4\ud328 \uc2dc \ube48 \ub9ac\uc2a4\ud2b8.", "file_type": "rationale", "source_file": "src/data/kakao_local.py", "source_location": "L83"}, {"id": "$graphify-root$_src_data_kakao_local_rationale_126", "label": "\ub3c4\ub85c\uba85\uc8fc\uc18c \u2192 (\uc704\ub3c4, \uacbd\ub3c4). \uacb0\uce21 \uc88c\ud45c \ubcf4\uc815\uc6a9. \uc2e4\ud328 \uc2dc None.", "file_type": "rationale", "source_file": "src/data/kakao_local.py", "source_location": "L126"}], "edges": [{"source": "$graphify-root$_src_data_kakao_local_py", "target": "os", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "src/data/kakao_local.py", "source_location": "L14", "weight": 1.0}, {"source": "$graphify-root$_src_data_kakao_local_py", "target": "httpx", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "src/data/kakao_local.py", "source_location": "L16", "weight": 1.0}, {"source": "$graphify-root$_src_data_kakao_local_py", "target": "src_data_models", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "src/data/kakao_local.py", "source_location": "L18", "weight": 1.0}, {"source": "$graphify-root$_src_data_kakao_local_py", "target": "$graphify-root$_src_data_kakao_local_kakaolocalclient", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/data/kakao_local.py", "source_location": "L24", "weight": 1.0}, {"source": "$graphify-root$_src_data_kakao_local_kakaolocalclient", "target": "$graphify-root$_src_data_kakao_local_kakaolocalclient_init", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/data/kakao_local.py", "source_location": "L27", "weight": 1.0}, {"source": "$graphify-root$_src_data_kakao_local_kakaolocalclient", "target": "$graphify-root$_src_data_kakao_local_kakaolocalclient_from_env", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/data/kakao_local.py", "source_location": "L36", "weight": 1.0}, {"source": "$graphify-root$_src_data_kakao_local_kakaolocalclient_from_env", "target": "$graphify-root$_src_data_kakao_local_kakaolocalclient", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "src/data/kakao_local.py", "source_location": "L36", "weight": 1.0}, {"source": "$graphify-root$_src_data_kakao_local_kakaolocalclient", "target": "$graphify-root$_src_data_kakao_local_kakaolocalclient_enabled", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/data/kakao_local.py", "source_location": "L40", "weight": 1.0}, {"source": "$graphify-root$_src_data_kakao_local_kakaolocalclient", "target": "$graphify-root$_src_data_kakao_local_kakaolocalclient_search_keyword", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/data/kakao_local.py", "source_location": "L43", "weight": 1.0}, {"source": "$graphify-root$_src_data_kakao_local_kakaolocalclient_search_keyword", "target": "kakaoplace", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "src/data/kakao_local.py", "source_location": "L43", "weight": 1.0}, {"source": "$graphify-root$_src_data_kakao_local_kakaolocalclient", "target": "$graphify-root$_src_data_kakao_local_kakaolocalclient_search_keyword_list", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/data/kakao_local.py", "source_location": "L82", "weight": 1.0}, {"source": "$graphify-root$_src_data_kakao_local_kakaolocalclient_search_keyword_list", "target": "kakaoplace", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "src/data/kakao_local.py", "source_location": "L82", "weight": 1.0}, {"source": "$graphify-root$_src_data_kakao_local_kakaolocalclient", "target": "$graphify-root$_src_data_kakao_local_kakaolocalclient_geocode_address", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/data/kakao_local.py", "source_location": "L125", "weight": 1.0}, {"source": "$graphify-root$_src_data_kakao_local_kakaolocalclient_search_keyword", "target": "kakaoplace", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/data/kakao_local.py", "source_location": "L65", "weight": 1.0}, {"source": "$graphify-root$_src_data_kakao_local_kakaolocalclient_search_keyword_list", "target": "kakaoplace", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/data/kakao_local.py", "source_location": "L105", "weight": 1.0}, {"source": "$graphify-root$_src_data_kakao_local_rationale_1", "target": "$graphify-root$_src_data_kakao_local_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/data/kakao_local.py", "source_location": "L1", "weight": 1.0}, {"source": "$graphify-root$_src_data_kakao_local_rationale_25", "target": "$graphify-root$_src_data_kakao_local_kakaolocalclient", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/data/kakao_local.py", "source_location": "L25", "weight": 1.0}, {"source": "$graphify-root$_src_data_kakao_local_rationale_44", "target": "$graphify-root$_src_data_kakao_local_kakaolocalclient_search_keyword", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/data/kakao_local.py", "source_location": "L44", "weight": 1.0}, {"source": "$graphify-root$_src_data_kakao_local_rationale_83", "target": "$graphify-root$_src_data_kakao_local_kakaolocalclient_search_keyword_list", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/data/kakao_local.py", "source_location": "L83", "weight": 1.0}, {"source": "$graphify-root$_src_data_kakao_local_rationale_126", "target": "$graphify-root$_src_data_kakao_local_kakaolocalclient_geocode_address", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/data/kakao_local.py", "source_location": "L126", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_src_data_kakao_local_kakaolocalclient_init", "callee": "strip", "is_member_call": true, "source_file": "src/data/kakao_local.py", "source_location": "L28", "receiver": null}, {"caller_nid": "$graphify-root$_src_data_kakao_local_kakaolocalclient_from_env", "callee": "cls", "is_member_call": false, "source_file": "src/data/kakao_local.py", "source_location": "L37", "receiver": null}, {"caller_nid": "$graphify-root$_src_data_kakao_local_kakaolocalclient_from_env", "callee": "get", "is_member_call": true, "source_file": "src/data/kakao_local.py", "source_location": "L37", "receiver": null}, {"caller_nid": "$graphify-root$_src_data_kakao_local_kakaolocalclient_search_keyword", "callee": "strip", "is_member_call": true, "source_file": "src/data/kakao_local.py", "source_location": "L45", "receiver": null}, {"caller_nid": "$graphify-root$_src_data_kakao_local_kakaolocalclient_search_keyword", "callee": "get", "is_member_call": true, "source_file": "src/data/kakao_local.py", "source_location": "L55", "receiver": "httpx"}, {"caller_nid": "$graphify-root$_src_data_kakao_local_kakaolocalclient_search_keyword", "callee": "_KEYWORD_URL", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "src/data/kakao_local.py", "source_location": "L56"}, {"caller_nid": "$graphify-root$_src_data_kakao_local_kakaolocalclient_search_keyword", "callee": "raise_for_status", "is_member_call": true, "source_file": "src/data/kakao_local.py", "source_location": "L61", "receiver": "resp"}, {"caller_nid": "$graphify-root$_src_data_kakao_local_kakaolocalclient_search_keyword", "callee": "get", "is_member_call": true, "source_file": "src/data/kakao_local.py", "source_location": "L62", "receiver": null}, {"caller_nid": "$graphify-root$_src_data_kakao_local_kakaolocalclient_search_keyword", "callee": "json", "is_member_call": true, "source_file": "src/data/kakao_local.py", "source_location": "L62", "receiver": "resp"}, {"caller_nid": "$graphify-root$_src_data_kakao_local_kakaolocalclient_search_keyword", "callee": "get", "is_member_call": true, "source_file": "src/data/kakao_local.py", "source_location": "L66", "receiver": "d"}, {"caller_nid": "$graphify-root$_src_data_kakao_local_kakaolocalclient_search_keyword", "callee": "get", "is_member_call": true, "source_file": "src/data/kakao_local.py", "source_location": "L69", "receiver": "d"}, {"caller_nid": "$graphify-root$_src_data_kakao_local_kakaolocalclient_search_keyword", "callee": "get", "is_member_call": true, "source_file": "src/data/kakao_local.py", "source_location": "L70", "receiver": "d"}, {"caller_nid": "$graphify-root$_src_data_kakao_local_kakaolocalclient_search_keyword", "callee": "get", "is_member_call": true, "source_file": "src/data/kakao_local.py", "source_location": "L70", "receiver": "d"}, {"caller_nid": "$graphify-root$_src_data_kakao_local_kakaolocalclient_search_keyword", "callee": "get", "is_member_call": true, "source_file": "src/data/kakao_local.py", "source_location": "L71", "receiver": "d"}, {"caller_nid": "$graphify-root$_src_data_kakao_local_kakaolocalclient_search_keyword", "callee": "get", "is_member_call": true, "source_file": "src/data/kakao_local.py", "source_location": "L72", "receiver": "d"}, {"caller_nid": "$graphify-root$_src_data_kakao_local_kakaolocalclient_search_keyword", "callee": "KeyError", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "src/data/kakao_local.py", "source_location": "L75"}, {"caller_nid": "$graphify-root$_src_data_kakao_local_kakaolocalclient_search_keyword", "callee": "ValueError", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "src/data/kakao_local.py", "source_location": "L75"}, {"caller_nid": "$graphify-root$_src_data_kakao_local_kakaolocalclient_search_keyword", "callee": "TypeError", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "src/data/kakao_local.py", "source_location": "L75"}, {"caller_nid": "$graphify-root$_src_data_kakao_local_kakaolocalclient_search_keyword_list", "callee": "strip", "is_member_call": true, "source_file": "src/data/kakao_local.py", "source_location": "L84", "receiver": null}, {"caller_nid": "$graphify-root$_src_data_kakao_local_kakaolocalclient_search_keyword_list", "callee": "get", "is_member_call": true, "source_file": "src/data/kakao_local.py", "source_location": "L95", "receiver": "httpx"}, {"caller_nid": "$graphify-root$_src_data_kakao_local_kakaolocalclient_search_keyword_list", "callee": "_KEYWORD_URL", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "src/data/kakao_local.py", "source_location": "L96"}, {"caller_nid": "$graphify-root$_src_data_kakao_local_kakaolocalclient_search_keyword_list", "callee": "raise_for_status", "is_member_call": true, "source_file": "src/data/kakao_local.py", "source_location": "L101", "receiver": "resp"}, {"caller_nid": "$graphify-root$_src_data_kakao_local_kakaolocalclient_search_keyword_list", "callee": "get", "is_member_call": true, "source_file": "src/data/kakao_local.py", "source_location": "L102", "receiver": null}, {"caller_nid": "$graphify-root$_src_data_kakao_local_kakaolocalclient_search_keyword_list", "callee": "json", "is_member_call": true, "source_file": "src/data/kakao_local.py", "source_location": "L102", "receiver": "resp"}, {"caller_nid": "$graphify-root$_src_data_kakao_local_kakaolocalclient_search_keyword_list", "callee": "append", "is_member_call": true, "source_file": "src/data/kakao_local.py", "source_location": "L104", "receiver": "out"}, {"caller_nid": "$graphify-root$_src_data_kakao_local_kakaolocalclient_search_keyword_list", "callee": "get", "is_member_call": true, "source_file": "src/data/kakao_local.py", "source_location": "L106", "receiver": "d"}, {"caller_nid": "$graphify-root$_src_data_kakao_local_kakaolocalclient_search_keyword_list", "callee": "get", "is_member_call": true, "source_file": "src/data/kakao_local.py", "source_location": "L109", "receiver": "d"}, {"caller_nid": "$graphify-root$_src_data_kakao_local_kakaolocalclient_search_keyword_list", "callee": "get", "is_member_call": true, "source_file": "src/data/kakao_local.py", "source_location": "L110", "receiver": "d"}, {"caller_nid": "$graphify-root$_src_data_kakao_local_kakaolocalclient_search_keyword_list", "callee": "get", "is_member_call": true, "source_file": "src/data/kakao_local.py", "source_location": "L110", "receiver": "d"}, {"caller_nid": "$graphify-root$_src_data_kakao_local_kakaolocalclient_search_keyword_list", "callee": "get", "is_member_call": true, "source_file": "src/data/kakao_local.py", "source_location": "L111", "receiver": "d"}, {"caller_nid": "$graphify-root$_src_data_kakao_local_kakaolocalclient_search_keyword_list", "callee": "get", "is_member_call": true, "source_file": "src/data/kakao_local.py", "source_location": "L112", "receiver": "d"}, {"caller_nid": "$graphify-root$_src_data_kakao_local_kakaolocalclient_search_keyword_list", "callee": "KeyError", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "src/data/kakao_local.py", "source_location": "L115"}, {"caller_nid": "$graphify-root$_src_data_kakao_local_kakaolocalclient_search_keyword_list", "callee": "ValueError", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "src/data/kakao_local.py", "source_location": "L115"}, {"caller_nid": "$graphify-root$_src_data_kakao_local_kakaolocalclient_search_keyword_list", "callee": "TypeError", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "src/data/kakao_local.py", "source_location": "L115"}, {"caller_nid": "$graphify-root$_src_data_kakao_local_kakaolocalclient_search_keyword_list", "callee": "ValueError", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "src/data/kakao_local.py", "source_location": "L118"}, {"caller_nid": "$graphify-root$_src_data_kakao_local_kakaolocalclient_search_keyword_list", "callee": "TypeError", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "src/data/kakao_local.py", "source_location": "L118"}, {"caller_nid": "$graphify-root$_src_data_kakao_local_kakaolocalclient_geocode_address", "callee": "strip", "is_member_call": true, "source_file": "src/data/kakao_local.py", "source_location": "L127", "receiver": null}, {"caller_nid": "$graphify-root$_src_data_kakao_local_kakaolocalclient_geocode_address", "callee": "get", "is_member_call": true, "source_file": "src/data/kakao_local.py", "source_location": "L137", "receiver": "httpx"}, {"caller_nid": "$graphify-root$_src_data_kakao_local_kakaolocalclient_geocode_address", "callee": "_ADDRESS_URL", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "src/data/kakao_local.py", "source_location": "L138"}, {"caller_nid": "$graphify-root$_src_data_kakao_local_kakaolocalclient_geocode_address", "callee": "raise_for_status", "is_member_call": true, "source_file": "src/data/kakao_local.py", "source_location": "L143", "receiver": "resp"}, {"caller_nid": "$graphify-root$_src_data_kakao_local_kakaolocalclient_geocode_address", "callee": "get", "is_member_call": true, "source_file": "src/data/kakao_local.py", "source_location": "L144", "receiver": null}, {"caller_nid": "$graphify-root$_src_data_kakao_local_kakaolocalclient_geocode_address", "callee": "json", "is_member_call": true, "source_file": "src/data/kakao_local.py", "source_location": "L144", "receiver": "resp"}, {"caller_nid": "$graphify-root$_src_data_kakao_local_kakaolocalclient_geocode_address", "callee": "KeyError", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "src/data/kakao_local.py", "source_location": "L149"}, {"caller_nid": "$graphify-root$_src_data_kakao_local_kakaolocalclient_geocode_address", "callee": "ValueError", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "src/data/kakao_local.py", "source_location": "L149"}, {"caller_nid": "$graphify-root$_src_data_kakao_local_kakaolocalclient_geocode_address", "callee": "TypeError", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "src/data/kakao_local.py", "source_location": "L149"}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.31/e7477d4a6751d5b8b73957d50ddd92e15872a1517a43cd2c5b4b3db626cf2e99.json b/graphify-out/cache/ast/v0.9.31/e7477d4a6751d5b8b73957d50ddd92e15872a1517a43cd2c5b4b3db626cf2e99.json new file mode 100644 index 0000000..520f598 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.31/e7477d4a6751d5b8b73957d50ddd92e15872a1517a43cd2c5b4b3db626cf2e99.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_gun_scripts_build_itinerary_excel_py", "label": "build_itinerary_excel.py", "file_type": "code", "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L1"}, {"id": "$graphify-root$_gun_scripts_build_itinerary_excel_parse_weekday", "label": "parse_weekday()", "file_type": "code", "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L99", "_callable": true}, {"id": "$graphify-root$_gun_scripts_build_itinerary_excel_minutes_to_hhmm", "label": "minutes_to_hhmm()", "file_type": "code", "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L109", "_callable": true}, {"id": "$graphify-root$_gun_scripts_build_itinerary_excel_check_hours_violations", "label": "check_hours_violations()", "file_type": "code", "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L115", "_callable": true}, {"id": "hoursspec", "label": "HoursSpec", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/gun/scripts/build_itinerary_excel.py"}, {"id": "$graphify-root$_gun_scripts_build_itinerary_excel_poimatcher", "label": "POIMatcher", "file_type": "code", "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L161", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_gun_scripts_build_itinerary_excel_poimatcher_init", "label": ".__init__()", "file_type": "code", "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L164", "_callable": true}, {"id": "path", "label": "Path", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/gun/scripts/build_itinerary_excel.py"}, {"id": "$graphify-root$_gun_scripts_build_itinerary_excel_poimatcher_match", "label": ".match()", "file_type": "code", "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L179", "_callable": true}, {"id": "$graphify-root$_gun_scripts_build_itinerary_excel_poimatcher_row_to_dict", "label": "._row_to_dict()", "file_type": "code", "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L203", "_callable": true}, {"id": "any", "label": "Any", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/gun/scripts/build_itinerary_excel.py"}, {"id": "$graphify-root$_gun_scripts_build_itinerary_excel_to_vrptw_place", "label": "_to_vrptw_place()", "file_type": "code", "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L219", "_callable": true}, {"id": "vrptwplace", "label": "VRPTWPlace", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/gun/scripts/build_itinerary_excel.py"}, {"id": "$graphify-root$_gun_scripts_build_itinerary_excel_process_one_day", "label": "process_one_day()", "file_type": "code", "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L237", "_callable": true}, {"id": "$graphify-root$_gun_scripts_build_itinerary_excel_main", "label": "main()", "file_type": "code", "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L356", "_callable": true}, {"id": "$graphify-root$_gun_scripts_build_itinerary_excel_rationale_1", "label": "\ucd94\ucc9c \uc77c\uc815 \u2192 \ub9e4\uce6d \u2192 \uc2dc\uac04 \uacc4\uc0b0 \u2192 Excel \ucd9c\ub825 \ud30c\uc774\ud504\ub77c\uc778\u2026", "file_type": "rationale", "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L1"}, {"id": "$graphify-root$_gun_scripts_build_itinerary_excel_rationale_100", "label": "2025-05-01' \u2192 0(\uc6d4)~6(\uc77c). \ud30c\uc2f1 \uc2e4\ud328 \uc2dc None.", "file_type": "rationale", "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L100"}, {"id": "$graphify-root$_gun_scripts_build_itinerary_excel_rationale_110", "label": "\ubd84 \ub2e8\uc704 \u2192 'HH:MM' (\uc74c\uc218/24\uc2dc\uac04 \ucd08\uacfc\ub294 \uadf8\ub300\ub85c \ud45c\uae30).", "file_type": "rationale", "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L110"}, {"id": "$graphify-root$_gun_scripts_build_itinerary_excel_rationale_121", "label": "\uc6b4\uc601\uc2dc\uac04 \uc704\ubc18 \uac80\uc0ac \u2192 (\uc704\ubc18 \ubaa9\ub85d, \ud328\ub110\ud2f0 \ud569\uacc4).", "file_type": "rationale", "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L121"}, {"id": "$graphify-root$_gun_scripts_build_itinerary_excel_rationale_162", "label": "pois_processed.csv \uae30\ubc18 \uc774\ub984 \ub9e4\uce6d \u2014 \uc815\ud655/\ubd80\ubd84 \uc77c\uce58.", "file_type": "rationale", "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L162"}, {"id": "$graphify-root$_gun_scripts_build_itinerary_excel_rationale_180", "label": "\uc774\ub984\uc73c\ub85c \ub9e4\uce6d. \uc2dc\ub3c4/\uc2dc\uad70\uad6c\ub294 \ubd80\ubd84 \ub9e4\uce6d \uc2dc \ud6c4\ubcf4 \uc881\ud788\uae30.", "file_type": "rationale", "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L180"}, {"id": "$graphify-root$_gun_scripts_build_itinerary_excel_rationale_220", "label": "\ub9e4\uce6d\ub41c row \u2192 VRPTWPlace \ubcc0\ud658. \uc88c\ud45c \uc5c6\uc73c\uba74 None. \uc6b4\uc601\uc2dc\uac04\uc740 hours_db.resolve_hours() \uacb0\uacfc\ub97c \uc0ac\uc6a9.", "file_type": "rationale", "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L220"}, {"id": "$graphify-root$_gun_scripts_build_itinerary_excel_rationale_241", "label": "\ud55c day(\uac19\uc740 plan_id+day)\uc758 row\ub4e4\uc5d0 \uc774\ub3d9\uc2dc\uac04\u00b7\uc6b4\uc601\uc2dc\uac04 \uc704\ubc18\u00b7\ud328\ub110\ud2f0 \ucc44\uc6b0\uae30.", "file_type": "rationale", "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L241"}], "edges": [{"source": "$graphify-root$_gun_scripts_build_itinerary_excel_py", "target": "argparse", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L25", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_build_itinerary_excel_py", "target": "csv", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L26", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_build_itinerary_excel_py", "target": "json", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L27", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_build_itinerary_excel_py", "target": "sys", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L28", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_build_itinerary_excel_py", "target": "collections", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L29", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_build_itinerary_excel_py", "target": "datetime", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L30", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_build_itinerary_excel_py", "target": "pathlib", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L31", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_build_itinerary_excel_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L32", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_build_itinerary_excel_py", "target": "pandas", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L34", "weight": 1.0, "local_alias": "pd"}, {"source": "$graphify-root$_gun_scripts_build_itinerary_excel_py", "target": "src_data_dwell_db", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L41", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_build_itinerary_excel_py", "target": "src_data_hours_db", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L42", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_build_itinerary_excel_py", "target": "src_data_models", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L43", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_build_itinerary_excel_py", "target": "src_scoring_cluster_dispersion", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L44", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_build_itinerary_excel_py", "target": "src_scoring_travel_ratio", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L45", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_build_itinerary_excel_py", "target": "src_validation_kakao_matrix", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L46", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_build_itinerary_excel_py", "target": "src_validation_vrptw_engine", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L47", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_build_itinerary_excel_py", "target": "$graphify-root$_gun_scripts_build_itinerary_excel_parse_weekday", "relation": "contains", "confidence": "EXTRACTED", "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L99", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_build_itinerary_excel_py", "target": "$graphify-root$_gun_scripts_build_itinerary_excel_minutes_to_hhmm", "relation": "contains", "confidence": "EXTRACTED", "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L109", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_build_itinerary_excel_py", "target": "$graphify-root$_gun_scripts_build_itinerary_excel_check_hours_violations", "relation": "contains", "confidence": "EXTRACTED", "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L115", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_build_itinerary_excel_check_hours_violations", "target": "hoursspec", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L115", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_build_itinerary_excel_py", "target": "$graphify-root$_gun_scripts_build_itinerary_excel_poimatcher", "relation": "contains", "confidence": "EXTRACTED", "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L161", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_build_itinerary_excel_poimatcher", "target": "$graphify-root$_gun_scripts_build_itinerary_excel_poimatcher_init", "relation": "method", "confidence": "EXTRACTED", "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L164", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_build_itinerary_excel_poimatcher_init", "target": "path", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L164", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_build_itinerary_excel_poimatcher", "target": "$graphify-root$_gun_scripts_build_itinerary_excel_poimatcher_match", "relation": "method", "confidence": "EXTRACTED", "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L179", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_build_itinerary_excel_poimatcher", "target": "$graphify-root$_gun_scripts_build_itinerary_excel_poimatcher_row_to_dict", "relation": "method", "confidence": "EXTRACTED", "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L203", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_build_itinerary_excel_poimatcher_row_to_dict", "target": "any", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L203", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_build_itinerary_excel_py", "target": "$graphify-root$_gun_scripts_build_itinerary_excel_to_vrptw_place", "relation": "contains", "confidence": "EXTRACTED", "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L219", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_build_itinerary_excel_to_vrptw_place", "target": "vrptwplace", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L219", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_build_itinerary_excel_py", "target": "$graphify-root$_gun_scripts_build_itinerary_excel_process_one_day", "relation": "contains", "confidence": "EXTRACTED", "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L237", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_build_itinerary_excel_py", "target": "$graphify-root$_gun_scripts_build_itinerary_excel_main", "relation": "contains", "confidence": "EXTRACTED", "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L356", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_build_itinerary_excel_check_hours_violations", "target": "$graphify-root$_gun_scripts_build_itinerary_excel_minutes_to_hhmm", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L135", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_build_itinerary_excel_poimatcher_match", "target": "$graphify-root$_gun_scripts_build_itinerary_excel_poimatcher_row_to_dict", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L188", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_build_itinerary_excel_to_vrptw_place", "target": "vrptwplace", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L226", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_build_itinerary_excel_process_one_day", "target": "$graphify-root$_gun_scripts_build_itinerary_excel_to_vrptw_place", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L246", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_build_itinerary_excel_process_one_day", "target": "$graphify-root$_gun_scripts_build_itinerary_excel_parse_weekday", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L273", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_build_itinerary_excel_process_one_day", "target": "$graphify-root$_gun_scripts_build_itinerary_excel_check_hours_violations", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L280", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_build_itinerary_excel_process_one_day", "target": "$graphify-root$_gun_scripts_build_itinerary_excel_minutes_to_hhmm", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L285", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_build_itinerary_excel_main", "target": "path", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L364", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_build_itinerary_excel_main", "target": "$graphify-root$_gun_scripts_build_itinerary_excel_poimatcher", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L384", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_build_itinerary_excel_main", "target": "$graphify-root$_gun_scripts_build_itinerary_excel_poimatcher_match", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L389", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_build_itinerary_excel_main", "target": "$graphify-root$_gun_scripts_build_itinerary_excel_parse_weekday", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L427", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_build_itinerary_excel_main", "target": "$graphify-root$_gun_scripts_build_itinerary_excel_process_one_day", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L466", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_build_itinerary_excel_rationale_1", "target": "$graphify-root$_gun_scripts_build_itinerary_excel_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L1", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_build_itinerary_excel_rationale_100", "target": "$graphify-root$_gun_scripts_build_itinerary_excel_parse_weekday", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L100", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_build_itinerary_excel_rationale_110", "target": "$graphify-root$_gun_scripts_build_itinerary_excel_minutes_to_hhmm", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L110", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_build_itinerary_excel_rationale_121", "target": "$graphify-root$_gun_scripts_build_itinerary_excel_check_hours_violations", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L121", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_build_itinerary_excel_rationale_162", "target": "$graphify-root$_gun_scripts_build_itinerary_excel_poimatcher", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L162", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_build_itinerary_excel_rationale_180", "target": "$graphify-root$_gun_scripts_build_itinerary_excel_poimatcher_match", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L180", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_build_itinerary_excel_rationale_220", "target": "$graphify-root$_gun_scripts_build_itinerary_excel_to_vrptw_place", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L220", "weight": 1.0}, {"source": "$graphify-root$_gun_scripts_build_itinerary_excel_rationale_241", "target": "$graphify-root$_gun_scripts_build_itinerary_excel_process_one_day", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L241", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_gun_scripts_build_itinerary_excel_parse_weekday", "callee": "weekday", "is_member_call": true, "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L104", "receiver": null}, {"caller_nid": "$graphify-root$_gun_scripts_build_itinerary_excel_parse_weekday", "callee": "fromisoformat", "is_member_call": true, "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L104", "receiver": "_date"}, {"caller_nid": "$graphify-root$_gun_scripts_build_itinerary_excel_parse_weekday", "callee": "strip", "is_member_call": true, "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L104", "receiver": "date_str"}, {"caller_nid": "$graphify-root$_gun_scripts_build_itinerary_excel_parse_weekday", "callee": "ValueError", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L105"}, {"caller_nid": "$graphify-root$_gun_scripts_build_itinerary_excel_parse_weekday", "callee": "TypeError", "is_member_call": false, "indirect": true, "context": "collection", "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L105"}, {"caller_nid": "$graphify-root$_gun_scripts_build_itinerary_excel_minutes_to_hhmm", "callee": "divmod", "is_member_call": false, "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L111", "receiver": null}, {"caller_nid": "$graphify-root$_gun_scripts_build_itinerary_excel_check_hours_violations", "callee": "append", "is_member_call": true, "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L128", "receiver": "violations"}, {"caller_nid": "$graphify-root$_gun_scripts_build_itinerary_excel_check_hours_violations", "callee": "to_minutes", "is_member_call": false, "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L132", "receiver": null}, {"caller_nid": "$graphify-root$_gun_scripts_build_itinerary_excel_check_hours_violations", "callee": "to_minutes", "is_member_call": false, "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L133", "receiver": null}, {"caller_nid": "$graphify-root$_gun_scripts_build_itinerary_excel_check_hours_violations", "callee": "append", "is_member_call": true, "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L135", "receiver": "violations"}, {"caller_nid": "$graphify-root$_gun_scripts_build_itinerary_excel_check_hours_violations", "callee": "append", "is_member_call": true, "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L138", "receiver": "violations"}, {"caller_nid": "$graphify-root$_gun_scripts_build_itinerary_excel_check_hours_violations", "callee": "append", "is_member_call": true, "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L141", "receiver": "violations"}, {"caller_nid": "$graphify-root$_gun_scripts_build_itinerary_excel_check_hours_violations", "callee": "append", "is_member_call": true, "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L144", "receiver": "violations"}, {"caller_nid": "$graphify-root$_gun_scripts_build_itinerary_excel_check_hours_violations", "callee": "to_minutes", "is_member_call": false, "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L149", "receiver": null}, {"caller_nid": "$graphify-root$_gun_scripts_build_itinerary_excel_check_hours_violations", "callee": "to_minutes", "is_member_call": false, "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L150", "receiver": null}, {"caller_nid": "$graphify-root$_gun_scripts_build_itinerary_excel_check_hours_violations", "callee": "append", "is_member_call": true, "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L152", "receiver": "violations"}, {"caller_nid": "$graphify-root$_gun_scripts_build_itinerary_excel_poimatcher_init", "callee": "exists", "is_member_call": true, "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L165", "receiver": "pois_csv"}, {"caller_nid": "$graphify-root$_gun_scripts_build_itinerary_excel_poimatcher_init", "callee": "exit", "is_member_call": true, "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L166", "receiver": "sys"}, {"caller_nid": "$graphify-root$_gun_scripts_build_itinerary_excel_poimatcher_init", "callee": "read_csv", "is_member_call": true, "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L168", "receiver": "pd"}, {"caller_nid": "$graphify-root$_gun_scripts_build_itinerary_excel_poimatcher_init", "callee": "lower", "is_member_call": true, "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L170", "receiver": null}, {"caller_nid": "$graphify-root$_gun_scripts_build_itinerary_excel_poimatcher_init", "callee": "strip", "is_member_call": true, "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L170", "receiver": null}, {"caller_nid": "$graphify-root$_gun_scripts_build_itinerary_excel_poimatcher_init", "callee": "astype", "is_member_call": true, "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L170", "receiver": null}, {"caller_nid": "$graphify-root$_gun_scripts_build_itinerary_excel_poimatcher_init", "callee": "str", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L170"}, {"caller_nid": "$graphify-root$_gun_scripts_build_itinerary_excel_poimatcher_init", "callee": "replace", "is_member_call": true, "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L171", "receiver": null}, {"caller_nid": "$graphify-root$_gun_scripts_build_itinerary_excel_poimatcher_init", "callee": "setdefault", "is_member_call": true, "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L176", "receiver": null}, {"caller_nid": "$graphify-root$_gun_scripts_build_itinerary_excel_poimatcher_match", "callee": "join", "is_member_call": true, "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L183", "receiver": null}, {"caller_nid": "$graphify-root$_gun_scripts_build_itinerary_excel_poimatcher_match", "callee": "split", "is_member_call": true, "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L183", "receiver": null}, {"caller_nid": "$graphify-root$_gun_scripts_build_itinerary_excel_poimatcher_match", "callee": "lower", "is_member_call": true, "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L183", "receiver": null}, {"caller_nid": "$graphify-root$_gun_scripts_build_itinerary_excel_poimatcher_match", "callee": "strip", "is_member_call": true, "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L183", "receiver": null}, {"caller_nid": "$graphify-root$_gun_scripts_build_itinerary_excel_poimatcher_match", "callee": "contains", "is_member_call": true, "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L191", "receiver": null}, {"caller_nid": "$graphify-root$_gun_scripts_build_itinerary_excel_poimatcher_match", "callee": "contains", "is_member_call": true, "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L195", "receiver": null}, {"caller_nid": "$graphify-root$_gun_scripts_build_itinerary_excel_poimatcher_match", "callee": "astype", "is_member_call": true, "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L195", "receiver": null}, {"caller_nid": "$graphify-root$_gun_scripts_build_itinerary_excel_poimatcher_match", "callee": "str", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L195"}, {"caller_nid": "$graphify-root$_gun_scripts_build_itinerary_excel_poimatcher_match", "callee": "strip", "is_member_call": true, "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L195", "receiver": "sigungu"}, {"caller_nid": "$graphify-root$_gun_scripts_build_itinerary_excel_poimatcher_row_to_dict", "callee": "notna", "is_member_call": true, "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L207", "receiver": "pd"}, {"caller_nid": "$graphify-root$_gun_scripts_build_itinerary_excel_poimatcher_row_to_dict", "callee": "get", "is_member_call": true, "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L208", "receiver": "row"}, {"caller_nid": "$graphify-root$_gun_scripts_build_itinerary_excel_poimatcher_row_to_dict", "callee": "notna", "is_member_call": true, "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L208", "receiver": "pd"}, {"caller_nid": "$graphify-root$_gun_scripts_build_itinerary_excel_poimatcher_row_to_dict", "callee": "get", "is_member_call": true, "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L208", "receiver": "row"}, {"caller_nid": "$graphify-root$_gun_scripts_build_itinerary_excel_poimatcher_row_to_dict", "callee": "get", "is_member_call": true, "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L209", "receiver": "row"}, {"caller_nid": "$graphify-root$_gun_scripts_build_itinerary_excel_poimatcher_row_to_dict", "callee": "notna", "is_member_call": true, "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L209", "receiver": "pd"}, {"caller_nid": "$graphify-root$_gun_scripts_build_itinerary_excel_poimatcher_row_to_dict", "callee": "get", "is_member_call": true, "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L209", "receiver": "row"}, {"caller_nid": "$graphify-root$_gun_scripts_build_itinerary_excel_poimatcher_row_to_dict", "callee": "notna", "is_member_call": true, "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L210", "receiver": "pd"}, {"caller_nid": "$graphify-root$_gun_scripts_build_itinerary_excel_poimatcher_row_to_dict", "callee": "notna", "is_member_call": true, "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L211", "receiver": "pd"}, {"caller_nid": "$graphify-root$_gun_scripts_build_itinerary_excel_to_vrptw_place", "callee": "get", "is_member_call": true, "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L224", "receiver": "row"}, {"caller_nid": "$graphify-root$_gun_scripts_build_itinerary_excel_to_vrptw_place", "callee": "get", "is_member_call": true, "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L224", "receiver": "row"}, {"caller_nid": "$graphify-root$_gun_scripts_build_itinerary_excel_to_vrptw_place", "callee": "get", "is_member_call": true, "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L227", "receiver": "row"}, {"caller_nid": "$graphify-root$_gun_scripts_build_itinerary_excel_to_vrptw_place", "callee": "get", "is_member_call": true, "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L227", "receiver": "row"}, {"caller_nid": "$graphify-root$_gun_scripts_build_itinerary_excel_to_vrptw_place", "callee": "get", "is_member_call": true, "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L230", "receiver": "row"}, {"caller_nid": "$graphify-root$_gun_scripts_build_itinerary_excel_to_vrptw_place", "callee": "get", "is_member_call": true, "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L231", "receiver": "row"}, {"caller_nid": "$graphify-root$_gun_scripts_build_itinerary_excel_process_one_day", "callee": "get", "is_member_call": true, "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L245", "receiver": "r"}, {"caller_nid": "$graphify-root$_gun_scripts_build_itinerary_excel_process_one_day", "callee": "append", "is_member_call": true, "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L246", "receiver": "places"}, {"caller_nid": "$graphify-root$_gun_scripts_build_itinerary_excel_process_one_day", "callee": "append", "is_member_call": true, "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L252", "receiver": "travel_minutes"}, {"caller_nid": "$graphify-root$_gun_scripts_build_itinerary_excel_process_one_day", "callee": "get_travel_time", "is_member_call": true, "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L254", "receiver": "matrix"}, {"caller_nid": "$graphify-root$_gun_scripts_build_itinerary_excel_process_one_day", "callee": "append", "is_member_call": true, "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L255", "receiver": "travel_minutes"}, {"caller_nid": "$graphify-root$_gun_scripts_build_itinerary_excel_process_one_day", "callee": "append", "is_member_call": true, "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L256", "receiver": "travel_minutes"}, {"caller_nid": "$graphify-root$_gun_scripts_build_itinerary_excel_process_one_day", "callee": "to_minutes", "is_member_call": false, "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L262", "receiver": null}, {"caller_nid": "$graphify-root$_gun_scripts_build_itinerary_excel_process_one_day", "callee": "DEFAULT_START", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L262"}, {"caller_nid": "$graphify-root$_gun_scripts_build_itinerary_excel_process_one_day", "callee": "append", "is_member_call": true, "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L264", "receiver": "arrive_minutes"}, {"caller_nid": "$graphify-root$_gun_scripts_build_itinerary_excel_process_one_day", "callee": "get", "is_member_call": true, "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L265", "receiver": "r"}, {"caller_nid": "$graphify-root$_gun_scripts_build_itinerary_excel_process_one_day", "callee": "append", "is_member_call": true, "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L267", "receiver": "depart_minutes"}, {"caller_nid": "$graphify-root$_gun_scripts_build_itinerary_excel_process_one_day", "callee": "get", "is_member_call": true, "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L273", "receiver": null}, {"caller_nid": "$graphify-root$_gun_scripts_build_itinerary_excel_process_one_day", "callee": "resolve_hours", "is_member_call": false, "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L276", "receiver": null}, {"caller_nid": "$graphify-root$_gun_scripts_build_itinerary_excel_process_one_day", "callee": "get", "is_member_call": true, "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L277", "receiver": "r"}, {"caller_nid": "$graphify-root$_gun_scripts_build_itinerary_excel_process_one_day", "callee": "get", "is_member_call": true, "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L277", "receiver": "r"}, {"caller_nid": "$graphify-root$_gun_scripts_build_itinerary_excel_process_one_day", "callee": "get", "is_member_call": true, "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L278", "receiver": "r"}, {"caller_nid": "$graphify-root$_gun_scripts_build_itinerary_excel_process_one_day", "callee": "join", "is_member_call": true, "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L283", "receiver": null}, {"caller_nid": "$graphify-root$_gun_scripts_build_itinerary_excel_process_one_day", "callee": "get", "is_member_call": true, "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L290", "receiver": "r"}, {"caller_nid": "$graphify-root$_gun_scripts_build_itinerary_excel_process_one_day", "callee": "get", "is_member_call": true, "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L296", "receiver": "r"}, {"caller_nid": "$graphify-root$_gun_scripts_build_itinerary_excel_process_one_day", "callee": "get", "is_member_call": true, "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L296", "receiver": "r"}, {"caller_nid": "$graphify-root$_gun_scripts_build_itinerary_excel_process_one_day", "callee": "VRPTWDay", "is_member_call": false, "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L306", "receiver": null}, {"caller_nid": "$graphify-root$_gun_scripts_build_itinerary_excel_process_one_day", "callee": "evaluate_cluster_dispersion", "is_member_call": false, "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L307", "receiver": null}, {"caller_nid": "$graphify-root$_gun_scripts_build_itinerary_excel_process_one_day", "callee": "append", "is_member_call": true, "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L310", "receiver": "vrptw_warnings"}, {"caller_nid": "$graphify-root$_gun_scripts_build_itinerary_excel_process_one_day", "callee": "append", "is_member_call": true, "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L312", "receiver": "vrptw_warnings"}, {"caller_nid": "$graphify-root$_gun_scripts_build_itinerary_excel_process_one_day", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L312"}, {"caller_nid": "$graphify-root$_gun_scripts_build_itinerary_excel_process_one_day", "callee": "evaluate_travel_ratio", "is_member_call": false, "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L316", "receiver": null}, {"caller_nid": "$graphify-root$_gun_scripts_build_itinerary_excel_process_one_day", "callee": "VRPTWDay", "is_member_call": false, "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L316", "receiver": null}, {"caller_nid": "$graphify-root$_gun_scripts_build_itinerary_excel_process_one_day", "callee": "append", "is_member_call": true, "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L320", "receiver": "vrptw_warnings"}, {"caller_nid": "$graphify-root$_gun_scripts_build_itinerary_excel_process_one_day", "callee": "e", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L320"}, {"caller_nid": "$graphify-root$_gun_scripts_build_itinerary_excel_process_one_day", "callee": "get", "is_member_call": true, "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L324", "receiver": "r"}, {"caller_nid": "$graphify-root$_gun_scripts_build_itinerary_excel_process_one_day", "callee": "append", "is_member_call": true, "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L325", "receiver": "vrptw_warnings"}, {"caller_nid": "$graphify-root$_gun_scripts_build_itinerary_excel_process_one_day", "callee": "get", "is_member_call": true, "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L325", "receiver": "r"}, {"caller_nid": "$graphify-root$_gun_scripts_build_itinerary_excel_process_one_day", "callee": "get", "is_member_call": true, "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L325", "receiver": "r"}, {"caller_nid": "$graphify-root$_gun_scripts_build_itinerary_excel_process_one_day", "callee": "get", "is_member_call": true, "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L331", "receiver": "r"}, {"caller_nid": "$graphify-root$_gun_scripts_build_itinerary_excel_process_one_day", "callee": "get", "is_member_call": true, "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L332", "receiver": "r"}, {"caller_nid": "$graphify-root$_gun_scripts_build_itinerary_excel_process_one_day", "callee": "get", "is_member_call": true, "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L333", "receiver": "r"}, {"caller_nid": "$graphify-root$_gun_scripts_build_itinerary_excel_process_one_day", "callee": "join", "is_member_call": true, "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L348", "receiver": null}, {"caller_nid": "$graphify-root$_gun_scripts_build_itinerary_excel_main", "callee": "ArgumentParser", "is_member_call": true, "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L357", "receiver": "argparse"}, {"caller_nid": "$graphify-root$_gun_scripts_build_itinerary_excel_main", "callee": "add_argument", "is_member_call": true, "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L358", "receiver": "parser"}, {"caller_nid": "$graphify-root$_gun_scripts_build_itinerary_excel_main", "callee": "INPUT_XLSX", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L358"}, {"caller_nid": "$graphify-root$_gun_scripts_build_itinerary_excel_main", "callee": "add_argument", "is_member_call": true, "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L359", "receiver": "parser"}, {"caller_nid": "$graphify-root$_gun_scripts_build_itinerary_excel_main", "callee": "DATA_DIR", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L359"}, {"caller_nid": "$graphify-root$_gun_scripts_build_itinerary_excel_main", "callee": "add_argument", "is_member_call": true, "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L360", "receiver": "parser"}, {"caller_nid": "$graphify-root$_gun_scripts_build_itinerary_excel_main", "callee": "parse_args", "is_member_call": true, "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L362", "receiver": "parser"}, {"caller_nid": "$graphify-root$_gun_scripts_build_itinerary_excel_main", "callee": "mkdir", "is_member_call": true, "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L366", "receiver": "out_dir"}, {"caller_nid": "$graphify-root$_gun_scripts_build_itinerary_excel_main", "callee": "exists", "is_member_call": true, "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L368", "receiver": "input_path"}, {"caller_nid": "$graphify-root$_gun_scripts_build_itinerary_excel_main", "callee": "exit", "is_member_call": true, "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L369", "receiver": "sys"}, {"caller_nid": "$graphify-root$_gun_scripts_build_itinerary_excel_main", "callee": "fillna", "is_member_call": true, "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L373", "receiver": null}, {"caller_nid": "$graphify-root$_gun_scripts_build_itinerary_excel_main", "callee": "read_excel", "is_member_call": true, "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L373", "receiver": "pd"}, {"caller_nid": "$graphify-root$_gun_scripts_build_itinerary_excel_main", "callee": "str", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L373"}, {"caller_nid": "$graphify-root$_gun_scripts_build_itinerary_excel_main", "callee": "strip", "is_member_call": true, "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L374", "receiver": "c"}, {"caller_nid": "$graphify-root$_gun_scripts_build_itinerary_excel_main", "callee": "exit", "is_member_call": true, "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L379", "receiver": "sys"}, {"caller_nid": "$graphify-root$_gun_scripts_build_itinerary_excel_main", "callee": "POIS_CSV", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L384"}, {"caller_nid": "$graphify-root$_gun_scripts_build_itinerary_excel_main", "callee": "iterrows", "is_member_call": true, "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L387", "receiver": "df_in"}, {"caller_nid": "$graphify-root$_gun_scripts_build_itinerary_excel_main", "callee": "get", "is_member_call": true, "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L388", "receiver": "raw"}, {"caller_nid": "$graphify-root$_gun_scripts_build_itinerary_excel_main", "callee": "get", "is_member_call": true, "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L389", "receiver": "r"}, {"caller_nid": "$graphify-root$_gun_scripts_build_itinerary_excel_main", "callee": "get", "is_member_call": true, "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L389", "receiver": "r"}, {"caller_nid": "$graphify-root$_gun_scripts_build_itinerary_excel_main", "callee": "update", "is_member_call": true, "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L391", "receiver": "r"}, {"caller_nid": "$graphify-root$_gun_scripts_build_itinerary_excel_main", "callee": "append", "is_member_call": true, "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L401", "receiver": "failed"}, {"caller_nid": "$graphify-root$_gun_scripts_build_itinerary_excel_main", "callee": "get_recommended_dwell", "is_member_call": false, "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L405", "receiver": null}, {"caller_nid": "$graphify-root$_gun_scripts_build_itinerary_excel_main", "callee": "get", "is_member_call": true, "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L406", "receiver": "r"}, {"caller_nid": "$graphify-root$_gun_scripts_build_itinerary_excel_main", "callee": "get", "is_member_call": true, "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L407", "receiver": "r"}, {"caller_nid": "$graphify-root$_gun_scripts_build_itinerary_excel_main", "callee": "get", "is_member_call": true, "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L408", "receiver": "r"}, {"caller_nid": "$graphify-root$_gun_scripts_build_itinerary_excel_main", "callee": "get", "is_member_call": true, "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L409", "receiver": "r"}, {"caller_nid": "$graphify-root$_gun_scripts_build_itinerary_excel_main", "callee": "resolve_hours", "is_member_call": false, "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L415", "receiver": null}, {"caller_nid": "$graphify-root$_gun_scripts_build_itinerary_excel_main", "callee": "get", "is_member_call": true, "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L416", "receiver": "r"}, {"caller_nid": "$graphify-root$_gun_scripts_build_itinerary_excel_main", "callee": "get", "is_member_call": true, "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L417", "receiver": "r"}, {"caller_nid": "$graphify-root$_gun_scripts_build_itinerary_excel_main", "callee": "join", "is_member_call": true, "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L426", "receiver": null}, {"caller_nid": "$graphify-root$_gun_scripts_build_itinerary_excel_main", "callee": "get", "is_member_call": true, "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L427", "receiver": "r"}, {"caller_nid": "$graphify-root$_gun_scripts_build_itinerary_excel_main", "callee": "append", "is_member_call": true, "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L430", "receiver": "rows"}, {"caller_nid": "$graphify-root$_gun_scripts_build_itinerary_excel_main", "callee": "FAILED_CSV", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L441"}, {"caller_nid": "$graphify-root$_gun_scripts_build_itinerary_excel_main", "callee": "DictWriter", "is_member_call": true, "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L442", "receiver": "csv"}, {"caller_nid": "$graphify-root$_gun_scripts_build_itinerary_excel_main", "callee": "f", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L442"}, {"caller_nid": "$graphify-root$_gun_scripts_build_itinerary_excel_main", "callee": "writeheader", "is_member_call": true, "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L443", "receiver": "w"}, {"caller_nid": "$graphify-root$_gun_scripts_build_itinerary_excel_main", "callee": "writerows", "is_member_call": true, "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L444", "receiver": "w"}, {"caller_nid": "$graphify-root$_gun_scripts_build_itinerary_excel_main", "callee": "HaversineMatrix", "is_member_call": false, "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L451", "receiver": null}, {"caller_nid": "$graphify-root$_gun_scripts_build_itinerary_excel_main", "callee": "from_env", "is_member_call": true, "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L453", "receiver": "KakaoMobilityMatrix"}, {"caller_nid": "$graphify-root$_gun_scripts_build_itinerary_excel_main", "callee": "CACHE_JSON", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L453"}, {"caller_nid": "$graphify-root$_gun_scripts_build_itinerary_excel_main", "callee": "defaultdict", "is_member_call": false, "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L457", "receiver": null}, {"caller_nid": "$graphify-root$_gun_scripts_build_itinerary_excel_main", "callee": "list", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L457"}, {"caller_nid": "$graphify-root$_gun_scripts_build_itinerary_excel_main", "callee": "get", "is_member_call": true, "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L459", "receiver": "r"}, {"caller_nid": "$graphify-root$_gun_scripts_build_itinerary_excel_main", "callee": "append", "is_member_call": true, "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L460", "receiver": null}, {"caller_nid": "$graphify-root$_gun_scripts_build_itinerary_excel_main", "callee": "items", "is_member_call": true, "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L464", "receiver": "grouped"}, {"caller_nid": "$graphify-root$_gun_scripts_build_itinerary_excel_main", "callee": "sort", "is_member_call": true, "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L465", "receiver": "day_rows"}, {"caller_nid": "$graphify-root$_gun_scripts_build_itinerary_excel_main", "callee": "get", "is_member_call": true, "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L465", "receiver": "x"}, {"caller_nid": "$graphify-root$_gun_scripts_build_itinerary_excel_main", "callee": "extend", "is_member_call": true, "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L466", "receiver": "processed"}, {"caller_nid": "$graphify-root$_gun_scripts_build_itinerary_excel_main", "callee": "save_cache", "is_member_call": true, "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L470", "receiver": "matrix"}, {"caller_nid": "$graphify-root$_gun_scripts_build_itinerary_excel_main", "callee": "strftime", "is_member_call": true, "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L474", "receiver": null}, {"caller_nid": "$graphify-root$_gun_scripts_build_itinerary_excel_main", "callee": "today", "is_member_call": true, "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L474", "receiver": "_date"}, {"caller_nid": "$graphify-root$_gun_scripts_build_itinerary_excel_main", "callee": "DataFrame", "is_member_call": true, "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L478", "receiver": "pd"}, {"caller_nid": "$graphify-root$_gun_scripts_build_itinerary_excel_main", "callee": "OUTPUT_COLS", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L478"}, {"caller_nid": "$graphify-root$_gun_scripts_build_itinerary_excel_main", "callee": "sort_values", "is_member_call": true, "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L480", "receiver": "df_out"}, {"caller_nid": "$graphify-root$_gun_scripts_build_itinerary_excel_main", "callee": "to_excel", "is_member_call": true, "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L481", "receiver": "df_out"}, {"caller_nid": "$graphify-root$_gun_scripts_build_itinerary_excel_main", "callee": "nunique", "is_member_call": true, "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L486", "receiver": null}, {"caller_nid": "$graphify-root$_gun_scripts_build_itinerary_excel_main", "callee": "mean", "is_member_call": true, "source_file": "gun/scripts/build_itinerary_excel.py", "source_location": "L490", "receiver": null}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.31/ea470fb1c90053b2da4907392405eba55185b81ac8687ee88b8934e7062ded15.json b/graphify-out/cache/ast/v0.9.31/ea470fb1c90053b2da4907392405eba55185b81ac8687ee88b8934e7062ded15.json new file mode 100644 index 0000000..11217ec --- /dev/null +++ b/graphify-out/cache/ast/v0.9.31/ea470fb1c90053b2da4907392405eba55185b81ac8687ee88b8934e7062ded15.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_src_validation_warning_py", "label": "warning.py", "file_type": "code", "source_file": "src/validation/warning.py", "source_location": "L1"}, {"id": "$graphify-root$_src_validation_warning_cosine_distance", "label": "_cosine_distance()", "file_type": "code", "source_file": "src/validation/warning.py", "source_location": "L28", "_callable": true}, {"id": "$graphify-root$_src_validation_warning_warningdetector", "label": "WarningDetector", "file_type": "code", "source_file": "src/validation/warning.py", "source_location": "L39", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_src_validation_warning_warningdetector_detect", "label": ".detect()", "file_type": "code", "source_file": "src/validation/warning.py", "source_location": "L51", "_callable": true}, {"id": "itineraryplan", "label": "ItineraryPlan", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/src/validation/warning.py"}, {"id": "poi", "label": "POI", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/src/validation/warning.py"}, {"id": "warning", "label": "Warning", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/src/validation/warning.py"}, {"id": "$graphify-root$_src_validation_warning_warningdetector_check_dense_schedule", "label": "._check_dense_schedule()", "file_type": "code", "source_file": "src/validation/warning.py", "source_location": "L73", "_callable": true}, {"id": "$graphify-root$_src_validation_warning_warningdetector_check_inefficient_route", "label": "._check_inefficient_route()", "file_type": "code", "source_file": "src/validation/warning.py", "source_location": "L100", "_callable": true}, {"id": "$graphify-root$_src_validation_warning_warningdetector_check_physical_strain", "label": "._check_physical_strain()", "file_type": "code", "source_file": "src/validation/warning.py", "source_location": "L124", "_callable": true}, {"id": "$graphify-root$_src_validation_warning_warningdetector_check_purpose_mismatch", "label": "._check_purpose_mismatch()", "file_type": "code", "source_file": "src/validation/warning.py", "source_location": "L145", "_callable": true}, {"id": "$graphify-root$_src_validation_warning_warningdetector_check_cumulative_fatigue", "label": ".check_cumulative_fatigue()", "file_type": "code", "source_file": "src/validation/warning.py", "source_location": "L176", "_callable": true}, {"id": "$graphify-root$_src_validation_warning_warningdetector_check_area_revisit", "label": "._check_area_revisit()", "file_type": "code", "source_file": "src/validation/warning.py", "source_location": "L240", "_callable": true}, {"id": "$graphify-root$_src_validation_warning_rationale_1", "label": "Warning \ud0d0\uc9c0\uae30 (\ub3d9\uc120 \ube44\ud6a8\uc728\u00b7\uc77c\uc815 \uacfc\ubc00\u00b7\uccb4\ub825 \ubd80\ub2f4\u00b7\ubaa9\uc801 \ubd80\uc801\ud569\u00b7\uad6c\uc5ed \uc7ac\ubc29\ubb38).", "file_type": "rationale", "source_file": "src/validation/warning.py", "source_location": "L1"}, {"id": "$graphify-root$_src_validation_warning_rationale_40", "label": "\uc5ec\ud589 \uc77c\uc815\uc758 Soft Warning \uc870\uac74\uc744 \ud0d0\uc9c0\ud55c\ub2e4. External I/O \uc5c6\uc74c. matrix: dict[int, dict[int,\u2026", "file_type": "rationale", "source_file": "src/validation/warning.py", "source_location": "L40"}, {"id": "$graphify-root$_src_validation_warning_rationale_58", "label": "Warning \ubaa9\ub85d \ubc18\ud658. \uc5c6\uc73c\uba74 \ube48 \ub9ac\uc2a4\ud2b8.", "file_type": "rationale", "source_file": "src/validation/warning.py", "source_location": "L58"}, {"id": "$graphify-root$_src_validation_warning_rationale_182", "label": "Multi-day \ub204\uc801 \ud53c\ub85c\ub3c4 \ubd84\uc11d \u2014 \ub2e8\uc77c detect() \ud638\ucd9c\ub85c\ub294 \ud3ec\ucc29\ud560 \uc218 \uc5c6\ub294 cross-day \ud328\ud134.", "file_type": "rationale", "source_file": "src/validation/warning.py", "source_location": "L182"}], "edges": [{"source": "$graphify-root$_src_validation_warning_py", "target": "src_data_models", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "src/validation/warning.py", "source_location": "L4", "weight": 1.0}, {"source": "$graphify-root$_src_validation_warning_py", "target": "src_data_party_config", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "src/validation/warning.py", "source_location": "L5", "weight": 1.0}, {"source": "$graphify-root$_src_validation_warning_py", "target": "src_utils_geo", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "src/validation/warning.py", "source_location": "L6", "weight": 1.0}, {"source": "$graphify-root$_src_validation_warning_py", "target": "$graphify-root$_src_validation_warning_cosine_distance", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/validation/warning.py", "source_location": "L28", "weight": 1.0}, {"source": "$graphify-root$_src_validation_warning_py", "target": "$graphify-root$_src_validation_warning_warningdetector", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/validation/warning.py", "source_location": "L39", "weight": 1.0}, {"source": "$graphify-root$_src_validation_warning_warningdetector", "target": "$graphify-root$_src_validation_warning_warningdetector_detect", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/validation/warning.py", "source_location": "L51", "weight": 1.0}, {"source": "$graphify-root$_src_validation_warning_warningdetector_detect", "target": "itineraryplan", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "src/validation/warning.py", "source_location": "L51", "weight": 1.0}, {"source": "$graphify-root$_src_validation_warning_warningdetector_detect", "target": "poi", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "src/validation/warning.py", "source_location": "L51", "weight": 1.0}, {"source": "$graphify-root$_src_validation_warning_warningdetector_detect", "target": "warning", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "src/validation/warning.py", "source_location": "L51", "weight": 1.0}, {"source": "$graphify-root$_src_validation_warning_warningdetector", "target": "$graphify-root$_src_validation_warning_warningdetector_check_dense_schedule", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/validation/warning.py", "source_location": "L73", "weight": 1.0}, {"source": "$graphify-root$_src_validation_warning_warningdetector_check_dense_schedule", "target": "itineraryplan", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "src/validation/warning.py", "source_location": "L73", "weight": 1.0}, {"source": "$graphify-root$_src_validation_warning_warningdetector_check_dense_schedule", "target": "poi", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "src/validation/warning.py", "source_location": "L73", "weight": 1.0}, {"source": "$graphify-root$_src_validation_warning_warningdetector_check_dense_schedule", "target": "warning", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "src/validation/warning.py", "source_location": "L73", "weight": 1.0}, {"source": "$graphify-root$_src_validation_warning_warningdetector", "target": "$graphify-root$_src_validation_warning_warningdetector_check_inefficient_route", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/validation/warning.py", "source_location": "L100", "weight": 1.0}, {"source": "$graphify-root$_src_validation_warning_warningdetector_check_inefficient_route", "target": "poi", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "src/validation/warning.py", "source_location": "L100", "weight": 1.0}, {"source": "$graphify-root$_src_validation_warning_warningdetector_check_inefficient_route", "target": "warning", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "src/validation/warning.py", "source_location": "L100", "weight": 1.0}, {"source": "$graphify-root$_src_validation_warning_warningdetector", "target": "$graphify-root$_src_validation_warning_warningdetector_check_physical_strain", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/validation/warning.py", "source_location": "L124", "weight": 1.0}, {"source": "$graphify-root$_src_validation_warning_warningdetector_check_physical_strain", "target": "itineraryplan", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "src/validation/warning.py", "source_location": "L124", "weight": 1.0}, {"source": "$graphify-root$_src_validation_warning_warningdetector_check_physical_strain", "target": "poi", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "src/validation/warning.py", "source_location": "L124", "weight": 1.0}, {"source": "$graphify-root$_src_validation_warning_warningdetector_check_physical_strain", "target": "warning", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "src/validation/warning.py", "source_location": "L124", "weight": 1.0}, {"source": "$graphify-root$_src_validation_warning_warningdetector", "target": "$graphify-root$_src_validation_warning_warningdetector_check_purpose_mismatch", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/validation/warning.py", "source_location": "L145", "weight": 1.0}, {"source": "$graphify-root$_src_validation_warning_warningdetector_check_purpose_mismatch", "target": "itineraryplan", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "src/validation/warning.py", "source_location": "L145", "weight": 1.0}, {"source": "$graphify-root$_src_validation_warning_warningdetector_check_purpose_mismatch", "target": "poi", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "src/validation/warning.py", "source_location": "L145", "weight": 1.0}, {"source": "$graphify-root$_src_validation_warning_warningdetector_check_purpose_mismatch", "target": "warning", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "src/validation/warning.py", "source_location": "L145", "weight": 1.0}, {"source": "$graphify-root$_src_validation_warning_warningdetector", "target": "$graphify-root$_src_validation_warning_warningdetector_check_cumulative_fatigue", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/validation/warning.py", "source_location": "L176", "weight": 1.0}, {"source": "$graphify-root$_src_validation_warning_warningdetector_check_cumulative_fatigue", "target": "itineraryplan", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "src/validation/warning.py", "source_location": "L176", "weight": 1.0}, {"source": "$graphify-root$_src_validation_warning_warningdetector_check_cumulative_fatigue", "target": "poi", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "src/validation/warning.py", "source_location": "L176", "weight": 1.0}, {"source": "$graphify-root$_src_validation_warning_warningdetector_check_cumulative_fatigue", "target": "warning", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "src/validation/warning.py", "source_location": "L176", "weight": 1.0}, {"source": "$graphify-root$_src_validation_warning_warningdetector", "target": "$graphify-root$_src_validation_warning_warningdetector_check_area_revisit", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/validation/warning.py", "source_location": "L240", "weight": 1.0}, {"source": "$graphify-root$_src_validation_warning_warningdetector_check_area_revisit", "target": "poi", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "src/validation/warning.py", "source_location": "L240", "weight": 1.0}, {"source": "$graphify-root$_src_validation_warning_warningdetector_check_area_revisit", "target": "warning", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "src/validation/warning.py", "source_location": "L240", "weight": 1.0}, {"source": "$graphify-root$_src_validation_warning_warningdetector_detect", "target": "$graphify-root$_src_validation_warning_warningdetector_check_dense_schedule", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/validation/warning.py", "source_location": "L61", "weight": 1.0}, {"source": "$graphify-root$_src_validation_warning_warningdetector_detect", "target": "$graphify-root$_src_validation_warning_warningdetector_check_inefficient_route", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/validation/warning.py", "source_location": "L62", "weight": 1.0}, {"source": "$graphify-root$_src_validation_warning_warningdetector_detect", "target": "$graphify-root$_src_validation_warning_warningdetector_check_physical_strain", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/validation/warning.py", "source_location": "L63", "weight": 1.0}, {"source": "$graphify-root$_src_validation_warning_warningdetector_detect", "target": "$graphify-root$_src_validation_warning_warningdetector_check_purpose_mismatch", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/validation/warning.py", "source_location": "L64", "weight": 1.0}, {"source": "$graphify-root$_src_validation_warning_warningdetector_detect", "target": "$graphify-root$_src_validation_warning_warningdetector_check_area_revisit", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/validation/warning.py", "source_location": "L65", "weight": 1.0}, {"source": "$graphify-root$_src_validation_warning_warningdetector_check_dense_schedule", "target": "warning", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/validation/warning.py", "source_location": "L91", "weight": 1.0}, {"source": "$graphify-root$_src_validation_warning_warningdetector_check_inefficient_route", "target": "warning", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/validation/warning.py", "source_location": "L115", "weight": 1.0}, {"source": "$graphify-root$_src_validation_warning_warningdetector_check_physical_strain", "target": "warning", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/validation/warning.py", "source_location": "L136", "weight": 1.0}, {"source": "$graphify-root$_src_validation_warning_warningdetector_check_purpose_mismatch", "target": "$graphify-root$_src_validation_warning_cosine_distance", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/validation/warning.py", "source_location": "L163", "weight": 1.0}, {"source": "$graphify-root$_src_validation_warning_warningdetector_check_purpose_mismatch", "target": "warning", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/validation/warning.py", "source_location": "L167", "weight": 1.0}, {"source": "$graphify-root$_src_validation_warning_warningdetector_check_cumulative_fatigue", "target": "warning", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/validation/warning.py", "source_location": "L211", "weight": 1.0}, {"source": "$graphify-root$_src_validation_warning_warningdetector_check_area_revisit", "target": "warning", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/validation/warning.py", "source_location": "L257", "weight": 1.0}, {"source": "$graphify-root$_src_validation_warning_rationale_1", "target": "$graphify-root$_src_validation_warning_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/validation/warning.py", "source_location": "L1", "weight": 1.0}, {"source": "$graphify-root$_src_validation_warning_rationale_40", "target": "$graphify-root$_src_validation_warning_warningdetector", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/validation/warning.py", "source_location": "L40", "weight": 1.0}, {"source": "$graphify-root$_src_validation_warning_rationale_58", "target": "$graphify-root$_src_validation_warning_warningdetector_detect", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/validation/warning.py", "source_location": "L58", "weight": 1.0}, {"source": "$graphify-root$_src_validation_warning_rationale_182", "target": "$graphify-root$_src_validation_warning_warningdetector_check_cumulative_fatigue", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/validation/warning.py", "source_location": "L182", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_src_validation_warning_cosine_distance", "callee": "get", "is_member_call": true, "source_file": "src/validation/warning.py", "source_location": "L31", "receiver": "v1"}, {"caller_nid": "$graphify-root$_src_validation_warning_cosine_distance", "callee": "get", "is_member_call": true, "source_file": "src/validation/warning.py", "source_location": "L31", "receiver": "v2"}, {"caller_nid": "$graphify-root$_src_validation_warning_cosine_distance", "callee": "sqrt", "is_member_call": true, "source_file": "src/validation/warning.py", "source_location": "L32", "receiver": "math"}, {"caller_nid": "$graphify-root$_src_validation_warning_cosine_distance", "callee": "values", "is_member_call": true, "source_file": "src/validation/warning.py", "source_location": "L32", "receiver": "v1"}, {"caller_nid": "$graphify-root$_src_validation_warning_cosine_distance", "callee": "sqrt", "is_member_call": true, "source_file": "src/validation/warning.py", "source_location": "L33", "receiver": "math"}, {"caller_nid": "$graphify-root$_src_validation_warning_cosine_distance", "callee": "values", "is_member_call": true, "source_file": "src/validation/warning.py", "source_location": "L33", "receiver": "v2"}, {"caller_nid": "$graphify-root$_src_validation_warning_warningdetector_detect", "callee": "build_dist_cache", "is_member_call": false, "source_file": "src/validation/warning.py", "source_location": "L59", "receiver": null}, {"caller_nid": "$graphify-root$_src_validation_warning_warningdetector_detect", "callee": "extend", "is_member_call": true, "source_file": "src/validation/warning.py", "source_location": "L61", "receiver": "warns"}, {"caller_nid": "$graphify-root$_src_validation_warning_warningdetector_detect", "callee": "extend", "is_member_call": true, "source_file": "src/validation/warning.py", "source_location": "L62", "receiver": "warns"}, {"caller_nid": "$graphify-root$_src_validation_warning_warningdetector_detect", "callee": "extend", "is_member_call": true, "source_file": "src/validation/warning.py", "source_location": "L63", "receiver": "warns"}, {"caller_nid": "$graphify-root$_src_validation_warning_warningdetector_detect", "callee": "extend", "is_member_call": true, "source_file": "src/validation/warning.py", "source_location": "L64", "receiver": "warns"}, {"caller_nid": "$graphify-root$_src_validation_warning_warningdetector_detect", "callee": "extend", "is_member_call": true, "source_file": "src/validation/warning.py", "source_location": "L65", "receiver": "warns"}, {"caller_nid": "$graphify-root$_src_validation_warning_warningdetector_check_dense_schedule", "callee": "get_party_profile", "is_member_call": false, "source_file": "src/validation/warning.py", "source_location": "L80", "receiver": null}, {"caller_nid": "$graphify-root$_src_validation_warning_warningdetector_check_dense_schedule", "callee": "get_travel_min", "is_member_call": false, "source_file": "src/validation/warning.py", "source_location": "L84", "receiver": null}, {"caller_nid": "$graphify-root$_src_validation_warning_warningdetector_check_inefficient_route", "callee": "get", "is_member_call": true, "source_file": "src/validation/warning.py", "source_location": "L107", "receiver": "dist_cache"}, {"caller_nid": "$graphify-root$_src_validation_warning_warningdetector_check_inefficient_route", "callee": "nn_heuristic_km", "is_member_call": false, "source_file": "src/validation/warning.py", "source_location": "L110", "receiver": null}, {"caller_nid": "$graphify-root$_src_validation_warning_warningdetector_check_physical_strain", "callee": "get_party_profile", "is_member_call": false, "source_file": "src/validation/warning.py", "source_location": "L130", "receiver": null}, {"caller_nid": "$graphify-root$_src_validation_warning_warningdetector_check_physical_strain", "callee": "get", "is_member_call": true, "source_file": "src/validation/warning.py", "source_location": "L132", "receiver": "dist_cache"}, {"caller_nid": "$graphify-root$_src_validation_warning_warningdetector_check_purpose_mismatch", "callee": "get", "is_member_call": true, "source_file": "src/validation/warning.py", "source_location": "L148", "receiver": "INTENT_VECTORS"}, {"caller_nid": "$graphify-root$_src_validation_warning_warningdetector_check_purpose_mismatch", "callee": "get", "is_member_call": true, "source_file": "src/validation/warning.py", "source_location": "L160", "receiver": "cat_count"}, {"caller_nid": "$graphify-root$_src_validation_warning_warningdetector_check_purpose_mismatch", "callee": "items", "is_member_call": true, "source_file": "src/validation/warning.py", "source_location": "L161", "receiver": "cat_count"}, {"caller_nid": "$graphify-root$_src_validation_warning_warningdetector_check_cumulative_fatigue", "callee": "get_party_profile", "is_member_call": false, "source_file": "src/validation/warning.py", "source_location": "L186", "receiver": null}, {"caller_nid": "$graphify-root$_src_validation_warning_warningdetector_check_cumulative_fatigue", "callee": "append", "is_member_call": true, "source_file": "src/validation/warning.py", "source_location": "L192", "receiver": "intensities"}, {"caller_nid": "$graphify-root$_src_validation_warning_warningdetector_check_cumulative_fatigue", "callee": "build_dist_cache", "is_member_call": false, "source_file": "src/validation/warning.py", "source_location": "L194", "receiver": null}, {"caller_nid": "$graphify-root$_src_validation_warning_warningdetector_check_cumulative_fatigue", "callee": "get_travel_min", "is_member_call": false, "source_file": "src/validation/warning.py", "source_location": "L197", "receiver": null}, {"caller_nid": "$graphify-root$_src_validation_warning_warningdetector_check_cumulative_fatigue", "callee": "append", "is_member_call": true, "source_file": "src/validation/warning.py", "source_location": "L200", "receiver": "intensities"}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.31/ec0107a9398d08e7471ca703ad6d216d17fd73c2b0dcbc405920d97ea761f9fc.json b/graphify-out/cache/ast/v0.9.31/ec0107a9398d08e7471ca703ad6d216d17fd73c2b0dcbc405920d97ea761f9fc.json new file mode 100644 index 0000000..1a52d4b --- /dev/null +++ b/graphify-out/cache/ast/v0.9.31/ec0107a9398d08e7471ca703ad6d216d17fd73c2b0dcbc405920d97ea761f9fc.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_src_validation_alternatives_py", "label": "alternatives.py", "file_type": "code", "source_file": "src/validation/alternatives.py", "source_location": "L1"}, {"id": "$graphify-root$_src_validation_alternatives_haversine_km", "label": "_haversine_km()", "file_type": "code", "source_file": "src/validation/alternatives.py", "source_location": "L32", "_callable": true}, {"id": "$graphify-root$_src_validation_alternatives_alternativesfinder", "label": "AlternativesFinder", "file_type": "code", "source_file": "src/validation/alternatives.py", "source_location": "L40", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_src_validation_alternatives_alternativesfinder_init", "label": ".__init__()", "file_type": "code", "source_file": "src/validation/alternatives.py", "source_location": "L49", "_callable": true}, {"id": "poi", "label": "POI", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/src/validation/alternatives.py"}, {"id": "$graphify-root$_src_validation_alternatives_alternativesfinder_find_alternatives", "label": ".find_alternatives()", "file_type": "code", "source_file": "src/validation/alternatives.py", "source_location": "L59", "_callable": true}, {"id": "alternativepoi", "label": "AlternativePOI", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/src/validation/alternatives.py"}, {"id": "$graphify-root$_src_validation_alternatives_alternativesfinder_build_alternatives_map", "label": ".build_alternatives_map()", "file_type": "code", "source_file": "src/validation/alternatives.py", "source_location": "L92", "_callable": true}, {"id": "hardfail", "label": "HardFail", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/src/validation/alternatives.py"}, {"id": "$graphify-root$_src_validation_alternatives_rationale_1", "label": "Hard Fail \ubc1c\uc0dd \uc7a5\uc18c\uc5d0 \ub300\ud55c \ub300\uccb4 \ud6c4\ubcf4 \ud0d0\uc0c9\uae30 (Repair \ubcf4\uc870 \ub3c4\uad6c). \uc774 \ubaa8\ub4c8\uc740 '\uac80\uc99d'\uc774 \uc544\ub2cc '\uc218\ub9ac \uc81c\uc548'\uc758 \ubcf4\uc870 \ub3c4\uad6c\uc774\ub2e4.\u2026", "file_type": "rationale", "source_file": "src/validation/alternatives.py", "source_location": "L1"}, {"id": "$graphify-root$_src_validation_alternatives_rationale_41", "label": "Hard Fail POI\ub97c \ub300\uccb4\ud560 \ud6c4\ubcf4 \ucd94\ucc9c\uae30. Args: poi_pool: \ud0d0\uc0c9 \ub300\uc0c1 \uc804\uccb4 POI \ud480 (TourAPI \ub4f1 \uc678\ubd80\uc5d0\uc11c \uc8fc\uc785).\u2026", "file_type": "rationale", "source_file": "src/validation/alternatives.py", "source_location": "L41"}, {"id": "$graphify-root$_src_validation_alternatives_rationale_64", "label": "failed_poi\uc640 \uac19\uc740 \uce74\ud14c\uace0\ub9ac \uc911 \uac00\uc7a5 \uac00\uae4c\uc6b4 POI\ub97c \ubc18\ud658. \uac19\uc740 \uce74\ud14c\uace0\ub9ac\uac00 \uc5c6\uc73c\uba74 \ubc18\uacbd \ub0b4 \ubaa8\ub4e0 POI\ub97c \uac70\ub9ac \uc21c\uc73c\ub85c \ubc18\ud658.", "file_type": "rationale", "source_file": "src/validation/alternatives.py", "source_location": "L64"}, {"id": "$graphify-root$_src_validation_alternatives_rationale_98", "label": "Hard Fail \ubaa9\ub85d \uae30\ubc18\uc73c\ub85c POI \uc774\ub984 \u2192 \ub300\uccb4 \ud6c4\ubcf4 \ub515\uc154\ub108\ub9ac \ubc18\ud658. Minimal Interference \uc6d0\uce59(\uc7ac\ubc30\uce58 \u2192 \uc2dc\uac04\uc870\uc815 \u2192\u2026", "file_type": "rationale", "source_file": "src/validation/alternatives.py", "source_location": "L98"}], "edges": [{"source": "$graphify-root$_src_validation_alternatives_py", "target": "math", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "src/validation/alternatives.py", "source_location": "L23", "weight": 1.0}, {"source": "$graphify-root$_src_validation_alternatives_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "src/validation/alternatives.py", "source_location": "L24", "weight": 1.0}, {"source": "$graphify-root$_src_validation_alternatives_py", "target": "src_data_models", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "src/validation/alternatives.py", "source_location": "L26", "weight": 1.0}, {"source": "$graphify-root$_src_validation_alternatives_py", "target": "$graphify-root$_src_validation_alternatives_haversine_km", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/validation/alternatives.py", "source_location": "L32", "weight": 1.0}, {"source": "$graphify-root$_src_validation_alternatives_py", "target": "$graphify-root$_src_validation_alternatives_alternativesfinder", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/validation/alternatives.py", "source_location": "L40", "weight": 1.0}, {"source": "$graphify-root$_src_validation_alternatives_alternativesfinder", "target": "$graphify-root$_src_validation_alternatives_alternativesfinder_init", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/validation/alternatives.py", "source_location": "L49", "weight": 1.0}, {"source": "$graphify-root$_src_validation_alternatives_alternativesfinder_init", "target": "poi", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "src/validation/alternatives.py", "source_location": "L49", "weight": 1.0}, {"source": "$graphify-root$_src_validation_alternatives_alternativesfinder", "target": "$graphify-root$_src_validation_alternatives_alternativesfinder_find_alternatives", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/validation/alternatives.py", "source_location": "L59", "weight": 1.0}, {"source": "$graphify-root$_src_validation_alternatives_alternativesfinder_find_alternatives", "target": "poi", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "src/validation/alternatives.py", "source_location": "L59", "weight": 1.0}, {"source": "$graphify-root$_src_validation_alternatives_alternativesfinder_find_alternatives", "target": "alternativepoi", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "src/validation/alternatives.py", "source_location": "L59", "weight": 1.0}, {"source": "$graphify-root$_src_validation_alternatives_alternativesfinder", "target": "$graphify-root$_src_validation_alternatives_alternativesfinder_build_alternatives_map", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/validation/alternatives.py", "source_location": "L92", "weight": 1.0}, {"source": "$graphify-root$_src_validation_alternatives_alternativesfinder_build_alternatives_map", "target": "hardfail", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "src/validation/alternatives.py", "source_location": "L92", "weight": 1.0}, {"source": "$graphify-root$_src_validation_alternatives_alternativesfinder_build_alternatives_map", "target": "poi", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "src/validation/alternatives.py", "source_location": "L92", "weight": 1.0}, {"source": "$graphify-root$_src_validation_alternatives_alternativesfinder_build_alternatives_map", "target": "alternativepoi", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "src/validation/alternatives.py", "source_location": "L92", "weight": 1.0}, {"source": "$graphify-root$_src_validation_alternatives_alternativesfinder_find_alternatives", "target": "$graphify-root$_src_validation_alternatives_haversine_km", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/validation/alternatives.py", "source_location": "L74", "weight": 1.0}, {"source": "$graphify-root$_src_validation_alternatives_alternativesfinder_find_alternatives", "target": "alternativepoi", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/validation/alternatives.py", "source_location": "L82", "weight": 1.0}, {"source": "$graphify-root$_src_validation_alternatives_alternativesfinder_build_alternatives_map", "target": "$graphify-root$_src_validation_alternatives_alternativesfinder_find_alternatives", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/validation/alternatives.py", "source_location": "L117", "weight": 1.0}, {"source": "$graphify-root$_src_validation_alternatives_rationale_1", "target": "$graphify-root$_src_validation_alternatives_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/validation/alternatives.py", "source_location": "L1", "weight": 1.0}, {"source": "$graphify-root$_src_validation_alternatives_rationale_41", "target": "$graphify-root$_src_validation_alternatives_alternativesfinder", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/validation/alternatives.py", "source_location": "L41", "weight": 1.0}, {"source": "$graphify-root$_src_validation_alternatives_rationale_64", "target": "$graphify-root$_src_validation_alternatives_alternativesfinder_find_alternatives", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/validation/alternatives.py", "source_location": "L64", "weight": 1.0}, {"source": "$graphify-root$_src_validation_alternatives_rationale_98", "target": "$graphify-root$_src_validation_alternatives_alternativesfinder_build_alternatives_map", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/validation/alternatives.py", "source_location": "L98", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_src_validation_alternatives_haversine_km", "callee": "radians", "is_member_call": true, "source_file": "src/validation/alternatives.py", "source_location": "L33", "receiver": "math"}, {"caller_nid": "$graphify-root$_src_validation_alternatives_haversine_km", "callee": "radians", "is_member_call": true, "source_file": "src/validation/alternatives.py", "source_location": "L33", "receiver": "math"}, {"caller_nid": "$graphify-root$_src_validation_alternatives_haversine_km", "callee": "radians", "is_member_call": true, "source_file": "src/validation/alternatives.py", "source_location": "L34", "receiver": "math"}, {"caller_nid": "$graphify-root$_src_validation_alternatives_haversine_km", "callee": "radians", "is_member_call": true, "source_file": "src/validation/alternatives.py", "source_location": "L35", "receiver": "math"}, {"caller_nid": "$graphify-root$_src_validation_alternatives_haversine_km", "callee": "sin", "is_member_call": true, "source_file": "src/validation/alternatives.py", "source_location": "L36", "receiver": "math"}, {"caller_nid": "$graphify-root$_src_validation_alternatives_haversine_km", "callee": "cos", "is_member_call": true, "source_file": "src/validation/alternatives.py", "source_location": "L36", "receiver": "math"}, {"caller_nid": "$graphify-root$_src_validation_alternatives_haversine_km", "callee": "cos", "is_member_call": true, "source_file": "src/validation/alternatives.py", "source_location": "L36", "receiver": "math"}, {"caller_nid": "$graphify-root$_src_validation_alternatives_haversine_km", "callee": "sin", "is_member_call": true, "source_file": "src/validation/alternatives.py", "source_location": "L36", "receiver": "math"}, {"caller_nid": "$graphify-root$_src_validation_alternatives_haversine_km", "callee": "asin", "is_member_call": true, "source_file": "src/validation/alternatives.py", "source_location": "L37", "receiver": "math"}, {"caller_nid": "$graphify-root$_src_validation_alternatives_haversine_km", "callee": "sqrt", "is_member_call": true, "source_file": "src/validation/alternatives.py", "source_location": "L37", "receiver": "math"}, {"caller_nid": "$graphify-root$_src_validation_alternatives_alternativesfinder_find_alternatives", "callee": "append", "is_member_call": true, "source_file": "src/validation/alternatives.py", "source_location": "L76", "receiver": "candidates"}, {"caller_nid": "$graphify-root$_src_validation_alternatives_alternativesfinder_find_alternatives", "callee": "sort", "is_member_call": true, "source_file": "src/validation/alternatives.py", "source_location": "L79", "receiver": "candidates"}, {"caller_nid": "$graphify-root$_src_validation_alternatives_alternativesfinder_build_alternatives_map", "callee": "get", "is_member_call": true, "source_file": "src/validation/alternatives.py", "source_location": "L114", "receiver": "poi_by_name"}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.31/ef103c9e60e513d31184619cc642392b827076a5f855a1a23eededc4d9efd764.json b/graphify-out/cache/ast/v0.9.31/ef103c9e60e513d31184619cc642392b827076a5f855a1a23eededc4d9efd764.json new file mode 100644 index 0000000..a3f46bb --- /dev/null +++ b/graphify-out/cache/ast/v0.9.31/ef103c9e60e513d31184619cc642392b827076a5f855a1a23eededc4d9efd764.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_tests_test_region_config_py", "label": "test_region_config.py", "file_type": "code", "source_file": "tests/test_region_config.py", "source_location": "L1"}, {"id": "$graphify-root$_tests_test_region_config_testgetthresholds", "label": "TestGetThresholds", "file_type": "code", "source_file": "tests/test_region_config.py", "source_location": "L12", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_tests_test_region_config_testgetthresholds_test_seoul_code_returns_high", "label": ".test_seoul_code_returns_high()", "file_type": "code", "source_file": "tests/test_region_config.py", "source_location": "L13", "_callable": true}, {"id": "$graphify-root$_tests_test_region_config_testgetthresholds_test_busan_code_returns_high", "label": ".test_busan_code_returns_high()", "file_type": "code", "source_file": "tests/test_region_config.py", "source_location": "L16", "_callable": true}, {"id": "$graphify-root$_tests_test_region_config_testgetthresholds_test_daegu_code_returns_medium", "label": ".test_daegu_code_returns_medium()", "file_type": "code", "source_file": "tests/test_region_config.py", "source_location": "L19", "_callable": true}, {"id": "$graphify-root$_tests_test_region_config_testgetthresholds_test_rural_code_returns_low", "label": ".test_rural_code_returns_low()", "file_type": "code", "source_file": "tests/test_region_config.py", "source_location": "L22", "_callable": true}, {"id": "$graphify-root$_tests_test_region_config_testgetthresholds_test_none_returns_medium", "label": ".test_none_returns_medium()", "file_type": "code", "source_file": "tests/test_region_config.py", "source_location": "L25", "_callable": true}, {"id": "$graphify-root$_tests_test_region_config_testgetthresholds_test_unknown_code_returns_low", "label": ".test_unknown_code_returns_low()", "file_type": "code", "source_file": "tests/test_region_config.py", "source_location": "L28", "_callable": true}, {"id": "$graphify-root$_tests_test_region_config_testgetthresholds_test_high_dist_warn_smaller_than_low", "label": ".test_high_dist_warn_smaller_than_low()", "file_type": "code", "source_file": "tests/test_region_config.py", "source_location": "L31", "_callable": true}, {"id": "$graphify-root$_tests_test_region_config_testgetthresholds_test_high_physical_strain_smaller_than_low", "label": ".test_high_physical_strain_smaller_than_low()", "file_type": "code", "source_file": "tests/test_region_config.py", "source_location": "L34", "_callable": true}, {"id": "$graphify-root$_tests_test_region_config_testgetthresholds_test_tier_fields_ordered", "label": ".test_tier_fields_ordered()", "file_type": "code", "source_file": "tests/test_region_config.py", "source_location": "L37", "_callable": true}, {"id": "$graphify-root$_tests_test_region_config_rationale_1", "label": "RegionThresholds \uc720\ub2db \ud14c\uc2a4\ud2b8.", "file_type": "rationale", "source_file": "tests/test_region_config.py", "source_location": "L1"}], "edges": [{"source": "$graphify-root$_tests_test_region_config_py", "target": "src_data_region_config", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_region_config.py", "source_location": "L4", "weight": 1.0}, {"source": "$graphify-root$_tests_test_region_config_py", "target": "$graphify-root$_tests_test_region_config_testgetthresholds", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_region_config.py", "source_location": "L12", "weight": 1.0}, {"source": "$graphify-root$_tests_test_region_config_testgetthresholds", "target": "$graphify-root$_tests_test_region_config_testgetthresholds_test_seoul_code_returns_high", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_region_config.py", "source_location": "L13", "weight": 1.0}, {"source": "$graphify-root$_tests_test_region_config_testgetthresholds", "target": "$graphify-root$_tests_test_region_config_testgetthresholds_test_busan_code_returns_high", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_region_config.py", "source_location": "L16", "weight": 1.0}, {"source": "$graphify-root$_tests_test_region_config_testgetthresholds", "target": "$graphify-root$_tests_test_region_config_testgetthresholds_test_daegu_code_returns_medium", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_region_config.py", "source_location": "L19", "weight": 1.0}, {"source": "$graphify-root$_tests_test_region_config_testgetthresholds", "target": "$graphify-root$_tests_test_region_config_testgetthresholds_test_rural_code_returns_low", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_region_config.py", "source_location": "L22", "weight": 1.0}, {"source": "$graphify-root$_tests_test_region_config_testgetthresholds", "target": "$graphify-root$_tests_test_region_config_testgetthresholds_test_none_returns_medium", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_region_config.py", "source_location": "L25", "weight": 1.0}, {"source": "$graphify-root$_tests_test_region_config_testgetthresholds", "target": "$graphify-root$_tests_test_region_config_testgetthresholds_test_unknown_code_returns_low", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_region_config.py", "source_location": "L28", "weight": 1.0}, {"source": "$graphify-root$_tests_test_region_config_testgetthresholds", "target": "$graphify-root$_tests_test_region_config_testgetthresholds_test_high_dist_warn_smaller_than_low", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_region_config.py", "source_location": "L31", "weight": 1.0}, {"source": "$graphify-root$_tests_test_region_config_testgetthresholds", "target": "$graphify-root$_tests_test_region_config_testgetthresholds_test_high_physical_strain_smaller_than_low", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_region_config.py", "source_location": "L34", "weight": 1.0}, {"source": "$graphify-root$_tests_test_region_config_testgetthresholds", "target": "$graphify-root$_tests_test_region_config_testgetthresholds_test_tier_fields_ordered", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_region_config.py", "source_location": "L37", "weight": 1.0}, {"source": "$graphify-root$_tests_test_region_config_rationale_1", "target": "$graphify-root$_tests_test_region_config_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_region_config.py", "source_location": "L1", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_tests_test_region_config_testgetthresholds_test_seoul_code_returns_high", "callee": "get_thresholds", "is_member_call": false, "source_file": "tests/test_region_config.py", "source_location": "L14", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_region_config_testgetthresholds_test_busan_code_returns_high", "callee": "get_thresholds", "is_member_call": false, "source_file": "tests/test_region_config.py", "source_location": "L17", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_region_config_testgetthresholds_test_daegu_code_returns_medium", "callee": "get_thresholds", "is_member_call": false, "source_file": "tests/test_region_config.py", "source_location": "L20", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_region_config_testgetthresholds_test_rural_code_returns_low", "callee": "get_thresholds", "is_member_call": false, "source_file": "tests/test_region_config.py", "source_location": "L23", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_region_config_testgetthresholds_test_none_returns_medium", "callee": "get_thresholds", "is_member_call": false, "source_file": "tests/test_region_config.py", "source_location": "L26", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_region_config_testgetthresholds_test_unknown_code_returns_low", "callee": "get_thresholds", "is_member_call": false, "source_file": "tests/test_region_config.py", "source_location": "L29", "receiver": null}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.31/f2ddc4c32d3ace6eb5786bbe136168ec6286d22339b0c2b5fba5c5411ba3db33.json b/graphify-out/cache/ast/v0.9.31/f2ddc4c32d3ace6eb5786bbe136168ec6286d22339b0c2b5fba5c5411ba3db33.json new file mode 100644 index 0000000..b72fdbe --- /dev/null +++ b/graphify-out/cache/ast/v0.9.31/f2ddc4c32d3ace6eb5786bbe136168ec6286d22339b0c2b5fba5c5411ba3db33.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_src_init_py", "label": "__init__.py", "file_type": "code", "source_file": "src/__init__.py", "source_location": "L1"}], "edges": [], "raw_calls": []} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.31/f2f82fb7d4e09432e8b04a83a983b4f9aced3d9249e58d9f36558841ac9aa8a6.json b/graphify-out/cache/ast/v0.9.31/f2f82fb7d4e09432e8b04a83a983b4f9aced3d9249e58d9f36558841ac9aa8a6.json new file mode 100644 index 0000000..24fe996 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.31/f2f82fb7d4e09432e8b04a83a983b4f9aced3d9249e58d9f36558841ac9aa8a6.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_src_data_dwell_db_py", "label": "dwell_db.py", "file_type": "code", "source_file": "src/data/dwell_db.py", "source_location": "L1"}, {"id": "$graphify-root$_src_data_dwell_db_dwellrecommendation", "label": "DwellRecommendation", "file_type": "code", "source_file": "src/data/dwell_db.py", "source_location": "L21", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_src_data_dwell_db_dwellrecommendation_is_too_short", "label": ".is_too_short()", "file_type": "code", "source_file": "src/data/dwell_db.py", "source_location": "L27", "_callable": true}, {"id": "$graphify-root$_src_data_dwell_db_normalize_name", "label": "_normalize_name()", "file_type": "code", "source_file": "src/data/dwell_db.py", "source_location": "L181", "_callable": true}, {"id": "$graphify-root$_src_data_dwell_db_get_recommended_dwell", "label": "get_recommended_dwell()", "file_type": "code", "source_file": "src/data/dwell_db.py", "source_location": "L192", "_callable": true}, {"id": "$graphify-root$_src_data_dwell_db_rationale_1", "label": "\uad8c\uc7a5 \uccb4\ub958\uc2dc\uac04 \ub370\uc774\ud130\ubca0\uc774\uc2a4 (\ud558\uc774\ube0c\ub9ac\ub4dc \ub8e9\uc5c5). 5\ub2e8\uacc4 \ud3f4\ubc31 \uc6b0\uc120\uc21c\uc704\ub85c (min, max) \ubd84 \ub2e8\uc704 \uad8c\uc7a5 \uccb4\ub958\uc2dc\uac04\uc744 \ubc18\ud658: 1.\u2026", "file_type": "rationale", "source_file": "src/data/dwell_db.py", "source_location": "L1"}, {"id": "$graphify-root$_src_data_dwell_db_rationale_28", "label": "\uc0ac\uc6a9\uc790 \uc785\ub825\uc774 \uad8c\uc7a5 min\uc758 ratio(\uae30\ubcf8 50%) \ubbf8\ub9cc\uc774\uba74 True.", "file_type": "rationale", "source_file": "src/data/dwell_db.py", "source_location": "L28"}, {"id": "$graphify-root$_src_data_dwell_db_rationale_182", "label": "\uc774\ub984 \uc815\uaddc\ud654: \uacf5\ubc31\u00b7\ud2b9\uc218\ubb38\uc790 \uc81c\uac70 \ud6c4 \uc18c\ubb38\uc790.", "file_type": "rationale", "source_file": "src/data/dwell_db.py", "source_location": "L182"}, {"id": "$graphify-root$_src_data_dwell_db_rationale_198", "label": "5\ub2e8\uacc4 \ud3f4\ubc31\uc73c\ub85c \uad8c\uc7a5 \uccb4\ub958\uc2dc\uac04 \ubc18\ud658. \uc778\uc790 ---- name : POI \uc774\ub984 (\ud544\uc218) lcls_systm3 : \"VE0101\" \uac19\uc740\u2026", "file_type": "rationale", "source_file": "src/data/dwell_db.py", "source_location": "L198"}], "edges": [{"source": "$graphify-root$_src_data_dwell_db_py", "target": "dataclasses", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "src/data/dwell_db.py", "source_location": "L14", "weight": 1.0}, {"source": "$graphify-root$_src_data_dwell_db_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "src/data/dwell_db.py", "source_location": "L15", "weight": 1.0}, {"source": "$graphify-root$_src_data_dwell_db_py", "target": "$graphify-root$_src_data_dwell_db_dwellrecommendation", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/data/dwell_db.py", "source_location": "L21", "weight": 1.0}, {"source": "$graphify-root$_src_data_dwell_db_dwellrecommendation", "target": "$graphify-root$_src_data_dwell_db_dwellrecommendation_is_too_short", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/data/dwell_db.py", "source_location": "L27", "weight": 1.0}, {"source": "$graphify-root$_src_data_dwell_db_py", "target": "$graphify-root$_src_data_dwell_db_normalize_name", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/data/dwell_db.py", "source_location": "L181", "weight": 1.0}, {"source": "$graphify-root$_src_data_dwell_db_py", "target": "$graphify-root$_src_data_dwell_db_get_recommended_dwell", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/data/dwell_db.py", "source_location": "L192", "weight": 1.0}, {"source": "$graphify-root$_src_data_dwell_db_get_recommended_dwell", "target": "$graphify-root$_src_data_dwell_db_dwellrecommendation", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "src/data/dwell_db.py", "source_location": "L192", "weight": 1.0}, {"source": "$graphify-root$_src_data_dwell_db_get_recommended_dwell", "target": "$graphify-root$_src_data_dwell_db_normalize_name", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/data/dwell_db.py", "source_location": "L212", "weight": 1.0}, {"source": "$graphify-root$_src_data_dwell_db_get_recommended_dwell", "target": "$graphify-root$_src_data_dwell_db_dwellrecommendation", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/data/dwell_db.py", "source_location": "L215", "weight": 1.0}, {"source": "$graphify-root$_src_data_dwell_db_rationale_1", "target": "$graphify-root$_src_data_dwell_db_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/data/dwell_db.py", "source_location": "L1", "weight": 1.0}, {"source": "$graphify-root$_src_data_dwell_db_rationale_28", "target": "$graphify-root$_src_data_dwell_db_dwellrecommendation_is_too_short", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/data/dwell_db.py", "source_location": "L28", "weight": 1.0}, {"source": "$graphify-root$_src_data_dwell_db_rationale_182", "target": "$graphify-root$_src_data_dwell_db_normalize_name", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/data/dwell_db.py", "source_location": "L182", "weight": 1.0}, {"source": "$graphify-root$_src_data_dwell_db_rationale_198", "target": "$graphify-root$_src_data_dwell_db_get_recommended_dwell", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/data/dwell_db.py", "source_location": "L198", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_src_data_dwell_db_normalize_name", "callee": "replace", "is_member_call": true, "source_file": "src/data/dwell_db.py", "source_location": "L183", "receiver": null}, {"caller_nid": "$graphify-root$_src_data_dwell_db_normalize_name", "callee": "replace", "is_member_call": true, "source_file": "src/data/dwell_db.py", "source_location": "L183", "receiver": null}, {"caller_nid": "$graphify-root$_src_data_dwell_db_normalize_name", "callee": "lower", "is_member_call": true, "source_file": "src/data/dwell_db.py", "source_location": "L183", "receiver": null}, {"caller_nid": "$graphify-root$_src_data_dwell_db_normalize_name", "callee": "join", "is_member_call": true, "source_file": "src/data/dwell_db.py", "source_location": "L183", "receiver": null}, {"caller_nid": "$graphify-root$_src_data_dwell_db_normalize_name", "callee": "split", "is_member_call": true, "source_file": "src/data/dwell_db.py", "source_location": "L183", "receiver": "name"}, {"caller_nid": "$graphify-root$_src_data_dwell_db_get_recommended_dwell", "callee": "DEFAULT_DWELL", "is_member_call": false, "indirect": true, "context": "assignment", "source_file": "src/data/dwell_db.py", "source_location": "L235"}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.31/f50f70785c6271e4491a7a11522d57a9f692e307cfe5262e21fd624e12c72369.json b/graphify-out/cache/ast/v0.9.31/f50f70785c6271e4491a7a11522d57a9f692e307cfe5262e21fd624e12c72369.json new file mode 100644 index 0000000..4fc9e56 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.31/f50f70785c6271e4491a7a11522d57a9f692e307cfe5262e21fd624e12c72369.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_src_explain_pipeline_py", "label": "pipeline.py", "file_type": "code", "source_file": "src/explain/pipeline.py", "source_location": "L1"}, {"id": "$graphify-root$_src_explain_pipeline_to_vrptw_day", "label": "_to_vrptw_day()", "file_type": "code", "source_file": "src/explain/pipeline.py", "source_location": "L53", "_callable": true}, {"id": "poi", "label": "POI", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/src/explain/pipeline.py"}, {"id": "vrptwday", "label": "VRPTWDay", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/src/explain/pipeline.py"}, {"id": "$graphify-root$_src_explain_pipeline_to_poi_with_category", "label": "_to_poi_with_category()", "file_type": "code", "source_file": "src/explain/pipeline.py", "source_location": "L70", "_callable": true}, {"id": "poiwithcategory", "label": "POIWithCategory", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/src/explain/pipeline.py"}, {"id": "$graphify-root$_src_explain_pipeline_scorebundle", "label": "_ScoreBundle", "file_type": "code", "source_file": "src/explain/pipeline.py", "source_location": "L83", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_src_explain_pipeline_validatorpipeline", "label": "ValidatorPipeline", "file_type": "code", "source_file": "src/explain/pipeline.py", "source_location": "L100", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_src_explain_pipeline_validatorpipeline_init", "label": ".__init__()", "file_type": "code", "source_file": "src/explain/pipeline.py", "source_location": "L103", "_callable": true}, {"id": "bonusengine", "label": "BonusEngine", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/src/explain/pipeline.py"}, {"id": "themealignmentjudge", "label": "ThemeAlignmentJudge", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/src/explain/pipeline.py"}, {"id": "explainengine", "label": "ExplainEngine", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/src/explain/pipeline.py"}, {"id": "$graphify-root$_src_explain_pipeline_validatorpipeline_run", "label": ".run()", "file_type": "code", "source_file": "src/explain/pipeline.py", "source_location": "L119", "_callable": true}, {"id": "itineraryplan", "label": "ItineraryPlan", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/src/explain/pipeline.py"}, {"id": "userpreferences", "label": "UserPreferences", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/src/explain/pipeline.py"}, {"id": "validationresult", "label": "ValidationResult", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/src/explain/pipeline.py"}, {"id": "$graphify-root$_src_explain_pipeline_validatorpipeline_score", "label": "._score()", "file_type": "code", "source_file": "src/explain/pipeline.py", "source_location": "L235", "_callable": true}, {"id": "$graphify-root$_src_explain_pipeline_validatorpipeline_estimate_repair_gains", "label": "._estimate_repair_gains()", "file_type": "code", "source_file": "src/explain/pipeline.py", "source_location": "L349", "_callable": true}, {"id": "repairresult", "label": "RepairResult", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/src/explain/pipeline.py"}, {"id": "$graphify-root$_src_explain_pipeline_rationale_1", "label": "ValidatorPipeline \u2014 \uc804\uccb4 QA \ud30c\uc774\ud504\ub77c\uc778 \uc624\ucf00\uc2a4\ud2b8\ub808\uc774\ud130. \ud750\ub984: 1. per-day HardFail \ud0d0\uc9c0 2. Warning\u2026", "file_type": "rationale", "source_file": "src/explain/pipeline.py", "source_location": "L1"}, {"id": "$graphify-root$_src_explain_pipeline_rationale_54", "label": "POI \ub9ac\uc2a4\ud2b8 \u2192 VRPTWDay \ubcc0\ud658.", "file_type": "rationale", "source_file": "src/explain/pipeline.py", "source_location": "L54"}, {"id": "$graphify-root$_src_explain_pipeline_rationale_84", "label": "1\u00b73\u00b73b\u00b74\u00b75\u00b76\u00b77\u00b78\ub2e8\uacc4(\uc810\uc218 \uacc4\uc0b0)\ub9cc\uc758 \uacb0\uacfc. Warning\u00b7Repair\u00b7Explain \ubbf8\ud3ec\ud568.", "file_type": "rationale", "source_file": "src/explain/pipeline.py", "source_location": "L84"}, {"id": "$graphify-root$_src_explain_pipeline_rationale_101", "label": "\uc804\uccb4 \uac80\uc99d \ud30c\uc774\ud504\ub77c\uc778. External I/O = Claude API (ExplainEngine\u00b7ThemeAlignmentJudge).", "file_type": "rationale", "source_file": "src/explain/pipeline.py", "source_location": "L101"}, {"id": "$graphify-root$_src_explain_pipeline_rationale_128", "label": "\ud30c\uc774\ud504\ub77c\uc778 \uc2e4\ud589 \u2192 ValidationResult \ubc18\ud658. Args: plan: \uc5ec\ud589 \uacc4\ud68d (party_type, travel_type,\u2026", "file_type": "rationale", "source_file": "src/explain/pipeline.py", "source_location": "L128"}, {"id": "$graphify-root$_src_explain_pipeline_rationale_244", "label": "1\u00b73\u00b73b\u00b74\u00b75\u00b76\u00b77\u00b78\ub2e8\uacc4\ub9cc \uc2e4\ud589\ud574 \uc810\uc218\ub97c \uacc4\uc0b0\ud55c\ub2e4 (Warning\u00b7Repair\u00b7Explain \uc81c\uc678). RepairEngine \uc81c\uc548\uc758\u2026", "file_type": "rationale", "source_file": "src/explain/pipeline.py", "source_location": "L244"}, {"id": "$graphify-root$_src_explain_pipeline_rationale_357", "label": "\uad50\uc815 \uc81c\uc548\ubcc4 \uc608\uc0c1 \uc810\uc218 \ubcc0\ud654(`estimated_score_gain`)\uc640 \ubb38\uc81c \ud574\uc18c \uc5ec\ubd80(`resolves_hard_fail`)\ub97c \ucc44\uc6b4\ub2e4.\u2026", "file_type": "rationale", "source_file": "src/explain/pipeline.py", "source_location": "L357"}], "edges": [{"source": "$graphify-root$_src_explain_pipeline_py", "target": "dataclasses", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "src/explain/pipeline.py", "source_location": "L23", "weight": 1.0}, {"source": "$graphify-root$_src_explain_pipeline_py", "target": "pathlib", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "src/explain/pipeline.py", "source_location": "L24", "weight": 1.0}, {"source": "$graphify-root$_src_explain_pipeline_py", "target": "src_data_models", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "src/explain/pipeline.py", "source_location": "L26", "weight": 1.0}, {"source": "$graphify-root$_src_explain_pipeline_py", "target": "src_data_theme_taxonomy", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "src/explain/pipeline.py", "source_location": "L36", "weight": 1.0}, {"source": "$graphify-root$_src_explain_pipeline_py", "target": "src_explain_explain_engine", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "src/explain/pipeline.py", "source_location": "L37", "weight": 1.0}, {"source": "$graphify-root$_src_explain_pipeline_py", "target": "src_explain_repair", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "src/explain/pipeline.py", "source_location": "L38", "weight": 1.0}, {"source": "$graphify-root$_src_explain_pipeline_py", "target": "src_scoring_bonus_engine", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "src/explain/pipeline.py", "source_location": "L39", "weight": 1.0}, {"source": "$graphify-root$_src_explain_pipeline_py", "target": "src_scoring_cluster_dispersion", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "src/explain/pipeline.py", "source_location": "L40", "weight": 1.0}, {"source": "$graphify-root$_src_explain_pipeline_py", "target": "src_scoring_reward_engine", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "src/explain/pipeline.py", "source_location": "L41", "weight": 1.0}, {"source": "$graphify-root$_src_explain_pipeline_py", "target": "src_scoring_theme_alignment", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "src/explain/pipeline.py", "source_location": "L42", "weight": 1.0}, {"source": "$graphify-root$_src_explain_pipeline_py", "target": "src_scoring_travel_ratio", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "src/explain/pipeline.py", "source_location": "L43", "weight": 1.0}, {"source": "$graphify-root$_src_explain_pipeline_py", "target": "src_validation_hard_fail", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "src/explain/pipeline.py", "source_location": "L44", "weight": 1.0}, {"source": "$graphify-root$_src_explain_pipeline_py", "target": "src_validation_scoring", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "src/explain/pipeline.py", "source_location": "L45", "weight": 1.0}, {"source": "$graphify-root$_src_explain_pipeline_py", "target": "src_validation_vrptw_engine", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "src/explain/pipeline.py", "source_location": "L46", "weight": 1.0}, {"source": "$graphify-root$_src_explain_pipeline_py", "target": "src_validation_warning", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "src/explain/pipeline.py", "source_location": "L47", "weight": 1.0}, {"source": "$graphify-root$_src_explain_pipeline_py", "target": "$graphify-root$_src_explain_pipeline_to_vrptw_day", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/explain/pipeline.py", "source_location": "L53", "weight": 1.0}, {"source": "$graphify-root$_src_explain_pipeline_to_vrptw_day", "target": "poi", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "src/explain/pipeline.py", "source_location": "L53", "weight": 1.0}, {"source": "$graphify-root$_src_explain_pipeline_to_vrptw_day", "target": "vrptwday", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "src/explain/pipeline.py", "source_location": "L53", "weight": 1.0}, {"source": "$graphify-root$_src_explain_pipeline_py", "target": "$graphify-root$_src_explain_pipeline_to_poi_with_category", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/explain/pipeline.py", "source_location": "L70", "weight": 1.0}, {"source": "$graphify-root$_src_explain_pipeline_to_poi_with_category", "target": "poi", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "src/explain/pipeline.py", "source_location": "L70", "weight": 1.0}, {"source": "$graphify-root$_src_explain_pipeline_to_poi_with_category", "target": "poiwithcategory", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "src/explain/pipeline.py", "source_location": "L70", "weight": 1.0}, {"source": "$graphify-root$_src_explain_pipeline_py", "target": "$graphify-root$_src_explain_pipeline_scorebundle", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/explain/pipeline.py", "source_location": "L83", "weight": 1.0}, {"source": "$graphify-root$_src_explain_pipeline_py", "target": "$graphify-root$_src_explain_pipeline_validatorpipeline", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/explain/pipeline.py", "source_location": "L100", "weight": 1.0}, {"source": "$graphify-root$_src_explain_pipeline_validatorpipeline", "target": "$graphify-root$_src_explain_pipeline_validatorpipeline_init", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/explain/pipeline.py", "source_location": "L103", "weight": 1.0}, {"source": "$graphify-root$_src_explain_pipeline_validatorpipeline_init", "target": "bonusengine", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "src/explain/pipeline.py", "source_location": "L103", "weight": 1.0}, {"source": "$graphify-root$_src_explain_pipeline_validatorpipeline_init", "target": "themealignmentjudge", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "src/explain/pipeline.py", "source_location": "L103", "weight": 1.0}, {"source": "$graphify-root$_src_explain_pipeline_validatorpipeline_init", "target": "explainengine", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "src/explain/pipeline.py", "source_location": "L103", "weight": 1.0}, {"source": "$graphify-root$_src_explain_pipeline_validatorpipeline", "target": "$graphify-root$_src_explain_pipeline_validatorpipeline_run", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/explain/pipeline.py", "source_location": "L119", "weight": 1.0}, {"source": "$graphify-root$_src_explain_pipeline_validatorpipeline_run", "target": "itineraryplan", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "src/explain/pipeline.py", "source_location": "L119", "weight": 1.0}, {"source": "$graphify-root$_src_explain_pipeline_validatorpipeline_run", "target": "poi", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "src/explain/pipeline.py", "source_location": "L119", "weight": 1.0}, {"source": "$graphify-root$_src_explain_pipeline_validatorpipeline_run", "target": "userpreferences", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "src/explain/pipeline.py", "source_location": "L119", "weight": 1.0}, {"source": "$graphify-root$_src_explain_pipeline_validatorpipeline_run", "target": "validationresult", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "src/explain/pipeline.py", "source_location": "L119", "weight": 1.0}, {"source": "$graphify-root$_src_explain_pipeline_validatorpipeline", "target": "$graphify-root$_src_explain_pipeline_validatorpipeline_score", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/explain/pipeline.py", "source_location": "L235", "weight": 1.0}, {"source": "$graphify-root$_src_explain_pipeline_validatorpipeline_score", "target": "itineraryplan", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "src/explain/pipeline.py", "source_location": "L235", "weight": 1.0}, {"source": "$graphify-root$_src_explain_pipeline_validatorpipeline_score", "target": "poi", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "src/explain/pipeline.py", "source_location": "L235", "weight": 1.0}, {"source": "$graphify-root$_src_explain_pipeline_validatorpipeline_score", "target": "userpreferences", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "src/explain/pipeline.py", "source_location": "L235", "weight": 1.0}, {"source": "$graphify-root$_src_explain_pipeline_validatorpipeline_score", "target": "$graphify-root$_src_explain_pipeline_scorebundle", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "src/explain/pipeline.py", "source_location": "L235", "weight": 1.0}, {"source": "$graphify-root$_src_explain_pipeline_validatorpipeline", "target": "$graphify-root$_src_explain_pipeline_validatorpipeline_estimate_repair_gains", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/explain/pipeline.py", "source_location": "L349", "weight": 1.0}, {"source": "$graphify-root$_src_explain_pipeline_validatorpipeline_estimate_repair_gains", "target": "itineraryplan", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "src/explain/pipeline.py", "source_location": "L349", "weight": 1.0}, {"source": "$graphify-root$_src_explain_pipeline_validatorpipeline_estimate_repair_gains", "target": "poi", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "src/explain/pipeline.py", "source_location": "L349", "weight": 1.0}, {"source": "$graphify-root$_src_explain_pipeline_validatorpipeline_estimate_repair_gains", "target": "repairresult", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "src/explain/pipeline.py", "source_location": "L349", "weight": 1.0}, {"source": "$graphify-root$_src_explain_pipeline_validatorpipeline_estimate_repair_gains", "target": "repairresult", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "src/explain/pipeline.py", "source_location": "L349", "weight": 1.0}, {"source": "$graphify-root$_src_explain_pipeline_to_vrptw_day", "target": "vrptwday", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/explain/pipeline.py", "source_location": "L67", "weight": 1.0}, {"source": "$graphify-root$_src_explain_pipeline_to_poi_with_category", "target": "poiwithcategory", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/explain/pipeline.py", "source_location": "L72", "weight": 1.0}, {"source": "$graphify-root$_src_explain_pipeline_validatorpipeline_init", "target": "themealignmentjudge", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/explain/pipeline.py", "source_location": "L116", "weight": 1.0}, {"source": "$graphify-root$_src_explain_pipeline_validatorpipeline_init", "target": "explainengine", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/explain/pipeline.py", "source_location": "L117", "weight": 1.0}, {"source": "$graphify-root$_src_explain_pipeline_validatorpipeline_run", "target": "$graphify-root$_src_explain_pipeline_validatorpipeline_score", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/explain/pipeline.py", "source_location": "L139", "weight": 1.0}, {"source": "$graphify-root$_src_explain_pipeline_validatorpipeline_run", "target": "$graphify-root$_src_explain_pipeline_validatorpipeline_estimate_repair_gains", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/explain/pipeline.py", "source_location": "L198", "weight": 1.0}, {"source": "$graphify-root$_src_explain_pipeline_validatorpipeline_run", "target": "validationresult", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/explain/pipeline.py", "source_location": "L217", "weight": 1.0}, {"source": "$graphify-root$_src_explain_pipeline_validatorpipeline_score", "target": "$graphify-root$_src_explain_pipeline_to_vrptw_day", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/explain/pipeline.py", "source_location": "L280", "weight": 1.0}, {"source": "$graphify-root$_src_explain_pipeline_validatorpipeline_score", "target": "$graphify-root$_src_explain_pipeline_to_poi_with_category", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/explain/pipeline.py", "source_location": "L314", "weight": 1.0}, {"source": "$graphify-root$_src_explain_pipeline_validatorpipeline_score", "target": "$graphify-root$_src_explain_pipeline_scorebundle", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/explain/pipeline.py", "source_location": "L333", "weight": 1.0}, {"source": "$graphify-root$_src_explain_pipeline_validatorpipeline_estimate_repair_gains", "target": "$graphify-root$_src_explain_pipeline_validatorpipeline_score", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/explain/pipeline.py", "source_location": "L365", "weight": 1.0}, {"source": "$graphify-root$_src_explain_pipeline_validatorpipeline_estimate_repair_gains", "target": "repairresult", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/explain/pipeline.py", "source_location": "L411", "weight": 1.0}, {"source": "$graphify-root$_src_explain_pipeline_rationale_1", "target": "$graphify-root$_src_explain_pipeline_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/explain/pipeline.py", "source_location": "L1", "weight": 1.0}, {"source": "$graphify-root$_src_explain_pipeline_rationale_54", "target": "$graphify-root$_src_explain_pipeline_to_vrptw_day", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/explain/pipeline.py", "source_location": "L54", "weight": 1.0}, {"source": "$graphify-root$_src_explain_pipeline_rationale_84", "target": "$graphify-root$_src_explain_pipeline_scorebundle", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/explain/pipeline.py", "source_location": "L84", "weight": 1.0}, {"source": "$graphify-root$_src_explain_pipeline_rationale_101", "target": "$graphify-root$_src_explain_pipeline_validatorpipeline", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/explain/pipeline.py", "source_location": "L101", "weight": 1.0}, {"source": "$graphify-root$_src_explain_pipeline_rationale_128", "target": "$graphify-root$_src_explain_pipeline_validatorpipeline_run", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/explain/pipeline.py", "source_location": "L128", "weight": 1.0}, {"source": "$graphify-root$_src_explain_pipeline_rationale_244", "target": "$graphify-root$_src_explain_pipeline_validatorpipeline_score", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/explain/pipeline.py", "source_location": "L244", "weight": 1.0}, {"source": "$graphify-root$_src_explain_pipeline_rationale_357", "target": "$graphify-root$_src_explain_pipeline_validatorpipeline_estimate_repair_gains", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/explain/pipeline.py", "source_location": "L357", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_src_explain_pipeline_to_vrptw_day", "callee": "VRPTWPlace", "is_member_call": false, "source_file": "src/explain/pipeline.py", "source_location": "L56", "receiver": null}, {"caller_nid": "$graphify-root$_src_explain_pipeline_validatorpipeline_init", "callee": "HardFailDetector", "is_member_call": false, "source_file": "src/explain/pipeline.py", "source_location": "L109", "receiver": null}, {"caller_nid": "$graphify-root$_src_explain_pipeline_validatorpipeline_init", "callee": "WarningDetector", "is_member_call": false, "source_file": "src/explain/pipeline.py", "source_location": "L110", "receiver": null}, {"caller_nid": "$graphify-root$_src_explain_pipeline_validatorpipeline_init", "callee": "ScoreCalculator", "is_member_call": false, "source_file": "src/explain/pipeline.py", "source_location": "L111", "receiver": null}, {"caller_nid": "$graphify-root$_src_explain_pipeline_validatorpipeline_init", "callee": "RepairEngine", "is_member_call": false, "source_file": "src/explain/pipeline.py", "source_location": "L112", "receiver": null}, {"caller_nid": "$graphify-root$_src_explain_pipeline_validatorpipeline_init", "callee": "from_dataset", "is_member_call": true, "source_file": "src/explain/pipeline.py", "source_location": "L113", "receiver": "BonusEngine"}, {"caller_nid": "$graphify-root$_src_explain_pipeline_validatorpipeline_init", "callee": "_DEFAULT_WELLNESS_PATH", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "src/explain/pipeline.py", "source_location": "L114"}, {"caller_nid": "$graphify-root$_src_explain_pipeline_validatorpipeline_init", "callee": "_DEFAULT_BARRIER_FREE_PATH", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "src/explain/pipeline.py", "source_location": "L114"}, {"caller_nid": "$graphify-root$_src_explain_pipeline_validatorpipeline_run", "callee": "detect", "is_member_call": true, "source_file": "src/explain/pipeline.py", "source_location": "L152", "receiver": null}, {"caller_nid": "$graphify-root$_src_explain_pipeline_validatorpipeline_run", "callee": "extend", "is_member_call": true, "source_file": "src/explain/pipeline.py", "source_location": "L153", "receiver": "warnings"}, {"caller_nid": "$graphify-root$_src_explain_pipeline_validatorpipeline_run", "callee": "extend", "is_member_call": true, "source_file": "src/explain/pipeline.py", "source_location": "L155", "receiver": "warnings"}, {"caller_nid": "$graphify-root$_src_explain_pipeline_validatorpipeline_run", "callee": "_check_purpose_mismatch", "is_member_call": true, "source_file": "src/explain/pipeline.py", "source_location": "L155", "receiver": null}, {"caller_nid": "$graphify-root$_src_explain_pipeline_validatorpipeline_run", "callee": "extend", "is_member_call": true, "source_file": "src/explain/pipeline.py", "source_location": "L158", "receiver": "warnings"}, {"caller_nid": "$graphify-root$_src_explain_pipeline_validatorpipeline_run", "callee": "check_cumulative_fatigue", "is_member_call": true, "source_file": "src/explain/pipeline.py", "source_location": "L159", "receiver": null}, {"caller_nid": "$graphify-root$_src_explain_pipeline_validatorpipeline_run", "callee": "generate_rewards", "is_member_call": false, "source_file": "src/explain/pipeline.py", "source_location": "L162", "receiver": null}, {"caller_nid": "$graphify-root$_src_explain_pipeline_validatorpipeline_run", "callee": "repair", "is_member_call": true, "source_file": "src/explain/pipeline.py", "source_location": "L191", "receiver": null}, {"caller_nid": "$graphify-root$_src_explain_pipeline_validatorpipeline_run", "callee": "to_dict", "is_member_call": true, "source_file": "src/explain/pipeline.py", "source_location": "L201", "receiver": "repair_result"}, {"caller_nid": "$graphify-root$_src_explain_pipeline_validatorpipeline_run", "callee": "generate", "is_member_call": true, "source_file": "src/explain/pipeline.py", "source_location": "L204", "receiver": null}, {"caller_nid": "$graphify-root$_src_explain_pipeline_validatorpipeline_run", "callee": "build_alternatives", "is_member_call": true, "source_file": "src/explain/pipeline.py", "source_location": "L215", "receiver": null}, {"caller_nid": "$graphify-root$_src_explain_pipeline_validatorpipeline_score", "callee": "detect", "is_member_call": true, "source_file": "src/explain/pipeline.py", "source_location": "L256", "receiver": null}, {"caller_nid": "$graphify-root$_src_explain_pipeline_validatorpipeline_score", "callee": "extend", "is_member_call": true, "source_file": "src/explain/pipeline.py", "source_location": "L263", "receiver": "hard_fails"}, {"caller_nid": "$graphify-root$_src_explain_pipeline_validatorpipeline_score", "callee": "compute", "is_member_call": true, "source_file": "src/explain/pipeline.py", "source_location": "L269", "receiver": null}, {"caller_nid": "$graphify-root$_src_explain_pipeline_validatorpipeline_score", "callee": "Scores", "is_member_call": false, "source_file": "src/explain/pipeline.py", "source_location": "L273", "receiver": null}, {"caller_nid": "$graphify-root$_src_explain_pipeline_validatorpipeline_score", "callee": "validate", "is_member_call": true, "source_file": "src/explain/pipeline.py", "source_location": "L286", "receiver": null}, {"caller_nid": "$graphify-root$_src_explain_pipeline_validatorpipeline_score", "callee": "VRPTWEngine", "is_member_call": false, "source_file": "src/explain/pipeline.py", "source_location": "L286", "receiver": null}, {"caller_nid": "$graphify-root$_src_explain_pipeline_validatorpipeline_score", "callee": "VRPTWRequest", "is_member_call": false, "source_file": "src/explain/pipeline.py", "source_location": "L286", "receiver": null}, {"caller_nid": "$graphify-root$_src_explain_pipeline_validatorpipeline_score", "callee": "evaluate_cluster_dispersion", "is_member_call": false, "source_file": "src/explain/pipeline.py", "source_location": "L300", "receiver": null}, {"caller_nid": "$graphify-root$_src_explain_pipeline_validatorpipeline_score", "callee": "evaluate_travel_ratio", "is_member_call": false, "source_file": "src/explain/pipeline.py", "source_location": "L307", "receiver": null}, {"caller_nid": "$graphify-root$_src_explain_pipeline_validatorpipeline_score", "callee": "is_available", "is_member_call": true, "source_file": "src/explain/pipeline.py", "source_location": "L313", "receiver": null}, {"caller_nid": "$graphify-root$_src_explain_pipeline_validatorpipeline_score", "callee": "evaluate", "is_member_call": true, "source_file": "src/explain/pipeline.py", "source_location": "L315", "receiver": null}, {"caller_nid": "$graphify-root$_src_explain_pipeline_validatorpipeline_score", "callee": "compute", "is_member_call": true, "source_file": "src/explain/pipeline.py", "source_location": "L319", "receiver": null}, {"caller_nid": "$graphify-root$_src_explain_pipeline_validatorpipeline_score", "callee": "estimated", "is_member_call": false, "indirect": true, "context": "getattr", "source_file": "src/explain/pipeline.py", "source_location": "L329"}, {"caller_nid": "$graphify-root$_src_explain_pipeline_validatorpipeline_estimate_repair_gains", "callee": "simulate", "is_member_call": false, "source_file": "src/explain/pipeline.py", "source_location": "L386", "receiver": null}, {"caller_nid": "$graphify-root$_src_explain_pipeline_validatorpipeline_estimate_repair_gains", "callee": "append", "is_member_call": true, "source_file": "src/explain/pipeline.py", "source_location": "L387", "receiver": "reorders"}, {"caller_nid": "$graphify-root$_src_explain_pipeline_validatorpipeline_estimate_repair_gains", "callee": "replace", "is_member_call": true, "source_file": "src/explain/pipeline.py", "source_location": "L387", "receiver": "dataclasses"}, {"caller_nid": "$graphify-root$_src_explain_pipeline_validatorpipeline_estimate_repair_gains", "callee": "model_copy", "is_member_call": true, "source_file": "src/explain/pipeline.py", "source_location": "L394", "receiver": "p"}, {"caller_nid": "$graphify-root$_src_explain_pipeline_validatorpipeline_estimate_repair_gains", "callee": "simulate", "is_member_call": false, "source_file": "src/explain/pipeline.py", "source_location": "L398", "receiver": null}, {"caller_nid": "$graphify-root$_src_explain_pipeline_validatorpipeline_estimate_repair_gains", "callee": "append", "is_member_call": true, "source_file": "src/explain/pipeline.py", "source_location": "L399", "receiver": "time_tunes"}, {"caller_nid": "$graphify-root$_src_explain_pipeline_validatorpipeline_estimate_repair_gains", "callee": "replace", "is_member_call": true, "source_file": "src/explain/pipeline.py", "source_location": "L399", "receiver": "dataclasses"}, {"caller_nid": "$graphify-root$_src_explain_pipeline_validatorpipeline_estimate_repair_gains", "callee": "simulate", "is_member_call": false, "source_file": "src/explain/pipeline.py", "source_location": "L406", "receiver": null}, {"caller_nid": "$graphify-root$_src_explain_pipeline_validatorpipeline_estimate_repair_gains", "callee": "append", "is_member_call": true, "source_file": "src/explain/pipeline.py", "source_location": "L407", "receiver": "deletions"}, {"caller_nid": "$graphify-root$_src_explain_pipeline_validatorpipeline_estimate_repair_gains", "callee": "replace", "is_member_call": true, "source_file": "src/explain/pipeline.py", "source_location": "L407", "receiver": "dataclasses"}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.31/f58d648f7d654e139b8981865f151ded76f0abe21e2d09b1dec2eb3f39771dc7.json b/graphify-out/cache/ast/v0.9.31/f58d648f7d654e139b8981865f151ded76f0abe21e2d09b1dec2eb3f39771dc7.json new file mode 100644 index 0000000..76150b5 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.31/f58d648f7d654e139b8981865f151ded76f0abe21e2d09b1dec2eb3f39771dc7.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_src_data_models_py", "label": "models.py", "file_type": "code", "source_file": "src/data/models.py", "source_location": "L1"}, {"id": "$graphify-root$_src_data_models_kakaoplace", "label": "KakaoPlace", "file_type": "code", "source_file": "src/data/models.py", "source_location": "L22", "_callable": true, "_callable_class": true}, {"id": "basemodel", "label": "BaseModel", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/src/data/models.py"}, {"id": "$graphify-root$_src_data_models_placeevidence", "label": "PlaceEvidence", "file_type": "code", "source_file": "src/data/models.py", "source_location": "L34", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_src_data_models_hardfail", "label": "HardFail", "file_type": "code", "source_file": "src/data/models.py", "source_location": "L47", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_src_data_models_warning", "label": "Warning", "file_type": "code", "source_file": "src/data/models.py", "source_location": "L64", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_src_data_models_scores", "label": "Scores", "file_type": "code", "source_file": "src/data/models.py", "source_location": "L81", "_callable": true, "_callable_class": true}, {"id": "model_validator", "label": "model_validator", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/src/data/models.py"}, {"id": "$graphify-root$_src_data_models_scores_validate_ranges", "label": ".validate_ranges()", "file_type": "code", "source_file": "src/data/models.py", "source_location": "L89", "_callable": true}, {"id": "$graphify-root$_src_data_models_alternativepoi", "label": "AlternativePOI", "file_type": "code", "source_file": "src/data/models.py", "source_location": "L97", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_src_data_models_poi", "label": "POI", "file_type": "code", "source_file": "src/data/models.py", "source_location": "L105", "_callable": true, "_callable_class": true}, {"id": "field_validator", "label": "field_validator", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/src/data/models.py"}, {"id": "$graphify-root$_src_data_models_poi_poi_id_not_empty", "label": ".poi_id_not_empty()", "file_type": "code", "source_file": "src/data/models.py", "source_location": "L121", "_callable": true}, {"id": "$graphify-root$_src_data_models_poi_validate_lat", "label": ".validate_lat()", "file_type": "code", "source_file": "src/data/models.py", "source_location": "L128", "_callable": true}, {"id": "$graphify-root$_src_data_models_poi_validate_lng", "label": ".validate_lng()", "file_type": "code", "source_file": "src/data/models.py", "source_location": "L135", "_callable": true}, {"id": "$graphify-root$_src_data_models_poi_validate_hhmm", "label": ".validate_hhmm()", "file_type": "code", "source_file": "src/data/models.py", "source_location": "L142", "_callable": true}, {"id": "$graphify-root$_src_data_models_poi_validate_duration", "label": ".validate_duration()", "file_type": "code", "source_file": "src/data/models.py", "source_location": "L152", "_callable": true}, {"id": "$graphify-root$_src_data_models_placeinput", "label": "PlaceInput", "file_type": "code", "source_file": "src/data/models.py", "source_location": "L158", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_src_data_models_placeinput_validate_order", "label": ".validate_order()", "file_type": "code", "source_file": "src/data/models.py", "source_location": "L165", "_callable": true}, {"id": "$graphify-root$_src_data_models_dayplan", "label": "DayPlan", "file_type": "code", "source_file": "src/data/models.py", "source_location": "L173", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_src_data_models_dayplan_validate_place_count", "label": ".validate_place_count()", "file_type": "code", "source_file": "src/data/models.py", "source_location": "L179", "_callable": true}, {"id": "$graphify-root$_src_data_models_dayplan_auto_fill_visit_order", "label": ".auto_fill_visit_order()", "file_type": "code", "source_file": "src/data/models.py", "source_location": "L187", "_callable": true}, {"id": "$graphify-root$_src_data_models_itineraryplan", "label": "ItineraryPlan", "file_type": "code", "source_file": "src/data/models.py", "source_location": "L195", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_src_data_models_itineraryplan_validate_days", "label": ".validate_days()", "file_type": "code", "source_file": "src/data/models.py", "source_location": "L204", "_callable": true}, {"id": "computed_field", "label": "computed_field", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/src/data/models.py"}, {"id": "$graphify-root$_src_data_models_itineraryplan_travel_days", "label": ".travel_days()", "file_type": "code", "source_file": "src/data/models.py", "source_location": "L212", "_callable": true}, {"id": "$graphify-root$_src_data_models_itineraryplan_plan_id", "label": ".plan_id()", "file_type": "code", "source_file": "src/data/models.py", "source_location": "L216", "_callable": true}, {"id": "$graphify-root$_src_data_models_validationresult", "label": "ValidationResult", "file_type": "code", "source_file": "src/data/models.py", "source_location": "L225", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_src_data_models_validationresult_validate_score_range", "label": ".validate_score_range()", "file_type": "code", "source_file": "src/data/models.py", "source_location": "L244", "_callable": true}, {"id": "$graphify-root$_src_data_models_validationresult_hard_fail_score_cap", "label": ".hard_fail_score_cap()", "file_type": "code", "source_file": "src/data/models.py", "source_location": "L250", "_callable": true}, {"id": "$graphify-root$_src_data_models_settings", "label": "Settings", "file_type": "code", "source_file": "src/data/models.py", "source_location": "L256", "_callable": true, "_callable_class": true}, {"id": "basesettings", "label": "BaseSettings", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/src/data/models.py"}, {"id": "$graphify-root$_src_data_models_settings_fill_gov_api_keys", "label": ".fill_gov_api_keys()", "file_type": "code", "source_file": "src/data/models.py", "source_location": "L269", "_callable": true}, {"id": "$graphify-root$_src_data_models_vrptwplace", "label": "VRPTWPlace", "file_type": "code", "source_file": "src/data/models.py", "source_location": "L283", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_src_data_models_vrptwplace_validate_hhmm", "label": ".validate_hhmm()", "file_type": "code", "source_file": "src/data/models.py", "source_location": "L294", "_callable": true}, {"id": "$graphify-root$_src_data_models_vrptwplace_validate_lat", "label": ".validate_lat()", "file_type": "code", "source_file": "src/data/models.py", "source_location": "L304", "_callable": true}, {"id": "$graphify-root$_src_data_models_vrptwplace_validate_lng", "label": ".validate_lng()", "file_type": "code", "source_file": "src/data/models.py", "source_location": "L311", "_callable": true}, {"id": "$graphify-root$_src_data_models_vrptwplace_validate_stay", "label": ".validate_stay()", "file_type": "code", "source_file": "src/data/models.py", "source_location": "L318", "_callable": true}, {"id": "$graphify-root$_src_data_models_vrptwplace_open_minutes", "label": ".open_minutes()", "file_type": "code", "source_file": "src/data/models.py", "source_location": "L324", "_callable": true}, {"id": "$graphify-root$_src_data_models_vrptwplace_close_minutes", "label": ".close_minutes()", "file_type": "code", "source_file": "src/data/models.py", "source_location": "L329", "_callable": true}, {"id": "$graphify-root$_src_data_models_vrptwday", "label": "VRPTWDay", "file_type": "code", "source_file": "src/data/models.py", "source_location": "L334", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_src_data_models_vrptwday_at_least_one", "label": ".at_least_one()", "file_type": "code", "source_file": "src/data/models.py", "source_location": "L339", "_callable": true}, {"id": "$graphify-root$_src_data_models_vrptwrequest", "label": "VRPTWRequest", "file_type": "code", "source_file": "src/data/models.py", "source_location": "L345", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_src_data_models_vrptwrequest_at_least_one_day", "label": ".at_least_one_day()", "file_type": "code", "source_file": "src/data/models.py", "source_location": "L350", "_callable": true}, {"id": "$graphify-root$_src_data_models_deepdiveitem", "label": "DeepDiveItem", "file_type": "code", "source_file": "src/data/models.py", "source_location": "L356", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_src_data_models_explanationitem", "label": "ExplanationItem", "file_type": "code", "source_file": "src/data/models.py", "source_location": "L363", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_src_data_models_dayroutecomparison", "label": "DayRouteComparison", "file_type": "code", "source_file": "src/data/models.py", "source_location": "L374", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_src_data_models_vrptwresult", "label": "VRPTWResult", "file_type": "code", "source_file": "src/data/models.py", "source_location": "L382", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_src_data_models_rationale_1", "label": "Pydantic models for travel plan validator (main app + VRPTW engine). NOTE: from\u2026", "file_type": "rationale", "source_file": "src/data/models.py", "source_location": "L1"}, {"id": "$graphify-root$_src_data_models_rationale_23", "label": "\uce74\uce74\uc624 \ub85c\uceec \ud0a4\uc6cc\ub4dc \uac80\uc0c9 \uacb0\uacfc 1\uac74 (\uc88c\ud45c\u00b7\uce74\ud14c\uace0\ub9ac\u00b7\uc8fc\uc18c).", "file_type": "rationale", "source_file": "src/data/models.py", "source_location": "L23"}, {"id": "$graphify-root$_src_data_models_rationale_35", "label": "\uc9c0\uc2dd\uadf8\ub798\ud504(Neo4j)\uc5d0\uc11c \uac80\uc0c9\ub41c \uc7a5\uc18c \uadfc\uac70 1\uac74 (Region \ucee8\ud14d\uc2a4\ud2b8 \ud3ec\ud568).", "file_type": "rationale", "source_file": "src/data/models.py", "source_location": "L35"}, {"id": "$graphify-root$_src_data_models_rationale_174", "label": "\ud558\ub8e8 \uc77c\uc815 \u2014 \uc7a5\uc18c \uc774\ub984\uacfc \ubc29\ubb38 \uc21c\uc11c \uc785\ub825.", "file_type": "rationale", "source_file": "src/data/models.py", "source_location": "L174"}, {"id": "$graphify-root$_src_data_models_rationale_188", "label": "visit_order \ubbf8\uc785\ub825 \uc2dc \ud574\ub2f9 \uc77c\uc790 \ub0b4 \ub9ac\uc2a4\ud2b8 \uc704\uce58(1-based)\ub85c \uc790\ub3d9 \ud560\ub2f9.", "file_type": "rationale", "source_file": "src/data/models.py", "source_location": "L188"}, {"id": "$graphify-root$_src_data_models_rationale_270", "label": "wellness_api_key / barrier_free_api_key \ubbf8\uc124\uc815 \uc2dc tour_api_key\ub85c \ub300\uccb4.", "file_type": "rationale", "source_file": "src/data/models.py", "source_location": "L270"}, {"id": "$graphify-root$_src_data_models_rationale_364", "label": "ExplainEngine\uc774 \uc0dd\uc131\ud558\ub294 4\ub2e8\uacc4 \uc124\uba85 \ud56d\ubaa9.", "file_type": "rationale", "source_file": "src/data/models.py", "source_location": "L364"}], "edges": [{"source": "$graphify-root$_src_data_models_py", "target": "hashlib", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "src/data/models.py", "source_location": "L9", "weight": 1.0}, {"source": "$graphify-root$_src_data_models_py", "target": "re", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "src/data/models.py", "source_location": "L10", "weight": 1.0}, {"source": "$graphify-root$_src_data_models_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "src/data/models.py", "source_location": "L11", "weight": 1.0}, {"source": "$graphify-root$_src_data_models_py", "target": "pydantic", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "src/data/models.py", "source_location": "L13", "weight": 1.0}, {"source": "$graphify-root$_src_data_models_py", "target": "pydantic_settings", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "src/data/models.py", "source_location": "L14", "weight": 1.0}, {"source": "$graphify-root$_src_data_models_py", "target": "$graphify-root$_src_data_models_kakaoplace", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/data/models.py", "source_location": "L22", "weight": 1.0}, {"source": "$graphify-root$_src_data_models_kakaoplace", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "src/data/models.py", "source_location": "L22", "weight": 1.0}, {"source": "$graphify-root$_src_data_models_py", "target": "$graphify-root$_src_data_models_placeevidence", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/data/models.py", "source_location": "L34", "weight": 1.0}, {"source": "$graphify-root$_src_data_models_placeevidence", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "src/data/models.py", "source_location": "L34", "weight": 1.0}, {"source": "$graphify-root$_src_data_models_py", "target": "$graphify-root$_src_data_models_hardfail", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/data/models.py", "source_location": "L47", "weight": 1.0}, {"source": "$graphify-root$_src_data_models_hardfail", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "src/data/models.py", "source_location": "L47", "weight": 1.0}, {"source": "$graphify-root$_src_data_models_py", "target": "$graphify-root$_src_data_models_warning", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/data/models.py", "source_location": "L64", "weight": 1.0}, {"source": "$graphify-root$_src_data_models_warning", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "src/data/models.py", "source_location": "L64", "weight": 1.0}, {"source": "$graphify-root$_src_data_models_py", "target": "$graphify-root$_src_data_models_scores", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/data/models.py", "source_location": "L81", "weight": 1.0}, {"source": "$graphify-root$_src_data_models_scores", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "src/data/models.py", "source_location": "L81", "weight": 1.0}, {"source": "$graphify-root$_src_data_models_scores_validate_ranges", "target": "model_validator", "relation": "references", "confidence": "EXTRACTED", "source_file": "src/data/models.py", "source_location": "L88", "weight": 1.0, "context": "decorator"}, {"source": "$graphify-root$_src_data_models_scores", "target": "$graphify-root$_src_data_models_scores_validate_ranges", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/data/models.py", "source_location": "L89", "weight": 1.0}, {"source": "$graphify-root$_src_data_models_py", "target": "$graphify-root$_src_data_models_alternativepoi", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/data/models.py", "source_location": "L97", "weight": 1.0}, {"source": "$graphify-root$_src_data_models_alternativepoi", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "src/data/models.py", "source_location": "L97", "weight": 1.0}, {"source": "$graphify-root$_src_data_models_py", "target": "$graphify-root$_src_data_models_poi", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/data/models.py", "source_location": "L105", "weight": 1.0}, {"source": "$graphify-root$_src_data_models_poi", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "src/data/models.py", "source_location": "L105", "weight": 1.0}, {"source": "$graphify-root$_src_data_models_poi_poi_id_not_empty", "target": "field_validator", "relation": "references", "confidence": "EXTRACTED", "source_file": "src/data/models.py", "source_location": "L119", "weight": 1.0, "context": "decorator"}, {"source": "$graphify-root$_src_data_models_poi", "target": "$graphify-root$_src_data_models_poi_poi_id_not_empty", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/data/models.py", "source_location": "L121", "weight": 1.0}, {"source": "$graphify-root$_src_data_models_poi_validate_lat", "target": "field_validator", "relation": "references", "confidence": "EXTRACTED", "source_file": "src/data/models.py", "source_location": "L126", "weight": 1.0, "context": "decorator"}, {"source": "$graphify-root$_src_data_models_poi", "target": "$graphify-root$_src_data_models_poi_validate_lat", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/data/models.py", "source_location": "L128", "weight": 1.0}, {"source": "$graphify-root$_src_data_models_poi_validate_lng", "target": "field_validator", "relation": "references", "confidence": "EXTRACTED", "source_file": "src/data/models.py", "source_location": "L133", "weight": 1.0, "context": "decorator"}, {"source": "$graphify-root$_src_data_models_poi", "target": "$graphify-root$_src_data_models_poi_validate_lng", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/data/models.py", "source_location": "L135", "weight": 1.0}, {"source": "$graphify-root$_src_data_models_poi_validate_hhmm", "target": "field_validator", "relation": "references", "confidence": "EXTRACTED", "source_file": "src/data/models.py", "source_location": "L140", "weight": 1.0, "context": "decorator"}, {"source": "$graphify-root$_src_data_models_poi", "target": "$graphify-root$_src_data_models_poi_validate_hhmm", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/data/models.py", "source_location": "L142", "weight": 1.0}, {"source": "$graphify-root$_src_data_models_poi_validate_duration", "target": "field_validator", "relation": "references", "confidence": "EXTRACTED", "source_file": "src/data/models.py", "source_location": "L150", "weight": 1.0, "context": "decorator"}, {"source": "$graphify-root$_src_data_models_poi", "target": "$graphify-root$_src_data_models_poi_validate_duration", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/data/models.py", "source_location": "L152", "weight": 1.0}, {"source": "$graphify-root$_src_data_models_py", "target": "$graphify-root$_src_data_models_placeinput", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/data/models.py", "source_location": "L158", "weight": 1.0}, {"source": "$graphify-root$_src_data_models_placeinput", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "src/data/models.py", "source_location": "L158", "weight": 1.0}, {"source": "$graphify-root$_src_data_models_placeinput_validate_order", "target": "field_validator", "relation": "references", "confidence": "EXTRACTED", "source_file": "src/data/models.py", "source_location": "L163", "weight": 1.0, "context": "decorator"}, {"source": "$graphify-root$_src_data_models_placeinput", "target": "$graphify-root$_src_data_models_placeinput_validate_order", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/data/models.py", "source_location": "L165", "weight": 1.0}, {"source": "$graphify-root$_src_data_models_py", "target": "$graphify-root$_src_data_models_dayplan", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/data/models.py", "source_location": "L173", "weight": 1.0}, {"source": "$graphify-root$_src_data_models_dayplan", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "src/data/models.py", "source_location": "L173", "weight": 1.0}, {"source": "$graphify-root$_src_data_models_dayplan_validate_place_count", "target": "field_validator", "relation": "references", "confidence": "EXTRACTED", "source_file": "src/data/models.py", "source_location": "L177", "weight": 1.0, "context": "decorator"}, {"source": "$graphify-root$_src_data_models_dayplan", "target": "$graphify-root$_src_data_models_dayplan_validate_place_count", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/data/models.py", "source_location": "L179", "weight": 1.0}, {"source": "$graphify-root$_src_data_models_dayplan_validate_place_count", "target": "$graphify-root$_src_data_models_placeinput", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "src/data/models.py", "source_location": "L179", "weight": 1.0}, {"source": "$graphify-root$_src_data_models_dayplan_validate_place_count", "target": "$graphify-root$_src_data_models_placeinput", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "src/data/models.py", "source_location": "L179", "weight": 1.0}, {"source": "$graphify-root$_src_data_models_dayplan_auto_fill_visit_order", "target": "model_validator", "relation": "references", "confidence": "EXTRACTED", "source_file": "src/data/models.py", "source_location": "L186", "weight": 1.0, "context": "decorator"}, {"source": "$graphify-root$_src_data_models_dayplan", "target": "$graphify-root$_src_data_models_dayplan_auto_fill_visit_order", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/data/models.py", "source_location": "L187", "weight": 1.0}, {"source": "$graphify-root$_src_data_models_py", "target": "$graphify-root$_src_data_models_itineraryplan", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/data/models.py", "source_location": "L195", "weight": 1.0}, {"source": "$graphify-root$_src_data_models_itineraryplan", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "src/data/models.py", "source_location": "L195", "weight": 1.0}, {"source": "$graphify-root$_src_data_models_itineraryplan_validate_days", "target": "field_validator", "relation": "references", "confidence": "EXTRACTED", "source_file": "src/data/models.py", "source_location": "L202", "weight": 1.0, "context": "decorator"}, {"source": "$graphify-root$_src_data_models_itineraryplan", "target": "$graphify-root$_src_data_models_itineraryplan_validate_days", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/data/models.py", "source_location": "L204", "weight": 1.0}, {"source": "$graphify-root$_src_data_models_itineraryplan_validate_days", "target": "$graphify-root$_src_data_models_dayplan", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "src/data/models.py", "source_location": "L204", "weight": 1.0}, {"source": "$graphify-root$_src_data_models_itineraryplan_validate_days", "target": "$graphify-root$_src_data_models_dayplan", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "src/data/models.py", "source_location": "L204", "weight": 1.0}, {"source": "$graphify-root$_src_data_models_itineraryplan_travel_days", "target": "computed_field", "relation": "references", "confidence": "EXTRACTED", "source_file": "src/data/models.py", "source_location": "L211", "weight": 1.0, "context": "decorator"}, {"source": "$graphify-root$_src_data_models_itineraryplan", "target": "$graphify-root$_src_data_models_itineraryplan_travel_days", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/data/models.py", "source_location": "L212", "weight": 1.0}, {"source": "$graphify-root$_src_data_models_itineraryplan_plan_id", "target": "computed_field", "relation": "references", "confidence": "EXTRACTED", "source_file": "src/data/models.py", "source_location": "L215", "weight": 1.0, "context": "decorator"}, {"source": "$graphify-root$_src_data_models_itineraryplan", "target": "$graphify-root$_src_data_models_itineraryplan_plan_id", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/data/models.py", "source_location": "L216", "weight": 1.0}, {"source": "$graphify-root$_src_data_models_py", "target": "$graphify-root$_src_data_models_validationresult", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/data/models.py", "source_location": "L225", "weight": 1.0}, {"source": "$graphify-root$_src_data_models_validationresult", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "src/data/models.py", "source_location": "L225", "weight": 1.0}, {"source": "$graphify-root$_src_data_models_validationresult_validate_score_range", "target": "field_validator", "relation": "references", "confidence": "EXTRACTED", "source_file": "src/data/models.py", "source_location": "L242", "weight": 1.0, "context": "decorator"}, {"source": "$graphify-root$_src_data_models_validationresult", "target": "$graphify-root$_src_data_models_validationresult_validate_score_range", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/data/models.py", "source_location": "L244", "weight": 1.0}, {"source": "$graphify-root$_src_data_models_validationresult_hard_fail_score_cap", "target": "model_validator", "relation": "references", "confidence": "EXTRACTED", "source_file": "src/data/models.py", "source_location": "L249", "weight": 1.0, "context": "decorator"}, {"source": "$graphify-root$_src_data_models_validationresult", "target": "$graphify-root$_src_data_models_validationresult_hard_fail_score_cap", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/data/models.py", "source_location": "L250", "weight": 1.0}, {"source": "$graphify-root$_src_data_models_py", "target": "$graphify-root$_src_data_models_settings", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/data/models.py", "source_location": "L256", "weight": 1.0}, {"source": "$graphify-root$_src_data_models_settings", "target": "basesettings", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "src/data/models.py", "source_location": "L256", "weight": 1.0}, {"source": "$graphify-root$_src_data_models_settings_fill_gov_api_keys", "target": "model_validator", "relation": "references", "confidence": "EXTRACTED", "source_file": "src/data/models.py", "source_location": "L268", "weight": 1.0, "context": "decorator"}, {"source": "$graphify-root$_src_data_models_settings", "target": "$graphify-root$_src_data_models_settings_fill_gov_api_keys", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/data/models.py", "source_location": "L269", "weight": 1.0}, {"source": "$graphify-root$_src_data_models_py", "target": "$graphify-root$_src_data_models_vrptwplace", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/data/models.py", "source_location": "L283", "weight": 1.0}, {"source": "$graphify-root$_src_data_models_vrptwplace", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "src/data/models.py", "source_location": "L283", "weight": 1.0}, {"source": "$graphify-root$_src_data_models_vrptwplace_validate_hhmm", "target": "field_validator", "relation": "references", "confidence": "EXTRACTED", "source_file": "src/data/models.py", "source_location": "L292", "weight": 1.0, "context": "decorator"}, {"source": "$graphify-root$_src_data_models_vrptwplace", "target": "$graphify-root$_src_data_models_vrptwplace_validate_hhmm", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/data/models.py", "source_location": "L294", "weight": 1.0}, {"source": "$graphify-root$_src_data_models_vrptwplace_validate_lat", "target": "field_validator", "relation": "references", "confidence": "EXTRACTED", "source_file": "src/data/models.py", "source_location": "L302", "weight": 1.0, "context": "decorator"}, {"source": "$graphify-root$_src_data_models_vrptwplace", "target": "$graphify-root$_src_data_models_vrptwplace_validate_lat", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/data/models.py", "source_location": "L304", "weight": 1.0}, {"source": "$graphify-root$_src_data_models_vrptwplace_validate_lng", "target": "field_validator", "relation": "references", "confidence": "EXTRACTED", "source_file": "src/data/models.py", "source_location": "L309", "weight": 1.0, "context": "decorator"}, {"source": "$graphify-root$_src_data_models_vrptwplace", "target": "$graphify-root$_src_data_models_vrptwplace_validate_lng", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/data/models.py", "source_location": "L311", "weight": 1.0}, {"source": "$graphify-root$_src_data_models_vrptwplace_validate_stay", "target": "field_validator", "relation": "references", "confidence": "EXTRACTED", "source_file": "src/data/models.py", "source_location": "L316", "weight": 1.0, "context": "decorator"}, {"source": "$graphify-root$_src_data_models_vrptwplace", "target": "$graphify-root$_src_data_models_vrptwplace_validate_stay", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/data/models.py", "source_location": "L318", "weight": 1.0}, {"source": "$graphify-root$_src_data_models_vrptwplace", "target": "$graphify-root$_src_data_models_vrptwplace_open_minutes", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/data/models.py", "source_location": "L324", "weight": 1.0}, {"source": "$graphify-root$_src_data_models_vrptwplace", "target": "$graphify-root$_src_data_models_vrptwplace_close_minutes", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/data/models.py", "source_location": "L329", "weight": 1.0}, {"source": "$graphify-root$_src_data_models_py", "target": "$graphify-root$_src_data_models_vrptwday", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/data/models.py", "source_location": "L334", "weight": 1.0}, {"source": "$graphify-root$_src_data_models_vrptwday", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "src/data/models.py", "source_location": "L334", "weight": 1.0}, {"source": "$graphify-root$_src_data_models_vrptwday_at_least_one", "target": "field_validator", "relation": "references", "confidence": "EXTRACTED", "source_file": "src/data/models.py", "source_location": "L337", "weight": 1.0, "context": "decorator"}, {"source": "$graphify-root$_src_data_models_vrptwday", "target": "$graphify-root$_src_data_models_vrptwday_at_least_one", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/data/models.py", "source_location": "L339", "weight": 1.0}, {"source": "$graphify-root$_src_data_models_vrptwday_at_least_one", "target": "$graphify-root$_src_data_models_vrptwplace", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "src/data/models.py", "source_location": "L339", "weight": 1.0}, {"source": "$graphify-root$_src_data_models_vrptwday_at_least_one", "target": "$graphify-root$_src_data_models_vrptwplace", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "src/data/models.py", "source_location": "L339", "weight": 1.0}, {"source": "$graphify-root$_src_data_models_py", "target": "$graphify-root$_src_data_models_vrptwrequest", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/data/models.py", "source_location": "L345", "weight": 1.0}, {"source": "$graphify-root$_src_data_models_vrptwrequest", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "src/data/models.py", "source_location": "L345", "weight": 1.0}, {"source": "$graphify-root$_src_data_models_vrptwrequest_at_least_one_day", "target": "field_validator", "relation": "references", "confidence": "EXTRACTED", "source_file": "src/data/models.py", "source_location": "L348", "weight": 1.0, "context": "decorator"}, {"source": "$graphify-root$_src_data_models_vrptwrequest", "target": "$graphify-root$_src_data_models_vrptwrequest_at_least_one_day", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/data/models.py", "source_location": "L350", "weight": 1.0}, {"source": "$graphify-root$_src_data_models_vrptwrequest_at_least_one_day", "target": "$graphify-root$_src_data_models_vrptwday", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "src/data/models.py", "source_location": "L350", "weight": 1.0}, {"source": "$graphify-root$_src_data_models_vrptwrequest_at_least_one_day", "target": "$graphify-root$_src_data_models_vrptwday", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "src/data/models.py", "source_location": "L350", "weight": 1.0}, {"source": "$graphify-root$_src_data_models_py", "target": "$graphify-root$_src_data_models_deepdiveitem", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/data/models.py", "source_location": "L356", "weight": 1.0}, {"source": "$graphify-root$_src_data_models_deepdiveitem", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "src/data/models.py", "source_location": "L356", "weight": 1.0}, {"source": "$graphify-root$_src_data_models_py", "target": "$graphify-root$_src_data_models_explanationitem", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/data/models.py", "source_location": "L363", "weight": 1.0}, {"source": "$graphify-root$_src_data_models_explanationitem", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "src/data/models.py", "source_location": "L363", "weight": 1.0}, {"source": "$graphify-root$_src_data_models_py", "target": "$graphify-root$_src_data_models_dayroutecomparison", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/data/models.py", "source_location": "L374", "weight": 1.0}, {"source": "$graphify-root$_src_data_models_dayroutecomparison", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "src/data/models.py", "source_location": "L374", "weight": 1.0}, {"source": "$graphify-root$_src_data_models_py", "target": "$graphify-root$_src_data_models_vrptwresult", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/data/models.py", "source_location": "L382", "weight": 1.0}, {"source": "$graphify-root$_src_data_models_vrptwresult", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "src/data/models.py", "source_location": "L382", "weight": 1.0}, {"source": "$graphify-root$_src_data_models_rationale_1", "target": "$graphify-root$_src_data_models_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/data/models.py", "source_location": "L1", "weight": 1.0}, {"source": "$graphify-root$_src_data_models_rationale_23", "target": "$graphify-root$_src_data_models_kakaoplace", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/data/models.py", "source_location": "L23", "weight": 1.0}, {"source": "$graphify-root$_src_data_models_rationale_35", "target": "$graphify-root$_src_data_models_placeevidence", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/data/models.py", "source_location": "L35", "weight": 1.0}, {"source": "$graphify-root$_src_data_models_rationale_174", "target": "$graphify-root$_src_data_models_dayplan", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/data/models.py", "source_location": "L174", "weight": 1.0}, {"source": "$graphify-root$_src_data_models_rationale_188", "target": "$graphify-root$_src_data_models_dayplan_auto_fill_visit_order", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/data/models.py", "source_location": "L188", "weight": 1.0}, {"source": "$graphify-root$_src_data_models_rationale_270", "target": "$graphify-root$_src_data_models_settings_fill_gov_api_keys", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/data/models.py", "source_location": "L270", "weight": 1.0}, {"source": "$graphify-root$_src_data_models_rationale_364", "target": "$graphify-root$_src_data_models_explanationitem", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/data/models.py", "source_location": "L364", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_src_data_models_scores_validate_ranges", "callee": "ValueError", "is_member_call": false, "source_file": "src/data/models.py", "source_location": "L93", "receiver": null}, {"caller_nid": "$graphify-root$_src_data_models_poi_poi_id_not_empty", "callee": "strip", "is_member_call": true, "source_file": "src/data/models.py", "source_location": "L122", "receiver": "v"}, {"caller_nid": "$graphify-root$_src_data_models_poi_poi_id_not_empty", "callee": "ValueError", "is_member_call": false, "source_file": "src/data/models.py", "source_location": "L123", "receiver": null}, {"caller_nid": "$graphify-root$_src_data_models_poi_validate_lat", "callee": "ValueError", "is_member_call": false, "source_file": "src/data/models.py", "source_location": "L130", "receiver": null}, {"caller_nid": "$graphify-root$_src_data_models_poi_validate_lng", "callee": "ValueError", "is_member_call": false, "source_file": "src/data/models.py", "source_location": "L137", "receiver": null}, {"caller_nid": "$graphify-root$_src_data_models_poi_validate_hhmm", "callee": "fullmatch", "is_member_call": true, "source_file": "src/data/models.py", "source_location": "L143", "receiver": "re"}, {"caller_nid": "$graphify-root$_src_data_models_poi_validate_hhmm", "callee": "ValueError", "is_member_call": false, "source_file": "src/data/models.py", "source_location": "L144", "receiver": null}, {"caller_nid": "$graphify-root$_src_data_models_poi_validate_hhmm", "callee": "ValueError", "is_member_call": false, "source_file": "src/data/models.py", "source_location": "L147", "receiver": null}, {"caller_nid": "$graphify-root$_src_data_models_poi_validate_duration", "callee": "ValueError", "is_member_call": false, "source_file": "src/data/models.py", "source_location": "L154", "receiver": null}, {"caller_nid": "$graphify-root$_src_data_models_placeinput_validate_order", "callee": "ValueError", "is_member_call": false, "source_file": "src/data/models.py", "source_location": "L169", "receiver": null}, {"caller_nid": "$graphify-root$_src_data_models_dayplan_validate_place_count", "callee": "ValueError", "is_member_call": false, "source_file": "src/data/models.py", "source_location": "L181", "receiver": null}, {"caller_nid": "$graphify-root$_src_data_models_dayplan_validate_place_count", "callee": "ValueError", "is_member_call": false, "source_file": "src/data/models.py", "source_location": "L183", "receiver": null}, {"caller_nid": "$graphify-root$_src_data_models_itineraryplan_validate_days", "callee": "ValueError", "is_member_call": false, "source_file": "src/data/models.py", "source_location": "L206", "receiver": null}, {"caller_nid": "$graphify-root$_src_data_models_itineraryplan_validate_days", "callee": "ValueError", "is_member_call": false, "source_file": "src/data/models.py", "source_location": "L208", "receiver": null}, {"caller_nid": "$graphify-root$_src_data_models_itineraryplan_plan_id", "callee": "append", "is_member_call": true, "source_file": "src/data/models.py", "source_location": "L220", "receiver": "parts"}, {"caller_nid": "$graphify-root$_src_data_models_itineraryplan_plan_id", "callee": "join", "is_member_call": true, "source_file": "src/data/models.py", "source_location": "L221", "receiver": null}, {"caller_nid": "$graphify-root$_src_data_models_itineraryplan_plan_id", "callee": "hexdigest", "is_member_call": true, "source_file": "src/data/models.py", "source_location": "L222", "receiver": null}, {"caller_nid": "$graphify-root$_src_data_models_itineraryplan_plan_id", "callee": "sha256", "is_member_call": true, "source_file": "src/data/models.py", "source_location": "L222", "receiver": "hashlib"}, {"caller_nid": "$graphify-root$_src_data_models_itineraryplan_plan_id", "callee": "encode", "is_member_call": true, "source_file": "src/data/models.py", "source_location": "L222", "receiver": "key"}, {"caller_nid": "$graphify-root$_src_data_models_validationresult_validate_score_range", "callee": "ValueError", "is_member_call": false, "source_file": "src/data/models.py", "source_location": "L246", "receiver": null}, {"caller_nid": "$graphify-root$_src_data_models_validationresult_hard_fail_score_cap", "callee": "ValueError", "is_member_call": false, "source_file": "src/data/models.py", "source_location": "L252", "receiver": null}, {"caller_nid": "$graphify-root$_src_data_models_vrptwplace_validate_hhmm", "callee": "fullmatch", "is_member_call": true, "source_file": "src/data/models.py", "source_location": "L295", "receiver": "re"}, {"caller_nid": "$graphify-root$_src_data_models_vrptwplace_validate_hhmm", "callee": "ValueError", "is_member_call": false, "source_file": "src/data/models.py", "source_location": "L296", "receiver": null}, {"caller_nid": "$graphify-root$_src_data_models_vrptwplace_validate_hhmm", "callee": "ValueError", "is_member_call": false, "source_file": "src/data/models.py", "source_location": "L299", "receiver": null}, {"caller_nid": "$graphify-root$_src_data_models_vrptwplace_validate_lat", "callee": "ValueError", "is_member_call": false, "source_file": "src/data/models.py", "source_location": "L306", "receiver": null}, {"caller_nid": "$graphify-root$_src_data_models_vrptwplace_validate_lng", "callee": "ValueError", "is_member_call": false, "source_file": "src/data/models.py", "source_location": "L313", "receiver": null}, {"caller_nid": "$graphify-root$_src_data_models_vrptwplace_validate_stay", "callee": "ValueError", "is_member_call": false, "source_file": "src/data/models.py", "source_location": "L320", "receiver": null}, {"caller_nid": "$graphify-root$_src_data_models_vrptwday_at_least_one", "callee": "ValueError", "is_member_call": false, "source_file": "src/data/models.py", "source_location": "L341", "receiver": null}, {"caller_nid": "$graphify-root$_src_data_models_vrptwrequest_at_least_one_day", "callee": "ValueError", "is_member_call": false, "source_file": "src/data/models.py", "source_location": "L352", "receiver": null}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.31/f59929f833fa418dc77a5b258351d6a6aba4284b524f8f0df7d9ffbac0b70c6c.json b/graphify-out/cache/ast/v0.9.31/f59929f833fa418dc77a5b258351d6a6aba4284b524f8f0df7d9ffbac0b70c6c.json new file mode 100644 index 0000000..219cf4b --- /dev/null +++ b/graphify-out/cache/ast/v0.9.31/f59929f833fa418dc77a5b258351d6a6aba4284b524f8f0df7d9ffbac0b70c6c.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_scripts_execute_py", "label": "execute.py", "file_type": "code", "source_file": "scripts/execute.py", "source_location": "L1"}, {"id": "$graphify-root$_scripts_execute_progress_indicator", "label": "progress_indicator()", "file_type": "code", "source_file": "scripts/execute.py", "source_location": "L26", "_callable": true}, {"id": "$graphify-root$_scripts_execute_stepexecutor", "label": "StepExecutor", "file_type": "code", "source_file": "scripts/execute.py", "source_location": "L53", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_scripts_execute_stepexecutor_init", "label": ".__init__()", "file_type": "code", "source_file": "scripts/execute.py", "source_location": "L61", "_callable": true}, {"id": "$graphify-root$_scripts_execute_stepexecutor_run", "label": ".run()", "file_type": "code", "source_file": "scripts/execute.py", "source_location": "L83", "_callable": true}, {"id": "$graphify-root$_scripts_execute_stepexecutor_stamp", "label": "._stamp()", "file_type": "code", "source_file": "scripts/execute.py", "source_location": "L94", "_callable": true}, {"id": "$graphify-root$_scripts_execute_stepexecutor_read_json", "label": "._read_json()", "file_type": "code", "source_file": "scripts/execute.py", "source_location": "L100", "_callable": true}, {"id": "path", "label": "Path", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/scripts/execute.py"}, {"id": "$graphify-root$_scripts_execute_stepexecutor_write_json", "label": "._write_json()", "file_type": "code", "source_file": "scripts/execute.py", "source_location": "L104", "_callable": true}, {"id": "$graphify-root$_scripts_execute_stepexecutor_run_git", "label": "._run_git()", "file_type": "code", "source_file": "scripts/execute.py", "source_location": "L109", "_callable": true}, {"id": "completedprocess", "label": "CompletedProcess", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/scripts/execute.py"}, {"id": "$graphify-root$_scripts_execute_stepexecutor_checkout_branch", "label": "._checkout_branch()", "file_type": "code", "source_file": "scripts/execute.py", "source_location": "L113", "_callable": true}, {"id": "$graphify-root$_scripts_execute_stepexecutor_commit_step", "label": "._commit_step()", "file_type": "code", "source_file": "scripts/execute.py", "source_location": "L136", "_callable": true}, {"id": "$graphify-root$_scripts_execute_stepexecutor_update_top_index", "label": "._update_top_index()", "file_type": "code", "source_file": "scripts/execute.py", "source_location": "L161", "_callable": true}, {"id": "$graphify-root$_scripts_execute_stepexecutor_load_guardrails", "label": "._load_guardrails()", "file_type": "code", "source_file": "scripts/execute.py", "source_location": "L177", "_callable": true}, {"id": "$graphify-root$_scripts_execute_stepexecutor_build_step_context", "label": "._build_step_context()", "file_type": "code", "source_file": "scripts/execute.py", "source_location": "L189", "_callable": true}, {"id": "$graphify-root$_scripts_execute_stepexecutor_build_preamble", "label": "._build_preamble()", "file_type": "code", "source_file": "scripts/execute.py", "source_location": "L199", "_callable": true}, {"id": "$graphify-root$_scripts_execute_stepexecutor_invoke_claude", "label": "._invoke_claude()", "file_type": "code", "source_file": "scripts/execute.py", "source_location": "L229", "_callable": true}, {"id": "$graphify-root$_scripts_execute_stepexecutor_print_header", "label": "._print_header()", "file_type": "code", "source_file": "scripts/execute.py", "source_location": "L261", "_callable": true}, {"id": "$graphify-root$_scripts_execute_stepexecutor_check_blockers", "label": "._check_blockers()", "file_type": "code", "source_file": "scripts/execute.py", "source_location": "L269", "_callable": true}, {"id": "$graphify-root$_scripts_execute_stepexecutor_ensure_created_at", "label": "._ensure_created_at()", "file_type": "code", "source_file": "scripts/execute.py", "source_location": "L285", "_callable": true}, {"id": "$graphify-root$_scripts_execute_stepexecutor_execute_single_step", "label": "._execute_single_step()", "file_type": "code", "source_file": "scripts/execute.py", "source_location": "L293", "_callable": true}, {"id": "$graphify-root$_scripts_execute_stepexecutor_execute_all_steps", "label": "._execute_all_steps()", "file_type": "code", "source_file": "scripts/execute.py", "source_location": "L364", "_callable": true}, {"id": "$graphify-root$_scripts_execute_stepexecutor_finalize", "label": "._finalize()", "file_type": "code", "source_file": "scripts/execute.py", "source_location": "L381", "_callable": true}, {"id": "$graphify-root$_scripts_execute_main", "label": "main()", "file_type": "code", "source_file": "scripts/execute.py", "source_location": "L407", "_callable": true}, {"id": "$graphify-root$_scripts_execute_rationale_27", "label": "\ud130\ubbf8\ub110 \uc9c4\ud589 \ud45c\uc2dc\uae30. with \ubb38\uc73c\ub85c \uc0ac\uc6a9\ud558\uba70 .elapsed \ub85c \uacbd\uacfc \uc2dc\uac04\uc744 \uc77d\ub294\ub2e4.", "file_type": "rationale", "source_file": "scripts/execute.py", "source_location": "L27"}, {"id": "$graphify-root$_scripts_execute_rationale_54", "label": "Phase \ub514\ub809\ud1a0\ub9ac \uc548\uc758 step\ub4e4\uc744 \uc21c\ucc28 \uc2e4\ud589\ud558\ub294 \ud558\ub124\uc2a4.", "file_type": "rationale", "source_file": "scripts/execute.py", "source_location": "L54"}, {"id": "$graphify-root$_scripts_execute_rationale_294", "label": "\ub2e8\uc77c step \uc2e4\ud589 (\uc7ac\uc2dc\ub3c4 \ud3ec\ud568). \uc644\ub8cc\ub418\uba74 True, \uc2e4\ud328/\ucc28\ub2e8\uc774\uba74 False.", "file_type": "rationale", "source_file": "scripts/execute.py", "source_location": "L294"}], "edges": [{"source": "$graphify-root$_scripts_execute_py", "target": "argparse", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/execute.py", "source_location": "L9", "weight": 1.0}, {"source": "$graphify-root$_scripts_execute_py", "target": "contextlib", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/execute.py", "source_location": "L10", "weight": 1.0}, {"source": "$graphify-root$_scripts_execute_py", "target": "json", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/execute.py", "source_location": "L11", "weight": 1.0}, {"source": "$graphify-root$_scripts_execute_py", "target": "os", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/execute.py", "source_location": "L12", "weight": 1.0}, {"source": "$graphify-root$_scripts_execute_py", "target": "subprocess", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/execute.py", "source_location": "L13", "weight": 1.0}, {"source": "$graphify-root$_scripts_execute_py", "target": "sys", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/execute.py", "source_location": "L14", "weight": 1.0}, {"source": "$graphify-root$_scripts_execute_py", "target": "threading", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/execute.py", "source_location": "L15", "weight": 1.0}, {"source": "$graphify-root$_scripts_execute_py", "target": "time", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/execute.py", "source_location": "L16", "weight": 1.0}, {"source": "$graphify-root$_scripts_execute_py", "target": "types", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/execute.py", "source_location": "L17", "weight": 1.0}, {"source": "$graphify-root$_scripts_execute_py", "target": "datetime", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/execute.py", "source_location": "L18", "weight": 1.0}, {"source": "$graphify-root$_scripts_execute_py", "target": "pathlib", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/execute.py", "source_location": "L19", "weight": 1.0}, {"source": "$graphify-root$_scripts_execute_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/execute.py", "source_location": "L20", "weight": 1.0}, {"source": "$graphify-root$_scripts_execute_py", "target": "$graphify-root$_scripts_execute_progress_indicator", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/execute.py", "source_location": "L26", "weight": 1.0}, {"source": "$graphify-root$_scripts_execute_py", "target": "$graphify-root$_scripts_execute_stepexecutor", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/execute.py", "source_location": "L53", "weight": 1.0}, {"source": "$graphify-root$_scripts_execute_stepexecutor", "target": "$graphify-root$_scripts_execute_stepexecutor_init", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/execute.py", "source_location": "L61", "weight": 1.0}, {"source": "$graphify-root$_scripts_execute_stepexecutor", "target": "$graphify-root$_scripts_execute_stepexecutor_run", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/execute.py", "source_location": "L83", "weight": 1.0}, {"source": "$graphify-root$_scripts_execute_stepexecutor", "target": "$graphify-root$_scripts_execute_stepexecutor_stamp", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/execute.py", "source_location": "L94", "weight": 1.0}, {"source": "$graphify-root$_scripts_execute_stepexecutor", "target": "$graphify-root$_scripts_execute_stepexecutor_read_json", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/execute.py", "source_location": "L100", "weight": 1.0}, {"source": "$graphify-root$_scripts_execute_stepexecutor_read_json", "target": "path", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "scripts/execute.py", "source_location": "L100", "weight": 1.0}, {"source": "$graphify-root$_scripts_execute_stepexecutor", "target": "$graphify-root$_scripts_execute_stepexecutor_write_json", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/execute.py", "source_location": "L104", "weight": 1.0}, {"source": "$graphify-root$_scripts_execute_stepexecutor_write_json", "target": "path", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "scripts/execute.py", "source_location": "L104", "weight": 1.0}, {"source": "$graphify-root$_scripts_execute_stepexecutor", "target": "$graphify-root$_scripts_execute_stepexecutor_run_git", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/execute.py", "source_location": "L109", "weight": 1.0}, {"source": "$graphify-root$_scripts_execute_stepexecutor_run_git", "target": "completedprocess", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "scripts/execute.py", "source_location": "L109", "weight": 1.0}, {"source": "$graphify-root$_scripts_execute_stepexecutor", "target": "$graphify-root$_scripts_execute_stepexecutor_checkout_branch", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/execute.py", "source_location": "L113", "weight": 1.0}, {"source": "$graphify-root$_scripts_execute_stepexecutor", "target": "$graphify-root$_scripts_execute_stepexecutor_commit_step", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/execute.py", "source_location": "L136", "weight": 1.0}, {"source": "$graphify-root$_scripts_execute_stepexecutor", "target": "$graphify-root$_scripts_execute_stepexecutor_update_top_index", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/execute.py", "source_location": "L161", "weight": 1.0}, {"source": "$graphify-root$_scripts_execute_stepexecutor", "target": "$graphify-root$_scripts_execute_stepexecutor_load_guardrails", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/execute.py", "source_location": "L177", "weight": 1.0}, {"source": "$graphify-root$_scripts_execute_stepexecutor", "target": "$graphify-root$_scripts_execute_stepexecutor_build_step_context", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/execute.py", "source_location": "L189", "weight": 1.0}, {"source": "$graphify-root$_scripts_execute_stepexecutor", "target": "$graphify-root$_scripts_execute_stepexecutor_build_preamble", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/execute.py", "source_location": "L199", "weight": 1.0}, {"source": "$graphify-root$_scripts_execute_stepexecutor", "target": "$graphify-root$_scripts_execute_stepexecutor_invoke_claude", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/execute.py", "source_location": "L229", "weight": 1.0}, {"source": "$graphify-root$_scripts_execute_stepexecutor", "target": "$graphify-root$_scripts_execute_stepexecutor_print_header", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/execute.py", "source_location": "L261", "weight": 1.0}, {"source": "$graphify-root$_scripts_execute_stepexecutor", "target": "$graphify-root$_scripts_execute_stepexecutor_check_blockers", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/execute.py", "source_location": "L269", "weight": 1.0}, {"source": "$graphify-root$_scripts_execute_stepexecutor", "target": "$graphify-root$_scripts_execute_stepexecutor_ensure_created_at", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/execute.py", "source_location": "L285", "weight": 1.0}, {"source": "$graphify-root$_scripts_execute_stepexecutor", "target": "$graphify-root$_scripts_execute_stepexecutor_execute_single_step", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/execute.py", "source_location": "L293", "weight": 1.0}, {"source": "$graphify-root$_scripts_execute_stepexecutor", "target": "$graphify-root$_scripts_execute_stepexecutor_execute_all_steps", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/execute.py", "source_location": "L364", "weight": 1.0}, {"source": "$graphify-root$_scripts_execute_stepexecutor", "target": "$graphify-root$_scripts_execute_stepexecutor_finalize", "relation": "method", "confidence": "EXTRACTED", "source_file": "scripts/execute.py", "source_location": "L381", "weight": 1.0}, {"source": "$graphify-root$_scripts_execute_py", "target": "$graphify-root$_scripts_execute_main", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/execute.py", "source_location": "L407", "weight": 1.0}, {"source": "$graphify-root$_scripts_execute_stepexecutor_init", "target": "$graphify-root$_scripts_execute_stepexecutor_read_json", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/execute.py", "source_location": "L78", "weight": 1.0}, {"source": "$graphify-root$_scripts_execute_stepexecutor_run", "target": "$graphify-root$_scripts_execute_stepexecutor_print_header", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/execute.py", "source_location": "L84", "weight": 1.0}, {"source": "$graphify-root$_scripts_execute_stepexecutor_run", "target": "$graphify-root$_scripts_execute_stepexecutor_check_blockers", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/execute.py", "source_location": "L85", "weight": 1.0}, {"source": "$graphify-root$_scripts_execute_stepexecutor_run", "target": "$graphify-root$_scripts_execute_stepexecutor_checkout_branch", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/execute.py", "source_location": "L86", "weight": 1.0}, {"source": "$graphify-root$_scripts_execute_stepexecutor_run", "target": "$graphify-root$_scripts_execute_stepexecutor_load_guardrails", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/execute.py", "source_location": "L87", "weight": 1.0}, {"source": "$graphify-root$_scripts_execute_stepexecutor_run", "target": "$graphify-root$_scripts_execute_stepexecutor_ensure_created_at", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/execute.py", "source_location": "L88", "weight": 1.0}, {"source": "$graphify-root$_scripts_execute_stepexecutor_run", "target": "$graphify-root$_scripts_execute_stepexecutor_execute_all_steps", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/execute.py", "source_location": "L89", "weight": 1.0}, {"source": "$graphify-root$_scripts_execute_stepexecutor_run", "target": "$graphify-root$_scripts_execute_stepexecutor_finalize", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/execute.py", "source_location": "L90", "weight": 1.0}, {"source": "$graphify-root$_scripts_execute_stepexecutor_run_git", "target": "$graphify-root$_scripts_execute_stepexecutor_run", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/execute.py", "source_location": "L111", "weight": 1.0}, {"source": "$graphify-root$_scripts_execute_stepexecutor_checkout_branch", "target": "$graphify-root$_scripts_execute_stepexecutor_run_git", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/execute.py", "source_location": "L116", "weight": 1.0}, {"source": "$graphify-root$_scripts_execute_stepexecutor_commit_step", "target": "$graphify-root$_scripts_execute_stepexecutor_run_git", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/execute.py", "source_location": "L140", "weight": 1.0}, {"source": "$graphify-root$_scripts_execute_stepexecutor_update_top_index", "target": "$graphify-root$_scripts_execute_stepexecutor_read_json", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/execute.py", "source_location": "L164", "weight": 1.0}, {"source": "$graphify-root$_scripts_execute_stepexecutor_update_top_index", "target": "$graphify-root$_scripts_execute_stepexecutor_stamp", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/execute.py", "source_location": "L165", "weight": 1.0}, {"source": "$graphify-root$_scripts_execute_stepexecutor_update_top_index", "target": "$graphify-root$_scripts_execute_stepexecutor_write_json", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/execute.py", "source_location": "L173", "weight": 1.0}, {"source": "$graphify-root$_scripts_execute_stepexecutor_invoke_claude", "target": "$graphify-root$_scripts_execute_stepexecutor_run", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/execute.py", "source_location": "L238", "weight": 1.0}, {"source": "$graphify-root$_scripts_execute_stepexecutor_check_blockers", "target": "$graphify-root$_scripts_execute_stepexecutor_read_json", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/execute.py", "source_location": "L270", "weight": 1.0}, {"source": "$graphify-root$_scripts_execute_stepexecutor_ensure_created_at", "target": "$graphify-root$_scripts_execute_stepexecutor_read_json", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/execute.py", "source_location": "L286", "weight": 1.0}, {"source": "$graphify-root$_scripts_execute_stepexecutor_ensure_created_at", "target": "$graphify-root$_scripts_execute_stepexecutor_stamp", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/execute.py", "source_location": "L288", "weight": 1.0}, {"source": "$graphify-root$_scripts_execute_stepexecutor_ensure_created_at", "target": "$graphify-root$_scripts_execute_stepexecutor_write_json", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/execute.py", "source_location": "L289", "weight": 1.0}, {"source": "$graphify-root$_scripts_execute_stepexecutor_execute_single_step", "target": "$graphify-root$_scripts_execute_stepexecutor_read_json", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/execute.py", "source_location": "L296", "weight": 1.0}, {"source": "$graphify-root$_scripts_execute_stepexecutor_execute_single_step", "target": "$graphify-root$_scripts_execute_stepexecutor_build_step_context", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/execute.py", "source_location": "L301", "weight": 1.0}, {"source": "$graphify-root$_scripts_execute_stepexecutor_execute_single_step", "target": "$graphify-root$_scripts_execute_stepexecutor_build_preamble", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/execute.py", "source_location": "L302", "weight": 1.0}, {"source": "$graphify-root$_scripts_execute_stepexecutor_execute_single_step", "target": "$graphify-root$_scripts_execute_progress_indicator", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/execute.py", "source_location": "L308", "weight": 1.0}, {"source": "$graphify-root$_scripts_execute_stepexecutor_execute_single_step", "target": "$graphify-root$_scripts_execute_stepexecutor_invoke_claude", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/execute.py", "source_location": "L309", "weight": 1.0}, {"source": "$graphify-root$_scripts_execute_stepexecutor_execute_single_step", "target": "$graphify-root$_scripts_execute_stepexecutor_stamp", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/execute.py", "source_location": "L314", "weight": 1.0}, {"source": "$graphify-root$_scripts_execute_stepexecutor_execute_single_step", "target": "$graphify-root$_scripts_execute_stepexecutor_write_json", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/execute.py", "source_location": "L320", "weight": 1.0}, {"source": "$graphify-root$_scripts_execute_stepexecutor_execute_single_step", "target": "$graphify-root$_scripts_execute_stepexecutor_commit_step", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/execute.py", "source_location": "L321", "weight": 1.0}, {"source": "$graphify-root$_scripts_execute_stepexecutor_execute_single_step", "target": "$graphify-root$_scripts_execute_stepexecutor_update_top_index", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/execute.py", "source_location": "L333", "weight": 1.0}, {"source": "$graphify-root$_scripts_execute_stepexecutor_execute_all_steps", "target": "$graphify-root$_scripts_execute_stepexecutor_read_json", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/execute.py", "source_location": "L366", "weight": 1.0}, {"source": "$graphify-root$_scripts_execute_stepexecutor_execute_all_steps", "target": "$graphify-root$_scripts_execute_stepexecutor_stamp", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/execute.py", "source_location": "L375", "weight": 1.0}, {"source": "$graphify-root$_scripts_execute_stepexecutor_execute_all_steps", "target": "$graphify-root$_scripts_execute_stepexecutor_write_json", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/execute.py", "source_location": "L376", "weight": 1.0}, {"source": "$graphify-root$_scripts_execute_stepexecutor_execute_all_steps", "target": "$graphify-root$_scripts_execute_stepexecutor_execute_single_step", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/execute.py", "source_location": "L379", "weight": 1.0}, {"source": "$graphify-root$_scripts_execute_stepexecutor_finalize", "target": "$graphify-root$_scripts_execute_stepexecutor_read_json", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/execute.py", "source_location": "L382", "weight": 1.0}, {"source": "$graphify-root$_scripts_execute_stepexecutor_finalize", "target": "$graphify-root$_scripts_execute_stepexecutor_stamp", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/execute.py", "source_location": "L383", "weight": 1.0}, {"source": "$graphify-root$_scripts_execute_stepexecutor_finalize", "target": "$graphify-root$_scripts_execute_stepexecutor_write_json", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/execute.py", "source_location": "L384", "weight": 1.0}, {"source": "$graphify-root$_scripts_execute_stepexecutor_finalize", "target": "$graphify-root$_scripts_execute_stepexecutor_update_top_index", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/execute.py", "source_location": "L385", "weight": 1.0}, {"source": "$graphify-root$_scripts_execute_stepexecutor_finalize", "target": "$graphify-root$_scripts_execute_stepexecutor_run_git", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/execute.py", "source_location": "L387", "weight": 1.0}, {"source": "$graphify-root$_scripts_execute_main", "target": "$graphify-root$_scripts_execute_stepexecutor_run", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/execute.py", "source_location": "L413", "weight": 1.0}, {"source": "$graphify-root$_scripts_execute_main", "target": "$graphify-root$_scripts_execute_stepexecutor", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "scripts/execute.py", "source_location": "L413", "weight": 1.0}, {"source": "$graphify-root$_scripts_execute_rationale_27", "target": "$graphify-root$_scripts_execute_progress_indicator", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/execute.py", "source_location": "L27", "weight": 1.0}, {"source": "$graphify-root$_scripts_execute_rationale_54", "target": "$graphify-root$_scripts_execute_stepexecutor", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/execute.py", "source_location": "L54", "weight": 1.0}, {"source": "$graphify-root$_scripts_execute_rationale_294", "target": "$graphify-root$_scripts_execute_stepexecutor_execute_single_step", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/execute.py", "source_location": "L294", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_scripts_execute_progress_indicator", "callee": "Event", "is_member_call": true, "source_file": "scripts/execute.py", "source_location": "L29", "receiver": "threading"}, {"caller_nid": "$graphify-root$_scripts_execute_progress_indicator", "callee": "monotonic", "is_member_call": true, "source_file": "scripts/execute.py", "source_location": "L30", "receiver": "time"}, {"caller_nid": "$graphify-root$_scripts_execute_progress_indicator", "callee": "Thread", "is_member_call": true, "source_file": "scripts/execute.py", "source_location": "L42", "receiver": "threading"}, {"caller_nid": "$graphify-root$_scripts_execute_progress_indicator", "callee": "_animate", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/execute.py", "source_location": "L42"}, {"caller_nid": "$graphify-root$_scripts_execute_progress_indicator", "callee": "start", "is_member_call": true, "source_file": "scripts/execute.py", "source_location": "L43", "receiver": "th"}, {"caller_nid": "$graphify-root$_scripts_execute_progress_indicator", "callee": "SimpleNamespace", "is_member_call": true, "source_file": "scripts/execute.py", "source_location": "L44", "receiver": "types"}, {"caller_nid": "$graphify-root$_scripts_execute_progress_indicator", "callee": "join", "is_member_call": true, "source_file": "scripts/execute.py", "source_location": "L49", "receiver": "th"}, {"caller_nid": "$graphify-root$_scripts_execute_progress_indicator", "callee": "monotonic", "is_member_call": true, "source_file": "scripts/execute.py", "source_location": "L50", "receiver": "time"}, {"caller_nid": "$graphify-root$_scripts_execute_stepexecutor_init", "callee": "ROOT", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/execute.py", "source_location": "L62"}, {"caller_nid": "$graphify-root$_scripts_execute_stepexecutor_init", "callee": "is_dir", "is_member_call": true, "source_file": "scripts/execute.py", "source_location": "L69", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_execute_stepexecutor_init", "callee": "exit", "is_member_call": true, "source_file": "scripts/execute.py", "source_location": "L71", "receiver": "sys"}, {"caller_nid": "$graphify-root$_scripts_execute_stepexecutor_init", "callee": "exists", "is_member_call": true, "source_file": "scripts/execute.py", "source_location": "L74", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_execute_stepexecutor_init", "callee": "exit", "is_member_call": true, "source_file": "scripts/execute.py", "source_location": "L76", "receiver": "sys"}, {"caller_nid": "$graphify-root$_scripts_execute_stepexecutor_init", "callee": "get", "is_member_call": true, "source_file": "scripts/execute.py", "source_location": "L79", "receiver": "idx"}, {"caller_nid": "$graphify-root$_scripts_execute_stepexecutor_init", "callee": "get", "is_member_call": true, "source_file": "scripts/execute.py", "source_location": "L80", "receiver": "idx"}, {"caller_nid": "$graphify-root$_scripts_execute_stepexecutor_stamp", "callee": "strftime", "is_member_call": true, "source_file": "scripts/execute.py", "source_location": "L95", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_execute_stepexecutor_stamp", "callee": "now", "is_member_call": true, "source_file": "scripts/execute.py", "source_location": "L95", "receiver": "datetime"}, {"caller_nid": "$graphify-root$_scripts_execute_stepexecutor_read_json", "callee": "loads", "is_member_call": true, "source_file": "scripts/execute.py", "source_location": "L101", "receiver": "json"}, {"caller_nid": "$graphify-root$_scripts_execute_stepexecutor_read_json", "callee": "read_text", "is_member_call": true, "source_file": "scripts/execute.py", "source_location": "L101", "receiver": "p"}, {"caller_nid": "$graphify-root$_scripts_execute_stepexecutor_write_json", "callee": "write_text", "is_member_call": true, "source_file": "scripts/execute.py", "source_location": "L105", "receiver": "p"}, {"caller_nid": "$graphify-root$_scripts_execute_stepexecutor_write_json", "callee": "dumps", "is_member_call": true, "source_file": "scripts/execute.py", "source_location": "L105", "receiver": "json"}, {"caller_nid": "$graphify-root$_scripts_execute_stepexecutor_checkout_branch", "callee": "strip", "is_member_call": true, "source_file": "scripts/execute.py", "source_location": "L119", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_execute_stepexecutor_checkout_branch", "callee": "exit", "is_member_call": true, "source_file": "scripts/execute.py", "source_location": "L120", "receiver": "sys"}, {"caller_nid": "$graphify-root$_scripts_execute_stepexecutor_checkout_branch", "callee": "strip", "is_member_call": true, "source_file": "scripts/execute.py", "source_location": "L122", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_execute_stepexecutor_checkout_branch", "callee": "strip", "is_member_call": true, "source_file": "scripts/execute.py", "source_location": "L130", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_execute_stepexecutor_checkout_branch", "callee": "exit", "is_member_call": true, "source_file": "scripts/execute.py", "source_location": "L132", "receiver": "sys"}, {"caller_nid": "$graphify-root$_scripts_execute_stepexecutor_commit_step", "callee": "format", "is_member_call": true, "source_file": "scripts/execute.py", "source_location": "L145", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_execute_stepexecutor_commit_step", "callee": "strip", "is_member_call": true, "source_file": "scripts/execute.py", "source_location": "L150", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_execute_stepexecutor_commit_step", "callee": "format", "is_member_call": true, "source_file": "scripts/execute.py", "source_location": "L154", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_execute_stepexecutor_commit_step", "callee": "strip", "is_member_call": true, "source_file": "scripts/execute.py", "source_location": "L157", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_execute_stepexecutor_update_top_index", "callee": "exists", "is_member_call": true, "source_file": "scripts/execute.py", "source_location": "L162", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_execute_stepexecutor_update_top_index", "callee": "get", "is_member_call": true, "source_file": "scripts/execute.py", "source_location": "L166", "receiver": "top"}, {"caller_nid": "$graphify-root$_scripts_execute_stepexecutor_update_top_index", "callee": "get", "is_member_call": true, "source_file": "scripts/execute.py", "source_location": "L167", "receiver": "phase"}, {"caller_nid": "$graphify-root$_scripts_execute_stepexecutor_update_top_index", "callee": "get", "is_member_call": true, "source_file": "scripts/execute.py", "source_location": "L169", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_execute_stepexecutor_load_guardrails", "callee": "exists", "is_member_call": true, "source_file": "scripts/execute.py", "source_location": "L180", "receiver": "claude_md"}, {"caller_nid": "$graphify-root$_scripts_execute_stepexecutor_load_guardrails", "callee": "append", "is_member_call": true, "source_file": "scripts/execute.py", "source_location": "L181", "receiver": "sections"}, {"caller_nid": "$graphify-root$_scripts_execute_stepexecutor_load_guardrails", "callee": "read_text", "is_member_call": true, "source_file": "scripts/execute.py", "source_location": "L181", "receiver": "claude_md"}, {"caller_nid": "$graphify-root$_scripts_execute_stepexecutor_load_guardrails", "callee": "is_dir", "is_member_call": true, "source_file": "scripts/execute.py", "source_location": "L183", "receiver": "docs_dir"}, {"caller_nid": "$graphify-root$_scripts_execute_stepexecutor_load_guardrails", "callee": "glob", "is_member_call": true, "source_file": "scripts/execute.py", "source_location": "L184", "receiver": "docs_dir"}, {"caller_nid": "$graphify-root$_scripts_execute_stepexecutor_load_guardrails", "callee": "append", "is_member_call": true, "source_file": "scripts/execute.py", "source_location": "L185", "receiver": "sections"}, {"caller_nid": "$graphify-root$_scripts_execute_stepexecutor_load_guardrails", "callee": "read_text", "is_member_call": true, "source_file": "scripts/execute.py", "source_location": "L185", "receiver": "doc"}, {"caller_nid": "$graphify-root$_scripts_execute_stepexecutor_load_guardrails", "callee": "join", "is_member_call": true, "source_file": "scripts/execute.py", "source_location": "L186", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_execute_stepexecutor_build_step_context", "callee": "get", "is_member_call": true, "source_file": "scripts/execute.py", "source_location": "L193", "receiver": "s"}, {"caller_nid": "$graphify-root$_scripts_execute_stepexecutor_build_step_context", "callee": "join", "is_member_call": true, "source_file": "scripts/execute.py", "source_location": "L197", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_execute_stepexecutor_build_preamble", "callee": "format", "is_member_call": true, "source_file": "scripts/execute.py", "source_location": "L201", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_execute_stepexecutor_invoke_claude", "callee": "exists", "is_member_call": true, "source_file": "scripts/execute.py", "source_location": "L233", "receiver": "step_file"}, {"caller_nid": "$graphify-root$_scripts_execute_stepexecutor_invoke_claude", "callee": "exit", "is_member_call": true, "source_file": "scripts/execute.py", "source_location": "L235", "receiver": "sys"}, {"caller_nid": "$graphify-root$_scripts_execute_stepexecutor_invoke_claude", "callee": "read_text", "is_member_call": true, "source_file": "scripts/execute.py", "source_location": "L237", "receiver": "step_file"}, {"caller_nid": "$graphify-root$_scripts_execute_stepexecutor_invoke_claude", "callee": "dump", "is_member_call": true, "source_file": "scripts/execute.py", "source_location": "L255", "receiver": "json"}, {"caller_nid": "$graphify-root$_scripts_execute_stepexecutor_invoke_claude", "callee": "f", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "scripts/execute.py", "source_location": "L255"}, {"caller_nid": "$graphify-root$_scripts_execute_stepexecutor_check_blockers", "callee": "get", "is_member_call": true, "source_file": "scripts/execute.py", "source_location": "L274", "receiver": "s"}, {"caller_nid": "$graphify-root$_scripts_execute_stepexecutor_check_blockers", "callee": "exit", "is_member_call": true, "source_file": "scripts/execute.py", "source_location": "L276", "receiver": "sys"}, {"caller_nid": "$graphify-root$_scripts_execute_stepexecutor_check_blockers", "callee": "get", "is_member_call": true, "source_file": "scripts/execute.py", "source_location": "L279", "receiver": "s"}, {"caller_nid": "$graphify-root$_scripts_execute_stepexecutor_check_blockers", "callee": "exit", "is_member_call": true, "source_file": "scripts/execute.py", "source_location": "L281", "receiver": "sys"}, {"caller_nid": "$graphify-root$_scripts_execute_stepexecutor_execute_single_step", "callee": "get", "is_member_call": true, "source_file": "scripts/execute.py", "source_location": "L313", "receiver": "s"}, {"caller_nid": "$graphify-root$_scripts_execute_stepexecutor_execute_single_step", "callee": "get", "is_member_call": true, "source_file": "scripts/execute.py", "source_location": "L330", "receiver": "s"}, {"caller_nid": "$graphify-root$_scripts_execute_stepexecutor_execute_single_step", "callee": "exit", "is_member_call": true, "source_file": "scripts/execute.py", "source_location": "L334", "receiver": "sys"}, {"caller_nid": "$graphify-root$_scripts_execute_stepexecutor_execute_single_step", "callee": "get", "is_member_call": true, "source_file": "scripts/execute.py", "source_location": "L337", "receiver": "s"}, {"caller_nid": "$graphify-root$_scripts_execute_stepexecutor_execute_single_step", "callee": "pop", "is_member_call": true, "source_file": "scripts/execute.py", "source_location": "L345", "receiver": "s"}, {"caller_nid": "$graphify-root$_scripts_execute_stepexecutor_execute_single_step", "callee": "exit", "is_member_call": true, "source_file": "scripts/execute.py", "source_location": "L360", "receiver": "sys"}, {"caller_nid": "$graphify-root$_scripts_execute_stepexecutor_finalize", "callee": "strip", "is_member_call": true, "source_file": "scripts/execute.py", "source_location": "L398", "receiver": null}, {"caller_nid": "$graphify-root$_scripts_execute_stepexecutor_finalize", "callee": "exit", "is_member_call": true, "source_file": "scripts/execute.py", "source_location": "L399", "receiver": "sys"}, {"caller_nid": "$graphify-root$_scripts_execute_main", "callee": "ArgumentParser", "is_member_call": true, "source_file": "scripts/execute.py", "source_location": "L408", "receiver": "argparse"}, {"caller_nid": "$graphify-root$_scripts_execute_main", "callee": "add_argument", "is_member_call": true, "source_file": "scripts/execute.py", "source_location": "L409", "receiver": "parser"}, {"caller_nid": "$graphify-root$_scripts_execute_main", "callee": "add_argument", "is_member_call": true, "source_file": "scripts/execute.py", "source_location": "L410", "receiver": "parser"}, {"caller_nid": "$graphify-root$_scripts_execute_main", "callee": "parse_args", "is_member_call": true, "source_file": "scripts/execute.py", "source_location": "L411", "receiver": "parser"}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.31/f6481579f778d33a4fdf464e064d8a6dcc309eef6619ab1060b87ffd4e191b15.json b/graphify-out/cache/ast/v0.9.31/f6481579f778d33a4fdf464e064d8a6dcc309eef6619ab1060b87ffd4e191b15.json new file mode 100644 index 0000000..9d723bd --- /dev/null +++ b/graphify-out/cache/ast/v0.9.31/f6481579f778d33a4fdf464e064d8a6dcc309eef6619ab1060b87ffd4e191b15.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_src_validation_vrptw_engine_py", "label": "vrptw_engine.py", "file_type": "code", "source_file": "src/validation/vrptw_engine.py", "source_location": "L1"}, {"id": "$graphify-root$_src_validation_vrptw_engine_timematrix", "label": "TimeMatrix", "file_type": "code", "source_file": "src/validation/vrptw_engine.py", "source_location": "L55", "_callable": true, "_callable_class": true}, {"id": "abc", "label": "ABC", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/src/validation/vrptw_engine.py"}, {"id": "$graphify-root$_src_validation_vrptw_engine_timematrix_get_travel_time", "label": ".get_travel_time()", "file_type": "code", "source_file": "src/validation/vrptw_engine.py", "source_location": "L59", "_callable": true}, {"id": "vrptwplace", "label": "VRPTWPlace", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/src/validation/vrptw_engine.py"}, {"id": "$graphify-root$_src_validation_vrptw_engine_haversinematrix", "label": "HaversineMatrix", "file_type": "code", "source_file": "src/validation/vrptw_engine.py", "source_location": "L63", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_src_validation_vrptw_engine_haversinematrix_effective_speed", "label": "._effective_speed()", "file_type": "code", "source_file": "src/validation/vrptw_engine.py", "source_location": "L80", "_callable": true}, {"id": "$graphify-root$_src_validation_vrptw_engine_haversinematrix_get_travel_time", "label": ".get_travel_time()", "file_type": "code", "source_file": "src/validation/vrptw_engine.py", "source_location": "L86", "_callable": true}, {"id": "$graphify-root$_src_validation_vrptw_engine_cachedroutematrix", "label": "CachedRouteMatrix", "file_type": "code", "source_file": "src/validation/vrptw_engine.py", "source_location": "L91", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_src_validation_vrptw_engine_cachedroutematrix_init", "label": ".__init__()", "file_type": "code", "source_file": "src/validation/vrptw_engine.py", "source_location": "L98", "_callable": true}, {"id": "$graphify-root$_src_validation_vrptw_engine_cachedroutematrix_from_file", "label": ".from_file()", "file_type": "code", "source_file": "src/validation/vrptw_engine.py", "source_location": "L112", "_callable": true}, {"id": "path", "label": "Path", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/src/validation/vrptw_engine.py"}, {"id": "$graphify-root$_src_validation_vrptw_engine_cachedroutematrix_get_travel_time", "label": ".get_travel_time()", "file_type": "code", "source_file": "src/validation/vrptw_engine.py", "source_location": "L117", "_callable": true}, {"id": "$graphify-root$_src_validation_vrptw_engine_haversine_m", "label": "_haversine_m()", "file_type": "code", "source_file": "src/validation/vrptw_engine.py", "source_location": "L130", "_callable": true}, {"id": "$graphify-root$_src_validation_vrptw_engine_simresult", "label": "_SimResult", "file_type": "code", "source_file": "src/validation/vrptw_engine.py", "source_location": "L144", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_src_validation_vrptw_engine_minutes_to_hhmm", "label": "_minutes_to_hhmm()", "file_type": "code", "source_file": "src/validation/vrptw_engine.py", "source_location": "L151", "_callable": true}, {"id": "$graphify-root$_src_validation_vrptw_engine_simulate_day", "label": "_simulate_day()", "file_type": "code", "source_file": "src/validation/vrptw_engine.py", "source_location": "L156", "_callable": true}, {"id": "$graphify-root$_src_validation_vrptw_engine_compute_day_total_minutes", "label": "_compute_day_total_minutes()", "file_type": "code", "source_file": "src/validation/vrptw_engine.py", "source_location": "L216", "_callable": true}, {"id": "$graphify-root$_src_validation_vrptw_engine_solve_vrptw_ortools", "label": "_solve_vrptw_ortools()", "file_type": "code", "source_file": "src/validation/vrptw_engine.py", "source_location": "L244", "_callable": true}, {"id": "$graphify-root$_src_validation_vrptw_engine_check_depot_constraints", "label": "_check_depot_constraints()", "file_type": "code", "source_file": "src/validation/vrptw_engine.py", "source_location": "L317", "_callable": true}, {"id": "vrptwday", "label": "VRPTWDay", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/src/validation/vrptw_engine.py"}, {"id": "deepdiveitem", "label": "DeepDiveItem", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/src/validation/vrptw_engine.py"}, {"id": "$graphify-root$_src_validation_vrptw_engine_vrptwengine", "label": "VRPTWEngine", "file_type": "code", "source_file": "src/validation/vrptw_engine.py", "source_location": "L378", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_src_validation_vrptw_engine_vrptwengine_init", "label": ".__init__()", "file_type": "code", "source_file": "src/validation/vrptw_engine.py", "source_location": "L385", "_callable": true}, {"id": "$graphify-root$_src_validation_vrptw_engine_vrptwengine_validate", "label": ".validate()", "file_type": "code", "source_file": "src/validation/vrptw_engine.py", "source_location": "L396", "_callable": true}, {"id": "vrptwrequest", "label": "VRPTWRequest", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/src/validation/vrptw_engine.py"}, {"id": "vrptwresult", "label": "VRPTWResult", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/src/validation/vrptw_engine.py"}, {"id": "$graphify-root$_src_validation_vrptw_engine_vrptwengine_compute_risk_score", "label": "._compute_risk_score()", "file_type": "code", "source_file": "src/validation/vrptw_engine.py", "source_location": "L494", "_callable": true}, {"id": "$graphify-root$_src_validation_vrptw_engine_rationale_1", "label": "VRPTW Validation Engine. Validates travel itineraries against mathematical\u2026", "file_type": "rationale", "source_file": "src/validation/vrptw_engine.py", "source_location": "L1"}, {"id": "$graphify-root$_src_validation_vrptw_engine_rationale_56", "label": "Abstract travel-time provider. Implementations are interchangeable.", "file_type": "rationale", "source_file": "src/validation/vrptw_engine.py", "source_location": "L56"}, {"id": "$graphify-root$_src_validation_vrptw_engine_rationale_60", "label": "Return travel time in seconds.", "file_type": "rationale", "source_file": "src/validation/vrptw_engine.py", "source_location": "L60"}, {"id": "$graphify-root$_src_validation_vrptw_engine_rationale_64", "label": "Calibrated haversine fallback using distance-band multipliers. Kakao Mobility\u2026", "file_type": "rationale", "source_file": "src/validation/vrptw_engine.py", "source_location": "L64"}, {"id": "$graphify-root$_src_validation_vrptw_engine_rationale_92", "label": "Uses Kakao Mobility cache (lng,lat|lng,lat \u2192 seconds). Falls back to Haversine.\u2026", "file_type": "rationale", "source_file": "src/validation/vrptw_engine.py", "source_location": "L92"}, {"id": "$graphify-root$_src_validation_vrptw_engine_rationale_145", "label": "Simulation result for a single day.", "file_type": "rationale", "source_file": "src/validation/vrptw_engine.py", "source_location": "L145"}, {"id": "$graphify-root$_src_validation_vrptw_engine_rationale_161", "label": "Simulate traversal in the given order. Returns travel time and issues.", "file_type": "rationale", "source_file": "src/validation/vrptw_engine.py", "source_location": "L161"}, {"id": "$graphify-root$_src_validation_vrptw_engine_rationale_221", "label": "Total elapsed minutes from first departure to last arrival+stay.", "file_type": "rationale", "source_file": "src/validation/vrptw_engine.py", "source_location": "L221"}, {"id": "$graphify-root$_src_validation_vrptw_engine_rationale_249", "label": "Return (optimal_order, total_travel_seconds) or None on failure.", "file_type": "rationale", "source_file": "src/validation/vrptw_engine.py", "source_location": "L249"}, {"id": "$graphify-root$_src_validation_vrptw_engine_rationale_320", "label": "Enforce depot rules for 2\ubc153\uc77c+ (3+ days). 1\ubc152\uc77c is exempt.", "file_type": "rationale", "source_file": "src/validation/vrptw_engine.py", "source_location": "L320"}, {"id": "$graphify-root$_src_validation_vrptw_engine_rationale_379", "label": "VRPTW-based travel itinerary validator. Accepts a TimeMatrix implementation;\u2026", "file_type": "rationale", "source_file": "src/validation/vrptw_engine.py", "source_location": "L379"}], "edges": [{"source": "$graphify-root$_src_validation_vrptw_engine_py", "target": "json", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "src/validation/vrptw_engine.py", "source_location": "L11", "weight": 1.0}, {"source": "$graphify-root$_src_validation_vrptw_engine_py", "target": "math", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "src/validation/vrptw_engine.py", "source_location": "L12", "weight": 1.0}, {"source": "$graphify-root$_src_validation_vrptw_engine_py", "target": "abc", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "src/validation/vrptw_engine.py", "source_location": "L13", "weight": 1.0}, {"source": "$graphify-root$_src_validation_vrptw_engine_py", "target": "dataclasses", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "src/validation/vrptw_engine.py", "source_location": "L14", "weight": 1.0}, {"source": "$graphify-root$_src_validation_vrptw_engine_py", "target": "pathlib", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "src/validation/vrptw_engine.py", "source_location": "L15", "weight": 1.0}, {"source": "$graphify-root$_src_validation_vrptw_engine_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "src/validation/vrptw_engine.py", "source_location": "L16", "weight": 1.0}, {"source": "$graphify-root$_src_validation_vrptw_engine_py", "target": "src_data_models", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "src/validation/vrptw_engine.py", "source_location": "L18", "weight": 1.0}, {"source": "$graphify-root$_src_validation_vrptw_engine_py", "target": "ortools_constraint_solver", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "src/validation/vrptw_engine.py", "source_location": "L45", "weight": 1.0}, {"source": "$graphify-root$_src_validation_vrptw_engine_py", "target": "$graphify-root$_src_validation_vrptw_engine_timematrix", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/validation/vrptw_engine.py", "source_location": "L55", "weight": 1.0}, {"source": "$graphify-root$_src_validation_vrptw_engine_timematrix", "target": "abc", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "src/validation/vrptw_engine.py", "source_location": "L55", "weight": 1.0}, {"source": "$graphify-root$_src_validation_vrptw_engine_timematrix", "target": "$graphify-root$_src_validation_vrptw_engine_timematrix_get_travel_time", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/validation/vrptw_engine.py", "source_location": "L59", "weight": 1.0}, {"source": "$graphify-root$_src_validation_vrptw_engine_timematrix_get_travel_time", "target": "vrptwplace", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "src/validation/vrptw_engine.py", "source_location": "L59", "weight": 1.0}, {"source": "$graphify-root$_src_validation_vrptw_engine_timematrix_get_travel_time", "target": "vrptwplace", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "src/validation/vrptw_engine.py", "source_location": "L59", "weight": 1.0}, {"source": "$graphify-root$_src_validation_vrptw_engine_py", "target": "$graphify-root$_src_validation_vrptw_engine_haversinematrix", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/validation/vrptw_engine.py", "source_location": "L63", "weight": 1.0}, {"source": "$graphify-root$_src_validation_vrptw_engine_haversinematrix", "target": "$graphify-root$_src_validation_vrptw_engine_timematrix", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "src/validation/vrptw_engine.py", "source_location": "L63", "weight": 1.0}, {"source": "$graphify-root$_src_validation_vrptw_engine_haversinematrix", "target": "$graphify-root$_src_validation_vrptw_engine_haversinematrix_effective_speed", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/validation/vrptw_engine.py", "source_location": "L80", "weight": 1.0}, {"source": "$graphify-root$_src_validation_vrptw_engine_haversinematrix", "target": "$graphify-root$_src_validation_vrptw_engine_haversinematrix_get_travel_time", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/validation/vrptw_engine.py", "source_location": "L86", "weight": 1.0}, {"source": "$graphify-root$_src_validation_vrptw_engine_haversinematrix_get_travel_time", "target": "vrptwplace", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "src/validation/vrptw_engine.py", "source_location": "L86", "weight": 1.0}, {"source": "$graphify-root$_src_validation_vrptw_engine_haversinematrix_get_travel_time", "target": "vrptwplace", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "src/validation/vrptw_engine.py", "source_location": "L86", "weight": 1.0}, {"source": "$graphify-root$_src_validation_vrptw_engine_py", "target": "$graphify-root$_src_validation_vrptw_engine_cachedroutematrix", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/validation/vrptw_engine.py", "source_location": "L91", "weight": 1.0}, {"source": "$graphify-root$_src_validation_vrptw_engine_cachedroutematrix", "target": "$graphify-root$_src_validation_vrptw_engine_timematrix", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "src/validation/vrptw_engine.py", "source_location": "L91", "weight": 1.0}, {"source": "$graphify-root$_src_validation_vrptw_engine_cachedroutematrix", "target": "$graphify-root$_src_validation_vrptw_engine_cachedroutematrix_init", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/validation/vrptw_engine.py", "source_location": "L98", "weight": 1.0}, {"source": "$graphify-root$_src_validation_vrptw_engine_cachedroutematrix", "target": "$graphify-root$_src_validation_vrptw_engine_cachedroutematrix_from_file", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/validation/vrptw_engine.py", "source_location": "L112", "weight": 1.0}, {"source": "$graphify-root$_src_validation_vrptw_engine_cachedroutematrix_from_file", "target": "path", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "src/validation/vrptw_engine.py", "source_location": "L112", "weight": 1.0}, {"source": "$graphify-root$_src_validation_vrptw_engine_cachedroutematrix", "target": "$graphify-root$_src_validation_vrptw_engine_cachedroutematrix_get_travel_time", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/validation/vrptw_engine.py", "source_location": "L117", "weight": 1.0}, {"source": "$graphify-root$_src_validation_vrptw_engine_cachedroutematrix_get_travel_time", "target": "vrptwplace", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "src/validation/vrptw_engine.py", "source_location": "L117", "weight": 1.0}, {"source": "$graphify-root$_src_validation_vrptw_engine_cachedroutematrix_get_travel_time", "target": "vrptwplace", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "src/validation/vrptw_engine.py", "source_location": "L117", "weight": 1.0}, {"source": "$graphify-root$_src_validation_vrptw_engine_py", "target": "$graphify-root$_src_validation_vrptw_engine_haversine_m", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/validation/vrptw_engine.py", "source_location": "L130", "weight": 1.0}, {"source": "$graphify-root$_src_validation_vrptw_engine_py", "target": "$graphify-root$_src_validation_vrptw_engine_simresult", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/validation/vrptw_engine.py", "source_location": "L144", "weight": 1.0}, {"source": "$graphify-root$_src_validation_vrptw_engine_py", "target": "$graphify-root$_src_validation_vrptw_engine_minutes_to_hhmm", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/validation/vrptw_engine.py", "source_location": "L151", "weight": 1.0}, {"source": "$graphify-root$_src_validation_vrptw_engine_py", "target": "$graphify-root$_src_validation_vrptw_engine_simulate_day", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/validation/vrptw_engine.py", "source_location": "L156", "weight": 1.0}, {"source": "$graphify-root$_src_validation_vrptw_engine_simulate_day", "target": "vrptwplace", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "src/validation/vrptw_engine.py", "source_location": "L156", "weight": 1.0}, {"source": "$graphify-root$_src_validation_vrptw_engine_simulate_day", "target": "$graphify-root$_src_validation_vrptw_engine_timematrix", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "src/validation/vrptw_engine.py", "source_location": "L156", "weight": 1.0}, {"source": "$graphify-root$_src_validation_vrptw_engine_simulate_day", "target": "$graphify-root$_src_validation_vrptw_engine_simresult", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "src/validation/vrptw_engine.py", "source_location": "L156", "weight": 1.0}, {"source": "$graphify-root$_src_validation_vrptw_engine_py", "target": "$graphify-root$_src_validation_vrptw_engine_compute_day_total_minutes", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/validation/vrptw_engine.py", "source_location": "L216", "weight": 1.0}, {"source": "$graphify-root$_src_validation_vrptw_engine_compute_day_total_minutes", "target": "vrptwplace", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "src/validation/vrptw_engine.py", "source_location": "L216", "weight": 1.0}, {"source": "$graphify-root$_src_validation_vrptw_engine_compute_day_total_minutes", "target": "$graphify-root$_src_validation_vrptw_engine_timematrix", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "src/validation/vrptw_engine.py", "source_location": "L216", "weight": 1.0}, {"source": "$graphify-root$_src_validation_vrptw_engine_py", "target": "$graphify-root$_src_validation_vrptw_engine_solve_vrptw_ortools", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/validation/vrptw_engine.py", "source_location": "L244", "weight": 1.0}, {"source": "$graphify-root$_src_validation_vrptw_engine_solve_vrptw_ortools", "target": "vrptwplace", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "src/validation/vrptw_engine.py", "source_location": "L244", "weight": 1.0}, {"source": "$graphify-root$_src_validation_vrptw_engine_solve_vrptw_ortools", "target": "$graphify-root$_src_validation_vrptw_engine_timematrix", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "src/validation/vrptw_engine.py", "source_location": "L244", "weight": 1.0}, {"source": "$graphify-root$_src_validation_vrptw_engine_py", "target": "$graphify-root$_src_validation_vrptw_engine_check_depot_constraints", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/validation/vrptw_engine.py", "source_location": "L317", "weight": 1.0}, {"source": "$graphify-root$_src_validation_vrptw_engine_check_depot_constraints", "target": "vrptwday", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "src/validation/vrptw_engine.py", "source_location": "L317", "weight": 1.0}, {"source": "$graphify-root$_src_validation_vrptw_engine_check_depot_constraints", "target": "deepdiveitem", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "src/validation/vrptw_engine.py", "source_location": "L317", "weight": 1.0}, {"source": "$graphify-root$_src_validation_vrptw_engine_py", "target": "$graphify-root$_src_validation_vrptw_engine_vrptwengine", "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/validation/vrptw_engine.py", "source_location": "L378", "weight": 1.0}, {"source": "$graphify-root$_src_validation_vrptw_engine_vrptwengine", "target": "$graphify-root$_src_validation_vrptw_engine_vrptwengine_init", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/validation/vrptw_engine.py", "source_location": "L385", "weight": 1.0}, {"source": "$graphify-root$_src_validation_vrptw_engine_vrptwengine_init", "target": "$graphify-root$_src_validation_vrptw_engine_timematrix", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "src/validation/vrptw_engine.py", "source_location": "L385", "weight": 1.0}, {"source": "$graphify-root$_src_validation_vrptw_engine_vrptwengine", "target": "$graphify-root$_src_validation_vrptw_engine_vrptwengine_validate", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/validation/vrptw_engine.py", "source_location": "L396", "weight": 1.0}, {"source": "$graphify-root$_src_validation_vrptw_engine_vrptwengine_validate", "target": "vrptwrequest", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "src/validation/vrptw_engine.py", "source_location": "L396", "weight": 1.0}, {"source": "$graphify-root$_src_validation_vrptw_engine_vrptwengine_validate", "target": "vrptwresult", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "src/validation/vrptw_engine.py", "source_location": "L396", "weight": 1.0}, {"source": "$graphify-root$_src_validation_vrptw_engine_vrptwengine", "target": "$graphify-root$_src_validation_vrptw_engine_vrptwengine_compute_risk_score", "relation": "method", "confidence": "EXTRACTED", "source_file": "src/validation/vrptw_engine.py", "source_location": "L494", "weight": 1.0}, {"source": "$graphify-root$_src_validation_vrptw_engine_vrptwengine_compute_risk_score", "target": "deepdiveitem", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "src/validation/vrptw_engine.py", "source_location": "L494", "weight": 1.0}, {"source": "$graphify-root$_src_validation_vrptw_engine_vrptwengine_compute_risk_score", "target": "vrptwday", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "src/validation/vrptw_engine.py", "source_location": "L494", "weight": 1.0}, {"source": "$graphify-root$_src_validation_vrptw_engine_haversinematrix_get_travel_time", "target": "$graphify-root$_src_validation_vrptw_engine_haversine_m", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/validation/vrptw_engine.py", "source_location": "L87", "weight": 1.0}, {"source": "$graphify-root$_src_validation_vrptw_engine_haversinematrix_get_travel_time", "target": "$graphify-root$_src_validation_vrptw_engine_haversinematrix_effective_speed", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/validation/vrptw_engine.py", "source_location": "L88", "weight": 1.0}, {"source": "$graphify-root$_src_validation_vrptw_engine_cachedroutematrix_init", "target": "$graphify-root$_src_validation_vrptw_engine_haversinematrix", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/validation/vrptw_engine.py", "source_location": "L109", "weight": 1.0}, {"source": "$graphify-root$_src_validation_vrptw_engine_simulate_day", "target": "$graphify-root$_src_validation_vrptw_engine_cachedroutematrix_get_travel_time", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/validation/vrptw_engine.py", "source_location": "L172", "weight": 1.0}, {"source": "$graphify-root$_src_validation_vrptw_engine_simulate_day", "target": "deepdiveitem", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/validation/vrptw_engine.py", "source_location": "L180", "weight": 1.0}, {"source": "$graphify-root$_src_validation_vrptw_engine_simulate_day", "target": "$graphify-root$_src_validation_vrptw_engine_minutes_to_hhmm", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/validation/vrptw_engine.py", "source_location": "L182", "weight": 1.0}, {"source": "$graphify-root$_src_validation_vrptw_engine_simulate_day", "target": "$graphify-root$_src_validation_vrptw_engine_simresult", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/validation/vrptw_engine.py", "source_location": "L209", "weight": 1.0}, {"source": "$graphify-root$_src_validation_vrptw_engine_compute_day_total_minutes", "target": "$graphify-root$_src_validation_vrptw_engine_cachedroutematrix_get_travel_time", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/validation/vrptw_engine.py", "source_location": "L231", "weight": 1.0}, {"source": "$graphify-root$_src_validation_vrptw_engine_solve_vrptw_ortools", "target": "$graphify-root$_src_validation_vrptw_engine_simulate_day", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/validation/vrptw_engine.py", "source_location": "L253", "weight": 1.0}, {"source": "$graphify-root$_src_validation_vrptw_engine_solve_vrptw_ortools", "target": "$graphify-root$_src_validation_vrptw_engine_cachedroutematrix_get_travel_time", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/validation/vrptw_engine.py", "source_location": "L257", "weight": 1.0}, {"source": "$graphify-root$_src_validation_vrptw_engine_check_depot_constraints", "target": "deepdiveitem", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/validation/vrptw_engine.py", "source_location": "L339", "weight": 1.0}, {"source": "$graphify-root$_src_validation_vrptw_engine_vrptwengine_init", "target": "$graphify-root$_src_validation_vrptw_engine_haversinematrix", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/validation/vrptw_engine.py", "source_location": "L390", "weight": 1.0}, {"source": "$graphify-root$_src_validation_vrptw_engine_vrptwengine_validate", "target": "$graphify-root$_src_validation_vrptw_engine_check_depot_constraints", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/validation/vrptw_engine.py", "source_location": "L403", "weight": 1.0}, {"source": "$graphify-root$_src_validation_vrptw_engine_vrptwengine_validate", "target": "$graphify-root$_src_validation_vrptw_engine_simulate_day", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/validation/vrptw_engine.py", "source_location": "L414", "weight": 1.0}, {"source": "$graphify-root$_src_validation_vrptw_engine_vrptwengine_validate", "target": "$graphify-root$_src_validation_vrptw_engine_compute_day_total_minutes", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/validation/vrptw_engine.py", "source_location": "L419", "weight": 1.0}, {"source": "$graphify-root$_src_validation_vrptw_engine_vrptwengine_validate", "target": "deepdiveitem", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/validation/vrptw_engine.py", "source_location": "L422", "weight": 1.0}, {"source": "$graphify-root$_src_validation_vrptw_engine_vrptwengine_validate", "target": "$graphify-root$_src_validation_vrptw_engine_solve_vrptw_ortools", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/validation/vrptw_engine.py", "source_location": "L437", "weight": 1.0}, {"source": "$graphify-root$_src_validation_vrptw_engine_vrptwengine_validate", "target": "$graphify-root$_src_validation_vrptw_engine_vrptwengine_compute_risk_score", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/validation/vrptw_engine.py", "source_location": "L472", "weight": 1.0}, {"source": "$graphify-root$_src_validation_vrptw_engine_vrptwengine_validate", "target": "vrptwresult", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/validation/vrptw_engine.py", "source_location": "L483", "weight": 1.0}, {"source": "$graphify-root$_src_validation_vrptw_engine_vrptwengine_compute_risk_score", "target": "$graphify-root$_src_validation_vrptw_engine_compute_day_total_minutes", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/validation/vrptw_engine.py", "source_location": "L518", "weight": 1.0}, {"source": "$graphify-root$_src_validation_vrptw_engine_rationale_1", "target": "$graphify-root$_src_validation_vrptw_engine_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/validation/vrptw_engine.py", "source_location": "L1", "weight": 1.0}, {"source": "$graphify-root$_src_validation_vrptw_engine_rationale_56", "target": "$graphify-root$_src_validation_vrptw_engine_timematrix", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/validation/vrptw_engine.py", "source_location": "L56", "weight": 1.0}, {"source": "$graphify-root$_src_validation_vrptw_engine_rationale_60", "target": "$graphify-root$_src_validation_vrptw_engine_timematrix_get_travel_time", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/validation/vrptw_engine.py", "source_location": "L60", "weight": 1.0}, {"source": "$graphify-root$_src_validation_vrptw_engine_rationale_64", "target": "$graphify-root$_src_validation_vrptw_engine_haversinematrix", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/validation/vrptw_engine.py", "source_location": "L64", "weight": 1.0}, {"source": "$graphify-root$_src_validation_vrptw_engine_rationale_92", "target": "$graphify-root$_src_validation_vrptw_engine_cachedroutematrix", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/validation/vrptw_engine.py", "source_location": "L92", "weight": 1.0}, {"source": "$graphify-root$_src_validation_vrptw_engine_rationale_145", "target": "$graphify-root$_src_validation_vrptw_engine_simresult", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/validation/vrptw_engine.py", "source_location": "L145", "weight": 1.0}, {"source": "$graphify-root$_src_validation_vrptw_engine_rationale_161", "target": "$graphify-root$_src_validation_vrptw_engine_simulate_day", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/validation/vrptw_engine.py", "source_location": "L161", "weight": 1.0}, {"source": "$graphify-root$_src_validation_vrptw_engine_rationale_221", "target": "$graphify-root$_src_validation_vrptw_engine_compute_day_total_minutes", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/validation/vrptw_engine.py", "source_location": "L221", "weight": 1.0}, {"source": "$graphify-root$_src_validation_vrptw_engine_rationale_249", "target": "$graphify-root$_src_validation_vrptw_engine_solve_vrptw_ortools", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/validation/vrptw_engine.py", "source_location": "L249", "weight": 1.0}, {"source": "$graphify-root$_src_validation_vrptw_engine_rationale_320", "target": "$graphify-root$_src_validation_vrptw_engine_check_depot_constraints", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/validation/vrptw_engine.py", "source_location": "L320", "weight": 1.0}, {"source": "$graphify-root$_src_validation_vrptw_engine_rationale_379", "target": "$graphify-root$_src_validation_vrptw_engine_vrptwengine", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/validation/vrptw_engine.py", "source_location": "L379", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_src_validation_vrptw_engine_cachedroutematrix_init", "callee": "items", "is_member_call": true, "source_file": "src/validation/vrptw_engine.py", "source_location": "L101", "receiver": "cache"}, {"caller_nid": "$graphify-root$_src_validation_vrptw_engine_cachedroutematrix_init", "callee": "split", "is_member_call": true, "source_file": "src/validation/vrptw_engine.py", "source_location": "L103", "receiver": "raw_key"}, {"caller_nid": "$graphify-root$_src_validation_vrptw_engine_cachedroutematrix_init", "callee": "split", "is_member_call": true, "source_file": "src/validation/vrptw_engine.py", "source_location": "L104", "receiver": "left"}, {"caller_nid": "$graphify-root$_src_validation_vrptw_engine_cachedroutematrix_init", "callee": "split", "is_member_call": true, "source_file": "src/validation/vrptw_engine.py", "source_location": "L105", "receiver": "right"}, {"caller_nid": "$graphify-root$_src_validation_vrptw_engine_cachedroutematrix_from_file", "callee": "load", "is_member_call": true, "source_file": "src/validation/vrptw_engine.py", "source_location": "L114", "receiver": "json"}, {"caller_nid": "$graphify-root$_src_validation_vrptw_engine_cachedroutematrix_from_file", "callee": "f", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "src/validation/vrptw_engine.py", "source_location": "L114"}, {"caller_nid": "$graphify-root$_src_validation_vrptw_engine_cachedroutematrix_from_file", "callee": "cls", "is_member_call": false, "source_file": "src/validation/vrptw_engine.py", "source_location": "L115", "receiver": null}, {"caller_nid": "$graphify-root$_src_validation_vrptw_engine_haversine_m", "callee": "radians", "is_member_call": true, "source_file": "src/validation/vrptw_engine.py", "source_location": "L132", "receiver": "math"}, {"caller_nid": "$graphify-root$_src_validation_vrptw_engine_haversine_m", "callee": "radians", "is_member_call": true, "source_file": "src/validation/vrptw_engine.py", "source_location": "L132", "receiver": "math"}, {"caller_nid": "$graphify-root$_src_validation_vrptw_engine_haversine_m", "callee": "radians", "is_member_call": true, "source_file": "src/validation/vrptw_engine.py", "source_location": "L133", "receiver": "math"}, {"caller_nid": "$graphify-root$_src_validation_vrptw_engine_haversine_m", "callee": "radians", "is_member_call": true, "source_file": "src/validation/vrptw_engine.py", "source_location": "L134", "receiver": "math"}, {"caller_nid": "$graphify-root$_src_validation_vrptw_engine_haversine_m", "callee": "sin", "is_member_call": true, "source_file": "src/validation/vrptw_engine.py", "source_location": "L135", "receiver": "math"}, {"caller_nid": "$graphify-root$_src_validation_vrptw_engine_haversine_m", "callee": "cos", "is_member_call": true, "source_file": "src/validation/vrptw_engine.py", "source_location": "L135", "receiver": "math"}, {"caller_nid": "$graphify-root$_src_validation_vrptw_engine_haversine_m", "callee": "cos", "is_member_call": true, "source_file": "src/validation/vrptw_engine.py", "source_location": "L135", "receiver": "math"}, {"caller_nid": "$graphify-root$_src_validation_vrptw_engine_haversine_m", "callee": "sin", "is_member_call": true, "source_file": "src/validation/vrptw_engine.py", "source_location": "L135", "receiver": "math"}, {"caller_nid": "$graphify-root$_src_validation_vrptw_engine_haversine_m", "callee": "asin", "is_member_call": true, "source_file": "src/validation/vrptw_engine.py", "source_location": "L136", "receiver": "math"}, {"caller_nid": "$graphify-root$_src_validation_vrptw_engine_haversine_m", "callee": "sqrt", "is_member_call": true, "source_file": "src/validation/vrptw_engine.py", "source_location": "L136", "receiver": "math"}, {"caller_nid": "$graphify-root$_src_validation_vrptw_engine_minutes_to_hhmm", "callee": "divmod", "is_member_call": false, "source_file": "src/validation/vrptw_engine.py", "source_location": "L152", "receiver": null}, {"caller_nid": "$graphify-root$_src_validation_vrptw_engine_simulate_day", "callee": "append", "is_member_call": true, "source_file": "src/validation/vrptw_engine.py", "source_location": "L180", "receiver": "deep_dive"}, {"caller_nid": "$graphify-root$_src_validation_vrptw_engine_simulate_day", "callee": "append", "is_member_call": true, "source_file": "src/validation/vrptw_engine.py", "source_location": "L195", "receiver": "deep_dive"}, {"caller_nid": "$graphify-root$_src_validation_vrptw_engine_solve_vrptw_ortools", "callee": "RoutingIndexManager", "is_member_call": true, "source_file": "src/validation/vrptw_engine.py", "source_location": "L259", "receiver": "pywrapcp"}, {"caller_nid": "$graphify-root$_src_validation_vrptw_engine_solve_vrptw_ortools", "callee": "RoutingModel", "is_member_call": true, "source_file": "src/validation/vrptw_engine.py", "source_location": "L260", "receiver": "pywrapcp"}, {"caller_nid": "$graphify-root$_src_validation_vrptw_engine_solve_vrptw_ortools", "callee": "RegisterTransitCallback", "is_member_call": true, "source_file": "src/validation/vrptw_engine.py", "source_location": "L267", "receiver": "routing"}, {"caller_nid": "$graphify-root$_src_validation_vrptw_engine_solve_vrptw_ortools", "callee": "_time_callback", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "src/validation/vrptw_engine.py", "source_location": "L267"}, {"caller_nid": "$graphify-root$_src_validation_vrptw_engine_solve_vrptw_ortools", "callee": "SetArcCostEvaluatorOfAllVehicles", "is_member_call": true, "source_file": "src/validation/vrptw_engine.py", "source_location": "L268", "receiver": "routing"}, {"caller_nid": "$graphify-root$_src_validation_vrptw_engine_solve_vrptw_ortools", "callee": "AddDimension", "is_member_call": true, "source_file": "src/validation/vrptw_engine.py", "source_location": "L272", "receiver": "routing"}, {"caller_nid": "$graphify-root$_src_validation_vrptw_engine_solve_vrptw_ortools", "callee": "GetDimensionOrDie", "is_member_call": true, "source_file": "src/validation/vrptw_engine.py", "source_location": "L279", "receiver": "routing"}, {"caller_nid": "$graphify-root$_src_validation_vrptw_engine_solve_vrptw_ortools", "callee": "NodeToIndex", "is_member_call": true, "source_file": "src/validation/vrptw_engine.py", "source_location": "L282", "receiver": "manager"}, {"caller_nid": "$graphify-root$_src_validation_vrptw_engine_solve_vrptw_ortools", "callee": "SetRange", "is_member_call": true, "source_file": "src/validation/vrptw_engine.py", "source_location": "L285", "receiver": null}, {"caller_nid": "$graphify-root$_src_validation_vrptw_engine_solve_vrptw_ortools", "callee": "CumulVar", "is_member_call": true, "source_file": "src/validation/vrptw_engine.py", "source_location": "L285", "receiver": "time_dim"}, {"caller_nid": "$graphify-root$_src_validation_vrptw_engine_solve_vrptw_ortools", "callee": "DefaultRoutingSearchParameters", "is_member_call": true, "source_file": "src/validation/vrptw_engine.py", "source_location": "L287", "receiver": "pywrapcp"}, {"caller_nid": "$graphify-root$_src_validation_vrptw_engine_solve_vrptw_ortools", "callee": "SolveWithParameters", "is_member_call": true, "source_file": "src/validation/vrptw_engine.py", "source_location": "L293", "receiver": "routing"}, {"caller_nid": "$graphify-root$_src_validation_vrptw_engine_solve_vrptw_ortools", "callee": "Start", "is_member_call": true, "source_file": "src/validation/vrptw_engine.py", "source_location": "L300", "receiver": "routing"}, {"caller_nid": "$graphify-root$_src_validation_vrptw_engine_solve_vrptw_ortools", "callee": "IsEnd", "is_member_call": true, "source_file": "src/validation/vrptw_engine.py", "source_location": "L302", "receiver": "routing"}, {"caller_nid": "$graphify-root$_src_validation_vrptw_engine_solve_vrptw_ortools", "callee": "IndexToNode", "is_member_call": true, "source_file": "src/validation/vrptw_engine.py", "source_location": "L303", "receiver": "manager"}, {"caller_nid": "$graphify-root$_src_validation_vrptw_engine_solve_vrptw_ortools", "callee": "append", "is_member_call": true, "source_file": "src/validation/vrptw_engine.py", "source_location": "L304", "receiver": "route"}, {"caller_nid": "$graphify-root$_src_validation_vrptw_engine_solve_vrptw_ortools", "callee": "Value", "is_member_call": true, "source_file": "src/validation/vrptw_engine.py", "source_location": "L308", "receiver": "solution"}, {"caller_nid": "$graphify-root$_src_validation_vrptw_engine_solve_vrptw_ortools", "callee": "NextVar", "is_member_call": true, "source_file": "src/validation/vrptw_engine.py", "source_location": "L308", "receiver": "routing"}, {"caller_nid": "$graphify-root$_src_validation_vrptw_engine_check_depot_constraints", "callee": "_has_depot", "is_member_call": false, "source_file": "src/validation/vrptw_engine.py", "source_location": "L338", "receiver": null}, {"caller_nid": "$graphify-root$_src_validation_vrptw_engine_check_depot_constraints", "callee": "append", "is_member_call": true, "source_file": "src/validation/vrptw_engine.py", "source_location": "L339", "receiver": "issues"}, {"caller_nid": "$graphify-root$_src_validation_vrptw_engine_check_depot_constraints", "callee": "_has_depot", "is_member_call": false, "source_file": "src/validation/vrptw_engine.py", "source_location": "L347", "receiver": null}, {"caller_nid": "$graphify-root$_src_validation_vrptw_engine_check_depot_constraints", "callee": "append", "is_member_call": true, "source_file": "src/validation/vrptw_engine.py", "source_location": "L348", "receiver": "issues"}, {"caller_nid": "$graphify-root$_src_validation_vrptw_engine_check_depot_constraints", "callee": "_has_depot", "is_member_call": false, "source_file": "src/validation/vrptw_engine.py", "source_location": "L356", "receiver": null}, {"caller_nid": "$graphify-root$_src_validation_vrptw_engine_check_depot_constraints", "callee": "append", "is_member_call": true, "source_file": "src/validation/vrptw_engine.py", "source_location": "L357", "receiver": "issues"}, {"caller_nid": "$graphify-root$_src_validation_vrptw_engine_check_depot_constraints", "callee": "_has_depot", "is_member_call": false, "source_file": "src/validation/vrptw_engine.py", "source_location": "L363", "receiver": null}, {"caller_nid": "$graphify-root$_src_validation_vrptw_engine_check_depot_constraints", "callee": "append", "is_member_call": true, "source_file": "src/validation/vrptw_engine.py", "source_location": "L364", "receiver": "issues"}, {"caller_nid": "$graphify-root$_src_validation_vrptw_engine_vrptwengine_init", "callee": "_ORTOOLS_AVAILABLE", "is_member_call": false, "indirect": true, "context": "assignment", "source_file": "src/validation/vrptw_engine.py", "source_location": "L392"}, {"caller_nid": "$graphify-root$_src_validation_vrptw_engine_vrptwengine_validate", "callee": "extend", "is_member_call": true, "source_file": "src/validation/vrptw_engine.py", "source_location": "L403", "receiver": "deep_dive"}, {"caller_nid": "$graphify-root$_src_validation_vrptw_engine_vrptwengine_validate", "callee": "DEFAULT_START_MINUTES", "is_member_call": false, "indirect": true, "context": "assignment", "source_file": "src/validation/vrptw_engine.py", "source_location": "L407"}, {"caller_nid": "$graphify-root$_src_validation_vrptw_engine_vrptwengine_validate", "callee": "DEFAULT_START_MINUTES", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "src/validation/vrptw_engine.py", "source_location": "L411"}, {"caller_nid": "$graphify-root$_src_validation_vrptw_engine_vrptwengine_validate", "callee": "extend", "is_member_call": true, "source_file": "src/validation/vrptw_engine.py", "source_location": "L416", "receiver": "deep_dive"}, {"caller_nid": "$graphify-root$_src_validation_vrptw_engine_vrptwengine_validate", "callee": "append", "is_member_call": true, "source_file": "src/validation/vrptw_engine.py", "source_location": "L422", "receiver": "deep_dive"}, {"caller_nid": "$graphify-root$_src_validation_vrptw_engine_vrptwengine_validate", "callee": "append", "is_member_call": true, "source_file": "src/validation/vrptw_engine.py", "source_location": "L443", "receiver": "day_comparisons"}, {"caller_nid": "$graphify-root$_src_validation_vrptw_engine_vrptwengine_validate", "callee": "DayRouteComparison", "is_member_call": false, "source_file": "src/validation/vrptw_engine.py", "source_location": "L443", "receiver": null}, {"caller_nid": "$graphify-root$_src_validation_vrptw_engine_vrptwengine_validate", "callee": "append", "is_member_call": true, "source_file": "src/validation/vrptw_engine.py", "source_location": "L460", "receiver": "deep_dive"}, {"caller_nid": "$graphify-root$_src_validation_vrptw_engine_vrptwengine_compute_risk_score", "callee": "DEFAULT_START_MINUTES", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "src/validation/vrptw_engine.py", "source_location": "L519"}]} \ No newline at end of file diff --git a/graphify-out/cache/ast/v0.9.31/fdcd45f1447f5dd20fc2a4e9f6650fc1a7cf3b6654aac46d87b0b2520b9f85e4.json b/graphify-out/cache/ast/v0.9.31/fdcd45f1447f5dd20fc2a4e9f6650fc1a7cf3b6654aac46d87b0b2520b9f85e4.json new file mode 100644 index 0000000..9621232 --- /dev/null +++ b/graphify-out/cache/ast/v0.9.31/fdcd45f1447f5dd20fc2a4e9f6650fc1a7cf3b6654aac46d87b0b2520b9f85e4.json @@ -0,0 +1 @@ +{"nodes": [{"id": "$graphify-root$_phases_0_setup_statistical_report_py", "label": "statistical_report.py", "file_type": "code", "source_file": "phases/0-setup/statistical_report.py", "source_location": "L1"}, {"id": "$graphify-root$_phases_0_setup_statistical_report_pct", "label": "pct()", "file_type": "code", "source_file": "phases/0-setup/statistical_report.py", "source_location": "L37", "_callable": true}, {"id": "$graphify-root$_phases_0_setup_statistical_report_pctile", "label": "pctile()", "file_type": "code", "source_file": "phases/0-setup/statistical_report.py", "source_location": "L40", "_callable": true}, {"id": "$graphify-root$_phases_0_setup_statistical_report_header", "label": "header()", "file_type": "code", "source_file": "phases/0-setup/statistical_report.py", "source_location": "L87", "_callable": true}, {"id": "$graphify-root$_phases_0_setup_statistical_report_rationale_1", "label": "AI \uc5ec\ud589 \ucd94\ucc9c \uc131\ub2a5 \ud1b5\uacc4 \ubd84\uc11d analysis_result.json \uc744 \uc77d\uc5b4 AI \ucd94\ucc9c\uc758 \uad6c\uc870\uc801 \ubb38\uc81c\ub97c \uc815\ub7c9\ud654\ud55c\ub2e4.", "file_type": "rationale", "source_file": "phases/0-setup/statistical_report.py", "source_location": "L1"}], "edges": [{"source": "$graphify-root$_phases_0_setup_statistical_report_py", "target": "json", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "phases/0-setup/statistical_report.py", "source_location": "L5", "weight": 1.0}, {"source": "$graphify-root$_phases_0_setup_statistical_report_py", "target": "math", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "phases/0-setup/statistical_report.py", "source_location": "L6", "weight": 1.0}, {"source": "$graphify-root$_phases_0_setup_statistical_report_py", "target": "statistics", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "phases/0-setup/statistical_report.py", "source_location": "L7", "weight": 1.0}, {"source": "$graphify-root$_phases_0_setup_statistical_report_py", "target": "sys", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "phases/0-setup/statistical_report.py", "source_location": "L8", "weight": 1.0}, {"source": "$graphify-root$_phases_0_setup_statistical_report_py", "target": "pathlib", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "phases/0-setup/statistical_report.py", "source_location": "L9", "weight": 1.0}, {"source": "$graphify-root$_phases_0_setup_statistical_report_py", "target": "collections", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "phases/0-setup/statistical_report.py", "source_location": "L10", "weight": 1.0}, {"source": "$graphify-root$_phases_0_setup_statistical_report_py", "target": "$graphify-root$_phases_0_setup_statistical_report_pct", "relation": "contains", "confidence": "EXTRACTED", "source_file": "phases/0-setup/statistical_report.py", "source_location": "L37", "weight": 1.0}, {"source": "$graphify-root$_phases_0_setup_statistical_report_py", "target": "$graphify-root$_phases_0_setup_statistical_report_pctile", "relation": "contains", "confidence": "EXTRACTED", "source_file": "phases/0-setup/statistical_report.py", "source_location": "L40", "weight": 1.0}, {"source": "$graphify-root$_phases_0_setup_statistical_report_py", "target": "$graphify-root$_phases_0_setup_statistical_report_header", "relation": "contains", "confidence": "EXTRACTED", "source_file": "phases/0-setup/statistical_report.py", "source_location": "L87", "weight": 1.0}, {"source": "$graphify-root$_phases_0_setup_statistical_report_rationale_1", "target": "$graphify-root$_phases_0_setup_statistical_report_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "phases/0-setup/statistical_report.py", "source_location": "L1", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_phases_0_setup_statistical_report_header", "callee": "sep", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "phases/0-setup/statistical_report.py", "source_location": "L90"}]} \ No newline at end of file diff --git a/graphify-out/cache/last_query_stamp b/graphify-out/cache/last_query_stamp new file mode 100644 index 0000000..d431cda --- /dev/null +++ b/graphify-out/cache/last_query_stamp @@ -0,0 +1 @@ +1789203191.2654688 \ No newline at end of file diff --git a/graphify-out/cache/stat-index.json b/graphify-out/cache/stat-index.json new file mode 100644 index 0000000..7b16525 --- /dev/null +++ b/graphify-out/cache/stat-index.json @@ -0,0 +1 @@ +{".codex/hooks.json":{"size":901,"mtime_ns":1785898952005275288,"word_count":82,"hashes":{".codex/hooks.json":"8c3ca9681b2d256e64895bb5cc29a0e4c9c7ab3f1640404744da993c24e32550"}},".github/workflows/ci.yml":{"size":785,"mtime_ns":1780630909494225541,"word_count":85,"hashes":{".github/workflows/ci.yml":"d203e480f677bc4c14c77a10c986fcc8ea2a0282765fcd4ed6f31f8b07f0cf6b"}},".impeccable/critique/2026-05-30T06-32-37Z__src-api-static-index-html.md":{"size":4012,"mtime_ns":1780122757280615535,"word_count":623,"hashes":{".impeccable/critique/2026-05-30t06-32-37z__src-api-static-index-html.md":"0d90e0ad7d10f9c8fc6d4f8c1edff48ed8b5a3e6e5b1e80481bb39fc506758c0"}},".impeccable/critique/2026-05-30T06-43-35Z__src-api-static-index-html.md":{"size":3210,"mtime_ns":1780123415848350885,"word_count":510,"hashes":{".impeccable/critique/2026-05-30t06-43-35z__src-api-static-index-html.md":"80f10c277b7624f5485f98b4fec8f189afa156fab639bc48eef2a10708193a15"}},".impeccable/critique/2026-06-09T16-23-22Z__src-api-static-index-html.md":{"size":5072,"mtime_ns":1781022202041674057,"word_count":777,"hashes":{".impeccable/critique/2026-06-09t16-23-22z__src-api-static-index-html.md":"cc21bfdb74cee1fe4f5fe5b7715d67c7eb7999fbf1249915a65b29dba94a63dc"}},".impeccable/critique/2026-06-09T16-52-59Z__src-api-static-index-html.md":{"size":4283,"mtime_ns":1781023979495552890,"word_count":564,"hashes":{".impeccable/critique/2026-06-09t16-52-59z__src-api-static-index-html.md":"1a4619f9d31421d3e741666a8808be078300e5153ddf6c0eb84c04dfe53a5a73"}},".serena/project.yml":{"size":61,"mtime_ns":1785637323943564412,"word_count":5,"hashes":{".serena/project.yml":"548f15c3bf9a3fc96e852fad5e026015d952a40f4e689ff7616430d6cc7b5314"}},"AGENTS.md":{"size":3974,"mtime_ns":1785898952003512281,"word_count":490,"hashes":{"agents.md":"4ea3c28a7d55d78c692fd35bf63bb0d9a9e3fb85e3e09ea9e8ca04a8eb70d06a"}},"CLAUDE.md":{"size":3979,"mtime_ns":1777520459390385988,"word_count":490,"hashes":{"claude.md":"4b53a5fdc066099b72f586d17b9c3b715eb1aade4d0aa9a45809c90a65732a45"}},"GEMINI.md":{"size":5588,"mtime_ns":1777524503816741681,"word_count":736,"hashes":{"gemini.md":"213bb4d19f8dcdfad0c5ccbfb0ce19e1c4ae9dbc3c121be1d1d5d1cada462406"}},"PRODUCT.md":{"size":2898,"mtime_ns":1780121642942688013,"word_count":426,"hashes":{"product.md":"d4a7ffa92bae49ada971e9f05975cd0dff591c6909e459994f392cb5eb366e03"}},"README.md":{"size":18141,"mtime_ns":1781013588628931807,"word_count":2511,"hashes":{"readme.md":"b5f7f9974cf86f3c91f14071590750d5be5d3e35d39d9b77bf003849f0e4d89e"}},"SUMMARY.md":{"size":35736,"mtime_ns":1778132197598392261,"word_count":2673,"hashes":{"summary.md":"8d9b6d74207184cbc36a956dba4ff3b833fd1e9949437944a337c0a42defd899"}},"api.md":{"size":1728,"mtime_ns":1777715514673590277,"word_count":172,"hashes":{"api.md":"c41821804c10e64135fe62a24a0a5806b93187c0d200f404237c87d0138e1900"}},"data/barrier_free_places.json":{"size":583842,"mtime_ns":1777871166071958080,"word_count":50845,"hashes":{"data/barrier_free_places.json":"22d7f531dff8fc4d5f17095ebfc8ddffbc0ba131fcefe44c51e17cef9ec67738"}},"data/jeju_hours.json":{"size":12024,"mtime_ns":1785587001302524123,"word_count":1367,"hashes":{"data/jeju_hours.json":"430c6b04400fecc36091d3ed6110355672851cb4f75c23c13b09760013f60b72"}},"data/naver/naver_metadata.json":{"size":570601,"mtime_ns":1777472848775867548,"word_count":44822,"hashes":{"data/naver/naver_metadata.json":"34f55b7f7bcd98f2ded56cebb0a0325c269ac72ca00b03657922d85dbeac4517"}},"data/naver/naver_progress.json":{"size":570601,"mtime_ns":1777472848768358587,"word_count":44822,"hashes":{"data/naver/naver_progress.json":"5dc4657a34dced0d6137fbed1fb01d9f4848e8dd3b126765028ad35dbea963c0"}},"data/supabase_migration_congestion.sql":{"size":1774,"mtime_ns":1777516043418635376,"word_count":209,"hashes":{"data/supabase_migration_congestion.sql":"0841a33fae3334025964e290dcba09d333bc8d20b05fa78fafa1c0e4a19bc36d"}},"data/wellness_places.json":{"size":43020,"mtime_ns":1777871146010441360,"word_count":3924,"hashes":{"data/wellness_places.json":"5602e63db75e0d4ab8596368a8c9680690f6669857a68d5f9393219293a7e423"}},"data_construct.md":{"size":6962,"mtime_ns":1785371055323068002,"word_count":847,"hashes":{"data_construct.md":"64cc08da9d377930c34849d167d51240cf87289b9ff4613f3e9eeb4f779bab79"}},"docker-compose.yml":{"size":449,"mtime_ns":1780630909494931784,"word_count":36,"hashes":{"docker-compose.yml":"3c08be6ae484cac1fe94d61ae92c7627fcb2d901f2caeb90007a6d5a80b2309e"}},"docs/ADR.md":{"size":5148,"mtime_ns":1777524250981362621,"word_count":591,"hashes":{"docs/adr.md":"eaee1c03d2d9f854720c2609372e137e9ec920fff607a3ffb8b8e6b13949eb43"}},"docs/ARCHITECTURE.md":{"size":10039,"mtime_ns":1777523474771753946,"word_count":1235,"hashes":{"docs/architecture.md":"75e2fd237ed68ad3fae3d136223c2365fa7f8f10c3167bfeb6e7af0c898da8a9"}},"docs/DATA_COLLECTION.md":{"size":5997,"mtime_ns":1777524464925312953,"word_count":711,"hashes":{"docs/data_collection.md":"4d3f1a0dbb52577e374bd6c87f5c0398022d0ad792d2d40a1f8292829e2dec8b"}},"docs/ENHANCEMENT_PLAN.md":{"size":13723,"mtime_ns":1777524391620629301,"word_count":1832,"hashes":{"docs/enhancement_plan.md":"f7896e2a677141bd8c08eb79353681f9c79e4fb3479526205c033139eba1f634"}},"docs/PRD.md":{"size":5674,"mtime_ns":1777524306578525432,"word_count":756,"hashes":{"docs/prd.md":"c945b57a4cdd9baff70d1e545c499eb480e9bcc11cf20935502ba70182144a60"}},"docs/UI_GUIDE.md":{"size":5315,"mtime_ns":1777524420389598098,"word_count":653,"hashes":{"docs/ui_guide.md":"3232f79089dfbbafd5d8e8e90be38845df47a2fe69066fb58a0137c24b1fa03f"}},"gun/data/kakao_route_cache.json":{"size":8542,"mtime_ns":1777722543919778095,"word_count":402,"hashes":{"gun/data/kakao_route_cache.json":"f30f2d72f97621f7275dd7102477b5083c4f47d7e88d4c0ec1fb6db023c0f719"}},"gun/docs/COLLECTION_GUIDE.md":{"size":7680,"mtime_ns":1777722543920450597,"word_count":1065,"hashes":{"gun/docs/collection_guide.md":"7dc0914c0f22e47cdab5a8d4ed401fbe6f35ab839d93babf2cd256e991c367f1"}},"gun/docs/DESIGN_RECONCILIATION.md":{"size":10769,"mtime_ns":1777722543920618139,"word_count":1395,"hashes":{"gun/docs/design_reconciliation.md":"7da145770f0042aed9e3bd02469e296c2ad10f35424fca9636fbdf7643f74d7a"}},"gun/docs/README.md":{"size":1610,"mtime_ns":1777722543920736722,"word_count":198,"hashes":{"gun/docs/readme.md":"f8302172c453a3eee6d9833fbe3f81bcf1756ac8beb6017ed92ee07e4e37068a"}},"gun/scripts/build_hours_db.py":{"size":35991,"mtime_ns":1777774502375675821,"word_count":2234,"hashes":{"gun/scripts/build_hours_db.py":"8c0bf46d9ea062ee35d3676e1e9130054bdf1a47a46b44385e691c603e8f1954"}},"gun/scripts/build_itinerary_excel.py":{"size":22228,"mtime_ns":1777774502376047611,"word_count":1849,"hashes":{"gun/scripts/build_itinerary_excel.py":"e7477d4a6751d5b8b73957d50ddd92e15872a1517a43cd2c5b4b3db626cf2e99"}},"gun/scripts/build_ppt.js":{"size":82683,"mtime_ns":1777722543921198265,"word_count":10539},"gun/scripts/build_travel_matrix.py":{"size":6679,"mtime_ns":1777722543921413724,"word_count":601,"hashes":{"gun/scripts/build_travel_matrix.py":"6214e09ef0a8a9abacff2ec6a9e7e0ca002d503a5a56ce005c26a6e59f6de5a7"}},"gun/scripts/create_input_template.py":{"size":7955,"mtime_ns":1777722543921626683,"word_count":674,"hashes":{"gun/scripts/create_input_template.py":"22feb272eb4e2fa6ddffb4f0f095a2fa27ad9af2b666d5f77397c3ca7c3f0686"}},"gun/scripts/curated_itineraries.py":{"size":34461,"mtime_ns":1777722543921766100,"word_count":2668,"hashes":{"gun/scripts/curated_itineraries.py":"86e9427e650fb2a467fb8b65ea37600d642a8d96f69d00b481a25699ae861c25"}},"gun/scripts/fetch_google_hours.py":{"size":8479,"mtime_ns":1777725821046097424,"word_count":708,"hashes":{"gun/scripts/fetch_google_hours.py":"62a1600bad85c2df3c9c7fe88f175da8c8214d38b62ce75d10d59f5e84a18582"}},"gun/scripts/fetch_tourapi_to_csv.py":{"size":40810,"mtime_ns":1777722543921929850,"word_count":3443,"hashes":{"gun/scripts/fetch_tourapi_to_csv.py":"39c8836f09762652402a903155e8f873e2d88c24e82f185923cddfbbc0384f52"}},"gun/scripts/inspect_json.py":{"size":6608,"mtime_ns":1777722543922128601,"word_count":640,"hashes":{"gun/scripts/inspect_json.py":"24ce014a6e4284ab10877ff8595735d01d7f820c595a5026c1b9b6e7fcfb18c7"}},"gun/scripts/preprocess_pois.py":{"size":11136,"mtime_ns":1777722543922292893,"word_count":1005,"hashes":{"gun/scripts/preprocess_pois.py":"1cf4b2953f79d03587cb233f060c575183ada7285a12f66cf1245f429bfef9f2"}},"gun/scripts/setup_and_test.py":{"size":2626,"mtime_ns":1777722543922385685,"word_count":241,"hashes":{"gun/scripts/setup_and_test.py":"651d7d4fbc67fb037ee51cee9f0b6685479d63aec7fba9f4f2fb473f7e2e9881"}},"gun/src/__init__.py":{"size":0,"mtime_ns":1777722543922457644,"word_count":0,"hashes":{"gun/src/__init__.py":"0bb2be7d2b7ff58a6bb19492dcd31a3e6152b7cc64e60b871552f18851f61336"}},"gun/src/validation/__init__.py":{"size":0,"mtime_ns":1777722543922543602,"word_count":0,"hashes":{"gun/src/validation/__init__.py":"b44a90018ceb78e047b4587cdd5b1784b241ff87045d4fc33005cf64e52c1db3"}},"gun/tests/__init__.py":{"size":0,"mtime_ns":1777722543922630144,"word_count":0,"hashes":{"gun/tests/__init__.py":"0bf71a6870f836354488c5ab12ae0e5d7568471a30d8f751caae22ac03b3c6a7"}},"package.json":{"size":54,"mtime_ns":1777722543922728728,"word_count":7,"hashes":{"package.json":"07cc7681576c2df22194b42d51211a47c33f22b37e3c0da8b74adb07764f0582"}},"phases/0-setup/analysis_result.json":{"size":45493,"mtime_ns":1777451253562237410,"word_count":3867,"hashes":{"phases/0-setup/analysis_result.json":"45c5b6d4fe137bc9eb1020984802a0e64f92b669beaa63f7b6287364c0bb39ea"}},"phases/0-setup/analyze.py":{"size":17133,"mtime_ns":1777451253562374408,"word_count":1606,"hashes":{"phases/0-setup/analyze.py":"01cbfd23b94cbd533ae354770d90475f7090879eea6324159c4bb235ff7071ee"}},"phases/0-setup/analyze_triple.py":{"size":18882,"mtime_ns":1777451253562494198,"word_count":1820,"hashes":{"phases/0-setup/analyze_triple.py":"746211cf1105bf95334ae8d58345e89cff39469079546d60fa716d745faa3af4"}},"phases/0-setup/cache_route.json":{"size":26160,"mtime_ns":1777451253562775444,"word_count":1238,"hashes":{"phases/0-setup/cache_route.json":"c92ac67e542aafa2269b2617a6acb424940df6f76052f6ec0c79fd8ca01be620"}},"phases/0-setup/index.json":{"size":220,"mtime_ns":1777451253563608391,"word_count":28,"hashes":{"phases/0-setup/index.json":"3a317bcb806cbeece881cf452206342c7fbcb5a687016048b27f2aad59db1bd6"}},"phases/0-setup/statistical_report.json":{"size":6510,"mtime_ns":1777451253563687349,"word_count":611,"hashes":{"phases/0-setup/statistical_report.json":"8a34e5e743cb42a2c0db1e705f56dae893eefd52186d6c989a3cf16eea4cb5d2"}},"phases/0-setup/statistical_report.py":{"size":13457,"mtime_ns":1777451253563792389,"word_count":1214,"hashes":{"phases/0-setup/statistical_report.py":"fdcd45f1447f5dd20fc2a4e9f6650fc1a7cf3b6654aac46d87b0b2520b9f85e4"}},"phases/0-setup/step0.md":{"size":2738,"mtime_ns":1777451253563893929,"word_count":256,"hashes":{"phases/0-setup/step0.md":"253c5045044e04833e5faa7117fb50f1cd83527bf6782443018c92ab9d463ac4"}},"phases/0-setup/step1.md":{"size":9518,"mtime_ns":1777451253564010511,"word_count":859,"hashes":{"phases/0-setup/step1.md":"0a7dde4c5628675d7fe174083a40106670f92c636b20be3c1965871cec061d7d"}},"phases/0-setup/triple_analysis_result.json":{"size":48344,"mtime_ns":1777451253564103760,"word_count":4069,"hashes":{"phases/0-setup/triple_analysis_result.json":"ca69c9cc19b4c2a650f0938c9c0b369844d79c621e6788b3fca81e9f9a1e8a33"}},"phases/0-setup/visualize.py":{"size":6948,"mtime_ns":1777451253564729793,"word_count":661,"hashes":{"phases/0-setup/visualize.py":"432695e40c8fc3be7a00f85d5f15e39a565f748c592825bfdc28e1eac22f3bbf"}},"phases/0-setup/visualize_combined.py":{"size":12852,"mtime_ns":1778043956778001721,"word_count":1198,"hashes":{"phases/0-setup/visualize_combined.py":"2d8e22a201939a2bafec1809a59ad56c137e2b82647dd3b47161e6ca92603bb9"}},"phases/1-data/index.json":{"size":295,"mtime_ns":1777451253565236494,"word_count":36,"hashes":{"phases/1-data/index.json":"eca291eef3e5656b6443e78ae33031b6bc63d85a19f4020d5ce2bfb8877c46f8"}},"phases/1-data/step0.md":{"size":2798,"mtime_ns":1777451253565321076,"word_count":318,"hashes":{"phases/1-data/step0.md":"e5ea0ec026800e6d35540b80a47f922cd6af90a1d62c96f9c793eadbcecb1a70"}},"phases/1-data/step1.md":{"size":3782,"mtime_ns":1777451253565398617,"word_count":368,"hashes":{"phases/1-data/step1.md":"3dc65245c95fd9ff9797048340b49e0e1594e9526b06bbfed69b61ae7cc9846f"}},"phases/1-data/step2.md":{"size":3903,"mtime_ns":1777451253565467866,"word_count":421,"hashes":{"phases/1-data/step2.md":"434366a39381920c53a1853a47ced0591be8bd177549ece29f38131356c4517b"}},"phases/1-data/step3.md":{"size":5105,"mtime_ns":1777451253565549490,"word_count":459,"hashes":{"phases/1-data/step3.md":"2f24ce47f28b019008107b98fa33e460653cf9710b3a322761b56e9af8e5d668"}},"phases/2-matrix/index.json":{"size":158,"mtime_ns":1777451253565660363,"word_count":20,"hashes":{"phases/2-matrix/index.json":"d2186113fc2b3e94b2c47b2c4982f8ebc3aa123d4b97a87689d2e60345cdd252"}},"phases/2-matrix/step0.md":{"size":4246,"mtime_ns":1777451253565728237,"word_count":413,"hashes":{"phases/2-matrix/step0.md":"8b970582db94a91aa842d38c5c0432939a302f56eb0ba8741ae951945c34c305"}},"phases/3-graph/index.json":{"size":287,"mtime_ns":1777451253565820028,"word_count":36,"hashes":{"phases/3-graph/index.json":"188330f39eabb7b1c38b1c971186c8158431bf9ceeb7a7ad9eacff36b9e5ae25"}},"phases/3-graph/step0.md":{"size":3496,"mtime_ns":1777451253565900110,"word_count":368,"hashes":{"phases/3-graph/step0.md":"1b3e1e78418fd7a958cbb9708b877bf136da2c1b195eb1f5dedadf15ffb725dd"}},"phases/3-graph/step1.md":{"size":3649,"mtime_ns":1777451253565973776,"word_count":376,"hashes":{"phases/3-graph/step1.md":"e016451cddb482532295b935e7c480b600401d0418a6cbc9594da529d7b5b2ff"}},"phases/3-graph/step2.md":{"size":2969,"mtime_ns":1777451253566046191,"word_count":316,"hashes":{"phases/3-graph/step2.md":"cf45de8a6d108946ec62da9118806621824ba4424cfa9098a12e2af5f3ff5ebf"}},"phases/4-validation/index.json":{"size":280,"mtime_ns":1777451253566143607,"word_count":36,"hashes":{"phases/4-validation/index.json":"b023f67f479e700b9df7220cc84f591db4130f24706cd725df16093647cd3f9d"}},"phases/4-validation/step0.md":{"size":4422,"mtime_ns":1777451253566208314,"word_count":462,"hashes":{"phases/4-validation/step0.md":"bf6d642c0eec5c799e8812d20a737bfc5862460f80f7c01f2fad700fe83e59bc"}},"phases/4-validation/step1.md":{"size":4254,"mtime_ns":1777451253566283521,"word_count":429,"hashes":{"phases/4-validation/step1.md":"216f3af9787af953e27490b6e48ce28b6496759d9b414f0391567e74158ef358"}},"phases/4-validation/step2.md":{"size":5212,"mtime_ns":1777451253566356354,"word_count":559,"hashes":{"phases/4-validation/step2.md":"d20407494a170bbd1b22c4bd2c132356e27f58cc70835c12422dbd7e5cf77b30"}},"phases/5-explain/index.json":{"size":292,"mtime_ns":1777451253566470185,"word_count":36,"hashes":{"phases/5-explain/index.json":"d6c1ca51e5fc771b8e13e5d5dce2c9a9a717fda347cc5b00e270834e331d4fe7"}},"phases/5-explain/step0.md":{"size":3730,"mtime_ns":1777451253566548934,"word_count":382,"hashes":{"phases/5-explain/step0.md":"643eb0c8947b0c93d807299b657d478741cd965ecf3d6fd1fb8c9d17b92ac59a"}},"phases/5-explain/step1.md":{"size":4291,"mtime_ns":1777451253566627600,"word_count":396,"hashes":{"phases/5-explain/step1.md":"af877f3f64d15695d17ac89eac3b77c851a455f054dc7d394d6eba442b2c474d"}},"phases/5-explain/step2.md":{"size":6251,"mtime_ns":1777451253566710599,"word_count":548,"hashes":{"phases/5-explain/step2.md":"c6388cc22474218a404ff1d69f61335fea749ef01fe8c917c54f623b4eda9853"}},"phases/6-api/index.json":{"size":216,"mtime_ns":1777451253566832472,"word_count":28,"hashes":{"phases/6-api/index.json":"e967e70bdefd006891255bbd5db174c5de09a968652ebb9edd2689aded4f5b19"}},"phases/6-api/step0.md":{"size":4937,"mtime_ns":1777451253566928554,"word_count":390,"hashes":{"phases/6-api/step0.md":"6583ccb91b1084186848fe30f75541c89ae46ea9b9980a253f716744be75a7aa"}},"phases/6-api/step1.md":{"size":5701,"mtime_ns":1777451253567004720,"word_count":560,"hashes":{"phases/6-api/step1.md":"3bf7687bc63bf490152f34d3e3141f3aeab604c10cc6f5cb5f211e6651a6441a"}},"phases/index.json":{"size":497,"mtime_ns":1777523379983558015,"word_count":57,"hashes":{"phases/index.json":"d71c65324a5606f6916c1c86e894546eb5436a91aa4cba5f321f02fd2b3965d6"}},"plan.md":{"size":29088,"mtime_ns":1777799274067425920,"word_count":2815,"hashes":{"plan.md":"97bd119efdb701b6468228b828c6d7fe69e7b65d26415d15f91bb73641fa054f"}},"pyproject.toml":{"size":1007,"mtime_ns":1786589332026793132,"word_count":98,"hashes":{"pyproject.toml":"27ad0975d768033562e94d9a8e572dc7fc7c16032a0ac9c746f5f89e4297eb02"}},"requirements.txt":{"size":452,"mtime_ns":1786853002875934231,"word_count":49,"hashes":{"requirements.txt":"3b81e24ceed57daaaa8aee9311bb547318c940b3a0e7da2ad54147f031749db2"}},"scripts/build_knowledge_graph.py":{"size":11064,"mtime_ns":1785584052306574707,"word_count":923,"hashes":{"scripts/build_knowledge_graph.py":"a54cd9190059c611c8dce01363dfda8f451357b1885d952180e373c1b649dcfa"}},"scripts/build_poi_dataset.py":{"size":3133,"mtime_ns":1777738552472917674,"word_count":256,"hashes":{"scripts/build_poi_dataset.py":"c7d3ca447b831b996c8fb62a4a4ed76d2e6c33051a260b10ed80d19489db1435"}},"scripts/collect_naver_full.py":{"size":24270,"mtime_ns":1777472360586854707,"word_count":2147,"hashes":{"scripts/collect_naver_full.py":"1d3d0b0e2a24fe31b116ad7acb19a4b3f223f5d1c6919444c5e50513ba40f413"}},"scripts/collect_naver_metadata.py":{"size":12179,"mtime_ns":1777456822351481026,"word_count":1058,"hashes":{"scripts/collect_naver_metadata.py":"3a9bd6c7ad75d25b1110fce15de4cb2832f8faaf4fff8e6ef76696702498eb4a"}},"scripts/collect_naver_only.py":{"size":19968,"mtime_ns":1777466784903237542,"word_count":1717,"hashes":{"scripts/collect_naver_only.py":"a240dd183a68608f5686056562433df371a49bf95788ce3f9b7f42212fce2d77"}},"scripts/demo_live_e2e.py":{"size":3088,"mtime_ns":1785585693723218510,"word_count":273,"hashes":{"scripts/demo_live_e2e.py":"94a5004c2d8e1e00fa7ae4f30103103917d240da2e7c76c342998dc36d2be81e"}},"scripts/execute.py":{"size":16360,"mtime_ns":1777451253584151277,"word_count":1338,"hashes":{"scripts/execute.py":"f59929f833fa418dc77a5b258351d6a6aba4284b524f8f0df7d9ffbac0b70c6c"}},"scripts/extract_visitor_stats.py":{"size":6376,"mtime_ns":1777515293761947263,"word_count":541,"hashes":{"scripts/extract_visitor_stats.py":"4cf1c4b0c5291bd340741c3fa44e0f44405c7c547a5d10188761bf1d76c4cf35"}},"scripts/fetch_jeju_hours.py":{"size":2483,"mtime_ns":1785586956137761903,"word_count":251,"hashes":{"scripts/fetch_jeju_hours.py":"197911bb59bc12c7128b036f9780c46be69ce81c37b55778a5a6f2d47a52f40b"}},"scripts/fetch_missing_pois.py":{"size":6273,"mtime_ns":1779312122043491942,"word_count":533,"hashes":{"scripts/fetch_missing_pois.py":"dcb76677107618c486fbfd6c36851965e380035eea5b2ba6219af356123c9ed6"}},"scripts/geocode_jeju_missing_coords.py":{"size":3340,"mtime_ns":1785334245581387135,"word_count":329,"hashes":{"scripts/geocode_jeju_missing_coords.py":"2654b4fea9fb08f631e2a9864c6a8dea8789361be229c10db1d65202bc033fd0"}},"scripts/load_knowledge_graph_neo4j.py":{"size":5938,"mtime_ns":1785583919120050175,"word_count":538,"hashes":{"scripts/load_knowledge_graph_neo4j.py":"caa1ad54c2c0b12774e306037a9557964a2e789ce4aad927bad2453e6758bedf"}},"scripts/neo4j_coverage_analysis.py":{"size":15888,"mtime_ns":1777520076568973863,"word_count":1311,"hashes":{"scripts/neo4j_coverage_analysis.py":"b3274ebc249bbd43ebfbaf6c94a018cf00c634bfc78ff54b6b05eb98109b8f21"}},"scripts/test_execute.py":{"size":21227,"mtime_ns":1777451253584262358,"word_count":1622,"hashes":{"scripts/test_execute.py":"3bfe2cb281217a98711c28f53692ffc22168193beae12b23f0c97df4a0f866fd"}},"scripts/test_pipeline.py":{"size":16326,"mtime_ns":1777735206533104289,"word_count":1453,"hashes":{"scripts/test_pipeline.py":"73da2dca800e902c041726e4a76f0e5458e6998686b640dfeee456a5e1e38df4"}},"src/__init__.py":{"size":0,"mtime_ns":1777451253584333732,"word_count":0,"hashes":{"src/__init__.py":"f2ddc4c32d3ace6eb5786bbe136168ec6286d22339b0c2b5fba5c5411ba3db33"}},"src/api/__init__.py":{"size":0,"mtime_ns":1777816109394578787,"word_count":0,"hashes":{"src/api/__init__.py":"cfcc66c4b0c6cdc64b680f4732791cca779f9666d52f94581cf457b821c9ef8a"}},"src/api/main.py":{"size":3766,"mtime_ns":1785587795130929415,"word_count":314,"hashes":{"src/api/main.py":"1725befc5a5f1c81a222a7385978af4fcaf030ecc866e5781e329cdc102a8315"}},"src/api/router.py":{"size":48358,"mtime_ns":1786783687653695077,"word_count":4380,"hashes":{"src/api/router.py":"1b6e66642d94020eed4e102b2beffcb988b24c4c62d5ba1f0956e1a373a8b250"}},"src/api/schemas.py":{"size":2351,"mtime_ns":1786783667349050119,"word_count":247,"hashes":{"src/api/schemas.py":"7086528e6754f06ea0cdfd2f5caf3899f17a27a890e9f30113e5e215c79944fb"}},"src/api/static/index.html":{"size":245517,"mtime_ns":1786861293229369672,"word_count":14089,"hashes":{"src/api/static/index.html":"bbfb9800b8a7fe3a8c1c4dae48d758f25af1ae4d36e6914a5c36226141a6ebda"}},"src/api/static/manifest.json":{"size":1387,"mtime_ns":1780124687450251357,"word_count":148,"hashes":{"src/api/static/manifest.json":"49889c0f0087e6353e14ea0f69192481591e6cc7e9df229041261395d4068170"}},"src/api/static/service-worker.js":{"size":1349,"mtime_ns":1780124696762896419,"word_count":128},"src/data/__init__.py":{"size":0,"mtime_ns":1777451253584417231,"word_count":0,"hashes":{"src/data/__init__.py":"5aab75a1df3ce4c322908ffe8170a42b246f3383126cff5f9f7629fed9baef8c"}},"src/data/barrier_free_api.py":{"size":8069,"mtime_ns":1777781991111676653,"word_count":676,"hashes":{"src/data/barrier_free_api.py":"48868fed2687a2f94002ad114dbdf582536015f24400c2b4cee54c1f9ff60414"}},"src/data/dwell_db.py":{"size":8586,"mtime_ns":1777451253584501813,"word_count":906,"hashes":{"src/data/dwell_db.py":"f2f82fb7d4e09432e8b04a83a983b4f9aced3d9249e58d9f36558841ac9aa8a6"}},"src/data/graph_retriever.py":{"size":4678,"mtime_ns":1786616520125143920,"word_count":397,"hashes":{"src/data/graph_retriever.py":"0b241600eaf24a807c9bbdaf99de1072b36ed93106e7bdf7ec6dd56972e42cf7"}},"src/data/hours_db.py":{"size":14236,"mtime_ns":1777774502376461859,"word_count":618,"hashes":{"src/data/hours_db.py":"56f4f33322b380c0dd91ac66850c13aa135ce059909117ffba257edda02e61df"}},"src/data/kakao_local.py":{"size":5911,"mtime_ns":1785334192934038414,"word_count":481,"hashes":{"src/data/kakao_local.py":"e6f41625a2ab2c40d1c03c6d87d4dd08f54c38cb277788d42c155b68b3ad26a0"}},"src/data/models.py":{"size":12323,"mtime_ns":1786783617984089668,"word_count":1269,"hashes":{"src/data/models.py":"f58d648f7d654e139b8981865f151ded76f0abe21e2d09b1dec2eb3f39771dc7"}},"src/data/party_config.py":{"size":1567,"mtime_ns":1777721907795654717,"word_count":146,"hashes":{"src/data/party_config.py":"3f270df90a3e3fee4caf266a91c83ad685240a6e0402cae96e0758a07a89a079"}},"src/data/region_config.py":{"size":3934,"mtime_ns":1777718481390864291,"word_count":320,"hashes":{"src/data/region_config.py":"b455e0d85674b0ac7990f236708d68ab16026bdb66cc972478dcd97863867932"}},"src/data/restaurant_catalog.py":{"size":2557,"mtime_ns":1786616398485766423,"word_count":226,"hashes":{"src/data/restaurant_catalog.py":"c6a1439abb298710266bf3f026fda27743a6aa0606c227edf47b45d4b4dbbe5b"}},"src/data/seoul_citydata_client.py":{"size":7071,"mtime_ns":1777523278371401393,"word_count":573,"hashes":{"src/data/seoul_citydata_client.py":"6bfe909c3cb46e05bb4831cf9bb32532e16fc50e4417204846a09bde95a514b4"}},"src/data/theme_taxonomy.py":{"size":6661,"mtime_ns":1777451253584637395,"word_count":598,"hashes":{"src/data/theme_taxonomy.py":"77a1d82310031c8c205fa05e8c15c3f0ed4a03d86a793af72917c43dfe6e48ee"}},"src/data/tour_api.py":{"size":5351,"mtime_ns":1777785284939497405,"word_count":446,"hashes":{"src/data/tour_api.py":"4ce63ec57dd4b7954fbf9fcfb160d38f6ebc5cda477b2b38124b88774a785215"}},"src/data/wellness_api.py":{"size":4229,"mtime_ns":1777869280292773430,"word_count":376,"hashes":{"src/data/wellness_api.py":"761476ae9d54730d0d583bff8af9a3a883c614698c0da15ae346c1b28e65827c"}},"src/explain/__init__.py":{"size":0,"mtime_ns":1777738407096040425,"word_count":0,"hashes":{"src/explain/__init__.py":"aebd9818bb704e3273f3ae2f096c24bbe8bc876e0edd6356fd016d0f6fb2ceac"}},"src/explain/explain_engine.py":{"size":23156,"mtime_ns":1786779975226671912,"word_count":1992,"hashes":{"src/explain/explain_engine.py":"1d132817dbc4971166d49423ee3dc87b14ba552ac4ed2305ec58514a78f3bdce"}},"src/explain/pipeline.py":{"size":17651,"mtime_ns":1786851619871097940,"word_count":1225,"hashes":{"src/explain/pipeline.py":"f50f70785c6271e4491a7a11522d57a9f692e307cfe5262e21fd624e12c72369"}},"src/explain/plan_extractor.py":{"size":8090,"mtime_ns":1786862653144251907,"word_count":719,"hashes":{"src/explain/plan_extractor.py":"40cae72ace465a5261dbc7a1ac187774c9b94a51431b9d41e21378f5dc85c9db"}},"src/explain/repair.py":{"size":10326,"mtime_ns":1786861266770538426,"word_count":999,"hashes":{"src/explain/repair.py":"5ed35d743092b779903182e43b86595b741787d48fdafb1ea76ec52758e39ffd"}},"src/matrix/__init__.py":{"size":141,"mtime_ns":1777718449740316301,"word_count":13,"hashes":{"src/matrix/__init__.py":"ce4f4206546db46e7aaaf2dd45659f5f585f86f2b43888646fda099d9bf1adb5"}},"src/matrix/redis_matrix.py":{"size":5237,"mtime_ns":1777718852132281000,"word_count":409,"hashes":{"src/matrix/redis_matrix.py":"cc736d76033e07fac230fbd5c99f992c33f3ad0a25c95689d7ab5a297a6b8940"}},"src/scoring/__init__.py":{"size":296,"mtime_ns":1777451253584732560,"word_count":36,"hashes":{"src/scoring/__init__.py":"33c5fb364c349fc3e085e6093090a51ca7d2b4ff2f0a3c46660d9944971647f6"}},"src/scoring/bonus_engine.py":{"size":4854,"mtime_ns":1786783637731264872,"word_count":380,"hashes":{"src/scoring/bonus_engine.py":"25b87debaeb3bd26e7968184f701deca25d00a7b765386a316ecc91323be3864"}},"src/scoring/cluster_dispersion.py":{"size":10816,"mtime_ns":1777738403795307957,"word_count":1000,"hashes":{"src/scoring/cluster_dispersion.py":"0e029402dc8b67f8514efa39e6f8efe1efa36f919e25b1a344763825384eb623"}},"src/scoring/congestion_engine.py":{"size":8268,"mtime_ns":1777523358998648153,"word_count":681,"hashes":{"src/scoring/congestion_engine.py":"dcc67140df0396e3e5c3337dc9ae1631b2fce2ab2c8a7d76dca2f2bc4b7eacc1"}},"src/scoring/reward_engine.py":{"size":2501,"mtime_ns":1777718876992598807,"word_count":246,"hashes":{"src/scoring/reward_engine.py":"577457af325961efe8606b411406ebbd8a22aa9edffa9cbe0813e193b65a022a"}},"src/scoring/theme_alignment.py":{"size":10505,"mtime_ns":1786779975228786467,"word_count":941,"hashes":{"src/scoring/theme_alignment.py":"d879a3ae59268bc118f5e88cc666fecbcde6a6be901dbd05cb5306830eaaf534"}},"src/scoring/travel_ratio.py":{"size":3924,"mtime_ns":1777451253584926308,"word_count":371,"hashes":{"src/scoring/travel_ratio.py":"8eda4ee5e0635eaecbd4bbed862043f08605b1ca7da57bf076a16dc7e03a163b"}},"src/utils/__init__.py":{"size":0,"mtime_ns":1777731460264655726,"word_count":0,"hashes":{"src/utils/__init__.py":"e0f516a85c8039f189c4e8c728cc8d7c2fa4cb6aed920648ac261cd1ba909e03"}},"src/utils/geo.py":{"size":2859,"mtime_ns":1777731462310334008,"word_count":322,"hashes":{"src/utils/geo.py":"cdd822b431df58c4227138afaee87957fd97fad329839c82e40657ca255f04fd"}},"src/validation/__init__.py":{"size":0,"mtime_ns":1777451253585002723,"word_count":0,"hashes":{"src/validation/__init__.py":"d28e1c146ae48649d1ee4632184814b817efc9f4c39cbc4d6f87ac1b903318dd"}},"src/validation/alternatives.py":{"size":4423,"mtime_ns":1777828486944011198,"word_count":423,"hashes":{"src/validation/alternatives.py":"ec0107a9398d08e7471ca703ad6d216d17fd73c2b0dcbc405920d97ea761f9fc"}},"src/validation/hard_fail.py":{"size":8188,"mtime_ns":1786616520125523089,"word_count":686,"hashes":{"src/validation/hard_fail.py":"8b3032d9dea8254432ec455666d0463fd63eb4303321b497da5f465c547305d3"}},"src/validation/kakao_matrix.py":{"size":13101,"mtime_ns":1777718149849641691,"word_count":1026,"hashes":{"src/validation/kakao_matrix.py":"e6df9426218af420db0d9ef2a46f9ef03340443dcb54ff3155dc8e4f2e8c106c"}},"src/validation/scoring.py":{"size":6331,"mtime_ns":1777828448731181119,"word_count":664,"hashes":{"src/validation/scoring.py":"7c4022492eb3f45817366b08c7ef494df640d8ff944f25fd488cefd39cc26494"}},"src/validation/vrptw_engine.py":{"size":20507,"mtime_ns":1777473547114597665,"word_count":1802,"hashes":{"src/validation/vrptw_engine.py":"f6481579f778d33a4fdf464e064d8a6dcc309eef6619ab1060b87ffd4e191b15"}},"src/validation/warning.py":{"size":10586,"mtime_ns":1785639470571704769,"word_count":970,"hashes":{"src/validation/warning.py":"ea470fb1c90053b2da4907392405eba55185b81ac8687ee88b8934e7062ded15"}},"tests/__init__.py":{"size":0,"mtime_ns":1777451253585277469,"word_count":0,"hashes":{"tests/__init__.py":"9766508e5a013c3d3cbb2602719391199e90af5720c9782a77ca71565aa346b1"}},"tests/conftest.py":{"size":487,"mtime_ns":1786780450982917704,"word_count":41,"hashes":{"tests/conftest.py":"628d5b140ba73e0ac171019edf66e9eeadbd5f222f25ab5a0f211077bba5fd8c"}},"tests/test_alternatives.py":{"size":4858,"mtime_ns":1777828575824590582,"word_count":413,"hashes":{"tests/test_alternatives.py":"a9814e97969c079ec6c71dd016718fe79a944e2a4531fbdef907d3d0e7722132"}},"tests/test_bonus_engine.py":{"size":10132,"mtime_ns":1786783575554457563,"word_count":765,"hashes":{"tests/test_bonus_engine.py":"bc1d1b8d4443a45922e2152d306b6157ddbd9db8bbf19013cf5c4786368363d9"}},"tests/test_cluster_dispersion.py":{"size":6124,"mtime_ns":1777521944144603355,"word_count":558,"hashes":{"tests/test_cluster_dispersion.py":"c9488ccdf6a6a86610a112cb0547d095e2605beae3c248776c39209c65b4f49b"}},"tests/test_congestion_engine.py":{"size":6723,"mtime_ns":1777516006302043155,"word_count":448,"hashes":{"tests/test_congestion_engine.py":"6ba9d73a3e4386f30c3770c8d83341da973abf28ca1b9ac1da089635100c26b5"}},"tests/test_dwell_db.py":{"size":2288,"mtime_ns":1777451253585397051,"word_count":181,"hashes":{"tests/test_dwell_db.py":"a192d8c1d4f0ddbdc8cfad73aa1fef23209222b51a27624e1176b9cf7e4b4f64"}},"tests/test_estimated_hardfail.py":{"size":1940,"mtime_ns":1780630909497777045,"word_count":172,"hashes":{"tests/test_estimated_hardfail.py":"a546b170d2ad6bcb524c3b8763e0befd263cd7904ebb3e6fb501f36d8144fd48"}},"tests/test_explain_engine.py":{"size":21962,"mtime_ns":1785640352098022616,"word_count":1688,"hashes":{"tests/test_explain_engine.py":"c55543abeef8e54ee00023c4a3b962bbe6db55fb6110bac1ec5f2dcadf0240ac"}},"tests/test_geo.py":{"size":5878,"mtime_ns":1777736842624419383,"word_count":552,"hashes":{"tests/test_geo.py":"1e0a4400d4c40571f12397f91204c85fb20002f4ea632b4cd4750fa6ab0613e8"}},"tests/test_graph_retriever.py":{"size":4176,"mtime_ns":1786616520125693590,"word_count":268,"hashes":{"tests/test_graph_retriever.py":"74d131e431371f16377a6da34770d1d197feeeec9ac3844a45880393e39e0778"}},"tests/test_hard_fail.py":{"size":9338,"mtime_ns":1786616520125842632,"word_count":838,"hashes":{"tests/test_hard_fail.py":"a43ed21d165c464c5dbbf231443a8ed295ffb25d9039a0f391edb24120b4dafa"}},"tests/test_kakao_local.py":{"size":5564,"mtime_ns":1785334170304581136,"word_count":422,"hashes":{"tests/test_kakao_local.py":"663fefeaf89c8d280cc0f6fec74689e5b7151a7c3f66c3b5423d55f303da6cc4"}},"tests/test_kakao_matrix.py":{"size":9152,"mtime_ns":1777718270630216343,"word_count":664,"hashes":{"tests/test_kakao_matrix.py":"cbcedc6fa0fe399384ca41bf750a73abb2a764fb459d59b3e554690902595190"}},"tests/test_party_config.py":{"size":3305,"mtime_ns":1777722533600411358,"word_count":205,"hashes":{"tests/test_party_config.py":"a0678437010cb016ecdc5d16b9c9c58e237868b44f76a02cf7cfd015c033dd87"}},"tests/test_pipeline_orchestrator.py":{"size":16391,"mtime_ns":1786851429337339749,"word_count":1193,"hashes":{"tests/test_pipeline_orchestrator.py":"ad1d63af2a7ba70861b2e237e4b0492e85fcfc8f5647e123d0619502c39c7964"}},"tests/test_plan_extractor.py":{"size":4149,"mtime_ns":1786862644008612432,"word_count":267,"hashes":{"tests/test_plan_extractor.py":"c99aa95f1b05dac935f12799c24b8d471a5fb159f68eb75ed0aad642e997a0a2"}},"tests/test_region_config.py":{"size":1323,"mtime_ns":1777718962185175923,"word_count":76,"hashes":{"tests/test_region_config.py":"ef103c9e60e513d31184619cc642392b827076a5f855a1a23eededc4d9efd764"}},"tests/test_repair.py":{"size":9429,"mtime_ns":1786861255059269134,"word_count":757,"hashes":{"tests/test_repair.py":"3873598f4c623dc9fc625fdb2a5f14a8a89bb8d637bce5a39dba49eede4971f2"}},"tests/test_resolve_poi.py":{"size":5889,"mtime_ns":1786783594630138790,"word_count":421,"hashes":{"tests/test_resolve_poi.py":"8bd45a30f857e7c8af8cfca512444e80df8ef9bdfd961b6a9769a622895022dc"}},"tests/test_restaurant_catalog.py":{"size":1126,"mtime_ns":1786616467294536078,"word_count":104,"hashes":{"tests/test_restaurant_catalog.py":"2c7301f16aafa872f7322bd07d375751d63e9748859fbe253ad73eb92b79cb8f"}},"tests/test_reward_engine.py":{"size":3323,"mtime_ns":1777718976861340234,"word_count":215,"hashes":{"tests/test_reward_engine.py":"2c496b5d9432610f4d41952bb0bc8cf11f33d56daf69c3b30c0ec6f14a0883ad"}},"tests/test_scoring.py":{"size":8301,"mtime_ns":1777736815905397750,"word_count":709,"hashes":{"tests/test_scoring.py":"154143336bbb3e22546331f2d0c4ddfea8b7f8e31e92b6227a886f049a701e18"}},"tests/test_theme_alignment.py":{"size":5008,"mtime_ns":1777451253585484341,"word_count":386,"hashes":{"tests/test_theme_alignment.py":"9a1ec4ecf6809dfe35da7c584406986fe24ede1abff95ab5f0710044c3c5e94d"}},"tests/test_theme_taxonomy.py":{"size":2254,"mtime_ns":1777451253585555507,"word_count":160,"hashes":{"tests/test_theme_taxonomy.py":"5ad98c3354886a91442dbf0a4bb27533eed14ca91a1e477cd5341a02d9892c45"}},"tests/test_travel_ratio.py":{"size":2117,"mtime_ns":1777451253585615965,"word_count":181,"hashes":{"tests/test_travel_ratio.py":"e02744d06cc9ad7bfd17c0b4373df8fa368ff97ee387aef62c7a4bc8b6e4f41c"}},"tests/test_vrptw_engine.py":{"size":18271,"mtime_ns":1777451253585699047,"word_count":1466,"hashes":{"tests/test_vrptw_engine.py":"c7b785c4eeb6cd80fb8ef2cdbcba02265a18cd641e3e91bb098108575e736aeb"}},"tests/test_warning.py":{"size":11321,"mtime_ns":1785639582983330915,"word_count":1060,"hashes":{"tests/test_warning.py":"45bb07bdbd7ee60c56a8439aaf8c4eed6706302b9378076b37292fc21b73ae9d"}}} \ No newline at end of file diff --git a/graphify-out/graph.json b/graphify-out/graph.json new file mode 100644 index 0000000..46be564 --- /dev/null +++ b/graphify-out/graph.json @@ -0,0 +1,64478 @@ +{ + "nodes": [ + { + "id": "gun_scripts_build_hours_db", + "label": "build_hours_db.py", + "file_type": "code", + "source_file": "gun/scripts/build_hours_db.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "gun_scripts_build_hours_db_match_sub_category", + "label": "match_sub_category()", + "file_type": "code", + "source_file": "gun/scripts/build_hours_db.py", + "source_location": "L403", + "_origin": "ast" + }, + { + "id": "gun_scripts_build_hours_db_confidence", + "label": "confidence()", + "file_type": "code", + "source_file": "gun/scripts/build_hours_db.py", + "source_location": "L428", + "_origin": "ast" + }, + { + "id": "gun_scripts_build_hours_db_build_place_hours_xlsx", + "label": "build_place_hours_xlsx()", + "file_type": "code", + "source_file": "gun/scripts/build_hours_db.py", + "source_location": "L442", + "_origin": "ast" + }, + { + "id": "counter", + "label": "Counter", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast" + }, + { + "id": "gun_scripts_build_hours_db_build_category_std_xlsx", + "label": "build_category_std_xlsx()", + "file_type": "code", + "source_file": "gun/scripts/build_hours_db.py", + "source_location": "L543", + "_origin": "ast" + }, + { + "id": "gun_scripts_build_hours_db_build_hours_db_py", + "label": "build_hours_db_py()", + "file_type": "code", + "source_file": "gun/scripts/build_hours_db.py", + "source_location": "L605", + "_origin": "ast" + }, + { + "id": "gun_scripts_build_hours_db_main", + "label": "main()", + "file_type": "code", + "source_file": "gun/scripts/build_hours_db.py", + "source_location": "L700", + "_origin": "ast" + }, + { + "id": "gun_scripts_build_hours_db_rationale_1", + "label": "322\uac1c \uc7a5\uc18c \uc6b4\uc601\uc2dc\uac04 baseline + \uce74\ud14c\uace0\ub9ac \ud45c\uc900\uac12 \uc138\ud305. \uc0b0\ucd9c\ubb3c: 1. gun/data/place_hours_322.xlsx \u2014\u2026", + "file_type": "rationale", + "source_file": "gun/scripts/build_hours_db.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "gun_scripts_build_hours_db_rationale_404", + "label": "\uc774\ub984 + \uce74\ud14c\uace0\ub9ac\ud78c\ud2b8\ub85c sub_category \uacb0\uc815.", + "file_type": "rationale", + "source_file": "gun/scripts/build_hours_db.py", + "source_location": "L404", + "_origin": "ast" + }, + { + "id": "gun_scripts_build_hours_db_rationale_429", + "label": "\ub9e4\uce6d \ud655\uc2e0\ub3c4 \u2014 \ud6c4\uc18d \uac80\uc0c9 \uc6b0\uc120\uc21c\uc704 \uacb0\uc815.", + "file_type": "rationale", + "source_file": "gun/scripts/build_hours_db.py", + "source_location": "L429", + "_origin": "ast" + }, + { + "id": "gun_scripts_build_itinerary_excel", + "label": "build_itinerary_excel.py", + "file_type": "code", + "source_file": "gun/scripts/build_itinerary_excel.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "gun_scripts_build_itinerary_excel_parse_weekday", + "label": "parse_weekday()", + "file_type": "code", + "source_file": "gun/scripts/build_itinerary_excel.py", + "source_location": "L99", + "_origin": "ast" + }, + { + "id": "gun_scripts_build_itinerary_excel_minutes_to_hhmm", + "label": "minutes_to_hhmm()", + "file_type": "code", + "source_file": "gun/scripts/build_itinerary_excel.py", + "source_location": "L109", + "_origin": "ast" + }, + { + "id": "gun_scripts_build_itinerary_excel_check_hours_violations", + "label": "check_hours_violations()", + "file_type": "code", + "source_file": "gun/scripts/build_itinerary_excel.py", + "source_location": "L115", + "_origin": "ast" + }, + { + "id": "gun_scripts_build_itinerary_excel_poimatcher", + "label": "POIMatcher", + "file_type": "code", + "source_file": "gun/scripts/build_itinerary_excel.py", + "source_location": "L161", + "_origin": "ast" + }, + { + "id": "gun_scripts_build_itinerary_excel_poimatcher_init", + "label": ".__init__()", + "file_type": "code", + "source_file": "gun/scripts/build_itinerary_excel.py", + "source_location": "L164", + "_origin": "ast" + }, + { + "id": "gun_scripts_build_itinerary_excel_py_path", + "label": "Path", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast" + }, + { + "id": "gun_scripts_build_itinerary_excel_poimatcher_match", + "label": ".match()", + "file_type": "code", + "source_file": "gun/scripts/build_itinerary_excel.py", + "source_location": "L179", + "_origin": "ast" + }, + { + "id": "gun_scripts_build_itinerary_excel_poimatcher_row_to_dict", + "label": "._row_to_dict()", + "file_type": "code", + "source_file": "gun/scripts/build_itinerary_excel.py", + "source_location": "L203", + "_origin": "ast" + }, + { + "id": "gun_scripts_build_itinerary_excel_py_any", + "label": "Any", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast" + }, + { + "id": "gun_scripts_build_itinerary_excel_to_vrptw_place", + "label": "_to_vrptw_place()", + "file_type": "code", + "source_file": "gun/scripts/build_itinerary_excel.py", + "source_location": "L219", + "_origin": "ast" + }, + { + "id": "gun_scripts_build_itinerary_excel_process_one_day", + "label": "process_one_day()", + "file_type": "code", + "source_file": "gun/scripts/build_itinerary_excel.py", + "source_location": "L237", + "_origin": "ast" + }, + { + "id": "gun_scripts_build_itinerary_excel_main", + "label": "main()", + "file_type": "code", + "source_file": "gun/scripts/build_itinerary_excel.py", + "source_location": "L356", + "_origin": "ast" + }, + { + "id": "gun_scripts_build_itinerary_excel_rationale_1", + "label": "\ucd94\ucc9c \uc77c\uc815 \u2192 \ub9e4\uce6d \u2192 \uc2dc\uac04 \uacc4\uc0b0 \u2192 Excel \ucd9c\ub825 \ud30c\uc774\ud504\ub77c\uc778\u2026", + "file_type": "rationale", + "source_file": "gun/scripts/build_itinerary_excel.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "gun_scripts_build_itinerary_excel_rationale_100", + "label": "2025-05-01' \u2192 0(\uc6d4)~6(\uc77c). \ud30c\uc2f1 \uc2e4\ud328 \uc2dc None.", + "file_type": "rationale", + "source_file": "gun/scripts/build_itinerary_excel.py", + "source_location": "L100", + "_origin": "ast" + }, + { + "id": "gun_scripts_build_itinerary_excel_rationale_110", + "label": "\ubd84 \ub2e8\uc704 \u2192 'HH:MM' (\uc74c\uc218/24\uc2dc\uac04 \ucd08\uacfc\ub294 \uadf8\ub300\ub85c \ud45c\uae30).", + "file_type": "rationale", + "source_file": "gun/scripts/build_itinerary_excel.py", + "source_location": "L110", + "_origin": "ast" + }, + { + "id": "gun_scripts_build_itinerary_excel_rationale_121", + "label": "\uc6b4\uc601\uc2dc\uac04 \uc704\ubc18 \uac80\uc0ac \u2192 (\uc704\ubc18 \ubaa9\ub85d, \ud328\ub110\ud2f0 \ud569\uacc4).", + "file_type": "rationale", + "source_file": "gun/scripts/build_itinerary_excel.py", + "source_location": "L121", + "_origin": "ast" + }, + { + "id": "gun_scripts_build_itinerary_excel_rationale_162", + "label": "pois_processed.csv \uae30\ubc18 \uc774\ub984 \ub9e4\uce6d \u2014 \uc815\ud655/\ubd80\ubd84 \uc77c\uce58.", + "file_type": "rationale", + "source_file": "gun/scripts/build_itinerary_excel.py", + "source_location": "L162", + "_origin": "ast" + }, + { + "id": "gun_scripts_build_itinerary_excel_rationale_180", + "label": "\uc774\ub984\uc73c\ub85c \ub9e4\uce6d. \uc2dc\ub3c4/\uc2dc\uad70\uad6c\ub294 \ubd80\ubd84 \ub9e4\uce6d \uc2dc \ud6c4\ubcf4 \uc881\ud788\uae30.", + "file_type": "rationale", + "source_file": "gun/scripts/build_itinerary_excel.py", + "source_location": "L180", + "_origin": "ast" + }, + { + "id": "gun_scripts_build_itinerary_excel_rationale_220", + "label": "\ub9e4\uce6d\ub41c row \u2192 VRPTWPlace \ubcc0\ud658. \uc88c\ud45c \uc5c6\uc73c\uba74 None. \uc6b4\uc601\uc2dc\uac04\uc740 hours_db.resolve_hours() \uacb0\uacfc\ub97c \uc0ac\uc6a9.", + "file_type": "rationale", + "source_file": "gun/scripts/build_itinerary_excel.py", + "source_location": "L220", + "_origin": "ast" + }, + { + "id": "gun_scripts_build_itinerary_excel_rationale_241", + "label": "\ud55c day(\uac19\uc740 plan_id+day)\uc758 row\ub4e4\uc5d0 \uc774\ub3d9\uc2dc\uac04\u00b7\uc6b4\uc601\uc2dc\uac04 \uc704\ubc18\u00b7\ud328\ub110\ud2f0 \ucc44\uc6b0\uae30.", + "file_type": "rationale", + "source_file": "gun/scripts/build_itinerary_excel.py", + "source_location": "L241", + "_origin": "ast" + }, + { + "id": "gun_scripts_build_ppt", + "label": "build_ppt.js", + "file_type": "code", + "source_file": "gun/scripts/build_ppt.js", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "gun_scripts_build_ppt_pptxgen", + "label": "pptxgen", + "file_type": "code", + "source_file": "gun/scripts/build_ppt.js", + "source_location": "L17", + "_origin": "ast" + }, + { + "id": "gun_scripts_build_ppt_path", + "label": "path", + "file_type": "code", + "source_file": "gun/scripts/build_ppt.js", + "source_location": "L18", + "_origin": "ast" + }, + { + "id": "gun_scripts_build_ppt_pres", + "label": "pres", + "file_type": "code", + "source_file": "gun/scripts/build_ppt.js", + "source_location": "L43", + "_origin": "ast" + }, + { + "id": "gun_scripts_build_ppt_addpageheader", + "label": "addPageHeader()", + "file_type": "code", + "source_file": "gun/scripts/build_ppt.js", + "source_location": "L54", + "_origin": "ast" + }, + { + "id": "gun_scripts_build_ppt_addtitle", + "label": "addTitle()", + "file_type": "code", + "source_file": "gun/scripts/build_ppt.js", + "source_location": "L69", + "_origin": "ast" + }, + { + "id": "gun_scripts_build_ppt_addfooter", + "label": "addFooter()", + "file_type": "code", + "source_file": "gun/scripts/build_ppt.js", + "source_location": "L82", + "_origin": "ast" + }, + { + "id": "gun_scripts_build_ppt_addcard", + "label": "addCard()", + "file_type": "code", + "source_file": "gun/scripts/build_ppt.js", + "source_location": "L94", + "_origin": "ast" + }, + { + "id": "gun_scripts_build_ppt_addstat", + "label": "addStat()", + "file_type": "code", + "source_file": "gun/scripts/build_ppt.js", + "source_location": "L112", + "_origin": "ast" + }, + { + "id": "gun_scripts_build_ppt_addnumberchip", + "label": "addNumberChip()", + "file_type": "code", + "source_file": "gun/scripts/build_ppt.js", + "source_location": "L126", + "_origin": "ast" + }, + { + "id": "gun_scripts_build_ppt_output", + "label": "OUTPUT", + "file_type": "code", + "source_file": "gun/scripts/build_ppt.js", + "source_location": "L1656", + "_origin": "ast" + }, + { + "id": "gun_scripts_build_travel_matrix", + "label": "build_travel_matrix.py", + "file_type": "code", + "source_file": "gun/scripts/build_travel_matrix.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "gun_scripts_build_travel_matrix_resolve_base_dir", + "label": "_resolve_base_dir()", + "file_type": "code", + "source_file": "gun/scripts/build_travel_matrix.py", + "source_location": "L43", + "_origin": "ast" + }, + { + "id": "gun_scripts_build_travel_matrix_py_path", + "label": "Path", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast" + }, + { + "id": "gun_scripts_build_travel_matrix_load_pois", + "label": "load_pois()", + "file_type": "code", + "source_file": "gun/scripts/build_travel_matrix.py", + "source_location": "L55", + "_origin": "ast" + }, + { + "id": "gun_scripts_build_travel_matrix_build_matrix", + "label": "build_matrix()", + "file_type": "code", + "source_file": "gun/scripts/build_travel_matrix.py", + "source_location": "L83", + "_origin": "ast" + }, + { + "id": "gun_scripts_build_travel_matrix_main", + "label": "main()", + "file_type": "code", + "source_file": "gun/scripts/build_travel_matrix.py", + "source_location": "L122", + "_origin": "ast" + }, + { + "id": "gun_scripts_build_travel_matrix_rationale_1", + "label": "POI CSV \u2192 \uce74\uce74\uc624 \ubaa8\ube4c\ub9ac\ud2f0 N\u00d7N \uc774\ub3d9\uc2dc\uac04 \ud589\ub82c \uc0ac\uc804 \ube4c\ub4dc. \uac80\uc99d \uc2dc \ub9e4\ubc88 API\ub97c \ud638\ucd9c\ud558\uba74 \ub290\ub9ac\uace0 \ud55c\ub3c4 \ubd80\ub2f4. \uc790\uc8fc \uc4f0\ub294 POI\u2026", + "file_type": "rationale", + "source_file": "gun/scripts/build_travel_matrix.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "gun_scripts_build_travel_matrix_rationale_62", + "label": "CSV \uc77d\uc5b4 \uc88c\ud45c \uc720\ud6a8\ud55c POI \ub9ac\uc2a4\ud2b8\ub85c \ubc18\ud658.", + "file_type": "rationale", + "source_file": "gun/scripts/build_travel_matrix.py", + "source_location": "L62", + "_origin": "ast" + }, + { + "id": "gun_scripts_build_travel_matrix_rationale_88", + "label": "N\u00d7N \ud398\uc5b4\uc640\uc774\uc988 \ud638\ucd9c (\ub300\uac01\uc120 \uc81c\uc678, \uc591\ubc29\ud5a5 \uce90\uc2dc \ud65c\uc6a9).", + "file_type": "rationale", + "source_file": "gun/scripts/build_travel_matrix.py", + "source_location": "L88", + "_origin": "ast" + }, + { + "id": "gun_scripts_create_input_template", + "label": "create_input_template.py", + "file_type": "code", + "source_file": "gun/scripts/create_input_template.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "gun_scripts_create_input_template_make_workbook", + "label": "make_workbook()", + "file_type": "code", + "source_file": "gun/scripts/create_input_template.py", + "source_location": "L57", + "_origin": "ast" + }, + { + "id": "gun_scripts_create_input_template_py_workbook", + "label": "Workbook", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast" + }, + { + "id": "gun_scripts_create_input_template_main", + "label": "main()", + "file_type": "code", + "source_file": "gun/scripts/create_input_template.py", + "source_location": "L157", + "_origin": "ast" + }, + { + "id": "gun_scripts_create_input_template_rationale_1", + "label": "recommendations_input.xlsx \uc785\ub825 \uc591\uc2dd + \uc608\uc2dc \uc0dd\uc131. \uc2e4\ud589: python3\u2026", + "file_type": "rationale", + "source_file": "gun/scripts/create_input_template.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "gun_scripts_curated_itineraries", + "label": "curated_itineraries.py", + "file_type": "code", + "source_file": "gun/scripts/curated_itineraries.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "gun_scripts_curated_itineraries_make_workbook", + "label": "make_workbook()", + "file_type": "code", + "source_file": "gun/scripts/curated_itineraries.py", + "source_location": "L572", + "_origin": "ast" + }, + { + "id": "gun_scripts_curated_itineraries_py_workbook", + "label": "Workbook", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast" + }, + { + "id": "gun_scripts_curated_itineraries_main", + "label": "main()", + "file_type": "code", + "source_file": "gun/scripts/curated_itineraries.py", + "source_location": "L658", + "_origin": "ast" + }, + { + "id": "gun_scripts_curated_itineraries_rationale_1", + "label": "\ud050\ub808\uc774\uc158 \ucd94\ucc9c \uc77c\uc815 \uc0dd\uc131\uae30. \ud55c\uad6d \uc8fc\uc694 \uad00\uad11\uc9c0 \uae30\ubc18 \uc77c\ubc18 \uc9c0\uc2dd + \ud55c\uad6d\uad00\uad11\uacf5\uc0ac \ucd94\ucc9c \ucf54\uc2a4 \ud328\ud134\uc73c\ub85c 30~40\uac1c \ucd94\ucc9c \uc77c\uc815\uc744\u2026", + "file_type": "rationale", + "source_file": "gun/scripts/curated_itineraries.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "gun_scripts_fetch_google_hours", + "label": "fetch_google_hours.py", + "file_type": "code", + "source_file": "gun/scripts/fetch_google_hours.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "gun_scripts_fetch_google_hours_load_env", + "label": "load_env()", + "file_type": "code", + "source_file": "gun/scripts/fetch_google_hours.py", + "source_location": "L41", + "_origin": "ast" + }, + { + "id": "gun_scripts_fetch_google_hours_py_path", + "label": "Path", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast" + }, + { + "id": "gun_scripts_fetch_google_hours_text_search", + "label": "text_search()", + "file_type": "code", + "source_file": "gun/scripts/fetch_google_hours.py", + "source_location": "L58", + "_origin": "ast" + }, + { + "id": "gun_scripts_fetch_google_hours_place_details", + "label": "place_details()", + "file_type": "code", + "source_file": "gun/scripts/fetch_google_hours.py", + "source_location": "L83", + "_origin": "ast" + }, + { + "id": "gun_scripts_fetch_google_hours_py_any", + "label": "Any", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast" + }, + { + "id": "gun_scripts_fetch_google_hours_parse_periods", + "label": "parse_periods()", + "file_type": "code", + "source_file": "gun/scripts/fetch_google_hours.py", + "source_location": "L102", + "_origin": "ast" + }, + { + "id": "gun_scripts_fetch_google_hours_load_targets", + "label": "load_targets()", + "file_type": "code", + "source_file": "gun/scripts/fetch_google_hours.py", + "source_location": "L124", + "_origin": "ast" + }, + { + "id": "gun_scripts_fetch_google_hours_main", + "label": "main()", + "file_type": "code", + "source_file": "gun/scripts/fetch_google_hours.py", + "source_location": "L148", + "_origin": "ast" + }, + { + "id": "gun_scripts_fetch_google_hours_rationale_1", + "label": "Google Places API (New) \u2014 \uc2dd\ub2f9\u00b7\uce74\ud398 \uc6b4\uc601\uc2dc\uac04 \ubcf4\uac15. \uc0ac\uc6a9\ubc95: 1. .env \uc5d0 GOOGLE_PLACES_API_KEY\u2026", + "file_type": "rationale", + "source_file": "gun/scripts/fetch_google_hours.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "gun_scripts_fetch_google_hours_rationale_59", + "label": "POI \uc774\ub984\uc73c\ub85c \uac80\uc0c9 \u2192 \uccab \ud6c4\ubcf4\uc758 place_id \ubc18\ud658.", + "file_type": "rationale", + "source_file": "gun/scripts/fetch_google_hours.py", + "source_location": "L59", + "_origin": "ast" + }, + { + "id": "gun_scripts_fetch_google_hours_rationale_103", + "label": "API\uc758 periods \uc751\ub2f5\uc744 \uc694\uc77c\ubcc4 'HH:MM-HH:MM' \uc73c\ub85c \ubcc0\ud658. day: 0=\uc77c, 1=\uc6d4, ..., 6=\ud1a0 (Google \uae30\uc900)", + "file_type": "rationale", + "source_file": "gun/scripts/fetch_google_hours.py", + "source_location": "L103", + "_origin": "ast" + }, + { + "id": "gun_scripts_fetch_tourapi_to_csv", + "label": "fetch_tourapi_to_csv.py", + "file_type": "code", + "source_file": "gun/scripts/fetch_tourapi_to_csv.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "gun_scripts_fetch_tourapi_to_csv_resolve_base_dir", + "label": "_resolve_base_dir()", + "file_type": "code", + "source_file": "gun/scripts/fetch_tourapi_to_csv.py", + "source_location": "L132", + "_origin": "ast" + }, + { + "id": "gun_scripts_fetch_tourapi_to_csv_py_path", + "label": "Path", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast" + }, + { + "id": "gun_scripts_fetch_tourapi_to_csv_load_env", + "label": "load_env()", + "file_type": "code", + "source_file": "gun/scripts/fetch_tourapi_to_csv.py", + "source_location": "L156", + "_origin": "ast" + }, + { + "id": "gun_scripts_fetch_tourapi_to_csv_checkpoint", + "label": "Checkpoint", + "file_type": "code", + "source_file": "gun/scripts/fetch_tourapi_to_csv.py", + "source_location": "L177", + "_origin": "ast" + }, + { + "id": "gun_scripts_fetch_tourapi_to_csv_checkpoint_load", + "label": ".load()", + "file_type": "code", + "source_file": "gun/scripts/fetch_tourapi_to_csv.py", + "source_location": "L188", + "_origin": "ast" + }, + { + "id": "gun_scripts_fetch_tourapi_to_csv_checkpoint_save", + "label": ".save()", + "file_type": "code", + "source_file": "gun/scripts/fetch_tourapi_to_csv.py", + "source_location": "L200", + "_origin": "ast" + }, + { + "id": "gun_scripts_fetch_tourapi_to_csv_checkpoint_increment_daily", + "label": ".increment_daily()", + "file_type": "code", + "source_file": "gun/scripts/fetch_tourapi_to_csv.py", + "source_location": "L213", + "_origin": "ast" + }, + { + "id": "gun_scripts_fetch_tourapi_to_csv_checkpoint_remaining_today", + "label": ".remaining_today()", + "file_type": "code", + "source_file": "gun/scripts/fetch_tourapi_to_csv.py", + "source_location": "L222", + "_origin": "ast" + }, + { + "id": "gun_scripts_fetch_tourapi_to_csv_checkpoint_key", + "label": ".key()", + "file_type": "code", + "source_file": "gun/scripts/fetch_tourapi_to_csv.py", + "source_location": "L229", + "_origin": "ast" + }, + { + "id": "gun_scripts_fetch_tourapi_to_csv_checkpoint_is_done", + "label": ".is_done()", + "file_type": "code", + "source_file": "gun/scripts/fetch_tourapi_to_csv.py", + "source_location": "L232", + "_origin": "ast" + }, + { + "id": "gun_scripts_fetch_tourapi_to_csv_checkpoint_mark_done", + "label": ".mark_done()", + "file_type": "code", + "source_file": "gun/scripts/fetch_tourapi_to_csv.py", + "source_location": "L235", + "_origin": "ast" + }, + { + "id": "gun_scripts_fetch_tourapi_to_csv_dailylimitreached", + "label": "DailyLimitReached", + "file_type": "code", + "source_file": "gun/scripts/fetch_tourapi_to_csv.py", + "source_location": "L240", + "_origin": "ast" + }, + { + "id": "gun_scripts_fetch_tourapi_to_csv_py_exception", + "label": "Exception", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast" + }, + { + "id": "gun_scripts_fetch_tourapi_to_csv_call_api", + "label": "call_api()", + "file_type": "code", + "source_file": "gun/scripts/fetch_tourapi_to_csv.py", + "source_location": "L244", + "_origin": "ast" + }, + { + "id": "gun_scripts_fetch_tourapi_to_csv_py_any", + "label": "Any", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast" + }, + { + "id": "gun_scripts_fetch_tourapi_to_csv_parse_items", + "label": "parse_items()", + "file_type": "code", + "source_file": "gun/scripts/fetch_tourapi_to_csv.py", + "source_location": "L333", + "_origin": "ast" + }, + { + "id": "gun_scripts_fetch_tourapi_to_csv_get_total_count", + "label": "get_total_count()", + "file_type": "code", + "source_file": "gun/scripts/fetch_tourapi_to_csv.py", + "source_location": "L345", + "_origin": "ast" + }, + { + "id": "gun_scripts_fetch_tourapi_to_csv_csvappender", + "label": "CsvAppender", + "file_type": "code", + "source_file": "gun/scripts/fetch_tourapi_to_csv.py", + "source_location": "L351", + "_origin": "ast" + }, + { + "id": "gun_scripts_fetch_tourapi_to_csv_csvappender_init", + "label": ".__init__()", + "file_type": "code", + "source_file": "gun/scripts/fetch_tourapi_to_csv.py", + "source_location": "L352", + "_origin": "ast" + }, + { + "id": "gun_scripts_fetch_tourapi_to_csv_csvappender_enter", + "label": ".__enter__()", + "file_type": "code", + "source_file": "gun/scripts/fetch_tourapi_to_csv.py", + "source_location": "L358", + "_origin": "ast" + }, + { + "id": "gun_scripts_fetch_tourapi_to_csv_csvappender_exit", + "label": ".__exit__()", + "file_type": "code", + "source_file": "gun/scripts/fetch_tourapi_to_csv.py", + "source_location": "L367", + "_origin": "ast" + }, + { + "id": "gun_scripts_fetch_tourapi_to_csv_csvappender_write", + "label": ".write()", + "file_type": "code", + "source_file": "gun/scripts/fetch_tourapi_to_csv.py", + "source_location": "L371", + "_origin": "ast" + }, + { + "id": "gun_scripts_fetch_tourapi_to_csv_csvappender_write_many", + "label": ".write_many()", + "file_type": "code", + "source_file": "gun/scripts/fetch_tourapi_to_csv.py", + "source_location": "L374", + "_origin": "ast" + }, + { + "id": "gun_scripts_fetch_tourapi_to_csv_is_valid_kr_coord", + "label": "is_valid_kr_coord()", + "file_type": "code", + "source_file": "gun/scripts/fetch_tourapi_to_csv.py", + "source_location": "L379", + "_origin": "ast" + }, + { + "id": "gun_scripts_fetch_tourapi_to_csv_fetch_ldong_codes", + "label": "fetch_ldong_codes()", + "file_type": "code", + "source_file": "gun/scripts/fetch_tourapi_to_csv.py", + "source_location": "L391", + "_origin": "ast" + }, + { + "id": "gun_scripts_fetch_tourapi_to_csv_fetch_classification_codes", + "label": "fetch_classification_codes()", + "file_type": "code", + "source_file": "gun/scripts/fetch_tourapi_to_csv.py", + "source_location": "L503", + "_origin": "ast" + }, + { + "id": "gun_scripts_fetch_tourapi_to_csv_fetch_pois", + "label": "fetch_pois()", + "file_type": "code", + "source_file": "gun/scripts/fetch_tourapi_to_csv.py", + "source_location": "L565", + "_origin": "ast" + }, + { + "id": "gun_scripts_fetch_tourapi_to_csv_process_items", + "label": "_process_items()", + "file_type": "code", + "source_file": "gun/scripts/fetch_tourapi_to_csv.py", + "source_location": "L648", + "_origin": "ast" + }, + { + "id": "gun_scripts_fetch_tourapi_to_csv_fetch_festivals", + "label": "fetch_festivals()", + "file_type": "code", + "source_file": "gun/scripts/fetch_tourapi_to_csv.py", + "source_location": "L673", + "_origin": "ast" + }, + { + "id": "gun_scripts_fetch_tourapi_to_csv_enrich_operating_hours", + "label": "enrich_operating_hours()", + "file_type": "code", + "source_file": "gun/scripts/fetch_tourapi_to_csv.py", + "source_location": "L756", + "_origin": "ast" + }, + { + "id": "gun_scripts_fetch_tourapi_to_csv_test_connection", + "label": "test_connection()", + "file_type": "code", + "source_file": "gun/scripts/fetch_tourapi_to_csv.py", + "source_location": "L815", + "_origin": "ast" + }, + { + "id": "gun_scripts_fetch_tourapi_to_csv_main", + "label": "main()", + "file_type": "code", + "source_file": "gun/scripts/fetch_tourapi_to_csv.py", + "source_location": "L839", + "_origin": "ast" + }, + { + "id": "gun_scripts_fetch_tourapi_to_csv_rationale_2", + "label": "TourAPI v2 (KorService2) \u2192 CSV \ubc8c\ud06c \uc218\uc9d1 \uc2a4\ud06c\ub9bd\ud2b8 [\uc2e0 API \uba85\uc138 v2 \ubc18\uc601]\u2026", + "file_type": "rationale", + "source_file": "gun/scripts/fetch_tourapi_to_csv.py", + "source_location": "L2", + "_origin": "ast" + }, + { + "id": "gun_scripts_fetch_tourapi_to_csv_rationale_178", + "label": "\uc218\uc9d1 \uc9c4\ud589 \uc0c1\ud0dc + \uc77c\uc77c \ud638\ucd9c \uce74\uc6b4\ud2b8. \uc5d4\ub4dc\ud3ec\uc778\ud2b8\ubcc4 \ud638\ucd9c \uc218\ub97c \ub0a0\uc9dc\uc640 \ud568\uaed8 \uae30\ub85d \u2192 \uc77c\uc77c \ud55c\ub3c4 \ucd94\uc801.", + "file_type": "rationale", + "source_file": "gun/scripts/fetch_tourapi_to_csv.py", + "source_location": "L178", + "_origin": "ast" + }, + { + "id": "gun_scripts_fetch_tourapi_to_csv_rationale_241", + "label": "\uc77c\uc77c \ud55c\ub3c4 \ub3c4\ub2ec \u2014 \uccb4\ud06c\ud3ec\uc778\ud2b8 \uc800\uc7a5 \ud6c4 \uc815\uc0c1 \uc885\ub8cc.", + "file_type": "rationale", + "source_file": "gun/scripts/fetch_tourapi_to_csv.py", + "source_location": "L241", + "_origin": "ast" + }, + { + "id": "gun_scripts_fetch_tourapi_to_csv_rationale_250", + "label": "TourAPI \ud638\ucd9c. \uc2e4\ud328 \uc2dc None. \ud55c\ub3c4 \ub3c4\ub2ec \uc2dc DailyLimitReached.", + "file_type": "rationale", + "source_file": "gun/scripts/fetch_tourapi_to_csv.py", + "source_location": "L250", + "_origin": "ast" + }, + { + "id": "gun_scripts_fetch_tourapi_to_csv_rationale_334", + "label": "API \uc751\ub2f5\uc5d0\uc11c items.item \ub9ac\uc2a4\ud2b8 \ucd94\ucd9c. \ube48 \uc751\ub2f5 \uc548\uc804 \ucc98\ub9ac.", + "file_type": "rationale", + "source_file": "gun/scripts/fetch_tourapi_to_csv.py", + "source_location": "L334", + "_origin": "ast" + }, + { + "id": "gun_scripts_fetch_tourapi_to_csv_rationale_392", + "label": "ldongCode2\ub85c \uc804\uccb4 \ubc95\uc815\ub3d9(\uc2dc\ub3c4+\uc2dc\uad70\uad6c+\ubc95\uc815\ub3d9) \uc218\uc9d1. lDongListYn=Y \uc635\uc158\uc73c\ub85c \uc804\uccb4 \ubaa9\ub85d \uc870\ud68c + \ud398\uc774\uc9c0\ub124\uc774\uc158.", + "file_type": "rationale", + "source_file": "gun/scripts/fetch_tourapi_to_csv.py", + "source_location": "L392", + "_origin": "ast" + }, + { + "id": "gun_scripts_fetch_tourapi_to_csv_rationale_504", + "label": "lclsSystmCode2 \u2192 \ubd84\ub958\uccb4\uacc4 1~3 Depth \ud2b8\ub9ac \uc218\uc9d1.", + "file_type": "rationale", + "source_file": "gun/scripts/fetch_tourapi_to_csv.py", + "source_location": "L504", + "_origin": "ast" + }, + { + "id": "gun_scripts_fetch_tourapi_to_csv_rationale_572", + "label": "contentTypeId \u00d7 lDongRegnCd \uc870\ud569\uc73c\ub85c \ud398\uc774\uc9c0\ub124\uc774\uc158 \uc21c\ud68c. modifiedtime: 'YYYYMMDD' \u2014 \ud574\ub2f9 \ub0a0\uc9dc \uc774\ud6c4\u2026", + "file_type": "rationale", + "source_file": "gun/scripts/fetch_tourapi_to_csv.py", + "source_location": "L572", + "_origin": "ast" + }, + { + "id": "gun_scripts_fetch_tourapi_to_csv_rationale_653", + "label": "\ud398\uc774\uc9c0\uc758 item\uc744 \uac80\uc99d + CSV\uc5d0 \uc4f0\uae30. \ubc18\ud658: (\uc800\uc7a5, \uc88c\ud45c\uc624\ub958, \uc911\ubcf5).", + "file_type": "rationale", + "source_file": "gun/scripts/fetch_tourapi_to_csv.py", + "source_location": "L653", + "_origin": "ast" + }, + { + "id": "gun_scripts_fetch_tourapi_to_csv_rationale_679", + "label": "searchFestival2\ub85c [event_start, event_end] \uae30\uac04\uc758 \ucd95\uc81c \uc77c\uc815 \uc218\uc9d1. eventStartDate \ud544\ud130\ub85c \ud574\ub2f9\u2026", + "file_type": "rationale", + "source_file": "gun/scripts/fetch_tourapi_to_csv.py", + "source_location": "L679", + "_origin": "ast" + }, + { + "id": "gun_scripts_fetch_tourapi_to_csv_rationale_757", + "label": "pois.csv\ub97c \uc77d\uc5b4 detailIntro2\ub85c \uc6b4\uc601\uc2dc\uac04 \ubcf4\uac15. \uc774\ubbf8 enriched\ub41c contentid\ub294 \uc2a4\ud0b5.", + "file_type": "rationale", + "source_file": "gun/scripts/fetch_tourapi_to_csv.py", + "source_location": "L757", + "_origin": "ast" + }, + { + "id": "gun_scripts_inspect_json", + "label": "inspect_json.py", + "file_type": "code", + "source_file": "gun/scripts/inspect_json.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "gun_scripts_inspect_json_get_path", + "label": "get_path()", + "file_type": "code", + "source_file": "gun/scripts/inspect_json.py", + "source_location": "L24", + "_origin": "ast" + }, + { + "id": "gun_scripts_inspect_json_py_any", + "label": "Any", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast" + }, + { + "id": "gun_scripts_inspect_json_describe", + "label": "describe()", + "file_type": "code", + "source_file": "gun/scripts/inspect_json.py", + "source_location": "L44", + "_origin": "ast" + }, + { + "id": "gun_scripts_inspect_json_print_tree", + "label": "print_tree()", + "file_type": "code", + "source_file": "gun/scripts/inspect_json.py", + "source_location": "L59", + "_origin": "ast" + }, + { + "id": "gun_scripts_inspect_json_search_in", + "label": "search_in()", + "file_type": "code", + "source_file": "gun/scripts/inspect_json.py", + "source_location": "L86", + "_origin": "ast" + }, + { + "id": "gun_scripts_inspect_json_main", + "label": "main()", + "file_type": "code", + "source_file": "gun/scripts/inspect_json.py", + "source_location": "L105", + "_origin": "ast" + }, + { + "id": "gun_scripts_inspect_json_rationale_1", + "label": "JSON \ud30c\uc77c \ube60\ub978 \ud655\uc778 \uc720\ud2f8\ub9ac\ud2f0 ================================= \uc0ac\uc6a9\ubc95: python3\u2026", + "file_type": "rationale", + "source_file": "gun/scripts/inspect_json.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "gun_scripts_inspect_json_rationale_25", + "label": "a.b.0.c' \ud615\ud0dc \uacbd\ub85c\ub85c dict/list \uc548\uc73c\ub85c \ub4e4\uc5b4\uac10.", + "file_type": "rationale", + "source_file": "gun/scripts/inspect_json.py", + "source_location": "L25", + "_origin": "ast" + }, + { + "id": "gun_scripts_inspect_json_rationale_60", + "label": "\uad6c\uc870\ub9cc \ud2b8\ub9ac\ub85c \ucd9c\ub825 (\uac12\uc740 \ud0c0\uc785\uacfc \uae38\uc774\ub9cc).", + "file_type": "rationale", + "source_file": "gun/scripts/inspect_json.py", + "source_location": "L60", + "_origin": "ast" + }, + { + "id": "gun_scripts_inspect_json_rationale_87", + "label": "\ubaa8\ub4e0 \uac12\uc5d0\uc11c text \ud3ec\ud568 \ud56d\ubaa9 \ucc3e\uae30. \ubc18\ud658: [(\uacbd\ub85c, \uac12)]", + "file_type": "rationale", + "source_file": "gun/scripts/inspect_json.py", + "source_location": "L87", + "_origin": "ast" + }, + { + "id": "gun_scripts_preprocess_pois", + "label": "preprocess_pois.py", + "file_type": "code", + "source_file": "gun/scripts/preprocess_pois.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "gun_scripts_preprocess_pois_parse_korean_address", + "label": "parse_korean_address()", + "file_type": "code", + "source_file": "gun/scripts/preprocess_pois.py", + "source_location": "L37", + "_origin": "ast" + }, + { + "id": "gun_scripts_preprocess_pois_split_address_columns", + "label": "split_address_columns()", + "file_type": "code", + "source_file": "gun/scripts/preprocess_pois.py", + "source_location": "L92", + "_origin": "ast" + }, + { + "id": "gun_scripts_preprocess_pois_py_dataframe", + "label": "DataFrame", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast" + }, + { + "id": "gun_scripts_preprocess_pois_parse_eup_myeon_ri", + "label": "parse_eup_myeon_ri()", + "file_type": "code", + "source_file": "gun/scripts/preprocess_pois.py", + "source_location": "L120", + "_origin": "ast" + }, + { + "id": "gun_scripts_preprocess_pois_split_eup_myeon_ri_columns", + "label": "split_eup_myeon_ri_columns()", + "file_type": "code", + "source_file": "gun/scripts/preprocess_pois.py", + "source_location": "L150", + "_origin": "ast" + }, + { + "id": "gun_scripts_preprocess_pois_split_date_columns", + "label": "split_date_columns()", + "file_type": "code", + "source_file": "gun/scripts/preprocess_pois.py", + "source_location": "L175", + "_origin": "ast" + }, + { + "id": "gun_scripts_preprocess_pois_preprocess", + "label": "preprocess()", + "file_type": "code", + "source_file": "gun/scripts/preprocess_pois.py", + "source_location": "L202", + "_origin": "ast" + }, + { + "id": "gun_scripts_preprocess_pois_py_path", + "label": "Path", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast" + }, + { + "id": "gun_scripts_preprocess_pois_main", + "label": "main()", + "file_type": "code", + "source_file": "gun/scripts/preprocess_pois.py", + "source_location": "L273", + "_origin": "ast" + }, + { + "id": "gun_scripts_preprocess_pois_rationale_1", + "label": "POI CSV \uc885\ud569 \uc804\ucc98\ub9ac ========================= TourAPI \uc6d0\ubcf8 CSV\uc5d0 \ub300\ud574 \uc138 \uac00\uc9c0 \ubcc0\ud658\uc744 \ud55c \ubc88\uc5d0 \uc801\uc6a9:\u2026", + "file_type": "rationale", + "source_file": "gun/scripts/preprocess_pois.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "gun_scripts_preprocess_pois_rationale_38", + "label": "\ud55c\uad6d \uc8fc\uc18c \ubb38\uc790\uc5f4 \u2192 (\uc2dc\ub3c4, \uc2dc\uad70\uad6c, \uc74d\uba74\ub3d9\u00b7\ub3c4\ub85c\uba85) \ubd84\ub9ac. \uaddc\uce59 ---- 1. \uccab \ud1a0\ud070 = \uc2dc\ub3c4 (\uc5b4\ub5a4 \ud615\ud0dc\ub4e0 \uadf8\ub300\ub85c) 2. \uc2dc\uad70\uad6c\ub294\u2026", + "file_type": "rationale", + "source_file": "gun/scripts/preprocess_pois.py", + "source_location": "L38", + "_origin": "ast" + }, + { + "id": "gun_scripts_preprocess_pois_rationale_121", + "label": "dong_or_road\ub97c \ub744\uc5b4\uc4f0\uae30\ub85c \ubd84\ub9ac \u2014 1\ubc88\uc9f8 \u2192 eup_myeon, 2\ubc88\uc9f8 \u2192 ri. 3\ubc88\uc9f8 \uc774\ud6c4 \ud1a0\ud070\uc740 \ubaa8\ub450 drop ('\ub9ac \ub2e8\uc704\u2026", + "file_type": "rationale", + "source_file": "gun/scripts/preprocess_pois.py", + "source_location": "L121", + "_origin": "ast" + }, + { + "id": "gun_scripts_preprocess_pois_rationale_181", + "label": "YYYYMMDDHHMMSS \u2192 {prefix}_date / _year / _month (day, time \uc81c\uc678).", + "file_type": "rationale", + "source_file": "gun/scripts/preprocess_pois.py", + "source_location": "L181", + "_origin": "ast" + }, + { + "id": "gun_scripts_setup_and_test", + "label": "setup_and_test.py", + "file_type": "code", + "source_file": "gun/scripts/setup_and_test.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "gun_scripts_setup_and_test_rationale_1", + "label": "env \uc0dd\uc131 + Kakao API \ud14c\uc2a4\ud2b8. \u26a0\ufe0f \ud0a4\ub294 \uc808\ub300 \ucf54\ub4dc\uc5d0 \ud558\ub4dc\ucf54\ub529\ud558\uc9c0 \ub9d0 \uac83 \u2014 \ud658\uacbd\ubcc0\uc218 \ub610\ub294 .env \ud30c\uc77c\uc5d0\uc11c \uc77d\uc5b4\uc634. \uc0ac\uc6a9\ubc95:\u2026", + "file_type": "rationale", + "source_file": "gun/scripts/setup_and_test.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "gun_src_init", + "label": "gun/src/__init__.py", + "file_type": "code", + "source_file": "gun/src/__init__.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "gun_src_validation_init", + "label": "gun/src/validation/__init__.py", + "file_type": "code", + "source_file": "gun/src/validation/__init__.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "gun_tests_init", + "label": "gun/tests/__init__.py", + "file_type": "code", + "source_file": "gun/tests/__init__.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "package", + "label": "package.json", + "file_type": "code", + "source_file": "package.json", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "package_dependencies", + "label": "dependencies", + "file_type": "code", + "source_file": "package.json", + "source_location": "L2", + "_origin": "ast" + }, + { + "id": "package_dependencies_pptxgenjs", + "label": "pptxgenjs", + "file_type": "code", + "source_file": "package.json", + "source_location": "L3", + "_origin": "ast" + }, + { + "id": "pptxgenjs", + "label": "pptxgenjs", + "file_type": "concept", + "source_file": "package.json", + "source_location": "L3", + "_origin": "ast" + }, + { + "id": "phases_0_setup_analyze", + "label": "analyze.py", + "file_type": "code", + "source_file": "phases/0-setup/analyze.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "phases_0_setup_analyze_load_env", + "label": "_load_env()", + "file_type": "code", + "source_file": "phases/0-setup/analyze.py", + "source_location": "L14", + "_origin": "ast" + }, + { + "id": "phases_0_setup_analyze_parse_cell", + "label": "parse_cell()", + "file_type": "code", + "source_file": "phases/0-setup/analyze.py", + "source_location": "L43", + "_origin": "ast" + }, + { + "id": "phases_0_setup_analyze_geocode_tourapi", + "label": "geocode_tourapi()", + "file_type": "code", + "source_file": "phases/0-setup/analyze.py", + "source_location": "L106", + "_origin": "ast" + }, + { + "id": "phases_0_setup_analyze_geocode_kakao_local", + "label": "geocode_kakao_local()", + "file_type": "code", + "source_file": "phases/0-setup/analyze.py", + "source_location": "L129", + "_origin": "ast" + }, + { + "id": "phases_0_setup_analyze_geocode_nominatim", + "label": "geocode_nominatim()", + "file_type": "code", + "source_file": "phases/0-setup/analyze.py", + "source_location": "L153", + "_origin": "ast" + }, + { + "id": "phases_0_setup_analyze_geocode_single", + "label": "geocode_single()", + "file_type": "code", + "source_file": "phases/0-setup/analyze.py", + "source_location": "L170", + "_origin": "ast" + }, + { + "id": "phases_0_setup_analyze_haversine_travel_sec", + "label": "haversine_travel_sec()", + "file_type": "code", + "source_file": "phases/0-setup/analyze.py", + "source_location": "L218", + "_origin": "ast" + }, + { + "id": "phases_0_setup_analyze_get_travel_time", + "label": "get_travel_time()", + "file_type": "code", + "source_file": "phases/0-setup/analyze.py", + "source_location": "L225", + "_origin": "ast" + }, + { + "id": "phases_0_setup_analyze_haversine", + "label": "haversine()", + "file_type": "code", + "source_file": "phases/0-setup/analyze.py", + "source_location": "L258", + "_origin": "ast" + }, + { + "id": "phases_0_setup_analyze_cluster_label", + "label": "cluster_label()", + "file_type": "code", + "source_file": "phases/0-setup/analyze.py", + "source_location": "L266", + "_origin": "ast" + }, + { + "id": "phases_0_setup_analyze_percentile", + "label": "percentile()", + "file_type": "code", + "source_file": "phases/0-setup/analyze.py", + "source_location": "L351", + "_origin": "ast" + }, + { + "id": "phases_0_setup_analyze_stats_block", + "label": "stats_block()", + "file_type": "code", + "source_file": "phases/0-setup/analyze.py", + "source_location": "L372", + "_origin": "ast" + }, + { + "id": "phases_0_setup_analyze_rationale_1", + "label": "\uad6c\uc11d\uad6c\uc11d 50\uac1c \uc5ec\ud589 \uacbd\ub85c \ubd84\uc11d \ud30c\uc774\ud504\ub77c\uc778 1. \uc7a5\uc18c\uba85 \ud30c\uc2f1 \u2192 2. \uc9c0\uc624\ucf54\ub529 \u2192 3. \uc774\ub3d9\uc2dc\uac04 \uacc4\uc0b0 \u2192 4. \uc9c0\ud45c \uc0b0\ucd9c \u2192 5. \ud1b5\uacc4 \ucd9c\ub825", + "file_type": "rationale", + "source_file": "phases/0-setup/analyze.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "phases_0_setup_analyze_rationale_44", + "label": "1.\uc7a5\uc18cA, 3.\uc7a5\uc18cB, 2.\uc74c\uc2ddC' \u2192 {1: '\uc7a5\uc18cA', 2: '\uc74c\uc2ddC', 3: '\uc7a5\uc18cB'}", + "file_type": "rationale", + "source_file": "phases/0-setup/analyze.py", + "source_location": "L44", + "_origin": "ast" + }, + { + "id": "phases_0_setup_analyze_rationale_130", + "label": "Kakao Local API \u2014 \ud604\uc9c0 \uce74\ud398\u00b7\uc2dd\ub2f9\u00b7\uad00\uad11\uc9c0\uae4c\uc9c0 \uad11\ubc94\uc704\ud558\uac8c \ucee4\ubc84. region\uc740 \uc5b8\ub354\uc2a4\ucf54\uc5b4 \ud615\uc2dd \uac00\ub2a5\uc131\uc774 \uc788\uc5b4 \ucffc\ub9ac\uc5d0 \ud3ec\ud568\ud558\uc9c0 \uc54a\uc74c.", + "file_type": "rationale", + "source_file": "phases/0-setup/analyze.py", + "source_location": "L130", + "_origin": "ast" + }, + { + "id": "phases_0_setup_analyze_rationale_171", + "label": "TourAPI \u2192 Kakao Local \u2192 Nominatim \uc21c (\ubcd1\ub82c \ud638\ucd9c \uc548\uc804)", + "file_type": "rationale", + "source_file": "phases/0-setup/analyze.py", + "source_location": "L171", + "_origin": "ast" + }, + { + "id": "phases_0_setup_analyze_rationale_219", + "label": "\uc9c1\uc120\uac70\ub9ac \u00d7 \uc6b0\ud68c\uacc4\uc218 / \uc18d\ub3c4 \ub85c \uc774\ub3d9 \uc2dc\uac04(\ucd08) \ucd94\uc815. Kakao API \ubd88\uac00 \uc2dc \ud3f4\ubc31.", + "file_type": "rationale", + "source_file": "phases/0-setup/analyze.py", + "source_location": "L219", + "_origin": "ast" + }, + { + "id": "phases_0_setup_analyze_rationale_267", + "label": "\ub2e8\uc21c \uadf8\ub9ac\ub4dc \uae30\ubc18 \uc9c0\uc5ed \ud074\ub7ec\uc2a4\ud130 \ub808\uc774\ube14 (5km \uaca9\uc790)", + "file_type": "rationale", + "source_file": "phases/0-setup/analyze.py", + "source_location": "L267", + "_origin": "ast" + }, + { + "id": "phases_0_setup_analyze_triple", + "label": "analyze_triple.py", + "file_type": "code", + "source_file": "phases/0-setup/analyze_triple.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "phases_0_setup_analyze_triple_load_env", + "label": "_load_env()", + "file_type": "code", + "source_file": "phases/0-setup/analyze_triple.py", + "source_location": "L12", + "_origin": "ast" + }, + { + "id": "phases_0_setup_analyze_triple_parse_numbered", + "label": "parse_numbered()", + "file_type": "code", + "source_file": "phases/0-setup/analyze_triple.py", + "source_location": "L68", + "_origin": "ast" + }, + { + "id": "phases_0_setup_analyze_triple_geocode_tourapi", + "label": "geocode_tourapi()", + "file_type": "code", + "source_file": "phases/0-setup/analyze_triple.py", + "source_location": "L159", + "_origin": "ast" + }, + { + "id": "phases_0_setup_analyze_triple_geocode_kakao_local", + "label": "geocode_kakao_local()", + "file_type": "code", + "source_file": "phases/0-setup/analyze_triple.py", + "source_location": "L182", + "_origin": "ast" + }, + { + "id": "phases_0_setup_analyze_triple_geocode_nominatim", + "label": "geocode_nominatim()", + "file_type": "code", + "source_file": "phases/0-setup/analyze_triple.py", + "source_location": "L206", + "_origin": "ast" + }, + { + "id": "phases_0_setup_analyze_triple_geocode_single", + "label": "geocode_single()", + "file_type": "code", + "source_file": "phases/0-setup/analyze_triple.py", + "source_location": "L223", + "_origin": "ast" + }, + { + "id": "phases_0_setup_analyze_triple_haversine", + "label": "haversine()", + "file_type": "code", + "source_file": "phases/0-setup/analyze_triple.py", + "source_location": "L265", + "_origin": "ast" + }, + { + "id": "phases_0_setup_analyze_triple_haversine_travel_sec", + "label": "haversine_travel_sec()", + "file_type": "code", + "source_file": "phases/0-setup/analyze_triple.py", + "source_location": "L273", + "_origin": "ast" + }, + { + "id": "phases_0_setup_analyze_triple_get_travel_time", + "label": "get_travel_time()", + "file_type": "code", + "source_file": "phases/0-setup/analyze_triple.py", + "source_location": "L279", + "_origin": "ast" + }, + { + "id": "phases_0_setup_analyze_triple_cluster_label", + "label": "cluster_label()", + "file_type": "code", + "source_file": "phases/0-setup/analyze_triple.py", + "source_location": "L308", + "_origin": "ast" + }, + { + "id": "phases_0_setup_analyze_triple_percentile", + "label": "percentile()", + "file_type": "code", + "source_file": "phases/0-setup/analyze_triple.py", + "source_location": "L388", + "_origin": "ast" + }, + { + "id": "phases_0_setup_analyze_triple_stats_block", + "label": "stats_block()", + "file_type": "code", + "source_file": "phases/0-setup/analyze_triple.py", + "source_location": "L394", + "_origin": "ast" + }, + { + "id": "phases_0_setup_analyze_triple_rationale_1", + "label": "\ud2b8\ub9ac\ud50c \uc571 \ucd94\ucc9c \uacbd\ub85c \ubd84\uc11d \ud30c\uc774\ud504\ub77c\uc778 (\ub300\ud55c\ubbfc\uad6d \ub178\uc120\ub9cc) \uad6c\uc11d\uad6c\uc11d analyze.py\uc640 \ub3d9\uc77c \uc9c0\ud45c\ub97c \uc0b0\ucd9c\ud558\uc5ec \ube44\uad50 \uae30\ubc18 \ub370\uc774\ud130 \uc0dd\uc131", + "file_type": "rationale", + "source_file": "phases/0-setup/analyze_triple.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "phases_0_setup_analyze_triple_rationale_69", + "label": "1.\uc7a5\uc18cA, 3.\uc7a5\uc18cB' \u2192 {1: '\uc7a5\uc18cA', 3: '\uc7a5\uc18cB'}", + "file_type": "rationale", + "source_file": "phases/0-setup/analyze_triple.py", + "source_location": "L69", + "_origin": "ast" + }, + { + "id": "phases_0_setup_analyze_triple_rationale_183", + "label": "Kakao Local API \u2014 \ud604\uc9c0 \uce74\ud398\u00b7\uc2dd\ub2f9\u00b7\uad00\uad11\uc9c0\uae4c\uc9c0 \uad11\ubc94\uc704\ud558\uac8c \ucee4\ubc84. city\ub294 \uc5b8\ub354\uc2a4\ucf54\uc5b4 \ud615\uc2dd('\uac00\ud3c9_\uc591\ud3c9')\uc774\ubbc0\ub85c \ucffc\ub9ac\uc5d0 \ud3ec\ud568\ud558\uc9c0\u2026", + "file_type": "rationale", + "source_file": "phases/0-setup/analyze_triple.py", + "source_location": "L183", + "_origin": "ast" + }, + { + "id": "phases_0_setup_analyze_triple_rationale_224", + "label": "TourAPI \u2192 Kakao Local \u2192 Nominatim \uc21c\uc73c\ub85c \uc2dc\ub3c4 (\ubcd1\ub82c \ud638\ucd9c \uc548\uc804)", + "file_type": "rationale", + "source_file": "phases/0-setup/analyze_triple.py", + "source_location": "L224", + "_origin": "ast" + }, + { + "id": "phases_0_setup_statistical_report", + "label": "statistical_report.py", + "file_type": "code", + "source_file": "phases/0-setup/statistical_report.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "phases_0_setup_statistical_report_pct", + "label": "pct()", + "file_type": "code", + "source_file": "phases/0-setup/statistical_report.py", + "source_location": "L37", + "_origin": "ast" + }, + { + "id": "phases_0_setup_statistical_report_pctile", + "label": "pctile()", + "file_type": "code", + "source_file": "phases/0-setup/statistical_report.py", + "source_location": "L40", + "_origin": "ast" + }, + { + "id": "phases_0_setup_statistical_report_header", + "label": "header()", + "file_type": "code", + "source_file": "phases/0-setup/statistical_report.py", + "source_location": "L87", + "_origin": "ast" + }, + { + "id": "phases_0_setup_statistical_report_rationale_1", + "label": "AI \uc5ec\ud589 \ucd94\ucc9c \uc131\ub2a5 \ud1b5\uacc4 \ubd84\uc11d analysis_result.json \uc744 \uc77d\uc5b4 AI \ucd94\ucc9c\uc758 \uad6c\uc870\uc801 \ubb38\uc81c\ub97c \uc815\ub7c9\ud654\ud55c\ub2e4.", + "file_type": "rationale", + "source_file": "phases/0-setup/statistical_report.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "phases_0_setup_visualize", + "label": "visualize.py", + "file_type": "code", + "source_file": "phases/0-setup/visualize.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "phases_0_setup_visualize_rationale_1", + "label": "AI \uc5ec\ud589 \ucd94\ucc9c \uc131\ub2a5 \uc2dc\uac01\ud654 \u2014 \ud504\ub85c\uc81d\ud2b8 \ud544\uc694\uc131 \uadfc\uac70 \ucc28\ud2b8 4\uc885", + "file_type": "rationale", + "source_file": "phases/0-setup/visualize.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "phases_0_setup_visualize_combined", + "label": "visualize_combined.py", + "file_type": "code", + "source_file": "phases/0-setup/visualize_combined.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "phases_0_setup_visualize_combined_rationale_1", + "label": "\ud2b8\ub9ac\ud50c + \uad6c\uc11d\uad6c\uc11d \ube44\uad50 \uc2dc\uac01\ud654 Figure 1: \ud2b8\ub9ac\ud50c \ub2e8\ub3c5 \ud488\uc9c8 \ub9ac\ud3ec\ud2b8 (triple_quality_report.png) Figure 2:\u2026", + "file_type": "rationale", + "source_file": "phases/0-setup/visualize_combined.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "pkg_travel_plan_validator", + "label": "travel-plan-validator", + "file_type": "code", + "type": "package", + "ecosystem": "python", + "source_file": "pyproject.toml", + "source_location": "L1", + "version": "1.0.0", + "_origin": "ast" + }, + { + "id": "scripts_build_knowledge_graph", + "label": "build_knowledge_graph.py", + "file_type": "code", + "source_file": "scripts/build_knowledge_graph.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "scripts_build_knowledge_graph_place_type", + "label": "_place_type()", + "file_type": "code", + "source_file": "scripts/build_knowledge_graph.py", + "source_location": "L61", + "_origin": "ast" + }, + { + "id": "scripts_build_knowledge_graph_parse_region_chain", + "label": "_parse_region_chain()", + "file_type": "code", + "source_file": "scripts/build_knowledge_graph.py", + "source_location": "L67", + "_origin": "ast" + }, + { + "id": "scripts_build_knowledge_graph_load_category_group_map", + "label": "_load_category_group_map()", + "file_type": "code", + "source_file": "scripts/build_knowledge_graph.py", + "source_location": "L100", + "_origin": "ast" + }, + { + "id": "scripts_build_knowledge_graph_project_meters", + "label": "_project_meters()", + "file_type": "code", + "source_file": "scripts/build_knowledge_graph.py", + "source_location": "L113", + "_origin": "ast" + }, + { + "id": "ndarray", + "label": "ndarray", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast" + }, + { + "id": "scripts_build_knowledge_graph_build_near_by", + "label": "build_near_by()", + "file_type": "code", + "source_file": "scripts/build_knowledge_graph.py", + "source_location": "L121", + "_origin": "ast" + }, + { + "id": "scripts_build_knowledge_graph_py_dataframe", + "label": "DataFrame", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast" + }, + { + "id": "scripts_build_knowledge_graph_selfcheck", + "label": "_selfcheck()", + "file_type": "code", + "source_file": "scripts/build_knowledge_graph.py", + "source_location": "L154", + "_origin": "ast" + }, + { + "id": "scripts_build_knowledge_graph_main", + "label": "main()", + "file_type": "code", + "source_file": "scripts/build_knowledge_graph.py", + "source_location": "L170", + "_origin": "ast" + }, + { + "id": "scripts_build_knowledge_graph_rationale_68", + "label": "\uc8fc\uc18c \u2192 [(id, name), ...] \ucd5c\uc0c1\uc704(\uc74d/\uba74/\ub3d9 \ub610\ub294 \uc2dc) \u2192 \uc2dc \u2192 \ub3c4 \uc21c\uc11c. \ubc18\ud658 \ub9ac\uc2a4\ud2b8\uc758 \uccab \ud56d\ubaa9\uc774 Place\uac00\u2026", + "file_type": "rationale", + "source_file": "scripts/build_knowledge_graph.py", + "source_location": "L68", + "_origin": "ast" + }, + { + "id": "scripts_build_knowledge_graph_rationale_114", + "label": "\uc18c\ubc94\uc704(\uc81c\uc8fc\ub3c4)\uc6a9 \ub4f1\uc7a5\ubc29\ud615 \ud22c\uc601 \u2014 300m \uc2a4\ucf00\uc77c\uc5d0\uc11c \uc624\ucc28 \ubb34\uc2dc \uac00\ub2a5.", + "file_type": "rationale", + "source_file": "scripts/build_knowledge_graph.py", + "source_location": "L114", + "_origin": "ast" + }, + { + "id": "scripts_build_poi_dataset", + "label": "build_poi_dataset.py", + "file_type": "code", + "source_file": "scripts/build_poi_dataset.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "scripts_build_poi_dataset_build_wellness", + "label": "build_wellness()", + "file_type": "code", + "source_file": "scripts/build_poi_dataset.py", + "source_location": "L34", + "_origin": "ast" + }, + { + "id": "scripts_build_poi_dataset_build_barrier_free", + "label": "build_barrier_free()", + "file_type": "code", + "source_file": "scripts/build_poi_dataset.py", + "source_location": "L49", + "_origin": "ast" + }, + { + "id": "scripts_build_poi_dataset_main", + "label": "main()", + "file_type": "code", + "source_file": "scripts/build_poi_dataset.py", + "source_location": "L64", + "_origin": "ast" + }, + { + "id": "scripts_build_poi_dataset_rationale_1", + "label": "\uc6f0\ub2c8\uc2a4\u00b7\ubb34\uc7a5\uc560 \uc5ec\ud589\uc9c0 \ub370\uc774\ud130\uc14b \ube4c\ub354. \uacf5\uacf5\ub370\uc774\ud130\ud3ec\ud138 API\ub97c \ud638\ucd9c\ud558\uc5ec \uc804\uccb4 \ubaa9\ub85d\uc744 JSON\uc73c\ub85c \uc800\uc7a5. \uc800\uc7a5 \uacbd\ub85c:\u2026", + "file_type": "rationale", + "source_file": "scripts/build_poi_dataset.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "scripts_collect_naver_full", + "label": "collect_naver_full.py", + "file_type": "code", + "source_file": "scripts/collect_naver_full.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "scripts_collect_naver_full_rate_get", + "label": "_rate_get()", + "file_type": "code", + "source_file": "scripts/collect_naver_full.py", + "source_location": "L93", + "_origin": "ast" + }, + { + "id": "scripts_collect_naver_full_py_client", + "label": "Client", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast" + }, + { + "id": "scripts_collect_naver_full_py_response", + "label": "Response", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast" + }, + { + "id": "scripts_collect_naver_full_load_quota", + "label": "load_quota()", + "file_type": "code", + "source_file": "scripts/collect_naver_full.py", + "source_location": "L110", + "_origin": "ast" + }, + { + "id": "scripts_collect_naver_full_save_quota", + "label": "_save_quota()", + "file_type": "code", + "source_file": "scripts/collect_naver_full.py", + "source_location": "L123", + "_origin": "ast" + }, + { + "id": "scripts_collect_naver_full_increment_quota", + "label": "_increment_quota()", + "file_type": "code", + "source_file": "scripts/collect_naver_full.py", + "source_location": "L127", + "_origin": "ast" + }, + { + "id": "scripts_collect_naver_full_strip", + "label": "_strip()", + "file_type": "code", + "source_file": "scripts/collect_naver_full.py", + "source_location": "L138", + "_origin": "ast" + }, + { + "id": "scripts_collect_naver_full_count_hits", + "label": "_count_hits()", + "file_type": "code", + "source_file": "scripts/collect_naver_full.py", + "source_location": "L214", + "_origin": "ast" + }, + { + "id": "scripts_collect_naver_full_parse_price", + "label": "_parse_price()", + "file_type": "code", + "source_file": "scripts/collect_naver_full.py", + "source_location": "L232", + "_origin": "ast" + }, + { + "id": "scripts_collect_naver_full_extract_fields", + "label": "extract_fields()", + "file_type": "code", + "source_file": "scripts/collect_naver_full.py", + "source_location": "L255", + "_origin": "ast" + }, + { + "id": "scripts_collect_naver_full_build_summary_text", + "label": "build_summary_text()", + "file_type": "code", + "source_file": "scripts/collect_naver_full.py", + "source_location": "L315", + "_origin": "ast" + }, + { + "id": "scripts_collect_naver_full_fetch_blog_texts", + "label": "_fetch_blog_texts()", + "file_type": "code", + "source_file": "scripts/collect_naver_full.py", + "source_location": "L328", + "_origin": "ast" + }, + { + "id": "scripts_collect_naver_full_fetch_and_extract", + "label": "fetch_and_extract()", + "file_type": "code", + "source_file": "scripts/collect_naver_full.py", + "source_location": "L354", + "_origin": "ast" + }, + { + "id": "scripts_collect_naver_full_load_all_pois", + "label": "load_all_pois()", + "file_type": "code", + "source_file": "scripts/collect_naver_full.py", + "source_location": "L396", + "_origin": "ast" + }, + { + "id": "scripts_collect_naver_full_load_progress", + "label": "load_progress()", + "file_type": "code", + "source_file": "scripts/collect_naver_full.py", + "source_location": "L406", + "_origin": "ast" + }, + { + "id": "scripts_collect_naver_full_save_progress", + "label": "save_progress()", + "file_type": "code", + "source_file": "scripts/collect_naver_full.py", + "source_location": "L417", + "_origin": "ast" + }, + { + "id": "scripts_collect_naver_full_save_output", + "label": "save_output()", + "file_type": "code", + "source_file": "scripts/collect_naver_full.py", + "source_location": "L422", + "_origin": "ast" + }, + { + "id": "scripts_collect_naver_full_print_stats", + "label": "print_stats()", + "file_type": "code", + "source_file": "scripts/collect_naver_full.py", + "source_location": "L431", + "_origin": "ast" + }, + { + "id": "scripts_collect_naver_full_main", + "label": "main()", + "file_type": "code", + "source_file": "scripts/collect_naver_full.py", + "source_location": "L464", + "_origin": "ast" + }, + { + "id": "scripts_collect_naver_full_rationale_111", + "label": "\uc624\ub298 \ub0a0\uc9dc \uae30\uc900 \ub0a8\uc740 API \ud638\ucd9c \uc218 \ubc18\ud658.", + "file_type": "rationale", + "source_file": "scripts/collect_naver_full.py", + "source_location": "L111", + "_origin": "ast" + }, + { + "id": "scripts_collect_naver_full_rationale_128", + "label": "\ud638\ucd9c \uce74\uc6b4\ud2b8 \uc99d\uac00. \ud55c\ub3c4 \ucd08\uacfc \uc2dc False \ubc18\ud658.", + "file_type": "rationale", + "source_file": "scripts/collect_naver_full.py", + "source_location": "L128", + "_origin": "ast" + }, + { + "id": "scripts_collect_naver_full_rationale_407", + "label": "contentid \u2192 record \ub515\uc154\ub108\ub9ac \ubc18\ud658 (progress \ud30c\uc77c\uc774 list \ud615\uc2dd\ub3c4 \ucc98\ub9ac).", + "file_type": "rationale", + "source_file": "scripts/collect_naver_full.py", + "source_location": "L407", + "_origin": "ast" + }, + { + "id": "scripts_collect_naver_metadata", + "label": "collect_naver_metadata.py", + "file_type": "code", + "source_file": "scripts/collect_naver_metadata.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "scripts_collect_naver_metadata_rate_limited_get", + "label": "_rate_limited_get()", + "file_type": "code", + "source_file": "scripts/collect_naver_metadata.py", + "source_location": "L50", + "_origin": "ast" + }, + { + "id": "scripts_collect_naver_metadata_py_client", + "label": "Client", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast" + }, + { + "id": "scripts_collect_naver_metadata_py_response", + "label": "Response", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast" + }, + { + "id": "scripts_collect_naver_metadata_load_csv_sample", + "label": "load_csv_sample()", + "file_type": "code", + "source_file": "scripts/collect_naver_metadata.py", + "source_location": "L94", + "_origin": "ast" + }, + { + "id": "scripts_collect_naver_metadata_fetch_blog", + "label": "fetch_blog()", + "file_type": "code", + "source_file": "scripts/collect_naver_metadata.py", + "source_location": "L117", + "_origin": "ast" + }, + { + "id": "scripts_collect_naver_metadata_build_place_block", + "label": "build_place_block()", + "file_type": "code", + "source_file": "scripts/collect_naver_metadata.py", + "source_location": "L143", + "_origin": "ast" + }, + { + "id": "scripts_collect_naver_metadata_extract_metadata_batch", + "label": "extract_metadata_batch()", + "file_type": "code", + "source_file": "scripts/collect_naver_metadata.py", + "source_location": "L164", + "_origin": "ast" + }, + { + "id": "scripts_collect_naver_metadata_load_progress", + "label": "load_progress()", + "file_type": "code", + "source_file": "scripts/collect_naver_metadata.py", + "source_location": "L188", + "_origin": "ast" + }, + { + "id": "scripts_collect_naver_metadata_save_progress", + "label": "save_progress()", + "file_type": "code", + "source_file": "scripts/collect_naver_metadata.py", + "source_location": "L195", + "_origin": "ast" + }, + { + "id": "scripts_collect_naver_metadata_merge_meta", + "label": "merge_meta()", + "file_type": "code", + "source_file": "scripts/collect_naver_metadata.py", + "source_location": "L201", + "_origin": "ast" + }, + { + "id": "scripts_collect_naver_metadata_main", + "label": "main()", + "file_type": "code", + "source_file": "scripts/collect_naver_metadata.py", + "source_location": "L215", + "_origin": "ast" + }, + { + "id": "scripts_collect_naver_metadata_rationale_51", + "label": "\ucd08\ub2f9 \uc694\uccad \uc218\ub97c RATE_LIMIT_RPS \uc774\ud558\ub85c \uc81c\ud55c", + "file_type": "rationale", + "source_file": "scripts/collect_naver_metadata.py", + "source_location": "L51", + "_origin": "ast" + }, + { + "id": "scripts_collect_naver_metadata_rationale_95", + "label": "CSV\uc5d0\uc11c \uc0d8\ud50c \ucd94\ucd9c (\uc74c\uc2dd\uc810\u00b7\uad00\uad11\uc9c0 \ube44\uc911 \ub192\uc784)", + "file_type": "rationale", + "source_file": "scripts/collect_naver_metadata.py", + "source_location": "L95", + "_origin": "ast" + }, + { + "id": "scripts_collect_naver_metadata_rationale_118", + "label": "\ub2e8\uc77c POI\uc758 \ube14\ub85c\uadf8 \uacb0\uacfc \uc218\uc9d1 (\uc2a4\ub808\ub4dc\ud480\uc5d0\uc11c \uc2e4\ud589)", + "file_type": "rationale", + "source_file": "scripts/collect_naver_metadata.py", + "source_location": "L118", + "_origin": "ast" + }, + { + "id": "scripts_collect_naver_only", + "label": "collect_naver_only.py", + "file_type": "code", + "source_file": "scripts/collect_naver_only.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "scripts_collect_naver_only_rate_get", + "label": "_rate_get()", + "file_type": "code", + "source_file": "scripts/collect_naver_only.py", + "source_location": "L66", + "_origin": "ast" + }, + { + "id": "scripts_collect_naver_only_py_client", + "label": "Client", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast" + }, + { + "id": "scripts_collect_naver_only_py_response", + "label": "Response", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast" + }, + { + "id": "scripts_collect_naver_only_strip", + "label": "_strip()", + "file_type": "code", + "source_file": "scripts/collect_naver_only.py", + "source_location": "L80", + "_origin": "ast" + }, + { + "id": "scripts_collect_naver_only_count_hits", + "label": "_count_hits()", + "file_type": "code", + "source_file": "scripts/collect_naver_only.py", + "source_location": "L181", + "_origin": "ast" + }, + { + "id": "scripts_collect_naver_only_parse_price", + "label": "_parse_price()", + "file_type": "code", + "source_file": "scripts/collect_naver_only.py", + "source_location": "L204", + "_origin": "ast" + }, + { + "id": "scripts_collect_naver_only_extract_fields", + "label": "extract_fields()", + "file_type": "code", + "source_file": "scripts/collect_naver_only.py", + "source_location": "L228", + "_origin": "ast" + }, + { + "id": "scripts_collect_naver_only_build_summary_text", + "label": "build_summary_text()", + "file_type": "code", + "source_file": "scripts/collect_naver_only.py", + "source_location": "L297", + "_origin": "ast" + }, + { + "id": "scripts_collect_naver_only_fetch_blog_texts", + "label": "_fetch_blog_texts()", + "file_type": "code", + "source_file": "scripts/collect_naver_only.py", + "source_location": "L311", + "_origin": "ast" + }, + { + "id": "scripts_collect_naver_only_fetch_and_extract", + "label": "fetch_and_extract()", + "file_type": "code", + "source_file": "scripts/collect_naver_only.py", + "source_location": "L334", + "_origin": "ast" + }, + { + "id": "scripts_collect_naver_only_load_csv_sample", + "label": "load_csv_sample()", + "file_type": "code", + "source_file": "scripts/collect_naver_only.py", + "source_location": "L372", + "_origin": "ast" + }, + { + "id": "scripts_collect_naver_only_load_progress", + "label": "load_progress()", + "file_type": "code", + "source_file": "scripts/collect_naver_only.py", + "source_location": "L391", + "_origin": "ast" + }, + { + "id": "scripts_collect_naver_only_save_progress", + "label": "save_progress()", + "file_type": "code", + "source_file": "scripts/collect_naver_only.py", + "source_location": "L397", + "_origin": "ast" + }, + { + "id": "scripts_collect_naver_only_main", + "label": "main()", + "file_type": "code", + "source_file": "scripts/collect_naver_only.py", + "source_location": "L404", + "_origin": "ast" + }, + { + "id": "scripts_collect_naver_only_rationale_298", + "label": "RAG \uc784\ubca0\ub529\uc6a9 \uc790\uc5f0\uc5b4 \uc694\uc57d \ubb38\uc7a5 \uc0dd\uc131", + "file_type": "rationale", + "source_file": "scripts/collect_naver_only.py", + "source_location": "L298", + "_origin": "ast" + }, + { + "id": "scripts_demo_live_e2e", + "label": "demo_live_e2e.py", + "file_type": "code", + "source_file": "scripts/demo_live_e2e.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "scripts_demo_live_e2e_main", + "label": "main()", + "file_type": "code", + "source_file": "scripts/demo_live_e2e.py", + "source_location": "L27", + "_origin": "ast" + }, + { + "id": "scripts_demo_live_e2e_rationale_1", + "label": "\ub77c\uc774\ube0c E2E \ub370\ubaa8 \u2014 \uc2e4\uc81c Claude API + \uc2e4\uc81c Neo4j Aura\ub97c \ub3d9\uc2dc\uc5d0 \ud638\ucd9c\ud55c\ub2e4. mock \uc5c6\uc74c. .env\uc758\u2026", + "file_type": "rationale", + "source_file": "scripts/demo_live_e2e.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "scripts_execute", + "label": "execute.py", + "file_type": "code", + "source_file": "scripts/execute.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "scripts_execute_progress_indicator", + "label": "progress_indicator()", + "file_type": "code", + "source_file": "scripts/execute.py", + "source_location": "L26", + "_origin": "ast" + }, + { + "id": "scripts_execute_stepexecutor", + "label": "StepExecutor", + "file_type": "code", + "source_file": "scripts/execute.py", + "source_location": "L53", + "_origin": "ast" + }, + { + "id": "scripts_execute_stepexecutor_init", + "label": ".__init__()", + "file_type": "code", + "source_file": "scripts/execute.py", + "source_location": "L61", + "_origin": "ast" + }, + { + "id": "scripts_execute_stepexecutor_run", + "label": ".run()", + "file_type": "code", + "source_file": "scripts/execute.py", + "source_location": "L83", + "_origin": "ast" + }, + { + "id": "scripts_execute_stepexecutor_stamp", + "label": "._stamp()", + "file_type": "code", + "source_file": "scripts/execute.py", + "source_location": "L94", + "_origin": "ast" + }, + { + "id": "scripts_execute_stepexecutor_read_json", + "label": "._read_json()", + "file_type": "code", + "source_file": "scripts/execute.py", + "source_location": "L100", + "_origin": "ast" + }, + { + "id": "scripts_execute_py_path", + "label": "Path", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast" + }, + { + "id": "scripts_execute_stepexecutor_write_json", + "label": "._write_json()", + "file_type": "code", + "source_file": "scripts/execute.py", + "source_location": "L104", + "_origin": "ast" + }, + { + "id": "scripts_execute_stepexecutor_run_git", + "label": "._run_git()", + "file_type": "code", + "source_file": "scripts/execute.py", + "source_location": "L109", + "_origin": "ast" + }, + { + "id": "completedprocess", + "label": "CompletedProcess", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast" + }, + { + "id": "scripts_execute_stepexecutor_checkout_branch", + "label": "._checkout_branch()", + "file_type": "code", + "source_file": "scripts/execute.py", + "source_location": "L113", + "_origin": "ast" + }, + { + "id": "scripts_execute_stepexecutor_commit_step", + "label": "._commit_step()", + "file_type": "code", + "source_file": "scripts/execute.py", + "source_location": "L136", + "_origin": "ast" + }, + { + "id": "scripts_execute_stepexecutor_update_top_index", + "label": "._update_top_index()", + "file_type": "code", + "source_file": "scripts/execute.py", + "source_location": "L161", + "_origin": "ast" + }, + { + "id": "scripts_execute_stepexecutor_load_guardrails", + "label": "._load_guardrails()", + "file_type": "code", + "source_file": "scripts/execute.py", + "source_location": "L177", + "_origin": "ast" + }, + { + "id": "scripts_execute_stepexecutor_build_step_context", + "label": "._build_step_context()", + "file_type": "code", + "source_file": "scripts/execute.py", + "source_location": "L189", + "_origin": "ast" + }, + { + "id": "scripts_execute_stepexecutor_build_preamble", + "label": "._build_preamble()", + "file_type": "code", + "source_file": "scripts/execute.py", + "source_location": "L199", + "_origin": "ast" + }, + { + "id": "scripts_execute_stepexecutor_invoke_claude", + "label": "._invoke_claude()", + "file_type": "code", + "source_file": "scripts/execute.py", + "source_location": "L229", + "_origin": "ast" + }, + { + "id": "scripts_execute_stepexecutor_print_header", + "label": "._print_header()", + "file_type": "code", + "source_file": "scripts/execute.py", + "source_location": "L261", + "_origin": "ast" + }, + { + "id": "scripts_execute_stepexecutor_check_blockers", + "label": "._check_blockers()", + "file_type": "code", + "source_file": "scripts/execute.py", + "source_location": "L269", + "_origin": "ast" + }, + { + "id": "scripts_execute_stepexecutor_ensure_created_at", + "label": "._ensure_created_at()", + "file_type": "code", + "source_file": "scripts/execute.py", + "source_location": "L285", + "_origin": "ast" + }, + { + "id": "scripts_execute_stepexecutor_execute_single_step", + "label": "._execute_single_step()", + "file_type": "code", + "source_file": "scripts/execute.py", + "source_location": "L293", + "_origin": "ast" + }, + { + "id": "scripts_execute_stepexecutor_execute_all_steps", + "label": "._execute_all_steps()", + "file_type": "code", + "source_file": "scripts/execute.py", + "source_location": "L364", + "_origin": "ast" + }, + { + "id": "scripts_execute_stepexecutor_finalize", + "label": "._finalize()", + "file_type": "code", + "source_file": "scripts/execute.py", + "source_location": "L381", + "_origin": "ast" + }, + { + "id": "scripts_execute_main", + "label": "main()", + "file_type": "code", + "source_file": "scripts/execute.py", + "source_location": "L407", + "_origin": "ast" + }, + { + "id": "scripts_execute_rationale_27", + "label": "\ud130\ubbf8\ub110 \uc9c4\ud589 \ud45c\uc2dc\uae30. with \ubb38\uc73c\ub85c \uc0ac\uc6a9\ud558\uba70 .elapsed \ub85c \uacbd\uacfc \uc2dc\uac04\uc744 \uc77d\ub294\ub2e4.", + "file_type": "rationale", + "source_file": "scripts/execute.py", + "source_location": "L27", + "_origin": "ast" + }, + { + "id": "scripts_execute_rationale_54", + "label": "Phase \ub514\ub809\ud1a0\ub9ac \uc548\uc758 step\ub4e4\uc744 \uc21c\ucc28 \uc2e4\ud589\ud558\ub294 \ud558\ub124\uc2a4.", + "file_type": "rationale", + "source_file": "scripts/execute.py", + "source_location": "L54", + "_origin": "ast" + }, + { + "id": "scripts_execute_rationale_294", + "label": "\ub2e8\uc77c step \uc2e4\ud589 (\uc7ac\uc2dc\ub3c4 \ud3ec\ud568). \uc644\ub8cc\ub418\uba74 True, \uc2e4\ud328/\ucc28\ub2e8\uc774\uba74 False.", + "file_type": "rationale", + "source_file": "scripts/execute.py", + "source_location": "L294", + "_origin": "ast" + }, + { + "id": "scripts_extract_visitor_stats", + "label": "extract_visitor_stats.py", + "file_type": "code", + "source_file": "scripts/extract_visitor_stats.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "scripts_extract_visitor_stats_parse_int", + "label": "_parse_int()", + "file_type": "code", + "source_file": "scripts/extract_visitor_stats.py", + "source_location": "L31", + "_origin": "ast" + }, + { + "id": "scripts_extract_visitor_stats_is_header_row", + "label": "_is_header_row()", + "file_type": "code", + "source_file": "scripts/extract_visitor_stats.py", + "source_location": "L44", + "_origin": "ast" + }, + { + "id": "scripts_extract_visitor_stats_extract_year", + "label": "extract_year()", + "file_type": "code", + "source_file": "scripts/extract_visitor_stats.py", + "source_location": "L49", + "_origin": "ast" + }, + { + "id": "scripts_extract_visitor_stats_py_path", + "label": "Path", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast" + }, + { + "id": "scripts_extract_visitor_stats_py_dataframe", + "label": "DataFrame", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast" + }, + { + "id": "scripts_extract_visitor_stats_compute_congestion", + "label": "compute_congestion()", + "file_type": "code", + "source_file": "scripts/extract_visitor_stats.py", + "source_location": "L87", + "_origin": "ast" + }, + { + "id": "scripts_extract_visitor_stats_main", + "label": "main()", + "file_type": "code", + "source_file": "scripts/extract_visitor_stats.py", + "source_location": "L134", + "_origin": "ast" + }, + { + "id": "scripts_extract_visitor_stats_rationale_1", + "label": "PDF \uc804\ucc98\ub9ac \uc2a4\ud06c\ub9bd\ud2b8: \ud55c\uad6d\ubb38\ud654\uad00\uad11\uc5f0\uad6c\uc6d0 \uc8fc\uc694\uad00\uad11\uc9c0\uc810 \uc785\uc7a5\uac1d \ud1b5\uacc4 (2020-2024) Usage: python\u2026", + "file_type": "rationale", + "source_file": "scripts/extract_visitor_stats.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "scripts_extract_visitor_stats_rationale_32", + "label": "1,234,567' or '-' \u2192 float or None.", + "file_type": "rationale", + "source_file": "scripts/extract_visitor_stats.py", + "source_location": "L32", + "_origin": "ast" + }, + { + "id": "scripts_extract_visitor_stats_rationale_50", + "label": "\ud55c \uc5f0\ub3c4 PDF\uc5d0\uc11c \uad00\uad11\uc9c0\ubcc4 '\uacc4' \ud589\ub9cc \ucd94\ucd9c \u2192 long \ud3ec\ub9f7 DataFrame.", + "file_type": "rationale", + "source_file": "scripts/extract_visitor_stats.py", + "source_location": "L50", + "_origin": "ast" + }, + { + "id": "scripts_extract_visitor_stats_rationale_88", + "label": "5\uac1c\ub144 raw \ub370\uc774\ud130 \u2192 poi_name \u00d7 month \uc9d1\uacc4 \ubc0f congestion_score \uc0b0\ucd9c.", + "file_type": "rationale", + "source_file": "scripts/extract_visitor_stats.py", + "source_location": "L88", + "_origin": "ast" + }, + { + "id": "scripts_fetch_jeju_hours", + "label": "fetch_jeju_hours.py", + "file_type": "code", + "source_file": "scripts/fetch_jeju_hours.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "scripts_fetch_jeju_hours_fetch_one", + "label": "_fetch_one()", + "file_type": "code", + "source_file": "scripts/fetch_jeju_hours.py", + "source_location": "L35", + "_origin": "ast" + }, + { + "id": "semaphore", + "label": "Semaphore", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast" + }, + { + "id": "scripts_fetch_jeju_hours_main", + "label": "main()", + "file_type": "code", + "source_file": "scripts/fetch_jeju_hours.py", + "source_location": "L43", + "_origin": "ast" + }, + { + "id": "scripts_fetch_jeju_hours_rationale_1", + "label": "\uc81c\uc8fc POI(pois.csv) \uc804\uccb4\uc5d0 \ub300\ud574 TourAPI \uc2e4\uc81c \uc6b4\uc601\uc2dc\uac04\uc744 \ubbf8\ub9ac \uc870\ud68c\ud574 \uce90\uc2dc \ud30c\uc77c\ub85c \uc800\uc7a5\ud55c\ub2e4.\u2026", + "file_type": "rationale", + "source_file": "scripts/fetch_jeju_hours.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "scripts_fetch_missing_pois", + "label": "fetch_missing_pois.py", + "file_type": "code", + "source_file": "scripts/fetch_missing_pois.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "scripts_fetch_missing_pois_load_existing_ids", + "label": "load_existing_ids()", + "file_type": "code", + "source_file": "scripts/fetch_missing_pois.py", + "source_location": "L26", + "_origin": "ast" + }, + { + "id": "scripts_fetch_missing_pois_load_api_key", + "label": "load_api_key()", + "file_type": "code", + "source_file": "scripts/fetch_missing_pois.py", + "source_location": "L38", + "_origin": "ast" + }, + { + "id": "scripts_fetch_missing_pois_fetch_page", + "label": "fetch_page()", + "file_type": "code", + "source_file": "scripts/fetch_missing_pois.py", + "source_location": "L48", + "_origin": "ast" + }, + { + "id": "asyncclient", + "label": "AsyncClient", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast" + }, + { + "id": "scripts_fetch_missing_pois_fetch_region_type", + "label": "fetch_region_type()", + "file_type": "code", + "source_file": "scripts/fetch_missing_pois.py", + "source_location": "L87", + "_origin": "ast" + }, + { + "id": "scripts_fetch_missing_pois_main", + "label": "main()", + "file_type": "code", + "source_file": "scripts/fetch_missing_pois.py", + "source_location": "L150", + "_origin": "ast" + }, + { + "id": "scripts_fetch_missing_pois_rationale_1", + "label": "TourAPI areaBasedList2\ub85c \uc804\uad6d POI \uc218\uc9d1 \u2192 pois.csv\uc5d0 \ub204\ub77d\ubd84 \ucd94\uac00.", + "file_type": "rationale", + "source_file": "scripts/fetch_missing_pois.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "scripts_geocode_jeju_missing_coords", + "label": "geocode_jeju_missing_coords.py", + "file_type": "code", + "source_file": "scripts/geocode_jeju_missing_coords.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "scripts_geocode_jeju_missing_coords_main", + "label": "main()", + "file_type": "code", + "source_file": "scripts/geocode_jeju_missing_coords.py", + "source_location": "L28", + "_origin": "ast" + }, + { + "id": "scripts_load_knowledge_graph_neo4j", + "label": "load_knowledge_graph_neo4j.py", + "file_type": "code", + "source_file": "scripts/load_knowledge_graph_neo4j.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "scripts_load_knowledge_graph_neo4j_strip_type_suffix", + "label": "_strip_type_suffix()", + "file_type": "code", + "source_file": "scripts/load_knowledge_graph_neo4j.py", + "source_location": "L37", + "_origin": "ast" + }, + { + "id": "scripts_load_knowledge_graph_neo4j_load_rows", + "label": "_load_rows()", + "file_type": "code", + "source_file": "scripts/load_knowledge_graph_neo4j.py", + "source_location": "L45", + "_origin": "ast" + }, + { + "id": "scripts_load_knowledge_graph_neo4j_run_batched", + "label": "_run_batched()", + "file_type": "code", + "source_file": "scripts/load_knowledge_graph_neo4j.py", + "source_location": "L52", + "_origin": "ast" + }, + { + "id": "driver", + "label": "Driver", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast" + }, + { + "id": "scripts_load_knowledge_graph_neo4j_main", + "label": "main()", + "file_type": "code", + "source_file": "scripts/load_knowledge_graph_neo4j.py", + "source_location": "L61", + "_origin": "ast" + }, + { + "id": "scripts_neo4j_coverage_analysis", + "label": "neo4j_coverage_analysis.py", + "file_type": "code", + "source_file": "scripts/neo4j_coverage_analysis.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "scripts_neo4j_coverage_analysis_make_place", + "label": "make_place()", + "file_type": "code", + "source_file": "scripts/neo4j_coverage_analysis.py", + "source_location": "L46", + "_origin": "ast" + }, + { + "id": "scripts_neo4j_coverage_analysis_sigungu_for", + "label": "sigungu_for()", + "file_type": "code", + "source_file": "scripts/neo4j_coverage_analysis.py", + "source_location": "L60", + "_origin": "ast" + }, + { + "id": "scripts_neo4j_coverage_analysis_neo4j_backtrack_count", + "label": "neo4j_backtrack_count()", + "file_type": "code", + "source_file": "scripts/neo4j_coverage_analysis.py", + "source_location": "L66", + "_origin": "ast" + }, + { + "id": "scripts_neo4j_coverage_analysis_neo4j_timeslot_density", + "label": "neo4j_timeslot_density()", + "file_type": "code", + "source_file": "scripts/neo4j_coverage_analysis.py", + "source_location": "L84", + "_origin": "ast" + }, + { + "id": "scripts_neo4j_coverage_analysis_coverageresult", + "label": "CoverageResult", + "file_type": "code", + "source_file": "scripts/neo4j_coverage_analysis.py", + "source_location": "L114", + "_origin": "ast" + }, + { + "id": "scripts_neo4j_coverage_analysis_coverageresult_covered", + "label": ".covered()", + "file_type": "code", + "source_file": "scripts/neo4j_coverage_analysis.py", + "source_location": "L122", + "_origin": "ast" + }, + { + "id": "scripts_neo4j_coverage_analysis_run_vrptw", + "label": "run_vrptw()", + "file_type": "code", + "source_file": "scripts/neo4j_coverage_analysis.py", + "source_location": "L126", + "_origin": "ast" + }, + { + "id": "scripts_neo4j_coverage_analysis_print_result", + "label": "print_result()", + "file_type": "code", + "source_file": "scripts/neo4j_coverage_analysis.py", + "source_location": "L141", + "_origin": "ast" + }, + { + "id": "scripts_neo4j_coverage_analysis_test_role_a", + "label": "test_role_a()", + "file_type": "code", + "source_file": "scripts/neo4j_coverage_analysis.py", + "source_location": "L152", + "_origin": "ast" + }, + { + "id": "scripts_neo4j_coverage_analysis_test_role_b", + "label": "test_role_b()", + "file_type": "code", + "source_file": "scripts/neo4j_coverage_analysis.py", + "source_location": "L217", + "_origin": "ast" + }, + { + "id": "scripts_neo4j_coverage_analysis_test_role_c", + "label": "test_role_c()", + "file_type": "code", + "source_file": "scripts/neo4j_coverage_analysis.py", + "source_location": "L264", + "_origin": "ast" + }, + { + "id": "scripts_neo4j_coverage_analysis_main", + "label": "main()", + "file_type": "code", + "source_file": "scripts/neo4j_coverage_analysis.py", + "source_location": "L312", + "_origin": "ast" + }, + { + "id": "scripts_neo4j_coverage_analysis_rationale_1", + "label": "Neo4j \uc81c\uac70 \ud0c0\ub2f9\uc131 \ubd84\uc11d \u2014 \uc124\uacc4 \uc758\ub3c4 vs \ud604\uc7ac Python \ub85c\uc9c1 \ucee4\ubc84\ub9ac\uc9c0 \ube44\uad50. Neo4j\uac00 SUMMARY.md\uc5d0\uc11c \ub9e1\uae30\ub85c \ud55c 3\uac00\uc9c0\u2026", + "file_type": "rationale", + "source_file": "scripts/neo4j_coverage_analysis.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "scripts_neo4j_coverage_analysis_rationale_67", + "label": "Neo4j IN_AREA \ub178\ub4dc \ub85c\uc9c1 \uc2dc\ubbac\ub808\uc774\uc158. \ubc29\ubb38 \uc21c\uc11c\uc5d0\uc11c \uc774\ubbf8 \ubc29\ubb38\ud55c Area(\uc2dc\uad70\uad6c)\uc5d0 \ube44\uc5f0\uc18d\uc73c\ub85c \uc7ac\uc9c4\uc785\ud558\ub294 \ud69f\uc218\ub97c \uacc4\uc0b0.\u2026", + "file_type": "rationale", + "source_file": "scripts/neo4j_coverage_analysis.py", + "source_location": "L67", + "_origin": "ast" + }, + { + "id": "scripts_neo4j_coverage_analysis_rationale_85", + "label": "Neo4j TimeSlot \ub178\ub4dc \ubc00\ub3c4 \uc2dc\ubbac\ub808\uc774\uc158. 09:00 \ucd9c\ubc1c, \uac01 POI\ub97c \uc21c\uc11c\ub300\ub85c \ubc29\ubb38\ud588\uc744 \ub54c \uc2dc\uac04\ub300\ubcc4 \uc810\uc720 \uc218 \uacc4\uc0b0.", + "file_type": "rationale", + "source_file": "scripts/neo4j_coverage_analysis.py", + "source_location": "L85", + "_origin": "ast" + }, + { + "id": "scripts_neo4j_coverage_analysis_rationale_127", + "label": "VRPTWEngine + cluster_dispersion \uc2e4\ud589, (vrptw_result, dispersion_report) \ubc18\ud658.", + "file_type": "rationale", + "source_file": "scripts/neo4j_coverage_analysis.py", + "source_location": "L127", + "_origin": "ast" + }, + { + "id": "scripts_test_execute", + "label": "test_execute.py", + "file_type": "code", + "source_file": "scripts/test_execute.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "scripts_test_execute_py_fixture", + "label": "fixture", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast" + }, + { + "id": "scripts_test_execute_tmp_project", + "label": "tmp_project()", + "file_type": "code", + "source_file": "scripts/test_execute.py", + "source_location": "L26", + "_origin": "ast" + }, + { + "id": "scripts_test_execute_phase_dir", + "label": "phase_dir()", + "file_type": "code", + "source_file": "scripts/test_execute.py", + "source_location": "L43", + "_origin": "ast" + }, + { + "id": "scripts_test_execute_top_index", + "label": "top_index()", + "file_type": "code", + "source_file": "scripts/test_execute.py", + "source_location": "L64", + "_origin": "ast" + }, + { + "id": "scripts_test_execute_executor", + "label": "executor()", + "file_type": "code", + "source_file": "scripts/test_execute.py", + "source_location": "L78", + "_origin": "ast" + }, + { + "id": "scripts_test_execute_teststamp", + "label": "TestStamp", + "file_type": "code", + "source_file": "scripts/test_execute.py", + "source_location": "L96", + "_origin": "ast" + }, + { + "id": "scripts_test_execute_teststamp_test_returns_kst_timestamp", + "label": ".test_returns_kst_timestamp()", + "file_type": "code", + "source_file": "scripts/test_execute.py", + "source_location": "L97", + "_origin": "ast" + }, + { + "id": "scripts_test_execute_teststamp_test_format_is_iso", + "label": ".test_format_is_iso()", + "file_type": "code", + "source_file": "scripts/test_execute.py", + "source_location": "L101", + "_origin": "ast" + }, + { + "id": "scripts_test_execute_teststamp_test_is_current_time", + "label": ".test_is_current_time()", + "file_type": "code", + "source_file": "scripts/test_execute.py", + "source_location": "L106", + "_origin": "ast" + }, + { + "id": "scripts_test_execute_testjsonhelpers", + "label": "TestJsonHelpers", + "file_type": "code", + "source_file": "scripts/test_execute.py", + "source_location": "L118", + "_origin": "ast" + }, + { + "id": "scripts_test_execute_testjsonhelpers_test_roundtrip", + "label": ".test_roundtrip()", + "file_type": "code", + "source_file": "scripts/test_execute.py", + "source_location": "L119", + "_origin": "ast" + }, + { + "id": "scripts_test_execute_testjsonhelpers_test_save_ensures_ascii_false", + "label": ".test_save_ensures_ascii_false()", + "file_type": "code", + "source_file": "scripts/test_execute.py", + "source_location": "L126", + "_origin": "ast" + }, + { + "id": "scripts_test_execute_testjsonhelpers_test_save_indented", + "label": ".test_save_indented()", + "file_type": "code", + "source_file": "scripts/test_execute.py", + "source_location": "L133", + "_origin": "ast" + }, + { + "id": "scripts_test_execute_testjsonhelpers_test_load_nonexistent_raises", + "label": ".test_load_nonexistent_raises()", + "file_type": "code", + "source_file": "scripts/test_execute.py", + "source_location": "L139", + "_origin": "ast" + }, + { + "id": "scripts_test_execute_testloadguardrails", + "label": "TestLoadGuardrails", + "file_type": "code", + "source_file": "scripts/test_execute.py", + "source_location": "L148", + "_origin": "ast" + }, + { + "id": "scripts_test_execute_testloadguardrails_test_loads_claude_md_and_docs", + "label": ".test_loads_claude_md_and_docs()", + "file_type": "code", + "source_file": "scripts/test_execute.py", + "source_location": "L149", + "_origin": "ast" + }, + { + "id": "scripts_test_execute_testloadguardrails_test_sections_separated_by_divider", + "label": ".test_sections_separated_by_divider()", + "file_type": "code", + "source_file": "scripts/test_execute.py", + "source_location": "L157", + "_origin": "ast" + }, + { + "id": "scripts_test_execute_testloadguardrails_test_docs_sorted_alphabetically", + "label": ".test_docs_sorted_alphabetically()", + "file_type": "code", + "source_file": "scripts/test_execute.py", + "source_location": "L162", + "_origin": "ast" + }, + { + "id": "scripts_test_execute_testloadguardrails_test_no_claude_md", + "label": ".test_no_claude_md()", + "file_type": "code", + "source_file": "scripts/test_execute.py", + "source_location": "L169", + "_origin": "ast" + }, + { + "id": "scripts_test_execute_testloadguardrails_test_no_docs_dir", + "label": ".test_no_docs_dir()", + "file_type": "code", + "source_file": "scripts/test_execute.py", + "source_location": "L176", + "_origin": "ast" + }, + { + "id": "scripts_test_execute_testloadguardrails_test_empty_project", + "label": ".test_empty_project()", + "file_type": "code", + "source_file": "scripts/test_execute.py", + "source_location": "L184", + "_origin": "ast" + }, + { + "id": "scripts_test_execute_testbuildstepcontext", + "label": "TestBuildStepContext", + "file_type": "code", + "source_file": "scripts/test_execute.py", + "source_location": "L200", + "_origin": "ast" + }, + { + "id": "scripts_test_execute_testbuildstepcontext_test_includes_completed_with_summary", + "label": ".test_includes_completed_with_summary()", + "file_type": "code", + "source_file": "scripts/test_execute.py", + "source_location": "L201", + "_origin": "ast" + }, + { + "id": "scripts_test_execute_testbuildstepcontext_test_excludes_pending", + "label": ".test_excludes_pending()", + "file_type": "code", + "source_file": "scripts/test_execute.py", + "source_location": "L207", + "_origin": "ast" + }, + { + "id": "scripts_test_execute_testbuildstepcontext_test_excludes_completed_without_summary", + "label": ".test_excludes_completed_without_summary()", + "file_type": "code", + "source_file": "scripts/test_execute.py", + "source_location": "L212", + "_origin": "ast" + }, + { + "id": "scripts_test_execute_testbuildstepcontext_test_empty_when_no_completed", + "label": ".test_empty_when_no_completed()", + "file_type": "code", + "source_file": "scripts/test_execute.py", + "source_location": "L219", + "_origin": "ast" + }, + { + "id": "scripts_test_execute_testbuildstepcontext_test_has_header", + "label": ".test_has_header()", + "file_type": "code", + "source_file": "scripts/test_execute.py", + "source_location": "L224", + "_origin": "ast" + }, + { + "id": "scripts_test_execute_testbuildpreamble", + "label": "TestBuildPreamble", + "file_type": "code", + "source_file": "scripts/test_execute.py", + "source_location": "L234", + "_origin": "ast" + }, + { + "id": "scripts_test_execute_testbuildpreamble_test_includes_project_name", + "label": ".test_includes_project_name()", + "file_type": "code", + "source_file": "scripts/test_execute.py", + "source_location": "L235", + "_origin": "ast" + }, + { + "id": "scripts_test_execute_testbuildpreamble_test_includes_guardrails", + "label": ".test_includes_guardrails()", + "file_type": "code", + "source_file": "scripts/test_execute.py", + "source_location": "L239", + "_origin": "ast" + }, + { + "id": "scripts_test_execute_testbuildpreamble_test_includes_step_context", + "label": ".test_includes_step_context()", + "file_type": "code", + "source_file": "scripts/test_execute.py", + "source_location": "L243", + "_origin": "ast" + }, + { + "id": "scripts_test_execute_testbuildpreamble_test_includes_commit_example", + "label": ".test_includes_commit_example()", + "file_type": "code", + "source_file": "scripts/test_execute.py", + "source_location": "L248", + "_origin": "ast" + }, + { + "id": "scripts_test_execute_testbuildpreamble_test_includes_rules", + "label": ".test_includes_rules()", + "file_type": "code", + "source_file": "scripts/test_execute.py", + "source_location": "L252", + "_origin": "ast" + }, + { + "id": "scripts_test_execute_testbuildpreamble_test_no_retry_section_by_default", + "label": ".test_no_retry_section_by_default()", + "file_type": "code", + "source_file": "scripts/test_execute.py", + "source_location": "L257", + "_origin": "ast" + }, + { + "id": "scripts_test_execute_testbuildpreamble_test_retry_section_with_prev_error", + "label": ".test_retry_section_with_prev_error()", + "file_type": "code", + "source_file": "scripts/test_execute.py", + "source_location": "L261", + "_origin": "ast" + }, + { + "id": "scripts_test_execute_testbuildpreamble_test_includes_max_retries", + "label": ".test_includes_max_retries()", + "file_type": "code", + "source_file": "scripts/test_execute.py", + "source_location": "L266", + "_origin": "ast" + }, + { + "id": "scripts_test_execute_testbuildpreamble_test_includes_index_path", + "label": ".test_includes_index_path()", + "file_type": "code", + "source_file": "scripts/test_execute.py", + "source_location": "L270", + "_origin": "ast" + }, + { + "id": "scripts_test_execute_testupdatetopindex", + "label": "TestUpdateTopIndex", + "file_type": "code", + "source_file": "scripts/test_execute.py", + "source_location": "L279", + "_origin": "ast" + }, + { + "id": "scripts_test_execute_testupdatetopindex_test_completed", + "label": ".test_completed()", + "file_type": "code", + "source_file": "scripts/test_execute.py", + "source_location": "L280", + "_origin": "ast" + }, + { + "id": "scripts_test_execute_testupdatetopindex_test_error", + "label": ".test_error()", + "file_type": "code", + "source_file": "scripts/test_execute.py", + "source_location": "L288", + "_origin": "ast" + }, + { + "id": "scripts_test_execute_testupdatetopindex_test_blocked", + "label": ".test_blocked()", + "file_type": "code", + "source_file": "scripts/test_execute.py", + "source_location": "L296", + "_origin": "ast" + }, + { + "id": "scripts_test_execute_testupdatetopindex_test_other_phases_unchanged", + "label": ".test_other_phases_unchanged()", + "file_type": "code", + "source_file": "scripts/test_execute.py", + "source_location": "L304", + "_origin": "ast" + }, + { + "id": "scripts_test_execute_testupdatetopindex_test_nonexistent_dir_is_noop", + "label": ".test_nonexistent_dir_is_noop()", + "file_type": "code", + "source_file": "scripts/test_execute.py", + "source_location": "L311", + "_origin": "ast" + }, + { + "id": "scripts_test_execute_testupdatetopindex_test_no_top_index_file", + "label": ".test_no_top_index_file()", + "file_type": "code", + "source_file": "scripts/test_execute.py", + "source_location": "L320", + "_origin": "ast" + }, + { + "id": "scripts_test_execute_testcheckoutbranch", + "label": "TestCheckoutBranch", + "file_type": "code", + "source_file": "scripts/test_execute.py", + "source_location": "L329", + "_origin": "ast" + }, + { + "id": "scripts_test_execute_testcheckoutbranch_mock_git", + "label": "._mock_git()", + "file_type": "code", + "source_file": "scripts/test_execute.py", + "source_location": "L330", + "_origin": "ast" + }, + { + "id": "scripts_test_execute_testcheckoutbranch_test_already_on_branch", + "label": ".test_already_on_branch()", + "file_type": "code", + "source_file": "scripts/test_execute.py", + "source_location": "L340", + "_origin": "ast" + }, + { + "id": "scripts_test_execute_testcheckoutbranch_test_branch_exists_checkout", + "label": ".test_branch_exists_checkout()", + "file_type": "code", + "source_file": "scripts/test_execute.py", + "source_location": "L346", + "_origin": "ast" + }, + { + "id": "scripts_test_execute_testcheckoutbranch_test_branch_not_exists_create", + "label": ".test_branch_not_exists_create()", + "file_type": "code", + "source_file": "scripts/test_execute.py", + "source_location": "L354", + "_origin": "ast" + }, + { + "id": "scripts_test_execute_testcheckoutbranch_test_checkout_fails_exits", + "label": ".test_checkout_fails_exits()", + "file_type": "code", + "source_file": "scripts/test_execute.py", + "source_location": "L362", + "_origin": "ast" + }, + { + "id": "scripts_test_execute_testcheckoutbranch_test_no_git_exits", + "label": ".test_no_git_exits()", + "file_type": "code", + "source_file": "scripts/test_execute.py", + "source_location": "L372", + "_origin": "ast" + }, + { + "id": "scripts_test_execute_testcommitstep", + "label": "TestCommitStep", + "file_type": "code", + "source_file": "scripts/test_execute.py", + "source_location": "L385", + "_origin": "ast" + }, + { + "id": "scripts_test_execute_testcommitstep_test_two_phase_commit", + "label": ".test_two_phase_commit()", + "file_type": "code", + "source_file": "scripts/test_execute.py", + "source_location": "L386", + "_origin": "ast" + }, + { + "id": "scripts_test_execute_testcommitstep_test_no_code_changes_skips_feat_commit", + "label": ".test_no_code_changes_skips_feat_commit()", + "file_type": "code", + "source_file": "scripts/test_execute.py", + "source_location": "L402", + "_origin": "ast" + }, + { + "id": "scripts_test_execute_testinvokeclaude", + "label": "TestInvokeClaude", + "file_type": "code", + "source_file": "scripts/test_execute.py", + "source_location": "L426", + "_origin": "ast" + }, + { + "id": "scripts_test_execute_testinvokeclaude_test_invokes_claude_with_correct_args", + "label": ".test_invokes_claude_with_correct_args()", + "file_type": "code", + "source_file": "scripts/test_execute.py", + "source_location": "L427", + "_origin": "ast" + }, + { + "id": "scripts_test_execute_testinvokeclaude_test_saves_output_json", + "label": ".test_saves_output_json()", + "file_type": "code", + "source_file": "scripts/test_execute.py", + "source_location": "L443", + "_origin": "ast" + }, + { + "id": "scripts_test_execute_testinvokeclaude_test_nonexistent_step_file_exits", + "label": ".test_nonexistent_step_file_exits()", + "file_type": "code", + "source_file": "scripts/test_execute.py", + "source_location": "L457", + "_origin": "ast" + }, + { + "id": "scripts_test_execute_testinvokeclaude_test_timeout_is_1800", + "label": ".test_timeout_is_1800()", + "file_type": "code", + "source_file": "scripts/test_execute.py", + "source_location": "L463", + "_origin": "ast" + }, + { + "id": "scripts_test_execute_testprogressindicator", + "label": "TestProgressIndicator", + "file_type": "code", + "source_file": "scripts/test_execute.py", + "source_location": "L477", + "_origin": "ast" + }, + { + "id": "scripts_test_execute_testprogressindicator_test_context_manager", + "label": ".test_context_manager()", + "file_type": "code", + "source_file": "scripts/test_execute.py", + "source_location": "L478", + "_origin": "ast" + }, + { + "id": "scripts_test_execute_testprogressindicator_test_elapsed_increases", + "label": ".test_elapsed_increases()", + "file_type": "code", + "source_file": "scripts/test_execute.py", + "source_location": "L484", + "_origin": "ast" + }, + { + "id": "scripts_test_execute_testmaincli", + "label": "TestMainCli", + "file_type": "code", + "source_file": "scripts/test_execute.py", + "source_location": "L495", + "_origin": "ast" + }, + { + "id": "scripts_test_execute_testmaincli_test_no_args_exits", + "label": ".test_no_args_exits()", + "file_type": "code", + "source_file": "scripts/test_execute.py", + "source_location": "L496", + "_origin": "ast" + }, + { + "id": "scripts_test_execute_testmaincli_test_invalid_phase_dir_exits", + "label": ".test_invalid_phase_dir_exits()", + "file_type": "code", + "source_file": "scripts/test_execute.py", + "source_location": "L502", + "_origin": "ast" + }, + { + "id": "scripts_test_execute_testmaincli_test_missing_index_exits", + "label": ".test_missing_index_exits()", + "file_type": "code", + "source_file": "scripts/test_execute.py", + "source_location": "L509", + "_origin": "ast" + }, + { + "id": "scripts_test_execute_testcheckblockers", + "label": "TestCheckBlockers", + "file_type": "code", + "source_file": "scripts/test_execute.py", + "source_location": "L522", + "_origin": "ast" + }, + { + "id": "scripts_test_execute_testcheckblockers_make_executor_with_steps", + "label": "._make_executor_with_steps()", + "file_type": "code", + "source_file": "scripts/test_execute.py", + "source_location": "L523", + "_origin": "ast" + }, + { + "id": "scripts_test_execute_testcheckblockers_test_error_step_exits_1", + "label": ".test_error_step_exits_1()", + "file_type": "code", + "source_file": "scripts/test_execute.py", + "source_location": "L541", + "_origin": "ast" + }, + { + "id": "scripts_test_execute_testcheckblockers_test_blocked_step_exits_2", + "label": ".test_blocked_step_exits_2()", + "file_type": "code", + "source_file": "scripts/test_execute.py", + "source_location": "L551", + "_origin": "ast" + }, + { + "id": "scripts_test_execute_rationale_1", + "label": "execute.py \ub9ac\ud329\ud130\ub9c1 \uc548\uc804\ub9dd \ud14c\uc2a4\ud2b8. \ub9ac\ud329\ud130\ub9c1 \uc804\ud6c4 \ub3d9\uc791\uc774 \ub3d9\uc77c\ud55c\uc9c0 \uac80\uc99d\ud55c\ub2e4.", + "file_type": "rationale", + "source_file": "scripts/test_execute.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "scripts_test_execute_rationale_27", + "label": "phases/, CLAUDE.md, docs/ \ub97c \uac16\ucd98 \uc784\uc2dc \ud504\ub85c\uc81d\ud2b8 \uad6c\uc870.", + "file_type": "rationale", + "source_file": "scripts/test_execute.py", + "source_location": "L27", + "_origin": "ast" + }, + { + "id": "scripts_test_execute_rationale_44", + "label": "step 3\uac1c\ub97c \uac00\uc9c4 phase \ub514\ub809\ud1a0\ub9ac.", + "file_type": "rationale", + "source_file": "scripts/test_execute.py", + "source_location": "L44", + "_origin": "ast" + }, + { + "id": "scripts_test_execute_rationale_65", + "label": "phases/index.json (top-level).", + "file_type": "rationale", + "source_file": "scripts/test_execute.py", + "source_location": "L65", + "_origin": "ast" + }, + { + "id": "scripts_test_execute_rationale_79", + "label": "\ud14c\uc2a4\ud2b8\uc6a9 StepExecutor \uc778\uc2a4\ud134\uc2a4. git \ud638\ucd9c\uc740 \ubcc4\ub3c4 mock \ud544\uc694.", + "file_type": "rationale", + "source_file": "scripts/test_execute.py", + "source_location": "L79", + "_origin": "ast" + }, + { + "id": "scripts_test_pipeline", + "label": "test_pipeline.py", + "file_type": "code", + "source_file": "scripts/test_pipeline.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "scripts_test_pipeline_guess_coords", + "label": "_guess_coords()", + "file_type": "code", + "source_file": "scripts/test_pipeline.py", + "source_location": "L103", + "_origin": "ast" + }, + { + "id": "scripts_test_pipeline_guess_category", + "label": "_guess_category()", + "file_type": "code", + "source_file": "scripts/test_pipeline.py", + "source_location": "L115", + "_origin": "ast" + }, + { + "id": "scripts_test_pipeline_guess_duration", + "label": "_guess_duration()", + "file_type": "code", + "source_file": "scripts/test_pipeline.py", + "source_location": "L122", + "_origin": "ast" + }, + { + "id": "scripts_test_pipeline_is_accommodation", + "label": "_is_accommodation()", + "file_type": "code", + "source_file": "scripts/test_pipeline.py", + "source_location": "L129", + "_origin": "ast" + }, + { + "id": "scripts_test_pipeline_parse_places", + "label": "_parse_places()", + "file_type": "code", + "source_file": "scripts/test_pipeline.py", + "source_location": "L134", + "_origin": "ast" + }, + { + "id": "scripts_test_pipeline_trip_days", + "label": "_trip_days()", + "file_type": "code", + "source_file": "scripts/test_pipeline.py", + "source_location": "L147", + "_origin": "ast" + }, + { + "id": "scripts_test_pipeline_party_type_from_triple", + "label": "_party_type_from_triple()", + "file_type": "code", + "source_file": "scripts/test_pipeline.py", + "source_location": "L158", + "_origin": "ast" + }, + { + "id": "scripts_test_pipeline_travel_type_from_theme", + "label": "_travel_type_from_theme()", + "file_type": "code", + "source_file": "scripts/test_pipeline.py", + "source_location": "L175", + "_origin": "ast" + }, + { + "id": "scripts_test_pipeline_make_poi", + "label": "_make_poi()", + "file_type": "code", + "source_file": "scripts/test_pipeline.py", + "source_location": "L191", + "_origin": "ast" + }, + { + "id": "scripts_test_pipeline_load_gugseok", + "label": "load_gugseok()", + "file_type": "code", + "source_file": "scripts/test_pipeline.py", + "source_location": "L213", + "_origin": "ast" + }, + { + "id": "scripts_test_pipeline_load_triple", + "label": "load_triple()", + "file_type": "code", + "source_file": "scripts/test_pipeline.py", + "source_location": "L251", + "_origin": "ast" + }, + { + "id": "scripts_test_pipeline_build_itinerary", + "label": "_build_itinerary()", + "file_type": "code", + "source_file": "scripts/test_pipeline.py", + "source_location": "L277", + "_origin": "ast" + }, + { + "id": "scripts_test_pipeline_run_pipeline", + "label": "run_pipeline()", + "file_type": "code", + "source_file": "scripts/test_pipeline.py", + "source_location": "L356", + "_origin": "ast" + }, + { + "id": "scripts_test_pipeline_main", + "label": "main()", + "file_type": "code", + "source_file": "scripts/test_pipeline.py", + "source_location": "L408", + "_origin": "ast" + }, + { + "id": "scripts_test_pipeline_rationale_1", + "label": "\ud30c\uc774\ud504\ub77c\uc778 QA \ud14c\uc2a4\ud2b8 \u2014 xlsx \uc0d8\ud50c \ub370\uc774\ud130\ub85c HardFail/Warning/Score \uac80\uc99d.", + "file_type": "rationale", + "source_file": "scripts/test_pipeline.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "scripts_test_pipeline_rationale_104", + "label": "\uc88c\ud45c \ud14c\uc774\ube14 \uc870\ud68c \u2192 \uc5c6\uc73c\uba74 \uc81c\uc8fc \uc911\uc2ec \uc88c\ud45c \ud3f4\ubc31.", + "file_type": "rationale", + "source_file": "scripts/test_pipeline.py", + "source_location": "L104", + "_origin": "ast" + }, + { + "id": "scripts_test_pipeline_rationale_135", + "label": "1.\uc7a5\uc18c\uba85, 2.\uc7a5\uc18c\uba85' \u2192 ['\uc7a5\uc18c\uba85', '\uc7a5\uc18c\uba85'] (\uc22b\uc790 \uc811\ub450\uc0ac \uc81c\uac70).", + "file_type": "rationale", + "source_file": "scripts/test_pipeline.py", + "source_location": "L135", + "_origin": "ast" + }, + { + "id": "scripts_test_pipeline_rationale_214", + "label": "\uad6c\uc11d\uad6c\uc11d xlsx \u2192 \uc0d8\ud50c ItineraryPlan \uc7ac\ub8cc \ubaa9\ub85d.", + "file_type": "rationale", + "source_file": "scripts/test_pipeline.py", + "source_location": "L214", + "_origin": "ast" + }, + { + "id": "scripts_test_pipeline_rationale_252", + "label": "\ud2b8\ub9ac\ud50c xlsx \u2192 \uc0d8\ud50c ItineraryPlan \uc7ac\ub8cc \ubaa9\ub85d.", + "file_type": "rationale", + "source_file": "scripts/test_pipeline.py", + "source_location": "L252", + "_origin": "ast" + }, + { + "id": "scripts_test_pipeline_rationale_278", + "label": "\uc0d8\ud50c dict \u2192 (ItineraryPlan, per-day POI lists). \ub2e4\uc77c(multi-day) \uc5f0\uc18d\uc131: Day N \uc758 \ub9c8\uc9c0\ub9c9\u2026", + "file_type": "rationale", + "source_file": "scripts/test_pipeline.py", + "source_location": "L278", + "_origin": "ast" + }, + { + "id": "src_init", + "label": "src/__init__.py", + "file_type": "code", + "source_file": "src/__init__.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "src_api_init", + "label": "api/__init__.py", + "file_type": "code", + "source_file": "src/api/__init__.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "src_api_main", + "label": "main.py", + "file_type": "code", + "source_file": "src/api/main.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "src_api_main_py_get", + "label": "get", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast" + }, + { + "id": "src_api_main_index", + "label": "index()", + "file_type": "code", + "source_file": "src/api/main.py", + "source_location": "L47", + "_origin": "ast" + }, + { + "id": "src_api_main_manifest", + "label": "manifest()", + "file_type": "code", + "source_file": "src/api/main.py", + "source_location": "L55", + "_origin": "ast" + }, + { + "id": "src_api_main_py_response", + "label": "Response", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast" + }, + { + "id": "src_api_main_service_worker", + "label": "service_worker()", + "file_type": "code", + "source_file": "src/api/main.py", + "source_location": "L63", + "_origin": "ast" + }, + { + "id": "src_api_main_health", + "label": "health()", + "file_type": "code", + "source_file": "src/api/main.py", + "source_location": "L75", + "_origin": "ast" + }, + { + "id": "src_api_main_rationale_76", + "label": "\ub77c\uc774\ube0c\ub2c8\uc2a4 + \uad6c\uc131 \uc9c4\ub2e8. \uc2dc\ud06c\ub9bf \uac12\uc740 \uc808\ub300 \ub178\ucd9c\ud558\uc9c0 \uc54a\uace0, \ud0a4 \uc124\uc815 \uc5ec\ubd80(bool)\uc640 \ub85c\ub529\ub41c \ub370\uc774\ud130 \uac74\uc218\ub9cc \ubc18\ud658\ud55c\ub2e4. \uc2ec\uc0ac \uc2dc \uc678\ubd80 API\u2026", + "file_type": "rationale", + "source_file": "src/api/main.py", + "source_location": "L76", + "_origin": "ast" + }, + { + "id": "src_api_router", + "label": "router.py", + "file_type": "code", + "source_file": "src/api/router.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "src_api_router_kakao_hint", + "label": "_kakao_hint()", + "file_type": "code", + "source_file": "src/api/router.py", + "source_location": "L51", + "_origin": "ast" + }, + { + "id": "src_api_router_kakao_cat_code", + "label": "_kakao_cat_code()", + "file_type": "code", + "source_file": "src/api/router.py", + "source_location": "L65", + "_origin": "ast" + }, + { + "id": "src_api_router_extract_chosung", + "label": "_extract_chosung()", + "file_type": "code", + "source_file": "src/api/router.py", + "source_location": "L232", + "_origin": "ast" + }, + { + "id": "src_api_router_normalize", + "label": "_normalize()", + "file_type": "code", + "source_file": "src/api/router.py", + "source_location": "L243", + "_origin": "ast" + }, + { + "id": "src_api_router_guess_dwell", + "label": "_guess_dwell()", + "file_type": "code", + "source_file": "src/api/router.py", + "source_location": "L252", + "_origin": "ast" + }, + { + "id": "src_api_router_addr_to_region", + "label": "_addr_to_region()", + "file_type": "code", + "source_file": "src/api/router.py", + "source_location": "L271", + "_origin": "ast" + }, + { + "id": "src_api_router_parse_jeju_hours", + "label": "_parse_jeju_hours()", + "file_type": "code", + "source_file": "src/api/router.py", + "source_location": "L282", + "_origin": "ast" + }, + { + "id": "src_api_router_build_jeju_place_index", + "label": "_build_jeju_place_index()", + "file_type": "code", + "source_file": "src/api/router.py", + "source_location": "L293", + "_origin": "ast" + }, + { + "id": "src_api_router_build_coord_index", + "label": "_build_coord_index()", + "file_type": "code", + "source_file": "src/api/router.py", + "source_location": "L341", + "_origin": "ast" + }, + { + "id": "src_api_router_build_place_list", + "label": "_build_place_list()", + "file_type": "code", + "source_file": "src/api/router.py", + "source_location": "L394", + "_origin": "ast" + }, + { + "id": "src_api_router_build_full_place_list", + "label": "_build_full_place_list()", + "file_type": "code", + "source_file": "src/api/router.py", + "source_location": "L453", + "_origin": "ast" + }, + { + "id": "src_api_router_build_monthly_congestion", + "label": "_build_monthly_congestion()", + "file_type": "code", + "source_file": "src/api/router.py", + "source_location": "L555", + "_origin": "ast" + }, + { + "id": "src_api_router_lookup_place", + "label": "_lookup_place()", + "file_type": "code", + "source_file": "src/api/router.py", + "source_location": "L599", + "_origin": "ast" + }, + { + "id": "src_api_router_resolve_poi", + "label": "_resolve_poi()", + "file_type": "code", + "source_file": "src/api/router.py", + "source_location": "L618", + "_origin": "ast" + }, + { + "id": "src_api_router_calc_reliability_score", + "label": "_calc_reliability_score()", + "file_type": "code", + "source_file": "src/api/router.py", + "source_location": "L714", + "_origin": "ast" + }, + { + "id": "src_api_router_get_pipeline", + "label": "_get_pipeline()", + "file_type": "code", + "source_file": "src/api/router.py", + "source_location": "L724", + "_origin": "ast" + }, + { + "id": "src_api_router_py_get", + "label": "get", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast" + }, + { + "id": "src_api_router_list_places", + "label": "list_places()", + "file_type": "code", + "source_file": "src/api/router.py", + "source_location": "L732", + "_origin": "ast" + }, + { + "id": "src_api_router_monthly_congestion", + "label": "monthly_congestion()", + "file_type": "code", + "source_file": "src/api/router.py", + "source_location": "L806", + "_origin": "ast" + }, + { + "id": "src_api_router_list_regions", + "label": "list_regions()", + "file_type": "code", + "source_file": "src/api/router.py", + "source_location": "L818", + "_origin": "ast" + }, + { + "id": "post", + "label": "post", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast" + }, + { + "id": "src_api_router_parse_text", + "label": "parse_text()", + "file_type": "code", + "source_file": "src/api/router.py", + "source_location": "L830", + "_origin": "ast" + }, + { + "id": "src_api_router_parse_document", + "label": "parse_document()", + "file_type": "code", + "source_file": "src/api/router.py", + "source_location": "L839", + "_origin": "ast" + }, + { + "id": "uploadfile", + "label": "UploadFile", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast" + }, + { + "id": "src_api_router_resolve_coords", + "label": "resolve_coords()", + "file_type": "code", + "source_file": "src/api/router.py", + "source_location": "L856", + "_origin": "ast" + }, + { + "id": "src_api_router_validate_plan", + "label": "validate_plan()", + "file_type": "code", + "source_file": "src/api/router.py", + "source_location": "L869", + "_origin": "ast" + }, + { + "id": "src_api_router_rationale_1", + "label": "FastAPI \ub77c\uc6b0\ud130 \u2014 /validate, /places \uc5d4\ub4dc\ud3ec\uc778\ud2b8.", + "file_type": "rationale", + "source_file": "src/api/router.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "src_api_router_rationale_52", + "label": "\uce74\uce74\uc624 category_name \u2192 hours_db \uce74\ud14c\uace0\ub9ac \ud78c\ud2b8.", + "file_type": "rationale", + "source_file": "src/api/router.py", + "source_location": "L52", + "_origin": "ast" + }, + { + "id": "src_api_router_rationale_66", + "label": "\uce74\uce74\uc624 category_name \u2192 \uc571 \uce74\ud14c\uace0\ub9ac \ucf54\ub4dc(12 \uad00\uad11\uc9c0\u00b714 \ubb38\ud654\u00b738 \uc1fc\ud551\u00b739 \uc74c\uc2dd\uc810\u00b732 \uc219\ubc15).", + "file_type": "rationale", + "source_file": "src/api/router.py", + "source_location": "L66", + "_origin": "ast" + }, + { + "id": "src_api_router_rationale_283", + "label": "09:00~18:00 (\ub9e4\ud45c\ub9c8\uac10 17:00)' \uac19\uc740 \uc6d0\ubb38\uc5d0\uc11c \uccab HH:MM~HH:MM \uad6c\uac04\ub9cc \ubf51\uc544\ub0b8\ub2e4.", + "file_type": "rationale", + "source_file": "src/api/router.py", + "source_location": "L283", + "_origin": "ast" + }, + { + "id": "src_api_router_rationale_294", + "label": "data/\uc81c\uc8fc\ud2b9\ubcc4\uc790\uce58\ub3c4_\ud1b5\ud569_TourAPI\ubcd1\ud569.xlsx \u2014 \uc2e4\uce21 \uc88c\ud45c\ub97c \uac00\uc9c4 \uc81c\uc8fc \uc804\uc5ed 26,679\uac74 \ud1b5\ud569 DB. \uae30\uc874\u2026", + "file_type": "rationale", + "source_file": "src/api/router.py", + "source_location": "L294", + "_origin": "ast" + }, + { + "id": "src_api_router_rationale_342", + "label": "\uc88c\ud45c \uc778\ub371\uc2a4 \ube4c\ub4dc. 1\ucc28: data/pois.csv \u2014 TourAPI \ubc8c\ud06c \uc218\uc9d1 (20,168 POI, \uc804\uad6d \uc88c\ud45c \uc8fc\uc18c\uc6d0\ubcf8) 2\ucc28:\u2026", + "file_type": "rationale", + "source_file": "src/api/router.py", + "source_location": "L342", + "_origin": "ast" + }, + { + "id": "src_api_router_rationale_395", + "label": "congestion_stats.csv \uc5d0\uc11c \uace0\uc720 \uc7a5\uc18c + annual_max \uc9d1\uacc4 \u2192 \uc88c\ud45c \uacb0\ud569 \u2192 \uc815\ub82c.", + "file_type": "rationale", + "source_file": "src/api/router.py", + "source_location": "L395", + "_origin": "ast" + }, + { + "id": "src_api_router_rationale_454", + "label": "pois.csv(20,168) + wellness(175) + barrier_free(1,799) \ud1b5\ud569 \uc7a5\uc18c \ubaa9\ub85d.", + "file_type": "rationale", + "source_file": "src/api/router.py", + "source_location": "L454", + "_origin": "ast" + }, + { + "id": "src_api_router_rationale_556", + "label": "congestion_stats.csv\uc758 \uc6d4\ubcc4 \ud63c\uc7a1\ub3c4 \uc810\uc218 \uc778\ub371\uc2a4.", + "file_type": "rationale", + "source_file": "src/api/router.py", + "source_location": "L556", + "_origin": "ast" + }, + { + "id": "src_api_router_rationale_600", + "label": "\uc774\ub984\uc73c\ub85c place dict \uc870\ud68c. \uc815\ud655 \u2192 \ubd80\ubd84 \uc21c\uc73c\ub85c \uc2dc\ub3c4. congestion \uae30\ubc18 \uc778\uae30 \uc7a5\uc18c(_PLACE_NORM_INDEX) \uc6b0\uc120,\u2026", + "file_type": "rationale", + "source_file": "src/api/router.py", + "source_location": "L600", + "_origin": "ast" + }, + { + "id": "src_api_router_rationale_736", + "label": "\ub4f1\ub85d \uc7a5\uc18c \ubaa9\ub85d. q=\uac80\uc0c9\uc5b4, region=\uc9c0\uc5ed \ud544\ud130, cat=\uce74\ud14c\uace0\ub9ac \ucf54\ub4dc, extended=\uc804\uccb4DB \ucd08\uae30 \ub85c\ub4dc. offset/limit\uc73c\ub85c\u2026", + "file_type": "rationale", + "source_file": "src/api/router.py", + "source_location": "L736", + "_origin": "ast" + }, + { + "id": "src_api_router_rationale_831", + "label": "\ucd94\ucc9c \uacbd\ub85c\ub97c \ubcf5\uc0ac\ud55c \ud14d\uc2a4\ud2b8 \u2192 \ucffc\ub9ac \ub9ac\ub77c\uc774\ud305\uc73c\ub85c day/place \uad6c\uc870 \ucd94\ucd9c.", + "file_type": "rationale", + "source_file": "src/api/router.py", + "source_location": "L831", + "_origin": "ast" + }, + { + "id": "src_api_router_rationale_840", + "label": "AI \ud50c\ub798\ub108 \uacb0\uacfc PDF\u00b7\uc2a4\ud06c\ub9b0\uc0f7(PNG/JPG) \u2192 Claude Vision\uc73c\ub85c day/place \uad6c\uc870 \ucd94\ucd9c.", + "file_type": "rationale", + "source_file": "src/api/router.py", + "source_location": "L840", + "_origin": "ast" + }, + { + "id": "src_api_router_rationale_857", + "label": "\ube4c\ub354(Step2) \uc9c0\ub3c4\uc6a9 \uc88c\ud45c \uc870\ud68c. \uac80\uc99d \ud30c\uc774\ud504\ub77c\uc778(Hard Fail/\uc2a4\ucf54\uc5b4\ub9c1/LLM \uc124\uba85) \uc5c6\uc774 \uc88c\ud45c \ud574\uc11d\ub9cc \uc218\ud589\ud574 \ube60\ub974\uac8c \uc751\ub2f5\ud55c\ub2e4.", + "file_type": "rationale", + "source_file": "src/api/router.py", + "source_location": "L857", + "_origin": "ast" + }, + { + "id": "src_api_schemas", + "label": "schemas.py", + "file_type": "code", + "source_file": "src/api/schemas.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "src_api_schemas_placeinputweb", + "label": "PlaceInputWeb", + "file_type": "code", + "source_file": "src/api/schemas.py", + "source_location": "L9", + "_origin": "ast" + }, + { + "id": "src_api_schemas_py_basemodel", + "label": "BaseModel", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast" + }, + { + "id": "src_api_schemas_dayplanweb", + "label": "DayPlanWeb", + "file_type": "code", + "source_file": "src/api/schemas.py", + "source_location": "L14", + "_origin": "ast" + }, + { + "id": "src_api_schemas_poiinfo", + "label": "POIInfo", + "file_type": "code", + "source_file": "src/api/schemas.py", + "source_location": "L18", + "_origin": "ast" + }, + { + "id": "src_api_schemas_placeitem", + "label": "PlaceItem", + "file_type": "code", + "source_file": "src/api/schemas.py", + "source_location": "L37", + "_origin": "ast" + }, + { + "id": "src_api_schemas_placesresponse", + "label": "PlacesResponse", + "file_type": "code", + "source_file": "src/api/schemas.py", + "source_location": "L49", + "_origin": "ast" + }, + { + "id": "src_api_schemas_validaterequest", + "label": "ValidateRequest", + "file_type": "code", + "source_file": "src/api/schemas.py", + "source_location": "L54", + "_origin": "ast" + }, + { + "id": "src_api_schemas_parsetextrequest", + "label": "ParseTextRequest", + "file_type": "code", + "source_file": "src/api/schemas.py", + "source_location": "L64", + "_origin": "ast" + }, + { + "id": "src_api_schemas_parsedplace", + "label": "ParsedPlace", + "file_type": "code", + "source_file": "src/api/schemas.py", + "source_location": "L68", + "_origin": "ast" + }, + { + "id": "src_api_schemas_parsedday", + "label": "ParsedDay", + "file_type": "code", + "source_file": "src/api/schemas.py", + "source_location": "L74", + "_origin": "ast" + }, + { + "id": "src_api_schemas_parsedplanresponse", + "label": "ParsedPlanResponse", + "file_type": "code", + "source_file": "src/api/schemas.py", + "source_location": "L78", + "_origin": "ast" + }, + { + "id": "src_api_schemas_validateresponse", + "label": "ValidateResponse", + "file_type": "code", + "source_file": "src/api/schemas.py", + "source_location": "L82", + "_origin": "ast" + }, + { + "id": "src_api_schemas_rationale_1", + "label": "API \uc694\uccad/\uc751\ub2f5 Pydantic \uc2a4\ud0a4\ub9c8.", + "file_type": "rationale", + "source_file": "src/api/schemas.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "src_api_static_manifest", + "label": "manifest.json", + "file_type": "code", + "source_file": "src/api/static/manifest.json", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "src_api_static_manifest_name", + "label": "name", + "file_type": "code", + "source_file": "src/api/static/manifest.json", + "source_location": "L2", + "_origin": "ast" + }, + { + "id": "src_api_static_manifest_short_name", + "label": "short_name", + "file_type": "code", + "source_file": "src/api/static/manifest.json", + "source_location": "L3", + "_origin": "ast" + }, + { + "id": "src_api_static_manifest_description", + "label": "description", + "file_type": "code", + "source_file": "src/api/static/manifest.json", + "source_location": "L4", + "_origin": "ast" + }, + { + "id": "src_api_static_manifest_start_url", + "label": "start_url", + "file_type": "code", + "source_file": "src/api/static/manifest.json", + "source_location": "L5", + "_origin": "ast" + }, + { + "id": "src_api_static_manifest_display", + "label": "display", + "file_type": "code", + "source_file": "src/api/static/manifest.json", + "source_location": "L6", + "_origin": "ast" + }, + { + "id": "src_api_static_manifest_background_color", + "label": "background_color", + "file_type": "code", + "source_file": "src/api/static/manifest.json", + "source_location": "L7", + "_origin": "ast" + }, + { + "id": "src_api_static_manifest_theme_color", + "label": "theme_color", + "file_type": "code", + "source_file": "src/api/static/manifest.json", + "source_location": "L8", + "_origin": "ast" + }, + { + "id": "src_api_static_manifest_orientation", + "label": "orientation", + "file_type": "code", + "source_file": "src/api/static/manifest.json", + "source_location": "L9", + "_origin": "ast" + }, + { + "id": "src_api_static_manifest_lang", + "label": "lang", + "file_type": "code", + "source_file": "src/api/static/manifest.json", + "source_location": "L10", + "_origin": "ast" + }, + { + "id": "src_api_static_manifest_categories", + "label": "categories", + "file_type": "code", + "source_file": "src/api/static/manifest.json", + "source_location": "L11", + "_origin": "ast" + }, + { + "id": "ref_travel", + "label": "travel", + "file_type": "concept", + "source_file": "src/api/static/manifest.json", + "source_location": "L11", + "_origin": "ast" + }, + { + "id": "ref_utilities", + "label": "utilities", + "file_type": "concept", + "source_file": "src/api/static/manifest.json", + "source_location": "L11", + "_origin": "ast" + }, + { + "id": "src_api_static_manifest_icons", + "label": "icons", + "file_type": "code", + "source_file": "src/api/static/manifest.json", + "source_location": "L12", + "_origin": "ast" + }, + { + "id": "src_api_static_manifest_shortcuts", + "label": "shortcuts", + "file_type": "code", + "source_file": "src/api/static/manifest.json", + "source_location": "L26", + "_origin": "ast" + }, + { + "id": "src_api_static_service_worker", + "label": "service-worker.js", + "file_type": "code", + "source_file": "src/api/static/service-worker.js", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "src_api_static_service_worker_shell", + "label": "SHELL", + "file_type": "code", + "source_file": "src/api/static/service-worker.js", + "source_location": "L2", + "_origin": "ast" + }, + { + "id": "src_data_init", + "label": "data/__init__.py", + "file_type": "code", + "source_file": "src/data/__init__.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "src_data_barrier_free_api", + "label": "barrier_free_api.py", + "file_type": "code", + "source_file": "src/data/barrier_free_api.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "src_data_barrier_free_api_barrierfreeplace", + "label": "BarrierFreePlace", + "file_type": "code", + "source_file": "src/data/barrier_free_api.py", + "source_location": "L24", + "_origin": "ast" + }, + { + "id": "src_data_barrier_free_api_barrierfreedetail", + "label": "BarrierFreeDetail", + "file_type": "code", + "source_file": "src/data/barrier_free_api.py", + "source_location": "L43", + "_origin": "ast" + }, + { + "id": "src_data_barrier_free_api_extract_items", + "label": "_extract_items()", + "file_type": "code", + "source_file": "src/data/barrier_free_api.py", + "source_location": "L68", + "_origin": "ast" + }, + { + "id": "src_data_barrier_free_api_safe_float", + "label": "_safe_float()", + "file_type": "code", + "source_file": "src/data/barrier_free_api.py", + "source_location": "L78", + "_origin": "ast" + }, + { + "id": "src_data_barrier_free_api_py_any", + "label": "Any", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast" + }, + { + "id": "src_data_barrier_free_api_str", + "label": "_str()", + "file_type": "code", + "source_file": "src/data/barrier_free_api.py", + "source_location": "L85", + "_origin": "ast" + }, + { + "id": "src_data_barrier_free_api_barrierfreeapiclient", + "label": "BarrierFreeAPIClient", + "file_type": "code", + "source_file": "src/data/barrier_free_api.py", + "source_location": "L91", + "_origin": "ast" + }, + { + "id": "src_data_barrier_free_api_barrierfreeapiclient_init", + "label": ".__init__()", + "file_type": "code", + "source_file": "src/data/barrier_free_api.py", + "source_location": "L97", + "_origin": "ast" + }, + { + "id": "src_data_barrier_free_api_barrierfreeapiclient_from_settings", + "label": ".from_settings()", + "file_type": "code", + "source_file": "src/data/barrier_free_api.py", + "source_location": "L104", + "_origin": "ast" + }, + { + "id": "src_data_barrier_free_api_barrierfreeapiclient_fetch_page", + "label": ".fetch_page()", + "file_type": "code", + "source_file": "src/data/barrier_free_api.py", + "source_location": "L112", + "_origin": "ast" + }, + { + "id": "src_data_barrier_free_api_barrierfreeapiclient_fetch_detail", + "label": ".fetch_detail()", + "file_type": "code", + "source_file": "src/data/barrier_free_api.py", + "source_location": "L163", + "_origin": "ast" + }, + { + "id": "src_data_barrier_free_api_barrierfreeapiclient_fetch_all", + "label": ".fetch_all()", + "file_type": "code", + "source_file": "src/data/barrier_free_api.py", + "source_location": "L210", + "_origin": "ast" + }, + { + "id": "src_data_barrier_free_api_rationale_1", + "label": "\ud55c\uad6d\uad00\uad11\uacf5\uc0ac \ubb34\uc7a5\uc560 \uc5ec\ud589 \uc815\ubcf4 API \ud074\ub77c\uc774\uc5b8\ud2b8 (B551011/KorWithService2). \uc624\ud37c\ub808\uc774\uc158: areaBasedList2 \u2014\u2026", + "file_type": "rationale", + "source_file": "src/data/barrier_free_api.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "src_data_barrier_free_api_rationale_25", + "label": "areaBasedList2 \uae30\ubc18 \uae30\ubcf8 POI + detailWithTour2 \uc811\uadfc\uc131 \uc138\ubd80 \ud56d\ubaa9.", + "file_type": "rationale", + "source_file": "src/data/barrier_free_api.py", + "source_location": "L25", + "_origin": "ast" + }, + { + "id": "src_data_barrier_free_api_rationale_44", + "label": "detailWithTour2 \uc751\ub2f5 \uc804\uccb4 \ud544\ub4dc (\ud544\uc694 \uc2dc \uac1c\ubcc4 \uc870\ud68c\uc6a9).", + "file_type": "rationale", + "source_file": "src/data/barrier_free_api.py", + "source_location": "L44", + "_origin": "ast" + }, + { + "id": "src_data_barrier_free_api_rationale_92", + "label": "\ubb34\uc7a5\uc560 \uc5ec\ud589 \uc815\ubcf4 API \u2014 \ube44\ub3d9\uae30 \ud074\ub77c\uc774\uc5b8\ud2b8. Graceful Fallback: API \ud638\ucd9c \uc2e4\ud328 \uc2dc \ube48 \ub9ac\uc2a4\ud2b8/None \ubc18\ud658.", + "file_type": "rationale", + "source_file": "src/data/barrier_free_api.py", + "source_location": "L92", + "_origin": "ast" + }, + { + "id": "src_data_barrier_free_api_rationale_119", + "label": "areaBasedList2 \u2014 \ubb34\uc7a5\uc560 \uc5ec\ud589 POI \ubaa9\ub85d \ud55c \ud398\uc774\uc9c0 \uc870\ud68c. \ubc18\ud658 \ud544\ub4dc: contentid, title, addr1, mapx,\u2026", + "file_type": "rationale", + "source_file": "src/data/barrier_free_api.py", + "source_location": "L119", + "_origin": "ast" + }, + { + "id": "src_data_barrier_free_api_rationale_164", + "label": "detailWithTour2 \u2014 \ub2e8\uc77c \ucf58\ud150\uce20 \ubb34\uc7a5\uc560 \uc811\uadfc\uc131 \uc0c1\uc138 \uc870\ud68c. \uc9c0\uccb4\uc7a5\uc560\u00b7\uc2dc\uac01\uc7a5\uc560\u00b7\uccad\uac01\uc7a5\uc560\u00b7\uc601\uc720\uc544\uac00\uc871 \ud56d\ubaa9\uc744 \ud14d\uc2a4\ud2b8\ub85c \ubc18\ud658.\u2026", + "file_type": "rationale", + "source_file": "src/data/barrier_free_api.py", + "source_location": "L164", + "_origin": "ast" + }, + { + "id": "src_data_barrier_free_api_rationale_211", + "label": "\uc804\uccb4 \ubb34\uc7a5\uc560 \uc5ec\ud589 POI \ubaa9\ub85d \uc870\ud68c (\ud398\uc774\uc9c0 \uc21c\ud68c, areaBasedList2).", + "file_type": "rationale", + "source_file": "src/data/barrier_free_api.py", + "source_location": "L211", + "_origin": "ast" + }, + { + "id": "src_data_dwell_db", + "label": "dwell_db.py", + "file_type": "code", + "source_file": "src/data/dwell_db.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "src_data_dwell_db_dwellrecommendation", + "label": "DwellRecommendation", + "file_type": "code", + "source_file": "src/data/dwell_db.py", + "source_location": "L21", + "_origin": "ast" + }, + { + "id": "src_data_dwell_db_dwellrecommendation_is_too_short", + "label": ".is_too_short()", + "file_type": "code", + "source_file": "src/data/dwell_db.py", + "source_location": "L27", + "_origin": "ast" + }, + { + "id": "src_data_dwell_db_normalize_name", + "label": "_normalize_name()", + "file_type": "code", + "source_file": "src/data/dwell_db.py", + "source_location": "L181", + "_origin": "ast" + }, + { + "id": "src_data_dwell_db_get_recommended_dwell", + "label": "get_recommended_dwell()", + "file_type": "code", + "source_file": "src/data/dwell_db.py", + "source_location": "L192", + "_origin": "ast" + }, + { + "id": "src_data_dwell_db_rationale_1", + "label": "\uad8c\uc7a5 \uccb4\ub958\uc2dc\uac04 \ub370\uc774\ud130\ubca0\uc774\uc2a4 (\ud558\uc774\ube0c\ub9ac\ub4dc \ub8e9\uc5c5). 5\ub2e8\uacc4 \ud3f4\ubc31 \uc6b0\uc120\uc21c\uc704\ub85c (min, max) \ubd84 \ub2e8\uc704 \uad8c\uc7a5 \uccb4\ub958\uc2dc\uac04\uc744 \ubc18\ud658: 1.\u2026", + "file_type": "rationale", + "source_file": "src/data/dwell_db.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "src_data_dwell_db_rationale_28", + "label": "\uc0ac\uc6a9\uc790 \uc785\ub825\uc774 \uad8c\uc7a5 min\uc758 ratio(\uae30\ubcf8 50%) \ubbf8\ub9cc\uc774\uba74 True.", + "file_type": "rationale", + "source_file": "src/data/dwell_db.py", + "source_location": "L28", + "_origin": "ast" + }, + { + "id": "src_data_dwell_db_rationale_182", + "label": "\uc774\ub984 \uc815\uaddc\ud654: \uacf5\ubc31\u00b7\ud2b9\uc218\ubb38\uc790 \uc81c\uac70 \ud6c4 \uc18c\ubb38\uc790.", + "file_type": "rationale", + "source_file": "src/data/dwell_db.py", + "source_location": "L182", + "_origin": "ast" + }, + { + "id": "src_data_dwell_db_rationale_198", + "label": "5\ub2e8\uacc4 \ud3f4\ubc31\uc73c\ub85c \uad8c\uc7a5 \uccb4\ub958\uc2dc\uac04 \ubc18\ud658. \uc778\uc790 ---- name : POI \uc774\ub984 (\ud544\uc218) lcls_systm3 : \"VE0101\" \uac19\uc740\u2026", + "file_type": "rationale", + "source_file": "src/data/dwell_db.py", + "source_location": "L198", + "_origin": "ast" + }, + { + "id": "src_data_graph_retriever", + "label": "graph_retriever.py", + "file_type": "code", + "source_file": "src/data/graph_retriever.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "src_data_graph_retriever_graphretriever", + "label": "GraphRetriever", + "file_type": "code", + "source_file": "src/data/graph_retriever.py", + "source_location": "L44", + "_origin": "ast" + }, + { + "id": "src_data_graph_retriever_graphretriever_init", + "label": ".__init__()", + "file_type": "code", + "source_file": "src/data/graph_retriever.py", + "source_location": "L47", + "_origin": "ast" + }, + { + "id": "src_data_graph_retriever_graphretriever_from_env", + "label": ".from_env()", + "file_type": "code", + "source_file": "src/data/graph_retriever.py", + "source_location": "L62", + "_origin": "ast" + }, + { + "id": "src_data_graph_retriever_graphretriever_enabled", + "label": ".enabled()", + "file_type": "code", + "source_file": "src/data/graph_retriever.py", + "source_location": "L71", + "_origin": "ast" + }, + { + "id": "src_data_graph_retriever_graphretriever_callable", + "label": "._callable()", + "file_type": "code", + "source_file": "src/data/graph_retriever.py", + "source_location": "L74", + "_origin": "ast" + }, + { + "id": "src_data_graph_retriever_graphretriever_mark_unreachable", + "label": "._mark_unreachable()", + "file_type": "code", + "source_file": "src/data/graph_retriever.py", + "source_location": "L78", + "_origin": "ast" + }, + { + "id": "src_data_graph_retriever_graphretriever_close", + "label": ".close()", + "file_type": "code", + "source_file": "src/data/graph_retriever.py", + "source_location": "L81", + "_origin": "ast" + }, + { + "id": "src_data_graph_retriever_graphretriever_search_places", + "label": ".search_places()", + "file_type": "code", + "source_file": "src/data/graph_retriever.py", + "source_location": "L85", + "_origin": "ast" + }, + { + "id": "src_data_graph_retriever_graphretriever_find_nearby", + "label": ".find_nearby()", + "file_type": "code", + "source_file": "src/data/graph_retriever.py", + "source_location": "L111", + "_origin": "ast" + }, + { + "id": "src_data_graph_retriever_rationale_1", + "label": "Neo4j \uc9c0\uc2dd\uadf8\ub798\ud504 \ub9ac\ud2b8\ub9ac\ubc84 \u2014 Place/Region/NEAR_BY \uadf8\ub798\ud504\uc5d0\uc11c \uadfc\uac70 \uc870\ud68c.\u2026", + "file_type": "rationale", + "source_file": "src/data/graph_retriever.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "src_data_graph_retriever_rationale_45", + "label": "\uc81c\uc8fc \uc9c0\uc2dd\uadf8\ub798\ud504(Neo4j Aura) \ub9ac\ud2b8\ub9ac\ubc84. \ubbf8\uc124\uc815/\uc5f0\uacb0 \uc2e4\ud328 \uc2dc \ube48 \uacb0\uacfc\ub85c \ud3f4\ubc31.", + "file_type": "rationale", + "source_file": "src/data/graph_retriever.py", + "source_location": "L45", + "_origin": "ast" + }, + { + "id": "src_data_graph_retriever_rationale_75", + "label": "\ud638\ucd9c \uac00\ub2a5 \uc5ec\ubd80. \ucd5c\uadfc \uc5f0\uacb0 \uc2e4\ud328 \uc2dc \ucfe8\ub2e4\uc6b4 \ub3d9\uc548 \uc7ac\uc2dc\ub3c4 \ubc31\uc624\ud504 \ube44\uc6a9 \uc5c6\uc774 \uc989\uc2dc \ube48 \uacb0\uacfc\ub85c \ub118\uae34\ub2e4.", + "file_type": "rationale", + "source_file": "src/data/graph_retriever.py", + "source_location": "L75", + "_origin": "ast" + }, + { + "id": "src_data_graph_retriever_rationale_86", + "label": "\uc7a5\uc18c\uba85 \ubd80\ubd84\uc77c\uce58 \uac80\uc0c9 \u2014 Region \ucee8\ud14d\uc2a4\ud2b8 \ud3ec\ud568.", + "file_type": "rationale", + "source_file": "src/data/graph_retriever.py", + "source_location": "L86", + "_origin": "ast" + }, + { + "id": "src_data_graph_retriever_rationale_112", + "label": "NEAR_BY \uadf8\ub798\ud504\uc5d0\uc11c \ub3c4\ubcf4 \uadfc\uc811 \ub300\uccb4 \ud6c4\ubcf4 \uc870\ud68c (\uac70\ub9ac\uc21c).", + "file_type": "rationale", + "source_file": "src/data/graph_retriever.py", + "source_location": "L112", + "_origin": "ast" + }, + { + "id": "src_data_hours_db", + "label": "hours_db.py", + "file_type": "code", + "source_file": "src/data/hours_db.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "src_data_hours_db_hoursspec", + "label": "HoursSpec", + "file_type": "code", + "source_file": "src/data/hours_db.py", + "source_location": "L14", + "_origin": "ast" + }, + { + "id": "src_data_hours_db_resolve_hours", + "label": "resolve_hours()", + "file_type": "code", + "source_file": "src/data/hours_db.py", + "source_location": "L245", + "_origin": "ast" + }, + { + "id": "src_data_hours_db_to_minutes", + "label": "to_minutes()", + "file_type": "code", + "source_file": "src/data/hours_db.py", + "source_location": "L267", + "_origin": "ast" + }, + { + "id": "src_data_hours_db_is_open_at", + "label": "is_open_at()", + "file_type": "code", + "source_file": "src/data/hours_db.py", + "source_location": "L272", + "_origin": "ast" + }, + { + "id": "src_data_hours_db_rationale_1", + "label": "hours_db \u2014 \uce74\ud14c\uace0\ub9ac\u00b7\ud0a4\uc6cc\ub4dc \uae30\ubc18 \uc6b4\uc601\uc2dc\uac04 \ub8e9\uc5c5. \uc0ac\uc6a9: from src.data.hours_db import resolve_hours\u2026", + "file_type": "rationale", + "source_file": "src/data/hours_db.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "src_data_hours_db_rationale_246", + "label": "\uc7a5\uc18c \uc774\ub984 + \uce74\ud14c\uace0\ub9ac\ud78c\ud2b8 \u2192 HoursSpec. \ub9e4\uce6d \uc6b0\uc120\uc21c\uc704: \ud0a4\uc6cc\ub4dc > \uce74\ud14c\uace0\ub9ac\ud78c\ud2b8 > default_attraction.", + "file_type": "rationale", + "source_file": "src/data/hours_db.py", + "source_location": "L246", + "_origin": "ast" + }, + { + "id": "src_data_hours_db_rationale_273", + "label": "\uc8fc\uc5b4\uc9c4 \uc694\uc77c\u00b7\uc2dc\uac01\uc5d0 \uc601\uc5c5 \uc911\uc778\uc9c0 (\uc8fc\uc758: \ud734\ubb34\uc77c + \ube0c\ub808\uc774\ud06c \ud0c0\uc784 \uace0\ub824).", + "file_type": "rationale", + "source_file": "src/data/hours_db.py", + "source_location": "L273", + "_origin": "ast" + }, + { + "id": "src_data_kakao_local", + "label": "kakao_local.py", + "file_type": "code", + "source_file": "src/data/kakao_local.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "src_data_kakao_local_kakaolocalclient", + "label": "KakaoLocalClient", + "file_type": "code", + "source_file": "src/data/kakao_local.py", + "source_location": "L24", + "_origin": "ast" + }, + { + "id": "src_data_kakao_local_kakaolocalclient_init", + "label": ".__init__()", + "file_type": "code", + "source_file": "src/data/kakao_local.py", + "source_location": "L27", + "_origin": "ast" + }, + { + "id": "src_data_kakao_local_kakaolocalclient_from_env", + "label": ".from_env()", + "file_type": "code", + "source_file": "src/data/kakao_local.py", + "source_location": "L36", + "_origin": "ast" + }, + { + "id": "src_data_kakao_local_kakaolocalclient_enabled", + "label": ".enabled()", + "file_type": "code", + "source_file": "src/data/kakao_local.py", + "source_location": "L40", + "_origin": "ast" + }, + { + "id": "src_data_kakao_local_kakaolocalclient_search_keyword", + "label": ".search_keyword()", + "file_type": "code", + "source_file": "src/data/kakao_local.py", + "source_location": "L43", + "_origin": "ast" + }, + { + "id": "src_data_kakao_local_kakaolocalclient_search_keyword_list", + "label": ".search_keyword_list()", + "file_type": "code", + "source_file": "src/data/kakao_local.py", + "source_location": "L82", + "_origin": "ast" + }, + { + "id": "src_data_kakao_local_kakaolocalclient_geocode_address", + "label": ".geocode_address()", + "file_type": "code", + "source_file": "src/data/kakao_local.py", + "source_location": "L125", + "_origin": "ast" + }, + { + "id": "src_data_kakao_local_rationale_1", + "label": "\uce74\uce74\uc624 \ub85c\uceec \ud0a4\uc6cc\ub4dc \uc7a5\uc18c \uac80\uc0c9 \ud074\ub77c\uc774\uc5b8\ud2b8 (httpx + Graceful Fallback). \uc2dd\ub2f9\u00b7\uce74\ud398 \ub4f1 TourAPI\u2026", + "file_type": "rationale", + "source_file": "src/data/kakao_local.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "src_data_kakao_local_rationale_25", + "label": "\uce74\uce74\uc624 \ub85c\uceec \ud0a4\uc6cc\ub4dc \uac80\uc0c9. \uc778\uba54\ubaa8\ub9ac \uce90\uc2dc\ub85c \ub3d9\uc77c \uc9c8\uc758 \uc911\ubcf5 \ud638\ucd9c\uc744 \ub9c9\ub294\ub2e4.", + "file_type": "rationale", + "source_file": "src/data/kakao_local.py", + "source_location": "L25", + "_origin": "ast" + }, + { + "id": "src_data_kakao_local_rationale_44", + "label": "\uc7a5\uc18c\uba85\uc73c\ub85c \uac00\uc7a5 \uad00\ub828\ub3c4 \ub192\uc740 1\uac74\uc744 \uc870\ud68c. \uc2e4\ud328 \uc2dc None.", + "file_type": "rationale", + "source_file": "src/data/kakao_local.py", + "source_location": "L44", + "_origin": "ast" + }, + { + "id": "src_data_kakao_local_rationale_83", + "label": "\ud0a4\uc6cc\ub4dc\ub85c \ub2e4\uc218 \ud6c4\ubcf4\ub97c \uc870\ud68c(\uac80\uc0c9 \ud328\ub110 \ubcf4\uac15\uc6a9). \uc2e4\ud328 \uc2dc \ube48 \ub9ac\uc2a4\ud2b8.", + "file_type": "rationale", + "source_file": "src/data/kakao_local.py", + "source_location": "L83", + "_origin": "ast" + }, + { + "id": "src_data_kakao_local_rationale_126", + "label": "\ub3c4\ub85c\uba85\uc8fc\uc18c \u2192 (\uc704\ub3c4, \uacbd\ub3c4). \uacb0\uce21 \uc88c\ud45c \ubcf4\uc815\uc6a9. \uc2e4\ud328 \uc2dc None.", + "file_type": "rationale", + "source_file": "src/data/kakao_local.py", + "source_location": "L126", + "_origin": "ast" + }, + { + "id": "src_data_models", + "label": "models.py", + "file_type": "code", + "source_file": "src/data/models.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "src_data_models_kakaoplace", + "label": "KakaoPlace", + "file_type": "code", + "source_file": "src/data/models.py", + "source_location": "L22", + "_origin": "ast" + }, + { + "id": "src_data_models_py_basemodel", + "label": "BaseModel", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast" + }, + { + "id": "src_data_models_placeevidence", + "label": "PlaceEvidence", + "file_type": "code", + "source_file": "src/data/models.py", + "source_location": "L34", + "_origin": "ast" + }, + { + "id": "src_data_models_hardfail", + "label": "HardFail", + "file_type": "code", + "source_file": "src/data/models.py", + "source_location": "L47", + "_origin": "ast" + }, + { + "id": "src_data_models_warning", + "label": "Warning", + "file_type": "code", + "source_file": "src/data/models.py", + "source_location": "L64", + "_origin": "ast" + }, + { + "id": "src_data_models_scores", + "label": "Scores", + "file_type": "code", + "source_file": "src/data/models.py", + "source_location": "L81", + "_origin": "ast" + }, + { + "id": "model_validator", + "label": "model_validator", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast" + }, + { + "id": "src_data_models_scores_validate_ranges", + "label": ".validate_ranges()", + "file_type": "code", + "source_file": "src/data/models.py", + "source_location": "L89", + "_origin": "ast" + }, + { + "id": "src_data_models_alternativepoi", + "label": "AlternativePOI", + "file_type": "code", + "source_file": "src/data/models.py", + "source_location": "L97", + "_origin": "ast" + }, + { + "id": "src_data_models_poi", + "label": "POI", + "file_type": "code", + "source_file": "src/data/models.py", + "source_location": "L105", + "_origin": "ast" + }, + { + "id": "field_validator", + "label": "field_validator", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast" + }, + { + "id": "src_data_models_poi_poi_id_not_empty", + "label": ".poi_id_not_empty()", + "file_type": "code", + "source_file": "src/data/models.py", + "source_location": "L121", + "_origin": "ast" + }, + { + "id": "src_data_models_poi_validate_lat", + "label": ".validate_lat()", + "file_type": "code", + "source_file": "src/data/models.py", + "source_location": "L128", + "_origin": "ast" + }, + { + "id": "src_data_models_poi_validate_lng", + "label": ".validate_lng()", + "file_type": "code", + "source_file": "src/data/models.py", + "source_location": "L135", + "_origin": "ast" + }, + { + "id": "src_data_models_poi_validate_hhmm", + "label": ".validate_hhmm()", + "file_type": "code", + "source_file": "src/data/models.py", + "source_location": "L142", + "_origin": "ast" + }, + { + "id": "src_data_models_poi_validate_duration", + "label": ".validate_duration()", + "file_type": "code", + "source_file": "src/data/models.py", + "source_location": "L152", + "_origin": "ast" + }, + { + "id": "src_data_models_placeinput", + "label": "PlaceInput", + "file_type": "code", + "source_file": "src/data/models.py", + "source_location": "L158", + "_origin": "ast" + }, + { + "id": "src_data_models_placeinput_validate_order", + "label": ".validate_order()", + "file_type": "code", + "source_file": "src/data/models.py", + "source_location": "L165", + "_origin": "ast" + }, + { + "id": "src_data_models_dayplan", + "label": "DayPlan", + "file_type": "code", + "source_file": "src/data/models.py", + "source_location": "L173", + "_origin": "ast" + }, + { + "id": "src_data_models_dayplan_validate_place_count", + "label": ".validate_place_count()", + "file_type": "code", + "source_file": "src/data/models.py", + "source_location": "L179", + "_origin": "ast" + }, + { + "id": "src_data_models_dayplan_auto_fill_visit_order", + "label": ".auto_fill_visit_order()", + "file_type": "code", + "source_file": "src/data/models.py", + "source_location": "L187", + "_origin": "ast" + }, + { + "id": "src_data_models_itineraryplan", + "label": "ItineraryPlan", + "file_type": "code", + "source_file": "src/data/models.py", + "source_location": "L195", + "_origin": "ast" + }, + { + "id": "src_data_models_itineraryplan_validate_days", + "label": ".validate_days()", + "file_type": "code", + "source_file": "src/data/models.py", + "source_location": "L204", + "_origin": "ast" + }, + { + "id": "computed_field", + "label": "computed_field", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast" + }, + { + "id": "src_data_models_itineraryplan_travel_days", + "label": ".travel_days()", + "file_type": "code", + "source_file": "src/data/models.py", + "source_location": "L212", + "_origin": "ast" + }, + { + "id": "src_data_models_itineraryplan_plan_id", + "label": ".plan_id()", + "file_type": "code", + "source_file": "src/data/models.py", + "source_location": "L216", + "_origin": "ast" + }, + { + "id": "src_data_models_validationresult", + "label": "ValidationResult", + "file_type": "code", + "source_file": "src/data/models.py", + "source_location": "L225", + "_origin": "ast" + }, + { + "id": "src_data_models_validationresult_validate_score_range", + "label": ".validate_score_range()", + "file_type": "code", + "source_file": "src/data/models.py", + "source_location": "L244", + "_origin": "ast" + }, + { + "id": "src_data_models_validationresult_hard_fail_score_cap", + "label": ".hard_fail_score_cap()", + "file_type": "code", + "source_file": "src/data/models.py", + "source_location": "L250", + "_origin": "ast" + }, + { + "id": "src_data_models_settings", + "label": "Settings", + "file_type": "code", + "source_file": "src/data/models.py", + "source_location": "L256", + "_origin": "ast" + }, + { + "id": "basesettings", + "label": "BaseSettings", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast" + }, + { + "id": "src_data_models_settings_fill_gov_api_keys", + "label": ".fill_gov_api_keys()", + "file_type": "code", + "source_file": "src/data/models.py", + "source_location": "L269", + "_origin": "ast" + }, + { + "id": "src_data_models_vrptwplace", + "label": "VRPTWPlace", + "file_type": "code", + "source_file": "src/data/models.py", + "source_location": "L283", + "_origin": "ast" + }, + { + "id": "src_data_models_vrptwplace_validate_hhmm", + "label": ".validate_hhmm()", + "file_type": "code", + "source_file": "src/data/models.py", + "source_location": "L294", + "_origin": "ast" + }, + { + "id": "src_data_models_vrptwplace_validate_lat", + "label": ".validate_lat()", + "file_type": "code", + "source_file": "src/data/models.py", + "source_location": "L304", + "_origin": "ast" + }, + { + "id": "src_data_models_vrptwplace_validate_lng", + "label": ".validate_lng()", + "file_type": "code", + "source_file": "src/data/models.py", + "source_location": "L311", + "_origin": "ast" + }, + { + "id": "src_data_models_vrptwplace_validate_stay", + "label": ".validate_stay()", + "file_type": "code", + "source_file": "src/data/models.py", + "source_location": "L318", + "_origin": "ast" + }, + { + "id": "src_data_models_vrptwplace_open_minutes", + "label": ".open_minutes()", + "file_type": "code", + "source_file": "src/data/models.py", + "source_location": "L324", + "_origin": "ast" + }, + { + "id": "src_data_models_vrptwplace_close_minutes", + "label": ".close_minutes()", + "file_type": "code", + "source_file": "src/data/models.py", + "source_location": "L329", + "_origin": "ast" + }, + { + "id": "src_data_models_vrptwday", + "label": "VRPTWDay", + "file_type": "code", + "source_file": "src/data/models.py", + "source_location": "L334", + "_origin": "ast" + }, + { + "id": "src_data_models_vrptwday_at_least_one", + "label": ".at_least_one()", + "file_type": "code", + "source_file": "src/data/models.py", + "source_location": "L339", + "_origin": "ast" + }, + { + "id": "src_data_models_vrptwrequest", + "label": "VRPTWRequest", + "file_type": "code", + "source_file": "src/data/models.py", + "source_location": "L345", + "_origin": "ast" + }, + { + "id": "src_data_models_vrptwrequest_at_least_one_day", + "label": ".at_least_one_day()", + "file_type": "code", + "source_file": "src/data/models.py", + "source_location": "L350", + "_origin": "ast" + }, + { + "id": "src_data_models_deepdiveitem", + "label": "DeepDiveItem", + "file_type": "code", + "source_file": "src/data/models.py", + "source_location": "L356", + "_origin": "ast" + }, + { + "id": "src_data_models_explanationitem", + "label": "ExplanationItem", + "file_type": "code", + "source_file": "src/data/models.py", + "source_location": "L363", + "_origin": "ast" + }, + { + "id": "src_data_models_dayroutecomparison", + "label": "DayRouteComparison", + "file_type": "code", + "source_file": "src/data/models.py", + "source_location": "L374", + "_origin": "ast" + }, + { + "id": "src_data_models_vrptwresult", + "label": "VRPTWResult", + "file_type": "code", + "source_file": "src/data/models.py", + "source_location": "L382", + "_origin": "ast" + }, + { + "id": "src_data_models_rationale_1", + "label": "Pydantic models for travel plan validator (main app + VRPTW engine). NOTE: from\u2026", + "file_type": "rationale", + "source_file": "src/data/models.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "src_data_models_rationale_23", + "label": "\uce74\uce74\uc624 \ub85c\uceec \ud0a4\uc6cc\ub4dc \uac80\uc0c9 \uacb0\uacfc 1\uac74 (\uc88c\ud45c\u00b7\uce74\ud14c\uace0\ub9ac\u00b7\uc8fc\uc18c).", + "file_type": "rationale", + "source_file": "src/data/models.py", + "source_location": "L23", + "_origin": "ast" + }, + { + "id": "src_data_models_rationale_35", + "label": "\uc9c0\uc2dd\uadf8\ub798\ud504(Neo4j)\uc5d0\uc11c \uac80\uc0c9\ub41c \uc7a5\uc18c \uadfc\uac70 1\uac74 (Region \ucee8\ud14d\uc2a4\ud2b8 \ud3ec\ud568).", + "file_type": "rationale", + "source_file": "src/data/models.py", + "source_location": "L35", + "_origin": "ast" + }, + { + "id": "src_data_models_rationale_174", + "label": "\ud558\ub8e8 \uc77c\uc815 \u2014 \uc7a5\uc18c \uc774\ub984\uacfc \ubc29\ubb38 \uc21c\uc11c \uc785\ub825.", + "file_type": "rationale", + "source_file": "src/data/models.py", + "source_location": "L174", + "_origin": "ast" + }, + { + "id": "src_data_models_rationale_188", + "label": "visit_order \ubbf8\uc785\ub825 \uc2dc \ud574\ub2f9 \uc77c\uc790 \ub0b4 \ub9ac\uc2a4\ud2b8 \uc704\uce58(1-based)\ub85c \uc790\ub3d9 \ud560\ub2f9.", + "file_type": "rationale", + "source_file": "src/data/models.py", + "source_location": "L188", + "_origin": "ast" + }, + { + "id": "src_data_models_rationale_270", + "label": "wellness_api_key / barrier_free_api_key \ubbf8\uc124\uc815 \uc2dc tour_api_key\ub85c \ub300\uccb4.", + "file_type": "rationale", + "source_file": "src/data/models.py", + "source_location": "L270", + "_origin": "ast" + }, + { + "id": "src_data_models_rationale_364", + "label": "ExplainEngine\uc774 \uc0dd\uc131\ud558\ub294 4\ub2e8\uacc4 \uc124\uba85 \ud56d\ubaa9.", + "file_type": "rationale", + "source_file": "src/data/models.py", + "source_location": "L364", + "_origin": "ast" + }, + { + "id": "src_data_party_config", + "label": "party_config.py", + "file_type": "code", + "source_file": "src/data/party_config.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "src_data_party_config_partyprofile", + "label": "PartyProfile", + "file_type": "code", + "source_file": "src/data/party_config.py", + "source_location": "L19", + "_origin": "ast" + }, + { + "id": "src_data_party_config_get_party_profile", + "label": "get_party_profile()", + "file_type": "code", + "source_file": "src/data/party_config.py", + "source_location": "L36", + "_origin": "ast" + }, + { + "id": "src_data_party_config_rationale_1", + "label": "\ub3d9\ud589 \uc720\ud615\ubcc4 \uc774\ub3d9 \uc18d\ub3c4 \ubcf4\uc815 \uacc4\uc218 \ubc0f \ud53c\ub85c\ub3c4 \uc784\uacc4\uac12. \uc774\ub3d9\uc218\ub2e8\uc740 \ud56d\uc0c1 \uc790\ub3d9\ucc28\uc774\ubbc0\ub85c speed_factor\ub294 Haversine \ud3f4\ubc31 \uac70\ub9ac \uae30\ubc18\u2026", + "file_type": "rationale", + "source_file": "src/data/party_config.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "src_data_party_config_rationale_37", + "label": "party_type \ubb38\uc790\uc5f4 \u2192 PartyProfile. \ubbf8\ub4f1\ub85d \uac12\uc740 '\uce5c\uad6c' \uae30\uc900 \ubc18\ud658.", + "file_type": "rationale", + "source_file": "src/data/party_config.py", + "source_location": "L37", + "_origin": "ast" + }, + { + "id": "src_data_region_config", + "label": "region_config.py", + "file_type": "code", + "source_file": "src/data/region_config.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "src_data_region_config_regionthresholds", + "label": "RegionThresholds", + "file_type": "code", + "source_file": "src/data/region_config.py", + "source_location": "L17", + "_origin": "ast" + }, + { + "id": "src_data_region_config_get_thresholds", + "label": "get_thresholds()", + "file_type": "code", + "source_file": "src/data/region_config.py", + "source_location": "L94", + "_origin": "ast" + }, + { + "id": "src_data_region_config_rationale_1", + "label": "\uc9c0\uc5ed\ubcc4 \ub3d9\uc801 \uc784\uacc4\uac12 \uc124\uc815 \u2014 3-tier POI \ubc00\ub3c4 \uae30\ubc18. \uc2dc\uad70\uad6c \ucf54\ub4dc(5\uc790\ub9ac) \uae30\uc900\uc73c\ub85c \ubc00\ub3c4 \ud2f0\uc5b4\ub97c \uacb0\uc815\ud558\uace0,\u2026", + "file_type": "rationale", + "source_file": "src/data/region_config.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "src_data_region_config_rationale_18", + "label": "\uc9c0\uc5ed \ud2f0\uc5b4\ubcc4 VRPTW/Scoring \uc784\uacc4\uac12.", + "file_type": "rationale", + "source_file": "src/data/region_config.py", + "source_location": "L18", + "_origin": "ast" + }, + { + "id": "src_data_region_config_rationale_95", + "label": "\uc2dc\uad70\uad6c \ucf54\ub4dc\ub85c \uc9c0\uc5ed \uc784\uacc4\uac12 \ubc18\ud658. \ubbf8\uc9c0\uc815\u00b7\ubbf8\ubd84\ub958 \u2192 MEDIUM.", + "file_type": "rationale", + "source_file": "src/data/region_config.py", + "source_location": "L95", + "_origin": "ast" + }, + { + "id": "src_data_restaurant_catalog", + "label": "restaurant_catalog.py", + "file_type": "code", + "source_file": "src/data/restaurant_catalog.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "src_data_restaurant_catalog_normalize", + "label": "_normalize()", + "file_type": "code", + "source_file": "src/data/restaurant_catalog.py", + "source_location": "L20", + "_origin": "ast" + }, + { + "id": "src_data_restaurant_catalog_restaurantcatalog", + "label": "RestaurantCatalog", + "file_type": "code", + "source_file": "src/data/restaurant_catalog.py", + "source_location": "L24", + "_origin": "ast" + }, + { + "id": "src_data_restaurant_catalog_restaurantcatalog_init", + "label": ".__init__()", + "file_type": "code", + "source_file": "src/data/restaurant_catalog.py", + "source_location": "L27", + "_origin": "ast" + }, + { + "id": "src_data_restaurant_catalog_restaurantcatalog_from_csv", + "label": ".from_csv()", + "file_type": "code", + "source_file": "src/data/restaurant_catalog.py", + "source_location": "L31", + "_origin": "ast" + }, + { + "id": "src_data_restaurant_catalog_py_path", + "label": "Path", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast" + }, + { + "id": "src_data_restaurant_catalog_restaurantcatalog_from_default", + "label": ".from_default()", + "file_type": "code", + "source_file": "src/data/restaurant_catalog.py", + "source_location": "L50", + "_origin": "ast" + }, + { + "id": "src_data_restaurant_catalog_restaurantcatalog_nearby", + "label": ".nearby()", + "file_type": "code", + "source_file": "src/data/restaurant_catalog.py", + "source_location": "L53", + "_origin": "ast" + }, + { + "id": "src_data_restaurant_catalog_rationale_1", + "label": "\uc81c\uc8fc \uc74c\uc2dd\uc810 \uadfc\uc811 \uac80\uc0c9 \uce74\ud0c8\ub85c\uadf8 \u2014 data/jeju_places.csv \uae30\ubc18. RepairEngine\uc758 Outlier Deletion \uc81c\uc548\u2026", + "file_type": "rationale", + "source_file": "src/data/restaurant_catalog.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "src_data_restaurant_catalog_rationale_25", + "label": "\uce74\ud14c\uace0\ub9ac=\uc74c\uc2dd\uc810(FD) \uc7a5\uc18c\uc758 \uc88c\ud45c \uadfc\uc811 \uac80\uc0c9.", + "file_type": "rationale", + "source_file": "src/data/restaurant_catalog.py", + "source_location": "L25", + "_origin": "ast" + }, + { + "id": "src_data_restaurant_catalog_rationale_61", + "label": "\ubc18\uacbd \ub0b4 \uac00\uc7a5 \uac00\uae4c\uc6b4 \uc74c\uc2dd\uc810 \ubaa9\ub85d (\uac70\ub9ac\uc21c, exclude_name \uc790\uae30 \uc790\uc2e0 \uc81c\uc678).", + "file_type": "rationale", + "source_file": "src/data/restaurant_catalog.py", + "source_location": "L61", + "_origin": "ast" + }, + { + "id": "src_data_seoul_citydata_client", + "label": "seoul_citydata_client.py", + "file_type": "code", + "source_file": "src/data/seoul_citydata_client.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "src_data_seoul_citydata_client_forecastslot", + "label": "ForecastSlot", + "file_type": "code", + "source_file": "src/data/seoul_citydata_client.py", + "source_location": "L62", + "_origin": "ast" + }, + { + "id": "src_data_seoul_citydata_client_seoulrealtimecongestion", + "label": "SeoulRealtimeCongestion", + "file_type": "code", + "source_file": "src/data/seoul_citydata_client.py", + "source_location": "L71", + "_origin": "ast" + }, + { + "id": "src_data_seoul_citydata_client_seoulcitydataclient", + "label": "SeoulCityDataClient", + "file_type": "code", + "source_file": "src/data/seoul_citydata_client.py", + "source_location": "L83", + "_origin": "ast" + }, + { + "id": "src_data_seoul_citydata_client_seoulcitydataclient_init", + "label": ".__init__()", + "file_type": "code", + "source_file": "src/data/seoul_citydata_client.py", + "source_location": "L91", + "_origin": "ast" + }, + { + "id": "src_data_seoul_citydata_client_seoulcitydataclient_url", + "label": "._url()", + "file_type": "code", + "source_file": "src/data/seoul_citydata_client.py", + "source_location": "L101", + "_origin": "ast" + }, + { + "id": "src_data_seoul_citydata_client_seoulcitydataclient_parse_forecast", + "label": "._parse_forecast()", + "file_type": "code", + "source_file": "src/data/seoul_citydata_client.py", + "source_location": "L104", + "_origin": "ast" + }, + { + "id": "src_data_seoul_citydata_client_seoulcitydataclient_resolve_name", + "label": "._resolve_name()", + "file_type": "code", + "source_file": "src/data/seoul_citydata_client.py", + "source_location": "L119", + "_origin": "ast" + }, + { + "id": "src_data_seoul_citydata_client_seoulcitydataclient_get", + "label": ".get()", + "file_type": "code", + "source_file": "src/data/seoul_citydata_client.py", + "source_location": "L127", + "_origin": "ast" + }, + { + "id": "src_data_seoul_citydata_client_seoulcitydataclient_get_at", + "label": ".get_at()", + "file_type": "code", + "source_file": "src/data/seoul_citydata_client.py", + "source_location": "L168", + "_origin": "ast" + }, + { + "id": "src_data_seoul_citydata_client_rationale_1", + "label": "\uc11c\uc6b8 \ub3c4\uc2dc\ub370\uc774\ud130 API \ud074\ub77c\uc774\uc5b8\ud2b8 \u2014 \uc2e4\uc2dc\uac04 \uc778\uad6c \ud63c\uc7a1\ub3c4. API: \uc11c\uc6b8 \uc5f4\ub9b0\ub370\uc774\ud130\uad11\uc7a5 citydata (\ub3c4\uc2dc\ub370\uc774\ud130 API) \uc5d4\ub4dc\ud3ec\uc778\ud2b8:\u2026", + "file_type": "rationale", + "source_file": "src/data/seoul_citydata_client.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "src_data_seoul_citydata_client_rationale_84", + "label": "\uc11c\uc6b8 \ub3c4\uc2dc\ub370\uc774\ud130 \uc2e4\uc2dc\uac04 \ud63c\uc7a1\ub3c4 \ud074\ub77c\uc774\uc5b8\ud2b8 (\ub3d9\uae30). Args: api_key: SEOUL_DATA_API_KEY (\uae30\ubcf8\uac12: \ud658\uacbd\ubcc0\uc218\uc5d0\uc11c \ub85c\ub4dc)\u2026", + "file_type": "rationale", + "source_file": "src/data/seoul_citydata_client.py", + "source_location": "L84", + "_origin": "ast" + }, + { + "id": "src_data_seoul_citydata_client_rationale_128", + "label": "\uc7a5\uc18c\uba85\uc73c\ub85c \uc2e4\uc2dc\uac04 \ud63c\uc7a1\ub3c4\ub97c \uc870\ud68c\ud55c\ub2e4. Args: area_name: \uc7a5\uc18c\uba85 (\ubcc4\uce6d \uc790\ub3d9 \ud574\uc11d \u2014 AREA_ALIASES \ucc38\uc870) \uc608:\u2026", + "file_type": "rationale", + "source_file": "src/data/seoul_citydata_client.py", + "source_location": "L128", + "_origin": "ast" + }, + { + "id": "src_data_seoul_citydata_client_rationale_169", + "label": "\ud2b9\uc815 \uc2dc\uac01(HH:MM)\uc758 \uc608\uce21 \ud63c\uc7a1\ub3c4\ub97c \ubc18\ud658\ud55c\ub2e4. target_time\uc774 \ud604\uc7ac\ub77c\uba74 \uc2e4\uc2dc\uac04, \ubbf8\ub798\ub77c\uba74 \uc608\uce21\uac12\uc744 \uc0ac\uc6a9\ud55c\ub2e4. Args:\u2026", + "file_type": "rationale", + "source_file": "src/data/seoul_citydata_client.py", + "source_location": "L169", + "_origin": "ast" + }, + { + "id": "src_data_theme_taxonomy", + "label": "theme_taxonomy.py", + "file_type": "code", + "source_file": "src/data/theme_taxonomy.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "src_data_theme_taxonomy_userpreferences", + "label": "UserPreferences", + "file_type": "code", + "source_file": "src/data/theme_taxonomy.py", + "source_location": "L83", + "_origin": "ast" + }, + { + "id": "src_data_theme_taxonomy_userpreferences_post_init", + "label": ".__post_init__()", + "file_type": "code", + "source_file": "src/data/theme_taxonomy.py", + "source_location": "L88", + "_origin": "ast" + }, + { + "id": "src_data_theme_taxonomy_userpreferences_all_themes", + "label": ".all_themes()", + "file_type": "code", + "source_file": "src/data/theme_taxonomy.py", + "source_location": "L105", + "_origin": "ast" + }, + { + "id": "src_data_theme_taxonomy_matches_place_type", + "label": "matches_place_type()", + "file_type": "code", + "source_file": "src/data/theme_taxonomy.py", + "source_location": "L111", + "_origin": "ast" + }, + { + "id": "src_data_theme_taxonomy_get_place_types_for", + "label": "get_place_types_for()", + "file_type": "code", + "source_file": "src/data/theme_taxonomy.py", + "source_location": "L140", + "_origin": "ast" + }, + { + "id": "src_data_theme_taxonomy_rationale_1", + "label": "\ud14c\ub9c8 \ubd84\ub958 \uccb4\uacc4 (2\ucd95 18\ud14c\ub9c8). \ucd95 A: PLACE_TYPES (9\uac1c) \u2014 \uc7a5\uc18c \uc720\ud615 (\uc0b0, \ubc14\ub2e4, \uce74\ud398 \ub4f1 \uad6c\uccb4\uc801) \ucd95 B:\u2026", + "file_type": "rationale", + "source_file": "src/data/theme_taxonomy.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "src_data_theme_taxonomy_rationale_84", + "label": "\uc0ac\uc6a9\uc790\uac00 \uc120\ud0dd\ud55c \ud14c\ub9c8. \ub450 \ucd95 \ubaa8\ub450 \ub2e4\uc911 \uc120\ud0dd \ud5c8\uc6a9 (\uac01 1\uac1c \uc774\uc0c1).", + "file_type": "rationale", + "source_file": "src/data/theme_taxonomy.py", + "source_location": "L84", + "_origin": "ast" + }, + { + "id": "src_data_theme_taxonomy_rationale_106", + "label": "\ub450 \ucd95\uc758 \uc120\ud0dd\uc744 \ud3c9\ud0c4\ud654 (LLM \ud504\ub86c\ud504\ud2b8\uc6a9).", + "file_type": "rationale", + "source_file": "src/data/theme_taxonomy.py", + "source_location": "L106", + "_origin": "ast" + }, + { + "id": "src_data_theme_taxonomy_rationale_116", + "label": "\uc8fc\uc5b4\uc9c4 lcls_systm3 \ub610\ub294 content_type_id\uac00 place_type\uc5d0 \ubd80\ud569\ud558\ub294\uc9c0 \ud310\uc815. \uc608)\u2026", + "file_type": "rationale", + "source_file": "src/data/theme_taxonomy.py", + "source_location": "L116", + "_origin": "ast" + }, + { + "id": "src_data_theme_taxonomy_rationale_144", + "label": "\uc8fc\uc5b4\uc9c4 \ucf54\ub4dc\uac00 \ub9e4\uce6d\ub418\ub294 \ubaa8\ub4e0 PLACE_TYPE \ubc18\ud658 (\ud55c POI\uac00 \uc5ec\ub7ec \uc720\ud615\uc5d0 \uc18d\ud560 \uc218 \uc788\uc74c).", + "file_type": "rationale", + "source_file": "src/data/theme_taxonomy.py", + "source_location": "L144", + "_origin": "ast" + }, + { + "id": "src_data_tour_api", + "label": "tour_api.py", + "file_type": "code", + "source_file": "src/data/tour_api.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "src_data_tour_api_parse_usetime", + "label": "_parse_usetime()", + "file_type": "code", + "source_file": "src/data/tour_api.py", + "source_location": "L18", + "_origin": "ast" + }, + { + "id": "src_data_tour_api_extract_items", + "label": "_extract_items()", + "file_type": "code", + "source_file": "src/data/tour_api.py", + "source_location": "L27", + "_origin": "ast" + }, + { + "id": "src_data_tour_api_tourapiclient", + "label": "TourAPIClient", + "file_type": "code", + "source_file": "src/data/tour_api.py", + "source_location": "L38", + "_origin": "ast" + }, + { + "id": "src_data_tour_api_tourapiclient_init", + "label": ".__init__()", + "file_type": "code", + "source_file": "src/data/tour_api.py", + "source_location": "L48", + "_origin": "ast" + }, + { + "id": "src_data_tour_api_tourapiclient_from_settings", + "label": ".from_settings()", + "file_type": "code", + "source_file": "src/data/tour_api.py", + "source_location": "L62", + "_origin": "ast" + }, + { + "id": "src_data_tour_api_tourapiclient_search_poi", + "label": ".search_poi()", + "file_type": "code", + "source_file": "src/data/tour_api.py", + "source_location": "L70", + "_origin": "ast" + }, + { + "id": "src_data_tour_api_tourapiclient_get_operating_hours", + "label": ".get_operating_hours()", + "file_type": "code", + "source_file": "src/data/tour_api.py", + "source_location": "L123", + "_origin": "ast" + }, + { + "id": "src_data_tour_api_tourapiclient_clear_cache", + "label": ".clear_cache()", + "file_type": "code", + "source_file": "src/data/tour_api.py", + "source_location": "L157", + "_origin": "ast" + }, + { + "id": "src_data_tour_api_rationale_1", + "label": "\ud55c\uad6d\uad00\uad11\uacf5\uc0ac TourAPI v2 \ube44\ub3d9\uae30 \ud074\ub77c\uc774\uc5b8\ud2b8 (httpx + Graceful Fallback).", + "file_type": "rationale", + "source_file": "src/data/tour_api.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "src_data_tour_api_rationale_19", + "label": "09:00 ~ 18:00' \ud615\ud0dc\uc5d0\uc11c (open, close) \ud30c\uc2f1. \uc2e4\ud328 \uc2dc \ud3f4\ubc31.", + "file_type": "rationale", + "source_file": "src/data/tour_api.py", + "source_location": "L19", + "_origin": "ast" + }, + { + "id": "src_data_tour_api_rationale_28", + "label": "TourAPI \uc751\ub2f5 JSON\uc5d0\uc11c item \ub9ac\uc2a4\ud2b8 \ucd94\ucd9c.", + "file_type": "rationale", + "source_file": "src/data/tour_api.py", + "source_location": "L28", + "_origin": "ast" + }, + { + "id": "src_data_tour_api_rationale_39", + "label": "\ud55c\uad6d\uad00\uad11\uacf5\uc0ac TourAPI v2 \ube44\ub3d9\uae30 \ud074\ub77c\uc774\uc5b8\ud2b8. \ubaa8\ub4e0 \ud638\ucd9c\uc740 \uc2e4\ud328 \uc2dc Graceful Fallback: - search_poi \u2192 \ube48\u2026", + "file_type": "rationale", + "source_file": "src/data/tour_api.py", + "source_location": "L39", + "_origin": "ast" + }, + { + "id": "src_data_tour_api_rationale_63", + "label": "Settings\uc5d0\uc11c \ud0a4 \ub85c\ub4dc. \ud0a4 \uc5c6\uc73c\uba74 None \ubc18\ud658 (Graceful Fallback \uc9c4\uc785\uc810).", + "file_type": "rationale", + "source_file": "src/data/tour_api.py", + "source_location": "L63", + "_origin": "ast" + }, + { + "id": "src_data_tour_api_rationale_76", + "label": "\ud0a4\uc6cc\ub4dc\ub85c POI \uac80\uc0c9. \uc2e4\ud328 \uc2dc \ube48 \ub9ac\uc2a4\ud2b8 \ubc18\ud658.", + "file_type": "rationale", + "source_file": "src/data/tour_api.py", + "source_location": "L76", + "_origin": "ast" + }, + { + "id": "src_data_tour_api_rationale_128", + "label": "\uc6b4\uc601\uc2dc\uac04 \uc870\ud68c. \uc2e4\ud328 \ub610\ub294 \ub370\uc774\ud130 \uc5c6\uc73c\uba74 (\"00:00\", \"23:59\") \ubc18\ud658.", + "file_type": "rationale", + "source_file": "src/data/tour_api.py", + "source_location": "L128", + "_origin": "ast" + }, + { + "id": "src_data_wellness_api", + "label": "wellness_api.py", + "file_type": "code", + "source_file": "src/data/wellness_api.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "src_data_wellness_api_wellnessplace", + "label": "WellnessPlace", + "file_type": "code", + "source_file": "src/data/wellness_api.py", + "source_location": "L16", + "_origin": "ast" + }, + { + "id": "src_data_wellness_api_extract_items", + "label": "_extract_items()", + "file_type": "code", + "source_file": "src/data/wellness_api.py", + "source_location": "L27", + "_origin": "ast" + }, + { + "id": "src_data_wellness_api_safe_float", + "label": "_safe_float()", + "file_type": "code", + "source_file": "src/data/wellness_api.py", + "source_location": "L38", + "_origin": "ast" + }, + { + "id": "src_data_wellness_api_py_any", + "label": "Any", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast" + }, + { + "id": "src_data_wellness_api_wellnessapiclient", + "label": "WellnessAPIClient", + "file_type": "code", + "source_file": "src/data/wellness_api.py", + "source_location": "L45", + "_origin": "ast" + }, + { + "id": "src_data_wellness_api_wellnessapiclient_init", + "label": ".__init__()", + "file_type": "code", + "source_file": "src/data/wellness_api.py", + "source_location": "L51", + "_origin": "ast" + }, + { + "id": "src_data_wellness_api_wellnessapiclient_from_settings", + "label": ".from_settings()", + "file_type": "code", + "source_file": "src/data/wellness_api.py", + "source_location": "L58", + "_origin": "ast" + }, + { + "id": "src_data_wellness_api_wellnessapiclient_fetch_page", + "label": ".fetch_page()", + "file_type": "code", + "source_file": "src/data/wellness_api.py", + "source_location": "L66", + "_origin": "ast" + }, + { + "id": "src_data_wellness_api_wellnessapiclient_fetch_all", + "label": ".fetch_all()", + "file_type": "code", + "source_file": "src/data/wellness_api.py", + "source_location": "L117", + "_origin": "ast" + }, + { + "id": "src_data_wellness_api_rationale_1", + "label": "\ud55c\uad6d\uad00\uad11\uacf5\uc0ac \uc6f0\ub2c8\uc2a4 \uad00\uad11 \uc815\ubcf4 API \ud074\ub77c\uc774\uc5b8\ud2b8 (B551011/WellnessTursmService).", + "file_type": "rationale", + "source_file": "src/data/wellness_api.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "src_data_wellness_api_rationale_46", + "label": "\uc6f0\ub2c8\uc2a4 \uad00\uad11 \uc815\ubcf4 API \u2014 \ube44\ub3d9\uae30 \ud074\ub77c\uc774\uc5b8\ud2b8. Graceful Fallback: API \ud638\ucd9c \uc2e4\ud328 \uc2dc \ube48 \ub9ac\uc2a4\ud2b8 \ubc18\ud658.", + "file_type": "rationale", + "source_file": "src/data/wellness_api.py", + "source_location": "L46", + "_origin": "ast" + }, + { + "id": "src_data_wellness_api_rationale_118", + "label": "\uc804\uccb4 \uc6f0\ub2c8\uc2a4 \uad00\uad11 \ubaa9\ub85d \uc870\ud68c (\ud398\uc774\uc9c0 \uc21c\ud68c).", + "file_type": "rationale", + "source_file": "src/data/wellness_api.py", + "source_location": "L118", + "_origin": "ast" + }, + { + "id": "src_explain_init", + "label": "explain/__init__.py", + "file_type": "code", + "source_file": "src/explain/__init__.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "src_explain_explain_engine", + "label": "explain_engine.py", + "file_type": "code", + "source_file": "src/explain/explain_engine.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "src_explain_explain_engine_lrucache", + "label": "_LRUCache", + "file_type": "code", + "source_file": "src/explain/explain_engine.py", + "source_location": "L44", + "_origin": "ast" + }, + { + "id": "src_explain_explain_engine_lrucache_init", + "label": ".__init__()", + "file_type": "code", + "source_file": "src/explain/explain_engine.py", + "source_location": "L47", + "_origin": "ast" + }, + { + "id": "src_explain_explain_engine_lrucache_contains", + "label": ".__contains__()", + "file_type": "code", + "source_file": "src/explain/explain_engine.py", + "source_location": "L51", + "_origin": "ast" + }, + { + "id": "src_explain_explain_engine_lrucache_getitem", + "label": ".__getitem__()", + "file_type": "code", + "source_file": "src/explain/explain_engine.py", + "source_location": "L54", + "_origin": "ast" + }, + { + "id": "src_explain_explain_engine_lrucache_setitem", + "label": ".__setitem__()", + "file_type": "code", + "source_file": "src/explain/explain_engine.py", + "source_location": "L58", + "_origin": "ast" + }, + { + "id": "src_explain_explain_engine_lrucache_clear", + "label": ".clear()", + "file_type": "code", + "source_file": "src/explain/explain_engine.py", + "source_location": "L65", + "_origin": "ast" + }, + { + "id": "src_explain_explain_engine_cache_key", + "label": "_cache_key()", + "file_type": "code", + "source_file": "src/explain/explain_engine.py", + "source_location": "L171", + "_origin": "ast" + }, + { + "id": "src_explain_explain_engine_graph_context", + "label": "_graph_context()", + "file_type": "code", + "source_file": "src/explain/explain_engine.py", + "source_location": "L187", + "_origin": "ast" + }, + { + "id": "src_explain_explain_engine_find_alternatives", + "label": "_find_alternatives()", + "file_type": "code", + "source_file": "src/explain/explain_engine.py", + "source_location": "L205", + "_origin": "ast" + }, + { + "id": "src_explain_explain_engine_build_user_prompt", + "label": "_build_user_prompt()", + "file_type": "code", + "source_file": "src/explain/explain_engine.py", + "source_location": "L215", + "_origin": "ast" + }, + { + "id": "src_explain_explain_engine_parse_llm_response", + "label": "_parse_llm_response()", + "file_type": "code", + "source_file": "src/explain/explain_engine.py", + "source_location": "L331", + "_origin": "ast" + }, + { + "id": "src_explain_explain_engine_fallback", + "label": "_fallback()", + "file_type": "code", + "source_file": "src/explain/explain_engine.py", + "source_location": "L353", + "_origin": "ast" + }, + { + "id": "src_explain_explain_engine_explainengine", + "label": "ExplainEngine", + "file_type": "code", + "source_file": "src/explain/explain_engine.py", + "source_location": "L416", + "_origin": "ast" + }, + { + "id": "src_explain_explain_engine_explainengine_init", + "label": ".__init__()", + "file_type": "code", + "source_file": "src/explain/explain_engine.py", + "source_location": "L419", + "_origin": "ast" + }, + { + "id": "src_explain_explain_engine_py_any", + "label": "Any", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast" + }, + { + "id": "src_explain_explain_engine_explainengine_is_available", + "label": ".is_available()", + "file_type": "code", + "source_file": "src/explain/explain_engine.py", + "source_location": "L438", + "_origin": "ast" + }, + { + "id": "src_explain_explain_engine_explainengine_build_alternatives", + "label": ".build_alternatives()", + "file_type": "code", + "source_file": "src/explain/explain_engine.py", + "source_location": "L441", + "_origin": "ast" + }, + { + "id": "src_explain_explain_engine_explainengine_generate", + "label": ".generate()", + "file_type": "code", + "source_file": "src/explain/explain_engine.py", + "source_location": "L452", + "_origin": "ast" + }, + { + "id": "src_explain_explain_engine_explainengine_call_llm", + "label": "._call_llm()", + "file_type": "code", + "source_file": "src/explain/explain_engine.py", + "source_location": "L526", + "_origin": "ast" + }, + { + "id": "src_explain_explain_engine_rationale_1", + "label": "ExplainEngine \u2014 Claude API \uae30\ubc18 4\ub2e8\uacc4 \uc790\uc5f0\uc5b4 \uc124\uba85 \uc0dd\uc131\uae30. \uac80\uc99d \uc5d4\uc9c4\uc774 \ud0d0\uc9c0\ud55c Hard Fail / Warning /\u2026", + "file_type": "rationale", + "source_file": "src/explain/explain_engine.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "src_explain_explain_engine_rationale_45", + "label": "\ucd5c\ub300 \ud06c\uae30 \uc81c\ud55c LRU \uce90\uc2dc \u2014 collections.OrderedDict \uae30\ubc18 (\uc678\ubd80 \uc758\uc874\uc131 \uc5c6\uc74c).", + "file_type": "rationale", + "source_file": "src/explain/explain_engine.py", + "source_location": "L45", + "_origin": "ast" + }, + { + "id": "src_explain_explain_engine_rationale_188", + "label": "\uc9c0\uc2dd\uadf8\ub798\ud504\uc5d0\uc11c POI\uba85 \uac80\uc0c9 \u2192 \uc9c0\uc5ed/\uce74\ud14c\uace0\ub9ac + \ub3c4\ubcf4 \uadfc\uc811 \ub300\uc548 \uadfc\uac70. \uadf8\ub798\ud504 \ubbf8\uc124\uc815\uc774\uac70\ub098 \ub9e4\uce6d \uc2e4\ud328(\ub300\uc0c1 \uc9c0\uc5ed \ubc16 POI \ub4f1) \uc2dc None\u2026", + "file_type": "rationale", + "source_file": "src/explain/explain_engine.py", + "source_location": "L188", + "_origin": "ast" + }, + { + "id": "src_explain_explain_engine_rationale_206", + "label": "\uc9c0\uc2dd\uadf8\ub798\ud504\uc5d0\uc11c POI\uba85 \uac80\uc0c9 \u2192 \ub3c4\ubcf4 \uadfc\uc811 \ub300\uc548 POI \ubaa9\ub85d. \ubbf8\ub9e4\uce6d/\ubbf8\uc124\uc815 \uc2dc \ube48 \ub9ac\uc2a4\ud2b8.", + "file_type": "rationale", + "source_file": "src/explain/explain_engine.py", + "source_location": "L206", + "_origin": "ast" + }, + { + "id": "src_explain_explain_engine_rationale_417", + "label": "LLM \uae30\ubc18 4\ub2e8\uacc4 \uc124\uba85 \uc0dd\uc131 \uc5d4\uc9c4. External I/O = Claude API.", + "file_type": "rationale", + "source_file": "src/explain/explain_engine.py", + "source_location": "L417", + "_origin": "ast" + }, + { + "id": "src_explain_explain_engine_rationale_442", + "label": "Hard Fail POI\ubcc4 \uc9c0\uc2dd\uadf8\ub798\ud504 \ub3c4\ubcf4\uad8c \ub300\uc548 \u2014 \uacb0\uacfc\ubcf4\uace0\uc11c\uc758 \ub300\uccb4 \uc81c\uc548 \uadfc\uac70.", + "file_type": "rationale", + "source_file": "src/explain/explain_engine.py", + "source_location": "L442", + "_origin": "ast" + }, + { + "id": "src_explain_pipeline", + "label": "pipeline.py", + "file_type": "code", + "source_file": "src/explain/pipeline.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "src_explain_pipeline_to_vrptw_day", + "label": "_to_vrptw_day()", + "file_type": "code", + "source_file": "src/explain/pipeline.py", + "source_location": "L53", + "_origin": "ast" + }, + { + "id": "src_explain_pipeline_to_poi_with_category", + "label": "_to_poi_with_category()", + "file_type": "code", + "source_file": "src/explain/pipeline.py", + "source_location": "L70", + "_origin": "ast" + }, + { + "id": "src_explain_pipeline_scorebundle", + "label": "_ScoreBundle", + "file_type": "code", + "source_file": "src/explain/pipeline.py", + "source_location": "L83", + "_origin": "ast" + }, + { + "id": "src_explain_pipeline_validatorpipeline", + "label": "ValidatorPipeline", + "file_type": "code", + "source_file": "src/explain/pipeline.py", + "source_location": "L100", + "_origin": "ast" + }, + { + "id": "src_explain_pipeline_validatorpipeline_init", + "label": ".__init__()", + "file_type": "code", + "source_file": "src/explain/pipeline.py", + "source_location": "L103", + "_origin": "ast" + }, + { + "id": "src_explain_pipeline_validatorpipeline_run", + "label": ".run()", + "file_type": "code", + "source_file": "src/explain/pipeline.py", + "source_location": "L119", + "_origin": "ast" + }, + { + "id": "src_explain_pipeline_validatorpipeline_score", + "label": "._score()", + "file_type": "code", + "source_file": "src/explain/pipeline.py", + "source_location": "L235", + "_origin": "ast" + }, + { + "id": "src_explain_pipeline_validatorpipeline_estimate_repair_gains", + "label": "._estimate_repair_gains()", + "file_type": "code", + "source_file": "src/explain/pipeline.py", + "source_location": "L349", + "_origin": "ast" + }, + { + "id": "src_explain_pipeline_rationale_1", + "label": "ValidatorPipeline \u2014 \uc804\uccb4 QA \ud30c\uc774\ud504\ub77c\uc778 \uc624\ucf00\uc2a4\ud2b8\ub808\uc774\ud130. \ud750\ub984: 1. per-day HardFail \ud0d0\uc9c0 2. Warning\u2026", + "file_type": "rationale", + "source_file": "src/explain/pipeline.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "src_explain_pipeline_rationale_54", + "label": "POI \ub9ac\uc2a4\ud2b8 \u2192 VRPTWDay \ubcc0\ud658.", + "file_type": "rationale", + "source_file": "src/explain/pipeline.py", + "source_location": "L54", + "_origin": "ast" + }, + { + "id": "src_explain_pipeline_rationale_84", + "label": "1\u00b73\u00b73b\u00b74\u00b75\u00b76\u00b77\u00b78\ub2e8\uacc4(\uc810\uc218 \uacc4\uc0b0)\ub9cc\uc758 \uacb0\uacfc. Warning\u00b7Repair\u00b7Explain \ubbf8\ud3ec\ud568.", + "file_type": "rationale", + "source_file": "src/explain/pipeline.py", + "source_location": "L84", + "_origin": "ast" + }, + { + "id": "src_explain_pipeline_rationale_101", + "label": "\uc804\uccb4 \uac80\uc99d \ud30c\uc774\ud504\ub77c\uc778. External I/O = Claude API (ExplainEngine\u00b7ThemeAlignmentJudge).", + "file_type": "rationale", + "source_file": "src/explain/pipeline.py", + "source_location": "L101", + "_origin": "ast" + }, + { + "id": "src_explain_pipeline_rationale_128", + "label": "\ud30c\uc774\ud504\ub77c\uc778 \uc2e4\ud589 \u2192 ValidationResult \ubc18\ud658. Args: plan: \uc5ec\ud589 \uacc4\ud68d (party_type, travel_type,\u2026", + "file_type": "rationale", + "source_file": "src/explain/pipeline.py", + "source_location": "L128", + "_origin": "ast" + }, + { + "id": "src_explain_pipeline_rationale_244", + "label": "1\u00b73\u00b73b\u00b74\u00b75\u00b76\u00b77\u00b78\ub2e8\uacc4\ub9cc \uc2e4\ud589\ud574 \uc810\uc218\ub97c \uacc4\uc0b0\ud55c\ub2e4 (Warning\u00b7Repair\u00b7Explain \uc81c\uc678). RepairEngine \uc81c\uc548\uc758\u2026", + "file_type": "rationale", + "source_file": "src/explain/pipeline.py", + "source_location": "L244", + "_origin": "ast" + }, + { + "id": "src_explain_pipeline_rationale_357", + "label": "\uad50\uc815 \uc81c\uc548\ubcc4 \uc608\uc0c1 \uc810\uc218 \ubcc0\ud654(`estimated_score_gain`)\uc640 \ubb38\uc81c \ud574\uc18c \uc5ec\ubd80(`resolves_hard_fail`)\ub97c \ucc44\uc6b4\ub2e4.\u2026", + "file_type": "rationale", + "source_file": "src/explain/pipeline.py", + "source_location": "L357", + "_origin": "ast" + }, + { + "id": "src_explain_plan_extractor", + "label": "plan_extractor.py", + "file_type": "code", + "source_file": "src/explain/plan_extractor.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "src_explain_plan_extractor_planextractionerror", + "label": "PlanExtractionError", + "file_type": "code", + "source_file": "src/explain/plan_extractor.py", + "source_location": "L60", + "_origin": "ast" + }, + { + "id": "src_explain_plan_extractor_py_exception", + "label": "Exception", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast" + }, + { + "id": "src_explain_plan_extractor_strip_fence", + "label": "_strip_fence()", + "file_type": "code", + "source_file": "src/explain/plan_extractor.py", + "source_location": "L64", + "_origin": "ast" + }, + { + "id": "src_explain_plan_extractor_parse_response", + "label": "_parse_response()", + "file_type": "code", + "source_file": "src/explain/plan_extractor.py", + "source_location": "L68", + "_origin": "ast" + }, + { + "id": "src_explain_plan_extractor_fallback_text_parse", + "label": "_fallback_text_parse()", + "file_type": "code", + "source_file": "src/explain/plan_extractor.py", + "source_location": "L80", + "_origin": "ast" + }, + { + "id": "src_explain_plan_extractor_planextractor", + "label": "PlanExtractor", + "file_type": "code", + "source_file": "src/explain/plan_extractor.py", + "source_location": "L103", + "_origin": "ast" + }, + { + "id": "src_explain_plan_extractor_planextractor_init", + "label": ".__init__()", + "file_type": "code", + "source_file": "src/explain/plan_extractor.py", + "source_location": "L106", + "_origin": "ast" + }, + { + "id": "src_explain_plan_extractor_py_any", + "label": "Any", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast" + }, + { + "id": "src_explain_plan_extractor_planextractor_from_env", + "label": ".from_env()", + "file_type": "code", + "source_file": "src/explain/plan_extractor.py", + "source_location": "L123", + "_origin": "ast" + }, + { + "id": "src_explain_plan_extractor_planextractor_is_available", + "label": ".is_available()", + "file_type": "code", + "source_file": "src/explain/plan_extractor.py", + "source_location": "L126", + "_origin": "ast" + }, + { + "id": "src_explain_plan_extractor_planextractor_extract_from_text", + "label": ".extract_from_text()", + "file_type": "code", + "source_file": "src/explain/plan_extractor.py", + "source_location": "L129", + "_origin": "ast" + }, + { + "id": "src_explain_plan_extractor_planextractor_extract_from_document", + "label": ".extract_from_document()", + "file_type": "code", + "source_file": "src/explain/plan_extractor.py", + "source_location": "L138", + "_origin": "ast" + }, + { + "id": "src_explain_plan_extractor_planextractor_call", + "label": "._call()", + "file_type": "code", + "source_file": "src/explain/plan_extractor.py", + "source_location": "L158", + "_origin": "ast" + }, + { + "id": "src_explain_plan_extractor_demo", + "label": "_demo()", + "file_type": "code", + "source_file": "src/explain/plan_extractor.py", + "source_location": "L177", + "_origin": "ast" + }, + { + "id": "src_explain_plan_extractor_rationale_1", + "label": "PlanExtractor \u2014 Claude API \uae30\ubc18 \uc5ec\ud589 \uc77c\uc815\ud45c \ud30c\uc2f1 \uc5d4\uc9c4. '\ub300\ud55c\ubbfc\uad6d\uad6c\uc11d\uad6c\uc11d'(AI\ucf55\ucf55\ud50c\ub798\ub108 \ub4f1)\uc5d0\uc11c \ub098\uc628 \uc5ec\ud589 \ucf54\uc2a4 \ucd94\ucc9c\u2026", + "file_type": "rationale", + "source_file": "src/explain/plan_extractor.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "src_explain_plan_extractor_rationale_61", + "label": "\ucd94\ucd9c \uc2e4\ud328 \u2014 API \ubbf8\uc124\uc815, \ud638\ucd9c \uc2e4\ud328, \uc751\ub2f5 \ud30c\uc2f1 \uc2e4\ud328 \ub4f1.", + "file_type": "rationale", + "source_file": "src/explain/plan_extractor.py", + "source_location": "L61", + "_origin": "ast" + }, + { + "id": "src_explain_plan_extractor_rationale_81", + "label": "ANTHROPIC_API_KEY \ubbf8\uc124\uc815 \uc2dc \ucd5c\uc18c\ud55c\uc758 \uc904 \ub2e8\uc704 \ud734\ub9ac\uc2a4\ud2f1 \ud30c\uc2f1. ponytail: day/\uce74\ud14c\uace0\ub9ac \ud0dc\uadf8 \uc778\uc2dd \uc5c6\ub294 \ub2e8\uc21c \ub77c\uc778\u2026", + "file_type": "rationale", + "source_file": "src/explain/plan_extractor.py", + "source_location": "L81", + "_origin": "ast" + }, + { + "id": "src_explain_plan_extractor_rationale_104", + "label": "LLM \uae30\ubc18 \uc77c\uc815\ud45c \ucd94\ucd9c\uae30. External I/O = Claude API.", + "file_type": "rationale", + "source_file": "src/explain/plan_extractor.py", + "source_location": "L104", + "_origin": "ast" + }, + { + "id": "src_explain_plan_extractor_rationale_130", + "label": "\ubd99\uc5ec\ub123\uc740 \ud14d\uc2a4\ud2b8\ub97c \ucffc\ub9ac \ub9ac\ub77c\uc774\ud305\uc73c\ub85c \uc815\ub82c\ub41c day/place \uad6c\uc870\ub85c \ubcc0\ud658.", + "file_type": "rationale", + "source_file": "src/explain/plan_extractor.py", + "source_location": "L130", + "_origin": "ast" + }, + { + "id": "src_explain_plan_extractor_rationale_139", + "label": "PDF\u00b7PNG\u00b7JPG \ucea1\ucc98\ub97c Claude Vision\uc73c\ub85c \uc77d\uc5b4 day/place \uad6c\uc870\ub85c \ubcc0\ud658.", + "file_type": "rationale", + "source_file": "src/explain/plan_extractor.py", + "source_location": "L139", + "_origin": "ast" + }, + { + "id": "src_explain_repair", + "label": "repair.py", + "file_type": "code", + "source_file": "src/explain/repair.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "src_explain_repair_norm", + "label": "_norm()", + "file_type": "code", + "source_file": "src/explain/repair.py", + "source_location": "L30", + "_origin": "ast" + }, + { + "id": "src_explain_repair_min_dwell_for", + "label": "_min_dwell_for()", + "file_type": "code", + "source_file": "src/explain/repair.py", + "source_location": "L34", + "_origin": "ast" + }, + { + "id": "src_explain_repair_reordersuggestion", + "label": "ReorderSuggestion", + "file_type": "code", + "source_file": "src/explain/repair.py", + "source_location": "L44", + "_origin": "ast" + }, + { + "id": "src_explain_repair_timetunesuggestion", + "label": "TimeTuneSuggestion", + "file_type": "code", + "source_file": "src/explain/repair.py", + "source_location": "L53", + "_origin": "ast" + }, + { + "id": "src_explain_repair_deletionsuggestion", + "label": "DeletionSuggestion", + "file_type": "code", + "source_file": "src/explain/repair.py", + "source_location": "L63", + "_origin": "ast" + }, + { + "id": "src_explain_repair_repairresult", + "label": "RepairResult", + "file_type": "code", + "source_file": "src/explain/repair.py", + "source_location": "L74", + "_origin": "ast" + }, + { + "id": "src_explain_repair_repairresult_is_empty", + "label": ".is_empty()", + "file_type": "code", + "source_file": "src/explain/repair.py", + "source_location": "L80", + "_origin": "ast" + }, + { + "id": "src_explain_repair_repairresult_total_estimated_gain", + "label": ".total_estimated_gain()", + "file_type": "code", + "source_file": "src/explain/repair.py", + "source_location": "L84", + "_origin": "ast" + }, + { + "id": "src_explain_repair_repairresult_to_dict", + "label": ".to_dict()", + "file_type": "code", + "source_file": "src/explain/repair.py", + "source_location": "L95", + "_origin": "ast" + }, + { + "id": "src_explain_repair_repairengine", + "label": "RepairEngine", + "file_type": "code", + "source_file": "src/explain/repair.py", + "source_location": "L101", + "_origin": "ast" + }, + { + "id": "src_explain_repair_repairengine_init", + "label": ".__init__()", + "file_type": "code", + "source_file": "src/explain/repair.py", + "source_location": "L104", + "_origin": "ast" + }, + { + "id": "src_explain_repair_repairengine_repair", + "label": ".repair()", + "file_type": "code", + "source_file": "src/explain/repair.py", + "source_location": "L108", + "_origin": "ast" + }, + { + "id": "src_explain_repair_repairengine_try_reorder", + "label": "._try_reorder()", + "file_type": "code", + "source_file": "src/explain/repair.py", + "source_location": "L142", + "_origin": "ast" + }, + { + "id": "src_explain_repair_repairengine_try_time_tune", + "label": "._try_time_tune()", + "file_type": "code", + "source_file": "src/explain/repair.py", + "source_location": "L171", + "_origin": "ast" + }, + { + "id": "src_explain_repair_repairengine_suggest_deletion", + "label": "._suggest_deletion()", + "file_type": "code", + "source_file": "src/explain/repair.py", + "source_location": "L224", + "_origin": "ast" + }, + { + "id": "src_explain_repair_rationale_1", + "label": "Minimal Interference Repair Engine. \uad50\uc815 \uc6b0\uc120\uc21c\uc704 (Hard Fail \ubc1c\uc0dd \uc2dc \uc21c\uc11c\ub300\ub85c \uc2dc\ub3c4): 1. Re-\u2026", + "file_type": "rationale", + "source_file": "src/explain/repair.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "src_explain_repair_rationale_35", + "label": "dwell_db \uae30\uc900 \ucd5c\uc18c \uad8c\uc7a5 \uccb4\ub958 \uc2dc\uac04 (50% \uae30\uc900, \uc808\ub300 \ucd5c\uc19f\uac12 20\ubd84).", + "file_type": "rationale", + "source_file": "src/explain/repair.py", + "source_location": "L35", + "_origin": "ast" + }, + { + "id": "src_explain_repair_rationale_85", + "label": "\ubaa8\ub4e0 \uc81c\uc548\uc744 \uc801\uc6a9\ud588\uc744 \ub54c \uc608\uc0c1 \ucd1d \uc810\uc218 \uc0c1\uc2b9\ubd84. \uac19\uc740 \ub0a0\uc9dc\uc758 \uc81c\uc548\ub4e4\uc740 \uc11c\ub85c \ub300\uc548(\ud558\ub098\ub9cc \uc801\uc6a9)\uc774\ubbc0\ub85c \ucd5c\ub313\uac12\ub9cc \ucde8\ud558\uace0, \uc11c\ub85c \ub2e4\ub978 \ub0a0\uc9dc\uc758 \uc81c\uc548\uc740\u2026", + "file_type": "rationale", + "source_file": "src/explain/repair.py", + "source_location": "L85", + "_origin": "ast" + }, + { + "id": "src_explain_repair_rationale_102", + "label": "Minimal Interference \uad50\uc815 \uc5d4\uc9c4. External I/O \uc5c6\uc74c.", + "file_type": "rationale", + "source_file": "src/explain/repair.py", + "source_location": "L102", + "_origin": "ast" + }, + { + "id": "src_explain_repair_rationale_115", + "label": "3\ub2e8\uacc4 \uad50\uc815 \uc2dc\ub3c4. Hard Fail\uc774 \uc5c6\uc73c\uba74 \uc989\uc2dc \ube48 \uacb0\uacfc \ubc18\ud658.", + "file_type": "rationale", + "source_file": "src/explain/repair.py", + "source_location": "L115", + "_origin": "ast" + }, + { + "id": "src_explain_repair_rationale_149", + "label": "n \u2264 7\uc778 \uacbd\uc6b0 \uc21c\uc5f4 \uc804\uc218 \ud0d0\uc0c9\uc73c\ub85c Hard Fail \uc5c6\ub294 \uc21c\uc11c \ubc18\ud658.", + "file_type": "rationale", + "source_file": "src/explain/repair.py", + "source_location": "L149", + "_origin": "ast" + }, + { + "id": "src_explain_repair_rationale_178", + "label": "\uccb4\ub958 \uc2dc\uac04\uc744 \ucd5c\uc19f\uac12\uae4c\uc9c0 5\ubd84 \ub2e8\uc704\ub85c \uc904\uc5ec \uc77c\uc815 \uacfc\ubc00 \uc644\ud654.", + "file_type": "rationale", + "source_file": "src/explain/repair.py", + "source_location": "L178", + "_origin": "ast" + }, + { + "id": "src_explain_repair_rationale_229", + "label": "\uc774\ub3d9 \uac70\ub9ac \uc808\uac10\ub7c9\uc774 \ucd5c\ub300\uc778 \uc7a5\uc18c(\uc9c0\ub9ac\uc801 \uc774\uc0c1\uce58)\ub97c \uc0ad\uc81c \ud6c4\ubcf4\ub85c \uc81c\uc548. \uc0ad\uc81c \ube44\uc6a9 = \uc81c\uac70 \uc2dc \uc774\ub3d9 \uc808\uac10(before\u2192i + i\u2192after) -\u2026", + "file_type": "rationale", + "source_file": "src/explain/repair.py", + "source_location": "L229", + "_origin": "ast" + }, + { + "id": "src_matrix_init", + "label": "matrix/__init__.py", + "file_type": "code", + "source_file": "src/matrix/__init__.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "src_matrix_init_rationale_1", + "label": "matrix \u2014 \uc774\ub3d9\uc2dc\uac04 \ud589\ub82c \uad6c\ud604\uccb4 \ud328\ud0a4\uc9c0.", + "file_type": "rationale", + "source_file": "src/matrix/__init__.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "src_matrix_redis_matrix", + "label": "redis_matrix.py", + "file_type": "code", + "source_file": "src/matrix/redis_matrix.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "src_matrix_redis_matrix_redistimematrix", + "label": "RedisTimeMatrix", + "file_type": "code", + "source_file": "src/matrix/redis_matrix.py", + "source_location": "L35", + "_origin": "ast" + }, + { + "id": "src_matrix_redis_matrix_redistimematrix_init", + "label": ".__init__()", + "file_type": "code", + "source_file": "src/matrix/redis_matrix.py", + "source_location": "L43", + "_origin": "ast" + }, + { + "id": "src_matrix_redis_matrix_redistimematrix_from_env", + "label": ".from_env()", + "file_type": "code", + "source_file": "src/matrix/redis_matrix.py", + "source_location": "L56", + "_origin": "ast" + }, + { + "id": "src_matrix_redis_matrix_py_path", + "label": "Path", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast" + }, + { + "id": "src_matrix_redis_matrix_redistimematrix_load_dotenv", + "label": "._load_dotenv()", + "file_type": "code", + "source_file": "src/matrix/redis_matrix.py", + "source_location": "L82", + "_origin": "ast" + }, + { + "id": "src_matrix_redis_matrix_redistimematrix_get_travel_time", + "label": ".get_travel_time()", + "file_type": "code", + "source_file": "src/matrix/redis_matrix.py", + "source_location": "L92", + "_origin": "ast" + }, + { + "id": "src_matrix_redis_matrix_redistimematrix_set_travel_time", + "label": ".set_travel_time()", + "file_type": "code", + "source_file": "src/matrix/redis_matrix.py", + "source_location": "L110", + "_origin": "ast" + }, + { + "id": "src_matrix_redis_matrix_redistimematrix_make_key", + "label": "._make_key()", + "file_type": "code", + "source_file": "src/matrix/redis_matrix.py", + "source_location": "L130", + "_origin": "ast" + }, + { + "id": "src_matrix_redis_matrix_redistimematrix_stats", + "label": ".stats()", + "file_type": "code", + "source_file": "src/matrix/redis_matrix.py", + "source_location": "L138", + "_origin": "ast" + }, + { + "id": "src_matrix_redis_matrix_redistimematrix_is_available", + "label": ".is_available()", + "file_type": "code", + "source_file": "src/matrix/redis_matrix.py", + "source_location": "L142", + "_origin": "ast" + }, + { + "id": "src_matrix_redis_matrix_rationale_1", + "label": "Redis \uae30\ubc18 TimeMatrix \u2014 REDIS_URL \ud658\uacbd\ubcc0\uc218\ub85c \uc790\ub3d9 \ud65c\uc131\ud654. KakaoMobilityMatrix\uc758 drop-in \ub300\uccb4\uc7ac:\u2026", + "file_type": "rationale", + "source_file": "src/matrix/redis_matrix.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "src_matrix_redis_matrix_rationale_36", + "label": "Redis \uae30\ubc18 TimeMatrix. redis-py\uac00 \uc124\uce58\ub418\uc5b4 \uc788\uace0 REDIS_URL\uc774 \uc720\ud6a8\ud560 \ub54c\ub9cc \ub3d9\uc791. get_travel_time\uc740\u2026", + "file_type": "rationale", + "source_file": "src/matrix/redis_matrix.py", + "source_location": "L36", + "_origin": "ast" + }, + { + "id": "src_matrix_redis_matrix_rationale_60", + "label": "REDIS_URL \ud658\uacbd\ubcc0\uc218\uac00 \uc788\uc73c\uba74 \uc778\uc2a4\ud134\uc2a4 \ubc18\ud658, \uc5c6\uc73c\uba74 None.", + "file_type": "rationale", + "source_file": "src/matrix/redis_matrix.py", + "source_location": "L60", + "_origin": "ast" + }, + { + "id": "src_scoring_init", + "label": "scoring/__init__.py", + "file_type": "code", + "source_file": "src/scoring/__init__.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "src_scoring_init_rationale_1", + "label": "\ud488\uc9c8 \ud3c9\uac00 (Scoring) \ub808\uc774\uc5b4. VRPTW \uac80\uc99d\uc744 \ud1b5\uacfc\ud55c \uc77c\uc815\uc5d0 \ub300\ud574 \"\uc5bc\ub9c8\ub098 \uc88b\uc740 \uacbd\ub85c\uc778\uac00\" \ud3c9\uac00: - travel_ratio : \uc774\ub3d9\u2026", + "file_type": "rationale", + "source_file": "src/scoring/__init__.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "src_scoring_bonus_engine", + "label": "bonus_engine.py", + "file_type": "code", + "source_file": "src/scoring/bonus_engine.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "src_scoring_bonus_engine_bonusresult", + "label": "BonusResult", + "file_type": "code", + "source_file": "src/scoring/bonus_engine.py", + "source_location": "L23", + "_origin": "ast" + }, + { + "id": "src_scoring_bonus_engine_placecoord", + "label": "_PlaceCoord", + "file_type": "code", + "source_file": "src/scoring/bonus_engine.py", + "source_location": "L34", + "_origin": "ast" + }, + { + "id": "src_scoring_bonus_engine_bonusengine", + "label": "BonusEngine", + "file_type": "code", + "source_file": "src/scoring/bonus_engine.py", + "source_location": "L39", + "_origin": "ast" + }, + { + "id": "src_scoring_bonus_engine_bonusengine_init", + "label": ".__init__()", + "file_type": "code", + "source_file": "src/scoring/bonus_engine.py", + "source_location": "L46", + "_origin": "ast" + }, + { + "id": "src_scoring_bonus_engine_bonusengine_from_dataset", + "label": ".from_dataset()", + "file_type": "code", + "source_file": "src/scoring/bonus_engine.py", + "source_location": "L55", + "_origin": "ast" + }, + { + "id": "src_scoring_bonus_engine_py_path", + "label": "Path", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast" + }, + { + "id": "src_scoring_bonus_engine_bonusengine_compute", + "label": ".compute()", + "file_type": "code", + "source_file": "src/scoring/bonus_engine.py", + "source_location": "L82", + "_origin": "ast" + }, + { + "id": "src_scoring_bonus_engine_nearest_km", + "label": "_nearest_km()", + "file_type": "code", + "source_file": "src/scoring/bonus_engine.py", + "source_location": "L134", + "_origin": "ast" + }, + { + "id": "src_scoring_bonus_engine_rationale_1", + "label": "\uac00\uc0b0\uc810 \uc5d4\uc9c4 \u2014 \uc6f0\ub2c8\uc2a4\u00b7\ubb34\uc7a5\uc560 \uc5ec\ud589\uc9c0 \ubc29\ubb38 \ubcf4\ub108\uc2a4.", + "file_type": "rationale", + "source_file": "src/scoring/bonus_engine.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "src_scoring_bonus_engine_rationale_40", + "label": "\uc6f0\ub2c8\uc2a4\u00b7\ubb34\uc7a5\uc560 \uc7a5\uc18c \ub370\uc774\ud130\uc14b \uae30\ubc18 \uac00\uc0b0\uc810 \uacc4\uc0b0\uae30. from_dataset() \ub85c JSON \ub370\uc774\ud130\uc14b\uc744 \ub85c\ub4dc\ud558\uc5ec \uc778\uc2a4\ud134\uc2a4 \uc0dd\uc131. External\u2026", + "file_type": "rationale", + "source_file": "src/scoring/bonus_engine.py", + "source_location": "L40", + "_origin": "ast" + }, + { + "id": "src_scoring_bonus_engine_rationale_60", + "label": "\ub85c\uceec JSON \ub370\uc774\ud130\uc14b\uc5d0\uc11c \ub85c\ub4dc. \ud30c\uc77c \uc5c6\uc73c\uba74 \ube48 \uc5d4\uc9c4 \ubc18\ud658.", + "file_type": "rationale", + "source_file": "src/scoring/bonus_engine.py", + "source_location": "L60", + "_origin": "ast" + }, + { + "id": "src_scoring_bonus_engine_rationale_88", + "label": "POI \ubaa9\ub85d\uc5d0\uc11c \uac00\uc0b0\uc810 \uacc4\uc0b0. - \uc6f0\ub2c8\uc2a4 \uc7a5\uc18c: \ubaa8\ub4e0 party_type\uc5d0 \uc801\uc6a9. - \ubb34\uc7a5\uc560 \uc7a5\uc18c:\u2026", + "file_type": "rationale", + "source_file": "src/scoring/bonus_engine.py", + "source_location": "L88", + "_origin": "ast" + }, + { + "id": "src_scoring_bonus_engine_rationale_135", + "label": "POI\uc640 \uac00\uc7a5 \uac00\uae4c\uc6b4 \uc88c\ud45c\uae4c\uc9c0\uc758 \uac70\ub9ac(km). coords\uac00 \ube44\uc5b4\uc788\uc73c\uba74 inf \ubc18\ud658.", + "file_type": "rationale", + "source_file": "src/scoring/bonus_engine.py", + "source_location": "L135", + "_origin": "ast" + }, + { + "id": "src_scoring_cluster_dispersion", + "label": "cluster_dispersion.py", + "file_type": "code", + "source_file": "src/scoring/cluster_dispersion.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "src_scoring_cluster_dispersion_count_area_backtracks", + "label": "count_area_backtracks()", + "file_type": "code", + "source_file": "src/scoring/cluster_dispersion.py", + "source_location": "L64", + "_origin": "ast" + }, + { + "id": "src_scoring_cluster_dispersion_count_label_backtracks", + "label": "_count_label_backtracks()", + "file_type": "code", + "source_file": "src/scoring/cluster_dispersion.py", + "source_location": "L80", + "_origin": "ast" + }, + { + "id": "src_scoring_cluster_dispersion_count_geo_cluster_backtracks", + "label": "count_geo_cluster_backtracks()", + "file_type": "code", + "source_file": "src/scoring/cluster_dispersion.py", + "source_location": "L93", + "_origin": "ast" + }, + { + "id": "src_scoring_cluster_dispersion_daydispersionmetric", + "label": "DayDispersionMetric", + "file_type": "code", + "source_file": "src/scoring/cluster_dispersion.py", + "source_location": "L114", + "_origin": "ast" + }, + { + "id": "src_scoring_cluster_dispersion_clusterdispersionreport", + "label": "ClusterDispersionReport", + "file_type": "code", + "source_file": "src/scoring/cluster_dispersion.py", + "source_location": "L125", + "_origin": "ast" + }, + { + "id": "src_scoring_cluster_dispersion_compute_day_dispersion", + "label": "_compute_day_dispersion()", + "file_type": "code", + "source_file": "src/scoring/cluster_dispersion.py", + "source_location": "L131", + "_origin": "ast" + }, + { + "id": "src_scoring_cluster_dispersion_switch_penalty", + "label": "_switch_penalty()", + "file_type": "code", + "source_file": "src/scoring/cluster_dispersion.py", + "source_location": "L166", + "_origin": "ast" + }, + { + "id": "src_scoring_cluster_dispersion_distance_penalty", + "label": "_distance_penalty()", + "file_type": "code", + "source_file": "src/scoring/cluster_dispersion.py", + "source_location": "L174", + "_origin": "ast" + }, + { + "id": "src_scoring_cluster_dispersion_backtrack_penalty", + "label": "_backtrack_penalty()", + "file_type": "code", + "source_file": "src/scoring/cluster_dispersion.py", + "source_location": "L184", + "_origin": "ast" + }, + { + "id": "src_scoring_cluster_dispersion_geo_bt_penalty", + "label": "_geo_bt_penalty()", + "file_type": "code", + "source_file": "src/scoring/cluster_dispersion.py", + "source_location": "L192", + "_origin": "ast" + }, + { + "id": "src_scoring_cluster_dispersion_evaluate_cluster_dispersion", + "label": "evaluate_cluster_dispersion()", + "file_type": "code", + "source_file": "src/scoring/cluster_dispersion.py", + "source_location": "L202", + "_origin": "ast" + }, + { + "id": "src_scoring_cluster_dispersion_rationale_1", + "label": "\uacbd\ub85c \ubc00\uc9d1\ub3c4 / \ubc88\uac1c\ud328\ud134 \ud0d0\uc9c0 (\ubaa8\ub4c8 \u2465) \u2014 Per-day \uac80\uc99d. \uc0ac\uc6a9\uc790 \uc758\ub3c4 (Q3): \"1\uc77c\ucc28\uc5d0\ub294 \ubaa9\uc801\uc9c0 \uadfc\ucc98\ub85c, 2\uc77c\ucc28\uc5d0\ub294 \ub610 \ub2e4\ub978\u2026", + "file_type": "rationale", + "source_file": "src/scoring/cluster_dispersion.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "src_scoring_cluster_dispersion_rationale_65", + "label": "M3: \uc2dc\uad70\uad6c \uae30\ubc18 \ube44\uc5f0\uc18d \uad6c\uc5ed \uc7ac\uc9c4\uc785 \ud69f\uc218. \uac15\ub0a8\u2192\ud64d\ub300\u2192\uac15\ub0a8 = 1, \uc21c\ubc29\ud5a5 4\uad6c\uc5ed \uc21c\ud68c = 0.", + "file_type": "rationale", + "source_file": "src/scoring/cluster_dispersion.py", + "source_location": "L65", + "_origin": "ast" + }, + { + "id": "src_scoring_cluster_dispersion_rationale_81", + "label": "\ud074\ub7ec\uc2a4\ud130 \ub808\uc774\ube14 \ub9ac\uc2a4\ud2b8\uc5d0\uc11c \ube44\uc5f0\uc18d \uc7ac\uc9c4\uc785 \ud69f\uc218 \uacc4\uc0b0 (M4 \uacf5\uc6a9).", + "file_type": "rationale", + "source_file": "src/scoring/cluster_dispersion.py", + "source_location": "L81", + "_origin": "ast" + }, + { + "id": "src_scoring_cluster_dispersion_rationale_97", + "label": "M4: DBSCAN \uc9c0\ub9ac \ud074\ub7ec\uc2a4\ud130 \uae30\ubc18 \ube44\uc5f0\uc18d \uc7ac\uc9c4\uc785 \ud69f\uc218. M3(\uc2dc\uad70\uad6c \uae30\ubc18)\uac00 \uc7a1\uc9c0 \ubabb\ud558\ub294 \ub300\ud615 \uc2dc\uad70\uad6c \ub0b4\ubd80 \ubd84\uc0b0 \ucf00\uc774\uc2a4 \ubcf4\uc644.\u2026", + "file_type": "rationale", + "source_file": "src/scoring/cluster_dispersion.py", + "source_location": "L97", + "_origin": "ast" + }, + { + "id": "src_scoring_cluster_dispersion_rationale_193", + "label": "M4 \ud328\ub110\ud2f0. M3\uac00 \uc774\ubbf8 \uac19\uc740 \uc774\ubca4\ud2b8\ub97c \ud0d0\uc9c0\ud55c \uacbd\uc6b0 \uc911\ubcf5 \ubc29\uc9c0.", + "file_type": "rationale", + "source_file": "src/scoring/cluster_dispersion.py", + "source_location": "L193", + "_origin": "ast" + }, + { + "id": "src_scoring_cluster_dispersion_rationale_206", + "label": "\uc804\uccb4 \uc77c\uc815\uc758 per-day \ubc00\uc9d1\ub3c4 + \ud328\ub110\ud2f0 \uc0b0\ucd9c. sigungu_codes_per_day: [day_idx][place_idx] \uad6c\uc870.\u2026", + "file_type": "rationale", + "source_file": "src/scoring/cluster_dispersion.py", + "source_location": "L206", + "_origin": "ast" + }, + { + "id": "src_scoring_congestion_engine", + "label": "congestion_engine.py", + "file_type": "code", + "source_file": "src/scoring/congestion_engine.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "src_scoring_congestion_engine_congestionlevel", + "label": "CongestionLevel", + "file_type": "code", + "source_file": "src/scoring/congestion_engine.py", + "source_location": "L27", + "_origin": "ast" + }, + { + "id": "str", + "label": "str", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast" + }, + { + "id": "enum", + "label": "Enum", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast" + }, + { + "id": "src_scoring_congestion_engine_congestionresult", + "label": "CongestionResult", + "file_type": "code", + "source_file": "src/scoring/congestion_engine.py", + "source_location": "L35", + "_origin": "ast" + }, + { + "id": "src_scoring_congestion_engine_normalize", + "label": "_normalize()", + "file_type": "code", + "source_file": "src/scoring/congestion_engine.py", + "source_location": "L45", + "_origin": "ast" + }, + { + "id": "src_scoring_congestion_engine_score_to_level", + "label": "_score_to_level()", + "file_type": "code", + "source_file": "src/scoring/congestion_engine.py", + "source_location": "L49", + "_origin": "ast" + }, + { + "id": "src_scoring_congestion_engine_congestionengine", + "label": "CongestionEngine", + "file_type": "code", + "source_file": "src/scoring/congestion_engine.py", + "source_location": "L59", + "_origin": "ast" + }, + { + "id": "src_scoring_congestion_engine_congestionengine_init", + "label": ".__init__()", + "file_type": "code", + "source_file": "src/scoring/congestion_engine.py", + "source_location": "L68", + "_origin": "ast" + }, + { + "id": "src_scoring_congestion_engine_py_path", + "label": "Path", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast" + }, + { + "id": "src_scoring_congestion_engine_congestionengine_df", + "label": "._df()", + "file_type": "code", + "source_file": "src/scoring/congestion_engine.py", + "source_location": "L79", + "_origin": "ast" + }, + { + "id": "src_scoring_congestion_engine_py_dataframe", + "label": "DataFrame", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast" + }, + { + "id": "src_scoring_congestion_engine_congestionengine_poi_names", + "label": "._poi_names()", + "file_type": "code", + "source_file": "src/scoring/congestion_engine.py", + "source_location": "L90", + "_origin": "ast" + }, + { + "id": "src_scoring_congestion_engine_congestionengine_global_avg_by_month", + "label": "._global_avg_by_month()", + "file_type": "code", + "source_file": "src/scoring/congestion_engine.py", + "source_location": "L94", + "_origin": "ast" + }, + { + "id": "src_scoring_congestion_engine_congestionengine_category_avg_by_month", + "label": "._category_avg_by_month()", + "file_type": "code", + "source_file": "src/scoring/congestion_engine.py", + "source_location": "L100", + "_origin": "ast" + }, + { + "id": "src_scoring_congestion_engine_congestionengine_lookup_exact", + "label": "._lookup_exact()", + "file_type": "code", + "source_file": "src/scoring/congestion_engine.py", + "source_location": "L113", + "_origin": "ast" + }, + { + "id": "series", + "label": "Series", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast" + }, + { + "id": "src_scoring_congestion_engine_congestionengine_lookup_partial", + "label": "._lookup_partial()", + "file_type": "code", + "source_file": "src/scoring/congestion_engine.py", + "source_location": "L119", + "_origin": "ast" + }, + { + "id": "src_scoring_congestion_engine_congestionengine_score", + "label": ".score()", + "file_type": "code", + "source_file": "src/scoring/congestion_engine.py", + "source_location": "L130", + "_origin": "ast" + }, + { + "id": "src_scoring_congestion_engine_congestionengine_is_crowded", + "label": ".is_crowded()", + "file_type": "code", + "source_file": "src/scoring/congestion_engine.py", + "source_location": "L209", + "_origin": "ast" + }, + { + "id": "src_scoring_congestion_engine_congestionengine_score_itinerary", + "label": ".score_itinerary()", + "file_type": "code", + "source_file": "src/scoring/congestion_engine.py", + "source_location": "L213", + "_origin": "ast" + }, + { + "id": "src_scoring_congestion_engine_rationale_1", + "label": "\ud63c\uc7a1\ub3c4 \ud310\uc815 \uc5d4\uc9c4 \u2014 \uacb0\uc815\ub860\uc801 \uaddc\uce59 \uae30\ubc18 (LLM \uc758\uc874 \uc5c6\uc74c). \ub370\uc774\ud130 \uc18c\uc2a4 \uc6b0\uc120\uc21c\uc704: 0. \uc11c\uc6b8 \ub3c4\uc2dc\ub370\uc774\ud130 API (\uc2e4\uc2dc\uac04) \u2014\u2026", + "file_type": "rationale", + "source_file": "src/scoring/congestion_engine.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "src_scoring_congestion_engine_rationale_60", + "label": "POI \u00d7 month \u2192 congestion_score \ud310\uc815\uae30. Args: csv_path: congestion_stats.csv \uacbd\ub85c\u2026", + "file_type": "rationale", + "source_file": "src/scoring/congestion_engine.py", + "source_location": "L60", + "_origin": "ast" + }, + { + "id": "src_scoring_congestion_engine_rationale_95", + "label": "month \u2192 (avg_visitors, congestion_score) \uc804\uccb4 \ud3c9\uade0.", + "file_type": "rationale", + "source_file": "src/scoring/congestion_engine.py", + "source_location": "L95", + "_origin": "ast" + }, + { + "id": "src_scoring_congestion_engine_rationale_101", + "label": "prefix \u2192 month \u2192 (avg_visitors, congestion_score).", + "file_type": "rationale", + "source_file": "src/scoring/congestion_engine.py", + "source_location": "L101", + "_origin": "ast" + }, + { + "id": "src_scoring_congestion_engine_rationale_131", + "label": "POI\uc640 \ubc29\ubb38 \uc6d4\ub85c \ud63c\uc7a1\ub3c4\ub97c \ud310\uc815\ud55c\ub2e4. \uc11c\uc6b8 POI\uc5d0 SeoulCityDataClient\uac00 \uc8fc\uc785\ub41c \uacbd\uc6b0 \uc2e4\uc2dc\uac04 \ub370\uc774\ud130\ub97c \uc6b0\uc120 \uc0ac\uc6a9\ud55c\ub2e4.\u2026", + "file_type": "rationale", + "source_file": "src/scoring/congestion_engine.py", + "source_location": "L131", + "_origin": "ast" + }, + { + "id": "src_scoring_congestion_engine_rationale_210", + "label": "congestion_score >= threshold \uc774\uba74 True.", + "file_type": "rationale", + "source_file": "src/scoring/congestion_engine.py", + "source_location": "L210", + "_origin": "ast" + }, + { + "id": "src_scoring_congestion_engine_rationale_216", + "label": "\uc5ec\ud589 \uc77c\uc815\uc758 \ubaa8\ub4e0 POI \ud63c\uc7a1\ub3c4\ub97c \uc77c\uad04 \ubc18\ud658\ud55c\ub2e4.", + "file_type": "rationale", + "source_file": "src/scoring/congestion_engine.py", + "source_location": "L216", + "_origin": "ast" + }, + { + "id": "src_scoring_reward_engine", + "label": "reward_engine.py", + "file_type": "code", + "source_file": "src/scoring/reward_engine.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "src_scoring_reward_engine_generate_rewards", + "label": "generate_rewards()", + "file_type": "code", + "source_file": "src/scoring/reward_engine.py", + "source_location": "L24", + "_origin": "ast" + }, + { + "id": "src_scoring_reward_engine_rationale_1", + "label": "\uae0d\uc815 \uac15\ud654 \uba54\uc2dc\uc9c0 \uc0dd\uc131 \uc5d4\uc9c4 (Positive Reinforcement). validate() \ud30c\uc774\ud504\ub77c\uc778\uc5d0\uc11c \uc810\uc218\u00b7\ud1b5\uacc4\ub97c \ubc1b\uc544 \uce6d\ucc2c \uba54\uc2dc\uc9c0\u2026", + "file_type": "rationale", + "source_file": "src/scoring/reward_engine.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "src_scoring_reward_engine_rationale_31", + "label": "\uc810\uc218\uc640 \ud1b5\uacc4 \uae30\ubc18\uc73c\ub85c \uae0d\uc815 \uac15\ud654 \uba54\uc2dc\uc9c0 \uc0dd\uc131. Returns: \uae0d\uc815 \uac15\ud654 \uba54\uc2dc\uc9c0 \ub9ac\uc2a4\ud2b8. Hard Fail \uc874\uc7ac \uc2dc \ube48 \ub9ac\uc2a4\ud2b8.", + "file_type": "rationale", + "source_file": "src/scoring/reward_engine.py", + "source_location": "L31", + "_origin": "ast" + }, + { + "id": "src_scoring_theme_alignment", + "label": "theme_alignment.py", + "file_type": "code", + "source_file": "src/scoring/theme_alignment.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "src_scoring_theme_alignment_poiwithcategory", + "label": "POIWithCategory", + "file_type": "code", + "source_file": "src/scoring/theme_alignment.py", + "source_location": "L68", + "_origin": "ast" + }, + { + "id": "src_scoring_theme_alignment_themejudgment", + "label": "ThemeJudgment", + "file_type": "code", + "source_file": "src/scoring/theme_alignment.py", + "source_location": "L77", + "_origin": "ast" + }, + { + "id": "src_scoring_theme_alignment_themealignmentreport", + "label": "ThemeAlignmentReport", + "file_type": "code", + "source_file": "src/scoring/theme_alignment.py", + "source_location": "L86", + "_origin": "ast" + }, + { + "id": "src_scoring_theme_alignment_cache_key", + "label": "_cache_key()", + "file_type": "code", + "source_file": "src/scoring/theme_alignment.py", + "source_location": "L96", + "_origin": "ast" + }, + { + "id": "src_scoring_theme_alignment_build_user_prompt", + "label": "_build_user_prompt()", + "file_type": "code", + "source_file": "src/scoring/theme_alignment.py", + "source_location": "L107", + "_origin": "ast" + }, + { + "id": "src_scoring_theme_alignment_classify_score", + "label": "_classify_score()", + "file_type": "code", + "source_file": "src/scoring/theme_alignment.py", + "source_location": "L132", + "_origin": "ast" + }, + { + "id": "src_scoring_theme_alignment_parse_llm_response", + "label": "_parse_llm_response()", + "file_type": "code", + "source_file": "src/scoring/theme_alignment.py", + "source_location": "L143", + "_origin": "ast" + }, + { + "id": "src_scoring_theme_alignment_themealignmentjudge", + "label": "ThemeAlignmentJudge", + "file_type": "code", + "source_file": "src/scoring/theme_alignment.py", + "source_location": "L163", + "_origin": "ast" + }, + { + "id": "src_scoring_theme_alignment_themealignmentjudge_init", + "label": ".__init__()", + "file_type": "code", + "source_file": "src/scoring/theme_alignment.py", + "source_location": "L171", + "_origin": "ast" + }, + { + "id": "src_scoring_theme_alignment_py_any", + "label": "Any", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast" + }, + { + "id": "src_scoring_theme_alignment_themealignmentjudge_is_available", + "label": ".is_available()", + "file_type": "code", + "source_file": "src/scoring/theme_alignment.py", + "source_location": "L187", + "_origin": "ast" + }, + { + "id": "src_scoring_theme_alignment_themealignmentjudge_evaluate", + "label": ".evaluate()", + "file_type": "code", + "source_file": "src/scoring/theme_alignment.py", + "source_location": "L191", + "_origin": "ast" + }, + { + "id": "src_scoring_theme_alignment_themealignmentjudge_call_llm", + "label": "._call_llm()", + "file_type": "code", + "source_file": "src/scoring/theme_alignment.py", + "source_location": "L261", + "_origin": "ast" + }, + { + "id": "src_scoring_theme_alignment_rationale_1", + "label": "\ud14c\ub9c8 \uc77c\uce58\uc131 LLM \ud310\uc815 (\ubaa8\ub4c8 \u2466) \u2014 Anthropic Claude API \uae30\ubc18. \uc694\uad6c\uc0ac\ud56d: \uc0ac\uc6a9\uc790\uac00 \uc120\ud0dd\ud55c \ud14c\ub9c8(\uc608: \uc561\ud2f0\ube44\ud2f0)\uc640 \uc77c\uc815\u2026", + "file_type": "rationale", + "source_file": "src/scoring/theme_alignment.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "src_scoring_theme_alignment_rationale_69", + "label": "LLM\uc5d0\uac8c \uc804\ub2ec\ud560 POI \uc815\ubcf4 (\uce74\ud14c\uace0\ub9ac \uba85 \ud3ec\ud568).", + "file_type": "rationale", + "source_file": "src/scoring/theme_alignment.py", + "source_location": "L69", + "_origin": "ast" + }, + { + "id": "src_scoring_theme_alignment_rationale_97", + "label": "\uce90\uc2dc \ud0a4: \ud14c\ub9c8 + \uc815\ub82c\ub41c \uc7a5\uc18c\uba85 \ud574\uc2dc.", + "file_type": "rationale", + "source_file": "src/scoring/theme_alignment.py", + "source_location": "L97", + "_origin": "ast" + }, + { + "id": "src_scoring_theme_alignment_rationale_111", + "label": "LLM\uc5d0\uac8c \uc804\ub2ec\ud560 user \uba54\uc2dc\uc9c0 \uad6c\uc131.", + "file_type": "rationale", + "source_file": "src/scoring/theme_alignment.py", + "source_location": "L111", + "_origin": "ast" + }, + { + "id": "src_scoring_theme_alignment_rationale_133", + "label": "\uc77c\uce58\ub3c4 \uc810\uc218 \u2192 (\ud328\ub110\ud2f0, risk_label).", + "file_type": "rationale", + "source_file": "src/scoring/theme_alignment.py", + "source_location": "L133", + "_origin": "ast" + }, + { + "id": "src_scoring_theme_alignment_rationale_144", + "label": "Claude \uc751\ub2f5 \ud14d\uc2a4\ud2b8\uc5d0\uc11c JSON \ucd94\ucd9c.", + "file_type": "rationale", + "source_file": "src/scoring/theme_alignment.py", + "source_location": "L144", + "_origin": "ast" + }, + { + "id": "src_scoring_theme_alignment_rationale_164", + "label": "LLM \uae30\ubc18 \ud14c\ub9c8 \uc77c\uce58\uc131 \ud310\uc815\uae30. \uc0ac\uc6a9 \uc608: judge = ThemeAlignmentJudge() # ANTHROPIC_API_KEY \uc790\ub3d9\u2026", + "file_type": "rationale", + "source_file": "src/scoring/theme_alignment.py", + "source_location": "L164", + "_origin": "ast" + }, + { + "id": "src_scoring_theme_alignment_rationale_188", + "label": "LLM \ud638\ucd9c \uac00\ub2a5 \uc5ec\ubd80 (SDK + \ud0a4 + \ud074\ub77c\uc774\uc5b8\ud2b8 \ubaa8\ub450 \uc900\ube44\ub41c \uacbd\uc6b0 True).", + "file_type": "rationale", + "source_file": "src/scoring/theme_alignment.py", + "source_location": "L188", + "_origin": "ast" + }, + { + "id": "src_scoring_travel_ratio", + "label": "travel_ratio.py", + "file_type": "code", + "source_file": "src/scoring/travel_ratio.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "src_scoring_travel_ratio_dayratiometric", + "label": "DayRatioMetric", + "file_type": "code", + "source_file": "src/scoring/travel_ratio.py", + "source_location": "L28", + "_origin": "ast" + }, + { + "id": "src_scoring_travel_ratio_travelratioreport", + "label": "TravelRatioReport", + "file_type": "code", + "source_file": "src/scoring/travel_ratio.py", + "source_location": "L37", + "_origin": "ast" + }, + { + "id": "src_scoring_travel_ratio_compute_day_metric", + "label": "_compute_day_metric()", + "file_type": "code", + "source_file": "src/scoring/travel_ratio.py", + "source_location": "L45", + "_origin": "ast" + }, + { + "id": "src_scoring_travel_ratio_classify_ratio", + "label": "_classify_ratio()", + "file_type": "code", + "source_file": "src/scoring/travel_ratio.py", + "source_location": "L70", + "_origin": "ast" + }, + { + "id": "src_scoring_travel_ratio_evaluate_travel_ratio", + "label": "evaluate_travel_ratio()", + "file_type": "code", + "source_file": "src/scoring/travel_ratio.py", + "source_location": "L81", + "_origin": "ast" + }, + { + "id": "src_scoring_travel_ratio_rationale_1", + "label": "\uc774\ub3d9 vs \uad00\uad11 \uc2dc\uac04 \ube44\uc728 \ud328\ub110\ud2f0 (\ubaa8\ub4c8 \u2464). \uacf5\uc2dd: travel_ratio = travel_sec / (travel_sec +\u2026", + "file_type": "rationale", + "source_file": "src/scoring/travel_ratio.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "src_scoring_travel_ratio_rationale_50", + "label": "\ud558\ub8e8 \uc77c\uc815\uc758 travel_sec, dwell_sec, ratio \uacc4\uc0b0.", + "file_type": "rationale", + "source_file": "src/scoring/travel_ratio.py", + "source_location": "L50", + "_origin": "ast" + }, + { + "id": "src_scoring_travel_ratio_rationale_71", + "label": "\ube44\uc728 \u2192 (\ud328\ub110\ud2f0, risk_label) \ubc18\ud658.", + "file_type": "rationale", + "source_file": "src/scoring/travel_ratio.py", + "source_location": "L71", + "_origin": "ast" + }, + { + "id": "src_scoring_travel_ratio_rationale_85", + "label": "\uc804\uccb4 \uc77c\uc815\uc758 \uc77c\uc790\ubcc4 travel_ratio + \ud328\ub110\ud2f0 \uc0b0\ucd9c.", + "file_type": "rationale", + "source_file": "src/scoring/travel_ratio.py", + "source_location": "L85", + "_origin": "ast" + }, + { + "id": "src_utils_init", + "label": "utils/__init__.py", + "file_type": "code", + "source_file": "src/utils/__init__.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "src_utils_geo", + "label": "geo.py", + "file_type": "code", + "source_file": "src/utils/geo.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "src_utils_geo_haversine_km", + "label": "haversine_km()", + "file_type": "code", + "source_file": "src/utils/geo.py", + "source_location": "L10", + "_origin": "ast" + }, + { + "id": "src_utils_geo_build_dist_cache", + "label": "build_dist_cache()", + "file_type": "code", + "source_file": "src/utils/geo.py", + "source_location": "L20", + "_origin": "ast" + }, + { + "id": "src_utils_geo_nn_heuristic_km", + "label": "nn_heuristic_km()", + "file_type": "code", + "source_file": "src/utils/geo.py", + "source_location": "L36", + "_origin": "ast" + }, + { + "id": "src_utils_geo_get_travel_min", + "label": "get_travel_min()", + "file_type": "code", + "source_file": "src/utils/geo.py", + "source_location": "L72", + "_origin": "ast" + }, + { + "id": "src_utils_geo_rationale_1", + "label": "\uacf5\uc720 \uc9c0\ub9ac \uacc4\uc0b0 \uc720\ud2f8\ub9ac\ud2f0 \u2014 Haversine, NN \ud734\ub9ac\uc2a4\ud2f1, \uc774\ub3d9\uc2dc\uac04 \uc870\ud68c.", + "file_type": "rationale", + "source_file": "src/utils/geo.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "src_utils_geo_rationale_11", + "label": "\ub450 \uc88c\ud45c \uc0ac\uc774\uc758 Haversine \uc9c1\uc120 \uac70\ub9ac(km).", + "file_type": "rationale", + "source_file": "src/utils/geo.py", + "source_location": "L11", + "_origin": "ast" + }, + { + "id": "src_utils_geo_rationale_21", + "label": "POI \ub9ac\uc2a4\ud2b8\uc758 \ubaa8\ub4e0 (i, j) \uc30d Haversine \uac70\ub9ac(km)\ub97c \ud55c \ubc88\uc5d0 \uacc4\uc0b0\ud574 \ubc18\ud658. \uc774 \uce90\uc2dc\ub97c nn_heuristic_km /\u2026", + "file_type": "rationale", + "source_file": "src/utils/geo.py", + "source_location": "L21", + "_origin": "ast" + }, + { + "id": "src_utils_geo_rationale_40", + "label": "\ucd5c\uadfc\uc811 \uc774\uc6c3 \ud734\ub9ac\uc2a4\ud2f1\uc73c\ub85c \ucd94\uc815\ud55c \ucd5c\uc18c \uc21c\ud68c \uac70\ub9ac(km). dist_cache \ub97c \ub118\uae30\uba74 Haversine \uc7ac\uacc4\uc0b0 \uc5c6\uc774 \uc870\ud68c\ud55c\ub2e4.", + "file_type": "rationale", + "source_file": "src/utils/geo.py", + "source_location": "L40", + "_origin": "ast" + }, + { + "id": "src_utils_geo_rationale_80", + "label": "matrix[i][j]['travel_min'] \uc870\ud68c, \uc5c6\uc73c\uba74 Haversine \ud3f4\ubc31(\ubd84). dist_cache \ub97c \ub118\uae30\uba74 \ud3f4\ubc31 \uc2dc \uc7ac\uacc4\uc0b0\u2026", + "file_type": "rationale", + "source_file": "src/utils/geo.py", + "source_location": "L80", + "_origin": "ast" + }, + { + "id": "src_validation_init", + "label": "src/validation/__init__.py", + "file_type": "code", + "source_file": "src/validation/__init__.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "src_validation_alternatives", + "label": "alternatives.py", + "file_type": "code", + "source_file": "src/validation/alternatives.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "src_validation_alternatives_haversine_km", + "label": "_haversine_km()", + "file_type": "code", + "source_file": "src/validation/alternatives.py", + "source_location": "L32", + "_origin": "ast" + }, + { + "id": "src_validation_alternatives_alternativesfinder", + "label": "AlternativesFinder", + "file_type": "code", + "source_file": "src/validation/alternatives.py", + "source_location": "L40", + "_origin": "ast" + }, + { + "id": "src_validation_alternatives_alternativesfinder_init", + "label": ".__init__()", + "file_type": "code", + "source_file": "src/validation/alternatives.py", + "source_location": "L49", + "_origin": "ast" + }, + { + "id": "src_validation_alternatives_alternativesfinder_find_alternatives", + "label": ".find_alternatives()", + "file_type": "code", + "source_file": "src/validation/alternatives.py", + "source_location": "L59", + "_origin": "ast" + }, + { + "id": "src_validation_alternatives_alternativesfinder_build_alternatives_map", + "label": ".build_alternatives_map()", + "file_type": "code", + "source_file": "src/validation/alternatives.py", + "source_location": "L92", + "_origin": "ast" + }, + { + "id": "src_validation_alternatives_rationale_1", + "label": "Hard Fail \ubc1c\uc0dd \uc7a5\uc18c\uc5d0 \ub300\ud55c \ub300\uccb4 \ud6c4\ubcf4 \ud0d0\uc0c9\uae30 (Repair \ubcf4\uc870 \ub3c4\uad6c). \uc774 \ubaa8\ub4c8\uc740 '\uac80\uc99d'\uc774 \uc544\ub2cc '\uc218\ub9ac \uc81c\uc548'\uc758 \ubcf4\uc870 \ub3c4\uad6c\uc774\ub2e4.\u2026", + "file_type": "rationale", + "source_file": "src/validation/alternatives.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "src_validation_alternatives_rationale_41", + "label": "Hard Fail POI\ub97c \ub300\uccb4\ud560 \ud6c4\ubcf4 \ucd94\ucc9c\uae30. Args: poi_pool: \ud0d0\uc0c9 \ub300\uc0c1 \uc804\uccb4 POI \ud480 (TourAPI \ub4f1 \uc678\ubd80\uc5d0\uc11c \uc8fc\uc785).\u2026", + "file_type": "rationale", + "source_file": "src/validation/alternatives.py", + "source_location": "L41", + "_origin": "ast" + }, + { + "id": "src_validation_alternatives_rationale_64", + "label": "failed_poi\uc640 \uac19\uc740 \uce74\ud14c\uace0\ub9ac \uc911 \uac00\uc7a5 \uac00\uae4c\uc6b4 POI\ub97c \ubc18\ud658. \uac19\uc740 \uce74\ud14c\uace0\ub9ac\uac00 \uc5c6\uc73c\uba74 \ubc18\uacbd \ub0b4 \ubaa8\ub4e0 POI\ub97c \uac70\ub9ac \uc21c\uc73c\ub85c \ubc18\ud658.", + "file_type": "rationale", + "source_file": "src/validation/alternatives.py", + "source_location": "L64", + "_origin": "ast" + }, + { + "id": "src_validation_alternatives_rationale_98", + "label": "Hard Fail \ubaa9\ub85d \uae30\ubc18\uc73c\ub85c POI \uc774\ub984 \u2192 \ub300\uccb4 \ud6c4\ubcf4 \ub515\uc154\ub108\ub9ac \ubc18\ud658. Minimal Interference \uc6d0\uce59(\uc7ac\ubc30\uce58 \u2192 \uc2dc\uac04\uc870\uc815 \u2192\u2026", + "file_type": "rationale", + "source_file": "src/validation/alternatives.py", + "source_location": "L98", + "_origin": "ast" + }, + { + "id": "src_validation_hard_fail", + "label": "hard_fail.py", + "file_type": "code", + "source_file": "src/validation/hard_fail.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "src_validation_hard_fail_hardfaildetector", + "label": "HardFailDetector", + "file_type": "code", + "source_file": "src/validation/hard_fail.py", + "source_location": "L16", + "_origin": "ast" + }, + { + "id": "src_validation_hard_fail_hardfaildetector_detect", + "label": ".detect()", + "file_type": "code", + "source_file": "src/validation/hard_fail.py", + "source_location": "L24", + "_origin": "ast" + }, + { + "id": "src_validation_hard_fail_hardfaildetector_check_operating_hours", + "label": "._check_operating_hours()", + "file_type": "code", + "source_file": "src/validation/hard_fail.py", + "source_location": "L48", + "_origin": "ast" + }, + { + "id": "src_validation_hard_fail_hardfaildetector_check_travel_impossible", + "label": "._check_travel_impossible()", + "file_type": "code", + "source_file": "src/validation/hard_fail.py", + "source_location": "L110", + "_origin": "ast" + }, + { + "id": "src_validation_hard_fail_hardfaildetector_check_schedule_infeasible", + "label": "._check_schedule_infeasible()", + "file_type": "code", + "source_file": "src/validation/hard_fail.py", + "source_location": "L157", + "_origin": "ast" + }, + { + "id": "src_validation_hard_fail_hardfaildetector_time_to_min", + "label": "._time_to_min()", + "file_type": "code", + "source_file": "src/validation/hard_fail.py", + "source_location": "L188", + "_origin": "ast" + }, + { + "id": "src_validation_hard_fail_hardfaildetector_min_to_time", + "label": "._min_to_time()", + "file_type": "code", + "source_file": "src/validation/hard_fail.py", + "source_location": "L193", + "_origin": "ast" + }, + { + "id": "src_validation_hard_fail_rationale_1", + "label": "Hard Fail \ud0d0\uc9c0\uae30 (\uc6b4\uc601\uc2dc\uac04 \ucda9\ub3cc\u00b7\uc774\ub3d9 \ubd88\uac00\u00b7\uc77c\uc815 \uc2dc\uac04 \ucd08\uacfc).", + "file_type": "rationale", + "source_file": "src/validation/hard_fail.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "src_validation_hard_fail_rationale_17", + "label": "\uc5ec\ud589 \uc77c\uc815\uc758 Hard Fail \uc870\uac74\uc744 \ud0d0\uc9c0\ud55c\ub2e4. External I/O \uc5c6\uc74c. matrix: dict[int, dict[int, dict]]\u2026", + "file_type": "rationale", + "source_file": "src/validation/hard_fail.py", + "source_location": "L17", + "_origin": "ast" + }, + { + "id": "src_validation_hard_fail_rationale_33", + "label": "Hard Fail \ubaa9\ub85d \ubc18\ud658. \uc5c6\uc73c\uba74 \ube48 \ub9ac\uc2a4\ud2b8.", + "file_type": "rationale", + "source_file": "src/validation/hard_fail.py", + "source_location": "L33", + "_origin": "ast" + }, + { + "id": "src_validation_hard_fail_rationale_56", + "label": "\uac01 POI \ub3c4\ucc29 \uc608\uc0c1 \uc2dc\uac04\uc774 \uc6b4\uc601\uc2dc\uac04 \ubc16\uc774\uba74 Hard Fail.", + "file_type": "rationale", + "source_file": "src/validation/hard_fail.py", + "source_location": "L56", + "_origin": "ast" + }, + { + "id": "src_validation_hard_fail_rationale_118", + "label": "\uc774\ub3d9\uc2dc\uac04\uc774 \uc774\uc6a9 \uac00\ub2a5\ud55c \uc2dc\uac04 \ucc3d\uc744 \ucd08\uacfc\ud558\uba74 Hard Fail.", + "file_type": "rationale", + "source_file": "src/validation/hard_fail.py", + "source_location": "L118", + "_origin": "ast" + }, + { + "id": "src_validation_hard_fail_rationale_164", + "label": "\uc2e4\uc81c POI \ub4e4\uc758 \ucd1d \uccb4\ub958+\uc774\ub3d9 \uc2dc\uac04\uc774 24\uc2dc\uac04 \ucd08\uacfc \uc2dc Hard Fail.", + "file_type": "rationale", + "source_file": "src/validation/hard_fail.py", + "source_location": "L164", + "_origin": "ast" + }, + { + "id": "src_validation_kakao_matrix", + "label": "kakao_matrix.py", + "file_type": "code", + "source_file": "src/validation/kakao_matrix.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "src_validation_kakao_matrix_kakaomobilitymatrix", + "label": "KakaoMobilityMatrix", + "file_type": "code", + "source_file": "src/validation/kakao_matrix.py", + "source_location": "L47", + "_origin": "ast" + }, + { + "id": "src_validation_kakao_matrix_kakaomobilitymatrix_init", + "label": ".__init__()", + "file_type": "code", + "source_file": "src/validation/kakao_matrix.py", + "source_location": "L58", + "_origin": "ast" + }, + { + "id": "src_validation_kakao_matrix_py_path", + "label": "Path", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast" + }, + { + "id": "src_validation_kakao_matrix_kakaomobilitymatrix_from_env", + "label": ".from_env()", + "file_type": "code", + "source_file": "src/validation/kakao_matrix.py", + "source_location": "L89", + "_origin": "ast" + }, + { + "id": "src_validation_kakao_matrix_py_any", + "label": "Any", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast" + }, + { + "id": "src_validation_kakao_matrix_kakaomobilitymatrix_load_dotenv", + "label": "._load_dotenv()", + "file_type": "code", + "source_file": "src/validation/kakao_matrix.py", + "source_location": "L111", + "_origin": "ast" + }, + { + "id": "src_validation_kakao_matrix_kakaomobilitymatrix_get_travel_time", + "label": ".get_travel_time()", + "file_type": "code", + "source_file": "src/validation/kakao_matrix.py", + "source_location": "L121", + "_origin": "ast" + }, + { + "id": "src_validation_kakao_matrix_kakaomobilitymatrix_aprefetch_matrix", + "label": ".aprefetch_matrix()", + "file_type": "code", + "source_file": "src/validation/kakao_matrix.py", + "source_location": "L139", + "_origin": "ast" + }, + { + "id": "src_validation_kakao_matrix_kakaomobilitymatrix_acall_kakao", + "label": "._acall_kakao()", + "file_type": "code", + "source_file": "src/validation/kakao_matrix.py", + "source_location": "L177", + "_origin": "ast" + }, + { + "id": "src_validation_kakao_matrix_kakaomobilitymatrix_call_kakao_sync", + "label": "._call_kakao_sync()", + "file_type": "code", + "source_file": "src/validation/kakao_matrix.py", + "source_location": "L212", + "_origin": "ast" + }, + { + "id": "src_validation_kakao_matrix_kakaomobilitymatrix_parse_duration", + "label": "._parse_duration()", + "file_type": "code", + "source_file": "src/validation/kakao_matrix.py", + "source_location": "L265", + "_origin": "ast" + }, + { + "id": "src_validation_kakao_matrix_kakaomobilitymatrix_make_key", + "label": "._make_key()", + "file_type": "code", + "source_file": "src/validation/kakao_matrix.py", + "source_location": "L278", + "_origin": "ast" + }, + { + "id": "src_validation_kakao_matrix_kakaomobilitymatrix_load_cache", + "label": "._load_cache()", + "file_type": "code", + "source_file": "src/validation/kakao_matrix.py", + "source_location": "L284", + "_origin": "ast" + }, + { + "id": "src_validation_kakao_matrix_kakaomobilitymatrix_maybe_save_cache", + "label": "._maybe_save_cache()", + "file_type": "code", + "source_file": "src/validation/kakao_matrix.py", + "source_location": "L294", + "_origin": "ast" + }, + { + "id": "src_validation_kakao_matrix_kakaomobilitymatrix_save_cache", + "label": ".save_cache()", + "file_type": "code", + "source_file": "src/validation/kakao_matrix.py", + "source_location": "L299", + "_origin": "ast" + }, + { + "id": "src_validation_kakao_matrix_kakaomobilitymatrix_stats", + "label": ".stats()", + "file_type": "code", + "source_file": "src/validation/kakao_matrix.py", + "source_location": "L310", + "_origin": "ast" + }, + { + "id": "src_validation_kakao_matrix_kakaomobilitymatrix_cache_size", + "label": ".cache_size()", + "file_type": "code", + "source_file": "src/validation/kakao_matrix.py", + "source_location": "L314", + "_origin": "ast" + }, + { + "id": "src_validation_kakao_matrix_kakaomobilitymatrix_is_quota_exhausted", + "label": ".is_quota_exhausted()", + "file_type": "code", + "source_file": "src/validation/kakao_matrix.py", + "source_location": "L318", + "_origin": "ast" + }, + { + "id": "src_validation_kakao_matrix_rationale_1", + "label": "\uce74\uce74\uc624 \ubaa8\ube4c\ub9ac\ud2f0 \uae38\ucc3e\uae30 API \u2192 TimeMatrix \uc5b4\ub311\ud130 (httpx \uae30\ubc18). VRPTW \uc5d4\uc9c4\uc758 TimeMatrix \uc778\ud130\ud398\uc774\uc2a4\ub97c \uad6c\ud604\ud574\u2026", + "file_type": "rationale", + "source_file": "src/validation/kakao_matrix.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "src_validation_kakao_matrix_rationale_48", + "label": "\uce74\uce74\uc624 \ubaa8\ube4c\ub9ac\ud2f0 \uae38\ucc3e\uae30 API \uae30\ubc18 TimeMatrix. \uce90\uc2dc \ud0a4: 'lng1,lat1|lng2,lat2' (\uc18c\uc218\uc810 4\uc790\ub9ac = \uc57d 11m\u2026", + "file_type": "rationale", + "source_file": "src/validation/kakao_matrix.py", + "source_location": "L48", + "_origin": "ast" + }, + { + "id": "src_validation_kakao_matrix_rationale_95", + "label": "`.env`\uc5d0\uc11c KAKAO_MOBILITY_KEY (\uc5c6\uc73c\uba74 KAKAO_REST_API_KEY) \ub85c\ub4dc.", + "file_type": "rationale", + "source_file": "src/validation/kakao_matrix.py", + "source_location": "L95", + "_origin": "ast" + }, + { + "id": "src_validation_kakao_matrix_rationale_122", + "label": "\uce90\uc2dc \uc870\ud68c + Haversine \ud3f4\ubc31. API \uc9c1\uc811 \ud638\ucd9c \uc5c6\uc74c.", + "file_type": "rationale", + "source_file": "src/validation/kakao_matrix.py", + "source_location": "L122", + "_origin": "ast" + }, + { + "id": "src_validation_kakao_matrix_rationale_144", + "label": "\ubaa8\ub4e0 POI \uc30d\uc758 \uc774\ub3d9\uc2dc\uac04\uc744 \ube44\ub3d9\uae30\ub85c \uc0ac\uc804 \ub85c\ub4dc\ud55c\ub2e4. VRPTWEngine.validate() \ud638\ucd9c \uc804\uc5d0 await \ud574\ub450\uba74\u2026", + "file_type": "rationale", + "source_file": "src/validation/kakao_matrix.py", + "source_location": "L144", + "_origin": "ast" + }, + { + "id": "src_validation_kakao_matrix_rationale_180", + "label": "\uce74\uce74\uc624 \ubaa8\ube4c\ub9ac\ud2f0 \ube44\ub3d9\uae30 \ud638\ucd9c (httpx.AsyncClient).", + "file_type": "rationale", + "source_file": "src/validation/kakao_matrix.py", + "source_location": "L180", + "_origin": "ast" + }, + { + "id": "src_validation_kakao_matrix_rationale_215", + "label": "\ub3d9\uae30 API \ud638\ucd9c + \uce90\uc2dc \uc800\uc7a5 + \ud1b5\uacc4 \uc5c5\ub370\uc774\ud2b8 (httpx.Client). \uce90\uc2dc\uc5d0 \uc774\ubbf8 \uc788\uc73c\uba74 API \ud638\ucd9c \uc5c6\uc774 \uce90\uc2dc \uac12 \ubc18\ud658.", + "file_type": "rationale", + "source_file": "src/validation/kakao_matrix.py", + "source_location": "L215", + "_origin": "ast" + }, + { + "id": "src_validation_scoring", + "label": "scoring.py", + "file_type": "code", + "source_file": "src/validation/scoring.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "src_validation_scoring_scorecalculator", + "label": "ScoreCalculator", + "file_type": "code", + "source_file": "src/validation/scoring.py", + "source_location": "L20", + "_origin": "ast" + }, + { + "id": "src_validation_scoring_scorecalculator_compute", + "label": ".compute()", + "file_type": "code", + "source_file": "src/validation/scoring.py", + "source_location": "L23", + "_origin": "ast" + }, + { + "id": "src_validation_scoring_scorecalculator_cosine_distance", + "label": "._cosine_distance()", + "file_type": "code", + "source_file": "src/validation/scoring.py", + "source_location": "L59", + "_origin": "ast" + }, + { + "id": "src_validation_scoring_scorecalculator_calc_efficiency", + "label": "._calc_efficiency()", + "file_type": "code", + "source_file": "src/validation/scoring.py", + "source_location": "L63", + "_origin": "ast" + }, + { + "id": "src_validation_scoring_scorecalculator_calc_feasibility", + "label": "._calc_feasibility()", + "file_type": "code", + "source_file": "src/validation/scoring.py", + "source_location": "L79", + "_origin": "ast" + }, + { + "id": "src_validation_scoring_scorecalculator_calc_purpose_fit", + "label": "._calc_purpose_fit()", + "file_type": "code", + "source_file": "src/validation/scoring.py", + "source_location": "L113", + "_origin": "ast" + }, + { + "id": "src_validation_scoring_scorecalculator_calc_flow", + "label": "._calc_flow()", + "file_type": "code", + "source_file": "src/validation/scoring.py", + "source_location": "L132", + "_origin": "ast" + }, + { + "id": "src_validation_scoring_scorecalculator_calc_area_intensity", + "label": "._calc_area_intensity()", + "file_type": "code", + "source_file": "src/validation/scoring.py", + "source_location": "L169", + "_origin": "ast" + }, + { + "id": "src_validation_scoring_rationale_21", + "label": "5\uac1c \uc9c0\ud45c \u2192 Final Score (0~100) \uacc4\uc0b0\uae30. External I/O \uc5c6\uc74c.", + "file_type": "rationale", + "source_file": "src/validation/scoring.py", + "source_location": "L21", + "_origin": "ast" + }, + { + "id": "src_validation_scoring_rationale_30", + "label": "5\uac1c \uc9c0\ud45c \uacc4\uc0b0 + Final Score (0~100) \ubc18\ud658. hard_fails \uc788\uc73c\uba74 Final Score \u2264 59. \ubc18\ud658:\u2026", + "file_type": "rationale", + "source_file": "src/validation/scoring.py", + "source_location": "L30", + "_origin": "ast" + }, + { + "id": "src_validation_scoring_rationale_60", + "label": "warning \ubaa8\ub4c8\uc758 \uacf5\uc720 \uad6c\ud604\uc5d0 \uc704\uc784.", + "file_type": "rationale", + "source_file": "src/validation/scoring.py", + "source_location": "L60", + "_origin": "ast" + }, + { + "id": "src_validation_scoring_rationale_68", + "label": "Efficiency = nn_heuristic_km / actual_total_km, clamped to [0, 1].", + "file_type": "rationale", + "source_file": "src/validation/scoring.py", + "source_location": "L68", + "_origin": "ast" + }, + { + "id": "src_validation_scoring_rationale_87", + "label": "Feasibility = hard\u00d70.5 + temporal\u00d70.3 + human\u00d70.2. temporal \uc784\uacc4\uac12\uc740 party_type\ubcc4\u2026", + "file_type": "rationale", + "source_file": "src/validation/scoring.py", + "source_location": "L87", + "_origin": "ast" + }, + { + "id": "src_validation_scoring_rationale_114", + "label": "1 - cosine_distance(intent_vector, activity_vector).", + "file_type": "rationale", + "source_file": "src/validation/scoring.py", + "source_location": "L114", + "_origin": "ast" + }, + { + "id": "src_validation_scoring_rationale_137", + "label": "1 - (backtracking\u00d70.65 + revisit_area\u00d70.35). switch_ratio \uc81c\uac70: \uce74\ud14c\uace0\ub9ac \ub2e4\uc591\uc131\uc740 \ud328\ub110\ud2f0\uac00\u2026", + "file_type": "rationale", + "source_file": "src/validation/scoring.py", + "source_location": "L137", + "_origin": "ast" + }, + { + "id": "src_validation_scoring_rationale_170", + "label": "1 - dominant_category_ratio. \ubd84\uc0b0\ub420\uc218\ub85d 1\uc5d0 \uac00\uae4c\uc6c0.", + "file_type": "rationale", + "source_file": "src/validation/scoring.py", + "source_location": "L170", + "_origin": "ast" + }, + { + "id": "src_validation_vrptw_engine", + "label": "vrptw_engine.py", + "file_type": "code", + "source_file": "src/validation/vrptw_engine.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "src_validation_vrptw_engine_timematrix", + "label": "TimeMatrix", + "file_type": "code", + "source_file": "src/validation/vrptw_engine.py", + "source_location": "L55", + "_origin": "ast" + }, + { + "id": "abc", + "label": "ABC", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast" + }, + { + "id": "src_validation_vrptw_engine_timematrix_get_travel_time", + "label": ".get_travel_time()", + "file_type": "code", + "source_file": "src/validation/vrptw_engine.py", + "source_location": "L59", + "_origin": "ast" + }, + { + "id": "src_validation_vrptw_engine_haversinematrix", + "label": "HaversineMatrix", + "file_type": "code", + "source_file": "src/validation/vrptw_engine.py", + "source_location": "L63", + "_origin": "ast" + }, + { + "id": "src_validation_vrptw_engine_haversinematrix_effective_speed", + "label": "._effective_speed()", + "file_type": "code", + "source_file": "src/validation/vrptw_engine.py", + "source_location": "L80", + "_origin": "ast" + }, + { + "id": "src_validation_vrptw_engine_haversinematrix_get_travel_time", + "label": ".get_travel_time()", + "file_type": "code", + "source_file": "src/validation/vrptw_engine.py", + "source_location": "L86", + "_origin": "ast" + }, + { + "id": "src_validation_vrptw_engine_cachedroutematrix", + "label": "CachedRouteMatrix", + "file_type": "code", + "source_file": "src/validation/vrptw_engine.py", + "source_location": "L91", + "_origin": "ast" + }, + { + "id": "src_validation_vrptw_engine_cachedroutematrix_init", + "label": ".__init__()", + "file_type": "code", + "source_file": "src/validation/vrptw_engine.py", + "source_location": "L98", + "_origin": "ast" + }, + { + "id": "src_validation_vrptw_engine_cachedroutematrix_from_file", + "label": ".from_file()", + "file_type": "code", + "source_file": "src/validation/vrptw_engine.py", + "source_location": "L112", + "_origin": "ast" + }, + { + "id": "src_validation_vrptw_engine_py_path", + "label": "Path", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast" + }, + { + "id": "src_validation_vrptw_engine_cachedroutematrix_get_travel_time", + "label": ".get_travel_time()", + "file_type": "code", + "source_file": "src/validation/vrptw_engine.py", + "source_location": "L117", + "_origin": "ast" + }, + { + "id": "src_validation_vrptw_engine_haversine_m", + "label": "_haversine_m()", + "file_type": "code", + "source_file": "src/validation/vrptw_engine.py", + "source_location": "L130", + "_origin": "ast" + }, + { + "id": "src_validation_vrptw_engine_simresult", + "label": "_SimResult", + "file_type": "code", + "source_file": "src/validation/vrptw_engine.py", + "source_location": "L144", + "_origin": "ast" + }, + { + "id": "src_validation_vrptw_engine_minutes_to_hhmm", + "label": "_minutes_to_hhmm()", + "file_type": "code", + "source_file": "src/validation/vrptw_engine.py", + "source_location": "L151", + "_origin": "ast" + }, + { + "id": "src_validation_vrptw_engine_simulate_day", + "label": "_simulate_day()", + "file_type": "code", + "source_file": "src/validation/vrptw_engine.py", + "source_location": "L156", + "_origin": "ast" + }, + { + "id": "src_validation_vrptw_engine_compute_day_total_minutes", + "label": "_compute_day_total_minutes()", + "file_type": "code", + "source_file": "src/validation/vrptw_engine.py", + "source_location": "L216", + "_origin": "ast" + }, + { + "id": "src_validation_vrptw_engine_solve_vrptw_ortools", + "label": "_solve_vrptw_ortools()", + "file_type": "code", + "source_file": "src/validation/vrptw_engine.py", + "source_location": "L244", + "_origin": "ast" + }, + { + "id": "src_validation_vrptw_engine_check_depot_constraints", + "label": "_check_depot_constraints()", + "file_type": "code", + "source_file": "src/validation/vrptw_engine.py", + "source_location": "L317", + "_origin": "ast" + }, + { + "id": "src_validation_vrptw_engine_vrptwengine", + "label": "VRPTWEngine", + "file_type": "code", + "source_file": "src/validation/vrptw_engine.py", + "source_location": "L378", + "_origin": "ast" + }, + { + "id": "src_validation_vrptw_engine_vrptwengine_init", + "label": ".__init__()", + "file_type": "code", + "source_file": "src/validation/vrptw_engine.py", + "source_location": "L385", + "_origin": "ast" + }, + { + "id": "src_validation_vrptw_engine_vrptwengine_validate", + "label": ".validate()", + "file_type": "code", + "source_file": "src/validation/vrptw_engine.py", + "source_location": "L396", + "_origin": "ast" + }, + { + "id": "src_validation_vrptw_engine_vrptwengine_compute_risk_score", + "label": "._compute_risk_score()", + "file_type": "code", + "source_file": "src/validation/vrptw_engine.py", + "source_location": "L494", + "_origin": "ast" + }, + { + "id": "src_validation_vrptw_engine_rationale_1", + "label": "VRPTW Validation Engine. Validates travel itineraries against mathematical\u2026", + "file_type": "rationale", + "source_file": "src/validation/vrptw_engine.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "src_validation_vrptw_engine_rationale_56", + "label": "Abstract travel-time provider. Implementations are interchangeable.", + "file_type": "rationale", + "source_file": "src/validation/vrptw_engine.py", + "source_location": "L56", + "_origin": "ast" + }, + { + "id": "src_validation_vrptw_engine_rationale_60", + "label": "Return travel time in seconds.", + "file_type": "rationale", + "source_file": "src/validation/vrptw_engine.py", + "source_location": "L60", + "_origin": "ast" + }, + { + "id": "src_validation_vrptw_engine_rationale_64", + "label": "Calibrated haversine fallback using distance-band multipliers. Kakao Mobility\u2026", + "file_type": "rationale", + "source_file": "src/validation/vrptw_engine.py", + "source_location": "L64", + "_origin": "ast" + }, + { + "id": "src_validation_vrptw_engine_rationale_92", + "label": "Uses Kakao Mobility cache (lng,lat|lng,lat \u2192 seconds). Falls back to Haversine.\u2026", + "file_type": "rationale", + "source_file": "src/validation/vrptw_engine.py", + "source_location": "L92", + "_origin": "ast" + }, + { + "id": "src_validation_vrptw_engine_rationale_145", + "label": "Simulation result for a single day.", + "file_type": "rationale", + "source_file": "src/validation/vrptw_engine.py", + "source_location": "L145", + "_origin": "ast" + }, + { + "id": "src_validation_vrptw_engine_rationale_161", + "label": "Simulate traversal in the given order. Returns travel time and issues.", + "file_type": "rationale", + "source_file": "src/validation/vrptw_engine.py", + "source_location": "L161", + "_origin": "ast" + }, + { + "id": "src_validation_vrptw_engine_rationale_221", + "label": "Total elapsed minutes from first departure to last arrival+stay.", + "file_type": "rationale", + "source_file": "src/validation/vrptw_engine.py", + "source_location": "L221", + "_origin": "ast" + }, + { + "id": "src_validation_vrptw_engine_rationale_249", + "label": "Return (optimal_order, total_travel_seconds) or None on failure.", + "file_type": "rationale", + "source_file": "src/validation/vrptw_engine.py", + "source_location": "L249", + "_origin": "ast" + }, + { + "id": "src_validation_vrptw_engine_rationale_320", + "label": "Enforce depot rules for 2\ubc153\uc77c+ (3+ days). 1\ubc152\uc77c is exempt.", + "file_type": "rationale", + "source_file": "src/validation/vrptw_engine.py", + "source_location": "L320", + "_origin": "ast" + }, + { + "id": "src_validation_vrptw_engine_rationale_379", + "label": "VRPTW-based travel itinerary validator. Accepts a TimeMatrix implementation;\u2026", + "file_type": "rationale", + "source_file": "src/validation/vrptw_engine.py", + "source_location": "L379", + "_origin": "ast" + }, + { + "id": "src_validation_warning", + "label": "warning.py", + "file_type": "code", + "source_file": "src/validation/warning.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "src_validation_warning_cosine_distance", + "label": "_cosine_distance()", + "file_type": "code", + "source_file": "src/validation/warning.py", + "source_location": "L28", + "_origin": "ast" + }, + { + "id": "src_validation_warning_warningdetector", + "label": "WarningDetector", + "file_type": "code", + "source_file": "src/validation/warning.py", + "source_location": "L39", + "_origin": "ast" + }, + { + "id": "src_validation_warning_warningdetector_detect", + "label": ".detect()", + "file_type": "code", + "source_file": "src/validation/warning.py", + "source_location": "L51", + "_origin": "ast" + }, + { + "id": "src_validation_warning_warningdetector_check_dense_schedule", + "label": "._check_dense_schedule()", + "file_type": "code", + "source_file": "src/validation/warning.py", + "source_location": "L73", + "_origin": "ast" + }, + { + "id": "src_validation_warning_warningdetector_check_inefficient_route", + "label": "._check_inefficient_route()", + "file_type": "code", + "source_file": "src/validation/warning.py", + "source_location": "L100", + "_origin": "ast" + }, + { + "id": "src_validation_warning_warningdetector_check_physical_strain", + "label": "._check_physical_strain()", + "file_type": "code", + "source_file": "src/validation/warning.py", + "source_location": "L124", + "_origin": "ast" + }, + { + "id": "src_validation_warning_warningdetector_check_purpose_mismatch", + "label": "._check_purpose_mismatch()", + "file_type": "code", + "source_file": "src/validation/warning.py", + "source_location": "L145", + "_origin": "ast" + }, + { + "id": "src_validation_warning_warningdetector_check_cumulative_fatigue", + "label": ".check_cumulative_fatigue()", + "file_type": "code", + "source_file": "src/validation/warning.py", + "source_location": "L176", + "_origin": "ast" + }, + { + "id": "src_validation_warning_warningdetector_check_area_revisit", + "label": "._check_area_revisit()", + "file_type": "code", + "source_file": "src/validation/warning.py", + "source_location": "L240", + "_origin": "ast" + }, + { + "id": "src_validation_warning_rationale_1", + "label": "Warning \ud0d0\uc9c0\uae30 (\ub3d9\uc120 \ube44\ud6a8\uc728\u00b7\uc77c\uc815 \uacfc\ubc00\u00b7\uccb4\ub825 \ubd80\ub2f4\u00b7\ubaa9\uc801 \ubd80\uc801\ud569\u00b7\uad6c\uc5ed \uc7ac\ubc29\ubb38).", + "file_type": "rationale", + "source_file": "src/validation/warning.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "src_validation_warning_rationale_40", + "label": "\uc5ec\ud589 \uc77c\uc815\uc758 Soft Warning \uc870\uac74\uc744 \ud0d0\uc9c0\ud55c\ub2e4. External I/O \uc5c6\uc74c. matrix: dict[int, dict[int,\u2026", + "file_type": "rationale", + "source_file": "src/validation/warning.py", + "source_location": "L40", + "_origin": "ast" + }, + { + "id": "src_validation_warning_rationale_58", + "label": "Warning \ubaa9\ub85d \ubc18\ud658. \uc5c6\uc73c\uba74 \ube48 \ub9ac\uc2a4\ud2b8.", + "file_type": "rationale", + "source_file": "src/validation/warning.py", + "source_location": "L58", + "_origin": "ast" + }, + { + "id": "src_validation_warning_rationale_182", + "label": "Multi-day \ub204\uc801 \ud53c\ub85c\ub3c4 \ubd84\uc11d \u2014 \ub2e8\uc77c detect() \ud638\ucd9c\ub85c\ub294 \ud3ec\ucc29\ud560 \uc218 \uc5c6\ub294 cross-day \ud328\ud134.", + "file_type": "rationale", + "source_file": "src/validation/warning.py", + "source_location": "L182", + "_origin": "ast" + }, + { + "id": "tests_init", + "label": "tests/__init__.py", + "file_type": "code", + "source_file": "tests/__init__.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "tests_conftest", + "label": "conftest.py", + "file_type": "code", + "source_file": "tests/conftest.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "tests_conftest_py_fixture", + "label": "fixture", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast" + }, + { + "id": "tests_conftest_clean_anthropic_api_key", + "label": "_clean_anthropic_api_key()", + "file_type": "code", + "source_file": "tests/conftest.py", + "source_location": "L11", + "_origin": "ast" + }, + { + "id": "tests_conftest_rationale_1", + "label": "\ud14c\uc2a4\ud2b8 \uc804\uc5ed fixture. src.api.main\uc740 import \uc2dc\uc810\uc5d0 .env\ub97c \uc77d\uc5b4 os.environ\uc5d0\u2026", + "file_type": "rationale", + "source_file": "tests/conftest.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "tests_test_alternatives", + "label": "test_alternatives.py", + "file_type": "code", + "source_file": "tests/test_alternatives.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "tests_test_alternatives_poi", + "label": "_poi()", + "file_type": "code", + "source_file": "tests/test_alternatives.py", + "source_location": "L10", + "_origin": "ast" + }, + { + "id": "tests_test_alternatives_hardfail", + "label": "_hardfail()", + "file_type": "code", + "source_file": "tests/test_alternatives.py", + "source_location": "L29", + "_origin": "ast" + }, + { + "id": "tests_test_alternatives_testfindalternatives", + "label": "TestFindAlternatives", + "file_type": "code", + "source_file": "tests/test_alternatives.py", + "source_location": "L39", + "_origin": "ast" + }, + { + "id": "tests_test_alternatives_testfindalternatives_test_returns_nearby_same_category", + "label": ".test_returns_nearby_same_category()", + "file_type": "code", + "source_file": "tests/test_alternatives.py", + "source_location": "L40", + "_origin": "ast" + }, + { + "id": "tests_test_alternatives_testfindalternatives_test_excludes_failed_poi_itself", + "label": ".test_excludes_failed_poi_itself()", + "file_type": "code", + "source_file": "tests/test_alternatives.py", + "source_location": "L50", + "_origin": "ast" + }, + { + "id": "tests_test_alternatives_testfindalternatives_test_respects_max_alternatives", + "label": ".test_respects_max_alternatives()", + "file_type": "code", + "source_file": "tests/test_alternatives.py", + "source_location": "L57", + "_origin": "ast" + }, + { + "id": "tests_test_alternatives_testfindalternatives_test_respects_search_radius", + "label": ".test_respects_search_radius()", + "file_type": "code", + "source_file": "tests/test_alternatives.py", + "source_location": "L64", + "_origin": "ast" + }, + { + "id": "tests_test_alternatives_testfindalternatives_test_distance_km_is_correct", + "label": ".test_distance_km_is_correct()", + "file_type": "code", + "source_file": "tests/test_alternatives.py", + "source_location": "L72", + "_origin": "ast" + }, + { + "id": "tests_test_alternatives_testfindalternatives_test_same_category_sorted_before_different", + "label": ".test_same_category_sorted_before_different()", + "file_type": "code", + "source_file": "tests/test_alternatives.py", + "source_location": "L80", + "_origin": "ast" + }, + { + "id": "tests_test_alternatives_testbuildalternativesmap", + "label": "TestBuildAlternativesMap", + "file_type": "code", + "source_file": "tests/test_alternatives.py", + "source_location": "L91", + "_origin": "ast" + }, + { + "id": "tests_test_alternatives_testbuildalternativesmap_test_maps_failed_poi_to_alternatives", + "label": ".test_maps_failed_poi_to_alternatives()", + "file_type": "code", + "source_file": "tests/test_alternatives.py", + "source_location": "L92", + "_origin": "ast" + }, + { + "id": "tests_test_alternatives_testbuildalternativesmap_test_default_no_substitution", + "label": ".test_default_no_substitution()", + "file_type": "code", + "source_file": "tests/test_alternatives.py", + "source_location": "L102", + "_origin": "ast" + }, + { + "id": "tests_test_alternatives_testbuildalternativesmap_test_skips_none_poi_name", + "label": ".test_skips_none_poi_name()", + "file_type": "code", + "source_file": "tests/test_alternatives.py", + "source_location": "L110", + "_origin": "ast" + }, + { + "id": "tests_test_alternatives_testbuildalternativesmap_test_no_duplicate_keys", + "label": ".test_no_duplicate_keys()", + "file_type": "code", + "source_file": "tests/test_alternatives.py", + "source_location": "L116", + "_origin": "ast" + }, + { + "id": "tests_test_alternatives_testbuildalternativesmap_test_excludes_plan_pois_from_alternatives", + "label": ".test_excludes_plan_pois_from_alternatives()", + "file_type": "code", + "source_file": "tests/test_alternatives.py", + "source_location": "L123", + "_origin": "ast" + }, + { + "id": "tests_test_alternatives_rationale_1", + "label": "AlternativesFinder \uc720\ub2db \ud14c\uc2a4\ud2b8.", + "file_type": "rationale", + "source_file": "tests/test_alternatives.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "tests_test_bonus_engine", + "label": "test_bonus_engine.py", + "file_type": "code", + "source_file": "tests/test_bonus_engine.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "tests_test_bonus_engine_make_poi", + "label": "make_poi()", + "file_type": "code", + "source_file": "tests/test_bonus_engine.py", + "source_location": "L22", + "_origin": "ast" + }, + { + "id": "tests_test_bonus_engine_make_engine", + "label": "make_engine()", + "file_type": "code", + "source_file": "tests/test_bonus_engine.py", + "source_location": "L34", + "_origin": "ast" + }, + { + "id": "tests_test_bonus_engine_testwellnessbonus", + "label": "TestWellnessBonus", + "file_type": "code", + "source_file": "tests/test_bonus_engine.py", + "source_location": "L47", + "_origin": "ast" + }, + { + "id": "tests_test_bonus_engine_testwellnessbonus_test_no_wellness_data_gives_zero", + "label": ".test_no_wellness_data_gives_zero()", + "file_type": "code", + "source_file": "tests/test_bonus_engine.py", + "source_location": "L48", + "_origin": "ast" + }, + { + "id": "tests_test_bonus_engine_testwellnessbonus_test_matching_poi_gives_bonus", + "label": ".test_matching_poi_gives_bonus()", + "file_type": "code", + "source_file": "tests/test_bonus_engine.py", + "source_location": "L54", + "_origin": "ast" + }, + { + "id": "tests_test_bonus_engine_testwellnessbonus_test_two_matching_pois_give_double_bonus", + "label": ".test_two_matching_pois_give_double_bonus()", + "file_type": "code", + "source_file": "tests/test_bonus_engine.py", + "source_location": "L60", + "_origin": "ast" + }, + { + "id": "tests_test_bonus_engine_testwellnessbonus_test_wellness_bonus_capped", + "label": ".test_wellness_bonus_capped()", + "file_type": "code", + "source_file": "tests/test_bonus_engine.py", + "source_location": "L69", + "_origin": "ast" + }, + { + "id": "tests_test_bonus_engine_testwellnessbonus_test_non_matching_poi_no_bonus", + "label": ".test_non_matching_poi_no_bonus()", + "file_type": "code", + "source_file": "tests/test_bonus_engine.py", + "source_location": "L77", + "_origin": "ast" + }, + { + "id": "tests_test_bonus_engine_testwellnessbonus_test_wellness_applies_to_all_party_types", + "label": ".test_wellness_applies_to_all_party_types()", + "file_type": "code", + "source_file": "tests/test_bonus_engine.py", + "source_location": "L83", + "_origin": "ast" + }, + { + "id": "tests_test_bonus_engine_testaccessibilitybonus", + "label": "TestAccessibilityBonus", + "file_type": "code", + "source_file": "tests/test_bonus_engine.py", + "source_location": "L95", + "_origin": "ast" + }, + { + "id": "tests_test_bonus_engine_testaccessibilitybonus_test_accessible_party_gets_bonus", + "label": ".test_accessible_party_gets_bonus()", + "file_type": "code", + "source_file": "tests/test_bonus_engine.py", + "source_location": "L96", + "_origin": "ast" + }, + { + "id": "tests_test_bonus_engine_testaccessibilitybonus_test_non_accessible_party_no_bonus", + "label": ".test_non_accessible_party_no_bonus()", + "file_type": "code", + "source_file": "tests/test_bonus_engine.py", + "source_location": "L103", + "_origin": "ast" + }, + { + "id": "tests_test_bonus_engine_testaccessibilitybonus_test_accessibility_bonus_capped", + "label": ".test_accessibility_bonus_capped()", + "file_type": "code", + "source_file": "tests/test_bonus_engine.py", + "source_location": "L110", + "_origin": "ast" + }, + { + "id": "tests_test_bonus_engine_testpetfriendlybonus", + "label": "TestPetFriendlyBonus", + "file_type": "code", + "source_file": "tests/test_bonus_engine.py", + "source_location": "L122", + "_origin": "ast" + }, + { + "id": "tests_test_bonus_engine_testpetfriendlybonus_test_disabled_gives_zero_even_if_matched", + "label": ".test_disabled_gives_zero_even_if_matched()", + "file_type": "code", + "source_file": "tests/test_bonus_engine.py", + "source_location": "L123", + "_origin": "ast" + }, + { + "id": "tests_test_bonus_engine_testpetfriendlybonus_test_enabled_and_flagged_gives_bonus", + "label": ".test_enabled_and_flagged_gives_bonus()", + "file_type": "code", + "source_file": "tests/test_bonus_engine.py", + "source_location": "L129", + "_origin": "ast" + }, + { + "id": "tests_test_bonus_engine_testpetfriendlybonus_test_enabled_but_not_flagged_no_bonus_no_penalty", + "label": ".test_enabled_but_not_flagged_no_bonus_no_penalty()", + "file_type": "code", + "source_file": "tests/test_bonus_engine.py", + "source_location": "L135", + "_origin": "ast" + }, + { + "id": "tests_test_bonus_engine_testpetfriendlybonus_test_pet_friendly_bonus_capped", + "label": ".test_pet_friendly_bonus_capped()", + "file_type": "code", + "source_file": "tests/test_bonus_engine.py", + "source_location": "L142", + "_origin": "ast" + }, + { + "id": "tests_test_bonus_engine_testpetfriendlybonus_test_pet_friendly_matched_names_populated", + "label": ".test_pet_friendly_matched_names_populated()", + "file_type": "code", + "source_file": "tests/test_bonus_engine.py", + "source_location": "L148", + "_origin": "ast" + }, + { + "id": "tests_test_bonus_engine_testtotalbonuscap", + "label": "TestTotalBonusCap", + "file_type": "code", + "source_file": "tests/test_bonus_engine.py", + "source_location": "L159", + "_origin": "ast" + }, + { + "id": "tests_test_bonus_engine_testtotalbonuscap_test_combined_bonus_capped_at_cap", + "label": ".test_combined_bonus_capped_at_cap()", + "file_type": "code", + "source_file": "tests/test_bonus_engine.py", + "source_location": "L160", + "_origin": "ast" + }, + { + "id": "tests_test_bonus_engine_testtotalbonuscap_test_total_is_sum_when_under_cap", + "label": ".test_total_is_sum_when_under_cap()", + "file_type": "code", + "source_file": "tests/test_bonus_engine.py", + "source_location": "L167", + "_origin": "ast" + }, + { + "id": "tests_test_bonus_engine_testfromdataset", + "label": "TestFromDataset", + "file_type": "code", + "source_file": "tests/test_bonus_engine.py", + "source_location": "L187", + "_origin": "ast" + }, + { + "id": "tests_test_bonus_engine_testfromdataset_test_missing_files_give_empty_engine", + "label": ".test_missing_files_give_empty_engine()", + "file_type": "code", + "source_file": "tests/test_bonus_engine.py", + "source_location": "L188", + "_origin": "ast" + }, + { + "id": "tests_test_bonus_engine_testfromdataset_test_loads_from_json_files", + "label": ".test_loads_from_json_files()", + "file_type": "code", + "source_file": "tests/test_bonus_engine.py", + "source_location": "L197", + "_origin": "ast" + }, + { + "id": "tests_test_bonus_engine_testfromdataset_test_zero_coords_skipped", + "label": ".test_zero_coords_skipped()", + "file_type": "code", + "source_file": "tests/test_bonus_engine.py", + "source_location": "L211", + "_origin": "ast" + }, + { + "id": "tests_test_bonus_engine_testbonusresultfields", + "label": "TestBonusResultFields", + "file_type": "code", + "source_file": "tests/test_bonus_engine.py", + "source_location": "L227", + "_origin": "ast" + }, + { + "id": "tests_test_bonus_engine_testbonusresultfields_test_matched_names_populated", + "label": ".test_matched_names_populated()", + "file_type": "code", + "source_file": "tests/test_bonus_engine.py", + "source_location": "L228", + "_origin": "ast" + }, + { + "id": "tests_test_bonus_engine_testbonusresultfields_test_no_match_empty_lists", + "label": ".test_no_match_empty_lists()", + "file_type": "code", + "source_file": "tests/test_bonus_engine.py", + "source_location": "L234", + "_origin": "ast" + }, + { + "id": "tests_test_bonus_engine_rationale_1", + "label": "Tests for BonusEngine (TDD).", + "file_type": "rationale", + "source_file": "tests/test_bonus_engine.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "tests_test_cluster_dispersion", + "label": "test_cluster_dispersion.py", + "file_type": "code", + "source_file": "tests/test_cluster_dispersion.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "tests_test_cluster_dispersion_make_place", + "label": "_make_place()", + "file_type": "code", + "source_file": "tests/test_cluster_dispersion.py", + "source_location": "L17", + "_origin": "ast" + }, + { + "id": "tests_test_cluster_dispersion_test_compact_day_no_penalty", + "label": "test_compact_day_no_penalty()", + "file_type": "code", + "source_file": "tests/test_cluster_dispersion.py", + "source_location": "L24", + "_origin": "ast" + }, + { + "id": "tests_test_cluster_dispersion_test_lightning_pattern_high_penalty", + "label": "test_lightning_pattern_high_penalty()", + "file_type": "code", + "source_file": "tests/test_cluster_dispersion.py", + "source_location": "L38", + "_origin": "ast" + }, + { + "id": "tests_test_cluster_dispersion_test_per_day_independence", + "label": "test_per_day_independence()", + "file_type": "code", + "source_file": "tests/test_cluster_dispersion.py", + "source_location": "L53", + "_origin": "ast" + }, + { + "id": "skipif", + "label": "skipif", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast" + }, + { + "id": "tests_test_cluster_dispersion_test_geo_cluster_backtrack_gyeongju", + "label": "test_geo_cluster_backtrack_gyeongju()", + "file_type": "code", + "source_file": "tests/test_cluster_dispersion.py", + "source_location": "L69", + "_origin": "ast" + }, + { + "id": "tests_test_cluster_dispersion_test_geo_cluster_no_false_positive_sequential", + "label": "test_geo_cluster_no_false_positive_sequential()", + "file_type": "code", + "source_file": "tests/test_cluster_dispersion.py", + "source_location": "L90", + "_origin": "ast" + }, + { + "id": "tests_test_cluster_dispersion_test_geo_cluster_no_double_penalty_when_m3_fires", + "label": "test_geo_cluster_no_double_penalty_when_m3_fires()", + "file_type": "code", + "source_file": "tests/test_cluster_dispersion.py", + "source_location": "L103", + "_origin": "ast" + }, + { + "id": "tests_test_cluster_dispersion_test_sigungu_switches_only", + "label": "test_sigungu_switches_only()", + "file_type": "code", + "source_file": "tests/test_cluster_dispersion.py", + "source_location": "L125", + "_origin": "ast" + }, + { + "id": "tests_test_cluster_dispersion_rationale_1", + "label": "Tests for src/scoring/cluster_dispersion.py \u2014 per-day \uac80\uc99d.", + "file_type": "rationale", + "source_file": "tests/test_cluster_dispersion.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "tests_test_cluster_dispersion_rationale_25", + "label": "\uac19\uc740 \uc2dc\uad70\uad6c + \uac70\ub9ac < 30km \u2192 \ud328\ub110\ud2f0 0.", + "file_type": "rationale", + "source_file": "tests/test_cluster_dispersion.py", + "source_location": "L25", + "_origin": "ast" + }, + { + "id": "tests_test_cluster_dispersion_rationale_39", + "label": "1\uc77c\ucc28\uc5d0 \uc11c\uc6b8\u2194\ubd80\uc0b0 \uc11e\uae30 \u2192 \uac70\ub9ac \uba54\ud2b8\ub9ad CRITICAL + \ucea1 \uc801\uc6a9.", + "file_type": "rationale", + "source_file": "tests/test_cluster_dispersion.py", + "source_location": "L39", + "_origin": "ast" + }, + { + "id": "tests_test_cluster_dispersion_rationale_54", + "label": "Day1=\uc11c\uc6b8 / Day2=\ubd80\uc0b0 (\uac01 day \uc548\uc5d0\uc11c\ub294 \uc751\uc9d1) \u2192 \ud328\ub110\ud2f0 \uc5c6\uc74c.", + "file_type": "rationale", + "source_file": "tests/test_cluster_dispersion.py", + "source_location": "L54", + "_origin": "ast" + }, + { + "id": "tests_test_cluster_dispersion_rationale_70", + "label": "M4: \uacbd\uc8fc \u2014 \ub3d9\uc77c \uc2dc\uad70\uad6c\uc9c0\ub9cc \uc9c0\ub9ac\uc801\uc73c\ub85c \ubd84\uc0b0 \uc655\ubcf5 \u2192 M3=0\uc778\ub370 M4\u22651.", + "file_type": "rationale", + "source_file": "tests/test_cluster_dispersion.py", + "source_location": "L70", + "_origin": "ast" + }, + { + "id": "tests_test_cluster_dispersion_rationale_91", + "label": "M4 false positive: \uac15\ub0a8\u2192\ud64d\ub300 \uc21c\ubc29\ud5a5 \ubc29\ubb38\uc740 \ud328\ub110\ud2f0 \uc5c6\uc5b4\uc57c.", + "file_type": "rationale", + "source_file": "tests/test_cluster_dispersion.py", + "source_location": "L91", + "_origin": "ast" + }, + { + "id": "tests_test_cluster_dispersion_rationale_104", + "label": "M3\uac00 \uc774\ubbf8 \ud0d0\uc9c0\ud55c \uc774\ubca4\ud2b8\uc5d0 M4\uac00 \uc911\ubcf5 \ud328\ub110\ud2f0\ub97c \ucd94\uac00\ud558\uc9c0 \uc54a\ub294\ub2e4. \uac15\ub0a8\uc5ed\u2194\uc5ed\uc0bc\uc5ed: ~0.9km (\uac19\uc740 geo cluster), \ud64d\ub300\uc785\uad6c:\u2026", + "file_type": "rationale", + "source_file": "tests/test_cluster_dispersion.py", + "source_location": "L104", + "_origin": "ast" + }, + { + "id": "tests_test_cluster_dispersion_rationale_126", + "label": "\uac70\ub9ac\ub294 \uc548 \uba40\uc9c0\ub9cc \uc2dc\uad70\uad6c \uc804\ud658 4\ud68c+ \u2192 \uc2dc\uad70\uad6c \ud328\ub110\ud2f0\ub9cc \ubc1c\uc0dd.", + "file_type": "rationale", + "source_file": "tests/test_cluster_dispersion.py", + "source_location": "L126", + "_origin": "ast" + }, + { + "id": "tests_test_congestion_engine", + "label": "test_congestion_engine.py", + "file_type": "code", + "source_file": "tests/test_congestion_engine.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "tests_test_congestion_engine_py_fixture", + "label": "fixture", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast" + }, + { + "id": "tests_test_congestion_engine_engine", + "label": "engine()", + "file_type": "code", + "source_file": "tests/test_congestion_engine.py", + "source_location": "L48", + "_origin": "ast" + }, + { + "id": "parametrize", + "label": "parametrize", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast" + }, + { + "id": "tests_test_congestion_engine_test_score_to_level", + "label": "test_score_to_level()", + "file_type": "code", + "source_file": "tests/test_congestion_engine.py", + "source_location": "L71", + "_origin": "ast" + }, + { + "id": "tests_test_congestion_engine_test_exact_match", + "label": "test_exact_match()", + "file_type": "code", + "source_file": "tests/test_congestion_engine.py", + "source_location": "L79", + "_origin": "ast" + }, + { + "id": "tests_test_congestion_engine_test_exact_match_low_season", + "label": "test_exact_match_low_season()", + "file_type": "code", + "source_file": "tests/test_congestion_engine.py", + "source_location": "L87", + "_origin": "ast" + }, + { + "id": "tests_test_congestion_engine_test_partial_match_substring", + "label": "test_partial_match_substring()", + "file_type": "code", + "source_file": "tests/test_congestion_engine.py", + "source_location": "L98", + "_origin": "ast" + }, + { + "id": "tests_test_congestion_engine_test_partial_match_superstring", + "label": "test_partial_match_superstring()", + "file_type": "code", + "source_file": "tests/test_congestion_engine.py", + "source_location": "L104", + "_origin": "ast" + }, + { + "id": "tests_test_congestion_engine_test_global_fallback", + "label": "test_global_fallback()", + "file_type": "code", + "source_file": "tests/test_congestion_engine.py", + "source_location": "L114", + "_origin": "ast" + }, + { + "id": "tests_test_congestion_engine_test_category_fallback", + "label": "test_category_fallback()", + "file_type": "code", + "source_file": "tests/test_congestion_engine.py", + "source_location": "L120", + "_origin": "ast" + }, + { + "id": "tests_test_congestion_engine_test_invalid_month_raises", + "label": "test_invalid_month_raises()", + "file_type": "code", + "source_file": "tests/test_congestion_engine.py", + "source_location": "L130", + "_origin": "ast" + }, + { + "id": "tests_test_congestion_engine_test_result_is_dataclass", + "label": "test_result_is_dataclass()", + "file_type": "code", + "source_file": "tests/test_congestion_engine.py", + "source_location": "L137", + "_origin": "ast" + }, + { + "id": "tests_test_congestion_engine_test_is_crowded_true", + "label": "test_is_crowded_true()", + "file_type": "code", + "source_file": "tests/test_congestion_engine.py", + "source_location": "L147", + "_origin": "ast" + }, + { + "id": "tests_test_congestion_engine_test_is_crowded_false", + "label": "test_is_crowded_false()", + "file_type": "code", + "source_file": "tests/test_congestion_engine.py", + "source_location": "L151", + "_origin": "ast" + }, + { + "id": "tests_test_congestion_engine_test_score_itinerary", + "label": "test_score_itinerary()", + "file_type": "code", + "source_file": "tests/test_congestion_engine.py", + "source_location": "L155", + "_origin": "ast" + }, + { + "id": "tests_test_congestion_engine_test_missing_csv_raises", + "label": "test_missing_csv_raises()", + "file_type": "code", + "source_file": "tests/test_congestion_engine.py", + "source_location": "L165", + "_origin": "ast" + }, + { + "id": "tests_test_congestion_engine_rationale_1", + "label": "Unit tests for CongestionEngine.", + "file_type": "rationale", + "source_file": "tests/test_congestion_engine.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "tests_test_dwell_db", + "label": "test_dwell_db.py", + "file_type": "code", + "source_file": "tests/test_dwell_db.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "tests_test_dwell_db_testmanualoverride", + "label": "TestManualOverride", + "file_type": "code", + "source_file": "tests/test_dwell_db.py", + "source_location": "L16", + "_origin": "ast" + }, + { + "id": "tests_test_dwell_db_testmanualoverride_test_\uacbd\ubcf5\uad81_returns_manual_source", + "label": ".test_\uacbd\ubcf5\uad81_returns_manual_source()", + "file_type": "code", + "source_file": "tests/test_dwell_db.py", + "source_location": "L17", + "_origin": "ast" + }, + { + "id": "tests_test_dwell_db_testmanualoverride_test_normalization_handles_spaces", + "label": ".test_normalization_handles_spaces()", + "file_type": "code", + "source_file": "tests/test_dwell_db.py", + "source_location": "L23", + "_origin": "ast" + }, + { + "id": "tests_test_dwell_db_testmanualoverride_test_n_seoul_tower_alias", + "label": ".test_n_seoul_tower_alias()", + "file_type": "code", + "source_file": "tests/test_dwell_db.py", + "source_location": "L28", + "_origin": "ast" + }, + { + "id": "tests_test_dwell_db_testlclssystm3", + "label": "TestLclsSystm3", + "file_type": "code", + "source_file": "tests/test_dwell_db.py", + "source_location": "L35", + "_origin": "ast" + }, + { + "id": "tests_test_dwell_db_testlclssystm3_test_museum_code", + "label": ".test_museum_code()", + "file_type": "code", + "source_file": "tests/test_dwell_db.py", + "source_location": "L36", + "_origin": "ast" + }, + { + "id": "tests_test_dwell_db_testlclssystm1fallback", + "label": "TestLclsSystm1Fallback", + "file_type": "code", + "source_file": "tests/test_dwell_db.py", + "source_location": "L43", + "_origin": "ast" + }, + { + "id": "tests_test_dwell_db_testlclssystm1fallback_test_lcls3_unknown_falls_back_to_lcls1", + "label": ".test_lcls3_unknown_falls_back_to_lcls1()", + "file_type": "code", + "source_file": "tests/test_dwell_db.py", + "source_location": "L44", + "_origin": "ast" + }, + { + "id": "tests_test_dwell_db_testcontenttypefallback", + "label": "TestContentTypeFallback", + "file_type": "code", + "source_file": "tests/test_dwell_db.py", + "source_location": "L51", + "_origin": "ast" + }, + { + "id": "tests_test_dwell_db_testcontenttypefallback_test_content_type_used_when_no_lcls", + "label": ".test_content_type_used_when_no_lcls()", + "file_type": "code", + "source_file": "tests/test_dwell_db.py", + "source_location": "L52", + "_origin": "ast" + }, + { + "id": "tests_test_dwell_db_testdefaultfallback", + "label": "TestDefaultFallback", + "file_type": "code", + "source_file": "tests/test_dwell_db.py", + "source_location": "L58", + "_origin": "ast" + }, + { + "id": "tests_test_dwell_db_testdefaultfallback_test_no_info_returns_default", + "label": ".test_no_info_returns_default()", + "file_type": "code", + "source_file": "tests/test_dwell_db.py", + "source_location": "L59", + "_origin": "ast" + }, + { + "id": "tests_test_dwell_db_testistooshort", + "label": "TestIsTooShort", + "file_type": "code", + "source_file": "tests/test_dwell_db.py", + "source_location": "L65", + "_origin": "ast" + }, + { + "id": "tests_test_dwell_db_testistooshort_test_below_50pct_is_too_short", + "label": ".test_below_50pct_is_too_short()", + "file_type": "code", + "source_file": "tests/test_dwell_db.py", + "source_location": "L66", + "_origin": "ast" + }, + { + "id": "tests_test_dwell_db_rationale_1", + "label": "Tests for src/data/dwell_db.py \u2014 5\ub2e8\uacc4 \ud3f4\ubc31 \uac80\uc99d.", + "file_type": "rationale", + "source_file": "tests/test_dwell_db.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "tests_test_estimated_hardfail", + "label": "test_estimated_hardfail.py", + "file_type": "code", + "source_file": "tests/test_estimated_hardfail.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "tests_test_estimated_hardfail_poi", + "label": "_poi()", + "file_type": "code", + "source_file": "tests/test_estimated_hardfail.py", + "source_location": "L8", + "_origin": "ast" + }, + { + "id": "tests_test_estimated_hardfail_plan", + "label": "_plan()", + "file_type": "code", + "source_file": "tests/test_estimated_hardfail.py", + "source_location": "L22", + "_origin": "ast" + }, + { + "id": "tests_test_estimated_hardfail_test_estimated_hours_conflict_flagged_estimated", + "label": "test_estimated_hours_conflict_flagged_estimated()", + "file_type": "code", + "source_file": "tests/test_estimated_hardfail.py", + "source_location": "L31", + "_origin": "ast" + }, + { + "id": "tests_test_estimated_hardfail_test_verified_hours_conflict_not_estimated_and_message_unchanged", + "label": "test_verified_hours_conflict_not_estimated_and_message_unchanged()", + "file_type": "code", + "source_file": "tests/test_estimated_hardfail.py", + "source_location": "L41", + "_origin": "ast" + }, + { + "id": "tests_test_estimated_hardfail_rationale_1", + "label": "P1: \ucd94\uc815 \uc601\uc5c5\uc2dc\uac04 \ucda9\ub3cc\uc758 \ud558\ub4dc\ud398\uc77c \uac15\ub4f1 \ud14c\uc2a4\ud2b8.", + "file_type": "rationale", + "source_file": "tests/test_estimated_hardfail.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "tests_test_explain_engine", + "label": "test_explain_engine.py", + "file_type": "code", + "source_file": "tests/test_explain_engine.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "tests_test_explain_engine_make_plan", + "label": "make_plan()", + "file_type": "code", + "source_file": "tests/test_explain_engine.py", + "source_location": "L34", + "_origin": "ast" + }, + { + "id": "tests_test_explain_engine_make_scores", + "label": "make_scores()", + "file_type": "code", + "source_file": "tests/test_explain_engine.py", + "source_location": "L43", + "_origin": "ast" + }, + { + "id": "tests_test_explain_engine_make_hard_fail", + "label": "make_hard_fail()", + "file_type": "code", + "source_file": "tests/test_explain_engine.py", + "source_location": "L47", + "_origin": "ast" + }, + { + "id": "tests_test_explain_engine_make_warning", + "label": "make_warning()", + "file_type": "code", + "source_file": "tests/test_explain_engine.py", + "source_location": "L57", + "_origin": "ast" + }, + { + "id": "tests_test_explain_engine_make_graph_stub", + "label": "make_graph_stub()", + "file_type": "code", + "source_file": "tests/test_explain_engine.py", + "source_location": "L65", + "_origin": "ast" + }, + { + "id": "tests_test_explain_engine_make_disabled_graph_stub", + "label": "make_disabled_graph_stub()", + "file_type": "code", + "source_file": "tests/test_explain_engine.py", + "source_location": "L83", + "_origin": "ast" + }, + { + "id": "tests_test_explain_engine_testcachekey", + "label": "TestCacheKey", + "file_type": "code", + "source_file": "tests/test_explain_engine.py", + "source_location": "L93", + "_origin": "ast" + }, + { + "id": "tests_test_explain_engine_testcachekey_test_same_inputs_same_key", + "label": ".test_same_inputs_same_key()", + "file_type": "code", + "source_file": "tests/test_explain_engine.py", + "source_location": "L94", + "_origin": "ast" + }, + { + "id": "tests_test_explain_engine_testcachekey_test_different_score_different_key", + "label": ".test_different_score_different_key()", + "file_type": "code", + "source_file": "tests/test_explain_engine.py", + "source_location": "L100", + "_origin": "ast" + }, + { + "id": "tests_test_explain_engine_testcachekey_test_empty_inputs", + "label": ".test_empty_inputs()", + "file_type": "code", + "source_file": "tests/test_explain_engine.py", + "source_location": "L104", + "_origin": "ast" + }, + { + "id": "tests_test_explain_engine_testcachekey_test_different_day_index_different_key", + "label": ".test_different_day_index_different_key()", + "file_type": "code", + "source_file": "tests/test_explain_engine.py", + "source_location": "L108", + "_origin": "ast" + }, + { + "id": "tests_test_explain_engine_testgraphcontext", + "label": "TestGraphContext", + "file_type": "code", + "source_file": "tests/test_explain_engine.py", + "source_location": "L120", + "_origin": "ast" + }, + { + "id": "tests_test_explain_engine_testgraphcontext_test_none_graph_returns_none", + "label": ".test_none_graph_returns_none()", + "file_type": "code", + "source_file": "tests/test_explain_engine.py", + "source_location": "L121", + "_origin": "ast" + }, + { + "id": "tests_test_explain_engine_testgraphcontext_test_disabled_graph_returns_none", + "label": ".test_disabled_graph_returns_none()", + "file_type": "code", + "source_file": "tests/test_explain_engine.py", + "source_location": "L124", + "_origin": "ast" + }, + { + "id": "tests_test_explain_engine_testgraphcontext_test_empty_poi_name_returns_none", + "label": ".test_empty_poi_name_returns_none()", + "file_type": "code", + "source_file": "tests/test_explain_engine.py", + "source_location": "L127", + "_origin": "ast" + }, + { + "id": "tests_test_explain_engine_testgraphcontext_test_no_match_returns_none", + "label": ".test_no_match_returns_none()", + "file_type": "code", + "source_file": "tests/test_explain_engine.py", + "source_location": "L130", + "_origin": "ast" + }, + { + "id": "tests_test_explain_engine_testgraphcontext_test_match_includes_region_and_category", + "label": ".test_match_includes_region_and_category()", + "file_type": "code", + "source_file": "tests/test_explain_engine.py", + "source_location": "L135", + "_origin": "ast" + }, + { + "id": "tests_test_explain_engine_testgraphcontext_test_match_includes_nearby_alternatives", + "label": ".test_match_includes_nearby_alternatives()", + "file_type": "code", + "source_file": "tests/test_explain_engine.py", + "source_location": "L140", + "_origin": "ast" + }, + { + "id": "tests_test_explain_engine_testgraphcontext_test_no_nearby_omits_key", + "label": ".test_no_nearby_omits_key()", + "file_type": "code", + "source_file": "tests/test_explain_engine.py", + "source_location": "L145", + "_origin": "ast" + }, + { + "id": "tests_test_explain_engine_testbuilduserprompt", + "label": "TestBuildUserPrompt", + "file_type": "code", + "source_file": "tests/test_explain_engine.py", + "source_location": "L154", + "_origin": "ast" + }, + { + "id": "tests_test_explain_engine_testbuilduserprompt_test_contains_plan_info", + "label": ".test_contains_plan_info()", + "file_type": "code", + "source_file": "tests/test_explain_engine.py", + "source_location": "L155", + "_origin": "ast" + }, + { + "id": "tests_test_explain_engine_testbuilduserprompt_test_hard_fail_in_prompt", + "label": ".test_hard_fail_in_prompt()", + "file_type": "code", + "source_file": "tests/test_explain_engine.py", + "source_location": "L160", + "_origin": "ast" + }, + { + "id": "tests_test_explain_engine_testbuilduserprompt_test_warning_in_prompt", + "label": ".test_warning_in_prompt()", + "file_type": "code", + "source_file": "tests/test_explain_engine.py", + "source_location": "L165", + "_origin": "ast" + }, + { + "id": "tests_test_explain_engine_testbuilduserprompt_test_penalty_in_prompt", + "label": ".test_penalty_in_prompt()", + "file_type": "code", + "source_file": "tests/test_explain_engine.py", + "source_location": "L169", + "_origin": "ast" + }, + { + "id": "tests_test_explain_engine_testbuilduserprompt_test_scores_included_when_provided", + "label": ".test_scores_included_when_provided()", + "file_type": "code", + "source_file": "tests/test_explain_engine.py", + "source_location": "L173", + "_origin": "ast" + }, + { + "id": "tests_test_explain_engine_testbuilduserprompt_test_overall_item_present", + "label": ".test_overall_item_present()", + "file_type": "code", + "source_file": "tests/test_explain_engine.py", + "source_location": "L177", + "_origin": "ast" + }, + { + "id": "tests_test_explain_engine_testbuilduserprompt_test_graph_evidence_included_when_matched", + "label": ".test_graph_evidence_included_when_matched()", + "file_type": "code", + "source_file": "tests/test_explain_engine.py", + "source_location": "L182", + "_origin": "ast" + }, + { + "id": "tests_test_explain_engine_testbuilduserprompt_test_no_graph_omits_evidence_key", + "label": ".test_no_graph_omits_evidence_key()", + "file_type": "code", + "source_file": "tests/test_explain_engine.py", + "source_location": "L190", + "_origin": "ast" + }, + { + "id": "tests_test_explain_engine_testbuilduserprompt_test_day_index_included_for_hard_fail", + "label": ".test_day_index_included_for_hard_fail()", + "file_type": "code", + "source_file": "tests/test_explain_engine.py", + "source_location": "L194", + "_origin": "ast" + }, + { + "id": "tests_test_explain_engine_testbuilduserprompt_test_day_index_included_for_warning", + "label": ".test_day_index_included_for_warning()", + "file_type": "code", + "source_file": "tests/test_explain_engine.py", + "source_location": "L200", + "_origin": "ast" + }, + { + "id": "tests_test_explain_engine_testbuilduserprompt_test_no_day_index_omits_day_field", + "label": ".test_no_day_index_omits_day_field()", + "file_type": "code", + "source_file": "tests/test_explain_engine.py", + "source_location": "L209", + "_origin": "ast" + }, + { + "id": "tests_test_explain_engine_testbuilduserprompt_test_warning_graph_evidence_uses_first_poi_name", + "label": ".test_warning_graph_evidence_uses_first_poi_name()", + "file_type": "code", + "source_file": "tests/test_explain_engine.py", + "source_location": "L213", + "_origin": "ast" + }, + { + "id": "tests_test_explain_engine_testparsellmresponse", + "label": "TestParseLlmResponse", + "file_type": "code", + "source_file": "tests/test_explain_engine.py", + "source_location": "L225", + "_origin": "ast" + }, + { + "id": "tests_test_explain_engine_testparsellmresponse_test_parses_valid_json_array", + "label": ".test_parses_valid_json_array()", + "file_type": "code", + "source_file": "tests/test_explain_engine.py", + "source_location": "L226", + "_origin": "ast" + }, + { + "id": "tests_test_explain_engine_testparsellmresponse_test_strips_code_block_wrapper", + "label": ".test_strips_code_block_wrapper()", + "file_type": "code", + "source_file": "tests/test_explain_engine.py", + "source_location": "L240", + "_origin": "ast" + }, + { + "id": "tests_test_explain_engine_testparsellmresponse_test_multiple_items", + "label": ".test_multiple_items()", + "file_type": "code", + "source_file": "tests/test_explain_engine.py", + "source_location": "L246", + "_origin": "ast" + }, + { + "id": "tests_test_explain_engine_testparsellmresponse_test_returns_explanation_items", + "label": ".test_returns_explanation_items()", + "file_type": "code", + "source_file": "tests/test_explain_engine.py", + "source_location": "L254", + "_origin": "ast" + }, + { + "id": "tests_test_explain_engine_testparsellmresponse_test_day_index_echoed_back", + "label": ".test_day_index_echoed_back()", + "file_type": "code", + "source_file": "tests/test_explain_engine.py", + "source_location": "L262", + "_origin": "ast" + }, + { + "id": "tests_test_explain_engine_testparsellmresponse_test_missing_day_index_defaults_to_none", + "label": ".test_missing_day_index_defaults_to_none()", + "file_type": "code", + "source_file": "tests/test_explain_engine.py", + "source_location": "L270", + "_origin": "ast" + }, + { + "id": "tests_test_explain_engine_testfallback", + "label": "TestFallback", + "file_type": "code", + "source_file": "tests/test_explain_engine.py", + "source_location": "L283", + "_origin": "ast" + }, + { + "id": "tests_test_explain_engine_testfallback_test_hard_fail_becomes_critical", + "label": ".test_hard_fail_becomes_critical()", + "file_type": "code", + "source_file": "tests/test_explain_engine.py", + "source_location": "L284", + "_origin": "ast" + }, + { + "id": "tests_test_explain_engine_testfallback_test_warning_becomes_warning", + "label": ".test_warning_becomes_warning()", + "file_type": "code", + "source_file": "tests/test_explain_engine.py", + "source_location": "L289", + "_origin": "ast" + }, + { + "id": "tests_test_explain_engine_testfallback_test_large_penalty_is_critical", + "label": ".test_large_penalty_is_critical()", + "file_type": "code", + "source_file": "tests/test_explain_engine.py", + "source_location": "L294", + "_origin": "ast" + }, + { + "id": "tests_test_explain_engine_testfallback_test_small_penalty_is_warning", + "label": ".test_small_penalty_is_warning()", + "file_type": "code", + "source_file": "tests/test_explain_engine.py", + "source_location": "L299", + "_origin": "ast" + }, + { + "id": "tests_test_explain_engine_testfallback_test_always_has_overall_item", + "label": ".test_always_has_overall_item()", + "file_type": "code", + "source_file": "tests/test_explain_engine.py", + "source_location": "L304", + "_origin": "ast" + }, + { + "id": "tests_test_explain_engine_testfallback_test_failed_overall_is_critical", + "label": ".test_failed_overall_is_critical()", + "file_type": "code", + "source_file": "tests/test_explain_engine.py", + "source_location": "L314", + "_origin": "ast" + }, + { + "id": "tests_test_explain_engine_testfallback_test_passed_overall_is_ok", + "label": ".test_passed_overall_is_ok()", + "file_type": "code", + "source_file": "tests/test_explain_engine.py", + "source_location": "L319", + "_origin": "ast" + }, + { + "id": "tests_test_explain_engine_testfallback_test_hard_fail_day_index_propagated_and_prefixed", + "label": ".test_hard_fail_day_index_propagated_and_prefixed()", + "file_type": "code", + "source_file": "tests/test_explain_engine.py", + "source_location": "L324", + "_origin": "ast" + }, + { + "id": "tests_test_explain_engine_testfallback_test_warning_day_index_propagated_and_prefixed", + "label": ".test_warning_day_index_propagated_and_prefixed()", + "file_type": "code", + "source_file": "tests/test_explain_engine.py", + "source_location": "L332", + "_origin": "ast" + }, + { + "id": "tests_test_explain_engine_testfallback_test_no_day_index_no_prefix", + "label": ".test_no_day_index_no_prefix()", + "file_type": "code", + "source_file": "tests/test_explain_engine.py", + "source_location": "L340", + "_origin": "ast" + }, + { + "id": "tests_test_explain_engine_testexplainenginenollm", + "label": "TestExplainEngineNoLLM", + "file_type": "code", + "source_file": "tests/test_explain_engine.py", + "source_location": "L351", + "_origin": "ast" + }, + { + "id": "tests_test_explain_engine_testexplainenginenollm_setup_method", + "label": ".setup_method()", + "file_type": "code", + "source_file": "tests/test_explain_engine.py", + "source_location": "L352", + "_origin": "ast" + }, + { + "id": "tests_test_explain_engine_testexplainenginenollm_test_is_available_false_without_key", + "label": ".test_is_available_false_without_key()", + "file_type": "code", + "source_file": "tests/test_explain_engine.py", + "source_location": "L356", + "_origin": "ast" + }, + { + "id": "tests_test_explain_engine_testexplainenginenollm_test_generate_returns_list_of_explanation_items", + "label": ".test_generate_returns_list_of_explanation_items()", + "file_type": "code", + "source_file": "tests/test_explain_engine.py", + "source_location": "L359", + "_origin": "ast" + }, + { + "id": "tests_test_explain_engine_testexplainenginenollm_test_no_issues_returns_ok_overall", + "label": ".test_no_issues_returns_ok_overall()", + "file_type": "code", + "source_file": "tests/test_explain_engine.py", + "source_location": "L372", + "_origin": "ast" + }, + { + "id": "tests_test_explain_engine_testexplainenginenollm_test_hard_fail_present_in_results", + "label": ".test_hard_fail_present_in_results()", + "file_type": "code", + "source_file": "tests/test_explain_engine.py", + "source_location": "L381", + "_origin": "ast" + }, + { + "id": "tests_test_explain_engine_testexplainenginenollm_test_warning_present_in_results", + "label": ".test_warning_present_in_results()", + "file_type": "code", + "source_file": "tests/test_explain_engine.py", + "source_location": "L389", + "_origin": "ast" + }, + { + "id": "tests_test_explain_engine_testexplainenginenollm_test_penalty_present_in_results", + "label": ".test_penalty_present_in_results()", + "file_type": "code", + "source_file": "tests/test_explain_engine.py", + "source_location": "L397", + "_origin": "ast" + }, + { + "id": "tests_test_explain_engine_testexplainenginemockllm", + "label": "TestExplainEngineMockLLM", + "file_type": "code", + "source_file": "tests/test_explain_engine.py", + "source_location": "L410", + "_origin": "ast" + }, + { + "id": "tests_test_explain_engine_testexplainenginemockllm_make_mock_client", + "label": "._make_mock_client()", + "file_type": "code", + "source_file": "tests/test_explain_engine.py", + "source_location": "L411", + "_origin": "ast" + }, + { + "id": "tests_test_explain_engine_testexplainenginemockllm_test_llm_response_used_when_available", + "label": ".test_llm_response_used_when_available()", + "file_type": "code", + "source_file": "tests/test_explain_engine.py", + "source_location": "L421", + "_origin": "ast" + }, + { + "id": "tests_test_explain_engine_testexplainenginemockllm_test_llm_failure_falls_back_gracefully", + "label": ".test_llm_failure_falls_back_gracefully()", + "file_type": "code", + "source_file": "tests/test_explain_engine.py", + "source_location": "L445", + "_origin": "ast" + }, + { + "id": "tests_test_explain_engine_testexplainenginemockllm_test_cache_prevents_second_llm_call", + "label": ".test_cache_prevents_second_llm_call()", + "file_type": "code", + "source_file": "tests/test_explain_engine.py", + "source_location": "L456", + "_origin": "ast" + }, + { + "id": "tests_test_explain_engine_testexplainenginemockllm_test_is_available_with_client", + "label": ".test_is_available_with_client()", + "file_type": "code", + "source_file": "tests/test_explain_engine.py", + "source_location": "L472", + "_origin": "ast" + }, + { + "id": "tests_test_explain_engine_testexplainenginemockllm_test_graph_evidence_reaches_llm_prompt", + "label": ".test_graph_evidence_reaches_llm_prompt()", + "file_type": "code", + "source_file": "tests/test_explain_engine.py", + "source_location": "L477", + "_origin": "ast" + }, + { + "id": "tests_test_explain_engine_testexplainenginegraphdefault", + "label": "TestExplainEngineGraphDefault", + "file_type": "code", + "source_file": "tests/test_explain_engine.py", + "source_location": "L496", + "_origin": "ast" + }, + { + "id": "tests_test_explain_engine_testexplainenginegraphdefault_test_default_graph_disabled_without_env", + "label": ".test_default_graph_disabled_without_env()", + "file_type": "code", + "source_file": "tests/test_explain_engine.py", + "source_location": "L497", + "_origin": "ast" + }, + { + "id": "tests_test_explain_engine_testbuildalternatives", + "label": "TestBuildAlternatives", + "file_type": "code", + "source_file": "tests/test_explain_engine.py", + "source_location": "L507", + "_origin": "ast" + }, + { + "id": "tests_test_explain_engine_testbuildalternatives_test_no_hard_fails_returns_empty", + "label": ".test_no_hard_fails_returns_empty()", + "file_type": "code", + "source_file": "tests/test_explain_engine.py", + "source_location": "L508", + "_origin": "ast" + }, + { + "id": "tests_test_explain_engine_testbuildalternatives_test_disabled_graph_returns_empty", + "label": ".test_disabled_graph_returns_empty()", + "file_type": "code", + "source_file": "tests/test_explain_engine.py", + "source_location": "L512", + "_origin": "ast" + }, + { + "id": "tests_test_explain_engine_testbuildalternatives_test_hard_fail_without_poi_name_skipped", + "label": ".test_hard_fail_without_poi_name_skipped()", + "file_type": "code", + "source_file": "tests/test_explain_engine.py", + "source_location": "L518", + "_origin": "ast" + }, + { + "id": "tests_test_explain_engine_testbuildalternatives_test_match_returns_alternatives_keyed_by_poi_name", + "label": ".test_match_returns_alternatives_keyed_by_poi_name()", + "file_type": "code", + "source_file": "tests/test_explain_engine.py", + "source_location": "L524", + "_origin": "ast" + }, + { + "id": "tests_test_explain_engine_testbuildalternatives_test_no_nearby_omits_poi", + "label": ".test_no_nearby_omits_poi()", + "file_type": "code", + "source_file": "tests/test_explain_engine.py", + "source_location": "L532", + "_origin": "ast" + }, + { + "id": "tests_test_explain_engine_testbuildalternatives_test_no_search_match_omits_poi", + "label": ".test_no_search_match_omits_poi()", + "file_type": "code", + "source_file": "tests/test_explain_engine.py", + "source_location": "L540", + "_origin": "ast" + }, + { + "id": "tests_test_explain_engine_testbuildalternatives_test_duplicate_poi_name_only_looked_up_once", + "label": ".test_duplicate_poi_name_only_looked_up_once()", + "file_type": "code", + "source_file": "tests/test_explain_engine.py", + "source_location": "L548", + "_origin": "ast" + }, + { + "id": "tests_test_explain_engine_rationale_1", + "label": "Tests for ExplainEngine (TDD) \u2014 LLM\uc740 mock\uc73c\ub85c \ub300\uccb4.", + "file_type": "rationale", + "source_file": "tests/test_explain_engine.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "tests_test_explain_engine_rationale_66", + "label": "GraphRetriever \uc2a4\ud141 \u2014 \uc2e4\uc81c Neo4j \uc5f0\uacb0 \uc5c6\uc774 \uc131\uc0b0\uc77c\ucd9c\ubd09 \uac80\uc0c9 \uacb0\uacfc\ub97c \ud749\ub0b4\ub0b8\ub2e4.", + "file_type": "rationale", + "source_file": "tests/test_explain_engine.py", + "source_location": "L66", + "_origin": "ast" + }, + { + "id": "tests_test_geo", + "label": "test_geo.py", + "file_type": "code", + "source_file": "tests/test_geo.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "tests_test_geo_make_poi", + "label": "make_poi()", + "file_type": "code", + "source_file": "tests/test_geo.py", + "source_location": "L10", + "_origin": "ast" + }, + { + "id": "tests_test_geo_testhaversinekm", + "label": "TestHaversineKm", + "file_type": "code", + "source_file": "tests/test_geo.py", + "source_location": "L23", + "_origin": "ast" + }, + { + "id": "tests_test_geo_testhaversinekm_test_same_point_is_zero", + "label": ".test_same_point_is_zero()", + "file_type": "code", + "source_file": "tests/test_geo.py", + "source_location": "L24", + "_origin": "ast" + }, + { + "id": "tests_test_geo_testhaversinekm_test_known_distance", + "label": ".test_known_distance()", + "file_type": "code", + "source_file": "tests/test_geo.py", + "source_location": "L27", + "_origin": "ast" + }, + { + "id": "tests_test_geo_testhaversinekm_test_symmetric", + "label": ".test_symmetric()", + "file_type": "code", + "source_file": "tests/test_geo.py", + "source_location": "L32", + "_origin": "ast" + }, + { + "id": "tests_test_geo_testhaversinekm_test_positive", + "label": ".test_positive()", + "file_type": "code", + "source_file": "tests/test_geo.py", + "source_location": "L37", + "_origin": "ast" + }, + { + "id": "tests_test_geo_testbuilddistcache", + "label": "TestBuildDistCache", + "file_type": "code", + "source_file": "tests/test_geo.py", + "source_location": "L45", + "_origin": "ast" + }, + { + "id": "tests_test_geo_testbuilddistcache_test_all_pairs_present", + "label": ".test_all_pairs_present()", + "file_type": "code", + "source_file": "tests/test_geo.py", + "source_location": "L46", + "_origin": "ast" + }, + { + "id": "tests_test_geo_testbuilddistcache_test_no_self_pairs", + "label": ".test_no_self_pairs()", + "file_type": "code", + "source_file": "tests/test_geo.py", + "source_location": "L54", + "_origin": "ast" + }, + { + "id": "tests_test_geo_testbuilddistcache_test_values_match_haversine", + "label": ".test_values_match_haversine()", + "file_type": "code", + "source_file": "tests/test_geo.py", + "source_location": "L60", + "_origin": "ast" + }, + { + "id": "tests_test_geo_testbuilddistcache_test_single_poi_empty_cache", + "label": ".test_single_poi_empty_cache()", + "file_type": "code", + "source_file": "tests/test_geo.py", + "source_location": "L70", + "_origin": "ast" + }, + { + "id": "tests_test_geo_testbuilddistcache_test_empty_list_empty_cache", + "label": ".test_empty_list_empty_cache()", + "file_type": "code", + "source_file": "tests/test_geo.py", + "source_location": "L75", + "_origin": "ast" + }, + { + "id": "tests_test_geo_testnnheuristickm", + "label": "TestNnHeuristicKm", + "file_type": "code", + "source_file": "tests/test_geo.py", + "source_location": "L83", + "_origin": "ast" + }, + { + "id": "tests_test_geo_testnnheuristickm_test_single_poi_returns_zero", + "label": ".test_single_poi_returns_zero()", + "file_type": "code", + "source_file": "tests/test_geo.py", + "source_location": "L84", + "_origin": "ast" + }, + { + "id": "tests_test_geo_testnnheuristickm_test_two_pois_returns_distance", + "label": ".test_two_pois_returns_distance()", + "file_type": "code", + "source_file": "tests/test_geo.py", + "source_location": "L88", + "_origin": "ast" + }, + { + "id": "tests_test_geo_testnnheuristickm_test_nn_le_actual_for_suboptimal", + "label": ".test_nn_le_actual_for_suboptimal()", + "file_type": "code", + "source_file": "tests/test_geo.py", + "source_location": "L93", + "_origin": "ast" + }, + { + "id": "tests_test_geo_testnnheuristickm_test_cache_gives_same_result", + "label": ".test_cache_gives_same_result()", + "file_type": "code", + "source_file": "tests/test_geo.py", + "source_location": "L109", + "_origin": "ast" + }, + { + "id": "tests_test_geo_testnnheuristickm_test_collinear_optimal_order_matches_nn", + "label": ".test_collinear_optimal_order_matches_nn()", + "file_type": "code", + "source_file": "tests/test_geo.py", + "source_location": "L114", + "_origin": "ast" + }, + { + "id": "tests_test_geo_testgettravelmin", + "label": "TestGetTravelMin", + "file_type": "code", + "source_file": "tests/test_geo.py", + "source_location": "L128", + "_origin": "ast" + }, + { + "id": "tests_test_geo_testgettravelmin_test_uses_matrix_when_available", + "label": ".test_uses_matrix_when_available()", + "file_type": "code", + "source_file": "tests/test_geo.py", + "source_location": "L129", + "_origin": "ast" + }, + { + "id": "tests_test_geo_testgettravelmin_test_haversine_fallback_when_no_matrix", + "label": ".test_haversine_fallback_when_no_matrix()", + "file_type": "code", + "source_file": "tests/test_geo.py", + "source_location": "L135", + "_origin": "ast" + }, + { + "id": "tests_test_geo_testgettravelmin_test_cache_fallback_when_no_matrix", + "label": ".test_cache_fallback_when_no_matrix()", + "file_type": "code", + "source_file": "tests/test_geo.py", + "source_location": "L143", + "_origin": "ast" + }, + { + "id": "tests_test_geo_testgettravelmin_test_matrix_takes_priority_over_cache", + "label": ".test_matrix_takes_priority_over_cache()", + "file_type": "code", + "source_file": "tests/test_geo.py", + "source_location": "L150", + "_origin": "ast" + }, + { + "id": "tests_test_geo_rationale_1", + "label": "Tests for src/utils/geo.py (TDD).", + "file_type": "rationale", + "source_file": "tests/test_geo.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "tests_test_graph_retriever", + "label": "test_graph_retriever.py", + "file_type": "code", + "source_file": "tests/test_graph_retriever.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "tests_test_graph_retriever_test_disabled_without_uri_returns_empty", + "label": "test_disabled_without_uri_returns_empty()", + "file_type": "code", + "source_file": "tests/test_graph_retriever.py", + "source_location": "L12", + "_origin": "ast" + }, + { + "id": "tests_test_graph_retriever_test_search_places_parses_records", + "label": "test_search_places_parses_records()", + "file_type": "code", + "source_file": "tests/test_graph_retriever.py", + "source_location": "L19", + "_origin": "ast" + }, + { + "id": "tests_test_graph_retriever_test_search_places_empty_query_skips_call", + "label": "test_search_places_empty_query_skips_call()", + "file_type": "code", + "source_file": "tests/test_graph_retriever.py", + "source_location": "L39", + "_origin": "ast" + }, + { + "id": "tests_test_graph_retriever_test_search_places_neo4j_error_returns_empty", + "label": "test_search_places_neo4j_error_returns_empty()", + "file_type": "code", + "source_file": "tests/test_graph_retriever.py", + "source_location": "L46", + "_origin": "ast" + }, + { + "id": "tests_test_graph_retriever_test_find_nearby_parses_and_converts_distance", + "label": "test_find_nearby_parses_and_converts_distance()", + "file_type": "code", + "source_file": "tests/test_graph_retriever.py", + "source_location": "L53", + "_origin": "ast" + }, + { + "id": "tests_test_graph_retriever_test_repeated_failures_skip_driver_call_during_cooldown", + "label": "test_repeated_failures_skip_driver_call_during_cooldown()", + "file_type": "code", + "source_file": "tests/test_graph_retriever.py", + "source_location": "L68", + "_origin": "ast" + }, + { + "id": "tests_test_graph_retriever_test_close_closes_driver", + "label": "test_close_closes_driver()", + "file_type": "code", + "source_file": "tests/test_graph_retriever.py", + "source_location": "L79", + "_origin": "ast" + }, + { + "id": "tests_test_graph_retriever_test_from_env_reads_variables", + "label": "test_from_env_reads_variables()", + "file_type": "code", + "source_file": "tests/test_graph_retriever.py", + "source_location": "L86", + "_origin": "ast" + }, + { + "id": "tests_test_graph_retriever_rationale_1", + "label": "GraphRetriever \ud14c\uc2a4\ud2b8 (\uc2e4\uc81c Neo4j \ud638\ucd9c X \u2014 \ubaa8\ub450 mock).", + "file_type": "rationale", + "source_file": "tests/test_graph_retriever.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "tests_test_hard_fail", + "label": "test_hard_fail.py", + "file_type": "code", + "source_file": "tests/test_hard_fail.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "tests_test_hard_fail_make_poi", + "label": "make_poi()", + "file_type": "code", + "source_file": "tests/test_hard_fail.py", + "source_location": "L13", + "_origin": "ast" + }, + { + "id": "tests_test_hard_fail_make_plan", + "label": "make_plan()", + "file_type": "code", + "source_file": "tests/test_hard_fail.py", + "source_location": "L30", + "_origin": "ast" + }, + { + "id": "tests_test_hard_fail_make_matrix", + "label": "make_matrix()", + "file_type": "code", + "source_file": "tests/test_hard_fail.py", + "source_location": "L41", + "_origin": "ast" + }, + { + "id": "tests_test_hard_fail_py_fixture", + "label": "fixture", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast" + }, + { + "id": "tests_test_hard_fail_detector", + "label": "detector()", + "file_type": "code", + "source_file": "tests/test_hard_fail.py", + "source_location": "L58", + "_origin": "ast" + }, + { + "id": "tests_test_hard_fail_open_poi", + "label": "open_poi()", + "file_type": "code", + "source_file": "tests/test_hard_fail.py", + "source_location": "L63", + "_origin": "ast" + }, + { + "id": "tests_test_hard_fail_testhelpers", + "label": "TestHelpers", + "file_type": "code", + "source_file": "tests/test_hard_fail.py", + "source_location": "L71", + "_origin": "ast" + }, + { + "id": "tests_test_hard_fail_testhelpers_test_time_to_min", + "label": ".test_time_to_min()", + "file_type": "code", + "source_file": "tests/test_hard_fail.py", + "source_location": "L72", + "_origin": "ast" + }, + { + "id": "tests_test_hard_fail_testhelpers_test_min_to_time", + "label": ".test_min_to_time()", + "file_type": "code", + "source_file": "tests/test_hard_fail.py", + "source_location": "L75", + "_origin": "ast" + }, + { + "id": "tests_test_hard_fail_testhelpers_test_time_to_min_midnight", + "label": ".test_time_to_min_midnight()", + "file_type": "code", + "source_file": "tests/test_hard_fail.py", + "source_location": "L78", + "_origin": "ast" + }, + { + "id": "tests_test_hard_fail_testhelpers_test_min_to_time_midnight", + "label": ".test_min_to_time_midnight()", + "file_type": "code", + "source_file": "tests/test_hard_fail.py", + "source_location": "L81", + "_origin": "ast" + }, + { + "id": "tests_test_hard_fail_testhelpers_test_min_to_time_wraps_past_24h", + "label": ".test_min_to_time_wraps_past_24h()", + "file_type": "code", + "source_file": "tests/test_hard_fail.py", + "source_location": "L84", + "_origin": "ast" + }, + { + "id": "tests_test_hard_fail_testoperatinghours", + "label": "TestOperatingHours", + "file_type": "code", + "source_file": "tests/test_hard_fail.py", + "source_location": "L92", + "_origin": "ast" + }, + { + "id": "tests_test_hard_fail_testoperatinghours_test_no_fail_within_hours", + "label": ".test_no_fail_within_hours()", + "file_type": "code", + "source_file": "tests/test_hard_fail.py", + "source_location": "L93", + "_origin": "ast" + }, + { + "id": "tests_test_hard_fail_testoperatinghours_test_fail_arrive_before_open", + "label": ".test_fail_arrive_before_open()", + "file_type": "code", + "source_file": "tests/test_hard_fail.py", + "source_location": "L101", + "_origin": "ast" + }, + { + "id": "tests_test_hard_fail_testoperatinghours_test_fail_arrive_after_close", + "label": ".test_fail_arrive_after_close()", + "file_type": "code", + "source_file": "tests/test_hard_fail.py", + "source_location": "L112", + "_origin": "ast" + }, + { + "id": "tests_test_hard_fail_testoperatinghours_test_no_fail_for_fallback_hours", + "label": ".test_no_fail_for_fallback_hours()", + "file_type": "code", + "source_file": "tests/test_hard_fail.py", + "source_location": "L121", + "_origin": "ast" + }, + { + "id": "tests_test_hard_fail_testtraveltimeimpossible", + "label": "TestTravelTimeImpossible", + "file_type": "code", + "source_file": "tests/test_hard_fail.py", + "source_location": "L135", + "_origin": "ast" + }, + { + "id": "tests_test_hard_fail_testtraveltimeimpossible_test_travel_impossible", + "label": ".test_travel_impossible()", + "file_type": "code", + "source_file": "tests/test_hard_fail.py", + "source_location": "L136", + "_origin": "ast" + }, + { + "id": "tests_test_hard_fail_testtraveltimeimpossible_test_no_fail_sufficient_window", + "label": ".test_no_fail_sufficient_window()", + "file_type": "code", + "source_file": "tests/test_hard_fail.py", + "source_location": "L150", + "_origin": "ast" + }, + { + "id": "tests_test_hard_fail_testscheduleinfeasible", + "label": "TestScheduleInfeasible", + "file_type": "code", + "source_file": "tests/test_hard_fail.py", + "source_location": "L165", + "_origin": "ast" + }, + { + "id": "tests_test_hard_fail_testscheduleinfeasible_test_schedule_exceeds_24h", + "label": ".test_schedule_exceeds_24h()", + "file_type": "code", + "source_file": "tests/test_hard_fail.py", + "source_location": "L166", + "_origin": "ast" + }, + { + "id": "tests_test_hard_fail_testscheduleinfeasible_test_schedule_within_24h", + "label": ".test_schedule_within_24h()", + "file_type": "code", + "source_file": "tests/test_hard_fail.py", + "source_location": "L184", + "_origin": "ast" + }, + { + "id": "tests_test_hard_fail_testnormalplan", + "label": "TestNormalPlan", + "file_type": "code", + "source_file": "tests/test_hard_fail.py", + "source_location": "L201", + "_origin": "ast" + }, + { + "id": "tests_test_hard_fail_testnormalplan_test_normal_plan_no_fails", + "label": ".test_normal_plan_no_fails()", + "file_type": "code", + "source_file": "tests/test_hard_fail.py", + "source_location": "L202", + "_origin": "ast" + }, + { + "id": "tests_test_hard_fail_testdayindex", + "label": "TestDayIndex", + "file_type": "code", + "source_file": "tests/test_hard_fail.py", + "source_location": "L221", + "_origin": "ast" + }, + { + "id": "tests_test_hard_fail_testdayindex_test_day_index_defaults_to_none", + "label": ".test_day_index_defaults_to_none()", + "file_type": "code", + "source_file": "tests/test_hard_fail.py", + "source_location": "L222", + "_origin": "ast" + }, + { + "id": "tests_test_hard_fail_testdayindex_test_day_index_set_when_passed", + "label": ".test_day_index_set_when_passed()", + "file_type": "code", + "source_file": "tests/test_hard_fail.py", + "source_location": "L229", + "_origin": "ast" + }, + { + "id": "tests_test_hard_fail_rationale_1", + "label": "Tests for HardFailDetector (TDD).", + "file_type": "rationale", + "source_file": "tests/test_hard_fail.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "tests_test_kakao_local", + "label": "test_kakao_local.py", + "file_type": "code", + "source_file": "tests/test_kakao_local.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "tests_test_kakao_local_ok_response", + "label": "_ok_response()", + "file_type": "code", + "source_file": "tests/test_kakao_local.py", + "source_location": "L10", + "_origin": "ast" + }, + { + "id": "tests_test_kakao_local_test_disabled_without_key_returns_none", + "label": "test_disabled_without_key_returns_none()", + "file_type": "code", + "source_file": "tests/test_kakao_local.py", + "source_location": "L29", + "_origin": "ast" + }, + { + "id": "tests_test_kakao_local_test_search_parses_first_document", + "label": "test_search_parses_first_document()", + "file_type": "code", + "source_file": "tests/test_kakao_local.py", + "source_location": "L35", + "_origin": "ast" + }, + { + "id": "tests_test_kakao_local_test_result_is_cached", + "label": "test_result_is_cached()", + "file_type": "code", + "source_file": "tests/test_kakao_local.py", + "source_location": "L46", + "_origin": "ast" + }, + { + "id": "tests_test_kakao_local_test_empty_documents_returns_none", + "label": "test_empty_documents_returns_none()", + "file_type": "code", + "source_file": "tests/test_kakao_local.py", + "source_location": "L55", + "_origin": "ast" + }, + { + "id": "tests_test_kakao_local_test_http_error_falls_back_to_none", + "label": "test_http_error_falls_back_to_none()", + "file_type": "code", + "source_file": "tests/test_kakao_local.py", + "source_location": "L64", + "_origin": "ast" + }, + { + "id": "tests_test_kakao_local_multi_response", + "label": "_multi_response()", + "file_type": "code", + "source_file": "tests/test_kakao_local.py", + "source_location": "L73", + "_origin": "ast" + }, + { + "id": "tests_test_kakao_local_test_search_keyword_list_parses_all", + "label": "test_search_keyword_list_parses_all()", + "file_type": "code", + "source_file": "tests/test_kakao_local.py", + "source_location": "L87", + "_origin": "ast" + }, + { + "id": "tests_test_kakao_local_test_search_keyword_list_disabled_returns_empty", + "label": "test_search_keyword_list_disabled_returns_empty()", + "file_type": "code", + "source_file": "tests/test_kakao_local.py", + "source_location": "L96", + "_origin": "ast" + }, + { + "id": "tests_test_kakao_local_address_response", + "label": "_address_response()", + "file_type": "code", + "source_file": "tests/test_kakao_local.py", + "source_location": "L101", + "_origin": "ast" + }, + { + "id": "tests_test_kakao_local_test_geocode_address_parses_lat_lng", + "label": "test_geocode_address_parses_lat_lng()", + "file_type": "code", + "source_file": "tests/test_kakao_local.py", + "source_location": "L116", + "_origin": "ast" + }, + { + "id": "tests_test_kakao_local_test_geocode_address_disabled_without_key_returns_none", + "label": "test_geocode_address_disabled_without_key_returns_none()", + "file_type": "code", + "source_file": "tests/test_kakao_local.py", + "source_location": "L124", + "_origin": "ast" + }, + { + "id": "tests_test_kakao_local_test_geocode_address_is_cached", + "label": "test_geocode_address_is_cached()", + "file_type": "code", + "source_file": "tests/test_kakao_local.py", + "source_location": "L129", + "_origin": "ast" + }, + { + "id": "tests_test_kakao_local_test_geocode_address_empty_documents_returns_none", + "label": "test_geocode_address_empty_documents_returns_none()", + "file_type": "code", + "source_file": "tests/test_kakao_local.py", + "source_location": "L138", + "_origin": "ast" + }, + { + "id": "tests_test_kakao_local_test_geocode_address_http_error_falls_back_to_none", + "label": "test_geocode_address_http_error_falls_back_to_none()", + "file_type": "code", + "source_file": "tests/test_kakao_local.py", + "source_location": "L147", + "_origin": "ast" + }, + { + "id": "tests_test_kakao_local_rationale_1", + "label": "KakaoLocalClient \ud14c\uc2a4\ud2b8 (\uc2e4\uc81c API \ud638\ucd9c X \u2014 \ubaa8\ub450 mock).", + "file_type": "rationale", + "source_file": "tests/test_kakao_local.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "tests_test_kakao_matrix", + "label": "test_kakao_matrix.py", + "file_type": "code", + "source_file": "tests/test_kakao_matrix.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "tests_test_kakao_matrix_place", + "label": "_place()", + "file_type": "code", + "source_file": "tests/test_kakao_matrix.py", + "source_location": "L13", + "_origin": "ast" + }, + { + "id": "tests_test_kakao_matrix_ok_response", + "label": "_ok_response()", + "file_type": "code", + "source_file": "tests/test_kakao_matrix.py", + "source_location": "L20", + "_origin": "ast" + }, + { + "id": "tests_test_kakao_matrix_httpx_sync_client", + "label": "_httpx_sync_client()", + "file_type": "code", + "source_file": "tests/test_kakao_matrix.py", + "source_location": "L33", + "_origin": "ast" + }, + { + "id": "tests_test_kakao_matrix_testsamepoint", + "label": "TestSamePoint", + "file_type": "code", + "source_file": "tests/test_kakao_matrix.py", + "source_location": "L47", + "_origin": "ast" + }, + { + "id": "tests_test_kakao_matrix_testsamepoint_test_same_coords_returns_zero", + "label": ".test_same_coords_returns_zero()", + "file_type": "code", + "source_file": "tests/test_kakao_matrix.py", + "source_location": "L48", + "_origin": "ast" + }, + { + "id": "tests_test_kakao_matrix_testapicall", + "label": "TestApiCall", + "file_type": "code", + "source_file": "tests/test_kakao_matrix.py", + "source_location": "L58", + "_origin": "ast" + }, + { + "id": "tests_test_kakao_matrix_testapicall_test_sync_call_populates_cache", + "label": ".test_sync_call_populates_cache()", + "file_type": "code", + "source_file": "tests/test_kakao_matrix.py", + "source_location": "L59", + "_origin": "ast" + }, + { + "id": "tests_test_kakao_matrix_testapicall_test_get_travel_time_uses_cache_after_sync_call", + "label": ".test_get_travel_time_uses_cache_after_sync_call()", + "file_type": "code", + "source_file": "tests/test_kakao_matrix.py", + "source_location": "L71", + "_origin": "ast" + }, + { + "id": "tests_test_kakao_matrix_testapicall_test_get_travel_time_second_call_cache_hit", + "label": ".test_get_travel_time_second_call_cache_hit()", + "file_type": "code", + "source_file": "tests/test_kakao_matrix.py", + "source_location": "L85", + "_origin": "ast" + }, + { + "id": "tests_test_kakao_matrix_testapicall_test_reverse_direction_also_cached", + "label": ".test_reverse_direction_also_cached()", + "file_type": "code", + "source_file": "tests/test_kakao_matrix.py", + "source_location": "L98", + "_origin": "ast" + }, + { + "id": "tests_test_kakao_matrix_testquotaexhaustion", + "label": "TestQuotaExhaustion", + "file_type": "code", + "source_file": "tests/test_kakao_matrix.py", + "source_location": "L116", + "_origin": "ast" + }, + { + "id": "tests_test_kakao_matrix_testquotaexhaustion_test_429_sets_quota_exhausted", + "label": ".test_429_sets_quota_exhausted()", + "file_type": "code", + "source_file": "tests/test_kakao_matrix.py", + "source_location": "L117", + "_origin": "ast" + }, + { + "id": "tests_test_kakao_matrix_testquotaexhaustion_test_get_travel_time_haversine_fallback_when_no_cache", + "label": ".test_get_travel_time_haversine_fallback_when_no_cache()", + "file_type": "code", + "source_file": "tests/test_kakao_matrix.py", + "source_location": "L132", + "_origin": "ast" + }, + { + "id": "tests_test_kakao_matrix_testquotaexhaustion_test_after_quota_exhausted_get_travel_time_falls_back", + "label": ".test_after_quota_exhausted_get_travel_time_falls_back()", + "file_type": "code", + "source_file": "tests/test_kakao_matrix.py", + "source_location": "L141", + "_origin": "ast" + }, + { + "id": "tests_test_kakao_matrix_testautherror", + "label": "TestAuthError", + "file_type": "code", + "source_file": "tests/test_kakao_matrix.py", + "source_location": "L155", + "_origin": "ast" + }, + { + "id": "tests_test_kakao_matrix_testautherror_test_401_raises", + "label": ".test_401_raises()", + "file_type": "code", + "source_file": "tests/test_kakao_matrix.py", + "source_location": "L156", + "_origin": "ast" + }, + { + "id": "tests_test_kakao_matrix_testcachepersistence", + "label": "TestCachePersistence", + "file_type": "code", + "source_file": "tests/test_kakao_matrix.py", + "source_location": "L174", + "_origin": "ast" + }, + { + "id": "tests_test_kakao_matrix_testcachepersistence_test_save_and_load_cache", + "label": ".test_save_and_load_cache()", + "file_type": "code", + "source_file": "tests/test_kakao_matrix.py", + "source_location": "L175", + "_origin": "ast" + }, + { + "id": "tests_test_kakao_matrix_testfromenv", + "label": "TestFromEnv", + "file_type": "code", + "source_file": "tests/test_kakao_matrix.py", + "source_location": "L201", + "_origin": "ast" + }, + { + "id": "tests_test_kakao_matrix_testfromenv_test_no_key_raises", + "label": ".test_no_key_raises()", + "file_type": "code", + "source_file": "tests/test_kakao_matrix.py", + "source_location": "L202", + "_origin": "ast" + }, + { + "id": "tests_test_kakao_matrix_testfromenv_test_uses_mobility_key_first", + "label": ".test_uses_mobility_key_first()", + "file_type": "code", + "source_file": "tests/test_kakao_matrix.py", + "source_location": "L208", + "_origin": "ast" + }, + { + "id": "tests_test_kakao_matrix_testfromenv_test_falls_back_to_rest_key", + "label": ".test_falls_back_to_rest_key()", + "file_type": "code", + "source_file": "tests/test_kakao_matrix.py", + "source_location": "L214", + "_origin": "ast" + }, + { + "id": "tests_test_kakao_matrix_testasyncprefetch", + "label": "TestAsyncPrefetch", + "file_type": "code", + "source_file": "tests/test_kakao_matrix.py", + "source_location": "L225", + "_origin": "ast" + }, + { + "id": "tests_test_kakao_matrix_testasyncprefetch_test_aprefetch_populates_cache_and_hit_on_get", + "label": ".test_aprefetch_populates_cache_and_hit_on_get()", + "file_type": "code", + "source_file": "tests/test_kakao_matrix.py", + "source_location": "L226", + "_origin": "ast" + }, + { + "id": "tests_test_kakao_matrix_testasyncprefetch_test_aprefetch_deduplicates_bidirectional", + "label": ".test_aprefetch_deduplicates_bidirectional()", + "file_type": "code", + "source_file": "tests/test_kakao_matrix.py", + "source_location": "L241", + "_origin": "ast" + }, + { + "id": "tests_test_kakao_matrix_rationale_1", + "label": "KakaoMobilityMatrix \ud14c\uc2a4\ud2b8 (\uc2e4\uc81c API \ud638\ucd9c X \u2014 \ubaa8\ub450 mock).", + "file_type": "rationale", + "source_file": "tests/test_kakao_matrix.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "tests_test_kakao_matrix_rationale_21", + "label": "\uce74\uce74\uc624 \uc815\uc0c1 \uc751\ub2f5 mock \u2014 duration 600\ucd08.", + "file_type": "rationale", + "source_file": "tests/test_kakao_matrix.py", + "source_location": "L21", + "_origin": "ast" + }, + { + "id": "tests_test_kakao_matrix_rationale_34", + "label": "httpx.Client() context manager mock.", + "file_type": "rationale", + "source_file": "tests/test_kakao_matrix.py", + "source_location": "L34", + "_origin": "ast" + }, + { + "id": "tests_test_kakao_matrix_rationale_227", + "label": "aprefetch_matrix \ud6c4 get_travel_time\uc774 \uce90\uc2dc\ub97c \uc0ac\uc6a9\ud55c\ub2e4.", + "file_type": "rationale", + "source_file": "tests/test_kakao_matrix.py", + "source_location": "L227", + "_origin": "ast" + }, + { + "id": "tests_test_kakao_matrix_rationale_242", + "label": "A\u2192B \uce90\uc2dc \uc874\uc7ac \uc2dc B\u2192A prefetch\ub294 \uc2a4\ud0b5\ub41c\ub2e4.", + "file_type": "rationale", + "source_file": "tests/test_kakao_matrix.py", + "source_location": "L242", + "_origin": "ast" + }, + { + "id": "tests_test_party_config", + "label": "test_party_config.py", + "file_type": "code", + "source_file": "tests/test_party_config.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "tests_test_party_config_testpartyprofiles", + "label": "TestPartyProfiles", + "file_type": "code", + "source_file": "tests/test_party_config.py", + "source_location": "L9", + "_origin": "ast" + }, + { + "id": "tests_test_party_config_testpartyprofiles_test_all_types_defined", + "label": ".test_all_types_defined()", + "file_type": "code", + "source_file": "tests/test_party_config.py", + "source_location": "L10", + "_origin": "ast" + }, + { + "id": "tests_test_party_config_testpartyprofiles_test_friends_speed_factor_one", + "label": ".test_friends_speed_factor_one()", + "file_type": "code", + "source_file": "tests/test_party_config.py", + "source_location": "L14", + "_origin": "ast" + }, + { + "id": "tests_test_party_config_testpartyprofiles_test_baby_speed_factor_below_one", + "label": ".test_baby_speed_factor_below_one()", + "file_type": "code", + "source_file": "tests/test_party_config.py", + "source_location": "L17", + "_origin": "ast" + }, + { + "id": "tests_test_party_config_testpartyprofiles_test_elderly_speed_factor_below_one", + "label": ".test_elderly_speed_factor_below_one()", + "file_type": "code", + "source_file": "tests/test_party_config.py", + "source_location": "L20", + "_origin": "ast" + }, + { + "id": "tests_test_party_config_testpartyprofiles_test_baby_fatigue_hours_lower_than_friends", + "label": ".test_baby_fatigue_hours_lower_than_friends()", + "file_type": "code", + "source_file": "tests/test_party_config.py", + "source_location": "L23", + "_origin": "ast" + }, + { + "id": "tests_test_party_config_testpartyprofiles_test_elderly_fatigue_hours_lower_than_friends", + "label": ".test_elderly_fatigue_hours_lower_than_friends()", + "file_type": "code", + "source_file": "tests/test_party_config.py", + "source_location": "L28", + "_origin": "ast" + }, + { + "id": "tests_test_party_config_testpartyprofiles_test_family_fatigue_between_friends_and_baby", + "label": ".test_family_fatigue_between_friends_and_baby()", + "file_type": "code", + "source_file": "tests/test_party_config.py", + "source_location": "L33", + "_origin": "ast" + }, + { + "id": "tests_test_party_config_testpartyprofiles_test_unknown_type_returns_default", + "label": ".test_unknown_type_returns_default()", + "file_type": "code", + "source_file": "tests/test_party_config.py", + "source_location": "L39", + "_origin": "ast" + }, + { + "id": "tests_test_party_config_testpartyprofiles_test_profile_is_frozen", + "label": ".test_profile_is_frozen()", + "file_type": "code", + "source_file": "tests/test_party_config.py", + "source_location": "L44", + "_origin": "ast" + }, + { + "id": "tests_test_party_config_testpartyprofilevalues", + "label": "TestPartyProfileValues", + "file_type": "code", + "source_file": "tests/test_party_config.py", + "source_location": "L50", + "_origin": "ast" + }, + { + "id": "tests_test_party_config_testpartyprofilevalues_test_friends_fatigue_12h", + "label": ".test_friends_fatigue_12h()", + "file_type": "code", + "source_file": "tests/test_party_config.py", + "source_location": "L51", + "_origin": "ast" + }, + { + "id": "tests_test_party_config_testpartyprofilevalues_test_baby_fatigue_8h", + "label": ".test_baby_fatigue_8h()", + "file_type": "code", + "source_file": "tests/test_party_config.py", + "source_location": "L54", + "_origin": "ast" + }, + { + "id": "tests_test_party_config_testpartyprofilevalues_test_elderly_fatigue_8h", + "label": ".test_elderly_fatigue_8h()", + "file_type": "code", + "source_file": "tests/test_party_config.py", + "source_location": "L57", + "_origin": "ast" + }, + { + "id": "tests_test_party_config_testpartyprofilevalues_test_family_fatigue_10h", + "label": ".test_family_fatigue_10h()", + "file_type": "code", + "source_file": "tests/test_party_config.py", + "source_location": "L60", + "_origin": "ast" + }, + { + "id": "tests_test_party_config_testpartyprofilevalues_test_baby_speed_factor_is_point_eight", + "label": ".test_baby_speed_factor_is_point_eight()", + "file_type": "code", + "source_file": "tests/test_party_config.py", + "source_location": "L63", + "_origin": "ast" + }, + { + "id": "tests_test_party_config_testpartyprofilevalues_test_family_speed_factor_is_point_nine", + "label": ".test_family_speed_factor_is_point_nine()", + "file_type": "code", + "source_file": "tests/test_party_config.py", + "source_location": "L66", + "_origin": "ast" + }, + { + "id": "tests_test_party_config_teststrainthresholdlogic", + "label": "TestStrainThresholdLogic", + "file_type": "code", + "source_file": "tests/test_party_config.py", + "source_location": "L70", + "_origin": "ast" + }, + { + "id": "tests_test_party_config_teststrainthresholdlogic_test_baby_threshold_lower_than_friends", + "label": ".test_baby_threshold_lower_than_friends()", + "file_type": "code", + "source_file": "tests/test_party_config.py", + "source_location": "L75", + "_origin": "ast" + }, + { + "id": "tests_test_party_config_teststrainthresholdlogic_test_baby_threshold_is_24km", + "label": ".test_baby_threshold_is_24km()", + "file_type": "code", + "source_file": "tests/test_party_config.py", + "source_location": "L80", + "_origin": "ast" + }, + { + "id": "tests_test_party_config_teststrainthresholdlogic_test_friends_threshold_unchanged", + "label": ".test_friends_threshold_unchanged()", + "file_type": "code", + "source_file": "tests/test_party_config.py", + "source_location": "L84", + "_origin": "ast" + }, + { + "id": "tests_test_party_config_rationale_1", + "label": "PartyProfile \uc218\ub7c9\ud654 \ub85c\uc9c1 \ud14c\uc2a4\ud2b8.", + "file_type": "rationale", + "source_file": "tests/test_party_config.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "tests_test_party_config_rationale_71", + "label": "speed_factor\uac00 \uccb4\ub825 \ubd80\ub2f4 \uc784\uacc4\uc5d0 \uc62c\ubc14\ub974\uac8c \ubc18\uc601\ub418\ub294\uc9c0 \ud655\uc778.", + "file_type": "rationale", + "source_file": "tests/test_party_config.py", + "source_location": "L71", + "_origin": "ast" + }, + { + "id": "tests_test_pipeline_orchestrator", + "label": "test_pipeline_orchestrator.py", + "file_type": "code", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "tests_test_pipeline_orchestrator_make_poi", + "label": "make_poi()", + "file_type": "code", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L17", + "_origin": "ast" + }, + { + "id": "tests_test_pipeline_orchestrator_make_plan", + "label": "make_plan()", + "file_type": "code", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L33", + "_origin": "ast" + }, + { + "id": "tests_test_pipeline_orchestrator_make_multi_day_plan", + "label": "make_multi_day_plan()", + "file_type": "code", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L47", + "_origin": "ast" + }, + { + "id": "tests_test_pipeline_orchestrator_make_empty_bonus_engine", + "label": "make_empty_bonus_engine()", + "file_type": "code", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L56", + "_origin": "ast" + }, + { + "id": "tests_test_pipeline_orchestrator_py_fixture", + "label": "fixture", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast" + }, + { + "id": "tests_test_pipeline_orchestrator_pipeline", + "label": "pipeline()", + "file_type": "code", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L61", + "_origin": "ast" + }, + { + "id": "tests_test_pipeline_orchestrator_sample_pois", + "label": "sample_pois()", + "file_type": "code", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L66", + "_origin": "ast" + }, + { + "id": "tests_test_pipeline_orchestrator_sample_plan", + "label": "sample_plan()", + "file_type": "code", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L76", + "_origin": "ast" + }, + { + "id": "tests_test_pipeline_orchestrator_testtovrptwday", + "label": "TestToVrptwDay", + "file_type": "code", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L84", + "_origin": "ast" + }, + { + "id": "tests_test_pipeline_orchestrator_testtovrptwday_test_converts_poi_fields", + "label": ".test_converts_poi_fields()", + "file_type": "code", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L85", + "_origin": "ast" + }, + { + "id": "tests_test_pipeline_orchestrator_testtovrptwday_test_is_depot_false", + "label": ".test_is_depot_false()", + "file_type": "code", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L94", + "_origin": "ast" + }, + { + "id": "tests_test_pipeline_orchestrator_testpipelinebasic", + "label": "TestPipelineBasic", + "file_type": "code", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L104", + "_origin": "ast" + }, + { + "id": "tests_test_pipeline_orchestrator_testpipelinebasic_test_returns_validation_result", + "label": ".test_returns_validation_result()", + "file_type": "code", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L105", + "_origin": "ast" + }, + { + "id": "tests_test_pipeline_orchestrator_testpipelinebasic_test_final_score_in_range", + "label": ".test_final_score_in_range()", + "file_type": "code", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L113", + "_origin": "ast" + }, + { + "id": "tests_test_pipeline_orchestrator_testpipelinebasic_test_plan_id_matches", + "label": ".test_plan_id_matches()", + "file_type": "code", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L121", + "_origin": "ast" + }, + { + "id": "tests_test_pipeline_orchestrator_testpipelinebasic_test_scores_populated", + "label": ".test_scores_populated()", + "file_type": "code", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L129", + "_origin": "ast" + }, + { + "id": "tests_test_pipeline_orchestrator_testpipelinebasic_test_empty_pois_returns_zero_score", + "label": ".test_empty_pois_returns_zero_score()", + "file_type": "code", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L138", + "_origin": "ast" + }, + { + "id": "tests_test_pipeline_orchestrator_testpipelinebasic_test_base_score_populated", + "label": ".test_base_score_populated()", + "file_type": "code", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L143", + "_origin": "ast" + }, + { + "id": "tests_test_pipeline_orchestrator_testpipelinehardfail", + "label": "TestPipelineHardFail", + "file_type": "code", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L156", + "_origin": "ast" + }, + { + "id": "tests_test_pipeline_orchestrator_testpipelinehardfail_test_open_hours_conflict_caps_score", + "label": ".test_open_hours_conflict_caps_score()", + "file_type": "code", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L157", + "_origin": "ast" + }, + { + "id": "tests_test_pipeline_orchestrator_testpipelinehardfail_test_no_hard_fail_score_above_59_possible", + "label": ".test_no_hard_fail_score_above_59_possible()", + "file_type": "code", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L173", + "_origin": "ast" + }, + { + "id": "tests_test_pipeline_orchestrator_testpipelinehardfail_test_hard_fail_day_index_matches_offending_day", + "label": ".test_hard_fail_day_index_matches_offending_day()", + "file_type": "code", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L181", + "_origin": "ast" + }, + { + "id": "tests_test_pipeline_orchestrator_testpipelinehardfail_test_alternatives_populated_from_explain_engine", + "label": ".test_alternatives_populated_from_explain_engine()", + "file_type": "code", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L196", + "_origin": "ast" + }, + { + "id": "tests_test_pipeline_orchestrator_testpipelinehardfail_test_alternatives_not_computed_without_hard_fails", + "label": ".test_alternatives_not_computed_without_hard_fails()", + "file_type": "code", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L215", + "_origin": "ast" + }, + { + "id": "tests_test_pipeline_orchestrator_testpipelinebreakdown", + "label": "TestPipelineBreakdown", + "file_type": "code", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L225", + "_origin": "ast" + }, + { + "id": "tests_test_pipeline_orchestrator_testpipelinebreakdown_test_breakdown_fields_are_dicts", + "label": ".test_breakdown_fields_are_dicts()", + "file_type": "code", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L226", + "_origin": "ast" + }, + { + "id": "tests_test_pipeline_orchestrator_testpipelinebreakdown_test_wellness_bonus_reflected_in_breakdown", + "label": ".test_wellness_bonus_reflected_in_breakdown()", + "file_type": "code", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L235", + "_origin": "ast" + }, + { + "id": "tests_test_pipeline_orchestrator_testpipelinebreakdown_test_accessibility_bonus_for_accessible_party", + "label": ".test_accessibility_bonus_for_accessible_party()", + "file_type": "code", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L246", + "_origin": "ast" + }, + { + "id": "tests_test_pipeline_orchestrator_testpipelinebreakdown_test_pet_friendly_bonus_when_enabled", + "label": ".test_pet_friendly_bonus_when_enabled()", + "file_type": "code", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L257", + "_origin": "ast" + }, + { + "id": "tests_test_pipeline_orchestrator_testpipelinebreakdown_test_pet_friendly_bonus_absent_when_disabled", + "label": ".test_pet_friendly_bonus_absent_when_disabled()", + "file_type": "code", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L266", + "_origin": "ast" + }, + { + "id": "tests_test_pipeline_orchestrator_testpipelinebreakdown_test_wellness_matched_exposed_on_result", + "label": ".test_wellness_matched_exposed_on_result()", + "file_type": "code", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L274", + "_origin": "ast" + }, + { + "id": "tests_test_pipeline_orchestrator_testpipelinemultiday", + "label": "TestPipelineMultiDay", + "file_type": "code", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L289", + "_origin": "ast" + }, + { + "id": "tests_test_pipeline_orchestrator_testpipelinemultiday_test_multi_day_runs_without_error", + "label": ".test_multi_day_runs_without_error()", + "file_type": "code", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L290", + "_origin": "ast" + }, + { + "id": "tests_test_pipeline_orchestrator_testpipelinemultiday_test_sigungu_codes_accepted", + "label": ".test_sigungu_codes_accepted()", + "file_type": "code", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L301", + "_origin": "ast" + }, + { + "id": "tests_test_pipeline_orchestrator_testpipelinevrptw", + "label": "TestPipelineVRPTW", + "file_type": "code", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L318", + "_origin": "ast" + }, + { + "id": "tests_test_pipeline_orchestrator_testpipelinevrptw_test_vrptw_fields_present", + "label": ".test_vrptw_fields_present()", + "file_type": "code", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L319", + "_origin": "ast" + }, + { + "id": "tests_test_pipeline_orchestrator_testpipelinevrptw_test_vrptw_efficiency_gap_is_float_or_none", + "label": ".test_vrptw_efficiency_gap_is_float_or_none()", + "file_type": "code", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L329", + "_origin": "ast" + }, + { + "id": "tests_test_pipeline_orchestrator_testpipelinevrptw_test_vrptw_efficiency_gap_non_negative", + "label": ".test_vrptw_efficiency_gap_non_negative()", + "file_type": "code", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L337", + "_origin": "ast" + }, + { + "id": "tests_test_pipeline_orchestrator_testpipelinevrptw_test_vrptw_optimal_route_per_day_count", + "label": ".test_vrptw_optimal_route_per_day_count()", + "file_type": "code", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L346", + "_origin": "ast" + }, + { + "id": "tests_test_pipeline_orchestrator_testpipelinevrptw_test_vrptw_penalty_in_breakdown_when_gap_exceeds_threshold", + "label": ".test_vrptw_penalty_in_breakdown_when_gap_exceeds_threshold()", + "file_type": "code", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L359", + "_origin": "ast" + }, + { + "id": "tests_test_pipeline_orchestrator_testpipelinevrptw_test_vrptw_penalty_does_not_double_count_with_single_poi", + "label": ".test_vrptw_penalty_does_not_double_count_with_single_poi()", + "file_type": "code", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L373", + "_origin": "ast" + }, + { + "id": "tests_test_pipeline_orchestrator_testpipelinerepairgainestimation", + "label": "TestPipelineRepairGainEstimation", + "file_type": "code", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L385", + "_origin": "ast" + }, + { + "id": "tests_test_pipeline_orchestrator_testpipelinerepairgainestimation_test_deletion_suggestion_carries_gain_and_resolves_flag", + "label": ".test_deletion_suggestion_carries_gain_and_resolves_flag()", + "file_type": "code", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L386", + "_origin": "ast" + }, + { + "id": "tests_test_pipeline_orchestrator_testpipelinerepairgainestimation_test_no_repair_no_gain_fields_needed", + "label": ".test_no_repair_no_gain_fields_needed()", + "file_type": "code", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L406", + "_origin": "ast" + }, + { + "id": "tests_test_pipeline_orchestrator_rationale_1", + "label": "Tests for ValidatorPipeline (TDD).", + "file_type": "rationale", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "tests_test_pipeline_orchestrator_rationale_387", + "label": "\uc9c0\ub9ac\uc801 \uc774\uc0c1\uce58\uc774\uc790 Hard Fail \uc720\ubc1c POI\ub97c \uc0ad\uc81c\ud558\uba74 \uc810\uc218\uac00 \uc624\ub974\uace0 \ubb38\uc81c\uac00 \ud574\uc18c\ub3fc\uc57c \ud55c\ub2e4.", + "file_type": "rationale", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L387", + "_origin": "ast" + }, + { + "id": "tests_test_pipeline_orchestrator_rationale_407", + "label": "Hard Fail\uc774 \uc5c6\uc73c\uba74 repair \uc790\uccb4\uac00 \ube44\uc5b4 \uc788\uc5b4\uc57c \ud55c\ub2e4 (\uae30\uc874 \ub3d9\uc791 \uc720\uc9c0).", + "file_type": "rationale", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L407", + "_origin": "ast" + }, + { + "id": "tests_test_plan_extractor", + "label": "test_plan_extractor.py", + "file_type": "code", + "source_file": "tests/test_plan_extractor.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "tests_test_plan_extractor_client_returning", + "label": "_client_returning()", + "file_type": "code", + "source_file": "tests/test_plan_extractor.py", + "source_location": "L11", + "_origin": "ast" + }, + { + "id": "tests_test_plan_extractor_test_extract_from_text_parses_llm_response", + "label": "test_extract_from_text_parses_llm_response()", + "file_type": "code", + "source_file": "tests/test_plan_extractor.py", + "source_location": "L19", + "_origin": "ast" + }, + { + "id": "tests_test_plan_extractor_test_extract_from_text_strips_code_fence", + "label": "test_extract_from_text_strips_code_fence()", + "file_type": "code", + "source_file": "tests/test_plan_extractor.py", + "source_location": "L32", + "_origin": "ast" + }, + { + "id": "tests_test_plan_extractor_test_extract_from_text_empty_raises", + "label": "test_extract_from_text_empty_raises()", + "file_type": "code", + "source_file": "tests/test_plan_extractor.py", + "source_location": "L41", + "_origin": "ast" + }, + { + "id": "tests_test_plan_extractor_test_extract_from_text_without_client_falls_back_to_heuristic", + "label": "test_extract_from_text_without_client_falls_back_to_heuristic()", + "file_type": "code", + "source_file": "tests/test_plan_extractor.py", + "source_location": "L47", + "_origin": "ast" + }, + { + "id": "tests_test_plan_extractor_test_extract_from_document_without_client_raises", + "label": "test_extract_from_document_without_client_raises()", + "file_type": "code", + "source_file": "tests/test_plan_extractor.py", + "source_location": "L58", + "_origin": "ast" + }, + { + "id": "tests_test_plan_extractor_test_extract_from_document_empty_bytes_raises", + "label": "test_extract_from_document_empty_bytes_raises()", + "file_type": "code", + "source_file": "tests/test_plan_extractor.py", + "source_location": "L64", + "_origin": "ast" + }, + { + "id": "tests_test_plan_extractor_test_extract_from_document_sends_document_block_for_pdf", + "label": "test_extract_from_document_sends_document_block_for_pdf()", + "file_type": "code", + "source_file": "tests/test_plan_extractor.py", + "source_location": "L70", + "_origin": "ast" + }, + { + "id": "tests_test_plan_extractor_test_extract_from_document_sends_image_block_for_png", + "label": "test_extract_from_document_sends_image_block_for_png()", + "file_type": "code", + "source_file": "tests/test_plan_extractor.py", + "source_location": "L81", + "_origin": "ast" + }, + { + "id": "tests_test_plan_extractor_test_invalid_json_response_raises", + "label": "test_invalid_json_response_raises()", + "file_type": "code", + "source_file": "tests/test_plan_extractor.py", + "source_location": "L91", + "_origin": "ast" + }, + { + "id": "tests_test_plan_extractor_test_api_call_failure_raises_extraction_error", + "label": "test_api_call_failure_raises_extraction_error()", + "file_type": "code", + "source_file": "tests/test_plan_extractor.py", + "source_location": "L97", + "_origin": "ast" + }, + { + "id": "tests_test_plan_extractor_test_system_prompt_uses_prompt_caching", + "label": "test_system_prompt_uses_prompt_caching()", + "file_type": "code", + "source_file": "tests/test_plan_extractor.py", + "source_location": "L106", + "_origin": "ast" + }, + { + "id": "tests_test_plan_extractor_rationale_1", + "label": "PlanExtractor \ud14c\uc2a4\ud2b8 (\uc2e4\uc81c Claude API \ud638\ucd9c X \u2014 \ubaa8\ub450 mock).", + "file_type": "rationale", + "source_file": "tests/test_plan_extractor.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "tests_test_plan_extractor_rationale_107", + "label": "system \ud504\ub86c\ud504\ud2b8\ub294 \ub9e4 \ud638\ucd9c \ub3d9\uc77c\ud558\ubbc0\ub85c ephemeral \uce90\uc2f1 \ub300\uc0c1\uc774\uc5b4\uc57c \ud568(\uc9c0\uc5f0/\ud1a0\ud070 \uc808\uac10).", + "file_type": "rationale", + "source_file": "tests/test_plan_extractor.py", + "source_location": "L107", + "_origin": "ast" + }, + { + "id": "tests_test_region_config", + "label": "test_region_config.py", + "file_type": "code", + "source_file": "tests/test_region_config.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "tests_test_region_config_testgetthresholds", + "label": "TestGetThresholds", + "file_type": "code", + "source_file": "tests/test_region_config.py", + "source_location": "L12", + "_origin": "ast" + }, + { + "id": "tests_test_region_config_testgetthresholds_test_seoul_code_returns_high", + "label": ".test_seoul_code_returns_high()", + "file_type": "code", + "source_file": "tests/test_region_config.py", + "source_location": "L13", + "_origin": "ast" + }, + { + "id": "tests_test_region_config_testgetthresholds_test_busan_code_returns_high", + "label": ".test_busan_code_returns_high()", + "file_type": "code", + "source_file": "tests/test_region_config.py", + "source_location": "L16", + "_origin": "ast" + }, + { + "id": "tests_test_region_config_testgetthresholds_test_daegu_code_returns_medium", + "label": ".test_daegu_code_returns_medium()", + "file_type": "code", + "source_file": "tests/test_region_config.py", + "source_location": "L19", + "_origin": "ast" + }, + { + "id": "tests_test_region_config_testgetthresholds_test_rural_code_returns_low", + "label": ".test_rural_code_returns_low()", + "file_type": "code", + "source_file": "tests/test_region_config.py", + "source_location": "L22", + "_origin": "ast" + }, + { + "id": "tests_test_region_config_testgetthresholds_test_none_returns_medium", + "label": ".test_none_returns_medium()", + "file_type": "code", + "source_file": "tests/test_region_config.py", + "source_location": "L25", + "_origin": "ast" + }, + { + "id": "tests_test_region_config_testgetthresholds_test_unknown_code_returns_low", + "label": ".test_unknown_code_returns_low()", + "file_type": "code", + "source_file": "tests/test_region_config.py", + "source_location": "L28", + "_origin": "ast" + }, + { + "id": "tests_test_region_config_testgetthresholds_test_high_dist_warn_smaller_than_low", + "label": ".test_high_dist_warn_smaller_than_low()", + "file_type": "code", + "source_file": "tests/test_region_config.py", + "source_location": "L31", + "_origin": "ast" + }, + { + "id": "tests_test_region_config_testgetthresholds_test_high_physical_strain_smaller_than_low", + "label": ".test_high_physical_strain_smaller_than_low()", + "file_type": "code", + "source_file": "tests/test_region_config.py", + "source_location": "L34", + "_origin": "ast" + }, + { + "id": "tests_test_region_config_testgetthresholds_test_tier_fields_ordered", + "label": ".test_tier_fields_ordered()", + "file_type": "code", + "source_file": "tests/test_region_config.py", + "source_location": "L37", + "_origin": "ast" + }, + { + "id": "tests_test_region_config_rationale_1", + "label": "RegionThresholds \uc720\ub2db \ud14c\uc2a4\ud2b8.", + "file_type": "rationale", + "source_file": "tests/test_region_config.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "tests_test_repair", + "label": "test_repair.py", + "file_type": "code", + "source_file": "tests/test_repair.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "tests_test_repair_repairengine", + "label": "RepairEngine()", + "file_type": "code", + "source_file": "tests/test_repair.py", + "source_location": "L10", + "_origin": "ast" + }, + { + "id": "repairengineclass", + "label": "_RepairEngineClass", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast" + }, + { + "id": "tests_test_repair_poi", + "label": "_poi()", + "file_type": "code", + "source_file": "tests/test_repair.py", + "source_location": "L15", + "_origin": "ast" + }, + { + "id": "tests_test_repair_plan", + "label": "_plan()", + "file_type": "code", + "source_file": "tests/test_repair.py", + "source_location": "L31", + "_origin": "ast" + }, + { + "id": "tests_test_repair_fail", + "label": "_fail()", + "file_type": "code", + "source_file": "tests/test_repair.py", + "source_location": "L42", + "_origin": "ast" + }, + { + "id": "tests_test_repair_testrepairenginenoop", + "label": "TestRepairEngineNoop", + "file_type": "code", + "source_file": "tests/test_repair.py", + "source_location": "L53", + "_origin": "ast" + }, + { + "id": "tests_test_repair_testrepairenginenoop_test_empty_when_no_hard_fails", + "label": ".test_empty_when_no_hard_fails()", + "file_type": "code", + "source_file": "tests/test_repair.py", + "source_location": "L54", + "_origin": "ast" + }, + { + "id": "tests_test_repair_testrepairenginenoop_test_empty_when_pois_list_is_empty", + "label": ".test_empty_when_pois_list_is_empty()", + "file_type": "code", + "source_file": "tests/test_repair.py", + "source_location": "L60", + "_origin": "ast" + }, + { + "id": "tests_test_repair_outlier_pois", + "label": "_outlier_pois()", + "file_type": "code", + "source_file": "tests/test_repair.py", + "source_location": "L74", + "_origin": "ast" + }, + { + "id": "tests_test_repair_testdeletionsuggestion", + "label": "TestDeletionSuggestion", + "file_type": "code", + "source_file": "tests/test_repair.py", + "source_location": "L88", + "_origin": "ast" + }, + { + "id": "tests_test_repair_testdeletionsuggestion_test_identifies_geometric_outlier", + "label": ".test_identifies_geometric_outlier()", + "file_type": "code", + "source_file": "tests/test_repair.py", + "source_location": "L89", + "_origin": "ast" + }, + { + "id": "tests_test_repair_testdeletionsuggestion_test_outlier_deletion_has_positive_savings", + "label": ".test_outlier_deletion_has_positive_savings()", + "file_type": "code", + "source_file": "tests/test_repair.py", + "source_location": "L97", + "_origin": "ast" + }, + { + "id": "tests_test_repair_testdeletionsuggestion_test_no_deletion_for_two_pois", + "label": ".test_no_deletion_for_two_pois()", + "file_type": "code", + "source_file": "tests/test_repair.py", + "source_location": "L104", + "_origin": "ast" + }, + { + "id": "tests_test_repair_testdeletionsuggestion_test_deletion_reason_mentions_candidate", + "label": ".test_deletion_reason_mentions_candidate()", + "file_type": "code", + "source_file": "tests/test_repair.py", + "source_location": "L110", + "_origin": "ast" + }, + { + "id": "tests_test_repair_testdeletionsuggestion_test_deletion_recommends_nearby_restaurant_when_available", + "label": ".test_deletion_recommends_nearby_restaurant_when_available()", + "file_type": "code", + "source_file": "tests/test_repair.py", + "source_location": "L117", + "_origin": "ast" + }, + { + "id": "tests_test_repair_testdeletionsuggestion_test_deletion_explains_when_no_restaurant_nearby", + "label": ".test_deletion_explains_when_no_restaurant_nearby()", + "file_type": "code", + "source_file": "tests/test_repair.py", + "source_location": "L127", + "_origin": "ast" + }, + { + "id": "tests_test_repair_testtimetunesuggestion", + "label": "TestTimeTuneSuggestion", + "file_type": "code", + "source_file": "tests/test_repair.py", + "source_location": "L140", + "_origin": "ast" + }, + { + "id": "tests_test_repair_testtimetunesuggestion_test_no_tune_when_within_limit", + "label": ".test_no_tune_when_within_limit()", + "file_type": "code", + "source_file": "tests/test_repair.py", + "source_location": "L141", + "_origin": "ast" + }, + { + "id": "tests_test_repair_testtimetunesuggestion_test_tune_suggested_when_over_limit", + "label": ".test_tune_suggested_when_over_limit()", + "file_type": "code", + "source_file": "tests/test_repair.py", + "source_location": "L149", + "_origin": "ast" + }, + { + "id": "tests_test_repair_testtimetunesuggestion_test_adjusted_durations_above_minimum", + "label": ".test_adjusted_durations_above_minimum()", + "file_type": "code", + "source_file": "tests/test_repair.py", + "source_location": "L158", + "_origin": "ast" + }, + { + "id": "tests_test_repair_testresultmodel", + "label": "TestResultModel", + "file_type": "code", + "source_file": "tests/test_repair.py", + "source_location": "L173", + "_origin": "ast" + }, + { + "id": "tests_test_repair_testresultmodel_test_to_dict_is_serializable", + "label": ".test_to_dict_is_serializable()", + "file_type": "code", + "source_file": "tests/test_repair.py", + "source_location": "L174", + "_origin": "ast" + }, + { + "id": "tests_test_repair_testresultmodel_test_is_empty_true_when_no_suggestions", + "label": ".test_is_empty_true_when_no_suggestions()", + "file_type": "code", + "source_file": "tests/test_repair.py", + "source_location": "L182", + "_origin": "ast" + }, + { + "id": "tests_test_repair_testresultmodel_test_is_empty_false_when_has_deletion", + "label": ".test_is_empty_false_when_has_deletion()", + "file_type": "code", + "source_file": "tests/test_repair.py", + "source_location": "L188", + "_origin": "ast" + }, + { + "id": "tests_test_repair_testtotalestimatedgain", + "label": "TestTotalEstimatedGain", + "file_type": "code", + "source_file": "tests/test_repair.py", + "source_location": "L199", + "_origin": "ast" + }, + { + "id": "tests_test_repair_testtotalestimatedgain_test_sums_across_different_days", + "label": ".test_sums_across_different_days()", + "file_type": "code", + "source_file": "tests/test_repair.py", + "source_location": "L200", + "_origin": "ast" + }, + { + "id": "tests_test_repair_testtotalestimatedgain_test_takes_max_of_alternatives_on_same_day", + "label": ".test_takes_max_of_alternatives_on_same_day()", + "file_type": "code", + "source_file": "tests/test_repair.py", + "source_location": "L207", + "_origin": "ast" + }, + { + "id": "tests_test_repair_testtotalestimatedgain_test_zero_when_empty", + "label": ".test_zero_when_empty()", + "file_type": "code", + "source_file": "tests/test_repair.py", + "source_location": "L214", + "_origin": "ast" + }, + { + "id": "tests_test_repair_testtotalestimatedgain_test_included_in_to_dict", + "label": ".test_included_in_to_dict()", + "file_type": "code", + "source_file": "tests/test_repair.py", + "source_location": "L217", + "_origin": "ast" + }, + { + "id": "tests_test_repair_rationale_11", + "label": "\ud14c\uc2a4\ud2b8 \uc804\uc6a9 \ud329\ud1a0\ub9ac \u2014 \ube48 \uce74\ud0c8\ub85c\uadf8\ub97c \uae30\ubcf8\uac12\uc73c\ub85c \uc368\uc11c \uc2e4\uc81c CSV I/O\ub97c \ud53c\ud55c\ub2e4.", + "file_type": "rationale", + "source_file": "tests/test_repair.py", + "source_location": "L11", + "_origin": "ast" + }, + { + "id": "tests_test_repair_rationale_75", + "label": "8\uac1c POI \u2014 D(lat=38.5)\uac00 A-C, E-H(lat=37.5) \uc0ac\uc774\uc758 \uc9c0\ub9ac\uc801 \uc774\uc0c1\uce58.", + "file_type": "rationale", + "source_file": "tests/test_repair.py", + "source_location": "L75", + "_origin": "ast" + }, + { + "id": "tests_test_repair_rationale_142", + "label": "\uce5c\uad6c(720min) \uae30\uc900, \ucd1d 120min \u2192 \uc870\uc815 \ubd88\ud544\uc694.", + "file_type": "rationale", + "source_file": "tests/test_repair.py", + "source_location": "L142", + "_origin": "ast" + }, + { + "id": "tests_test_repair_rationale_150", + "label": "5 \u00d7 200min = 1000min > 720min \u2192 \ud29c\ub2dd \ud544\uc694.", + "file_type": "rationale", + "source_file": "tests/test_repair.py", + "source_location": "L150", + "_origin": "ast" + }, + { + "id": "tests_test_repair_rationale_159", + "label": "\uc870\uc815 \ud6c4 duration\uc774 \uc808\ub300 \ucd5c\uc19f\uac12(20\ubd84) \uc774\uc0c1 \ubcf4\uc7a5.", + "file_type": "rationale", + "source_file": "tests/test_repair.py", + "source_location": "L159", + "_origin": "ast" + }, + { + "id": "tests_test_resolve_poi", + "label": "test_resolve_poi.py", + "file_type": "code", + "source_file": "tests/test_resolve_poi.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "tests_test_resolve_poi_write_jeju_xlsx", + "label": "_write_jeju_xlsx()", + "file_type": "code", + "source_file": "tests/test_resolve_poi.py", + "source_location": "L19", + "_origin": "ast" + }, + { + "id": "tests_test_resolve_poi_py_fixture", + "label": "fixture", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast" + }, + { + "id": "tests_test_resolve_poi_jeju_xlsx_index", + "label": "jeju_xlsx_index()", + "file_type": "code", + "source_file": "tests/test_resolve_poi.py", + "source_location": "L29", + "_origin": "ast" + }, + { + "id": "tests_test_resolve_poi_test_jeju_index_prefers_tourapi_hours_over_legacy_text", + "label": "test_jeju_index_prefers_tourapi_hours_over_legacy_text()", + "file_type": "code", + "source_file": "tests/test_resolve_poi.py", + "source_location": "L51", + "_origin": "ast" + }, + { + "id": "tests_test_resolve_poi_test_jeju_index_sets_contentid_when_tourapi_matched", + "label": "test_jeju_index_sets_contentid_when_tourapi_matched()", + "file_type": "code", + "source_file": "tests/test_resolve_poi.py", + "source_location": "L56", + "_origin": "ast" + }, + { + "id": "tests_test_resolve_poi_test_jeju_index_falls_back_to_legacy_hours_when_unmatched", + "label": "test_jeju_index_falls_back_to_legacy_hours_when_unmatched()", + "file_type": "code", + "source_file": "tests/test_resolve_poi.py", + "source_location": "L61", + "_origin": "ast" + }, + { + "id": "tests_test_resolve_poi_test_jeju_index_sets_pet_friendly_flag_when_y", + "label": "test_jeju_index_sets_pet_friendly_flag_when_y()", + "file_type": "code", + "source_file": "tests/test_resolve_poi.py", + "source_location": "L67", + "_origin": "ast" + }, + { + "id": "tests_test_resolve_poi_test_jeju_index_defaults_pet_friendly_false_when_blank", + "label": "test_jeju_index_defaults_pet_friendly_false_when_blank()", + "file_type": "code", + "source_file": "tests/test_resolve_poi.py", + "source_location": "L72", + "_origin": "ast" + }, + { + "id": "tests_test_resolve_poi_test_resolve_poi_propagates_pet_friendly_flag", + "label": "test_resolve_poi_propagates_pet_friendly_flag()", + "file_type": "code", + "source_file": "tests/test_resolve_poi.py", + "source_location": "L77", + "_origin": "ast" + }, + { + "id": "tests_test_resolve_poi_test_geocode_fallback_used_when_keyword_search_fails", + "label": "test_geocode_fallback_used_when_keyword_search_fails()", + "file_type": "code", + "source_file": "tests/test_resolve_poi.py", + "source_location": "L94", + "_origin": "ast" + }, + { + "id": "tests_test_resolve_poi_test_seoul_fallback_when_geocode_also_fails", + "label": "test_seoul_fallback_when_geocode_also_fails()", + "file_type": "code", + "source_file": "tests/test_resolve_poi.py", + "source_location": "L110", + "_origin": "ast" + }, + { + "id": "tests_test_resolve_poi_test_resolve_coords_endpoint_returns_poi_per_place", + "label": "test_resolve_coords_endpoint_returns_poi_per_place()", + "file_type": "code", + "source_file": "tests/test_resolve_poi.py", + "source_location": "L123", + "_origin": "ast" + }, + { + "id": "tests_test_resolve_poi_rationale_1", + "label": "_resolve_poi() \uc88c\ud45c \ud574\uc11d \ud3f4\ubc31 \uc21c\uc11c \ud14c\uc2a4\ud2b8 (\uce74\ud0c8\ub85c\uadf8 \u2192 csv \u2192 kakao \ud0a4\uc6cc\ub4dc \u2192 \uc9c0\uc624\ucf54\ub529 \u2192 \uc11c\uc6b8 \ud3f4\ubc31).", + "file_type": "rationale", + "source_file": "tests/test_resolve_poi.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "tests_test_resolve_poi_rationale_30", + "label": "data/\uc81c\uc8fc\ud2b9\ubcc4\uc790\uce58\ub3c4_\ud1b5\ud569_TourAPI\ubcd1\ud569.xlsx \ub97c \uc784\uc2dc \ud30c\uc77c\ub85c \ub300\uccb4\ud574 _build_jeju_place_index()\ub97c \uaca9\ub9ac \uc2e4\ud589.", + "file_type": "rationale", + "source_file": "tests/test_resolve_poi.py", + "source_location": "L30", + "_origin": "ast" + }, + { + "id": "tests_test_resolve_poi_rationale_78", + "label": "_resolve_poi()\uac00 place dict\uc758 pet_friendly \uc18d\uc131\uc744 POI\u00b7POIInfo\ub85c \uc804\ub2ec\ud55c\ub2e4.", + "file_type": "rationale", + "source_file": "tests/test_resolve_poi.py", + "source_location": "L78", + "_origin": "ast" + }, + { + "id": "tests_test_resolve_poi_rationale_95", + "label": "\uce74\uce74\uc624 \ud0a4\uc6cc\ub4dc \uac80\uc0c9\uc774 \uc2e4\ud328\ud574\ub3c4 \uc8fc\uc18c\uac00 \uc788\uc73c\uba74 \uc9c0\uc624\ucf54\ub529\uc73c\ub85c \uc88c\ud45c\ub97c \ubcf4\uac15\ud55c\ub2e4.", + "file_type": "rationale", + "source_file": "tests/test_resolve_poi.py", + "source_location": "L95", + "_origin": "ast" + }, + { + "id": "tests_test_resolve_poi_rationale_111", + "label": "\uc9c0\uc624\ucf54\ub529\uae4c\uc9c0 \uc2e4\ud328\ud558\uba74 \uae30\uc874\uacfc \ub3d9\uc77c\ud558\uac8c \uc11c\uc6b8 \ud3f4\ubc31\uc73c\ub85c \ub5a8\uc5b4\uc9c4\ub2e4.", + "file_type": "rationale", + "source_file": "tests/test_resolve_poi.py", + "source_location": "L111", + "_origin": "ast" + }, + { + "id": "tests_test_resolve_poi_rationale_124", + "label": "POST /api/resolve-coords \u2014 Step2 \ube4c\ub354 \uc9c0\ub3c4\uc6a9 \uc88c\ud45c \uc870\ud68c (\uac80\uc99d \ud30c\uc774\ud504\ub77c\uc778 \uc5c6\uc774 \uc88c\ud45c\ub9cc).", + "file_type": "rationale", + "source_file": "tests/test_resolve_poi.py", + "source_location": "L124", + "_origin": "ast" + }, + { + "id": "tests_test_restaurant_catalog", + "label": "test_restaurant_catalog.py", + "file_type": "code", + "source_file": "tests/test_restaurant_catalog.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "tests_test_restaurant_catalog_catalog", + "label": "_catalog()", + "file_type": "code", + "source_file": "tests/test_restaurant_catalog.py", + "source_location": "L7", + "_origin": "ast" + }, + { + "id": "tests_test_restaurant_catalog_test_nearby_returns_within_radius_sorted_by_distance", + "label": "test_nearby_returns_within_radius_sorted_by_distance()", + "file_type": "code", + "source_file": "tests/test_restaurant_catalog.py", + "source_location": "L15", + "_origin": "ast" + }, + { + "id": "tests_test_restaurant_catalog_test_nearby_excludes_self", + "label": "test_nearby_excludes_self()", + "file_type": "code", + "source_file": "tests/test_restaurant_catalog.py", + "source_location": "L22", + "_origin": "ast" + }, + { + "id": "tests_test_restaurant_catalog_test_nearby_empty_when_no_restaurants_in_radius", + "label": "test_nearby_empty_when_no_restaurants_in_radius()", + "file_type": "code", + "source_file": "tests/test_restaurant_catalog.py", + "source_location": "L27", + "_origin": "ast" + }, + { + "id": "tests_test_restaurant_catalog_rationale_1", + "label": "RestaurantCatalog \uc720\ub2db \ud14c\uc2a4\ud2b8 (\uc2e4\uc81c CSV I/O \uc5c6\uc74c \u2014 \uc778\uba54\ubaa8\ub9ac \ub370\uc774\ud130 \uc0ac\uc6a9).", + "file_type": "rationale", + "source_file": "tests/test_restaurant_catalog.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "tests_test_reward_engine", + "label": "test_reward_engine.py", + "file_type": "code", + "source_file": "tests/test_reward_engine.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "tests_test_reward_engine_scores", + "label": "_scores()", + "file_type": "code", + "source_file": "tests/test_reward_engine.py", + "source_location": "L10", + "_origin": "ast" + }, + { + "id": "tests_test_reward_engine_testgeneraterewards", + "label": "TestGenerateRewards", + "file_type": "code", + "source_file": "tests/test_reward_engine.py", + "source_location": "L16", + "_origin": "ast" + }, + { + "id": "tests_test_reward_engine_testgeneraterewards_test_hard_fail_returns_empty", + "label": ".test_hard_fail_returns_empty()", + "file_type": "code", + "source_file": "tests/test_reward_engine.py", + "source_location": "L17", + "_origin": "ast" + }, + { + "id": "tests_test_reward_engine_testgeneraterewards_test_excellent_flow_generates_message", + "label": ".test_excellent_flow_generates_message()", + "file_type": "code", + "source_file": "tests/test_reward_engine.py", + "source_location": "L27", + "_origin": "ast" + }, + { + "id": "tests_test_reward_engine_testgeneraterewards_test_excellent_efficiency_generates_message", + "label": ".test_excellent_efficiency_generates_message()", + "file_type": "code", + "source_file": "tests/test_reward_engine.py", + "source_location": "L37", + "_origin": "ast" + }, + { + "id": "tests_test_reward_engine_testgeneraterewards_test_low_travel_ratio_generates_message", + "label": ".test_low_travel_ratio_generates_message()", + "file_type": "code", + "source_file": "tests/test_reward_engine.py", + "source_location": "L47", + "_origin": "ast" + }, + { + "id": "tests_test_reward_engine_testgeneraterewards_test_excellent_purpose_fit_generates_message", + "label": ".test_excellent_purpose_fit_generates_message()", + "file_type": "code", + "source_file": "tests/test_reward_engine.py", + "source_location": "L57", + "_origin": "ast" + }, + { + "id": "tests_test_reward_engine_testgeneraterewards_test_no_warnings_generates_message", + "label": ".test_no_warnings_generates_message()", + "file_type": "code", + "source_file": "tests/test_reward_engine.py", + "source_location": "L67", + "_origin": "ast" + }, + { + "id": "tests_test_reward_engine_testgeneraterewards_test_zero_cluster_penalty_generates_message", + "label": ".test_zero_cluster_penalty_generates_message()", + "file_type": "code", + "source_file": "tests/test_reward_engine.py", + "source_location": "L77", + "_origin": "ast" + }, + { + "id": "tests_test_reward_engine_testgeneraterewards_test_perfect_plan_all_messages", + "label": ".test_perfect_plan_all_messages()", + "file_type": "code", + "source_file": "tests/test_reward_engine.py", + "source_location": "L87", + "_origin": "ast" + }, + { + "id": "tests_test_reward_engine_testgeneraterewards_test_mediocre_plan_few_messages", + "label": ".test_mediocre_plan_few_messages()", + "file_type": "code", + "source_file": "tests/test_reward_engine.py", + "source_location": "L97", + "_origin": "ast" + }, + { + "id": "tests_test_scoring", + "label": "test_scoring.py", + "file_type": "code", + "source_file": "tests/test_scoring.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "tests_test_scoring_make_poi", + "label": "make_poi()", + "file_type": "code", + "source_file": "tests/test_scoring.py", + "source_location": "L14", + "_origin": "ast" + }, + { + "id": "tests_test_scoring_make_plan", + "label": "make_plan()", + "file_type": "code", + "source_file": "tests/test_scoring.py", + "source_location": "L29", + "_origin": "ast" + }, + { + "id": "tests_test_scoring_make_matrix", + "label": "make_matrix()", + "file_type": "code", + "source_file": "tests/test_scoring.py", + "source_location": "L42", + "_origin": "ast" + }, + { + "id": "tests_test_scoring_make_hard_fail", + "label": "make_hard_fail()", + "file_type": "code", + "source_file": "tests/test_scoring.py", + "source_location": "L52", + "_origin": "ast" + }, + { + "id": "tests_test_scoring_py_fixture", + "label": "fixture", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast" + }, + { + "id": "tests_test_scoring_calc", + "label": "calc()", + "file_type": "code", + "source_file": "tests/test_scoring.py", + "source_location": "L66", + "_origin": "ast" + }, + { + "id": "tests_test_scoring_sample_pois", + "label": "sample_pois()", + "file_type": "code", + "source_file": "tests/test_scoring.py", + "source_location": "L71", + "_origin": "ast" + }, + { + "id": "tests_test_scoring_sample_matrix", + "label": "sample_matrix()", + "file_type": "code", + "source_file": "tests/test_scoring.py", + "source_location": "L81", + "_origin": "ast" + }, + { + "id": "tests_test_scoring_sample_plan", + "label": "sample_plan()", + "file_type": "code", + "source_file": "tests/test_scoring.py", + "source_location": "L87", + "_origin": "ast" + }, + { + "id": "tests_test_scoring_testweights", + "label": "TestWeights", + "file_type": "code", + "source_file": "tests/test_scoring.py", + "source_location": "L95", + "_origin": "ast" + }, + { + "id": "tests_test_scoring_testweights_test_weights_sum_to_one", + "label": ".test_weights_sum_to_one()", + "file_type": "code", + "source_file": "tests/test_scoring.py", + "source_location": "L96", + "_origin": "ast" + }, + { + "id": "tests_test_scoring_testweights_test_weights_keys", + "label": ".test_weights_keys()", + "file_type": "code", + "source_file": "tests/test_scoring.py", + "source_location": "L100", + "_origin": "ast" + }, + { + "id": "tests_test_scoring_testcompute", + "label": "TestCompute", + "file_type": "code", + "source_file": "tests/test_scoring.py", + "source_location": "L110", + "_origin": "ast" + }, + { + "id": "tests_test_scoring_testcompute_test_final_score_in_range", + "label": ".test_final_score_in_range()", + "file_type": "code", + "source_file": "tests/test_scoring.py", + "source_location": "L111", + "_origin": "ast" + }, + { + "id": "tests_test_scoring_testcompute_test_hard_fail_caps_score_at_59", + "label": ".test_hard_fail_caps_score_at_59()", + "file_type": "code", + "source_file": "tests/test_scoring.py", + "source_location": "L115", + "_origin": "ast" + }, + { + "id": "tests_test_scoring_testcompute_test_no_hard_fail_can_exceed_59", + "label": ".test_no_hard_fail_can_exceed_59()", + "file_type": "code", + "source_file": "tests/test_scoring.py", + "source_location": "L121", + "_origin": "ast" + }, + { + "id": "tests_test_scoring_testcompute_test_scores_object_fields", + "label": ".test_scores_object_fields()", + "file_type": "code", + "source_file": "tests/test_scoring.py", + "source_location": "L127", + "_origin": "ast" + }, + { + "id": "tests_test_scoring_testefficiency", + "label": "TestEfficiency", + "file_type": "code", + "source_file": "tests/test_scoring.py", + "source_location": "L140", + "_origin": "ast" + }, + { + "id": "tests_test_scoring_testefficiency_test_optimal_order_is_one", + "label": ".test_optimal_order_is_one()", + "file_type": "code", + "source_file": "tests/test_scoring.py", + "source_location": "L141", + "_origin": "ast" + }, + { + "id": "tests_test_scoring_testefficiency_test_suboptimal_order_below_one", + "label": ".test_suboptimal_order_below_one()", + "file_type": "code", + "source_file": "tests/test_scoring.py", + "source_location": "L150", + "_origin": "ast" + }, + { + "id": "tests_test_scoring_testefficiency_test_single_poi_returns_one", + "label": ".test_single_poi_returns_one()", + "file_type": "code", + "source_file": "tests/test_scoring.py", + "source_location": "L161", + "_origin": "ast" + }, + { + "id": "tests_test_scoring_testfeasibility", + "label": "TestFeasibility", + "file_type": "code", + "source_file": "tests/test_scoring.py", + "source_location": "L170", + "_origin": "ast" + }, + { + "id": "tests_test_scoring_testfeasibility_test_no_hard_fails_hard_is_one", + "label": ".test_no_hard_fails_hard_is_one()", + "file_type": "code", + "source_file": "tests/test_scoring.py", + "source_location": "L171", + "_origin": "ast" + }, + { + "id": "tests_test_scoring_testfeasibility_test_hard_fail_reduces_feasibility", + "label": ".test_hard_fail_reduces_feasibility()", + "file_type": "code", + "source_file": "tests/test_scoring.py", + "source_location": "L176", + "_origin": "ast" + }, + { + "id": "tests_test_scoring_testfeasibility_test_feasibility_in_range", + "label": ".test_feasibility_in_range()", + "file_type": "code", + "source_file": "tests/test_scoring.py", + "source_location": "L181", + "_origin": "ast" + }, + { + "id": "tests_test_scoring_testpurposefit", + "label": "TestPurposeFit", + "file_type": "code", + "source_file": "tests/test_scoring.py", + "source_location": "L190", + "_origin": "ast" + }, + { + "id": "tests_test_scoring_testpurposefit_test_cultural_all_cultural_high", + "label": ".test_cultural_all_cultural_high()", + "file_type": "code", + "source_file": "tests/test_scoring.py", + "source_location": "L191", + "_origin": "ast" + }, + { + "id": "tests_test_scoring_testpurposefit_test_cultural_all_sports_low", + "label": ".test_cultural_all_sports_low()", + "file_type": "code", + "source_file": "tests/test_scoring.py", + "source_location": "L197", + "_origin": "ast" + }, + { + "id": "tests_test_scoring_testpurposefit_test_no_travel_type_returns_half", + "label": ".test_no_travel_type_returns_half()", + "file_type": "code", + "source_file": "tests/test_scoring.py", + "source_location": "L203", + "_origin": "ast" + }, + { + "id": "tests_test_scoring_testcosinedistance", + "label": "TestCosineDistance", + "file_type": "code", + "source_file": "tests/test_scoring.py", + "source_location": "L213", + "_origin": "ast" + }, + { + "id": "tests_test_scoring_testcosinedistance_test_identical_vectors", + "label": ".test_identical_vectors()", + "file_type": "code", + "source_file": "tests/test_scoring.py", + "source_location": "L214", + "_origin": "ast" + }, + { + "id": "tests_test_scoring_testcosinedistance_test_orthogonal_vectors", + "label": ".test_orthogonal_vectors()", + "file_type": "code", + "source_file": "tests/test_scoring.py", + "source_location": "L218", + "_origin": "ast" + }, + { + "id": "tests_test_scoring_testcosinedistance_test_zero_vector", + "label": ".test_zero_vector()", + "file_type": "code", + "source_file": "tests/test_scoring.py", + "source_location": "L223", + "_origin": "ast" + }, + { + "id": "tests_test_scoring_rationale_1", + "label": "Tests for ScoreCalculator (TDD).", + "file_type": "rationale", + "source_file": "tests/test_scoring.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "tests_test_theme_alignment", + "label": "test_theme_alignment.py", + "file_type": "code", + "source_file": "tests/test_theme_alignment.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "tests_test_theme_alignment_py_fixture", + "label": "fixture", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast" + }, + { + "id": "tests_test_theme_alignment_clear_cache", + "label": "_clear_cache()", + "file_type": "code", + "source_file": "tests/test_theme_alignment.py", + "source_location": "L22", + "_origin": "ast" + }, + { + "id": "tests_test_theme_alignment_testnoapikey", + "label": "TestNoApiKey", + "file_type": "code", + "source_file": "tests/test_theme_alignment.py", + "source_location": "L29", + "_origin": "ast" + }, + { + "id": "tests_test_theme_alignment_testnoapikey_test_skip_returns_informational_only", + "label": ".test_skip_returns_informational_only()", + "file_type": "code", + "source_file": "tests/test_theme_alignment.py", + "source_location": "L30", + "_origin": "ast" + }, + { + "id": "tests_test_theme_alignment_testclassifyscore", + "label": "TestClassifyScore", + "file_type": "code", + "source_file": "tests/test_theme_alignment.py", + "source_location": "L41", + "_origin": "ast" + }, + { + "id": "tests_test_theme_alignment_testclassifyscore_test_high_score_no_penalty", + "label": ".test_high_score_no_penalty()", + "file_type": "code", + "source_file": "tests/test_theme_alignment.py", + "source_location": "L42", + "_origin": "ast" + }, + { + "id": "tests_test_theme_alignment_testclassifyscore_test_low_score_critical", + "label": ".test_low_score_critical()", + "file_type": "code", + "source_file": "tests/test_theme_alignment.py", + "source_location": "L47", + "_origin": "ast" + }, + { + "id": "tests_test_theme_alignment_testparsellmresponse", + "label": "TestParseLlmResponse", + "file_type": "code", + "source_file": "tests/test_theme_alignment.py", + "source_location": "L53", + "_origin": "ast" + }, + { + "id": "tests_test_theme_alignment_testparsellmresponse_test_clean_json", + "label": ".test_clean_json()", + "file_type": "code", + "source_file": "tests/test_theme_alignment.py", + "source_location": "L54", + "_origin": "ast" + }, + { + "id": "tests_test_theme_alignment_testparsellmresponse_test_score_clamped_to_1", + "label": ".test_score_clamped_to_1()", + "file_type": "code", + "source_file": "tests/test_theme_alignment.py", + "source_location": "L61", + "_origin": "ast" + }, + { + "id": "tests_test_theme_alignment_testparsellmresponse_test_code_block_stripped", + "label": ".test_code_block_stripped()", + "file_type": "code", + "source_file": "tests/test_theme_alignment.py", + "source_location": "L66", + "_origin": "ast" + }, + { + "id": "tests_test_theme_alignment_testevaluatewithmockclient", + "label": "TestEvaluateWithMockClient", + "file_type": "code", + "source_file": "tests/test_theme_alignment.py", + "source_location": "L72", + "_origin": "ast" + }, + { + "id": "tests_test_theme_alignment_testevaluatewithmockclient_test_high_alignment_no_penalty", + "label": ".test_high_alignment_no_penalty()", + "file_type": "code", + "source_file": "tests/test_theme_alignment.py", + "source_location": "L73", + "_origin": "ast" + }, + { + "id": "tests_test_theme_alignment_testevaluatewithmockclient_test_low_alignment_critical", + "label": ".test_low_alignment_critical()", + "file_type": "code", + "source_file": "tests/test_theme_alignment.py", + "source_location": "L90", + "_origin": "ast" + }, + { + "id": "tests_test_theme_alignment_testevaluatewithmockclient_test_cache_hit_skips_second_call", + "label": ".test_cache_hit_skips_second_call()", + "file_type": "code", + "source_file": "tests/test_theme_alignment.py", + "source_location": "L106", + "_origin": "ast" + }, + { + "id": "tests_test_theme_alignment_testevaluatewithmockclient_test_llm_failure_returns_informational", + "label": ".test_llm_failure_returns_informational()", + "file_type": "code", + "source_file": "tests/test_theme_alignment.py", + "source_location": "L121", + "_origin": "ast" + }, + { + "id": "tests_test_theme_alignment_rationale_1", + "label": "Tests for src/scoring/theme_alignment.py \u2014 LLM mocking \ud544\uc218.", + "file_type": "rationale", + "source_file": "tests/test_theme_alignment.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "tests_test_theme_alignment_rationale_31", + "label": "API \ud0a4 \uc5c6\uc73c\uba74 LLM \ud638\ucd9c \uc2a4\ud0b5 + \uc815\ubcf4\uc131 DeepDive.", + "file_type": "rationale", + "source_file": "tests/test_theme_alignment.py", + "source_location": "L31", + "_origin": "ast" + }, + { + "id": "tests_test_theme_alignment_rationale_91", + "label": "LLM\uc774 0.3 \uc751\ub2f5 \u2192 CRITICAL \ud328\ub110\ud2f0.", + "file_type": "rationale", + "source_file": "tests/test_theme_alignment.py", + "source_location": "L91", + "_origin": "ast" + }, + { + "id": "tests_test_theme_alignment_rationale_107", + "label": "\ub3d9\uc77c \uc785\ub825\uc73c\ub85c \ub450 \ubc88 \ud638\ucd9c \uc2dc LLM\uc740 1\ud68c\ub9cc \ud638\ucd9c.", + "file_type": "rationale", + "source_file": "tests/test_theme_alignment.py", + "source_location": "L107", + "_origin": "ast" + }, + { + "id": "tests_test_theme_alignment_rationale_122", + "label": "LLM \ud638\ucd9c\uc774 \uc608\uc678 \ub358\uc9c0\uba74 \uc815\ubcf4\uc131 DeepDive\ub85c \ud3f4\ubc31.", + "file_type": "rationale", + "source_file": "tests/test_theme_alignment.py", + "source_location": "L122", + "_origin": "ast" + }, + { + "id": "tests_test_theme_taxonomy", + "label": "test_theme_taxonomy.py", + "file_type": "code", + "source_file": "tests/test_theme_taxonomy.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "tests_test_theme_taxonomy_testplacetypecount", + "label": "TestPlaceTypeCount", + "file_type": "code", + "source_file": "tests/test_theme_taxonomy.py", + "source_location": "L15", + "_origin": "ast" + }, + { + "id": "tests_test_theme_taxonomy_testplacetypecount_test_9_place_types", + "label": ".test_9_place_types()", + "file_type": "code", + "source_file": "tests/test_theme_taxonomy.py", + "source_location": "L16", + "_origin": "ast" + }, + { + "id": "tests_test_theme_taxonomy_testplacetypecount_test_9_travel_styles", + "label": ".test_9_travel_styles()", + "file_type": "code", + "source_file": "tests/test_theme_taxonomy.py", + "source_location": "L21", + "_origin": "ast" + }, + { + "id": "tests_test_theme_taxonomy_testuserpreferences", + "label": "TestUserPreferences", + "file_type": "code", + "source_file": "tests/test_theme_taxonomy.py", + "source_location": "L27", + "_origin": "ast" + }, + { + "id": "tests_test_theme_taxonomy_testuserpreferences_test_valid_input", + "label": ".test_valid_input()", + "file_type": "code", + "source_file": "tests/test_theme_taxonomy.py", + "source_location": "L28", + "_origin": "ast" + }, + { + "id": "tests_test_theme_taxonomy_testuserpreferences_test_invalid_place_type_raises", + "label": ".test_invalid_place_type_raises()", + "file_type": "code", + "source_file": "tests/test_theme_taxonomy.py", + "source_location": "L33", + "_origin": "ast" + }, + { + "id": "tests_test_theme_taxonomy_testuserpreferences_test_invalid_style_raises", + "label": ".test_invalid_style_raises()", + "file_type": "code", + "source_file": "tests/test_theme_taxonomy.py", + "source_location": "L37", + "_origin": "ast" + }, + { + "id": "tests_test_theme_taxonomy_testuserpreferences_test_empty_both_axes_raises", + "label": ".test_empty_both_axes_raises()", + "file_type": "code", + "source_file": "tests/test_theme_taxonomy.py", + "source_location": "L41", + "_origin": "ast" + }, + { + "id": "tests_test_theme_taxonomy_testmatchesplacetype", + "label": "TestMatchesPlaceType", + "file_type": "code", + "source_file": "tests/test_theme_taxonomy.py", + "source_location": "L46", + "_origin": "ast" + }, + { + "id": "tests_test_theme_taxonomy_testmatchesplacetype_test_mountain_matches_na04", + "label": ".test_mountain_matches_NA04()", + "file_type": "code", + "source_file": "tests/test_theme_taxonomy.py", + "source_location": "L47", + "_origin": "ast" + }, + { + "id": "tests_test_theme_taxonomy_testmatchesplacetype_test_beach_matches_na12", + "label": ".test_beach_matches_NA12()", + "file_type": "code", + "source_file": "tests/test_theme_taxonomy.py", + "source_location": "L51", + "_origin": "ast" + }, + { + "id": "tests_test_theme_taxonomy_testmatchesplacetype_test_festival_matches_content_type_15", + "label": ".test_festival_matches_content_type_15()", + "file_type": "code", + "source_file": "tests/test_theme_taxonomy.py", + "source_location": "L54", + "_origin": "ast" + }, + { + "id": "tests_test_theme_taxonomy_testmatchesplacetype_test_no_match", + "label": ".test_no_match()", + "file_type": "code", + "source_file": "tests/test_theme_taxonomy.py", + "source_location": "L57", + "_origin": "ast" + }, + { + "id": "tests_test_theme_taxonomy_testgetplacetypesfor", + "label": "TestGetPlaceTypesFor", + "file_type": "code", + "source_file": "tests/test_theme_taxonomy.py", + "source_location": "L62", + "_origin": "ast" + }, + { + "id": "tests_test_theme_taxonomy_testgetplacetypesfor_test_mountain_code_returns_list", + "label": ".test_mountain_code_returns_list()", + "file_type": "code", + "source_file": "tests/test_theme_taxonomy.py", + "source_location": "L63", + "_origin": "ast" + }, + { + "id": "tests_test_theme_taxonomy_testgetplacetypesfor_test_no_code_returns_empty", + "label": ".test_no_code_returns_empty()", + "file_type": "code", + "source_file": "tests/test_theme_taxonomy.py", + "source_location": "L67", + "_origin": "ast" + }, + { + "id": "tests_test_theme_taxonomy_rationale_1", + "label": "Tests for src/data/theme_taxonomy.py \u2014 2\ucd95 \ud14c\ub9c8 + \ub9e4\ud551.", + "file_type": "rationale", + "source_file": "tests/test_theme_taxonomy.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "tests_test_travel_ratio", + "label": "test_travel_ratio.py", + "file_type": "code", + "source_file": "tests/test_travel_ratio.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "tests_test_travel_ratio_make_place", + "label": "_make_place()", + "file_type": "code", + "source_file": "tests/test_travel_ratio.py", + "source_location": "L15", + "_origin": "ast" + }, + { + "id": "tests_test_travel_ratio_test_no_penalty_when_ratio_low", + "label": "test_no_penalty_when_ratio_low()", + "file_type": "code", + "source_file": "tests/test_travel_ratio.py", + "source_location": "L22", + "_origin": "ast" + }, + { + "id": "tests_test_travel_ratio_test_penalty_when_ratio_high", + "label": "test_penalty_when_ratio_high()", + "file_type": "code", + "source_file": "tests/test_travel_ratio.py", + "source_location": "L35", + "_origin": "ast" + }, + { + "id": "tests_test_travel_ratio_test_overall_ratio_aggregates_across_days", + "label": "test_overall_ratio_aggregates_across_days()", + "file_type": "code", + "source_file": "tests/test_travel_ratio.py", + "source_location": "L48", + "_origin": "ast" + }, + { + "id": "tests_test_travel_ratio_rationale_1", + "label": "Tests for src/scoring/travel_ratio.py.", + "file_type": "rationale", + "source_file": "tests/test_travel_ratio.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "tests_test_travel_ratio_rationale_23", + "label": "4\uac1c \uc7a5\uc18c\uac00 \ubaa8\ub450 \uac00\uae4c\uc774 \uc788\uc73c\uba74 travel_ratio\uac00 \ub0ae\uc74c \u2192 \ud328\ub110\ud2f0 0.", + "file_type": "rationale", + "source_file": "tests/test_travel_ratio.py", + "source_location": "L23", + "_origin": "ast" + }, + { + "id": "tests_test_travel_ratio_rationale_36", + "label": "\uc7a5\uc18c\uac00 \uba40\ub9ac \ub5a8\uc5b4\uc838 \uc774\ub3d9 \uc2dc\uac04\uc774 \uad00\uad11 \uc2dc\uac04\uc744 \uc555\ub3c4\ud558\uba74 \ud328\ub110\ud2f0 \ubc1c\uc0dd.", + "file_type": "rationale", + "source_file": "tests/test_travel_ratio.py", + "source_location": "L36", + "_origin": "ast" + }, + { + "id": "tests_test_vrptw_engine", + "label": "test_vrptw_engine.py", + "file_type": "code", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "tests_test_vrptw_engine_make_place", + "label": "make_place()", + "file_type": "code", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L24", + "_origin": "ast" + }, + { + "id": "tests_test_vrptw_engine_testhaversinematrix", + "label": "TestHaversineMatrix", + "file_type": "code", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L54", + "_origin": "ast" + }, + { + "id": "tests_test_vrptw_engine_testhaversinematrix_test_same_point_is_zero", + "label": ".test_same_point_is_zero()", + "file_type": "code", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L55", + "_origin": "ast" + }, + { + "id": "tests_test_vrptw_engine_testhaversinematrix_test_known_distance", + "label": ".test_known_distance()", + "file_type": "code", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L59", + "_origin": "ast" + }, + { + "id": "tests_test_vrptw_engine_testhaversinematrix_test_symmetry", + "label": ".test_symmetry()", + "file_type": "code", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L66", + "_origin": "ast" + }, + { + "id": "tests_test_vrptw_engine_testcachedroutematrix", + "label": "TestCachedRouteMatrix", + "file_type": "code", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L75", + "_origin": "ast" + }, + { + "id": "tests_test_vrptw_engine_testcachedroutematrix_test_cache_hit", + "label": ".test_cache_hit()", + "file_type": "code", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L76", + "_origin": "ast" + }, + { + "id": "tests_test_vrptw_engine_testcachedroutematrix_test_cache_miss_falls_back_to_haversine", + "label": ".test_cache_miss_falls_back_to_haversine()", + "file_type": "code", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L81", + "_origin": "ast" + }, + { + "id": "tests_test_vrptw_engine_testcachedroutematrix_test_reverse_key_fallback", + "label": ".test_reverse_key_fallback()", + "file_type": "code", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L87", + "_origin": "ast" + }, + { + "id": "tests_test_vrptw_engine_testcachedroutematrix_test_load_from_dict", + "label": ".test_load_from_dict()", + "file_type": "code", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L93", + "_origin": "ast" + }, + { + "id": "tests_test_vrptw_engine_testdepotconstraint", + "label": "TestDepotConstraint", + "file_type": "code", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L105", + "_origin": "ast" + }, + { + "id": "tests_test_vrptw_engine_testdepotconstraint_engine_with_haversine", + "label": "._engine_with_haversine()", + "file_type": "code", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L106", + "_origin": "ast" + }, + { + "id": "tests_test_vrptw_engine_testdepotconstraint_test_2n3d_day1_must_end_at_depot", + "label": ".test_2n3d_day1_must_end_at_depot()", + "file_type": "code", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L109", + "_origin": "ast" + }, + { + "id": "tests_test_vrptw_engine_testdepotconstraint_test_2n3d_middle_day_must_start_and_end_at_depot", + "label": ".test_2n3d_middle_day_must_start_and_end_at_depot()", + "file_type": "code", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L126", + "_origin": "ast" + }, + { + "id": "tests_test_vrptw_engine_testdepotconstraint_test_1n2d_no_depot_constraint_applied", + "label": ".test_1n2d_no_depot_constraint_applied()", + "file_type": "code", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L139", + "_origin": "ast" + }, + { + "id": "tests_test_vrptw_engine_testtimewindowfeasibility", + "label": "TestTimeWindowFeasibility", + "file_type": "code", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L161", + "_origin": "ast" + }, + { + "id": "tests_test_vrptw_engine_testtimewindowfeasibility_engine", + "label": "._engine()", + "file_type": "code", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L162", + "_origin": "ast" + }, + { + "id": "tests_test_vrptw_engine_testtimewindowfeasibility_test_feasible_schedule_passes", + "label": ".test_feasible_schedule_passes()", + "file_type": "code", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L165", + "_origin": "ast" + }, + { + "id": "tests_test_vrptw_engine_testtimewindowfeasibility_test_infeasible_close_time_triggers_critical", + "label": ".test_infeasible_close_time_triggers_critical()", + "file_type": "code", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L174", + "_origin": "ast" + }, + { + "id": "tests_test_vrptw_engine_testtimewindowfeasibility_test_safety_margin_warning", + "label": ".test_safety_margin_warning()", + "file_type": "code", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L185", + "_origin": "ast" + }, + { + "id": "tests_test_vrptw_engine_testefficiencygap", + "label": "TestEfficiencyGap", + "file_type": "code", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L203", + "_origin": "ast" + }, + { + "id": "tests_test_vrptw_engine_testefficiencygap_test_optimal_order_same_as_user_gives_zero_gap", + "label": ".test_optimal_order_same_as_user_gives_zero_gap()", + "file_type": "code", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L204", + "_origin": "ast" + }, + { + "id": "tests_test_vrptw_engine_testefficiencygap_test_reversed_inefficient_route_shows_gap", + "label": ".test_reversed_inefficient_route_shows_gap()", + "file_type": "code", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L212", + "_origin": "ast" + }, + { + "id": "tests_test_vrptw_engine_testfatiguescore", + "label": "TestFatigueScore", + "file_type": "code", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L225", + "_origin": "ast" + }, + { + "id": "tests_test_vrptw_engine_testfatiguescore_test_12h_schedule_no_fatigue_penalty", + "label": ".test_12h_schedule_no_fatigue_penalty()", + "file_type": "code", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L226", + "_origin": "ast" + }, + { + "id": "tests_test_vrptw_engine_testfatiguescore_test_long_schedule_triggers_fatigue", + "label": ".test_long_schedule_triggers_fatigue()", + "file_type": "code", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L239", + "_origin": "ast" + }, + { + "id": "tests_test_vrptw_engine_testortoolsdegradation", + "label": "TestORToolsDegradation", + "file_type": "code", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L256", + "_origin": "ast" + }, + { + "id": "tests_test_vrptw_engine_testortoolsdegradation_test_missing_ortools_still_returns_result", + "label": ".test_missing_ortools_still_returns_result()", + "file_type": "code", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L257", + "_origin": "ast" + }, + { + "id": "tests_test_vrptw_engine_testriskscore", + "label": "TestRiskScore", + "file_type": "code", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L277", + "_origin": "ast" + }, + { + "id": "tests_test_vrptw_engine_testriskscore_test_risk_score_in_0_100", + "label": ".test_risk_score_in_0_100()", + "file_type": "code", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L278", + "_origin": "ast" + }, + { + "id": "tests_test_vrptw_engine_testriskscore_test_pass_fail_threshold", + "label": ".test_pass_fail_threshold()", + "file_type": "code", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L284", + "_origin": "ast" + }, + { + "id": "tests_test_vrptw_engine_test_constants_accessible", + "label": "test_constants_accessible()", + "file_type": "code", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L298", + "_origin": "ast" + }, + { + "id": "tests_test_vrptw_engine_testmodelvalidation", + "label": "TestModelValidation", + "file_type": "code", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L308", + "_origin": "ast" + }, + { + "id": "tests_test_vrptw_engine_testmodelvalidation_test_invalid_lat_raises", + "label": ".test_invalid_lat_raises()", + "file_type": "code", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L309", + "_origin": "ast" + }, + { + "id": "tests_test_vrptw_engine_testmodelvalidation_test_invalid_lng_raises", + "label": ".test_invalid_lng_raises()", + "file_type": "code", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L313", + "_origin": "ast" + }, + { + "id": "tests_test_vrptw_engine_testmodelvalidation_test_invalid_time_format_raises", + "label": ".test_invalid_time_format_raises()", + "file_type": "code", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L317", + "_origin": "ast" + }, + { + "id": "tests_test_vrptw_engine_testmodelvalidation_test_invalid_time_value_raises", + "label": ".test_invalid_time_value_raises()", + "file_type": "code", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L321", + "_origin": "ast" + }, + { + "id": "tests_test_vrptw_engine_testmodelvalidation_test_negative_stay_raises", + "label": ".test_negative_stay_raises()", + "file_type": "code", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L325", + "_origin": "ast" + }, + { + "id": "tests_test_vrptw_engine_testmodelvalidation_test_zero_stay_allowed_for_depot", + "label": ".test_zero_stay_allowed_for_depot()", + "file_type": "code", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L329", + "_origin": "ast" + }, + { + "id": "tests_test_vrptw_engine_testmodelvalidation_test_empty_day_raises", + "label": ".test_empty_day_raises()", + "file_type": "code", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L334", + "_origin": "ast" + }, + { + "id": "tests_test_vrptw_engine_testmodelvalidation_test_empty_days_raises", + "label": ".test_empty_days_raises()", + "file_type": "code", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L338", + "_origin": "ast" + }, + { + "id": "tests_test_vrptw_engine_testmodelvalidation_test_open_minutes_property", + "label": ".test_open_minutes_property()", + "file_type": "code", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L342", + "_origin": "ast" + }, + { + "id": "tests_test_vrptw_engine_testmodelvalidation_test_close_minutes_property", + "label": ".test_close_minutes_property()", + "file_type": "code", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L346", + "_origin": "ast" + }, + { + "id": "tests_test_vrptw_engine_testefficiencygapthreshold", + "label": "TestEfficiencyGapThreshold", + "file_type": "code", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L355", + "_origin": "ast" + }, + { + "id": "tests_test_vrptw_engine_testefficiencygapthreshold_test_gap_over_threshold_adds_warning", + "label": ".test_gap_over_threshold_adds_warning()", + "file_type": "code", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L356", + "_origin": "ast" + }, + { + "id": "tests_test_vrptw_engine_testmultidayresult", + "label": "TestMultiDayResult", + "file_type": "code", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L376", + "_origin": "ast" + }, + { + "id": "tests_test_vrptw_engine_testmultidayresult_test_multi_day_returns_per_day_comparison", + "label": ".test_multi_day_returns_per_day_comparison()", + "file_type": "code", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L377", + "_origin": "ast" + }, + { + "id": "tests_test_vrptw_engine_testmultidayresult_test_multi_day_user_total_travel_is_sum", + "label": ".test_multi_day_user_total_travel_is_sum()", + "file_type": "code", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L391", + "_origin": "ast" + }, + { + "id": "tests_test_vrptw_engine_testmultidayresult_test_single_place_day_no_travel", + "label": ".test_single_place_day_no_travel()", + "file_type": "code", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L404", + "_origin": "ast" + }, + { + "id": "tests_test_vrptw_engine_test_summary_contains_score", + "label": "test_summary_contains_score()", + "file_type": "code", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L415", + "_origin": "ast" + }, + { + "id": "tests_test_vrptw_engine_test_deep_dive_items_have_all_fields", + "label": "test_deep_dive_items_have_all_fields()", + "file_type": "code", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L427", + "_origin": "ast" + }, + { + "id": "tests_test_vrptw_engine_test_cached_matrix_from_actual_file", + "label": "test_cached_matrix_from_actual_file()", + "file_type": "code", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L444", + "_origin": "ast" + }, + { + "id": "tests_test_vrptw_engine_rationale_1", + "label": "Tests for VRPTW validation engine (TDD).", + "file_type": "rationale", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "tests_test_vrptw_engine_rationale_88", + "label": "If only the reverse direction is cached, use it.", + "file_type": "rationale", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L88", + "_origin": "ast" + }, + { + "id": "tests_test_vrptw_engine_rationale_110", + "label": "2\ubc153\uc77c: day1 last place must be depot.", + "file_type": "rationale", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L110", + "_origin": "ast" + }, + { + "id": "tests_test_vrptw_engine_rationale_140", + "label": "1\ubc152\uc77c: depot constraint NOT enforced.", + "file_type": "rationale", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L140", + "_origin": "ast" + }, + { + "id": "tests_test_vrptw_engine_rationale_175", + "label": "A place that closes at 09:05 \u2014 impossible to visit after travel from A.", + "file_type": "rationale", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L175", + "_origin": "ast" + }, + { + "id": "tests_test_vrptw_engine_rationale_186", + "label": "Arrival within 60 min of close triggers safety margin warning.", + "file_type": "rationale", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L186", + "_origin": "ast" + }, + { + "id": "tests_test_vrptw_engine_rationale_205", + "label": "With 2 POIs the optimal is always the same, gap should be 0 or minimal.", + "file_type": "rationale", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L205", + "_origin": "ast" + }, + { + "id": "tests_test_vrptw_engine_rationale_213", + "label": "A\u2192C\u2192B is longer than A\u2192B\u2192C when laid out linearly.", + "file_type": "rationale", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L213", + "_origin": "ast" + }, + { + "id": "tests_test_vrptw_engine_rationale_258", + "label": "When ortools is not available, engine still returns a VRPTWResult.", + "file_type": "rationale", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L258", + "_origin": "ast" + }, + { + "id": "tests_test_vrptw_engine_rationale_357", + "label": "If efficiency gap > 20%, a deep_dive WARNING should appear.", + "file_type": "rationale", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L357", + "_origin": "ast" + }, + { + "id": "tests_test_vrptw_engine_rationale_428", + "label": "Every DeepDiveItem must have non-empty fact, rule, risk, suggestion.", + "file_type": "rationale", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L428", + "_origin": "ast" + }, + { + "id": "tests_test_vrptw_engine_rationale_445", + "label": "Smoke test: load real cache_route.json and verify at least one hit.", + "file_type": "rationale", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L445", + "_origin": "ast" + }, + { + "id": "tests_test_warning", + "label": "test_warning.py", + "file_type": "code", + "source_file": "tests/test_warning.py", + "source_location": "L1", + "_origin": "ast" + }, + { + "id": "tests_test_warning_make_poi", + "label": "make_poi()", + "file_type": "code", + "source_file": "tests/test_warning.py", + "source_location": "L14", + "_origin": "ast" + }, + { + "id": "tests_test_warning_make_plan", + "label": "make_plan()", + "file_type": "code", + "source_file": "tests/test_warning.py", + "source_location": "L29", + "_origin": "ast" + }, + { + "id": "tests_test_warning_make_matrix", + "label": "make_matrix()", + "file_type": "code", + "source_file": "tests/test_warning.py", + "source_location": "L44", + "_origin": "ast" + }, + { + "id": "tests_test_warning_py_fixture", + "label": "fixture", + "file_type": "code", + "source_file": "", + "source_location": "", + "_origin": "ast" + }, + { + "id": "tests_test_warning_detector", + "label": "detector()", + "file_type": "code", + "source_file": "tests/test_warning.py", + "source_location": "L59", + "_origin": "ast" + }, + { + "id": "tests_test_warning_testdenseschedule", + "label": "TestDenseSchedule", + "file_type": "code", + "source_file": "tests/test_warning.py", + "source_location": "L67", + "_origin": "ast" + }, + { + "id": "tests_test_warning_testdenseschedule_test_dense_trigger_baby", + "label": ".test_dense_trigger_baby()", + "file_type": "code", + "source_file": "tests/test_warning.py", + "source_location": "L68", + "_origin": "ast" + }, + { + "id": "tests_test_warning_testdenseschedule_test_dense_trigger_friends_heavy", + "label": ".test_dense_trigger_friends_heavy()", + "file_type": "code", + "source_file": "tests/test_warning.py", + "source_location": "L77", + "_origin": "ast" + }, + { + "id": "tests_test_warning_testdenseschedule_test_no_dense_within_threshold", + "label": ".test_no_dense_within_threshold()", + "file_type": "code", + "source_file": "tests/test_warning.py", + "source_location": "L86", + "_origin": "ast" + }, + { + "id": "tests_test_warning_testdenseschedule_test_dense_message_includes_party_type", + "label": ".test_dense_message_includes_party_type()", + "file_type": "code", + "source_file": "tests/test_warning.py", + "source_location": "L95", + "_origin": "ast" + }, + { + "id": "tests_test_warning_testphysicalstrain", + "label": "TestPhysicalStrain", + "file_type": "code", + "source_file": "tests/test_warning.py", + "source_location": "L109", + "_origin": "ast" + }, + { + "id": "tests_test_warning_testphysicalstrain_test_strain_trigger", + "label": ".test_strain_trigger()", + "file_type": "code", + "source_file": "tests/test_warning.py", + "source_location": "L110", + "_origin": "ast" + }, + { + "id": "tests_test_warning_testphysicalstrain_test_no_strain_short_distance", + "label": ".test_no_strain_short_distance()", + "file_type": "code", + "source_file": "tests/test_warning.py", + "source_location": "L123", + "_origin": "ast" + }, + { + "id": "tests_test_warning_testpurposemismatch", + "label": "TestPurposeMismatch", + "file_type": "code", + "source_file": "tests/test_warning.py", + "source_location": "L138", + "_origin": "ast" + }, + { + "id": "tests_test_warning_testpurposemismatch_test_mismatch_cultural_all_sports", + "label": ".test_mismatch_cultural_all_sports()", + "file_type": "code", + "source_file": "tests/test_warning.py", + "source_location": "L139", + "_origin": "ast" + }, + { + "id": "tests_test_warning_testpurposemismatch_test_no_mismatch_cultural_all_cultural", + "label": ".test_no_mismatch_cultural_all_cultural()", + "file_type": "code", + "source_file": "tests/test_warning.py", + "source_location": "L150", + "_origin": "ast" + }, + { + "id": "tests_test_warning_testpurposemismatch_test_no_mismatch_when_no_travel_type", + "label": ".test_no_mismatch_when_no_travel_type()", + "file_type": "code", + "source_file": "tests/test_warning.py", + "source_location": "L161", + "_origin": "ast" + }, + { + "id": "tests_test_warning_testarearevisit", + "label": "TestAreaRevisit", + "file_type": "code", + "source_file": "tests/test_warning.py", + "source_location": "L173", + "_origin": "ast" + }, + { + "id": "tests_test_warning_testarearevisit_test_consecutive_same_category_triggers", + "label": ".test_consecutive_same_category_triggers()", + "file_type": "code", + "source_file": "tests/test_warning.py", + "source_location": "L174", + "_origin": "ast" + }, + { + "id": "tests_test_warning_testarearevisit_test_all_different_no_revisit", + "label": ".test_all_different_no_revisit()", + "file_type": "code", + "source_file": "tests/test_warning.py", + "source_location": "L187", + "_origin": "ast" + }, + { + "id": "tests_test_warning_testarearevisit_test_three_consecutive_triggers", + "label": ".test_three_consecutive_triggers()", + "file_type": "code", + "source_file": "tests/test_warning.py", + "source_location": "L199", + "_origin": "ast" + }, + { + "id": "tests_test_warning_testarearevisit_test_two_consecutive_no_trigger", + "label": ".test_two_consecutive_no_trigger()", + "file_type": "code", + "source_file": "tests/test_warning.py", + "source_location": "L212", + "_origin": "ast" + }, + { + "id": "tests_test_warning_testwarningfields", + "label": "TestWarningFields", + "file_type": "code", + "source_file": "tests/test_warning.py", + "source_location": "L230", + "_origin": "ast" + }, + { + "id": "tests_test_warning_testwarningfields_test_warning_has_confidence_from_types", + "label": ".test_warning_has_confidence_from_types()", + "file_type": "code", + "source_file": "tests/test_warning.py", + "source_location": "L231", + "_origin": "ast" + }, + { + "id": "tests_test_warning_testwarningfields_test_warning_message_not_empty", + "label": ".test_warning_message_not_empty()", + "file_type": "code", + "source_file": "tests/test_warning.py", + "source_location": "L242", + "_origin": "ast" + }, + { + "id": "tests_test_warning_testdayindex", + "label": "TestDayIndex", + "file_type": "code", + "source_file": "tests/test_warning.py", + "source_location": "L255", + "_origin": "ast" + }, + { + "id": "tests_test_warning_testdayindex_test_day_index_defaults_to_none", + "label": ".test_day_index_defaults_to_none()", + "file_type": "code", + "source_file": "tests/test_warning.py", + "source_location": "L256", + "_origin": "ast" + }, + { + "id": "tests_test_warning_testdayindex_test_day_index_and_poi_names_set_when_passed", + "label": ".test_day_index_and_poi_names_set_when_passed()", + "file_type": "code", + "source_file": "tests/test_warning.py", + "source_location": "L266", + "_origin": "ast" + }, + { + "id": "tests_test_warning_rationale_1", + "label": "Tests for WarningDetector (TDD).", + "file_type": "rationale", + "source_file": "tests/test_warning.py", + "source_location": "L1", + "_origin": "ast" + } + ], + "edges": [ + { + "source": "gun_scripts_build_hours_db", + "target": "re", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/build_hours_db.py", + "source_location": "L17", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_build_hours_db", + "target": "pathlib", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/build_hours_db.py", + "source_location": "L18", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_build_hours_db", + "target": "collections", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/build_hours_db.py", + "source_location": "L19", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_build_hours_db", + "target": "openpyxl", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/build_hours_db.py", + "source_location": "L21", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_build_hours_db", + "target": "openpyxl_styles", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/build_hours_db.py", + "source_location": "L22", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_build_hours_db", + "target": "openpyxl_utils", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/build_hours_db.py", + "source_location": "L23", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_build_hours_db", + "target": "gun_scripts_build_hours_db_match_sub_category", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/build_hours_db.py", + "source_location": "L403", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_build_hours_db", + "target": "gun_scripts_build_hours_db_confidence", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/build_hours_db.py", + "source_location": "L428", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_build_hours_db", + "target": "gun_scripts_build_hours_db_build_place_hours_xlsx", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/build_hours_db.py", + "source_location": "L442", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_build_hours_db_build_place_hours_xlsx", + "target": "counter", + "relation": "references", + "context": "generic_arg", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/build_hours_db.py", + "source_location": "L442", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_build_hours_db", + "target": "gun_scripts_build_hours_db_build_category_std_xlsx", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/build_hours_db.py", + "source_location": "L543", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_build_hours_db_build_category_std_xlsx", + "target": "counter", + "relation": "references", + "context": "parameter_type", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/build_hours_db.py", + "source_location": "L543", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_build_hours_db", + "target": "gun_scripts_build_hours_db_build_hours_db_py", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/build_hours_db.py", + "source_location": "L605", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_build_hours_db", + "target": "gun_scripts_build_hours_db_main", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/build_hours_db.py", + "source_location": "L700", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_build_hours_db_build_place_hours_xlsx", + "target": "counter", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/build_hours_db.py", + "source_location": "L456", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_build_hours_db_build_place_hours_xlsx", + "target": "gun_scripts_build_hours_db_match_sub_category", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/build_hours_db.py", + "source_location": "L459", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_build_hours_db_build_place_hours_xlsx", + "target": "gun_scripts_build_hours_db_confidence", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/build_hours_db.py", + "source_location": "L474", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_build_hours_db_main", + "target": "gun_scripts_build_hours_db_build_place_hours_xlsx", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/build_hours_db.py", + "source_location": "L701", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_build_hours_db_main", + "target": "gun_scripts_build_hours_db_build_category_std_xlsx", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/build_hours_db.py", + "source_location": "L702", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_build_hours_db_main", + "target": "gun_scripts_build_hours_db_build_hours_db_py", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/build_hours_db.py", + "source_location": "L703", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_build_hours_db_rationale_1", + "target": "gun_scripts_build_hours_db", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/build_hours_db.py", + "source_location": "L1", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_build_hours_db_rationale_404", + "target": "gun_scripts_build_hours_db_match_sub_category", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/build_hours_db.py", + "source_location": "L404", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_build_hours_db_rationale_429", + "target": "gun_scripts_build_hours_db_confidence", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/build_hours_db.py", + "source_location": "L429", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_build_itinerary_excel", + "target": "argparse", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/build_itinerary_excel.py", + "source_location": "L25", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_build_itinerary_excel", + "target": "csv", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/build_itinerary_excel.py", + "source_location": "L26", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_build_itinerary_excel", + "target": "json", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/build_itinerary_excel.py", + "source_location": "L27", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_build_itinerary_excel", + "target": "sys", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/build_itinerary_excel.py", + "source_location": "L28", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_build_itinerary_excel", + "target": "collections", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/build_itinerary_excel.py", + "source_location": "L29", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_build_itinerary_excel", + "target": "datetime", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/build_itinerary_excel.py", + "source_location": "L30", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_build_itinerary_excel", + "target": "pathlib", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/build_itinerary_excel.py", + "source_location": "L31", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_build_itinerary_excel", + "target": "typing", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/build_itinerary_excel.py", + "source_location": "L32", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_build_itinerary_excel", + "target": "pandas", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/build_itinerary_excel.py", + "source_location": "L34", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_build_itinerary_excel", + "target": "src_data_dwell_db", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/build_itinerary_excel.py", + "source_location": "L41", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_build_itinerary_excel", + "target": "src_data_hours_db", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/build_itinerary_excel.py", + "source_location": "L42", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_build_itinerary_excel", + "target": "src_data_models", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/build_itinerary_excel.py", + "source_location": "L43", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_build_itinerary_excel", + "target": "src_scoring_cluster_dispersion", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/build_itinerary_excel.py", + "source_location": "L44", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_build_itinerary_excel", + "target": "src_scoring_travel_ratio", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/build_itinerary_excel.py", + "source_location": "L45", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_build_itinerary_excel", + "target": "src_validation_kakao_matrix", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/build_itinerary_excel.py", + "source_location": "L46", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_build_itinerary_excel", + "target": "src_validation_vrptw_engine", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/build_itinerary_excel.py", + "source_location": "L47", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_build_itinerary_excel", + "target": "gun_scripts_build_itinerary_excel_parse_weekday", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/build_itinerary_excel.py", + "source_location": "L99", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_build_itinerary_excel", + "target": "gun_scripts_build_itinerary_excel_minutes_to_hhmm", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/build_itinerary_excel.py", + "source_location": "L109", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_build_itinerary_excel", + "target": "gun_scripts_build_itinerary_excel_check_hours_violations", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/build_itinerary_excel.py", + "source_location": "L115", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_build_itinerary_excel_check_hours_violations", + "target": "src_data_hours_db_hoursspec", + "relation": "references", + "context": "parameter_type", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/build_itinerary_excel.py", + "source_location": "L115", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_build_itinerary_excel", + "target": "gun_scripts_build_itinerary_excel_poimatcher", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/build_itinerary_excel.py", + "source_location": "L161", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_build_itinerary_excel_poimatcher", + "target": "gun_scripts_build_itinerary_excel_poimatcher_init", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/build_itinerary_excel.py", + "source_location": "L164", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_build_itinerary_excel_poimatcher_init", + "target": "gun_scripts_build_itinerary_excel_py_path", + "relation": "references", + "context": "parameter_type", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/build_itinerary_excel.py", + "source_location": "L164", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_build_itinerary_excel_poimatcher", + "target": "gun_scripts_build_itinerary_excel_poimatcher_match", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/build_itinerary_excel.py", + "source_location": "L179", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_build_itinerary_excel_poimatcher", + "target": "gun_scripts_build_itinerary_excel_poimatcher_row_to_dict", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/build_itinerary_excel.py", + "source_location": "L203", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_build_itinerary_excel_poimatcher_row_to_dict", + "target": "gun_scripts_build_itinerary_excel_py_any", + "relation": "references", + "context": "parameter_type", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/build_itinerary_excel.py", + "source_location": "L203", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_build_itinerary_excel", + "target": "gun_scripts_build_itinerary_excel_to_vrptw_place", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/build_itinerary_excel.py", + "source_location": "L219", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_build_itinerary_excel_to_vrptw_place", + "target": "src_data_models_vrptwplace", + "relation": "references", + "context": "return_type", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/build_itinerary_excel.py", + "source_location": "L219", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_build_itinerary_excel", + "target": "gun_scripts_build_itinerary_excel_process_one_day", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/build_itinerary_excel.py", + "source_location": "L237", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_build_itinerary_excel", + "target": "gun_scripts_build_itinerary_excel_main", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/build_itinerary_excel.py", + "source_location": "L356", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_build_itinerary_excel_check_hours_violations", + "target": "gun_scripts_build_itinerary_excel_minutes_to_hhmm", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/build_itinerary_excel.py", + "source_location": "L135", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_build_itinerary_excel_poimatcher_match", + "target": "gun_scripts_build_itinerary_excel_poimatcher_row_to_dict", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/build_itinerary_excel.py", + "source_location": "L188", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_build_itinerary_excel_to_vrptw_place", + "target": "src_data_models_vrptwplace", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/build_itinerary_excel.py", + "source_location": "L226", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_build_itinerary_excel_process_one_day", + "target": "gun_scripts_build_itinerary_excel_to_vrptw_place", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/build_itinerary_excel.py", + "source_location": "L246", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_build_itinerary_excel_process_one_day", + "target": "gun_scripts_build_itinerary_excel_parse_weekday", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/build_itinerary_excel.py", + "source_location": "L273", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_build_itinerary_excel_process_one_day", + "target": "gun_scripts_build_itinerary_excel_check_hours_violations", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/build_itinerary_excel.py", + "source_location": "L280", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_build_itinerary_excel_process_one_day", + "target": "gun_scripts_build_itinerary_excel_minutes_to_hhmm", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/build_itinerary_excel.py", + "source_location": "L285", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_build_itinerary_excel_main", + "target": "gun_scripts_build_itinerary_excel_py_path", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/build_itinerary_excel.py", + "source_location": "L364", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_build_itinerary_excel_main", + "target": "gun_scripts_build_itinerary_excel_poimatcher", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/build_itinerary_excel.py", + "source_location": "L384", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_build_itinerary_excel_main", + "target": "gun_scripts_build_itinerary_excel_poimatcher_match", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/build_itinerary_excel.py", + "source_location": "L389", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_build_itinerary_excel_main", + "target": "gun_scripts_build_itinerary_excel_parse_weekday", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/build_itinerary_excel.py", + "source_location": "L427", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_build_itinerary_excel_main", + "target": "gun_scripts_build_itinerary_excel_process_one_day", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/build_itinerary_excel.py", + "source_location": "L466", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_build_itinerary_excel_rationale_1", + "target": "gun_scripts_build_itinerary_excel", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/build_itinerary_excel.py", + "source_location": "L1", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_build_itinerary_excel_rationale_100", + "target": "gun_scripts_build_itinerary_excel_parse_weekday", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/build_itinerary_excel.py", + "source_location": "L100", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_build_itinerary_excel_rationale_110", + "target": "gun_scripts_build_itinerary_excel_minutes_to_hhmm", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/build_itinerary_excel.py", + "source_location": "L110", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_build_itinerary_excel_rationale_121", + "target": "gun_scripts_build_itinerary_excel_check_hours_violations", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/build_itinerary_excel.py", + "source_location": "L121", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_build_itinerary_excel_rationale_162", + "target": "gun_scripts_build_itinerary_excel_poimatcher", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/build_itinerary_excel.py", + "source_location": "L162", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_build_itinerary_excel_rationale_180", + "target": "gun_scripts_build_itinerary_excel_poimatcher_match", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/build_itinerary_excel.py", + "source_location": "L180", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_build_itinerary_excel_rationale_220", + "target": "gun_scripts_build_itinerary_excel_to_vrptw_place", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/build_itinerary_excel.py", + "source_location": "L220", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_build_itinerary_excel_rationale_241", + "target": "gun_scripts_build_itinerary_excel_process_one_day", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/build_itinerary_excel.py", + "source_location": "L241", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_build_ppt", + "target": "ref_pptxgenjs", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/build_ppt.js", + "source_location": "L17", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_build_ppt", + "target": "gun_scripts_build_ppt_pptxgen", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/build_ppt.js", + "source_location": "L17", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_build_ppt", + "target": "ref_path", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/build_ppt.js", + "source_location": "L18", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_build_ppt", + "target": "gun_scripts_build_ppt_path", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/build_ppt.js", + "source_location": "L18", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_build_ppt", + "target": "gun_scripts_build_ppt_pres", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/build_ppt.js", + "source_location": "L43", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_build_ppt", + "target": "gun_scripts_build_ppt_addpageheader", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/build_ppt.js", + "source_location": "L54", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_build_ppt", + "target": "gun_scripts_build_ppt_addtitle", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/build_ppt.js", + "source_location": "L69", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_build_ppt", + "target": "gun_scripts_build_ppt_addfooter", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/build_ppt.js", + "source_location": "L82", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_build_ppt", + "target": "gun_scripts_build_ppt_addcard", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/build_ppt.js", + "source_location": "L94", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_build_ppt", + "target": "gun_scripts_build_ppt_addstat", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/build_ppt.js", + "source_location": "L112", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_build_ppt", + "target": "gun_scripts_build_ppt_addnumberchip", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/build_ppt.js", + "source_location": "L126", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_build_ppt", + "target": "gun_scripts_build_ppt_output", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/build_ppt.js", + "source_location": "L1656", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_build_travel_matrix", + "target": "argparse", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/build_travel_matrix.py", + "source_location": "L27", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_build_travel_matrix", + "target": "csv", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/build_travel_matrix.py", + "source_location": "L28", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_build_travel_matrix", + "target": "sys", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/build_travel_matrix.py", + "source_location": "L29", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_build_travel_matrix", + "target": "time", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/build_travel_matrix.py", + "source_location": "L30", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_build_travel_matrix", + "target": "pathlib", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/build_travel_matrix.py", + "source_location": "L31", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_build_travel_matrix", + "target": "src_data_models", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/build_travel_matrix.py", + "source_location": "L39", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_build_travel_matrix", + "target": "src_validation_kakao_matrix", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/build_travel_matrix.py", + "source_location": "L40", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_build_travel_matrix", + "target": "gun_scripts_build_travel_matrix_resolve_base_dir", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/build_travel_matrix.py", + "source_location": "L43", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_build_travel_matrix_resolve_base_dir", + "target": "gun_scripts_build_travel_matrix_py_path", + "relation": "references", + "context": "return_type", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/build_travel_matrix.py", + "source_location": "L43", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_build_travel_matrix", + "target": "gun_scripts_build_travel_matrix_load_pois", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/build_travel_matrix.py", + "source_location": "L55", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_build_travel_matrix_load_pois", + "target": "gun_scripts_build_travel_matrix_py_path", + "relation": "references", + "context": "parameter_type", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/build_travel_matrix.py", + "source_location": "L55", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_build_travel_matrix_load_pois", + "target": "src_data_models_vrptwplace", + "relation": "references", + "context": "generic_arg", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/build_travel_matrix.py", + "source_location": "L55", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_build_travel_matrix", + "target": "gun_scripts_build_travel_matrix_build_matrix", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/build_travel_matrix.py", + "source_location": "L83", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_build_travel_matrix_build_matrix", + "target": "src_data_models_vrptwplace", + "relation": "references", + "context": "generic_arg", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/build_travel_matrix.py", + "source_location": "L83", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_build_travel_matrix_build_matrix", + "target": "src_validation_kakao_matrix_kakaomobilitymatrix", + "relation": "references", + "context": "parameter_type", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/build_travel_matrix.py", + "source_location": "L83", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_build_travel_matrix", + "target": "gun_scripts_build_travel_matrix_main", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/build_travel_matrix.py", + "source_location": "L122", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_build_travel_matrix_resolve_base_dir", + "target": "gun_scripts_build_travel_matrix_py_path", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/build_travel_matrix.py", + "source_location": "L45", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_build_travel_matrix_load_pois", + "target": "src_data_models_vrptwplace", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/build_travel_matrix.py", + "source_location": "L74", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_build_travel_matrix_main", + "target": "gun_scripts_build_travel_matrix_py_path", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/build_travel_matrix.py", + "source_location": "L157", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_build_travel_matrix_main", + "target": "gun_scripts_build_travel_matrix_load_pois", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/build_travel_matrix.py", + "source_location": "L164", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_build_travel_matrix_main", + "target": "gun_scripts_build_travel_matrix_build_matrix", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/build_travel_matrix.py", + "source_location": "L184", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_build_travel_matrix_rationale_1", + "target": "gun_scripts_build_travel_matrix", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/build_travel_matrix.py", + "source_location": "L1", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_build_travel_matrix_rationale_62", + "target": "gun_scripts_build_travel_matrix_load_pois", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/build_travel_matrix.py", + "source_location": "L62", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_build_travel_matrix_rationale_88", + "target": "gun_scripts_build_travel_matrix_build_matrix", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/build_travel_matrix.py", + "source_location": "L88", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_create_input_template", + "target": "pathlib", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/create_input_template.py", + "source_location": "L11", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_create_input_template", + "target": "openpyxl", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/create_input_template.py", + "source_location": "L13", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_create_input_template", + "target": "openpyxl_styles", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/create_input_template.py", + "source_location": "L14", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_create_input_template", + "target": "openpyxl_utils", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/create_input_template.py", + "source_location": "L15", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_create_input_template", + "target": "openpyxl_worksheet_datavalidation", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/create_input_template.py", + "source_location": "L16", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_create_input_template", + "target": "gun_scripts_create_input_template_make_workbook", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/create_input_template.py", + "source_location": "L57", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_create_input_template_make_workbook", + "target": "gun_scripts_create_input_template_py_workbook", + "relation": "references", + "context": "return_type", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/create_input_template.py", + "source_location": "L57", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_create_input_template", + "target": "gun_scripts_create_input_template_main", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/create_input_template.py", + "source_location": "L157", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_create_input_template_make_workbook", + "target": "gun_scripts_create_input_template_py_workbook", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/create_input_template.py", + "source_location": "L58", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_create_input_template_main", + "target": "gun_scripts_create_input_template_make_workbook", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/create_input_template.py", + "source_location": "L158", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_create_input_template_rationale_1", + "target": "gun_scripts_create_input_template", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/create_input_template.py", + "source_location": "L1", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_curated_itineraries", + "target": "pathlib", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/curated_itineraries.py", + "source_location": "L20", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_curated_itineraries", + "target": "openpyxl", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/curated_itineraries.py", + "source_location": "L22", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_curated_itineraries", + "target": "openpyxl_styles", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/curated_itineraries.py", + "source_location": "L23", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_curated_itineraries", + "target": "openpyxl_utils", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/curated_itineraries.py", + "source_location": "L24", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_curated_itineraries", + "target": "openpyxl_worksheet_datavalidation", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/curated_itineraries.py", + "source_location": "L25", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_curated_itineraries", + "target": "gun_scripts_curated_itineraries_make_workbook", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/curated_itineraries.py", + "source_location": "L572", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_curated_itineraries_make_workbook", + "target": "gun_scripts_curated_itineraries_py_workbook", + "relation": "references", + "context": "return_type", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/curated_itineraries.py", + "source_location": "L572", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_curated_itineraries", + "target": "gun_scripts_curated_itineraries_main", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/curated_itineraries.py", + "source_location": "L658", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_curated_itineraries_make_workbook", + "target": "gun_scripts_curated_itineraries_py_workbook", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/curated_itineraries.py", + "source_location": "L573", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_curated_itineraries_main", + "target": "gun_scripts_curated_itineraries_make_workbook", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/curated_itineraries.py", + "source_location": "L659", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_curated_itineraries_rationale_1", + "target": "gun_scripts_curated_itineraries", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/curated_itineraries.py", + "source_location": "L1", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_fetch_google_hours", + "target": "argparse", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/fetch_google_hours.py", + "source_location": "L17", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_fetch_google_hours", + "target": "csv", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/fetch_google_hours.py", + "source_location": "L18", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_fetch_google_hours", + "target": "json", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/fetch_google_hours.py", + "source_location": "L19", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_fetch_google_hours", + "target": "os", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/fetch_google_hours.py", + "source_location": "L20", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_fetch_google_hours", + "target": "sys", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/fetch_google_hours.py", + "source_location": "L21", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_fetch_google_hours", + "target": "time", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/fetch_google_hours.py", + "source_location": "L22", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_fetch_google_hours", + "target": "pathlib", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/fetch_google_hours.py", + "source_location": "L23", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_fetch_google_hours", + "target": "typing", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/fetch_google_hours.py", + "source_location": "L24", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_fetch_google_hours", + "target": "httpx", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/fetch_google_hours.py", + "source_location": "L26", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_fetch_google_hours", + "target": "openpyxl", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/fetch_google_hours.py", + "source_location": "L27", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_fetch_google_hours", + "target": "gun_scripts_fetch_google_hours_load_env", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/fetch_google_hours.py", + "source_location": "L41", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_fetch_google_hours_load_env", + "target": "gun_scripts_fetch_google_hours_py_path", + "relation": "references", + "context": "parameter_type", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/fetch_google_hours.py", + "source_location": "L41", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_fetch_google_hours", + "target": "gun_scripts_fetch_google_hours_text_search", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/fetch_google_hours.py", + "source_location": "L58", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_fetch_google_hours", + "target": "gun_scripts_fetch_google_hours_place_details", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/fetch_google_hours.py", + "source_location": "L83", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_fetch_google_hours_place_details", + "target": "gun_scripts_fetch_google_hours_py_any", + "relation": "references", + "context": "generic_arg", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/fetch_google_hours.py", + "source_location": "L83", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_fetch_google_hours", + "target": "gun_scripts_fetch_google_hours_parse_periods", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/fetch_google_hours.py", + "source_location": "L102", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_fetch_google_hours", + "target": "gun_scripts_fetch_google_hours_load_targets", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/fetch_google_hours.py", + "source_location": "L124", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_fetch_google_hours_load_targets", + "target": "gun_scripts_fetch_google_hours_py_path", + "relation": "references", + "context": "parameter_type", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/fetch_google_hours.py", + "source_location": "L124", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_fetch_google_hours", + "target": "gun_scripts_fetch_google_hours_main", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/fetch_google_hours.py", + "source_location": "L148", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_fetch_google_hours_main", + "target": "gun_scripts_fetch_google_hours_load_targets", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/fetch_google_hours.py", + "source_location": "L156", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_fetch_google_hours_main", + "target": "gun_scripts_fetch_google_hours_py_path", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/fetch_google_hours.py", + "source_location": "L156", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_fetch_google_hours_main", + "target": "gun_scripts_fetch_google_hours_text_search", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/fetch_google_hours.py", + "source_location": "L176", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_fetch_google_hours_main", + "target": "gun_scripts_fetch_google_hours_place_details", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/fetch_google_hours.py", + "source_location": "L185", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_fetch_google_hours_main", + "target": "gun_scripts_fetch_google_hours_parse_periods", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/fetch_google_hours.py", + "source_location": "L197", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_fetch_google_hours_rationale_1", + "target": "gun_scripts_fetch_google_hours", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/fetch_google_hours.py", + "source_location": "L1", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_fetch_google_hours_rationale_59", + "target": "gun_scripts_fetch_google_hours_text_search", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/fetch_google_hours.py", + "source_location": "L59", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_fetch_google_hours_rationale_103", + "target": "gun_scripts_fetch_google_hours_parse_periods", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/fetch_google_hours.py", + "source_location": "L103", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_fetch_tourapi_to_csv", + "target": "argparse", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/fetch_tourapi_to_csv.py", + "source_location": "L51", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_fetch_tourapi_to_csv", + "target": "csv", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/fetch_tourapi_to_csv.py", + "source_location": "L52", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_fetch_tourapi_to_csv", + "target": "json", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/fetch_tourapi_to_csv.py", + "source_location": "L53", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_fetch_tourapi_to_csv", + "target": "os", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/fetch_tourapi_to_csv.py", + "source_location": "L54", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_fetch_tourapi_to_csv", + "target": "sys", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/fetch_tourapi_to_csv.py", + "source_location": "L55", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_fetch_tourapi_to_csv", + "target": "time", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/fetch_tourapi_to_csv.py", + "source_location": "L56", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_fetch_tourapi_to_csv", + "target": "dataclasses", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/fetch_tourapi_to_csv.py", + "source_location": "L57", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_fetch_tourapi_to_csv", + "target": "datetime", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/fetch_tourapi_to_csv.py", + "source_location": "L58", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_fetch_tourapi_to_csv", + "target": "pathlib", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/fetch_tourapi_to_csv.py", + "source_location": "L59", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_fetch_tourapi_to_csv", + "target": "typing", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/fetch_tourapi_to_csv.py", + "source_location": "L60", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_fetch_tourapi_to_csv", + "target": "requests", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/fetch_tourapi_to_csv.py", + "source_location": "L62", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_fetch_tourapi_to_csv", + "target": "gun_scripts_fetch_tourapi_to_csv_resolve_base_dir", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/fetch_tourapi_to_csv.py", + "source_location": "L132", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_fetch_tourapi_to_csv_resolve_base_dir", + "target": "gun_scripts_fetch_tourapi_to_csv_py_path", + "relation": "references", + "context": "return_type", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/fetch_tourapi_to_csv.py", + "source_location": "L132", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_fetch_tourapi_to_csv", + "target": "gun_scripts_fetch_tourapi_to_csv_load_env", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/fetch_tourapi_to_csv.py", + "source_location": "L156", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_fetch_tourapi_to_csv", + "target": "gun_scripts_fetch_tourapi_to_csv_checkpoint", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/fetch_tourapi_to_csv.py", + "source_location": "L177", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_fetch_tourapi_to_csv_checkpoint", + "target": "gun_scripts_fetch_tourapi_to_csv_checkpoint_load", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/fetch_tourapi_to_csv.py", + "source_location": "L188", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_fetch_tourapi_to_csv_checkpoint", + "target": "gun_scripts_fetch_tourapi_to_csv_checkpoint_save", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/fetch_tourapi_to_csv.py", + "source_location": "L200", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_fetch_tourapi_to_csv_checkpoint", + "target": "gun_scripts_fetch_tourapi_to_csv_checkpoint_increment_daily", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/fetch_tourapi_to_csv.py", + "source_location": "L213", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_fetch_tourapi_to_csv_checkpoint", + "target": "gun_scripts_fetch_tourapi_to_csv_checkpoint_remaining_today", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/fetch_tourapi_to_csv.py", + "source_location": "L222", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_fetch_tourapi_to_csv_checkpoint", + "target": "gun_scripts_fetch_tourapi_to_csv_checkpoint_key", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/fetch_tourapi_to_csv.py", + "source_location": "L229", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_fetch_tourapi_to_csv_checkpoint", + "target": "gun_scripts_fetch_tourapi_to_csv_checkpoint_is_done", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/fetch_tourapi_to_csv.py", + "source_location": "L232", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_fetch_tourapi_to_csv_checkpoint", + "target": "gun_scripts_fetch_tourapi_to_csv_checkpoint_mark_done", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/fetch_tourapi_to_csv.py", + "source_location": "L235", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_fetch_tourapi_to_csv", + "target": "gun_scripts_fetch_tourapi_to_csv_dailylimitreached", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/fetch_tourapi_to_csv.py", + "source_location": "L240", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_fetch_tourapi_to_csv_dailylimitreached", + "target": "gun_scripts_fetch_tourapi_to_csv_py_exception", + "relation": "inherits", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/fetch_tourapi_to_csv.py", + "source_location": "L240", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_fetch_tourapi_to_csv", + "target": "gun_scripts_fetch_tourapi_to_csv_call_api", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/fetch_tourapi_to_csv.py", + "source_location": "L244", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_fetch_tourapi_to_csv_call_api", + "target": "gun_scripts_fetch_tourapi_to_csv_py_any", + "relation": "references", + "context": "generic_arg", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/fetch_tourapi_to_csv.py", + "source_location": "L244", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_fetch_tourapi_to_csv_call_api", + "target": "gun_scripts_fetch_tourapi_to_csv_checkpoint", + "relation": "references", + "context": "parameter_type", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/fetch_tourapi_to_csv.py", + "source_location": "L244", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_fetch_tourapi_to_csv", + "target": "gun_scripts_fetch_tourapi_to_csv_parse_items", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/fetch_tourapi_to_csv.py", + "source_location": "L333", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_fetch_tourapi_to_csv", + "target": "gun_scripts_fetch_tourapi_to_csv_get_total_count", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/fetch_tourapi_to_csv.py", + "source_location": "L345", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_fetch_tourapi_to_csv", + "target": "gun_scripts_fetch_tourapi_to_csv_csvappender", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/fetch_tourapi_to_csv.py", + "source_location": "L351", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_fetch_tourapi_to_csv_csvappender", + "target": "gun_scripts_fetch_tourapi_to_csv_csvappender_init", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/fetch_tourapi_to_csv.py", + "source_location": "L352", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_fetch_tourapi_to_csv_csvappender_init", + "target": "gun_scripts_fetch_tourapi_to_csv_py_path", + "relation": "references", + "context": "parameter_type", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/fetch_tourapi_to_csv.py", + "source_location": "L352", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_fetch_tourapi_to_csv_csvappender", + "target": "gun_scripts_fetch_tourapi_to_csv_csvappender_enter", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/fetch_tourapi_to_csv.py", + "source_location": "L358", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_fetch_tourapi_to_csv_csvappender", + "target": "gun_scripts_fetch_tourapi_to_csv_csvappender_exit", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/fetch_tourapi_to_csv.py", + "source_location": "L367", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_fetch_tourapi_to_csv_csvappender", + "target": "gun_scripts_fetch_tourapi_to_csv_csvappender_write", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/fetch_tourapi_to_csv.py", + "source_location": "L371", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_fetch_tourapi_to_csv_csvappender", + "target": "gun_scripts_fetch_tourapi_to_csv_csvappender_write_many", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/fetch_tourapi_to_csv.py", + "source_location": "L374", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_fetch_tourapi_to_csv", + "target": "gun_scripts_fetch_tourapi_to_csv_is_valid_kr_coord", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/fetch_tourapi_to_csv.py", + "source_location": "L379", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_fetch_tourapi_to_csv", + "target": "gun_scripts_fetch_tourapi_to_csv_fetch_ldong_codes", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/fetch_tourapi_to_csv.py", + "source_location": "L391", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_fetch_tourapi_to_csv_fetch_ldong_codes", + "target": "gun_scripts_fetch_tourapi_to_csv_checkpoint", + "relation": "references", + "context": "parameter_type", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/fetch_tourapi_to_csv.py", + "source_location": "L391", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_fetch_tourapi_to_csv", + "target": "gun_scripts_fetch_tourapi_to_csv_fetch_classification_codes", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/fetch_tourapi_to_csv.py", + "source_location": "L503", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_fetch_tourapi_to_csv_fetch_classification_codes", + "target": "gun_scripts_fetch_tourapi_to_csv_checkpoint", + "relation": "references", + "context": "parameter_type", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/fetch_tourapi_to_csv.py", + "source_location": "L503", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_fetch_tourapi_to_csv", + "target": "gun_scripts_fetch_tourapi_to_csv_fetch_pois", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/fetch_tourapi_to_csv.py", + "source_location": "L565", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_fetch_tourapi_to_csv_fetch_pois", + "target": "gun_scripts_fetch_tourapi_to_csv_checkpoint", + "relation": "references", + "context": "parameter_type", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/fetch_tourapi_to_csv.py", + "source_location": "L565", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_fetch_tourapi_to_csv", + "target": "gun_scripts_fetch_tourapi_to_csv_process_items", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/fetch_tourapi_to_csv.py", + "source_location": "L648", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_fetch_tourapi_to_csv_process_items", + "target": "gun_scripts_fetch_tourapi_to_csv_csvappender", + "relation": "references", + "context": "parameter_type", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/fetch_tourapi_to_csv.py", + "source_location": "L648", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_fetch_tourapi_to_csv_process_items", + "target": "gun_scripts_fetch_tourapi_to_csv_checkpoint", + "relation": "references", + "context": "parameter_type", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/fetch_tourapi_to_csv.py", + "source_location": "L648", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_fetch_tourapi_to_csv", + "target": "gun_scripts_fetch_tourapi_to_csv_fetch_festivals", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/fetch_tourapi_to_csv.py", + "source_location": "L673", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_fetch_tourapi_to_csv_fetch_festivals", + "target": "gun_scripts_fetch_tourapi_to_csv_checkpoint", + "relation": "references", + "context": "parameter_type", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/fetch_tourapi_to_csv.py", + "source_location": "L673", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_fetch_tourapi_to_csv", + "target": "gun_scripts_fetch_tourapi_to_csv_enrich_operating_hours", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/fetch_tourapi_to_csv.py", + "source_location": "L756", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_fetch_tourapi_to_csv_enrich_operating_hours", + "target": "gun_scripts_fetch_tourapi_to_csv_checkpoint", + "relation": "references", + "context": "parameter_type", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/fetch_tourapi_to_csv.py", + "source_location": "L756", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_fetch_tourapi_to_csv", + "target": "gun_scripts_fetch_tourapi_to_csv_test_connection", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/fetch_tourapi_to_csv.py", + "source_location": "L815", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_fetch_tourapi_to_csv", + "target": "gun_scripts_fetch_tourapi_to_csv_main", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/fetch_tourapi_to_csv.py", + "source_location": "L839", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_fetch_tourapi_to_csv_resolve_base_dir", + "target": "gun_scripts_fetch_tourapi_to_csv_py_path", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/fetch_tourapi_to_csv.py", + "source_location": "L134", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_fetch_tourapi_to_csv_checkpoint_is_done", + "target": "gun_scripts_fetch_tourapi_to_csv_checkpoint_key", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/fetch_tourapi_to_csv.py", + "source_location": "L233", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_fetch_tourapi_to_csv_checkpoint_mark_done", + "target": "gun_scripts_fetch_tourapi_to_csv_checkpoint_key", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/fetch_tourapi_to_csv.py", + "source_location": "L236", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_fetch_tourapi_to_csv_call_api", + "target": "gun_scripts_fetch_tourapi_to_csv_checkpoint_remaining_today", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/fetch_tourapi_to_csv.py", + "source_location": "L254", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_fetch_tourapi_to_csv_call_api", + "target": "gun_scripts_fetch_tourapi_to_csv_dailylimitreached", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/fetch_tourapi_to_csv.py", + "source_location": "L256", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_fetch_tourapi_to_csv_call_api", + "target": "gun_scripts_fetch_tourapi_to_csv_checkpoint_increment_daily", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/fetch_tourapi_to_csv.py", + "source_location": "L273", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_fetch_tourapi_to_csv_fetch_ldong_codes", + "target": "gun_scripts_fetch_tourapi_to_csv_call_api", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/fetch_tourapi_to_csv.py", + "source_location": "L400", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_fetch_tourapi_to_csv_fetch_ldong_codes", + "target": "gun_scripts_fetch_tourapi_to_csv_parse_items", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/fetch_tourapi_to_csv.py", + "source_location": "L410", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_fetch_tourapi_to_csv_fetch_ldong_codes", + "target": "gun_scripts_fetch_tourapi_to_csv_get_total_count", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/fetch_tourapi_to_csv.py", + "source_location": "L482", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_fetch_tourapi_to_csv_fetch_classification_codes", + "target": "gun_scripts_fetch_tourapi_to_csv_call_api", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/fetch_tourapi_to_csv.py", + "source_location": "L510", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_fetch_tourapi_to_csv_fetch_classification_codes", + "target": "gun_scripts_fetch_tourapi_to_csv_parse_items", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/fetch_tourapi_to_csv.py", + "source_location": "L520", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_fetch_tourapi_to_csv_fetch_pois", + "target": "gun_scripts_fetch_tourapi_to_csv_csvappender", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/fetch_tourapi_to_csv.py", + "source_location": "L579", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_fetch_tourapi_to_csv_fetch_pois", + "target": "gun_scripts_fetch_tourapi_to_csv_call_api", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/fetch_tourapi_to_csv.py", + "source_location": "L601", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_fetch_tourapi_to_csv_fetch_pois", + "target": "gun_scripts_fetch_tourapi_to_csv_get_total_count", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/fetch_tourapi_to_csv.py", + "source_location": "L607", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_fetch_tourapi_to_csv_fetch_pois", + "target": "gun_scripts_fetch_tourapi_to_csv_checkpoint_remaining_today", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/fetch_tourapi_to_csv.py", + "source_location": "L609", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_fetch_tourapi_to_csv_fetch_pois", + "target": "gun_scripts_fetch_tourapi_to_csv_checkpoint_is_done", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/fetch_tourapi_to_csv.py", + "source_location": "L614", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_fetch_tourapi_to_csv_fetch_pois", + "target": "gun_scripts_fetch_tourapi_to_csv_process_items", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/fetch_tourapi_to_csv.py", + "source_location": "L615", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_fetch_tourapi_to_csv_fetch_pois", + "target": "gun_scripts_fetch_tourapi_to_csv_parse_items", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/fetch_tourapi_to_csv.py", + "source_location": "L615", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_fetch_tourapi_to_csv_fetch_pois", + "target": "gun_scripts_fetch_tourapi_to_csv_checkpoint_mark_done", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/fetch_tourapi_to_csv.py", + "source_location": "L617", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_fetch_tourapi_to_csv_fetch_pois", + "target": "gun_scripts_fetch_tourapi_to_csv_checkpoint_save", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/fetch_tourapi_to_csv.py", + "source_location": "L628", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_fetch_tourapi_to_csv_process_items", + "target": "gun_scripts_fetch_tourapi_to_csv_is_valid_kr_coord", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/fetch_tourapi_to_csv.py", + "source_location": "L662", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_fetch_tourapi_to_csv_process_items", + "target": "gun_scripts_fetch_tourapi_to_csv_csvappender_write", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/fetch_tourapi_to_csv.py", + "source_location": "L666", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_fetch_tourapi_to_csv_fetch_festivals", + "target": "gun_scripts_fetch_tourapi_to_csv_call_api", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/fetch_tourapi_to_csv.py", + "source_location": "L700", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_fetch_tourapi_to_csv_fetch_festivals", + "target": "gun_scripts_fetch_tourapi_to_csv_get_total_count", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/fetch_tourapi_to_csv.py", + "source_location": "L706", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_fetch_tourapi_to_csv_fetch_festivals", + "target": "gun_scripts_fetch_tourapi_to_csv_checkpoint_remaining_today", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/fetch_tourapi_to_csv.py", + "source_location": "L708", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_fetch_tourapi_to_csv_fetch_festivals", + "target": "gun_scripts_fetch_tourapi_to_csv_csvappender", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/fetch_tourapi_to_csv.py", + "source_location": "L732", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_fetch_tourapi_to_csv_fetch_festivals", + "target": "gun_scripts_fetch_tourapi_to_csv_parse_items", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/fetch_tourapi_to_csv.py", + "source_location": "L734", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_fetch_tourapi_to_csv_enrich_operating_hours", + "target": "gun_scripts_fetch_tourapi_to_csv_checkpoint_remaining_today", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/fetch_tourapi_to_csv.py", + "source_location": "L773", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_fetch_tourapi_to_csv_enrich_operating_hours", + "target": "gun_scripts_fetch_tourapi_to_csv_csvappender", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/fetch_tourapi_to_csv.py", + "source_location": "L777", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_fetch_tourapi_to_csv_enrich_operating_hours", + "target": "gun_scripts_fetch_tourapi_to_csv_call_api", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/fetch_tourapi_to_csv.py", + "source_location": "L780", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_fetch_tourapi_to_csv_enrich_operating_hours", + "target": "gun_scripts_fetch_tourapi_to_csv_parse_items", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/fetch_tourapi_to_csv.py", + "source_location": "L794", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_fetch_tourapi_to_csv_enrich_operating_hours", + "target": "gun_scripts_fetch_tourapi_to_csv_csvappender_write", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/fetch_tourapi_to_csv.py", + "source_location": "L802", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_fetch_tourapi_to_csv_enrich_operating_hours", + "target": "gun_scripts_fetch_tourapi_to_csv_checkpoint_save", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/fetch_tourapi_to_csv.py", + "source_location": "L807", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_fetch_tourapi_to_csv_test_connection", + "target": "gun_scripts_fetch_tourapi_to_csv_call_api", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/fetch_tourapi_to_csv.py", + "source_location": "L818", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_fetch_tourapi_to_csv_test_connection", + "target": "gun_scripts_fetch_tourapi_to_csv_parse_items", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/fetch_tourapi_to_csv.py", + "source_location": "L828", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_fetch_tourapi_to_csv_main", + "target": "gun_scripts_fetch_tourapi_to_csv_load_env", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/fetch_tourapi_to_csv.py", + "source_location": "L883", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_fetch_tourapi_to_csv_main", + "target": "gun_scripts_fetch_tourapi_to_csv_test_connection", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/fetch_tourapi_to_csv.py", + "source_location": "L887", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_fetch_tourapi_to_csv_main", + "target": "gun_scripts_fetch_tourapi_to_csv_fetch_festivals", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/fetch_tourapi_to_csv.py", + "source_location": "L908", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_fetch_tourapi_to_csv_main", + "target": "gun_scripts_fetch_tourapi_to_csv_enrich_operating_hours", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/fetch_tourapi_to_csv.py", + "source_location": "L917", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_fetch_tourapi_to_csv_main", + "target": "gun_scripts_fetch_tourapi_to_csv_fetch_ldong_codes", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/fetch_tourapi_to_csv.py", + "source_location": "L922", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_fetch_tourapi_to_csv_main", + "target": "gun_scripts_fetch_tourapi_to_csv_fetch_classification_codes", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/fetch_tourapi_to_csv.py", + "source_location": "L923", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_fetch_tourapi_to_csv_main", + "target": "gun_scripts_fetch_tourapi_to_csv_fetch_pois", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/fetch_tourapi_to_csv.py", + "source_location": "L961", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_fetch_tourapi_to_csv_main", + "target": "gun_scripts_fetch_tourapi_to_csv_checkpoint_save", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/fetch_tourapi_to_csv.py", + "source_location": "L969", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_fetch_tourapi_to_csv_rationale_2", + "target": "gun_scripts_fetch_tourapi_to_csv", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/fetch_tourapi_to_csv.py", + "source_location": "L2", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_fetch_tourapi_to_csv_rationale_178", + "target": "gun_scripts_fetch_tourapi_to_csv_checkpoint", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/fetch_tourapi_to_csv.py", + "source_location": "L178", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_fetch_tourapi_to_csv_rationale_241", + "target": "gun_scripts_fetch_tourapi_to_csv_dailylimitreached", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/fetch_tourapi_to_csv.py", + "source_location": "L241", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_fetch_tourapi_to_csv_rationale_250", + "target": "gun_scripts_fetch_tourapi_to_csv_call_api", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/fetch_tourapi_to_csv.py", + "source_location": "L250", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_fetch_tourapi_to_csv_rationale_334", + "target": "gun_scripts_fetch_tourapi_to_csv_parse_items", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/fetch_tourapi_to_csv.py", + "source_location": "L334", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_fetch_tourapi_to_csv_rationale_392", + "target": "gun_scripts_fetch_tourapi_to_csv_fetch_ldong_codes", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/fetch_tourapi_to_csv.py", + "source_location": "L392", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_fetch_tourapi_to_csv_rationale_504", + "target": "gun_scripts_fetch_tourapi_to_csv_fetch_classification_codes", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/fetch_tourapi_to_csv.py", + "source_location": "L504", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_fetch_tourapi_to_csv_rationale_572", + "target": "gun_scripts_fetch_tourapi_to_csv_fetch_pois", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/fetch_tourapi_to_csv.py", + "source_location": "L572", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_fetch_tourapi_to_csv_rationale_653", + "target": "gun_scripts_fetch_tourapi_to_csv_process_items", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/fetch_tourapi_to_csv.py", + "source_location": "L653", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_fetch_tourapi_to_csv_rationale_679", + "target": "gun_scripts_fetch_tourapi_to_csv_fetch_festivals", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/fetch_tourapi_to_csv.py", + "source_location": "L679", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_fetch_tourapi_to_csv_rationale_757", + "target": "gun_scripts_fetch_tourapi_to_csv_enrich_operating_hours", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/fetch_tourapi_to_csv.py", + "source_location": "L757", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_inspect_json", + "target": "argparse", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/inspect_json.py", + "source_location": "L17", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_inspect_json", + "target": "json", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/inspect_json.py", + "source_location": "L18", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_inspect_json", + "target": "sys", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/inspect_json.py", + "source_location": "L19", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_inspect_json", + "target": "pathlib", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/inspect_json.py", + "source_location": "L20", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_inspect_json", + "target": "typing", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/inspect_json.py", + "source_location": "L21", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_inspect_json", + "target": "gun_scripts_inspect_json_get_path", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/inspect_json.py", + "source_location": "L24", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_inspect_json_get_path", + "target": "gun_scripts_inspect_json_py_any", + "relation": "references", + "context": "parameter_type", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/inspect_json.py", + "source_location": "L24", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_inspect_json", + "target": "gun_scripts_inspect_json_describe", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/inspect_json.py", + "source_location": "L44", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_inspect_json_describe", + "target": "gun_scripts_inspect_json_py_any", + "relation": "references", + "context": "parameter_type", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/inspect_json.py", + "source_location": "L44", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_inspect_json", + "target": "gun_scripts_inspect_json_print_tree", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/inspect_json.py", + "source_location": "L59", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_inspect_json_print_tree", + "target": "gun_scripts_inspect_json_py_any", + "relation": "references", + "context": "parameter_type", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/inspect_json.py", + "source_location": "L59", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_inspect_json", + "target": "gun_scripts_inspect_json_search_in", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/inspect_json.py", + "source_location": "L86", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_inspect_json_search_in", + "target": "gun_scripts_inspect_json_py_any", + "relation": "references", + "context": "parameter_type", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/inspect_json.py", + "source_location": "L86", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_inspect_json", + "target": "gun_scripts_inspect_json_main", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/inspect_json.py", + "source_location": "L105", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_inspect_json_print_tree", + "target": "gun_scripts_inspect_json_describe", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/inspect_json.py", + "source_location": "L70", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_inspect_json_main", + "target": "gun_scripts_inspect_json_get_path", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/inspect_json.py", + "source_location": "L126", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_inspect_json_main", + "target": "gun_scripts_inspect_json_search_in", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/inspect_json.py", + "source_location": "L132", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_inspect_json_main", + "target": "gun_scripts_inspect_json_describe", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/inspect_json.py", + "source_location": "L135", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_inspect_json_main", + "target": "gun_scripts_inspect_json_print_tree", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/inspect_json.py", + "source_location": "L143", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_inspect_json_rationale_1", + "target": "gun_scripts_inspect_json", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/inspect_json.py", + "source_location": "L1", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_inspect_json_rationale_25", + "target": "gun_scripts_inspect_json_get_path", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/inspect_json.py", + "source_location": "L25", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_inspect_json_rationale_60", + "target": "gun_scripts_inspect_json_print_tree", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/inspect_json.py", + "source_location": "L60", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_inspect_json_rationale_87", + "target": "gun_scripts_inspect_json_search_in", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/inspect_json.py", + "source_location": "L87", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_preprocess_pois", + "target": "argparse", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/preprocess_pois.py", + "source_location": "L25", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_preprocess_pois", + "target": "sys", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/preprocess_pois.py", + "source_location": "L26", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_preprocess_pois", + "target": "pathlib", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/preprocess_pois.py", + "source_location": "L27", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_preprocess_pois", + "target": "pandas", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/preprocess_pois.py", + "source_location": "L29", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_preprocess_pois", + "target": "gun_scripts_preprocess_pois_parse_korean_address", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/preprocess_pois.py", + "source_location": "L37", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_preprocess_pois", + "target": "gun_scripts_preprocess_pois_split_address_columns", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/preprocess_pois.py", + "source_location": "L92", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_preprocess_pois_split_address_columns", + "target": "gun_scripts_preprocess_pois_py_dataframe", + "relation": "references", + "context": "parameter_type", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/preprocess_pois.py", + "source_location": "L92", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_preprocess_pois", + "target": "gun_scripts_preprocess_pois_parse_eup_myeon_ri", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/preprocess_pois.py", + "source_location": "L120", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_preprocess_pois", + "target": "gun_scripts_preprocess_pois_split_eup_myeon_ri_columns", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/preprocess_pois.py", + "source_location": "L150", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_preprocess_pois_split_eup_myeon_ri_columns", + "target": "gun_scripts_preprocess_pois_py_dataframe", + "relation": "references", + "context": "parameter_type", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/preprocess_pois.py", + "source_location": "L150", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_preprocess_pois", + "target": "gun_scripts_preprocess_pois_split_date_columns", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/preprocess_pois.py", + "source_location": "L175", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_preprocess_pois_split_date_columns", + "target": "gun_scripts_preprocess_pois_py_dataframe", + "relation": "references", + "context": "parameter_type", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/preprocess_pois.py", + "source_location": "L175", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_preprocess_pois", + "target": "gun_scripts_preprocess_pois_preprocess", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/preprocess_pois.py", + "source_location": "L202", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_preprocess_pois_preprocess", + "target": "gun_scripts_preprocess_pois_py_path", + "relation": "references", + "context": "parameter_type", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/preprocess_pois.py", + "source_location": "L202", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_preprocess_pois", + "target": "gun_scripts_preprocess_pois_main", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/preprocess_pois.py", + "source_location": "L273", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_preprocess_pois_split_address_columns", + "target": "gun_scripts_preprocess_pois_parse_korean_address", + "relation": "indirect_call", + "context": "argument", + "confidence": "INFERRED", + "source_file": "gun/scripts/preprocess_pois.py", + "source_location": "L101", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_preprocess_pois_split_eup_myeon_ri_columns", + "target": "gun_scripts_preprocess_pois_parse_eup_myeon_ri", + "relation": "indirect_call", + "context": "argument", + "confidence": "INFERRED", + "source_file": "gun/scripts/preprocess_pois.py", + "source_location": "L159", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_preprocess_pois_preprocess", + "target": "gun_scripts_preprocess_pois_split_address_columns", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/preprocess_pois.py", + "source_location": "L223", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_preprocess_pois_preprocess", + "target": "gun_scripts_preprocess_pois_split_eup_myeon_ri_columns", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/preprocess_pois.py", + "source_location": "L226", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_preprocess_pois_preprocess", + "target": "gun_scripts_preprocess_pois_split_date_columns", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/preprocess_pois.py", + "source_location": "L232", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_preprocess_pois_main", + "target": "gun_scripts_preprocess_pois_py_path", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/preprocess_pois.py", + "source_location": "L285", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_preprocess_pois_main", + "target": "gun_scripts_preprocess_pois_preprocess", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/preprocess_pois.py", + "source_location": "L295", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_preprocess_pois_rationale_1", + "target": "gun_scripts_preprocess_pois", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/preprocess_pois.py", + "source_location": "L1", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_preprocess_pois_rationale_38", + "target": "gun_scripts_preprocess_pois_parse_korean_address", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/preprocess_pois.py", + "source_location": "L38", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_preprocess_pois_rationale_121", + "target": "gun_scripts_preprocess_pois_parse_eup_myeon_ri", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/preprocess_pois.py", + "source_location": "L121", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_preprocess_pois_rationale_181", + "target": "gun_scripts_preprocess_pois_split_date_columns", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/preprocess_pois.py", + "source_location": "L181", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_setup_and_test", + "target": "os", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/setup_and_test.py", + "source_location": "L11", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_setup_and_test", + "target": "sys", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/setup_and_test.py", + "source_location": "L12", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_setup_and_test", + "target": "pathlib", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/setup_and_test.py", + "source_location": "L13", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_setup_and_test", + "target": "dotenv", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/setup_and_test.py", + "source_location": "L28", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_setup_and_test", + "target": "src_validation_kakao_matrix", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/setup_and_test.py", + "source_location": "L47", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_setup_and_test", + "target": "src_data_models", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/setup_and_test.py", + "source_location": "L48", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_setup_and_test_rationale_1", + "target": "gun_scripts_setup_and_test", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/setup_and_test.py", + "source_location": "L1", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "package", + "target": "package_dependencies", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "package.json", + "source_location": "L2", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "package_dependencies", + "target": "package_dependencies_pptxgenjs", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "package.json", + "source_location": "L3", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "package_dependencies_pptxgenjs", + "target": "pptxgenjs", + "relation": "imports", + "confidence": "EXTRACTED", + "source_file": "package.json", + "source_location": "L3", + "weight": 1.0, + "context": "import", + "_origin": "ast" + }, + { + "source": "phases_0_setup_analyze", + "target": "json", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "phases/0-setup/analyze.py", + "source_location": "L5", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "phases_0_setup_analyze", + "target": "os", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "phases/0-setup/analyze.py", + "source_location": "L5", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "phases_0_setup_analyze", + "target": "re", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "phases/0-setup/analyze.py", + "source_location": "L5", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "phases_0_setup_analyze", + "target": "time", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "phases/0-setup/analyze.py", + "source_location": "L5", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "phases_0_setup_analyze", + "target": "requests", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "phases/0-setup/analyze.py", + "source_location": "L5", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "phases_0_setup_analyze", + "target": "statistics", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "phases/0-setup/analyze.py", + "source_location": "L5", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "phases_0_setup_analyze", + "target": "math", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "phases/0-setup/analyze.py", + "source_location": "L5", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "phases_0_setup_analyze", + "target": "threading", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "phases/0-setup/analyze.py", + "source_location": "L5", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "phases_0_setup_analyze", + "target": "concurrent_futures", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "phases/0-setup/analyze.py", + "source_location": "L6", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "phases_0_setup_analyze", + "target": "pathlib", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "phases/0-setup/analyze.py", + "source_location": "L7", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "phases_0_setup_analyze", + "target": "collections", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "phases/0-setup/analyze.py", + "source_location": "L8", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "phases_0_setup_analyze", + "target": "phases_0_setup_analyze_load_env", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "phases/0-setup/analyze.py", + "source_location": "L14", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "phases_0_setup_analyze", + "target": "phases_0_setup_analyze_parse_cell", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "phases/0-setup/analyze.py", + "source_location": "L43", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "phases_0_setup_analyze", + "target": "phases_0_setup_analyze_geocode_tourapi", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "phases/0-setup/analyze.py", + "source_location": "L106", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "phases_0_setup_analyze", + "target": "phases_0_setup_analyze_geocode_kakao_local", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "phases/0-setup/analyze.py", + "source_location": "L129", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "phases_0_setup_analyze", + "target": "phases_0_setup_analyze_geocode_nominatim", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "phases/0-setup/analyze.py", + "source_location": "L153", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "phases_0_setup_analyze", + "target": "phases_0_setup_analyze_geocode_single", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "phases/0-setup/analyze.py", + "source_location": "L170", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "phases_0_setup_analyze", + "target": "phases_0_setup_analyze_haversine_travel_sec", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "phases/0-setup/analyze.py", + "source_location": "L218", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "phases_0_setup_analyze", + "target": "phases_0_setup_analyze_get_travel_time", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "phases/0-setup/analyze.py", + "source_location": "L225", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "phases_0_setup_analyze", + "target": "phases_0_setup_analyze_haversine", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "phases/0-setup/analyze.py", + "source_location": "L258", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "phases_0_setup_analyze", + "target": "phases_0_setup_analyze_cluster_label", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "phases/0-setup/analyze.py", + "source_location": "L266", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "phases_0_setup_analyze", + "target": "phases_0_setup_analyze_percentile", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "phases/0-setup/analyze.py", + "source_location": "L351", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "phases_0_setup_analyze", + "target": "phases_0_setup_analyze_stats_block", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "phases/0-setup/analyze.py", + "source_location": "L372", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "phases_0_setup_analyze_geocode_single", + "target": "phases_0_setup_analyze_geocode_tourapi", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "phases/0-setup/analyze.py", + "source_location": "L173", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "phases_0_setup_analyze_geocode_single", + "target": "phases_0_setup_analyze_geocode_kakao_local", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "phases/0-setup/analyze.py", + "source_location": "L175", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "phases_0_setup_analyze_geocode_single", + "target": "phases_0_setup_analyze_geocode_nominatim", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "phases/0-setup/analyze.py", + "source_location": "L179", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "phases_0_setup_analyze_haversine_travel_sec", + "target": "phases_0_setup_analyze_haversine", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "phases/0-setup/analyze.py", + "source_location": "L220", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "phases_0_setup_analyze_get_travel_time", + "target": "phases_0_setup_analyze_haversine_travel_sec", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "phases/0-setup/analyze.py", + "source_location": "L255", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "phases_0_setup_analyze_stats_block", + "target": "phases_0_setup_analyze_percentile", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "phases/0-setup/analyze.py", + "source_location": "L380", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "phases_0_setup_analyze_rationale_1", + "target": "phases_0_setup_analyze", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "phases/0-setup/analyze.py", + "source_location": "L1", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "phases_0_setup_analyze_rationale_44", + "target": "phases_0_setup_analyze_parse_cell", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "phases/0-setup/analyze.py", + "source_location": "L44", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "phases_0_setup_analyze_rationale_130", + "target": "phases_0_setup_analyze_geocode_kakao_local", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "phases/0-setup/analyze.py", + "source_location": "L130", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "phases_0_setup_analyze_rationale_171", + "target": "phases_0_setup_analyze_geocode_single", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "phases/0-setup/analyze.py", + "source_location": "L171", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "phases_0_setup_analyze_rationale_219", + "target": "phases_0_setup_analyze_haversine_travel_sec", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "phases/0-setup/analyze.py", + "source_location": "L219", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "phases_0_setup_analyze_rationale_267", + "target": "phases_0_setup_analyze_cluster_label", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "phases/0-setup/analyze.py", + "source_location": "L267", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "phases_0_setup_analyze_triple", + "target": "json", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "phases/0-setup/analyze_triple.py", + "source_location": "L5", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "phases_0_setup_analyze_triple", + "target": "os", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "phases/0-setup/analyze_triple.py", + "source_location": "L5", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "phases_0_setup_analyze_triple", + "target": "re", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "phases/0-setup/analyze_triple.py", + "source_location": "L5", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "phases_0_setup_analyze_triple", + "target": "time", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "phases/0-setup/analyze_triple.py", + "source_location": "L5", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "phases_0_setup_analyze_triple", + "target": "requests", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "phases/0-setup/analyze_triple.py", + "source_location": "L5", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "phases_0_setup_analyze_triple", + "target": "statistics", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "phases/0-setup/analyze_triple.py", + "source_location": "L5", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "phases_0_setup_analyze_triple", + "target": "math", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "phases/0-setup/analyze_triple.py", + "source_location": "L5", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "phases_0_setup_analyze_triple", + "target": "threading", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "phases/0-setup/analyze_triple.py", + "source_location": "L5", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "phases_0_setup_analyze_triple", + "target": "concurrent_futures", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "phases/0-setup/analyze_triple.py", + "source_location": "L6", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "phases_0_setup_analyze_triple", + "target": "pathlib", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "phases/0-setup/analyze_triple.py", + "source_location": "L7", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "phases_0_setup_analyze_triple", + "target": "phases_0_setup_analyze_triple_load_env", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "phases/0-setup/analyze_triple.py", + "source_location": "L12", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "phases_0_setup_analyze_triple", + "target": "openpyxl", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "phases/0-setup/analyze_triple.py", + "source_location": "L59", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "phases_0_setup_analyze_triple", + "target": "phases_0_setup_analyze_triple_parse_numbered", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "phases/0-setup/analyze_triple.py", + "source_location": "L68", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "phases_0_setup_analyze_triple", + "target": "phases_0_setup_analyze_triple_geocode_tourapi", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "phases/0-setup/analyze_triple.py", + "source_location": "L159", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "phases_0_setup_analyze_triple", + "target": "phases_0_setup_analyze_triple_geocode_kakao_local", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "phases/0-setup/analyze_triple.py", + "source_location": "L182", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "phases_0_setup_analyze_triple", + "target": "phases_0_setup_analyze_triple_geocode_nominatim", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "phases/0-setup/analyze_triple.py", + "source_location": "L206", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "phases_0_setup_analyze_triple", + "target": "phases_0_setup_analyze_triple_geocode_single", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "phases/0-setup/analyze_triple.py", + "source_location": "L223", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "phases_0_setup_analyze_triple", + "target": "phases_0_setup_analyze_triple_haversine", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "phases/0-setup/analyze_triple.py", + "source_location": "L265", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "phases_0_setup_analyze_triple", + "target": "phases_0_setup_analyze_triple_haversine_travel_sec", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "phases/0-setup/analyze_triple.py", + "source_location": "L273", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "phases_0_setup_analyze_triple", + "target": "phases_0_setup_analyze_triple_get_travel_time", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "phases/0-setup/analyze_triple.py", + "source_location": "L279", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "phases_0_setup_analyze_triple", + "target": "phases_0_setup_analyze_triple_cluster_label", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "phases/0-setup/analyze_triple.py", + "source_location": "L308", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "phases_0_setup_analyze_triple", + "target": "phases_0_setup_analyze_triple_percentile", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "phases/0-setup/analyze_triple.py", + "source_location": "L388", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "phases_0_setup_analyze_triple", + "target": "phases_0_setup_analyze_triple_stats_block", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "phases/0-setup/analyze_triple.py", + "source_location": "L394", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "phases_0_setup_analyze_triple_geocode_single", + "target": "phases_0_setup_analyze_triple_geocode_tourapi", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "phases/0-setup/analyze_triple.py", + "source_location": "L226", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "phases_0_setup_analyze_triple_geocode_single", + "target": "phases_0_setup_analyze_triple_geocode_kakao_local", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "phases/0-setup/analyze_triple.py", + "source_location": "L228", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "phases_0_setup_analyze_triple_geocode_single", + "target": "phases_0_setup_analyze_triple_geocode_nominatim", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "phases/0-setup/analyze_triple.py", + "source_location": "L232", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "phases_0_setup_analyze_triple_haversine_travel_sec", + "target": "phases_0_setup_analyze_triple_haversine", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "phases/0-setup/analyze_triple.py", + "source_location": "L274", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "phases_0_setup_analyze_triple_get_travel_time", + "target": "phases_0_setup_analyze_triple_haversine_travel_sec", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "phases/0-setup/analyze_triple.py", + "source_location": "L305", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "phases_0_setup_analyze_triple_stats_block", + "target": "phases_0_setup_analyze_triple_percentile", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "phases/0-setup/analyze_triple.py", + "source_location": "L402", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "phases_0_setup_analyze_triple_rationale_1", + "target": "phases_0_setup_analyze_triple", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "phases/0-setup/analyze_triple.py", + "source_location": "L1", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "phases_0_setup_analyze_triple_rationale_69", + "target": "phases_0_setup_analyze_triple_parse_numbered", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "phases/0-setup/analyze_triple.py", + "source_location": "L69", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "phases_0_setup_analyze_triple_rationale_183", + "target": "phases_0_setup_analyze_triple_geocode_kakao_local", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "phases/0-setup/analyze_triple.py", + "source_location": "L183", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "phases_0_setup_analyze_triple_rationale_224", + "target": "phases_0_setup_analyze_triple_geocode_single", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "phases/0-setup/analyze_triple.py", + "source_location": "L224", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "phases_0_setup_statistical_report", + "target": "json", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "phases/0-setup/statistical_report.py", + "source_location": "L5", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "phases_0_setup_statistical_report", + "target": "math", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "phases/0-setup/statistical_report.py", + "source_location": "L6", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "phases_0_setup_statistical_report", + "target": "statistics", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "phases/0-setup/statistical_report.py", + "source_location": "L7", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "phases_0_setup_statistical_report", + "target": "sys", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "phases/0-setup/statistical_report.py", + "source_location": "L8", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "phases_0_setup_statistical_report", + "target": "pathlib", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "phases/0-setup/statistical_report.py", + "source_location": "L9", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "phases_0_setup_statistical_report", + "target": "collections", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "phases/0-setup/statistical_report.py", + "source_location": "L10", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "phases_0_setup_statistical_report", + "target": "phases_0_setup_statistical_report_pct", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "phases/0-setup/statistical_report.py", + "source_location": "L37", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "phases_0_setup_statistical_report", + "target": "phases_0_setup_statistical_report_pctile", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "phases/0-setup/statistical_report.py", + "source_location": "L40", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "phases_0_setup_statistical_report", + "target": "phases_0_setup_statistical_report_header", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "phases/0-setup/statistical_report.py", + "source_location": "L87", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "phases_0_setup_statistical_report_rationale_1", + "target": "phases_0_setup_statistical_report", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "phases/0-setup/statistical_report.py", + "source_location": "L1", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "phases_0_setup_visualize", + "target": "json", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "phases/0-setup/visualize.py", + "source_location": "L4", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "phases_0_setup_visualize", + "target": "sys", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "phases/0-setup/visualize.py", + "source_location": "L4", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "phases_0_setup_visualize", + "target": "matplotlib", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "phases/0-setup/visualize.py", + "source_location": "L5", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "phases_0_setup_visualize", + "target": "matplotlib_pyplot", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "phases/0-setup/visualize.py", + "source_location": "L6", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "phases_0_setup_visualize", + "target": "matplotlib_patches", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "phases/0-setup/visualize.py", + "source_location": "L7", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "phases_0_setup_visualize", + "target": "numpy", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "phases/0-setup/visualize.py", + "source_location": "L8", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "phases_0_setup_visualize", + "target": "pathlib", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "phases/0-setup/visualize.py", + "source_location": "L9", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "phases_0_setup_visualize", + "target": "collections", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "phases/0-setup/visualize.py", + "source_location": "L10", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "phases_0_setup_visualize_rationale_1", + "target": "phases_0_setup_visualize", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "phases/0-setup/visualize.py", + "source_location": "L1", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "phases_0_setup_visualize_combined", + "target": "json", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "phases/0-setup/visualize_combined.py", + "source_location": "L6", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "phases_0_setup_visualize_combined", + "target": "matplotlib", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "phases/0-setup/visualize_combined.py", + "source_location": "L7", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "phases_0_setup_visualize_combined", + "target": "matplotlib_pyplot", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "phases/0-setup/visualize_combined.py", + "source_location": "L8", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "phases_0_setup_visualize_combined", + "target": "matplotlib_patches", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "phases/0-setup/visualize_combined.py", + "source_location": "L9", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "phases_0_setup_visualize_combined", + "target": "numpy", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "phases/0-setup/visualize_combined.py", + "source_location": "L10", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "phases_0_setup_visualize_combined", + "target": "pathlib", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "phases/0-setup/visualize_combined.py", + "source_location": "L11", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "phases_0_setup_visualize_combined", + "target": "collections", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "phases/0-setup/visualize_combined.py", + "source_location": "L12", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "phases_0_setup_visualize_combined_rationale_1", + "target": "phases_0_setup_visualize_combined", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "phases/0-setup/visualize_combined.py", + "source_location": "L1", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "pkg_travel_plan_validator", + "target": "pkg_fastapi", + "relation": "depends_on", + "context": "dependency", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "pyproject.toml", + "source_location": "L1", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "pkg_travel_plan_validator", + "target": "pkg_uvicorn", + "relation": "depends_on", + "context": "dependency", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "pyproject.toml", + "source_location": "L1", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "pkg_travel_plan_validator", + "target": "pkg_httpx", + "relation": "depends_on", + "context": "dependency", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "pyproject.toml", + "source_location": "L1", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "pkg_travel_plan_validator", + "target": "pkg_pydantic", + "relation": "depends_on", + "context": "dependency", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "pyproject.toml", + "source_location": "L1", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "pkg_travel_plan_validator", + "target": "pkg_pydantic_settings", + "relation": "depends_on", + "context": "dependency", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "pyproject.toml", + "source_location": "L1", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "pkg_travel_plan_validator", + "target": "pkg_python_dotenv", + "relation": "depends_on", + "context": "dependency", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "pyproject.toml", + "source_location": "L1", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "pkg_travel_plan_validator", + "target": "pkg_anthropic", + "relation": "depends_on", + "context": "dependency", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "pyproject.toml", + "source_location": "L1", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "pkg_travel_plan_validator", + "target": "pkg_pandas", + "relation": "depends_on", + "context": "dependency", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "pyproject.toml", + "source_location": "L1", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "pkg_travel_plan_validator", + "target": "pkg_pdfplumber", + "relation": "depends_on", + "context": "dependency", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "pyproject.toml", + "source_location": "L1", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "pkg_travel_plan_validator", + "target": "pkg_tqdm", + "relation": "depends_on", + "context": "dependency", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "pyproject.toml", + "source_location": "L1", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "pkg_travel_plan_validator", + "target": "pkg_openpyxl", + "relation": "depends_on", + "context": "dependency", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "pyproject.toml", + "source_location": "L1", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "pkg_travel_plan_validator", + "target": "pkg_scipy", + "relation": "depends_on", + "context": "dependency", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "pyproject.toml", + "source_location": "L1", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "pkg_travel_plan_validator", + "target": "pkg_neo4j", + "relation": "depends_on", + "context": "dependency", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "pyproject.toml", + "source_location": "L1", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "pkg_travel_plan_validator", + "target": "pkg_python_multipart", + "relation": "depends_on", + "context": "dependency", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "pyproject.toml", + "source_location": "L1", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_build_knowledge_graph", + "target": "math", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "scripts/build_knowledge_graph.py", + "source_location": "L17", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_build_knowledge_graph", + "target": "re", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "scripts/build_knowledge_graph.py", + "source_location": "L18", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_build_knowledge_graph", + "target": "sys", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "scripts/build_knowledge_graph.py", + "source_location": "L19", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_build_knowledge_graph", + "target": "pathlib", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "scripts/build_knowledge_graph.py", + "source_location": "L20", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_build_knowledge_graph", + "target": "numpy", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "scripts/build_knowledge_graph.py", + "source_location": "L22", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_build_knowledge_graph", + "target": "pandas", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "scripts/build_knowledge_graph.py", + "source_location": "L23", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_build_knowledge_graph", + "target": "scipy_spatial", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "scripts/build_knowledge_graph.py", + "source_location": "L24", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_build_knowledge_graph", + "target": "scripts_build_knowledge_graph_place_type", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "scripts/build_knowledge_graph.py", + "source_location": "L61", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_build_knowledge_graph", + "target": "scripts_build_knowledge_graph_parse_region_chain", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "scripts/build_knowledge_graph.py", + "source_location": "L67", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_build_knowledge_graph", + "target": "scripts_build_knowledge_graph_load_category_group_map", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "scripts/build_knowledge_graph.py", + "source_location": "L100", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_build_knowledge_graph", + "target": "scripts_build_knowledge_graph_project_meters", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "scripts/build_knowledge_graph.py", + "source_location": "L113", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_build_knowledge_graph_project_meters", + "target": "ndarray", + "relation": "references", + "context": "parameter_type", + "confidence": "EXTRACTED", + "source_file": "scripts/build_knowledge_graph.py", + "source_location": "L113", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_build_knowledge_graph", + "target": "scripts_build_knowledge_graph_build_near_by", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "scripts/build_knowledge_graph.py", + "source_location": "L121", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_build_knowledge_graph_build_near_by", + "target": "scripts_build_knowledge_graph_py_dataframe", + "relation": "references", + "context": "parameter_type", + "confidence": "EXTRACTED", + "source_file": "scripts/build_knowledge_graph.py", + "source_location": "L121", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_build_knowledge_graph", + "target": "scripts_build_knowledge_graph_selfcheck", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "scripts/build_knowledge_graph.py", + "source_location": "L154", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_build_knowledge_graph", + "target": "scripts_build_knowledge_graph_main", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "scripts/build_knowledge_graph.py", + "source_location": "L170", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_build_knowledge_graph_build_near_by", + "target": "scripts_build_knowledge_graph_project_meters", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "scripts/build_knowledge_graph.py", + "source_location": "L123", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_build_knowledge_graph_build_near_by", + "target": "scripts_build_knowledge_graph_py_dataframe", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "scripts/build_knowledge_graph.py", + "source_location": "L135", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_build_knowledge_graph_selfcheck", + "target": "scripts_build_knowledge_graph_place_type", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "scripts/build_knowledge_graph.py", + "source_location": "L155", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_build_knowledge_graph_selfcheck", + "target": "scripts_build_knowledge_graph_parse_region_chain", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "scripts/build_knowledge_graph.py", + "source_location": "L159", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_build_knowledge_graph_main", + "target": "scripts_build_knowledge_graph_selfcheck", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "scripts/build_knowledge_graph.py", + "source_location": "L172", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_build_knowledge_graph_main", + "target": "scripts_build_knowledge_graph_load_category_group_map", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "scripts/build_knowledge_graph.py", + "source_location": "L176", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_build_knowledge_graph_main", + "target": "scripts_build_knowledge_graph_place_type", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "scripts/build_knowledge_graph.py", + "source_location": "L181", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_build_knowledge_graph_main", + "target": "scripts_build_knowledge_graph_py_dataframe", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "scripts/build_knowledge_graph.py", + "source_location": "L188", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_build_knowledge_graph_main", + "target": "scripts_build_knowledge_graph_parse_region_chain", + "relation": "indirect_call", + "context": "argument", + "confidence": "INFERRED", + "source_file": "scripts/build_knowledge_graph.py", + "source_location": "L218", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_build_knowledge_graph_main", + "target": "scripts_build_knowledge_graph_build_near_by", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "scripts/build_knowledge_graph.py", + "source_location": "L245", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_build_knowledge_graph_rationale_68", + "target": "scripts_build_knowledge_graph_parse_region_chain", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "scripts/build_knowledge_graph.py", + "source_location": "L68", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_build_knowledge_graph_rationale_114", + "target": "scripts_build_knowledge_graph_project_meters", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "scripts/build_knowledge_graph.py", + "source_location": "L114", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_build_poi_dataset", + "target": "asyncio", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "scripts/build_poi_dataset.py", + "source_location": "L17", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_build_poi_dataset", + "target": "json", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "scripts/build_poi_dataset.py", + "source_location": "L18", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_build_poi_dataset", + "target": "sys", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "scripts/build_poi_dataset.py", + "source_location": "L19", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_build_poi_dataset", + "target": "dataclasses", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "scripts/build_poi_dataset.py", + "source_location": "L20", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_build_poi_dataset", + "target": "pathlib", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "scripts/build_poi_dataset.py", + "source_location": "L21", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_build_poi_dataset", + "target": "src_data_barrier_free_api", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "scripts/build_poi_dataset.py", + "source_location": "L25", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_build_poi_dataset", + "target": "src_data_models", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "scripts/build_poi_dataset.py", + "source_location": "L26", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_build_poi_dataset", + "target": "src_data_wellness_api", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "scripts/build_poi_dataset.py", + "source_location": "L27", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_build_poi_dataset", + "target": "scripts_build_poi_dataset_build_wellness", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "scripts/build_poi_dataset.py", + "source_location": "L34", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_build_poi_dataset_build_wellness", + "target": "src_data_wellness_api_wellnessapiclient", + "relation": "references", + "context": "parameter_type", + "confidence": "EXTRACTED", + "source_file": "scripts/build_poi_dataset.py", + "source_location": "L34", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_build_poi_dataset", + "target": "scripts_build_poi_dataset_build_barrier_free", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "scripts/build_poi_dataset.py", + "source_location": "L49", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_build_poi_dataset_build_barrier_free", + "target": "src_data_barrier_free_api_barrierfreeapiclient", + "relation": "references", + "context": "parameter_type", + "confidence": "EXTRACTED", + "source_file": "scripts/build_poi_dataset.py", + "source_location": "L49", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_build_poi_dataset", + "target": "scripts_build_poi_dataset_main", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "scripts/build_poi_dataset.py", + "source_location": "L64", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_build_poi_dataset_main", + "target": "scripts_build_poi_dataset_build_wellness", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "scripts/build_poi_dataset.py", + "source_location": "L81", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_build_poi_dataset_main", + "target": "scripts_build_poi_dataset_build_barrier_free", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "scripts/build_poi_dataset.py", + "source_location": "L86", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_build_poi_dataset_rationale_1", + "target": "scripts_build_poi_dataset", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "scripts/build_poi_dataset.py", + "source_location": "L1", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_collect_naver_full", + "target": "argparse", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "scripts/collect_naver_full.py", + "source_location": "L22", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_collect_naver_full", + "target": "csv", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "scripts/collect_naver_full.py", + "source_location": "L23", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_collect_naver_full", + "target": "json", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "scripts/collect_naver_full.py", + "source_location": "L24", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_collect_naver_full", + "target": "os", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "scripts/collect_naver_full.py", + "source_location": "L25", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_collect_naver_full", + "target": "re", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "scripts/collect_naver_full.py", + "source_location": "L26", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_collect_naver_full", + "target": "sys", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "scripts/collect_naver_full.py", + "source_location": "L27", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_collect_naver_full", + "target": "threading", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "scripts/collect_naver_full.py", + "source_location": "L28", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_collect_naver_full", + "target": "time", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "scripts/collect_naver_full.py", + "source_location": "L29", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_collect_naver_full", + "target": "concurrent_futures", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "scripts/collect_naver_full.py", + "source_location": "L30", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_collect_naver_full", + "target": "datetime", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "scripts/collect_naver_full.py", + "source_location": "L31", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_collect_naver_full", + "target": "pathlib", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "scripts/collect_naver_full.py", + "source_location": "L32", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_collect_naver_full", + "target": "httpx", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "scripts/collect_naver_full.py", + "source_location": "L34", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_collect_naver_full", + "target": "dotenv", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "scripts/collect_naver_full.py", + "source_location": "L35", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_collect_naver_full", + "target": "tqdm", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "scripts/collect_naver_full.py", + "source_location": "L36", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_collect_naver_full", + "target": "scripts_collect_naver_full_rate_get", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "scripts/collect_naver_full.py", + "source_location": "L93", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_collect_naver_full_rate_get", + "target": "scripts_collect_naver_full_py_client", + "relation": "references", + "context": "parameter_type", + "confidence": "EXTRACTED", + "source_file": "scripts/collect_naver_full.py", + "source_location": "L93", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_collect_naver_full_rate_get", + "target": "scripts_collect_naver_full_py_response", + "relation": "references", + "context": "return_type", + "confidence": "EXTRACTED", + "source_file": "scripts/collect_naver_full.py", + "source_location": "L93", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_collect_naver_full", + "target": "scripts_collect_naver_full_load_quota", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "scripts/collect_naver_full.py", + "source_location": "L110", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_collect_naver_full", + "target": "scripts_collect_naver_full_save_quota", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "scripts/collect_naver_full.py", + "source_location": "L123", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_collect_naver_full", + "target": "scripts_collect_naver_full_increment_quota", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "scripts/collect_naver_full.py", + "source_location": "L127", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_collect_naver_full", + "target": "scripts_collect_naver_full_strip", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "scripts/collect_naver_full.py", + "source_location": "L138", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_collect_naver_full", + "target": "scripts_collect_naver_full_count_hits", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "scripts/collect_naver_full.py", + "source_location": "L214", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_collect_naver_full", + "target": "scripts_collect_naver_full_parse_price", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "scripts/collect_naver_full.py", + "source_location": "L232", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_collect_naver_full", + "target": "scripts_collect_naver_full_extract_fields", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "scripts/collect_naver_full.py", + "source_location": "L255", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_collect_naver_full", + "target": "scripts_collect_naver_full_build_summary_text", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "scripts/collect_naver_full.py", + "source_location": "L315", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_collect_naver_full", + "target": "scripts_collect_naver_full_fetch_blog_texts", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "scripts/collect_naver_full.py", + "source_location": "L328", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_collect_naver_full_fetch_blog_texts", + "target": "scripts_collect_naver_full_py_client", + "relation": "references", + "context": "parameter_type", + "confidence": "EXTRACTED", + "source_file": "scripts/collect_naver_full.py", + "source_location": "L328", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_collect_naver_full", + "target": "scripts_collect_naver_full_fetch_and_extract", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "scripts/collect_naver_full.py", + "source_location": "L354", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_collect_naver_full_fetch_and_extract", + "target": "scripts_collect_naver_full_py_client", + "relation": "references", + "context": "parameter_type", + "confidence": "EXTRACTED", + "source_file": "scripts/collect_naver_full.py", + "source_location": "L354", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_collect_naver_full", + "target": "scripts_collect_naver_full_load_all_pois", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "scripts/collect_naver_full.py", + "source_location": "L396", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_collect_naver_full", + "target": "scripts_collect_naver_full_load_progress", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "scripts/collect_naver_full.py", + "source_location": "L406", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_collect_naver_full", + "target": "scripts_collect_naver_full_save_progress", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "scripts/collect_naver_full.py", + "source_location": "L417", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_collect_naver_full", + "target": "scripts_collect_naver_full_save_output", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "scripts/collect_naver_full.py", + "source_location": "L422", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_collect_naver_full", + "target": "scripts_collect_naver_full_print_stats", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "scripts/collect_naver_full.py", + "source_location": "L431", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_collect_naver_full", + "target": "scripts_collect_naver_full_main", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "scripts/collect_naver_full.py", + "source_location": "L464", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_collect_naver_full_increment_quota", + "target": "scripts_collect_naver_full_save_quota", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "scripts/collect_naver_full.py", + "source_location": "L133", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_collect_naver_full_extract_fields", + "target": "scripts_collect_naver_full_count_hits", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "scripts/collect_naver_full.py", + "source_location": "L270", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_collect_naver_full_extract_fields", + "target": "scripts_collect_naver_full_parse_price", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "scripts/collect_naver_full.py", + "source_location": "L285", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_collect_naver_full_fetch_blog_texts", + "target": "scripts_collect_naver_full_rate_get", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "scripts/collect_naver_full.py", + "source_location": "L331", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_collect_naver_full_fetch_blog_texts", + "target": "scripts_collect_naver_full_strip", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "scripts/collect_naver_full.py", + "source_location": "L345", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_collect_naver_full_fetch_and_extract", + "target": "scripts_collect_naver_full_increment_quota", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "scripts/collect_naver_full.py", + "source_location": "L361", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_collect_naver_full_fetch_and_extract", + "target": "scripts_collect_naver_full_fetch_blog_texts", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "scripts/collect_naver_full.py", + "source_location": "L367", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_collect_naver_full_fetch_and_extract", + "target": "scripts_collect_naver_full_extract_fields", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "scripts/collect_naver_full.py", + "source_location": "L378", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_collect_naver_full_fetch_and_extract", + "target": "scripts_collect_naver_full_build_summary_text", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "scripts/collect_naver_full.py", + "source_location": "L391", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_collect_naver_full_main", + "target": "scripts_collect_naver_full_load_progress", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "scripts/collect_naver_full.py", + "source_location": "L477", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_collect_naver_full_main", + "target": "scripts_collect_naver_full_load_all_pois", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "scripts/collect_naver_full.py", + "source_location": "L478", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_collect_naver_full_main", + "target": "scripts_collect_naver_full_load_quota", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "scripts/collect_naver_full.py", + "source_location": "L481", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_collect_naver_full_main", + "target": "scripts_collect_naver_full_print_stats", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "scripts/collect_naver_full.py", + "source_location": "L494", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_collect_naver_full_main", + "target": "scripts_collect_naver_full_save_output", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "scripts/collect_naver_full.py", + "source_location": "L504", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_collect_naver_full_main", + "target": "scripts_collect_naver_full_py_client", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "scripts/collect_naver_full.py", + "source_location": "L512", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_collect_naver_full_main", + "target": "scripts_collect_naver_full_fetch_and_extract", + "relation": "indirect_call", + "context": "argument", + "confidence": "INFERRED", + "source_file": "scripts/collect_naver_full.py", + "source_location": "L514", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_collect_naver_full_main", + "target": "scripts_collect_naver_full_save_progress", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "scripts/collect_naver_full.py", + "source_location": "L530", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_collect_naver_full_main", + "target": "scripts_collect_naver_full_save_quota", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "scripts/collect_naver_full.py", + "source_location": "L536", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_collect_naver_full_rationale_111", + "target": "scripts_collect_naver_full_load_quota", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "scripts/collect_naver_full.py", + "source_location": "L111", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_collect_naver_full_rationale_128", + "target": "scripts_collect_naver_full_increment_quota", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "scripts/collect_naver_full.py", + "source_location": "L128", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_collect_naver_full_rationale_407", + "target": "scripts_collect_naver_full_load_progress", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "scripts/collect_naver_full.py", + "source_location": "L407", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_collect_naver_metadata", + "target": "csv", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "scripts/collect_naver_metadata.py", + "source_location": "L4", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_collect_naver_metadata", + "target": "json", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "scripts/collect_naver_metadata.py", + "source_location": "L5", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_collect_naver_metadata", + "target": "os", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "scripts/collect_naver_metadata.py", + "source_location": "L6", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_collect_naver_metadata", + "target": "random", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "scripts/collect_naver_metadata.py", + "source_location": "L7", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_collect_naver_metadata", + "target": "sys", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "scripts/collect_naver_metadata.py", + "source_location": "L8", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_collect_naver_metadata", + "target": "threading", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "scripts/collect_naver_metadata.py", + "source_location": "L9", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_collect_naver_metadata", + "target": "time", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "scripts/collect_naver_metadata.py", + "source_location": "L10", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_collect_naver_metadata", + "target": "concurrent_futures", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "scripts/collect_naver_metadata.py", + "source_location": "L11", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_collect_naver_metadata", + "target": "pathlib", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "scripts/collect_naver_metadata.py", + "source_location": "L12", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_collect_naver_metadata", + "target": "httpx", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "scripts/collect_naver_metadata.py", + "source_location": "L14", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_collect_naver_metadata", + "target": "anthropic", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "scripts/collect_naver_metadata.py", + "source_location": "L15", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_collect_naver_metadata", + "target": "dotenv", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "scripts/collect_naver_metadata.py", + "source_location": "L16", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_collect_naver_metadata", + "target": "tqdm", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "scripts/collect_naver_metadata.py", + "source_location": "L17", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_collect_naver_metadata", + "target": "scripts_collect_naver_metadata_rate_limited_get", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "scripts/collect_naver_metadata.py", + "source_location": "L50", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_collect_naver_metadata_rate_limited_get", + "target": "scripts_collect_naver_metadata_py_client", + "relation": "references", + "context": "parameter_type", + "confidence": "EXTRACTED", + "source_file": "scripts/collect_naver_metadata.py", + "source_location": "L50", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_collect_naver_metadata_rate_limited_get", + "target": "scripts_collect_naver_metadata_py_response", + "relation": "references", + "context": "return_type", + "confidence": "EXTRACTED", + "source_file": "scripts/collect_naver_metadata.py", + "source_location": "L50", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_collect_naver_metadata", + "target": "scripts_collect_naver_metadata_load_csv_sample", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "scripts/collect_naver_metadata.py", + "source_location": "L94", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_collect_naver_metadata", + "target": "scripts_collect_naver_metadata_fetch_blog", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "scripts/collect_naver_metadata.py", + "source_location": "L117", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_collect_naver_metadata_fetch_blog", + "target": "scripts_collect_naver_metadata_py_client", + "relation": "references", + "context": "parameter_type", + "confidence": "EXTRACTED", + "source_file": "scripts/collect_naver_metadata.py", + "source_location": "L117", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_collect_naver_metadata", + "target": "scripts_collect_naver_metadata_build_place_block", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "scripts/collect_naver_metadata.py", + "source_location": "L143", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_collect_naver_metadata", + "target": "scripts_collect_naver_metadata_extract_metadata_batch", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "scripts/collect_naver_metadata.py", + "source_location": "L164", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_collect_naver_metadata", + "target": "scripts_collect_naver_metadata_load_progress", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "scripts/collect_naver_metadata.py", + "source_location": "L188", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_collect_naver_metadata", + "target": "scripts_collect_naver_metadata_save_progress", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "scripts/collect_naver_metadata.py", + "source_location": "L195", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_collect_naver_metadata", + "target": "scripts_collect_naver_metadata_merge_meta", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "scripts/collect_naver_metadata.py", + "source_location": "L201", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_collect_naver_metadata", + "target": "scripts_collect_naver_metadata_main", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "scripts/collect_naver_metadata.py", + "source_location": "L215", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_collect_naver_metadata_fetch_blog", + "target": "scripts_collect_naver_metadata_rate_limited_get", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "scripts/collect_naver_metadata.py", + "source_location": "L125", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_collect_naver_metadata_extract_metadata_batch", + "target": "scripts_collect_naver_metadata_build_place_block", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "scripts/collect_naver_metadata.py", + "source_location": "L166", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_collect_naver_metadata_main", + "target": "scripts_collect_naver_metadata_load_csv_sample", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "scripts/collect_naver_metadata.py", + "source_location": "L221", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_collect_naver_metadata_main", + "target": "scripts_collect_naver_metadata_load_progress", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "scripts/collect_naver_metadata.py", + "source_location": "L224", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_collect_naver_metadata_main", + "target": "scripts_collect_naver_metadata_py_client", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "scripts/collect_naver_metadata.py", + "source_location": "L234", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_collect_naver_metadata_main", + "target": "scripts_collect_naver_metadata_fetch_blog", + "relation": "indirect_call", + "context": "argument", + "confidence": "INFERRED", + "source_file": "scripts/collect_naver_metadata.py", + "source_location": "L236", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_collect_naver_metadata_main", + "target": "scripts_collect_naver_metadata_extract_metadata_batch", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "scripts/collect_naver_metadata.py", + "source_location": "L251", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_collect_naver_metadata_main", + "target": "scripts_collect_naver_metadata_merge_meta", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "scripts/collect_naver_metadata.py", + "source_location": "L256", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_collect_naver_metadata_main", + "target": "scripts_collect_naver_metadata_save_progress", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "scripts/collect_naver_metadata.py", + "source_location": "L257", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_collect_naver_metadata_rationale_51", + "target": "scripts_collect_naver_metadata_rate_limited_get", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "scripts/collect_naver_metadata.py", + "source_location": "L51", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_collect_naver_metadata_rationale_95", + "target": "scripts_collect_naver_metadata_load_csv_sample", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "scripts/collect_naver_metadata.py", + "source_location": "L95", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_collect_naver_metadata_rationale_118", + "target": "scripts_collect_naver_metadata_fetch_blog", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "scripts/collect_naver_metadata.py", + "source_location": "L118", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_collect_naver_only", + "target": "csv", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "scripts/collect_naver_only.py", + "source_location": "L9", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_collect_naver_only", + "target": "json", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "scripts/collect_naver_only.py", + "source_location": "L10", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_collect_naver_only", + "target": "os", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "scripts/collect_naver_only.py", + "source_location": "L11", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_collect_naver_only", + "target": "random", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "scripts/collect_naver_only.py", + "source_location": "L12", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_collect_naver_only", + "target": "re", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "scripts/collect_naver_only.py", + "source_location": "L13", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_collect_naver_only", + "target": "sys", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "scripts/collect_naver_only.py", + "source_location": "L14", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_collect_naver_only", + "target": "threading", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "scripts/collect_naver_only.py", + "source_location": "L15", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_collect_naver_only", + "target": "time", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "scripts/collect_naver_only.py", + "source_location": "L16", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_collect_naver_only", + "target": "concurrent_futures", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "scripts/collect_naver_only.py", + "source_location": "L17", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_collect_naver_only", + "target": "pathlib", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "scripts/collect_naver_only.py", + "source_location": "L18", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_collect_naver_only", + "target": "httpx", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "scripts/collect_naver_only.py", + "source_location": "L20", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_collect_naver_only", + "target": "dotenv", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "scripts/collect_naver_only.py", + "source_location": "L21", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_collect_naver_only", + "target": "tqdm", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "scripts/collect_naver_only.py", + "source_location": "L22", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_collect_naver_only", + "target": "scripts_collect_naver_only_rate_get", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "scripts/collect_naver_only.py", + "source_location": "L66", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_collect_naver_only_rate_get", + "target": "scripts_collect_naver_only_py_client", + "relation": "references", + "context": "parameter_type", + "confidence": "EXTRACTED", + "source_file": "scripts/collect_naver_only.py", + "source_location": "L66", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_collect_naver_only_rate_get", + "target": "scripts_collect_naver_only_py_response", + "relation": "references", + "context": "return_type", + "confidence": "EXTRACTED", + "source_file": "scripts/collect_naver_only.py", + "source_location": "L66", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_collect_naver_only", + "target": "scripts_collect_naver_only_strip", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "scripts/collect_naver_only.py", + "source_location": "L80", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_collect_naver_only", + "target": "scripts_collect_naver_only_count_hits", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "scripts/collect_naver_only.py", + "source_location": "L181", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_collect_naver_only", + "target": "scripts_collect_naver_only_parse_price", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "scripts/collect_naver_only.py", + "source_location": "L204", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_collect_naver_only", + "target": "scripts_collect_naver_only_extract_fields", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "scripts/collect_naver_only.py", + "source_location": "L228", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_collect_naver_only", + "target": "scripts_collect_naver_only_build_summary_text", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "scripts/collect_naver_only.py", + "source_location": "L297", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_collect_naver_only", + "target": "scripts_collect_naver_only_fetch_blog_texts", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "scripts/collect_naver_only.py", + "source_location": "L311", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_collect_naver_only_fetch_blog_texts", + "target": "scripts_collect_naver_only_py_client", + "relation": "references", + "context": "parameter_type", + "confidence": "EXTRACTED", + "source_file": "scripts/collect_naver_only.py", + "source_location": "L311", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_collect_naver_only", + "target": "scripts_collect_naver_only_fetch_and_extract", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "scripts/collect_naver_only.py", + "source_location": "L334", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_collect_naver_only_fetch_and_extract", + "target": "scripts_collect_naver_only_py_client", + "relation": "references", + "context": "parameter_type", + "confidence": "EXTRACTED", + "source_file": "scripts/collect_naver_only.py", + "source_location": "L334", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_collect_naver_only", + "target": "scripts_collect_naver_only_load_csv_sample", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "scripts/collect_naver_only.py", + "source_location": "L372", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_collect_naver_only", + "target": "scripts_collect_naver_only_load_progress", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "scripts/collect_naver_only.py", + "source_location": "L391", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_collect_naver_only", + "target": "scripts_collect_naver_only_save_progress", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "scripts/collect_naver_only.py", + "source_location": "L397", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_collect_naver_only", + "target": "scripts_collect_naver_only_main", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "scripts/collect_naver_only.py", + "source_location": "L404", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_collect_naver_only_extract_fields", + "target": "scripts_collect_naver_only_count_hits", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "scripts/collect_naver_only.py", + "source_location": "L243", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_collect_naver_only_extract_fields", + "target": "scripts_collect_naver_only_parse_price", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "scripts/collect_naver_only.py", + "source_location": "L265", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_collect_naver_only_fetch_blog_texts", + "target": "scripts_collect_naver_only_rate_get", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "scripts/collect_naver_only.py", + "source_location": "L314", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_collect_naver_only_fetch_blog_texts", + "target": "scripts_collect_naver_only_strip", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "scripts/collect_naver_only.py", + "source_location": "L325", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_collect_naver_only_fetch_and_extract", + "target": "scripts_collect_naver_only_fetch_blog_texts", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "scripts/collect_naver_only.py", + "source_location": "L343", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_collect_naver_only_fetch_and_extract", + "target": "scripts_collect_naver_only_extract_fields", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "scripts/collect_naver_only.py", + "source_location": "L354", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_collect_naver_only_fetch_and_extract", + "target": "scripts_collect_naver_only_build_summary_text", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "scripts/collect_naver_only.py", + "source_location": "L367", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_collect_naver_only_main", + "target": "scripts_collect_naver_only_load_csv_sample", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "scripts/collect_naver_only.py", + "source_location": "L410", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_collect_naver_only_main", + "target": "scripts_collect_naver_only_load_progress", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "scripts/collect_naver_only.py", + "source_location": "L412", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_collect_naver_only_main", + "target": "scripts_collect_naver_only_py_client", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "scripts/collect_naver_only.py", + "source_location": "L418", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_collect_naver_only_main", + "target": "scripts_collect_naver_only_fetch_and_extract", + "relation": "indirect_call", + "context": "argument", + "confidence": "INFERRED", + "source_file": "scripts/collect_naver_only.py", + "source_location": "L420", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_collect_naver_only_main", + "target": "scripts_collect_naver_only_save_progress", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "scripts/collect_naver_only.py", + "source_location": "L430", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_collect_naver_only_rationale_298", + "target": "scripts_collect_naver_only_build_summary_text", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "scripts/collect_naver_only.py", + "source_location": "L298", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_demo_live_e2e", + "target": "sys", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "scripts/demo_live_e2e.py", + "source_location": "L12", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_demo_live_e2e", + "target": "pathlib", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "scripts/demo_live_e2e.py", + "source_location": "L13", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_demo_live_e2e", + "target": "dotenv", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "scripts/demo_live_e2e.py", + "source_location": "L15", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_demo_live_e2e", + "target": "src_data_graph_retriever", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "scripts/demo_live_e2e.py", + "source_location": "L20", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_demo_live_e2e", + "target": "src_data_models", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "scripts/demo_live_e2e.py", + "source_location": "L21", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_demo_live_e2e", + "target": "src_explain_explain_engine", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "scripts/demo_live_e2e.py", + "source_location": "L22", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_demo_live_e2e", + "target": "scripts_demo_live_e2e_main", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "scripts/demo_live_e2e.py", + "source_location": "L27", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_demo_live_e2e_rationale_1", + "target": "scripts_demo_live_e2e", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "scripts/demo_live_e2e.py", + "source_location": "L1", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_execute", + "target": "argparse", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "scripts/execute.py", + "source_location": "L9", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_execute", + "target": "contextlib", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "scripts/execute.py", + "source_location": "L10", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_execute", + "target": "json", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "scripts/execute.py", + "source_location": "L11", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_execute", + "target": "os", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "scripts/execute.py", + "source_location": "L12", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_execute", + "target": "subprocess", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "scripts/execute.py", + "source_location": "L13", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_execute", + "target": "sys", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "scripts/execute.py", + "source_location": "L14", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_execute", + "target": "threading", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "scripts/execute.py", + "source_location": "L15", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_execute", + "target": "time", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "scripts/execute.py", + "source_location": "L16", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_execute", + "target": "types", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "scripts/execute.py", + "source_location": "L17", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_execute", + "target": "datetime", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "scripts/execute.py", + "source_location": "L18", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_execute", + "target": "pathlib", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "scripts/execute.py", + "source_location": "L19", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_execute", + "target": "typing", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "scripts/execute.py", + "source_location": "L20", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_execute", + "target": "scripts_execute_progress_indicator", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "scripts/execute.py", + "source_location": "L26", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_execute", + "target": "scripts_execute_stepexecutor", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "scripts/execute.py", + "source_location": "L53", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_execute_stepexecutor", + "target": "scripts_execute_stepexecutor_init", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "scripts/execute.py", + "source_location": "L61", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_execute_stepexecutor", + "target": "scripts_execute_stepexecutor_run", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "scripts/execute.py", + "source_location": "L83", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_execute_stepexecutor", + "target": "scripts_execute_stepexecutor_stamp", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "scripts/execute.py", + "source_location": "L94", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_execute_stepexecutor", + "target": "scripts_execute_stepexecutor_read_json", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "scripts/execute.py", + "source_location": "L100", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_execute_stepexecutor_read_json", + "target": "scripts_execute_py_path", + "relation": "references", + "context": "parameter_type", + "confidence": "EXTRACTED", + "source_file": "scripts/execute.py", + "source_location": "L100", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_execute_stepexecutor", + "target": "scripts_execute_stepexecutor_write_json", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "scripts/execute.py", + "source_location": "L104", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_execute_stepexecutor_write_json", + "target": "scripts_execute_py_path", + "relation": "references", + "context": "parameter_type", + "confidence": "EXTRACTED", + "source_file": "scripts/execute.py", + "source_location": "L104", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_execute_stepexecutor", + "target": "scripts_execute_stepexecutor_run_git", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "scripts/execute.py", + "source_location": "L109", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_execute_stepexecutor_run_git", + "target": "completedprocess", + "relation": "references", + "context": "return_type", + "confidence": "EXTRACTED", + "source_file": "scripts/execute.py", + "source_location": "L109", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_execute_stepexecutor", + "target": "scripts_execute_stepexecutor_checkout_branch", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "scripts/execute.py", + "source_location": "L113", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_execute_stepexecutor", + "target": "scripts_execute_stepexecutor_commit_step", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "scripts/execute.py", + "source_location": "L136", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_execute_stepexecutor", + "target": "scripts_execute_stepexecutor_update_top_index", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "scripts/execute.py", + "source_location": "L161", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_execute_stepexecutor", + "target": "scripts_execute_stepexecutor_load_guardrails", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "scripts/execute.py", + "source_location": "L177", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_execute_stepexecutor", + "target": "scripts_execute_stepexecutor_build_step_context", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "scripts/execute.py", + "source_location": "L189", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_execute_stepexecutor", + "target": "scripts_execute_stepexecutor_build_preamble", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "scripts/execute.py", + "source_location": "L199", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_execute_stepexecutor", + "target": "scripts_execute_stepexecutor_invoke_claude", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "scripts/execute.py", + "source_location": "L229", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_execute_stepexecutor", + "target": "scripts_execute_stepexecutor_print_header", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "scripts/execute.py", + "source_location": "L261", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_execute_stepexecutor", + "target": "scripts_execute_stepexecutor_check_blockers", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "scripts/execute.py", + "source_location": "L269", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_execute_stepexecutor", + "target": "scripts_execute_stepexecutor_ensure_created_at", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "scripts/execute.py", + "source_location": "L285", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_execute_stepexecutor", + "target": "scripts_execute_stepexecutor_execute_single_step", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "scripts/execute.py", + "source_location": "L293", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_execute_stepexecutor", + "target": "scripts_execute_stepexecutor_execute_all_steps", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "scripts/execute.py", + "source_location": "L364", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_execute_stepexecutor", + "target": "scripts_execute_stepexecutor_finalize", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "scripts/execute.py", + "source_location": "L381", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_execute", + "target": "scripts_execute_main", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "scripts/execute.py", + "source_location": "L407", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_execute_stepexecutor_init", + "target": "scripts_execute_stepexecutor_read_json", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "scripts/execute.py", + "source_location": "L78", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_execute_stepexecutor_run", + "target": "scripts_execute_stepexecutor_print_header", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "scripts/execute.py", + "source_location": "L84", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_execute_stepexecutor_run", + "target": "scripts_execute_stepexecutor_check_blockers", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "scripts/execute.py", + "source_location": "L85", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_execute_stepexecutor_run", + "target": "scripts_execute_stepexecutor_checkout_branch", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "scripts/execute.py", + "source_location": "L86", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_execute_stepexecutor_run", + "target": "scripts_execute_stepexecutor_load_guardrails", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "scripts/execute.py", + "source_location": "L87", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_execute_stepexecutor_run", + "target": "scripts_execute_stepexecutor_ensure_created_at", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "scripts/execute.py", + "source_location": "L88", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_execute_stepexecutor_run", + "target": "scripts_execute_stepexecutor_execute_all_steps", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "scripts/execute.py", + "source_location": "L89", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_execute_stepexecutor_run", + "target": "scripts_execute_stepexecutor_finalize", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "scripts/execute.py", + "source_location": "L90", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_execute_stepexecutor_run_git", + "target": "scripts_execute_stepexecutor_run", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "scripts/execute.py", + "source_location": "L111", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_execute_stepexecutor_checkout_branch", + "target": "scripts_execute_stepexecutor_run_git", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "scripts/execute.py", + "source_location": "L116", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_execute_stepexecutor_commit_step", + "target": "scripts_execute_stepexecutor_run_git", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "scripts/execute.py", + "source_location": "L140", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_execute_stepexecutor_update_top_index", + "target": "scripts_execute_stepexecutor_read_json", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "scripts/execute.py", + "source_location": "L164", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_execute_stepexecutor_update_top_index", + "target": "scripts_execute_stepexecutor_stamp", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "scripts/execute.py", + "source_location": "L165", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_execute_stepexecutor_update_top_index", + "target": "scripts_execute_stepexecutor_write_json", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "scripts/execute.py", + "source_location": "L173", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_execute_stepexecutor_invoke_claude", + "target": "scripts_execute_stepexecutor_run", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "scripts/execute.py", + "source_location": "L238", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_execute_stepexecutor_check_blockers", + "target": "scripts_execute_stepexecutor_read_json", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "scripts/execute.py", + "source_location": "L270", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_execute_stepexecutor_ensure_created_at", + "target": "scripts_execute_stepexecutor_read_json", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "scripts/execute.py", + "source_location": "L286", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_execute_stepexecutor_ensure_created_at", + "target": "scripts_execute_stepexecutor_stamp", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "scripts/execute.py", + "source_location": "L288", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_execute_stepexecutor_ensure_created_at", + "target": "scripts_execute_stepexecutor_write_json", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "scripts/execute.py", + "source_location": "L289", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_execute_stepexecutor_execute_single_step", + "target": "scripts_execute_stepexecutor_read_json", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "scripts/execute.py", + "source_location": "L296", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_execute_stepexecutor_execute_single_step", + "target": "scripts_execute_stepexecutor_build_step_context", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "scripts/execute.py", + "source_location": "L301", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_execute_stepexecutor_execute_single_step", + "target": "scripts_execute_stepexecutor_build_preamble", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "scripts/execute.py", + "source_location": "L302", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_execute_stepexecutor_execute_single_step", + "target": "scripts_execute_progress_indicator", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "scripts/execute.py", + "source_location": "L308", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_execute_stepexecutor_execute_single_step", + "target": "scripts_execute_stepexecutor_invoke_claude", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "scripts/execute.py", + "source_location": "L309", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_execute_stepexecutor_execute_single_step", + "target": "scripts_execute_stepexecutor_stamp", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "scripts/execute.py", + "source_location": "L314", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_execute_stepexecutor_execute_single_step", + "target": "scripts_execute_stepexecutor_write_json", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "scripts/execute.py", + "source_location": "L320", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_execute_stepexecutor_execute_single_step", + "target": "scripts_execute_stepexecutor_commit_step", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "scripts/execute.py", + "source_location": "L321", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_execute_stepexecutor_execute_single_step", + "target": "scripts_execute_stepexecutor_update_top_index", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "scripts/execute.py", + "source_location": "L333", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_execute_stepexecutor_execute_all_steps", + "target": "scripts_execute_stepexecutor_read_json", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "scripts/execute.py", + "source_location": "L366", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_execute_stepexecutor_execute_all_steps", + "target": "scripts_execute_stepexecutor_stamp", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "scripts/execute.py", + "source_location": "L375", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_execute_stepexecutor_execute_all_steps", + "target": "scripts_execute_stepexecutor_write_json", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "scripts/execute.py", + "source_location": "L376", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_execute_stepexecutor_execute_all_steps", + "target": "scripts_execute_stepexecutor_execute_single_step", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "scripts/execute.py", + "source_location": "L379", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_execute_stepexecutor_finalize", + "target": "scripts_execute_stepexecutor_read_json", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "scripts/execute.py", + "source_location": "L382", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_execute_stepexecutor_finalize", + "target": "scripts_execute_stepexecutor_stamp", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "scripts/execute.py", + "source_location": "L383", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_execute_stepexecutor_finalize", + "target": "scripts_execute_stepexecutor_write_json", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "scripts/execute.py", + "source_location": "L384", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_execute_stepexecutor_finalize", + "target": "scripts_execute_stepexecutor_update_top_index", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "scripts/execute.py", + "source_location": "L385", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_execute_stepexecutor_finalize", + "target": "scripts_execute_stepexecutor_run_git", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "scripts/execute.py", + "source_location": "L387", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_execute_main", + "target": "scripts_execute_stepexecutor_run", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "scripts/execute.py", + "source_location": "L413", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_execute_main", + "target": "scripts_execute_stepexecutor", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "scripts/execute.py", + "source_location": "L413", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_execute_rationale_27", + "target": "scripts_execute_progress_indicator", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "scripts/execute.py", + "source_location": "L27", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_execute_rationale_54", + "target": "scripts_execute_stepexecutor", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "scripts/execute.py", + "source_location": "L54", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_execute_rationale_294", + "target": "scripts_execute_stepexecutor_execute_single_step", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "scripts/execute.py", + "source_location": "L294", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_extract_visitor_stats", + "target": "argparse", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "scripts/extract_visitor_stats.py", + "source_location": "L9", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_extract_visitor_stats", + "target": "re", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "scripts/extract_visitor_stats.py", + "source_location": "L10", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_extract_visitor_stats", + "target": "pathlib", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "scripts/extract_visitor_stats.py", + "source_location": "L11", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_extract_visitor_stats", + "target": "pandas", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "scripts/extract_visitor_stats.py", + "source_location": "L13", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_extract_visitor_stats", + "target": "pdfplumber", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "scripts/extract_visitor_stats.py", + "source_location": "L14", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_extract_visitor_stats", + "target": "scripts_extract_visitor_stats_parse_int", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "scripts/extract_visitor_stats.py", + "source_location": "L31", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_extract_visitor_stats", + "target": "scripts_extract_visitor_stats_is_header_row", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "scripts/extract_visitor_stats.py", + "source_location": "L44", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_extract_visitor_stats", + "target": "scripts_extract_visitor_stats_extract_year", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "scripts/extract_visitor_stats.py", + "source_location": "L49", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_extract_visitor_stats_extract_year", + "target": "scripts_extract_visitor_stats_py_path", + "relation": "references", + "context": "parameter_type", + "confidence": "EXTRACTED", + "source_file": "scripts/extract_visitor_stats.py", + "source_location": "L49", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_extract_visitor_stats_extract_year", + "target": "scripts_extract_visitor_stats_py_dataframe", + "relation": "references", + "context": "return_type", + "confidence": "EXTRACTED", + "source_file": "scripts/extract_visitor_stats.py", + "source_location": "L49", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_extract_visitor_stats", + "target": "scripts_extract_visitor_stats_compute_congestion", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "scripts/extract_visitor_stats.py", + "source_location": "L87", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_extract_visitor_stats_compute_congestion", + "target": "scripts_extract_visitor_stats_py_dataframe", + "relation": "references", + "context": "parameter_type", + "confidence": "EXTRACTED", + "source_file": "scripts/extract_visitor_stats.py", + "source_location": "L87", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_extract_visitor_stats", + "target": "scripts_extract_visitor_stats_main", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "scripts/extract_visitor_stats.py", + "source_location": "L134", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_extract_visitor_stats_main", + "target": "scripts_extract_visitor_stats_py_path", + "relation": "references", + "context": "parameter_type", + "confidence": "EXTRACTED", + "source_file": "scripts/extract_visitor_stats.py", + "source_location": "L134", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_extract_visitor_stats_extract_year", + "target": "scripts_extract_visitor_stats_is_header_row", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "scripts/extract_visitor_stats.py", + "source_location": "L60", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_extract_visitor_stats_extract_year", + "target": "scripts_extract_visitor_stats_parse_int", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "scripts/extract_visitor_stats.py", + "source_location": "L76", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_extract_visitor_stats_extract_year", + "target": "scripts_extract_visitor_stats_py_dataframe", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "scripts/extract_visitor_stats.py", + "source_location": "L79", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_extract_visitor_stats_main", + "target": "scripts_extract_visitor_stats_extract_year", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "scripts/extract_visitor_stats.py", + "source_location": "L143", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_extract_visitor_stats_main", + "target": "scripts_extract_visitor_stats_compute_congestion", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "scripts/extract_visitor_stats.py", + "source_location": "L152", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_extract_visitor_stats_rationale_1", + "target": "scripts_extract_visitor_stats", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "scripts/extract_visitor_stats.py", + "source_location": "L1", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_extract_visitor_stats_rationale_32", + "target": "scripts_extract_visitor_stats_parse_int", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "scripts/extract_visitor_stats.py", + "source_location": "L32", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_extract_visitor_stats_rationale_50", + "target": "scripts_extract_visitor_stats_extract_year", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "scripts/extract_visitor_stats.py", + "source_location": "L50", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_extract_visitor_stats_rationale_88", + "target": "scripts_extract_visitor_stats_compute_congestion", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "scripts/extract_visitor_stats.py", + "source_location": "L88", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_fetch_jeju_hours", + "target": "asyncio", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "scripts/fetch_jeju_hours.py", + "source_location": "L16", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_fetch_jeju_hours", + "target": "json", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "scripts/fetch_jeju_hours.py", + "source_location": "L17", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_fetch_jeju_hours", + "target": "sys", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "scripts/fetch_jeju_hours.py", + "source_location": "L18", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_fetch_jeju_hours", + "target": "pathlib", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "scripts/fetch_jeju_hours.py", + "source_location": "L19", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_fetch_jeju_hours", + "target": "pandas", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "scripts/fetch_jeju_hours.py", + "source_location": "L21", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_fetch_jeju_hours", + "target": "dotenv", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "scripts/fetch_jeju_hours.py", + "source_location": "L22", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_fetch_jeju_hours", + "target": "src_data_models", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "scripts/fetch_jeju_hours.py", + "source_location": "L28", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_fetch_jeju_hours", + "target": "src_data_tour_api", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "scripts/fetch_jeju_hours.py", + "source_location": "L29", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_fetch_jeju_hours", + "target": "scripts_fetch_jeju_hours_fetch_one", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "scripts/fetch_jeju_hours.py", + "source_location": "L35", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_fetch_jeju_hours_fetch_one", + "target": "src_data_tour_api_tourapiclient", + "relation": "references", + "context": "parameter_type", + "confidence": "EXTRACTED", + "source_file": "scripts/fetch_jeju_hours.py", + "source_location": "L35", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_fetch_jeju_hours_fetch_one", + "target": "semaphore", + "relation": "references", + "context": "parameter_type", + "confidence": "EXTRACTED", + "source_file": "scripts/fetch_jeju_hours.py", + "source_location": "L35", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_fetch_jeju_hours", + "target": "scripts_fetch_jeju_hours_main", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "scripts/fetch_jeju_hours.py", + "source_location": "L43", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_fetch_jeju_hours_main", + "target": "semaphore", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "scripts/fetch_jeju_hours.py", + "source_location": "L53", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_fetch_jeju_hours_main", + "target": "scripts_fetch_jeju_hours_fetch_one", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "scripts/fetch_jeju_hours.py", + "source_location": "L55", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_fetch_jeju_hours_rationale_1", + "target": "scripts_fetch_jeju_hours", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "scripts/fetch_jeju_hours.py", + "source_location": "L1", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_fetch_missing_pois", + "target": "asyncio", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "scripts/fetch_missing_pois.py", + "source_location": "L4", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_fetch_missing_pois", + "target": "csv", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "scripts/fetch_missing_pois.py", + "source_location": "L5", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_fetch_missing_pois", + "target": "time", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "scripts/fetch_missing_pois.py", + "source_location": "L6", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_fetch_missing_pois", + "target": "pathlib", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "scripts/fetch_missing_pois.py", + "source_location": "L7", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_fetch_missing_pois", + "target": "httpx", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "scripts/fetch_missing_pois.py", + "source_location": "L8", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_fetch_missing_pois", + "target": "scripts_fetch_missing_pois_load_existing_ids", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "scripts/fetch_missing_pois.py", + "source_location": "L26", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_fetch_missing_pois", + "target": "scripts_fetch_missing_pois_load_api_key", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "scripts/fetch_missing_pois.py", + "source_location": "L38", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_fetch_missing_pois", + "target": "scripts_fetch_missing_pois_fetch_page", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "scripts/fetch_missing_pois.py", + "source_location": "L48", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_fetch_missing_pois_fetch_page", + "target": "asyncclient", + "relation": "references", + "context": "parameter_type", + "confidence": "EXTRACTED", + "source_file": "scripts/fetch_missing_pois.py", + "source_location": "L48", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_fetch_missing_pois", + "target": "scripts_fetch_missing_pois_fetch_region_type", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "scripts/fetch_missing_pois.py", + "source_location": "L87", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_fetch_missing_pois_fetch_region_type", + "target": "asyncclient", + "relation": "references", + "context": "parameter_type", + "confidence": "EXTRACTED", + "source_file": "scripts/fetch_missing_pois.py", + "source_location": "L87", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_fetch_missing_pois", + "target": "scripts_fetch_missing_pois_main", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "scripts/fetch_missing_pois.py", + "source_location": "L150", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_fetch_missing_pois_fetch_region_type", + "target": "scripts_fetch_missing_pois_fetch_page", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "scripts/fetch_missing_pois.py", + "source_location": "L100", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_fetch_missing_pois_main", + "target": "scripts_fetch_missing_pois_load_api_key", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "scripts/fetch_missing_pois.py", + "source_location": "L151", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_fetch_missing_pois_main", + "target": "scripts_fetch_missing_pois_load_existing_ids", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "scripts/fetch_missing_pois.py", + "source_location": "L156", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_fetch_missing_pois_main", + "target": "asyncclient", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "scripts/fetch_missing_pois.py", + "source_location": "L162", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_fetch_missing_pois_main", + "target": "scripts_fetch_missing_pois_fetch_region_type", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "scripts/fetch_missing_pois.py", + "source_location": "L166", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_fetch_missing_pois_rationale_1", + "target": "scripts_fetch_missing_pois", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "scripts/fetch_missing_pois.py", + "source_location": "L1", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_geocode_jeju_missing_coords", + "target": "shutil", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "scripts/geocode_jeju_missing_coords.py", + "source_location": "L10", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_geocode_jeju_missing_coords", + "target": "sys", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "scripts/geocode_jeju_missing_coords.py", + "source_location": "L11", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_geocode_jeju_missing_coords", + "target": "time", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "scripts/geocode_jeju_missing_coords.py", + "source_location": "L12", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_geocode_jeju_missing_coords", + "target": "pathlib", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "scripts/geocode_jeju_missing_coords.py", + "source_location": "L13", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_geocode_jeju_missing_coords", + "target": "openpyxl", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "scripts/geocode_jeju_missing_coords.py", + "source_location": "L15", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_geocode_jeju_missing_coords", + "target": "dotenv", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "scripts/geocode_jeju_missing_coords.py", + "source_location": "L16", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_geocode_jeju_missing_coords", + "target": "src_data_kakao_local", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "scripts/geocode_jeju_missing_coords.py", + "source_location": "L22", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_geocode_jeju_missing_coords", + "target": "scripts_geocode_jeju_missing_coords_main", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "scripts/geocode_jeju_missing_coords.py", + "source_location": "L28", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_load_knowledge_graph_neo4j", + "target": "os", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "scripts/load_knowledge_graph_neo4j.py", + "source_location": "L17", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_load_knowledge_graph_neo4j", + "target": "sys", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "scripts/load_knowledge_graph_neo4j.py", + "source_location": "L18", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_load_knowledge_graph_neo4j", + "target": "pathlib", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "scripts/load_knowledge_graph_neo4j.py", + "source_location": "L19", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_load_knowledge_graph_neo4j", + "target": "pandas", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "scripts/load_knowledge_graph_neo4j.py", + "source_location": "L21", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_load_knowledge_graph_neo4j", + "target": "dotenv", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "scripts/load_knowledge_graph_neo4j.py", + "source_location": "L22", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_load_knowledge_graph_neo4j", + "target": "neo4j", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "scripts/load_knowledge_graph_neo4j.py", + "source_location": "L23", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_load_knowledge_graph_neo4j", + "target": "neo4j_exceptions", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "scripts/load_knowledge_graph_neo4j.py", + "source_location": "L24", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_load_knowledge_graph_neo4j", + "target": "scripts_load_knowledge_graph_neo4j_strip_type_suffix", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "scripts/load_knowledge_graph_neo4j.py", + "source_location": "L37", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_load_knowledge_graph_neo4j", + "target": "scripts_load_knowledge_graph_neo4j_load_rows", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "scripts/load_knowledge_graph_neo4j.py", + "source_location": "L45", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_load_knowledge_graph_neo4j", + "target": "scripts_load_knowledge_graph_neo4j_run_batched", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "scripts/load_knowledge_graph_neo4j.py", + "source_location": "L52", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_load_knowledge_graph_neo4j_run_batched", + "target": "driver", + "relation": "references", + "context": "parameter_type", + "confidence": "EXTRACTED", + "source_file": "scripts/load_knowledge_graph_neo4j.py", + "source_location": "L52", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_load_knowledge_graph_neo4j", + "target": "scripts_load_knowledge_graph_neo4j_main", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "scripts/load_knowledge_graph_neo4j.py", + "source_location": "L61", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_load_knowledge_graph_neo4j_load_rows", + "target": "scripts_load_knowledge_graph_neo4j_strip_type_suffix", + "relation": "indirect_call", + "context": "argument", + "confidence": "INFERRED", + "source_file": "scripts/load_knowledge_graph_neo4j.py", + "source_location": "L47", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_load_knowledge_graph_neo4j_main", + "target": "scripts_load_knowledge_graph_neo4j_run_batched", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "scripts/load_knowledge_graph_neo4j.py", + "source_location": "L77", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_load_knowledge_graph_neo4j_main", + "target": "scripts_load_knowledge_graph_neo4j_load_rows", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "scripts/load_knowledge_graph_neo4j.py", + "source_location": "L80", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_neo4j_coverage_analysis", + "target": "sys", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "scripts/neo4j_coverage_analysis.py", + "source_location": "L17", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_neo4j_coverage_analysis", + "target": "dataclasses", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "scripts/neo4j_coverage_analysis.py", + "source_location": "L18", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_neo4j_coverage_analysis", + "target": "src_data_models", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "scripts/neo4j_coverage_analysis.py", + "source_location": "L22", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_neo4j_coverage_analysis", + "target": "src_scoring_cluster_dispersion", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "scripts/neo4j_coverage_analysis.py", + "source_location": "L23", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_neo4j_coverage_analysis", + "target": "src_scoring_travel_ratio", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "scripts/neo4j_coverage_analysis.py", + "source_location": "L24", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_neo4j_coverage_analysis", + "target": "src_validation_vrptw_engine", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "scripts/neo4j_coverage_analysis.py", + "source_location": "L25", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_neo4j_coverage_analysis", + "target": "scripts_neo4j_coverage_analysis_make_place", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "scripts/neo4j_coverage_analysis.py", + "source_location": "L46", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_neo4j_coverage_analysis_make_place", + "target": "src_data_models_vrptwplace", + "relation": "references", + "context": "return_type", + "confidence": "EXTRACTED", + "source_file": "scripts/neo4j_coverage_analysis.py", + "source_location": "L46", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_neo4j_coverage_analysis", + "target": "scripts_neo4j_coverage_analysis_sigungu_for", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "scripts/neo4j_coverage_analysis.py", + "source_location": "L60", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_neo4j_coverage_analysis", + "target": "scripts_neo4j_coverage_analysis_neo4j_backtrack_count", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "scripts/neo4j_coverage_analysis.py", + "source_location": "L66", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_neo4j_coverage_analysis", + "target": "scripts_neo4j_coverage_analysis_neo4j_timeslot_density", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "scripts/neo4j_coverage_analysis.py", + "source_location": "L84", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_neo4j_coverage_analysis", + "target": "scripts_neo4j_coverage_analysis_coverageresult", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "scripts/neo4j_coverage_analysis.py", + "source_location": "L114", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_neo4j_coverage_analysis_coverageresult", + "target": "scripts_neo4j_coverage_analysis_coverageresult_covered", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "scripts/neo4j_coverage_analysis.py", + "source_location": "L122", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_neo4j_coverage_analysis", + "target": "scripts_neo4j_coverage_analysis_run_vrptw", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "scripts/neo4j_coverage_analysis.py", + "source_location": "L126", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_neo4j_coverage_analysis", + "target": "scripts_neo4j_coverage_analysis_print_result", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "scripts/neo4j_coverage_analysis.py", + "source_location": "L141", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_neo4j_coverage_analysis_print_result", + "target": "scripts_neo4j_coverage_analysis_coverageresult", + "relation": "references", + "context": "parameter_type", + "confidence": "EXTRACTED", + "source_file": "scripts/neo4j_coverage_analysis.py", + "source_location": "L141", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_neo4j_coverage_analysis", + "target": "scripts_neo4j_coverage_analysis_test_role_a", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "scripts/neo4j_coverage_analysis.py", + "source_location": "L152", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_neo4j_coverage_analysis_test_role_a", + "target": "scripts_neo4j_coverage_analysis_coverageresult", + "relation": "references", + "context": "generic_arg", + "confidence": "EXTRACTED", + "source_file": "scripts/neo4j_coverage_analysis.py", + "source_location": "L152", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_neo4j_coverage_analysis", + "target": "scripts_neo4j_coverage_analysis_test_role_b", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "scripts/neo4j_coverage_analysis.py", + "source_location": "L217", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_neo4j_coverage_analysis_test_role_b", + "target": "scripts_neo4j_coverage_analysis_coverageresult", + "relation": "references", + "context": "generic_arg", + "confidence": "EXTRACTED", + "source_file": "scripts/neo4j_coverage_analysis.py", + "source_location": "L217", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_neo4j_coverage_analysis", + "target": "scripts_neo4j_coverage_analysis_test_role_c", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "scripts/neo4j_coverage_analysis.py", + "source_location": "L264", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_neo4j_coverage_analysis_test_role_c", + "target": "scripts_neo4j_coverage_analysis_coverageresult", + "relation": "references", + "context": "generic_arg", + "confidence": "EXTRACTED", + "source_file": "scripts/neo4j_coverage_analysis.py", + "source_location": "L264", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_neo4j_coverage_analysis", + "target": "scripts_neo4j_coverage_analysis_main", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "scripts/neo4j_coverage_analysis.py", + "source_location": "L312", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_neo4j_coverage_analysis_make_place", + "target": "src_data_models_vrptwplace", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "scripts/neo4j_coverage_analysis.py", + "source_location": "L52", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_neo4j_coverage_analysis_neo4j_backtrack_count", + "target": "scripts_neo4j_coverage_analysis_sigungu_for", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "scripts/neo4j_coverage_analysis.py", + "source_location": "L76", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_neo4j_coverage_analysis_neo4j_timeslot_density", + "target": "scripts_neo4j_coverage_analysis_make_place", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "scripts/neo4j_coverage_analysis.py", + "source_location": "L90", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_neo4j_coverage_analysis_run_vrptw", + "target": "scripts_neo4j_coverage_analysis_make_place", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "scripts/neo4j_coverage_analysis.py", + "source_location": "L129", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_neo4j_coverage_analysis_run_vrptw", + "target": "scripts_neo4j_coverage_analysis_sigungu_for", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "scripts/neo4j_coverage_analysis.py", + "source_location": "L133", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_neo4j_coverage_analysis_test_role_a", + "target": "scripts_neo4j_coverage_analysis_neo4j_backtrack_count", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "scripts/neo4j_coverage_analysis.py", + "source_location": "L157", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_neo4j_coverage_analysis_test_role_a", + "target": "scripts_neo4j_coverage_analysis_run_vrptw", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "scripts/neo4j_coverage_analysis.py", + "source_location": "L158", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_neo4j_coverage_analysis_test_role_a", + "target": "scripts_neo4j_coverage_analysis_coverageresult", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "scripts/neo4j_coverage_analysis.py", + "source_location": "L163", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_neo4j_coverage_analysis_test_role_b", + "target": "scripts_neo4j_coverage_analysis_run_vrptw", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "scripts/neo4j_coverage_analysis.py", + "source_location": "L223", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_neo4j_coverage_analysis_test_role_b", + "target": "scripts_neo4j_coverage_analysis_coverageresult", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "scripts/neo4j_coverage_analysis.py", + "source_location": "L227", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_neo4j_coverage_analysis_test_role_c", + "target": "scripts_neo4j_coverage_analysis_neo4j_timeslot_density", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "scripts/neo4j_coverage_analysis.py", + "source_location": "L269", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_neo4j_coverage_analysis_test_role_c", + "target": "scripts_neo4j_coverage_analysis_run_vrptw", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "scripts/neo4j_coverage_analysis.py", + "source_location": "L273", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_neo4j_coverage_analysis_test_role_c", + "target": "scripts_neo4j_coverage_analysis_coverageresult", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "scripts/neo4j_coverage_analysis.py", + "source_location": "L277", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_neo4j_coverage_analysis_main", + "target": "scripts_neo4j_coverage_analysis_test_role_a", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "scripts/neo4j_coverage_analysis.py", + "source_location": "L320", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_neo4j_coverage_analysis_main", + "target": "scripts_neo4j_coverage_analysis_print_result", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "scripts/neo4j_coverage_analysis.py", + "source_location": "L321", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_neo4j_coverage_analysis_main", + "target": "scripts_neo4j_coverage_analysis_test_role_b", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "scripts/neo4j_coverage_analysis.py", + "source_location": "L325", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_neo4j_coverage_analysis_main", + "target": "scripts_neo4j_coverage_analysis_test_role_c", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "scripts/neo4j_coverage_analysis.py", + "source_location": "L330", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_neo4j_coverage_analysis_rationale_1", + "target": "scripts_neo4j_coverage_analysis", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "scripts/neo4j_coverage_analysis.py", + "source_location": "L1", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_neo4j_coverage_analysis_rationale_67", + "target": "scripts_neo4j_coverage_analysis_neo4j_backtrack_count", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "scripts/neo4j_coverage_analysis.py", + "source_location": "L67", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_neo4j_coverage_analysis_rationale_85", + "target": "scripts_neo4j_coverage_analysis_neo4j_timeslot_density", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "scripts/neo4j_coverage_analysis.py", + "source_location": "L85", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_neo4j_coverage_analysis_rationale_127", + "target": "scripts_neo4j_coverage_analysis_run_vrptw", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "scripts/neo4j_coverage_analysis.py", + "source_location": "L127", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_test_execute", + "target": "json", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "scripts/test_execute.py", + "source_location": "L6", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_test_execute", + "target": "os", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "scripts/test_execute.py", + "source_location": "L7", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_test_execute", + "target": "subprocess", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "scripts/test_execute.py", + "source_location": "L8", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_test_execute", + "target": "sys", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "scripts/test_execute.py", + "source_location": "L9", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_test_execute", + "target": "textwrap", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "scripts/test_execute.py", + "source_location": "L10", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_test_execute", + "target": "datetime", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "scripts/test_execute.py", + "source_location": "L11", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_test_execute", + "target": "pathlib", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "scripts/test_execute.py", + "source_location": "L12", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_test_execute", + "target": "unittest_mock", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "scripts/test_execute.py", + "source_location": "L13", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_test_execute", + "target": "pytest", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "scripts/test_execute.py", + "source_location": "L15", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_test_execute", + "target": "execute", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "scripts/test_execute.py", + "source_location": "L18", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_test_execute_tmp_project", + "target": "scripts_test_execute_py_fixture", + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "scripts/test_execute.py", + "source_location": "L25", + "weight": 1.0, + "context": "decorator", + "_origin": "ast" + }, + { + "source": "scripts_test_execute", + "target": "scripts_test_execute_tmp_project", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "scripts/test_execute.py", + "source_location": "L26", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_test_execute_phase_dir", + "target": "scripts_test_execute_py_fixture", + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "scripts/test_execute.py", + "source_location": "L42", + "weight": 1.0, + "context": "decorator", + "_origin": "ast" + }, + { + "source": "scripts_test_execute", + "target": "scripts_test_execute_phase_dir", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "scripts/test_execute.py", + "source_location": "L43", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_test_execute_top_index", + "target": "scripts_test_execute_py_fixture", + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "scripts/test_execute.py", + "source_location": "L63", + "weight": 1.0, + "context": "decorator", + "_origin": "ast" + }, + { + "source": "scripts_test_execute", + "target": "scripts_test_execute_top_index", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "scripts/test_execute.py", + "source_location": "L64", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_test_execute_executor", + "target": "scripts_test_execute_py_fixture", + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "scripts/test_execute.py", + "source_location": "L77", + "weight": 1.0, + "context": "decorator", + "_origin": "ast" + }, + { + "source": "scripts_test_execute", + "target": "scripts_test_execute_executor", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "scripts/test_execute.py", + "source_location": "L78", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_test_execute", + "target": "scripts_test_execute_teststamp", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "scripts/test_execute.py", + "source_location": "L96", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_test_execute_teststamp", + "target": "scripts_test_execute_teststamp_test_returns_kst_timestamp", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "scripts/test_execute.py", + "source_location": "L97", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_test_execute_teststamp", + "target": "scripts_test_execute_teststamp_test_format_is_iso", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "scripts/test_execute.py", + "source_location": "L101", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_test_execute_teststamp", + "target": "scripts_test_execute_teststamp_test_is_current_time", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "scripts/test_execute.py", + "source_location": "L106", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_test_execute", + "target": "scripts_test_execute_testjsonhelpers", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "scripts/test_execute.py", + "source_location": "L118", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_test_execute_testjsonhelpers", + "target": "scripts_test_execute_testjsonhelpers_test_roundtrip", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "scripts/test_execute.py", + "source_location": "L119", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_test_execute_testjsonhelpers", + "target": "scripts_test_execute_testjsonhelpers_test_save_ensures_ascii_false", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "scripts/test_execute.py", + "source_location": "L126", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_test_execute_testjsonhelpers", + "target": "scripts_test_execute_testjsonhelpers_test_save_indented", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "scripts/test_execute.py", + "source_location": "L133", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_test_execute_testjsonhelpers", + "target": "scripts_test_execute_testjsonhelpers_test_load_nonexistent_raises", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "scripts/test_execute.py", + "source_location": "L139", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_test_execute", + "target": "scripts_test_execute_testloadguardrails", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "scripts/test_execute.py", + "source_location": "L148", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_test_execute_testloadguardrails", + "target": "scripts_test_execute_testloadguardrails_test_loads_claude_md_and_docs", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "scripts/test_execute.py", + "source_location": "L149", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_test_execute_testloadguardrails", + "target": "scripts_test_execute_testloadguardrails_test_sections_separated_by_divider", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "scripts/test_execute.py", + "source_location": "L157", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_test_execute_testloadguardrails", + "target": "scripts_test_execute_testloadguardrails_test_docs_sorted_alphabetically", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "scripts/test_execute.py", + "source_location": "L162", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_test_execute_testloadguardrails", + "target": "scripts_test_execute_testloadguardrails_test_no_claude_md", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "scripts/test_execute.py", + "source_location": "L169", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_test_execute_testloadguardrails", + "target": "scripts_test_execute_testloadguardrails_test_no_docs_dir", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "scripts/test_execute.py", + "source_location": "L176", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_test_execute_testloadguardrails", + "target": "scripts_test_execute_testloadguardrails_test_empty_project", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "scripts/test_execute.py", + "source_location": "L184", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_test_execute", + "target": "scripts_test_execute_testbuildstepcontext", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "scripts/test_execute.py", + "source_location": "L200", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_test_execute_testbuildstepcontext", + "target": "scripts_test_execute_testbuildstepcontext_test_includes_completed_with_summary", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "scripts/test_execute.py", + "source_location": "L201", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_test_execute_testbuildstepcontext", + "target": "scripts_test_execute_testbuildstepcontext_test_excludes_pending", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "scripts/test_execute.py", + "source_location": "L207", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_test_execute_testbuildstepcontext", + "target": "scripts_test_execute_testbuildstepcontext_test_excludes_completed_without_summary", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "scripts/test_execute.py", + "source_location": "L212", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_test_execute_testbuildstepcontext", + "target": "scripts_test_execute_testbuildstepcontext_test_empty_when_no_completed", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "scripts/test_execute.py", + "source_location": "L219", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_test_execute_testbuildstepcontext", + "target": "scripts_test_execute_testbuildstepcontext_test_has_header", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "scripts/test_execute.py", + "source_location": "L224", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_test_execute", + "target": "scripts_test_execute_testbuildpreamble", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "scripts/test_execute.py", + "source_location": "L234", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_test_execute_testbuildpreamble", + "target": "scripts_test_execute_testbuildpreamble_test_includes_project_name", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "scripts/test_execute.py", + "source_location": "L235", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_test_execute_testbuildpreamble", + "target": "scripts_test_execute_testbuildpreamble_test_includes_guardrails", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "scripts/test_execute.py", + "source_location": "L239", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_test_execute_testbuildpreamble", + "target": "scripts_test_execute_testbuildpreamble_test_includes_step_context", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "scripts/test_execute.py", + "source_location": "L243", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_test_execute_testbuildpreamble", + "target": "scripts_test_execute_testbuildpreamble_test_includes_commit_example", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "scripts/test_execute.py", + "source_location": "L248", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_test_execute_testbuildpreamble", + "target": "scripts_test_execute_testbuildpreamble_test_includes_rules", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "scripts/test_execute.py", + "source_location": "L252", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_test_execute_testbuildpreamble", + "target": "scripts_test_execute_testbuildpreamble_test_no_retry_section_by_default", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "scripts/test_execute.py", + "source_location": "L257", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_test_execute_testbuildpreamble", + "target": "scripts_test_execute_testbuildpreamble_test_retry_section_with_prev_error", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "scripts/test_execute.py", + "source_location": "L261", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_test_execute_testbuildpreamble", + "target": "scripts_test_execute_testbuildpreamble_test_includes_max_retries", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "scripts/test_execute.py", + "source_location": "L266", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_test_execute_testbuildpreamble", + "target": "scripts_test_execute_testbuildpreamble_test_includes_index_path", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "scripts/test_execute.py", + "source_location": "L270", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_test_execute", + "target": "scripts_test_execute_testupdatetopindex", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "scripts/test_execute.py", + "source_location": "L279", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_test_execute_testupdatetopindex", + "target": "scripts_test_execute_testupdatetopindex_test_completed", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "scripts/test_execute.py", + "source_location": "L280", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_test_execute_testupdatetopindex", + "target": "scripts_test_execute_testupdatetopindex_test_error", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "scripts/test_execute.py", + "source_location": "L288", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_test_execute_testupdatetopindex", + "target": "scripts_test_execute_testupdatetopindex_test_blocked", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "scripts/test_execute.py", + "source_location": "L296", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_test_execute_testupdatetopindex", + "target": "scripts_test_execute_testupdatetopindex_test_other_phases_unchanged", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "scripts/test_execute.py", + "source_location": "L304", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_test_execute_testupdatetopindex", + "target": "scripts_test_execute_testupdatetopindex_test_nonexistent_dir_is_noop", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "scripts/test_execute.py", + "source_location": "L311", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_test_execute_testupdatetopindex", + "target": "scripts_test_execute_testupdatetopindex_test_no_top_index_file", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "scripts/test_execute.py", + "source_location": "L320", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_test_execute", + "target": "scripts_test_execute_testcheckoutbranch", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "scripts/test_execute.py", + "source_location": "L329", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_test_execute_testcheckoutbranch", + "target": "scripts_test_execute_testcheckoutbranch_mock_git", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "scripts/test_execute.py", + "source_location": "L330", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_test_execute_testcheckoutbranch", + "target": "scripts_test_execute_testcheckoutbranch_test_already_on_branch", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "scripts/test_execute.py", + "source_location": "L340", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_test_execute_testcheckoutbranch", + "target": "scripts_test_execute_testcheckoutbranch_test_branch_exists_checkout", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "scripts/test_execute.py", + "source_location": "L346", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_test_execute_testcheckoutbranch", + "target": "scripts_test_execute_testcheckoutbranch_test_branch_not_exists_create", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "scripts/test_execute.py", + "source_location": "L354", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_test_execute_testcheckoutbranch", + "target": "scripts_test_execute_testcheckoutbranch_test_checkout_fails_exits", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "scripts/test_execute.py", + "source_location": "L362", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_test_execute_testcheckoutbranch", + "target": "scripts_test_execute_testcheckoutbranch_test_no_git_exits", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "scripts/test_execute.py", + "source_location": "L372", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_test_execute", + "target": "scripts_test_execute_testcommitstep", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "scripts/test_execute.py", + "source_location": "L385", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_test_execute_testcommitstep", + "target": "scripts_test_execute_testcommitstep_test_two_phase_commit", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "scripts/test_execute.py", + "source_location": "L386", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_test_execute_testcommitstep", + "target": "scripts_test_execute_testcommitstep_test_no_code_changes_skips_feat_commit", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "scripts/test_execute.py", + "source_location": "L402", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_test_execute", + "target": "scripts_test_execute_testinvokeclaude", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "scripts/test_execute.py", + "source_location": "L426", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_test_execute_testinvokeclaude", + "target": "scripts_test_execute_testinvokeclaude_test_invokes_claude_with_correct_args", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "scripts/test_execute.py", + "source_location": "L427", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_test_execute_testinvokeclaude", + "target": "scripts_test_execute_testinvokeclaude_test_saves_output_json", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "scripts/test_execute.py", + "source_location": "L443", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_test_execute_testinvokeclaude", + "target": "scripts_test_execute_testinvokeclaude_test_nonexistent_step_file_exits", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "scripts/test_execute.py", + "source_location": "L457", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_test_execute_testinvokeclaude", + "target": "scripts_test_execute_testinvokeclaude_test_timeout_is_1800", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "scripts/test_execute.py", + "source_location": "L463", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_test_execute", + "target": "scripts_test_execute_testprogressindicator", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "scripts/test_execute.py", + "source_location": "L477", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_test_execute_testprogressindicator", + "target": "scripts_test_execute_testprogressindicator_test_context_manager", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "scripts/test_execute.py", + "source_location": "L478", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_test_execute_testprogressindicator", + "target": "scripts_test_execute_testprogressindicator_test_elapsed_increases", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "scripts/test_execute.py", + "source_location": "L484", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_test_execute", + "target": "scripts_test_execute_testmaincli", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "scripts/test_execute.py", + "source_location": "L495", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_test_execute_testmaincli", + "target": "scripts_test_execute_testmaincli_test_no_args_exits", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "scripts/test_execute.py", + "source_location": "L496", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_test_execute_testmaincli", + "target": "scripts_test_execute_testmaincli_test_invalid_phase_dir_exits", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "scripts/test_execute.py", + "source_location": "L502", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_test_execute_testmaincli", + "target": "scripts_test_execute_testmaincli_test_missing_index_exits", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "scripts/test_execute.py", + "source_location": "L509", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_test_execute", + "target": "scripts_test_execute_testcheckblockers", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "scripts/test_execute.py", + "source_location": "L522", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_test_execute_testcheckblockers", + "target": "scripts_test_execute_testcheckblockers_make_executor_with_steps", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "scripts/test_execute.py", + "source_location": "L523", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_test_execute_testcheckblockers", + "target": "scripts_test_execute_testcheckblockers_test_error_step_exits_1", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "scripts/test_execute.py", + "source_location": "L541", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_test_execute_testcheckblockers", + "target": "scripts_test_execute_testcheckblockers_test_blocked_step_exits_2", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "scripts/test_execute.py", + "source_location": "L551", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_test_execute_testcheckoutbranch_test_already_on_branch", + "target": "scripts_test_execute_testcheckoutbranch_mock_git", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "scripts/test_execute.py", + "source_location": "L341", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_test_execute_testcheckoutbranch_test_branch_exists_checkout", + "target": "scripts_test_execute_testcheckoutbranch_mock_git", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "scripts/test_execute.py", + "source_location": "L347", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_test_execute_testcheckoutbranch_test_branch_not_exists_create", + "target": "scripts_test_execute_testcheckoutbranch_mock_git", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "scripts/test_execute.py", + "source_location": "L355", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_test_execute_testcheckoutbranch_test_checkout_fails_exits", + "target": "scripts_test_execute_testcheckoutbranch_mock_git", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "scripts/test_execute.py", + "source_location": "L363", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_test_execute_testcheckoutbranch_test_no_git_exits", + "target": "scripts_test_execute_testcheckoutbranch_mock_git", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "scripts/test_execute.py", + "source_location": "L373", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_test_execute_testcheckblockers_test_error_step_exits_1", + "target": "scripts_test_execute_testcheckblockers_make_executor_with_steps", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "scripts/test_execute.py", + "source_location": "L546", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_test_execute_testcheckblockers_test_blocked_step_exits_2", + "target": "scripts_test_execute_testcheckblockers_make_executor_with_steps", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "scripts/test_execute.py", + "source_location": "L556", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_test_execute_rationale_1", + "target": "scripts_test_execute", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "scripts/test_execute.py", + "source_location": "L1", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_test_execute_rationale_27", + "target": "scripts_test_execute_tmp_project", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "scripts/test_execute.py", + "source_location": "L27", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_test_execute_rationale_44", + "target": "scripts_test_execute_phase_dir", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "scripts/test_execute.py", + "source_location": "L44", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_test_execute_rationale_65", + "target": "scripts_test_execute_top_index", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "scripts/test_execute.py", + "source_location": "L65", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_test_execute_rationale_79", + "target": "scripts_test_execute_executor", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "scripts/test_execute.py", + "source_location": "L79", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_test_pipeline", + "target": "re", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "scripts/test_pipeline.py", + "source_location": "L4", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_test_pipeline", + "target": "sys", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "scripts/test_pipeline.py", + "source_location": "L5", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_test_pipeline", + "target": "pathlib", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "scripts/test_pipeline.py", + "source_location": "L6", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_test_pipeline", + "target": "pandas", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "scripts/test_pipeline.py", + "source_location": "L8", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_test_pipeline", + "target": "src_data_models", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "scripts/test_pipeline.py", + "source_location": "L12", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_test_pipeline", + "target": "src_validation_hard_fail", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "scripts/test_pipeline.py", + "source_location": "L13", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_test_pipeline", + "target": "src_validation_warning", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "scripts/test_pipeline.py", + "source_location": "L14", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_test_pipeline", + "target": "src_validation_scoring", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "scripts/test_pipeline.py", + "source_location": "L15", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_test_pipeline", + "target": "scripts_test_pipeline_guess_coords", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "scripts/test_pipeline.py", + "source_location": "L103", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_test_pipeline", + "target": "scripts_test_pipeline_guess_category", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "scripts/test_pipeline.py", + "source_location": "L115", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_test_pipeline", + "target": "scripts_test_pipeline_guess_duration", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "scripts/test_pipeline.py", + "source_location": "L122", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_test_pipeline", + "target": "scripts_test_pipeline_is_accommodation", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "scripts/test_pipeline.py", + "source_location": "L129", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_test_pipeline", + "target": "scripts_test_pipeline_parse_places", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "scripts/test_pipeline.py", + "source_location": "L134", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_test_pipeline", + "target": "scripts_test_pipeline_trip_days", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "scripts/test_pipeline.py", + "source_location": "L147", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_test_pipeline", + "target": "scripts_test_pipeline_party_type_from_triple", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "scripts/test_pipeline.py", + "source_location": "L158", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_test_pipeline", + "target": "scripts_test_pipeline_travel_type_from_theme", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "scripts/test_pipeline.py", + "source_location": "L175", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_test_pipeline", + "target": "scripts_test_pipeline_make_poi", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "scripts/test_pipeline.py", + "source_location": "L191", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_test_pipeline_make_poi", + "target": "src_data_models_poi", + "relation": "references", + "context": "return_type", + "confidence": "EXTRACTED", + "source_file": "scripts/test_pipeline.py", + "source_location": "L191", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_test_pipeline", + "target": "scripts_test_pipeline_load_gugseok", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "scripts/test_pipeline.py", + "source_location": "L213", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_test_pipeline", + "target": "scripts_test_pipeline_load_triple", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "scripts/test_pipeline.py", + "source_location": "L251", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_test_pipeline", + "target": "scripts_test_pipeline_build_itinerary", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "scripts/test_pipeline.py", + "source_location": "L277", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_test_pipeline_build_itinerary", + "target": "src_data_models_itineraryplan", + "relation": "references", + "context": "generic_arg", + "confidence": "EXTRACTED", + "source_file": "scripts/test_pipeline.py", + "source_location": "L277", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_test_pipeline_build_itinerary", + "target": "src_data_models_poi", + "relation": "references", + "context": "generic_arg", + "confidence": "EXTRACTED", + "source_file": "scripts/test_pipeline.py", + "source_location": "L277", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_test_pipeline", + "target": "scripts_test_pipeline_run_pipeline", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "scripts/test_pipeline.py", + "source_location": "L356", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_test_pipeline", + "target": "scripts_test_pipeline_main", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "scripts/test_pipeline.py", + "source_location": "L408", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_test_pipeline_make_poi", + "target": "scripts_test_pipeline_guess_coords", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "scripts/test_pipeline.py", + "source_location": "L192", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_test_pipeline_make_poi", + "target": "scripts_test_pipeline_guess_category", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "scripts/test_pipeline.py", + "source_location": "L193", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_test_pipeline_make_poi", + "target": "scripts_test_pipeline_guess_duration", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "scripts/test_pipeline.py", + "source_location": "L194", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_test_pipeline_make_poi", + "target": "src_data_models_poi", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "scripts/test_pipeline.py", + "source_location": "L197", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_test_pipeline_load_gugseok", + "target": "scripts_test_pipeline_parse_places", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "scripts/test_pipeline.py", + "source_location": "L227", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_test_pipeline_load_triple", + "target": "scripts_test_pipeline_parse_places", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "scripts/test_pipeline.py", + "source_location": "L259", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_test_pipeline_build_itinerary", + "target": "scripts_test_pipeline_trip_days", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "scripts/test_pipeline.py", + "source_location": "L285", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_test_pipeline_build_itinerary", + "target": "scripts_test_pipeline_party_type_from_triple", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "scripts/test_pipeline.py", + "source_location": "L288", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_test_pipeline_build_itinerary", + "target": "scripts_test_pipeline_travel_type_from_theme", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "scripts/test_pipeline.py", + "source_location": "L292", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_test_pipeline_build_itinerary", + "target": "scripts_test_pipeline_make_poi", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "scripts/test_pipeline.py", + "source_location": "L312", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_test_pipeline_build_itinerary", + "target": "src_data_models_poi", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "scripts/test_pipeline.py", + "source_location": "L330", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_test_pipeline_build_itinerary", + "target": "src_data_models_itineraryplan", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "scripts/test_pipeline.py", + "source_location": "L342", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_test_pipeline_run_pipeline", + "target": "scripts_test_pipeline_build_itinerary", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "scripts/test_pipeline.py", + "source_location": "L362", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_test_pipeline_run_pipeline", + "target": "src_data_models_itineraryplan", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "scripts/test_pipeline.py", + "source_location": "L375", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_test_pipeline_main", + "target": "scripts_test_pipeline_load_gugseok", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "scripts/test_pipeline.py", + "source_location": "L415", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_test_pipeline_main", + "target": "scripts_test_pipeline_run_pipeline", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "scripts/test_pipeline.py", + "source_location": "L416", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_test_pipeline_main", + "target": "scripts_test_pipeline_load_triple", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "scripts/test_pipeline.py", + "source_location": "L421", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_test_pipeline_rationale_1", + "target": "scripts_test_pipeline", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "scripts/test_pipeline.py", + "source_location": "L1", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_test_pipeline_rationale_104", + "target": "scripts_test_pipeline_guess_coords", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "scripts/test_pipeline.py", + "source_location": "L104", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_test_pipeline_rationale_135", + "target": "scripts_test_pipeline_parse_places", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "scripts/test_pipeline.py", + "source_location": "L135", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_test_pipeline_rationale_214", + "target": "scripts_test_pipeline_load_gugseok", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "scripts/test_pipeline.py", + "source_location": "L214", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_test_pipeline_rationale_252", + "target": "scripts_test_pipeline_load_triple", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "scripts/test_pipeline.py", + "source_location": "L252", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_test_pipeline_rationale_278", + "target": "scripts_test_pipeline_build_itinerary", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "scripts/test_pipeline.py", + "source_location": "L278", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_main", + "target": "os", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/api/main.py", + "source_location": "L4", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_main", + "target": "pathlib", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/api/main.py", + "source_location": "L5", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_main", + "target": "fastapi", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/api/main.py", + "source_location": "L7", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_main", + "target": "fastapi_middleware_cors", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/api/main.py", + "source_location": "L8", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_main", + "target": "fastapi_responses", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/api/main.py", + "source_location": "L9", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_main", + "target": "fastapi_staticfiles", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/api/main.py", + "source_location": "L10", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_main", + "target": "src_api_router", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/api/main.py", + "source_location": "L23", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_main_index", + "target": "src_api_main_py_get", + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "src/api/main.py", + "source_location": "L46", + "weight": 1.0, + "context": "decorator", + "_origin": "ast" + }, + { + "source": "src_api_main", + "target": "src_api_main_index", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/api/main.py", + "source_location": "L47", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_main_manifest", + "target": "src_api_main_py_get", + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "src/api/main.py", + "source_location": "L54", + "weight": 1.0, + "context": "decorator", + "_origin": "ast" + }, + { + "source": "src_api_main", + "target": "src_api_main_manifest", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/api/main.py", + "source_location": "L55", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_main_manifest", + "target": "src_api_main_py_response", + "relation": "references", + "context": "return_type", + "confidence": "EXTRACTED", + "source_file": "src/api/main.py", + "source_location": "L55", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_main_service_worker", + "target": "src_api_main_py_get", + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "src/api/main.py", + "source_location": "L62", + "weight": 1.0, + "context": "decorator", + "_origin": "ast" + }, + { + "source": "src_api_main", + "target": "src_api_main_service_worker", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/api/main.py", + "source_location": "L63", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_main_service_worker", + "target": "src_api_main_py_response", + "relation": "references", + "context": "return_type", + "confidence": "EXTRACTED", + "source_file": "src/api/main.py", + "source_location": "L63", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_main_health", + "target": "src_api_main_py_get", + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "src/api/main.py", + "source_location": "L74", + "weight": 1.0, + "context": "decorator", + "_origin": "ast" + }, + { + "source": "src_api_main", + "target": "src_api_main_health", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/api/main.py", + "source_location": "L75", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_main_rationale_76", + "target": "src_api_main_health", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/api/main.py", + "source_location": "L76", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_router", + "target": "asyncio", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/api/router.py", + "source_location": "L4", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_router", + "target": "csv", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/api/router.py", + "source_location": "L5", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_router", + "target": "json", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/api/router.py", + "source_location": "L6", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_router", + "target": "re", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/api/router.py", + "source_location": "L7", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_router", + "target": "pathlib", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/api/router.py", + "source_location": "L8", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_router", + "target": "openpyxl", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/api/router.py", + "source_location": "L10", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_router", + "target": "fastapi", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/api/router.py", + "source_location": "L11", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_router", + "target": "src_api_schemas", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/api/router.py", + "source_location": "L13", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_router", + "target": "src_data_dwell_db", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/api/router.py", + "source_location": "L23", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_router", + "target": "src_data_graph_retriever", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/api/router.py", + "source_location": "L24", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_router", + "target": "src_data_hours_db", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/api/router.py", + "source_location": "L25", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_router", + "target": "src_data_kakao_local", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/api/router.py", + "source_location": "L26", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_router", + "target": "src_data_models", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/api/router.py", + "source_location": "L27", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_router", + "target": "src_explain_pipeline", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/api/router.py", + "source_location": "L28", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_router", + "target": "src_explain_plan_extractor", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/api/router.py", + "source_location": "L29", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_router", + "target": "src_api_router_kakao_hint", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/api/router.py", + "source_location": "L51", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_router", + "target": "src_api_router_kakao_cat_code", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/api/router.py", + "source_location": "L65", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_router", + "target": "src_api_router_extract_chosung", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/api/router.py", + "source_location": "L232", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_router", + "target": "src_api_router_normalize", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/api/router.py", + "source_location": "L243", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_router", + "target": "src_api_router_guess_dwell", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/api/router.py", + "source_location": "L252", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_router", + "target": "src_api_router_addr_to_region", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/api/router.py", + "source_location": "L271", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_router", + "target": "src_api_router_parse_jeju_hours", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/api/router.py", + "source_location": "L282", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_router", + "target": "src_api_router_build_jeju_place_index", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/api/router.py", + "source_location": "L293", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_router", + "target": "src_api_router_build_coord_index", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/api/router.py", + "source_location": "L341", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_router", + "target": "src_api_router_build_place_list", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/api/router.py", + "source_location": "L394", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_router", + "target": "src_api_router_build_full_place_list", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/api/router.py", + "source_location": "L453", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_router", + "target": "src_api_router_build_monthly_congestion", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/api/router.py", + "source_location": "L555", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_router", + "target": "src_api_router_lookup_place", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/api/router.py", + "source_location": "L599", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_router", + "target": "src_api_router_resolve_poi", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/api/router.py", + "source_location": "L618", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_router_resolve_poi", + "target": "src_data_models_poi", + "relation": "references", + "context": "generic_arg", + "confidence": "EXTRACTED", + "source_file": "src/api/router.py", + "source_location": "L618", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_router_resolve_poi", + "target": "src_api_schemas_poiinfo", + "relation": "references", + "context": "generic_arg", + "confidence": "EXTRACTED", + "source_file": "src/api/router.py", + "source_location": "L618", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_router", + "target": "src_api_router_calc_reliability_score", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/api/router.py", + "source_location": "L714", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_router_calc_reliability_score", + "target": "src_api_schemas_poiinfo", + "relation": "references", + "context": "generic_arg", + "confidence": "EXTRACTED", + "source_file": "src/api/router.py", + "source_location": "L714", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_router", + "target": "src_api_router_get_pipeline", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/api/router.py", + "source_location": "L724", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_router_get_pipeline", + "target": "src_explain_pipeline_validatorpipeline", + "relation": "references", + "context": "return_type", + "confidence": "EXTRACTED", + "source_file": "src/api/router.py", + "source_location": "L724", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_router_list_places", + "target": "src_api_router_py_get", + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "src/api/router.py", + "source_location": "L731", + "weight": 1.0, + "context": "decorator", + "_origin": "ast" + }, + { + "source": "src_api_router", + "target": "src_api_router_list_places", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/api/router.py", + "source_location": "L732", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_router_list_places", + "target": "src_api_schemas_placesresponse", + "relation": "references", + "context": "return_type", + "confidence": "EXTRACTED", + "source_file": "src/api/router.py", + "source_location": "L732", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_router_monthly_congestion", + "target": "src_api_router_py_get", + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "src/api/router.py", + "source_location": "L805", + "weight": 1.0, + "context": "decorator", + "_origin": "ast" + }, + { + "source": "src_api_router", + "target": "src_api_router_monthly_congestion", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/api/router.py", + "source_location": "L806", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_router_list_regions", + "target": "src_api_router_py_get", + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "src/api/router.py", + "source_location": "L817", + "weight": 1.0, + "context": "decorator", + "_origin": "ast" + }, + { + "source": "src_api_router", + "target": "src_api_router_list_regions", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/api/router.py", + "source_location": "L818", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_router_parse_text", + "target": "post", + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "src/api/router.py", + "source_location": "L829", + "weight": 1.0, + "context": "decorator", + "_origin": "ast" + }, + { + "source": "src_api_router", + "target": "src_api_router_parse_text", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/api/router.py", + "source_location": "L830", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_router_parse_text", + "target": "src_api_schemas_parsetextrequest", + "relation": "references", + "context": "parameter_type", + "confidence": "EXTRACTED", + "source_file": "src/api/router.py", + "source_location": "L830", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_router_parse_text", + "target": "src_api_schemas_parsedplanresponse", + "relation": "references", + "context": "return_type", + "confidence": "EXTRACTED", + "source_file": "src/api/router.py", + "source_location": "L830", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_router_parse_document", + "target": "post", + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "src/api/router.py", + "source_location": "L838", + "weight": 1.0, + "context": "decorator", + "_origin": "ast" + }, + { + "source": "src_api_router", + "target": "src_api_router_parse_document", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/api/router.py", + "source_location": "L839", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_router_parse_document", + "target": "uploadfile", + "relation": "references", + "context": "parameter_type", + "confidence": "EXTRACTED", + "source_file": "src/api/router.py", + "source_location": "L839", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_router_parse_document", + "target": "src_api_schemas_parsedplanresponse", + "relation": "references", + "context": "return_type", + "confidence": "EXTRACTED", + "source_file": "src/api/router.py", + "source_location": "L839", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_router_resolve_coords", + "target": "post", + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "src/api/router.py", + "source_location": "L855", + "weight": 1.0, + "context": "decorator", + "_origin": "ast" + }, + { + "source": "src_api_router", + "target": "src_api_router_resolve_coords", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/api/router.py", + "source_location": "L856", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_router_resolve_coords", + "target": "src_api_schemas_dayplanweb", + "relation": "references", + "context": "parameter_type", + "confidence": "EXTRACTED", + "source_file": "src/api/router.py", + "source_location": "L856", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_router_resolve_coords", + "target": "src_data_models_poi", + "relation": "references", + "context": "generic_arg", + "confidence": "EXTRACTED", + "source_file": "src/api/router.py", + "source_location": "L856", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_router_validate_plan", + "target": "post", + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "src/api/router.py", + "source_location": "L868", + "weight": 1.0, + "context": "decorator", + "_origin": "ast" + }, + { + "source": "src_api_router", + "target": "src_api_router_validate_plan", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/api/router.py", + "source_location": "L869", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_router_validate_plan", + "target": "src_api_schemas_validaterequest", + "relation": "references", + "context": "parameter_type", + "confidence": "EXTRACTED", + "source_file": "src/api/router.py", + "source_location": "L869", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_router_validate_plan", + "target": "src_api_schemas_validateresponse", + "relation": "references", + "context": "return_type", + "confidence": "EXTRACTED", + "source_file": "src/api/router.py", + "source_location": "L869", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_router_guess_dwell", + "target": "src_api_router_normalize", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/api/router.py", + "source_location": "L253", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_router_addr_to_region", + "target": "src_api_router_py_get", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/api/router.py", + "source_location": "L273", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_router_build_jeju_place_index", + "target": "src_api_router_py_get", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/api/router.py", + "source_location": "L307", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_router_build_jeju_place_index", + "target": "src_api_router_normalize", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/api/router.py", + "source_location": "L310", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_router_build_jeju_place_index", + "target": "src_api_router_parse_jeju_hours", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/api/router.py", + "source_location": "L329", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_router_build_coord_index", + "target": "src_api_router_normalize", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/api/router.py", + "source_location": "L354", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_router_build_coord_index", + "target": "src_api_router_addr_to_region", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/api/router.py", + "source_location": "L360", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_router_build_coord_index", + "target": "src_api_router_py_get", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/api/router.py", + "source_location": "L360", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_router_build_place_list", + "target": "src_api_router_py_get", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/api/router.py", + "source_location": "L417", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_router_build_place_list", + "target": "src_api_router_normalize", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/api/router.py", + "source_location": "L419", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_router_build_full_place_list", + "target": "src_api_router_normalize", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/api/router.py", + "source_location": "L464", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_router_build_full_place_list", + "target": "src_api_router_addr_to_region", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/api/router.py", + "source_location": "L475", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_router_build_full_place_list", + "target": "src_api_router_py_get", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/api/router.py", + "source_location": "L475", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_router_build_monthly_congestion", + "target": "src_api_router_py_get", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/api/router.py", + "source_location": "L566", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_router_lookup_place", + "target": "src_api_router_normalize", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/api/router.py", + "source_location": "L602", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_router_resolve_poi", + "target": "src_api_router_lookup_place", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/api/router.py", + "source_location": "L619", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_router_resolve_poi", + "target": "src_api_router_py_get", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/api/router.py", + "source_location": "L620", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_router_resolve_poi", + "target": "src_api_router_normalize", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/api/router.py", + "source_location": "L621", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_router_resolve_poi", + "target": "src_api_router_kakao_hint", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/api/router.py", + "source_location": "L650", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_router_resolve_poi", + "target": "src_api_router_guess_dwell", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/api/router.py", + "source_location": "L678", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_router_resolve_poi", + "target": "src_data_models_poi", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/api/router.py", + "source_location": "L689", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_router_resolve_poi", + "target": "src_api_schemas_poiinfo", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/api/router.py", + "source_location": "L697", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_router_calc_reliability_score", + "target": "src_api_router_py_get", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/api/router.py", + "source_location": "L717", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_router_get_pipeline", + "target": "src_explain_pipeline_validatorpipeline", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/api/router.py", + "source_location": "L727", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_router_list_places", + "target": "src_api_router_py_get", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/api/router.py", + "source_location": "L745", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_router_list_places", + "target": "src_api_router_extract_chosung", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/api/router.py", + "source_location": "L753", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_router_list_places", + "target": "src_api_router_normalize", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/api/router.py", + "source_location": "L760", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_router_list_places", + "target": "src_api_router_addr_to_region", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/api/router.py", + "source_location": "L765", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_router_list_places", + "target": "src_api_router_kakao_cat_code", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/api/router.py", + "source_location": "L768", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_router_list_places", + "target": "src_api_schemas_placesresponse", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/api/router.py", + "source_location": "L802", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_router_monthly_congestion", + "target": "src_api_router_py_get", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/api/router.py", + "source_location": "L808", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_router_monthly_congestion", + "target": "src_api_router_normalize", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/api/router.py", + "source_location": "L811", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_router_list_regions", + "target": "src_api_router_py_get", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/api/router.py", + "source_location": "L823", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_router_parse_document", + "target": "src_api_router_py_get", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/api/router.py", + "source_location": "L841", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_router_resolve_coords", + "target": "src_api_router_resolve_poi", + "relation": "indirect_call", + "context": "argument", + "confidence": "INFERRED", + "source_file": "src/api/router.py", + "source_location": "L861", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_router_validate_plan", + "target": "src_api_router_resolve_poi", + "relation": "indirect_call", + "context": "argument", + "confidence": "INFERRED", + "source_file": "src/api/router.py", + "source_location": "L882", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_router_validate_plan", + "target": "src_api_router_get_pipeline", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/api/router.py", + "source_location": "L906", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_router_validate_plan", + "target": "src_api_router_calc_reliability_score", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/api/router.py", + "source_location": "L920", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_router_validate_plan", + "target": "src_api_router_py_get", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/api/router.py", + "source_location": "L933", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_router_validate_plan", + "target": "src_api_schemas_validateresponse", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/api/router.py", + "source_location": "L963", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_router_rationale_1", + "target": "src_api_router", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/api/router.py", + "source_location": "L1", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_router_rationale_52", + "target": "src_api_router_kakao_hint", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/api/router.py", + "source_location": "L52", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_router_rationale_66", + "target": "src_api_router_kakao_cat_code", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/api/router.py", + "source_location": "L66", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_router_rationale_283", + "target": "src_api_router_parse_jeju_hours", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/api/router.py", + "source_location": "L283", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_router_rationale_294", + "target": "src_api_router_build_jeju_place_index", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/api/router.py", + "source_location": "L294", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_router_rationale_342", + "target": "src_api_router_build_coord_index", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/api/router.py", + "source_location": "L342", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_router_rationale_395", + "target": "src_api_router_build_place_list", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/api/router.py", + "source_location": "L395", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_router_rationale_454", + "target": "src_api_router_build_full_place_list", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/api/router.py", + "source_location": "L454", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_router_rationale_556", + "target": "src_api_router_build_monthly_congestion", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/api/router.py", + "source_location": "L556", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_router_rationale_600", + "target": "src_api_router_lookup_place", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/api/router.py", + "source_location": "L600", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_router_rationale_736", + "target": "src_api_router_list_places", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/api/router.py", + "source_location": "L736", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_router_rationale_831", + "target": "src_api_router_parse_text", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/api/router.py", + "source_location": "L831", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_router_rationale_840", + "target": "src_api_router_parse_document", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/api/router.py", + "source_location": "L840", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_router_rationale_857", + "target": "src_api_router_resolve_coords", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/api/router.py", + "source_location": "L857", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_schemas", + "target": "typing", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/api/schemas.py", + "source_location": "L4", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_schemas", + "target": "pydantic", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/api/schemas.py", + "source_location": "L6", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_schemas", + "target": "src_api_schemas_placeinputweb", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/api/schemas.py", + "source_location": "L9", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_schemas_placeinputweb", + "target": "src_api_schemas_py_basemodel", + "relation": "inherits", + "confidence": "EXTRACTED", + "source_file": "src/api/schemas.py", + "source_location": "L9", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_schemas", + "target": "src_api_schemas_dayplanweb", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/api/schemas.py", + "source_location": "L14", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_schemas_dayplanweb", + "target": "src_api_schemas_py_basemodel", + "relation": "inherits", + "confidence": "EXTRACTED", + "source_file": "src/api/schemas.py", + "source_location": "L14", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_schemas", + "target": "src_api_schemas_poiinfo", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/api/schemas.py", + "source_location": "L18", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_schemas_poiinfo", + "target": "src_api_schemas_py_basemodel", + "relation": "inherits", + "confidence": "EXTRACTED", + "source_file": "src/api/schemas.py", + "source_location": "L18", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_schemas", + "target": "src_api_schemas_placeitem", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/api/schemas.py", + "source_location": "L37", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_schemas_placeitem", + "target": "src_api_schemas_py_basemodel", + "relation": "inherits", + "confidence": "EXTRACTED", + "source_file": "src/api/schemas.py", + "source_location": "L37", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_schemas", + "target": "src_api_schemas_placesresponse", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/api/schemas.py", + "source_location": "L49", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_schemas_placesresponse", + "target": "src_api_schemas_py_basemodel", + "relation": "inherits", + "confidence": "EXTRACTED", + "source_file": "src/api/schemas.py", + "source_location": "L49", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_schemas", + "target": "src_api_schemas_validaterequest", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/api/schemas.py", + "source_location": "L54", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_schemas_validaterequest", + "target": "src_api_schemas_py_basemodel", + "relation": "inherits", + "confidence": "EXTRACTED", + "source_file": "src/api/schemas.py", + "source_location": "L54", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_schemas", + "target": "src_api_schemas_parsetextrequest", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/api/schemas.py", + "source_location": "L64", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_schemas_parsetextrequest", + "target": "src_api_schemas_py_basemodel", + "relation": "inherits", + "confidence": "EXTRACTED", + "source_file": "src/api/schemas.py", + "source_location": "L64", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_schemas", + "target": "src_api_schemas_parsedplace", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/api/schemas.py", + "source_location": "L68", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_schemas_parsedplace", + "target": "src_api_schemas_py_basemodel", + "relation": "inherits", + "confidence": "EXTRACTED", + "source_file": "src/api/schemas.py", + "source_location": "L68", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_schemas", + "target": "src_api_schemas_parsedday", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/api/schemas.py", + "source_location": "L74", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_schemas_parsedday", + "target": "src_api_schemas_py_basemodel", + "relation": "inherits", + "confidence": "EXTRACTED", + "source_file": "src/api/schemas.py", + "source_location": "L74", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_schemas", + "target": "src_api_schemas_parsedplanresponse", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/api/schemas.py", + "source_location": "L78", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_schemas_parsedplanresponse", + "target": "src_api_schemas_py_basemodel", + "relation": "inherits", + "confidence": "EXTRACTED", + "source_file": "src/api/schemas.py", + "source_location": "L78", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_schemas", + "target": "src_api_schemas_validateresponse", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/api/schemas.py", + "source_location": "L82", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_schemas_validateresponse", + "target": "src_api_schemas_py_basemodel", + "relation": "inherits", + "confidence": "EXTRACTED", + "source_file": "src/api/schemas.py", + "source_location": "L82", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_schemas_rationale_1", + "target": "src_api_schemas", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/api/schemas.py", + "source_location": "L1", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_static_manifest", + "target": "src_api_static_manifest_name", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/api/static/manifest.json", + "source_location": "L2", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_static_manifest", + "target": "src_api_static_manifest_short_name", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/api/static/manifest.json", + "source_location": "L3", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_static_manifest", + "target": "src_api_static_manifest_description", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/api/static/manifest.json", + "source_location": "L4", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_static_manifest", + "target": "src_api_static_manifest_start_url", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/api/static/manifest.json", + "source_location": "L5", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_static_manifest", + "target": "src_api_static_manifest_display", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/api/static/manifest.json", + "source_location": "L6", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_static_manifest", + "target": "src_api_static_manifest_background_color", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/api/static/manifest.json", + "source_location": "L7", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_static_manifest", + "target": "src_api_static_manifest_theme_color", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/api/static/manifest.json", + "source_location": "L8", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_static_manifest", + "target": "src_api_static_manifest_orientation", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/api/static/manifest.json", + "source_location": "L9", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_static_manifest", + "target": "src_api_static_manifest_lang", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/api/static/manifest.json", + "source_location": "L10", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_static_manifest", + "target": "src_api_static_manifest_categories", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/api/static/manifest.json", + "source_location": "L11", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_static_manifest_categories", + "target": "ref_travel", + "relation": "extends", + "confidence": "EXTRACTED", + "source_file": "src/api/static/manifest.json", + "source_location": "L11", + "weight": 1.0, + "context": "import", + "_origin": "ast" + }, + { + "source": "src_api_static_manifest_categories", + "target": "ref_utilities", + "relation": "extends", + "confidence": "EXTRACTED", + "source_file": "src/api/static/manifest.json", + "source_location": "L11", + "weight": 1.0, + "context": "import", + "_origin": "ast" + }, + { + "source": "src_api_static_manifest", + "target": "src_api_static_manifest_icons", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/api/static/manifest.json", + "source_location": "L12", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_static_manifest", + "target": "src_api_static_manifest_shortcuts", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/api/static/manifest.json", + "source_location": "L26", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_static_service_worker", + "target": "src_api_static_service_worker_shell", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/api/static/service-worker.js", + "source_location": "L2", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_barrier_free_api", + "target": "dataclasses", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/data/barrier_free_api.py", + "source_location": "L11", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_barrier_free_api", + "target": "typing", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/data/barrier_free_api.py", + "source_location": "L12", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_barrier_free_api", + "target": "httpx", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/data/barrier_free_api.py", + "source_location": "L14", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_barrier_free_api", + "target": "src_data_models", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/data/barrier_free_api.py", + "source_location": "L16", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_barrier_free_api", + "target": "src_data_barrier_free_api_barrierfreeplace", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/data/barrier_free_api.py", + "source_location": "L24", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_barrier_free_api", + "target": "src_data_barrier_free_api_barrierfreedetail", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/data/barrier_free_api.py", + "source_location": "L43", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_barrier_free_api", + "target": "src_data_barrier_free_api_extract_items", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/data/barrier_free_api.py", + "source_location": "L68", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_barrier_free_api", + "target": "src_data_barrier_free_api_safe_float", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/data/barrier_free_api.py", + "source_location": "L78", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_barrier_free_api_safe_float", + "target": "src_data_barrier_free_api_py_any", + "relation": "references", + "context": "parameter_type", + "confidence": "EXTRACTED", + "source_file": "src/data/barrier_free_api.py", + "source_location": "L78", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_barrier_free_api", + "target": "src_data_barrier_free_api_str", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/data/barrier_free_api.py", + "source_location": "L85", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_barrier_free_api_str", + "target": "src_data_barrier_free_api_py_any", + "relation": "references", + "context": "parameter_type", + "confidence": "EXTRACTED", + "source_file": "src/data/barrier_free_api.py", + "source_location": "L85", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_barrier_free_api", + "target": "src_data_barrier_free_api_barrierfreeapiclient", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/data/barrier_free_api.py", + "source_location": "L91", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_barrier_free_api_barrierfreeapiclient", + "target": "src_data_barrier_free_api_barrierfreeapiclient_init", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/data/barrier_free_api.py", + "source_location": "L97", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_barrier_free_api_barrierfreeapiclient", + "target": "src_data_barrier_free_api_barrierfreeapiclient_from_settings", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/data/barrier_free_api.py", + "source_location": "L104", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_barrier_free_api_barrierfreeapiclient_from_settings", + "target": "src_data_models_settings", + "relation": "references", + "context": "parameter_type", + "confidence": "EXTRACTED", + "source_file": "src/data/barrier_free_api.py", + "source_location": "L104", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_barrier_free_api_barrierfreeapiclient", + "target": "src_data_barrier_free_api_barrierfreeapiclient_fetch_page", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/data/barrier_free_api.py", + "source_location": "L112", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_barrier_free_api_barrierfreeapiclient_fetch_page", + "target": "src_data_barrier_free_api_barrierfreeplace", + "relation": "references", + "context": "generic_arg", + "confidence": "EXTRACTED", + "source_file": "src/data/barrier_free_api.py", + "source_location": "L112", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_barrier_free_api_barrierfreeapiclient", + "target": "src_data_barrier_free_api_barrierfreeapiclient_fetch_detail", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/data/barrier_free_api.py", + "source_location": "L163", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_barrier_free_api_barrierfreeapiclient_fetch_detail", + "target": "src_data_barrier_free_api_barrierfreedetail", + "relation": "references", + "context": "return_type", + "confidence": "EXTRACTED", + "source_file": "src/data/barrier_free_api.py", + "source_location": "L163", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_barrier_free_api_barrierfreeapiclient", + "target": "src_data_barrier_free_api_barrierfreeapiclient_fetch_all", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/data/barrier_free_api.py", + "source_location": "L210", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_barrier_free_api_barrierfreeapiclient_fetch_all", + "target": "src_data_barrier_free_api_barrierfreeplace", + "relation": "references", + "context": "generic_arg", + "confidence": "EXTRACTED", + "source_file": "src/data/barrier_free_api.py", + "source_location": "L210", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_barrier_free_api_barrierfreeapiclient_from_settings", + "target": "src_data_models_settings", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/data/barrier_free_api.py", + "source_location": "L106", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_barrier_free_api_barrierfreeapiclient_fetch_page", + "target": "src_data_barrier_free_api_extract_items", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/data/barrier_free_api.py", + "source_location": "L146", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_barrier_free_api_barrierfreeapiclient_fetch_page", + "target": "src_data_barrier_free_api_str", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/data/barrier_free_api.py", + "source_location": "L147", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_barrier_free_api_barrierfreeapiclient_fetch_page", + "target": "src_data_barrier_free_api_safe_float", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/data/barrier_free_api.py", + "source_location": "L150", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_barrier_free_api_barrierfreeapiclient_fetch_page", + "target": "src_data_barrier_free_api_barrierfreeplace", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/data/barrier_free_api.py", + "source_location": "L154", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_barrier_free_api_barrierfreeapiclient_fetch_detail", + "target": "src_data_barrier_free_api_extract_items", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/data/barrier_free_api.py", + "source_location": "L186", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_barrier_free_api_barrierfreeapiclient_fetch_detail", + "target": "src_data_barrier_free_api_barrierfreedetail", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/data/barrier_free_api.py", + "source_location": "L190", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_barrier_free_api_barrierfreeapiclient_fetch_detail", + "target": "src_data_barrier_free_api_str", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/data/barrier_free_api.py", + "source_location": "L191", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_barrier_free_api_barrierfreeapiclient_fetch_all", + "target": "src_data_barrier_free_api_barrierfreeapiclient_fetch_page", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/data/barrier_free_api.py", + "source_location": "L215", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_barrier_free_api_rationale_1", + "target": "src_data_barrier_free_api", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/data/barrier_free_api.py", + "source_location": "L1", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_barrier_free_api_rationale_25", + "target": "src_data_barrier_free_api_barrierfreeplace", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/data/barrier_free_api.py", + "source_location": "L25", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_barrier_free_api_rationale_44", + "target": "src_data_barrier_free_api_barrierfreedetail", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/data/barrier_free_api.py", + "source_location": "L44", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_barrier_free_api_rationale_92", + "target": "src_data_barrier_free_api_barrierfreeapiclient", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/data/barrier_free_api.py", + "source_location": "L92", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_barrier_free_api_rationale_119", + "target": "src_data_barrier_free_api_barrierfreeapiclient_fetch_page", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/data/barrier_free_api.py", + "source_location": "L119", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_barrier_free_api_rationale_164", + "target": "src_data_barrier_free_api_barrierfreeapiclient_fetch_detail", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/data/barrier_free_api.py", + "source_location": "L164", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_barrier_free_api_rationale_211", + "target": "src_data_barrier_free_api_barrierfreeapiclient_fetch_all", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/data/barrier_free_api.py", + "source_location": "L211", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_dwell_db", + "target": "dataclasses", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/data/dwell_db.py", + "source_location": "L14", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_dwell_db", + "target": "typing", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/data/dwell_db.py", + "source_location": "L15", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_dwell_db", + "target": "src_data_dwell_db_dwellrecommendation", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/data/dwell_db.py", + "source_location": "L21", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_dwell_db_dwellrecommendation", + "target": "src_data_dwell_db_dwellrecommendation_is_too_short", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/data/dwell_db.py", + "source_location": "L27", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_dwell_db", + "target": "src_data_dwell_db_normalize_name", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/data/dwell_db.py", + "source_location": "L181", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_dwell_db", + "target": "src_data_dwell_db_get_recommended_dwell", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/data/dwell_db.py", + "source_location": "L192", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_dwell_db_get_recommended_dwell", + "target": "src_data_dwell_db_dwellrecommendation", + "relation": "references", + "context": "return_type", + "confidence": "EXTRACTED", + "source_file": "src/data/dwell_db.py", + "source_location": "L192", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_dwell_db_get_recommended_dwell", + "target": "src_data_dwell_db_normalize_name", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/data/dwell_db.py", + "source_location": "L212", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_dwell_db_get_recommended_dwell", + "target": "src_data_dwell_db_dwellrecommendation", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/data/dwell_db.py", + "source_location": "L215", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_dwell_db_rationale_1", + "target": "src_data_dwell_db", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/data/dwell_db.py", + "source_location": "L1", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_dwell_db_rationale_28", + "target": "src_data_dwell_db_dwellrecommendation_is_too_short", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/data/dwell_db.py", + "source_location": "L28", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_dwell_db_rationale_182", + "target": "src_data_dwell_db_normalize_name", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/data/dwell_db.py", + "source_location": "L182", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_dwell_db_rationale_198", + "target": "src_data_dwell_db_get_recommended_dwell", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/data/dwell_db.py", + "source_location": "L198", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_graph_retriever", + "target": "os", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/data/graph_retriever.py", + "source_location": "L14", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_graph_retriever", + "target": "time", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/data/graph_retriever.py", + "source_location": "L15", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_graph_retriever", + "target": "neo4j", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/data/graph_retriever.py", + "source_location": "L17", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_graph_retriever", + "target": "neo4j_exceptions", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/data/graph_retriever.py", + "source_location": "L18", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_graph_retriever", + "target": "src_data_models", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/data/graph_retriever.py", + "source_location": "L20", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_graph_retriever", + "target": "src_data_graph_retriever_graphretriever", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/data/graph_retriever.py", + "source_location": "L44", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_graph_retriever_graphretriever", + "target": "src_data_graph_retriever_graphretriever_init", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/data/graph_retriever.py", + "source_location": "L47", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_graph_retriever_graphretriever", + "target": "src_data_graph_retriever_graphretriever_from_env", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/data/graph_retriever.py", + "source_location": "L62", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_graph_retriever_graphretriever_from_env", + "target": "src_data_graph_retriever_graphretriever", + "relation": "references", + "context": "return_type", + "confidence": "EXTRACTED", + "source_file": "src/data/graph_retriever.py", + "source_location": "L62", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_graph_retriever_graphretriever", + "target": "src_data_graph_retriever_graphretriever_enabled", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/data/graph_retriever.py", + "source_location": "L71", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_graph_retriever_graphretriever", + "target": "src_data_graph_retriever_graphretriever_callable", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/data/graph_retriever.py", + "source_location": "L74", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_graph_retriever_graphretriever", + "target": "src_data_graph_retriever_graphretriever_mark_unreachable", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/data/graph_retriever.py", + "source_location": "L78", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_graph_retriever_graphretriever", + "target": "src_data_graph_retriever_graphretriever_close", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/data/graph_retriever.py", + "source_location": "L81", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_graph_retriever_graphretriever", + "target": "src_data_graph_retriever_graphretriever_search_places", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/data/graph_retriever.py", + "source_location": "L85", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_graph_retriever_graphretriever_search_places", + "target": "src_data_models_placeevidence", + "relation": "references", + "context": "generic_arg", + "confidence": "EXTRACTED", + "source_file": "src/data/graph_retriever.py", + "source_location": "L85", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_graph_retriever_graphretriever", + "target": "src_data_graph_retriever_graphretriever_find_nearby", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/data/graph_retriever.py", + "source_location": "L111", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_graph_retriever_graphretriever_find_nearby", + "target": "src_data_models_alternativepoi", + "relation": "references", + "context": "generic_arg", + "confidence": "EXTRACTED", + "source_file": "src/data/graph_retriever.py", + "source_location": "L111", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_graph_retriever_graphretriever_search_places", + "target": "src_data_graph_retriever_graphretriever_callable", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/data/graph_retriever.py", + "source_location": "L88", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_graph_retriever_graphretriever_search_places", + "target": "src_data_graph_retriever_graphretriever_mark_unreachable", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/data/graph_retriever.py", + "source_location": "L95", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_graph_retriever_graphretriever_search_places", + "target": "src_data_models_placeevidence", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/data/graph_retriever.py", + "source_location": "L98", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_graph_retriever_graphretriever_find_nearby", + "target": "src_data_graph_retriever_graphretriever_callable", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/data/graph_retriever.py", + "source_location": "L113", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_graph_retriever_graphretriever_find_nearby", + "target": "src_data_graph_retriever_graphretriever_mark_unreachable", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/data/graph_retriever.py", + "source_location": "L120", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_graph_retriever_graphretriever_find_nearby", + "target": "src_data_models_alternativepoi", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/data/graph_retriever.py", + "source_location": "L123", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_graph_retriever_rationale_1", + "target": "src_data_graph_retriever", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/data/graph_retriever.py", + "source_location": "L1", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_graph_retriever_rationale_45", + "target": "src_data_graph_retriever_graphretriever", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/data/graph_retriever.py", + "source_location": "L45", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_graph_retriever_rationale_75", + "target": "src_data_graph_retriever_graphretriever_callable", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/data/graph_retriever.py", + "source_location": "L75", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_graph_retriever_rationale_86", + "target": "src_data_graph_retriever_graphretriever_search_places", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/data/graph_retriever.py", + "source_location": "L86", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_graph_retriever_rationale_112", + "target": "src_data_graph_retriever_graphretriever_find_nearby", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/data/graph_retriever.py", + "source_location": "L112", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_hours_db", + "target": "re", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/data/hours_db.py", + "source_location": "L9", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_hours_db", + "target": "dataclasses", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/data/hours_db.py", + "source_location": "L10", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_hours_db", + "target": "src_data_hours_db_hoursspec", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/data/hours_db.py", + "source_location": "L14", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_hours_db", + "target": "src_data_hours_db_resolve_hours", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/data/hours_db.py", + "source_location": "L245", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_hours_db_resolve_hours", + "target": "src_data_hours_db_hoursspec", + "relation": "references", + "context": "return_type", + "confidence": "EXTRACTED", + "source_file": "src/data/hours_db.py", + "source_location": "L245", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_hours_db", + "target": "src_data_hours_db_to_minutes", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/data/hours_db.py", + "source_location": "L267", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_hours_db", + "target": "src_data_hours_db_is_open_at", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/data/hours_db.py", + "source_location": "L272", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_hours_db_is_open_at", + "target": "src_data_hours_db_hoursspec", + "relation": "references", + "context": "parameter_type", + "confidence": "EXTRACTED", + "source_file": "src/data/hours_db.py", + "source_location": "L272", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_hours_db_is_open_at", + "target": "src_data_hours_db_to_minutes", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/data/hours_db.py", + "source_location": "L276", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_hours_db_rationale_1", + "target": "src_data_hours_db", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/data/hours_db.py", + "source_location": "L1", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_hours_db_rationale_246", + "target": "src_data_hours_db_resolve_hours", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/data/hours_db.py", + "source_location": "L246", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_hours_db_rationale_273", + "target": "src_data_hours_db_is_open_at", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/data/hours_db.py", + "source_location": "L273", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_kakao_local", + "target": "os", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/data/kakao_local.py", + "source_location": "L14", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_kakao_local", + "target": "httpx", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/data/kakao_local.py", + "source_location": "L16", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_kakao_local", + "target": "src_data_models", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/data/kakao_local.py", + "source_location": "L18", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_kakao_local", + "target": "src_data_kakao_local_kakaolocalclient", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/data/kakao_local.py", + "source_location": "L24", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_kakao_local_kakaolocalclient", + "target": "src_data_kakao_local_kakaolocalclient_init", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/data/kakao_local.py", + "source_location": "L27", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_kakao_local_kakaolocalclient", + "target": "src_data_kakao_local_kakaolocalclient_from_env", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/data/kakao_local.py", + "source_location": "L36", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_kakao_local_kakaolocalclient_from_env", + "target": "src_data_kakao_local_kakaolocalclient", + "relation": "references", + "context": "return_type", + "confidence": "EXTRACTED", + "source_file": "src/data/kakao_local.py", + "source_location": "L36", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_kakao_local_kakaolocalclient", + "target": "src_data_kakao_local_kakaolocalclient_enabled", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/data/kakao_local.py", + "source_location": "L40", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_kakao_local_kakaolocalclient", + "target": "src_data_kakao_local_kakaolocalclient_search_keyword", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/data/kakao_local.py", + "source_location": "L43", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_kakao_local_kakaolocalclient_search_keyword", + "target": "src_data_models_kakaoplace", + "relation": "references", + "context": "return_type", + "confidence": "EXTRACTED", + "source_file": "src/data/kakao_local.py", + "source_location": "L43", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_kakao_local_kakaolocalclient", + "target": "src_data_kakao_local_kakaolocalclient_search_keyword_list", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/data/kakao_local.py", + "source_location": "L82", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_kakao_local_kakaolocalclient_search_keyword_list", + "target": "src_data_models_kakaoplace", + "relation": "references", + "context": "generic_arg", + "confidence": "EXTRACTED", + "source_file": "src/data/kakao_local.py", + "source_location": "L82", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_kakao_local_kakaolocalclient", + "target": "src_data_kakao_local_kakaolocalclient_geocode_address", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/data/kakao_local.py", + "source_location": "L125", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_kakao_local_kakaolocalclient_search_keyword", + "target": "src_data_models_kakaoplace", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/data/kakao_local.py", + "source_location": "L65", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_kakao_local_kakaolocalclient_search_keyword_list", + "target": "src_data_models_kakaoplace", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/data/kakao_local.py", + "source_location": "L105", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_kakao_local_rationale_1", + "target": "src_data_kakao_local", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/data/kakao_local.py", + "source_location": "L1", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_kakao_local_rationale_25", + "target": "src_data_kakao_local_kakaolocalclient", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/data/kakao_local.py", + "source_location": "L25", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_kakao_local_rationale_44", + "target": "src_data_kakao_local_kakaolocalclient_search_keyword", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/data/kakao_local.py", + "source_location": "L44", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_kakao_local_rationale_83", + "target": "src_data_kakao_local_kakaolocalclient_search_keyword_list", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/data/kakao_local.py", + "source_location": "L83", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_kakao_local_rationale_126", + "target": "src_data_kakao_local_kakaolocalclient_geocode_address", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/data/kakao_local.py", + "source_location": "L126", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_models", + "target": "hashlib", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/data/models.py", + "source_location": "L9", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_models", + "target": "re", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/data/models.py", + "source_location": "L10", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_models", + "target": "typing", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/data/models.py", + "source_location": "L11", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_models", + "target": "pydantic", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/data/models.py", + "source_location": "L13", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_models", + "target": "pydantic_settings", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/data/models.py", + "source_location": "L14", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_models", + "target": "src_data_models_kakaoplace", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/data/models.py", + "source_location": "L22", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_models_kakaoplace", + "target": "src_data_models_py_basemodel", + "relation": "inherits", + "confidence": "EXTRACTED", + "source_file": "src/data/models.py", + "source_location": "L22", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_models", + "target": "src_data_models_placeevidence", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/data/models.py", + "source_location": "L34", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_models_placeevidence", + "target": "src_data_models_py_basemodel", + "relation": "inherits", + "confidence": "EXTRACTED", + "source_file": "src/data/models.py", + "source_location": "L34", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_models", + "target": "src_data_models_hardfail", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/data/models.py", + "source_location": "L47", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_models_hardfail", + "target": "src_data_models_py_basemodel", + "relation": "inherits", + "confidence": "EXTRACTED", + "source_file": "src/data/models.py", + "source_location": "L47", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_models", + "target": "src_data_models_warning", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/data/models.py", + "source_location": "L64", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_models_warning", + "target": "src_data_models_py_basemodel", + "relation": "inherits", + "confidence": "EXTRACTED", + "source_file": "src/data/models.py", + "source_location": "L64", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_models", + "target": "src_data_models_scores", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/data/models.py", + "source_location": "L81", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_models_scores", + "target": "src_data_models_py_basemodel", + "relation": "inherits", + "confidence": "EXTRACTED", + "source_file": "src/data/models.py", + "source_location": "L81", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_models_scores_validate_ranges", + "target": "model_validator", + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "src/data/models.py", + "source_location": "L88", + "weight": 1.0, + "context": "decorator", + "_origin": "ast" + }, + { + "source": "src_data_models_scores", + "target": "src_data_models_scores_validate_ranges", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/data/models.py", + "source_location": "L89", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_models", + "target": "src_data_models_alternativepoi", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/data/models.py", + "source_location": "L97", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_models_alternativepoi", + "target": "src_data_models_py_basemodel", + "relation": "inherits", + "confidence": "EXTRACTED", + "source_file": "src/data/models.py", + "source_location": "L97", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_models", + "target": "src_data_models_poi", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/data/models.py", + "source_location": "L105", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_models_poi", + "target": "src_data_models_py_basemodel", + "relation": "inherits", + "confidence": "EXTRACTED", + "source_file": "src/data/models.py", + "source_location": "L105", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_models_poi_poi_id_not_empty", + "target": "field_validator", + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "src/data/models.py", + "source_location": "L119", + "weight": 1.0, + "context": "decorator", + "_origin": "ast" + }, + { + "source": "src_data_models_poi", + "target": "src_data_models_poi_poi_id_not_empty", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/data/models.py", + "source_location": "L121", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_models_poi_validate_lat", + "target": "field_validator", + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "src/data/models.py", + "source_location": "L126", + "weight": 1.0, + "context": "decorator", + "_origin": "ast" + }, + { + "source": "src_data_models_poi", + "target": "src_data_models_poi_validate_lat", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/data/models.py", + "source_location": "L128", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_models_poi_validate_lng", + "target": "field_validator", + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "src/data/models.py", + "source_location": "L133", + "weight": 1.0, + "context": "decorator", + "_origin": "ast" + }, + { + "source": "src_data_models_poi", + "target": "src_data_models_poi_validate_lng", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/data/models.py", + "source_location": "L135", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_models_poi_validate_hhmm", + "target": "field_validator", + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "src/data/models.py", + "source_location": "L140", + "weight": 1.0, + "context": "decorator", + "_origin": "ast" + }, + { + "source": "src_data_models_poi", + "target": "src_data_models_poi_validate_hhmm", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/data/models.py", + "source_location": "L142", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_models_poi_validate_duration", + "target": "field_validator", + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "src/data/models.py", + "source_location": "L150", + "weight": 1.0, + "context": "decorator", + "_origin": "ast" + }, + { + "source": "src_data_models_poi", + "target": "src_data_models_poi_validate_duration", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/data/models.py", + "source_location": "L152", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_models", + "target": "src_data_models_placeinput", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/data/models.py", + "source_location": "L158", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_models_placeinput", + "target": "src_data_models_py_basemodel", + "relation": "inherits", + "confidence": "EXTRACTED", + "source_file": "src/data/models.py", + "source_location": "L158", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_models_placeinput_validate_order", + "target": "field_validator", + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "src/data/models.py", + "source_location": "L163", + "weight": 1.0, + "context": "decorator", + "_origin": "ast" + }, + { + "source": "src_data_models_placeinput", + "target": "src_data_models_placeinput_validate_order", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/data/models.py", + "source_location": "L165", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_models", + "target": "src_data_models_dayplan", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/data/models.py", + "source_location": "L173", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_models_dayplan", + "target": "src_data_models_py_basemodel", + "relation": "inherits", + "confidence": "EXTRACTED", + "source_file": "src/data/models.py", + "source_location": "L173", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_models_dayplan_validate_place_count", + "target": "field_validator", + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "src/data/models.py", + "source_location": "L177", + "weight": 1.0, + "context": "decorator", + "_origin": "ast" + }, + { + "source": "src_data_models_dayplan", + "target": "src_data_models_dayplan_validate_place_count", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/data/models.py", + "source_location": "L179", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_models_dayplan_validate_place_count", + "target": "src_data_models_placeinput", + "relation": "references", + "context": "generic_arg", + "confidence": "EXTRACTED", + "source_file": "src/data/models.py", + "source_location": "L179", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_models_dayplan_auto_fill_visit_order", + "target": "model_validator", + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "src/data/models.py", + "source_location": "L186", + "weight": 1.0, + "context": "decorator", + "_origin": "ast" + }, + { + "source": "src_data_models_dayplan", + "target": "src_data_models_dayplan_auto_fill_visit_order", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/data/models.py", + "source_location": "L187", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_models", + "target": "src_data_models_itineraryplan", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/data/models.py", + "source_location": "L195", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_models_itineraryplan", + "target": "src_data_models_py_basemodel", + "relation": "inherits", + "confidence": "EXTRACTED", + "source_file": "src/data/models.py", + "source_location": "L195", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_models_itineraryplan_validate_days", + "target": "field_validator", + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "src/data/models.py", + "source_location": "L202", + "weight": 1.0, + "context": "decorator", + "_origin": "ast" + }, + { + "source": "src_data_models_itineraryplan", + "target": "src_data_models_itineraryplan_validate_days", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/data/models.py", + "source_location": "L204", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_models_itineraryplan_validate_days", + "target": "src_data_models_dayplan", + "relation": "references", + "context": "generic_arg", + "confidence": "EXTRACTED", + "source_file": "src/data/models.py", + "source_location": "L204", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_models_itineraryplan_travel_days", + "target": "computed_field", + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "src/data/models.py", + "source_location": "L211", + "weight": 1.0, + "context": "decorator", + "_origin": "ast" + }, + { + "source": "src_data_models_itineraryplan", + "target": "src_data_models_itineraryplan_travel_days", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/data/models.py", + "source_location": "L212", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_models_itineraryplan_plan_id", + "target": "computed_field", + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "src/data/models.py", + "source_location": "L215", + "weight": 1.0, + "context": "decorator", + "_origin": "ast" + }, + { + "source": "src_data_models_itineraryplan", + "target": "src_data_models_itineraryplan_plan_id", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/data/models.py", + "source_location": "L216", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_models", + "target": "src_data_models_validationresult", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/data/models.py", + "source_location": "L225", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_models_validationresult", + "target": "src_data_models_py_basemodel", + "relation": "inherits", + "confidence": "EXTRACTED", + "source_file": "src/data/models.py", + "source_location": "L225", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_models_validationresult_validate_score_range", + "target": "field_validator", + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "src/data/models.py", + "source_location": "L242", + "weight": 1.0, + "context": "decorator", + "_origin": "ast" + }, + { + "source": "src_data_models_validationresult", + "target": "src_data_models_validationresult_validate_score_range", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/data/models.py", + "source_location": "L244", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_models_validationresult_hard_fail_score_cap", + "target": "model_validator", + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "src/data/models.py", + "source_location": "L249", + "weight": 1.0, + "context": "decorator", + "_origin": "ast" + }, + { + "source": "src_data_models_validationresult", + "target": "src_data_models_validationresult_hard_fail_score_cap", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/data/models.py", + "source_location": "L250", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_models", + "target": "src_data_models_settings", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/data/models.py", + "source_location": "L256", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_models_settings", + "target": "basesettings", + "relation": "inherits", + "confidence": "EXTRACTED", + "source_file": "src/data/models.py", + "source_location": "L256", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_models_settings_fill_gov_api_keys", + "target": "model_validator", + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "src/data/models.py", + "source_location": "L268", + "weight": 1.0, + "context": "decorator", + "_origin": "ast" + }, + { + "source": "src_data_models_settings", + "target": "src_data_models_settings_fill_gov_api_keys", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/data/models.py", + "source_location": "L269", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_models", + "target": "src_data_models_vrptwplace", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/data/models.py", + "source_location": "L283", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_models_vrptwplace", + "target": "src_data_models_py_basemodel", + "relation": "inherits", + "confidence": "EXTRACTED", + "source_file": "src/data/models.py", + "source_location": "L283", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_models_vrptwplace_validate_hhmm", + "target": "field_validator", + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "src/data/models.py", + "source_location": "L292", + "weight": 1.0, + "context": "decorator", + "_origin": "ast" + }, + { + "source": "src_data_models_vrptwplace", + "target": "src_data_models_vrptwplace_validate_hhmm", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/data/models.py", + "source_location": "L294", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_models_vrptwplace_validate_lat", + "target": "field_validator", + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "src/data/models.py", + "source_location": "L302", + "weight": 1.0, + "context": "decorator", + "_origin": "ast" + }, + { + "source": "src_data_models_vrptwplace", + "target": "src_data_models_vrptwplace_validate_lat", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/data/models.py", + "source_location": "L304", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_models_vrptwplace_validate_lng", + "target": "field_validator", + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "src/data/models.py", + "source_location": "L309", + "weight": 1.0, + "context": "decorator", + "_origin": "ast" + }, + { + "source": "src_data_models_vrptwplace", + "target": "src_data_models_vrptwplace_validate_lng", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/data/models.py", + "source_location": "L311", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_models_vrptwplace_validate_stay", + "target": "field_validator", + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "src/data/models.py", + "source_location": "L316", + "weight": 1.0, + "context": "decorator", + "_origin": "ast" + }, + { + "source": "src_data_models_vrptwplace", + "target": "src_data_models_vrptwplace_validate_stay", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/data/models.py", + "source_location": "L318", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_models_vrptwplace", + "target": "src_data_models_vrptwplace_open_minutes", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/data/models.py", + "source_location": "L324", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_models_vrptwplace", + "target": "src_data_models_vrptwplace_close_minutes", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/data/models.py", + "source_location": "L329", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_models", + "target": "src_data_models_vrptwday", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/data/models.py", + "source_location": "L334", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_models_vrptwday", + "target": "src_data_models_py_basemodel", + "relation": "inherits", + "confidence": "EXTRACTED", + "source_file": "src/data/models.py", + "source_location": "L334", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_models_vrptwday_at_least_one", + "target": "field_validator", + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "src/data/models.py", + "source_location": "L337", + "weight": 1.0, + "context": "decorator", + "_origin": "ast" + }, + { + "source": "src_data_models_vrptwday", + "target": "src_data_models_vrptwday_at_least_one", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/data/models.py", + "source_location": "L339", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_models_vrptwday_at_least_one", + "target": "src_data_models_vrptwplace", + "relation": "references", + "context": "generic_arg", + "confidence": "EXTRACTED", + "source_file": "src/data/models.py", + "source_location": "L339", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_models", + "target": "src_data_models_vrptwrequest", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/data/models.py", + "source_location": "L345", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_models_vrptwrequest", + "target": "src_data_models_py_basemodel", + "relation": "inherits", + "confidence": "EXTRACTED", + "source_file": "src/data/models.py", + "source_location": "L345", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_models_vrptwrequest_at_least_one_day", + "target": "field_validator", + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "src/data/models.py", + "source_location": "L348", + "weight": 1.0, + "context": "decorator", + "_origin": "ast" + }, + { + "source": "src_data_models_vrptwrequest", + "target": "src_data_models_vrptwrequest_at_least_one_day", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/data/models.py", + "source_location": "L350", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_models_vrptwrequest_at_least_one_day", + "target": "src_data_models_vrptwday", + "relation": "references", + "context": "generic_arg", + "confidence": "EXTRACTED", + "source_file": "src/data/models.py", + "source_location": "L350", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_models", + "target": "src_data_models_deepdiveitem", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/data/models.py", + "source_location": "L356", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_models_deepdiveitem", + "target": "src_data_models_py_basemodel", + "relation": "inherits", + "confidence": "EXTRACTED", + "source_file": "src/data/models.py", + "source_location": "L356", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_models", + "target": "src_data_models_explanationitem", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/data/models.py", + "source_location": "L363", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_models_explanationitem", + "target": "src_data_models_py_basemodel", + "relation": "inherits", + "confidence": "EXTRACTED", + "source_file": "src/data/models.py", + "source_location": "L363", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_models", + "target": "src_data_models_dayroutecomparison", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/data/models.py", + "source_location": "L374", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_models_dayroutecomparison", + "target": "src_data_models_py_basemodel", + "relation": "inherits", + "confidence": "EXTRACTED", + "source_file": "src/data/models.py", + "source_location": "L374", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_models", + "target": "src_data_models_vrptwresult", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/data/models.py", + "source_location": "L382", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_models_vrptwresult", + "target": "src_data_models_py_basemodel", + "relation": "inherits", + "confidence": "EXTRACTED", + "source_file": "src/data/models.py", + "source_location": "L382", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_models_rationale_1", + "target": "src_data_models", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/data/models.py", + "source_location": "L1", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_models_rationale_23", + "target": "src_data_models_kakaoplace", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/data/models.py", + "source_location": "L23", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_models_rationale_35", + "target": "src_data_models_placeevidence", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/data/models.py", + "source_location": "L35", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_models_rationale_174", + "target": "src_data_models_dayplan", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/data/models.py", + "source_location": "L174", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_models_rationale_188", + "target": "src_data_models_dayplan_auto_fill_visit_order", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/data/models.py", + "source_location": "L188", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_models_rationale_270", + "target": "src_data_models_settings_fill_gov_api_keys", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/data/models.py", + "source_location": "L270", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_models_rationale_364", + "target": "src_data_models_explanationitem", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/data/models.py", + "source_location": "L364", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_party_config", + "target": "dataclasses", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/data/party_config.py", + "source_location": "L15", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_party_config", + "target": "src_data_party_config_partyprofile", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/data/party_config.py", + "source_location": "L19", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_party_config", + "target": "src_data_party_config_get_party_profile", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/data/party_config.py", + "source_location": "L36", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_party_config_get_party_profile", + "target": "src_data_party_config_partyprofile", + "relation": "references", + "context": "return_type", + "confidence": "EXTRACTED", + "source_file": "src/data/party_config.py", + "source_location": "L36", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_party_config_rationale_1", + "target": "src_data_party_config", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/data/party_config.py", + "source_location": "L1", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_party_config_rationale_37", + "target": "src_data_party_config_get_party_profile", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/data/party_config.py", + "source_location": "L37", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_region_config", + "target": "dataclasses", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/data/region_config.py", + "source_location": "L13", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_region_config", + "target": "src_data_region_config_regionthresholds", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/data/region_config.py", + "source_location": "L17", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_region_config", + "target": "src_data_region_config_get_thresholds", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/data/region_config.py", + "source_location": "L94", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_region_config_get_thresholds", + "target": "src_data_region_config_regionthresholds", + "relation": "references", + "context": "return_type", + "confidence": "EXTRACTED", + "source_file": "src/data/region_config.py", + "source_location": "L94", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_region_config_rationale_1", + "target": "src_data_region_config", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/data/region_config.py", + "source_location": "L1", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_region_config_rationale_18", + "target": "src_data_region_config_regionthresholds", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/data/region_config.py", + "source_location": "L18", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_region_config_rationale_95", + "target": "src_data_region_config_get_thresholds", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/data/region_config.py", + "source_location": "L95", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_restaurant_catalog", + "target": "csv", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/data/restaurant_catalog.py", + "source_location": "L11", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_restaurant_catalog", + "target": "pathlib", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/data/restaurant_catalog.py", + "source_location": "L12", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_restaurant_catalog", + "target": "src_data_models", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/data/restaurant_catalog.py", + "source_location": "L14", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_restaurant_catalog", + "target": "src_utils_geo", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/data/restaurant_catalog.py", + "source_location": "L15", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_restaurant_catalog", + "target": "src_data_restaurant_catalog_normalize", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/data/restaurant_catalog.py", + "source_location": "L20", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_restaurant_catalog", + "target": "src_data_restaurant_catalog_restaurantcatalog", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/data/restaurant_catalog.py", + "source_location": "L24", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_restaurant_catalog_restaurantcatalog", + "target": "src_data_restaurant_catalog_restaurantcatalog_init", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/data/restaurant_catalog.py", + "source_location": "L27", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_restaurant_catalog_restaurantcatalog", + "target": "src_data_restaurant_catalog_restaurantcatalog_from_csv", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/data/restaurant_catalog.py", + "source_location": "L31", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_restaurant_catalog_restaurantcatalog_from_csv", + "target": "src_data_restaurant_catalog_py_path", + "relation": "references", + "context": "parameter_type", + "confidence": "EXTRACTED", + "source_file": "src/data/restaurant_catalog.py", + "source_location": "L31", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_restaurant_catalog_restaurantcatalog_from_csv", + "target": "src_data_restaurant_catalog_restaurantcatalog", + "relation": "references", + "context": "return_type", + "confidence": "EXTRACTED", + "source_file": "src/data/restaurant_catalog.py", + "source_location": "L31", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_restaurant_catalog_restaurantcatalog", + "target": "src_data_restaurant_catalog_restaurantcatalog_from_default", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/data/restaurant_catalog.py", + "source_location": "L50", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_restaurant_catalog_restaurantcatalog_from_default", + "target": "src_data_restaurant_catalog_restaurantcatalog", + "relation": "references", + "context": "return_type", + "confidence": "EXTRACTED", + "source_file": "src/data/restaurant_catalog.py", + "source_location": "L50", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_restaurant_catalog_restaurantcatalog", + "target": "src_data_restaurant_catalog_restaurantcatalog_nearby", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/data/restaurant_catalog.py", + "source_location": "L53", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_restaurant_catalog_restaurantcatalog_nearby", + "target": "src_data_models_alternativepoi", + "relation": "references", + "context": "generic_arg", + "confidence": "EXTRACTED", + "source_file": "src/data/restaurant_catalog.py", + "source_location": "L53", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_restaurant_catalog_restaurantcatalog_from_default", + "target": "src_data_restaurant_catalog_restaurantcatalog_from_csv", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/data/restaurant_catalog.py", + "source_location": "L51", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_restaurant_catalog_restaurantcatalog_from_default", + "target": "src_data_restaurant_catalog_py_path", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/data/restaurant_catalog.py", + "source_location": "L51", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_restaurant_catalog_restaurantcatalog_nearby", + "target": "src_data_restaurant_catalog_normalize", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/data/restaurant_catalog.py", + "source_location": "L62", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_restaurant_catalog_restaurantcatalog_nearby", + "target": "src_data_models_alternativepoi", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/data/restaurant_catalog.py", + "source_location": "L72", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_restaurant_catalog_rationale_1", + "target": "src_data_restaurant_catalog", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/data/restaurant_catalog.py", + "source_location": "L1", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_restaurant_catalog_rationale_25", + "target": "src_data_restaurant_catalog_restaurantcatalog", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/data/restaurant_catalog.py", + "source_location": "L25", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_restaurant_catalog_rationale_61", + "target": "src_data_restaurant_catalog_restaurantcatalog_nearby", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/data/restaurant_catalog.py", + "source_location": "L61", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_seoul_citydata_client", + "target": "dataclasses", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/data/seoul_citydata_client.py", + "source_location": "L14", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_seoul_citydata_client", + "target": "datetime", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/data/seoul_citydata_client.py", + "source_location": "L15", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_seoul_citydata_client", + "target": "typing", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/data/seoul_citydata_client.py", + "source_location": "L16", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_seoul_citydata_client", + "target": "httpx", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/data/seoul_citydata_client.py", + "source_location": "L18", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_seoul_citydata_client", + "target": "src_data_seoul_citydata_client_forecastslot", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/data/seoul_citydata_client.py", + "source_location": "L62", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_seoul_citydata_client", + "target": "src_data_seoul_citydata_client_seoulrealtimecongestion", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/data/seoul_citydata_client.py", + "source_location": "L71", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_seoul_citydata_client", + "target": "src_data_seoul_citydata_client_seoulcitydataclient", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/data/seoul_citydata_client.py", + "source_location": "L83", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_seoul_citydata_client_seoulcitydataclient", + "target": "src_data_seoul_citydata_client_seoulcitydataclient_init", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/data/seoul_citydata_client.py", + "source_location": "L91", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_seoul_citydata_client_seoulcitydataclient", + "target": "src_data_seoul_citydata_client_seoulcitydataclient_url", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/data/seoul_citydata_client.py", + "source_location": "L101", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_seoul_citydata_client_seoulcitydataclient", + "target": "src_data_seoul_citydata_client_seoulcitydataclient_parse_forecast", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/data/seoul_citydata_client.py", + "source_location": "L104", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_seoul_citydata_client_seoulcitydataclient_parse_forecast", + "target": "src_data_seoul_citydata_client_forecastslot", + "relation": "references", + "context": "generic_arg", + "confidence": "EXTRACTED", + "source_file": "src/data/seoul_citydata_client.py", + "source_location": "L104", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_seoul_citydata_client_seoulcitydataclient", + "target": "src_data_seoul_citydata_client_seoulcitydataclient_resolve_name", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/data/seoul_citydata_client.py", + "source_location": "L119", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_seoul_citydata_client_seoulcitydataclient", + "target": "src_data_seoul_citydata_client_seoulcitydataclient_get", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/data/seoul_citydata_client.py", + "source_location": "L127", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_seoul_citydata_client_seoulcitydataclient_get", + "target": "src_data_seoul_citydata_client_seoulrealtimecongestion", + "relation": "references", + "context": "return_type", + "confidence": "EXTRACTED", + "source_file": "src/data/seoul_citydata_client.py", + "source_location": "L127", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_seoul_citydata_client_seoulcitydataclient", + "target": "src_data_seoul_citydata_client_seoulcitydataclient_get_at", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/data/seoul_citydata_client.py", + "source_location": "L168", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_seoul_citydata_client_seoulcitydataclient_get_at", + "target": "src_data_seoul_citydata_client_forecastslot", + "relation": "references", + "context": "return_type", + "confidence": "EXTRACTED", + "source_file": "src/data/seoul_citydata_client.py", + "source_location": "L168", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_seoul_citydata_client_seoulcitydataclient_parse_forecast", + "target": "src_data_seoul_citydata_client_seoulcitydataclient_get", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/data/seoul_citydata_client.py", + "source_location": "L107", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_seoul_citydata_client_seoulcitydataclient_parse_forecast", + "target": "src_data_seoul_citydata_client_forecastslot", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/data/seoul_citydata_client.py", + "source_location": "L109", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_seoul_citydata_client_seoulcitydataclient_get", + "target": "src_data_seoul_citydata_client_seoulcitydataclient_resolve_name", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/data/seoul_citydata_client.py", + "source_location": "L137", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_seoul_citydata_client_seoulcitydataclient_get", + "target": "src_data_seoul_citydata_client_seoulcitydataclient_url", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/data/seoul_citydata_client.py", + "source_location": "L139", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_seoul_citydata_client_seoulcitydataclient_get", + "target": "src_data_seoul_citydata_client_seoulrealtimecongestion", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/data/seoul_citydata_client.py", + "source_location": "L156", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_seoul_citydata_client_seoulcitydataclient_get", + "target": "src_data_seoul_citydata_client_seoulcitydataclient_parse_forecast", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/data/seoul_citydata_client.py", + "source_location": "L164", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_seoul_citydata_client_seoulcitydataclient_get_at", + "target": "src_data_seoul_citydata_client_seoulcitydataclient_get", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/data/seoul_citydata_client.py", + "source_location": "L178", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_seoul_citydata_client_seoulcitydataclient_get_at", + "target": "src_data_seoul_citydata_client_forecastslot", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/data/seoul_citydata_client.py", + "source_location": "L191", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_seoul_citydata_client_rationale_1", + "target": "src_data_seoul_citydata_client", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/data/seoul_citydata_client.py", + "source_location": "L1", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_seoul_citydata_client_rationale_84", + "target": "src_data_seoul_citydata_client_seoulcitydataclient", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/data/seoul_citydata_client.py", + "source_location": "L84", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_seoul_citydata_client_rationale_128", + "target": "src_data_seoul_citydata_client_seoulcitydataclient_get", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/data/seoul_citydata_client.py", + "source_location": "L128", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_seoul_citydata_client_rationale_169", + "target": "src_data_seoul_citydata_client_seoulcitydataclient_get_at", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/data/seoul_citydata_client.py", + "source_location": "L169", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_theme_taxonomy", + "target": "dataclasses", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/data/theme_taxonomy.py", + "source_location": "L13", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_theme_taxonomy", + "target": "typing", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/data/theme_taxonomy.py", + "source_location": "L14", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_theme_taxonomy", + "target": "src_data_theme_taxonomy_userpreferences", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/data/theme_taxonomy.py", + "source_location": "L83", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_theme_taxonomy_userpreferences", + "target": "src_data_theme_taxonomy_userpreferences_post_init", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/data/theme_taxonomy.py", + "source_location": "L88", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_theme_taxonomy_userpreferences", + "target": "src_data_theme_taxonomy_userpreferences_all_themes", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/data/theme_taxonomy.py", + "source_location": "L105", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_theme_taxonomy", + "target": "src_data_theme_taxonomy_matches_place_type", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/data/theme_taxonomy.py", + "source_location": "L111", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_theme_taxonomy", + "target": "src_data_theme_taxonomy_get_place_types_for", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/data/theme_taxonomy.py", + "source_location": "L140", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_theme_taxonomy_get_place_types_for", + "target": "src_data_theme_taxonomy_matches_place_type", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/data/theme_taxonomy.py", + "source_location": "L147", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_theme_taxonomy_rationale_1", + "target": "src_data_theme_taxonomy", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/data/theme_taxonomy.py", + "source_location": "L1", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_theme_taxonomy_rationale_84", + "target": "src_data_theme_taxonomy_userpreferences", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/data/theme_taxonomy.py", + "source_location": "L84", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_theme_taxonomy_rationale_106", + "target": "src_data_theme_taxonomy_userpreferences_all_themes", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/data/theme_taxonomy.py", + "source_location": "L106", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_theme_taxonomy_rationale_116", + "target": "src_data_theme_taxonomy_matches_place_type", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/data/theme_taxonomy.py", + "source_location": "L116", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_theme_taxonomy_rationale_144", + "target": "src_data_theme_taxonomy_get_place_types_for", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/data/theme_taxonomy.py", + "source_location": "L144", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_tour_api", + "target": "re", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/data/tour_api.py", + "source_location": "L4", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_tour_api", + "target": "typing", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/data/tour_api.py", + "source_location": "L5", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_tour_api", + "target": "httpx", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/data/tour_api.py", + "source_location": "L7", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_tour_api", + "target": "src_data_models", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/data/tour_api.py", + "source_location": "L9", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_tour_api", + "target": "src_data_tour_api_parse_usetime", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/data/tour_api.py", + "source_location": "L18", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_tour_api", + "target": "src_data_tour_api_extract_items", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/data/tour_api.py", + "source_location": "L27", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_tour_api", + "target": "src_data_tour_api_tourapiclient", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/data/tour_api.py", + "source_location": "L38", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_tour_api_tourapiclient", + "target": "src_data_tour_api_tourapiclient_init", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/data/tour_api.py", + "source_location": "L48", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_tour_api_tourapiclient", + "target": "src_data_tour_api_tourapiclient_from_settings", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/data/tour_api.py", + "source_location": "L62", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_tour_api_tourapiclient_from_settings", + "target": "src_data_models_settings", + "relation": "references", + "context": "parameter_type", + "confidence": "EXTRACTED", + "source_file": "src/data/tour_api.py", + "source_location": "L62", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_tour_api_tourapiclient", + "target": "src_data_tour_api_tourapiclient_search_poi", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/data/tour_api.py", + "source_location": "L70", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_tour_api_tourapiclient_search_poi", + "target": "src_data_models_poi", + "relation": "references", + "context": "generic_arg", + "confidence": "EXTRACTED", + "source_file": "src/data/tour_api.py", + "source_location": "L70", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_tour_api_tourapiclient", + "target": "src_data_tour_api_tourapiclient_get_operating_hours", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/data/tour_api.py", + "source_location": "L123", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_tour_api_tourapiclient", + "target": "src_data_tour_api_tourapiclient_clear_cache", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/data/tour_api.py", + "source_location": "L157", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_tour_api_tourapiclient_from_settings", + "target": "src_data_models_settings", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/data/tour_api.py", + "source_location": "L65", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_tour_api_tourapiclient_search_poi", + "target": "src_data_tour_api_extract_items", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/data/tour_api.py", + "source_location": "L95", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_tour_api_tourapiclient_search_poi", + "target": "src_data_tour_api_tourapiclient_get_operating_hours", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/data/tour_api.py", + "source_location": "L108", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_tour_api_tourapiclient_search_poi", + "target": "src_data_models_poi", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/data/tour_api.py", + "source_location": "L109", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_tour_api_tourapiclient_get_operating_hours", + "target": "src_data_tour_api_extract_items", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/data/tour_api.py", + "source_location": "L146", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_tour_api_tourapiclient_get_operating_hours", + "target": "src_data_tour_api_parse_usetime", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/data/tour_api.py", + "source_location": "L150", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_tour_api_rationale_1", + "target": "src_data_tour_api", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/data/tour_api.py", + "source_location": "L1", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_tour_api_rationale_19", + "target": "src_data_tour_api_parse_usetime", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/data/tour_api.py", + "source_location": "L19", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_tour_api_rationale_28", + "target": "src_data_tour_api_extract_items", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/data/tour_api.py", + "source_location": "L28", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_tour_api_rationale_39", + "target": "src_data_tour_api_tourapiclient", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/data/tour_api.py", + "source_location": "L39", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_tour_api_rationale_63", + "target": "src_data_tour_api_tourapiclient_from_settings", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/data/tour_api.py", + "source_location": "L63", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_tour_api_rationale_76", + "target": "src_data_tour_api_tourapiclient_search_poi", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/data/tour_api.py", + "source_location": "L76", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_tour_api_rationale_128", + "target": "src_data_tour_api_tourapiclient_get_operating_hours", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/data/tour_api.py", + "source_location": "L128", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_wellness_api", + "target": "dataclasses", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/data/wellness_api.py", + "source_location": "L4", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_wellness_api", + "target": "typing", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/data/wellness_api.py", + "source_location": "L5", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_wellness_api", + "target": "httpx", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/data/wellness_api.py", + "source_location": "L7", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_wellness_api", + "target": "src_data_models", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/data/wellness_api.py", + "source_location": "L9", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_wellness_api", + "target": "src_data_wellness_api_wellnessplace", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/data/wellness_api.py", + "source_location": "L16", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_wellness_api", + "target": "src_data_wellness_api_extract_items", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/data/wellness_api.py", + "source_location": "L27", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_wellness_api", + "target": "src_data_wellness_api_safe_float", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/data/wellness_api.py", + "source_location": "L38", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_wellness_api_safe_float", + "target": "src_data_wellness_api_py_any", + "relation": "references", + "context": "parameter_type", + "confidence": "EXTRACTED", + "source_file": "src/data/wellness_api.py", + "source_location": "L38", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_wellness_api", + "target": "src_data_wellness_api_wellnessapiclient", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/data/wellness_api.py", + "source_location": "L45", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_wellness_api_wellnessapiclient", + "target": "src_data_wellness_api_wellnessapiclient_init", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/data/wellness_api.py", + "source_location": "L51", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_wellness_api_wellnessapiclient", + "target": "src_data_wellness_api_wellnessapiclient_from_settings", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/data/wellness_api.py", + "source_location": "L58", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_wellness_api_wellnessapiclient_from_settings", + "target": "src_data_models_settings", + "relation": "references", + "context": "parameter_type", + "confidence": "EXTRACTED", + "source_file": "src/data/wellness_api.py", + "source_location": "L58", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_wellness_api_wellnessapiclient", + "target": "src_data_wellness_api_wellnessapiclient_fetch_page", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/data/wellness_api.py", + "source_location": "L66", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_wellness_api_wellnessapiclient_fetch_page", + "target": "src_data_wellness_api_wellnessplace", + "relation": "references", + "context": "generic_arg", + "confidence": "EXTRACTED", + "source_file": "src/data/wellness_api.py", + "source_location": "L66", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_wellness_api_wellnessapiclient", + "target": "src_data_wellness_api_wellnessapiclient_fetch_all", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/data/wellness_api.py", + "source_location": "L117", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_wellness_api_wellnessapiclient_fetch_all", + "target": "src_data_wellness_api_wellnessplace", + "relation": "references", + "context": "generic_arg", + "confidence": "EXTRACTED", + "source_file": "src/data/wellness_api.py", + "source_location": "L117", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_wellness_api_wellnessapiclient_from_settings", + "target": "src_data_models_settings", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/data/wellness_api.py", + "source_location": "L60", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_wellness_api_wellnessapiclient_fetch_page", + "target": "src_data_wellness_api_extract_items", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/data/wellness_api.py", + "source_location": "L94", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_wellness_api_wellnessapiclient_fetch_page", + "target": "src_data_wellness_api_safe_float", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/data/wellness_api.py", + "source_location": "L99", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_wellness_api_wellnessapiclient_fetch_page", + "target": "src_data_wellness_api_wellnessplace", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/data/wellness_api.py", + "source_location": "L105", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_wellness_api_wellnessapiclient_fetch_all", + "target": "src_data_wellness_api_wellnessapiclient_fetch_page", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/data/wellness_api.py", + "source_location": "L122", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_wellness_api_rationale_1", + "target": "src_data_wellness_api", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/data/wellness_api.py", + "source_location": "L1", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_wellness_api_rationale_46", + "target": "src_data_wellness_api_wellnessapiclient", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/data/wellness_api.py", + "source_location": "L46", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_wellness_api_rationale_118", + "target": "src_data_wellness_api_wellnessapiclient_fetch_all", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/data/wellness_api.py", + "source_location": "L118", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_explain_engine", + "target": "hashlib", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/explain/explain_engine.py", + "source_location": "L15", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_explain_engine", + "target": "json", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/explain/explain_engine.py", + "source_location": "L16", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_explain_engine", + "target": "os", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/explain/explain_engine.py", + "source_location": "L17", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_explain_engine", + "target": "collections", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/explain/explain_engine.py", + "source_location": "L18", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_explain_engine", + "target": "typing", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/explain/explain_engine.py", + "source_location": "L19", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_explain_engine", + "target": "src_data_graph_retriever", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/explain/explain_engine.py", + "source_location": "L21", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_explain_engine", + "target": "src_data_models", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/explain/explain_engine.py", + "source_location": "L22", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_explain_engine", + "target": "anthropic", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/explain/explain_engine.py", + "source_location": "L32", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_explain_engine", + "target": "src_explain_explain_engine_lrucache", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/explain/explain_engine.py", + "source_location": "L44", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_explain_engine_lrucache", + "target": "src_explain_explain_engine_lrucache_init", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/explain/explain_engine.py", + "source_location": "L47", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_explain_engine_lrucache", + "target": "src_explain_explain_engine_lrucache_contains", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/explain/explain_engine.py", + "source_location": "L51", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_explain_engine_lrucache", + "target": "src_explain_explain_engine_lrucache_getitem", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/explain/explain_engine.py", + "source_location": "L54", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_explain_engine_lrucache", + "target": "src_explain_explain_engine_lrucache_setitem", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/explain/explain_engine.py", + "source_location": "L58", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_explain_engine_lrucache", + "target": "src_explain_explain_engine_lrucache_clear", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/explain/explain_engine.py", + "source_location": "L65", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_explain_engine", + "target": "src_explain_explain_engine_cache_key", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/explain/explain_engine.py", + "source_location": "L171", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_explain_engine_cache_key", + "target": "src_data_models_hardfail", + "relation": "references", + "context": "generic_arg", + "confidence": "EXTRACTED", + "source_file": "src/explain/explain_engine.py", + "source_location": "L171", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_explain_engine_cache_key", + "target": "src_data_models_warning", + "relation": "references", + "context": "generic_arg", + "confidence": "EXTRACTED", + "source_file": "src/explain/explain_engine.py", + "source_location": "L171", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_explain_engine", + "target": "src_explain_explain_engine_graph_context", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/explain/explain_engine.py", + "source_location": "L187", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_explain_engine_graph_context", + "target": "src_data_graph_retriever_graphretriever", + "relation": "references", + "context": "parameter_type", + "confidence": "EXTRACTED", + "source_file": "src/explain/explain_engine.py", + "source_location": "L187", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_explain_engine", + "target": "src_explain_explain_engine_find_alternatives", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/explain/explain_engine.py", + "source_location": "L205", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_explain_engine_find_alternatives", + "target": "src_data_graph_retriever_graphretriever", + "relation": "references", + "context": "parameter_type", + "confidence": "EXTRACTED", + "source_file": "src/explain/explain_engine.py", + "source_location": "L205", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_explain_engine_find_alternatives", + "target": "src_data_models_alternativepoi", + "relation": "references", + "context": "generic_arg", + "confidence": "EXTRACTED", + "source_file": "src/explain/explain_engine.py", + "source_location": "L205", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_explain_engine", + "target": "src_explain_explain_engine_build_user_prompt", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/explain/explain_engine.py", + "source_location": "L215", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_explain_engine_build_user_prompt", + "target": "src_data_models_hardfail", + "relation": "references", + "context": "generic_arg", + "confidence": "EXTRACTED", + "source_file": "src/explain/explain_engine.py", + "source_location": "L215", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_explain_engine_build_user_prompt", + "target": "src_data_models_warning", + "relation": "references", + "context": "generic_arg", + "confidence": "EXTRACTED", + "source_file": "src/explain/explain_engine.py", + "source_location": "L215", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_explain_engine_build_user_prompt", + "target": "src_data_models_scores", + "relation": "references", + "context": "parameter_type", + "confidence": "EXTRACTED", + "source_file": "src/explain/explain_engine.py", + "source_location": "L215", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_explain_engine_build_user_prompt", + "target": "src_data_models_itineraryplan", + "relation": "references", + "context": "parameter_type", + "confidence": "EXTRACTED", + "source_file": "src/explain/explain_engine.py", + "source_location": "L215", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_explain_engine_build_user_prompt", + "target": "src_data_graph_retriever_graphretriever", + "relation": "references", + "context": "parameter_type", + "confidence": "EXTRACTED", + "source_file": "src/explain/explain_engine.py", + "source_location": "L215", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_explain_engine", + "target": "src_explain_explain_engine_parse_llm_response", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/explain/explain_engine.py", + "source_location": "L331", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_explain_engine_parse_llm_response", + "target": "src_data_models_explanationitem", + "relation": "references", + "context": "generic_arg", + "confidence": "EXTRACTED", + "source_file": "src/explain/explain_engine.py", + "source_location": "L331", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_explain_engine", + "target": "src_explain_explain_engine_fallback", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/explain/explain_engine.py", + "source_location": "L353", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_explain_engine_fallback", + "target": "src_data_models_hardfail", + "relation": "references", + "context": "generic_arg", + "confidence": "EXTRACTED", + "source_file": "src/explain/explain_engine.py", + "source_location": "L353", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_explain_engine_fallback", + "target": "src_data_models_warning", + "relation": "references", + "context": "generic_arg", + "confidence": "EXTRACTED", + "source_file": "src/explain/explain_engine.py", + "source_location": "L353", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_explain_engine_fallback", + "target": "src_data_models_explanationitem", + "relation": "references", + "context": "generic_arg", + "confidence": "EXTRACTED", + "source_file": "src/explain/explain_engine.py", + "source_location": "L353", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_explain_engine", + "target": "src_explain_explain_engine_explainengine", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/explain/explain_engine.py", + "source_location": "L416", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_explain_engine_explainengine", + "target": "src_explain_explain_engine_explainengine_init", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/explain/explain_engine.py", + "source_location": "L419", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_explain_engine_explainengine_init", + "target": "src_explain_explain_engine_py_any", + "relation": "references", + "context": "parameter_type", + "confidence": "EXTRACTED", + "source_file": "src/explain/explain_engine.py", + "source_location": "L419", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_explain_engine_explainengine_init", + "target": "src_data_graph_retriever_graphretriever", + "relation": "references", + "context": "parameter_type", + "confidence": "EXTRACTED", + "source_file": "src/explain/explain_engine.py", + "source_location": "L419", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_explain_engine_explainengine", + "target": "src_explain_explain_engine_explainengine_is_available", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/explain/explain_engine.py", + "source_location": "L438", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_explain_engine_explainengine", + "target": "src_explain_explain_engine_explainengine_build_alternatives", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/explain/explain_engine.py", + "source_location": "L441", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_explain_engine_explainengine_build_alternatives", + "target": "src_data_models_hardfail", + "relation": "references", + "context": "generic_arg", + "confidence": "EXTRACTED", + "source_file": "src/explain/explain_engine.py", + "source_location": "L441", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_explain_engine_explainengine_build_alternatives", + "target": "src_data_models_alternativepoi", + "relation": "references", + "context": "generic_arg", + "confidence": "EXTRACTED", + "source_file": "src/explain/explain_engine.py", + "source_location": "L441", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_explain_engine_explainengine", + "target": "src_explain_explain_engine_explainengine_generate", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/explain/explain_engine.py", + "source_location": "L452", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_explain_engine_explainengine_generate", + "target": "src_data_models_hardfail", + "relation": "references", + "context": "generic_arg", + "confidence": "EXTRACTED", + "source_file": "src/explain/explain_engine.py", + "source_location": "L452", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_explain_engine_explainengine_generate", + "target": "src_data_models_warning", + "relation": "references", + "context": "generic_arg", + "confidence": "EXTRACTED", + "source_file": "src/explain/explain_engine.py", + "source_location": "L452", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_explain_engine_explainengine_generate", + "target": "src_data_models_scores", + "relation": "references", + "context": "parameter_type", + "confidence": "EXTRACTED", + "source_file": "src/explain/explain_engine.py", + "source_location": "L452", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_explain_engine_explainengine_generate", + "target": "src_data_models_itineraryplan", + "relation": "references", + "context": "parameter_type", + "confidence": "EXTRACTED", + "source_file": "src/explain/explain_engine.py", + "source_location": "L452", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_explain_engine_explainengine_generate", + "target": "src_data_models_explanationitem", + "relation": "references", + "context": "generic_arg", + "confidence": "EXTRACTED", + "source_file": "src/explain/explain_engine.py", + "source_location": "L452", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_explain_engine_explainengine", + "target": "src_explain_explain_engine_explainengine_call_llm", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/explain/explain_engine.py", + "source_location": "L526", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_explain_engine_explainengine_call_llm", + "target": "src_data_models_hardfail", + "relation": "references", + "context": "generic_arg", + "confidence": "EXTRACTED", + "source_file": "src/explain/explain_engine.py", + "source_location": "L526", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_explain_engine_explainengine_call_llm", + "target": "src_data_models_warning", + "relation": "references", + "context": "generic_arg", + "confidence": "EXTRACTED", + "source_file": "src/explain/explain_engine.py", + "source_location": "L526", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_explain_engine_explainengine_call_llm", + "target": "src_data_models_scores", + "relation": "references", + "context": "parameter_type", + "confidence": "EXTRACTED", + "source_file": "src/explain/explain_engine.py", + "source_location": "L526", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_explain_engine_explainengine_call_llm", + "target": "src_data_models_itineraryplan", + "relation": "references", + "context": "parameter_type", + "confidence": "EXTRACTED", + "source_file": "src/explain/explain_engine.py", + "source_location": "L526", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_explain_engine_explainengine_call_llm", + "target": "src_data_models_explanationitem", + "relation": "references", + "context": "generic_arg", + "confidence": "EXTRACTED", + "source_file": "src/explain/explain_engine.py", + "source_location": "L526", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_explain_engine_build_user_prompt", + "target": "src_explain_explain_engine_graph_context", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/explain/explain_engine.py", + "source_location": "L236", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_explain_engine_parse_llm_response", + "target": "src_data_models_explanationitem", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/explain/explain_engine.py", + "source_location": "L341", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_explain_engine_fallback", + "target": "src_data_models_explanationitem", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/explain/explain_engine.py", + "source_location": "L363", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_explain_engine_explainengine_build_alternatives", + "target": "src_explain_explain_engine_find_alternatives", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/explain/explain_engine.py", + "source_location": "L447", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_explain_engine_explainengine_generate", + "target": "src_data_models_explanationitem", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/explain/explain_engine.py", + "source_location": "L498", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_explain_engine_explainengine_generate", + "target": "src_explain_explain_engine_explainengine_is_available", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/explain/explain_engine.py", + "source_location": "L508", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_explain_engine_explainengine_generate", + "target": "src_explain_explain_engine_fallback", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/explain/explain_engine.py", + "source_location": "L509", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_explain_engine_explainengine_generate", + "target": "src_explain_explain_engine_cache_key", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/explain/explain_engine.py", + "source_location": "L512", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_explain_engine_explainengine_generate", + "target": "src_explain_explain_engine_explainengine_call_llm", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/explain/explain_engine.py", + "source_location": "L517", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_explain_engine_explainengine_call_llm", + "target": "src_explain_explain_engine_build_user_prompt", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/explain/explain_engine.py", + "source_location": "L536", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_explain_engine_explainengine_call_llm", + "target": "src_explain_explain_engine_parse_llm_response", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/explain/explain_engine.py", + "source_location": "L555", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_explain_engine_rationale_1", + "target": "src_explain_explain_engine", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/explain/explain_engine.py", + "source_location": "L1", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_explain_engine_rationale_45", + "target": "src_explain_explain_engine_lrucache", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/explain/explain_engine.py", + "source_location": "L45", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_explain_engine_rationale_188", + "target": "src_explain_explain_engine_graph_context", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/explain/explain_engine.py", + "source_location": "L188", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_explain_engine_rationale_206", + "target": "src_explain_explain_engine_find_alternatives", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/explain/explain_engine.py", + "source_location": "L206", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_explain_engine_rationale_417", + "target": "src_explain_explain_engine_explainengine", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/explain/explain_engine.py", + "source_location": "L417", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_explain_engine_rationale_442", + "target": "src_explain_explain_engine_explainengine_build_alternatives", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/explain/explain_engine.py", + "source_location": "L442", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_pipeline", + "target": "dataclasses", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/explain/pipeline.py", + "source_location": "L23", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_pipeline", + "target": "pathlib", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/explain/pipeline.py", + "source_location": "L24", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_pipeline", + "target": "src_data_models", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/explain/pipeline.py", + "source_location": "L26", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_pipeline", + "target": "src_data_theme_taxonomy", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/explain/pipeline.py", + "source_location": "L36", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_pipeline", + "target": "src_explain_explain_engine", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/explain/pipeline.py", + "source_location": "L37", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_pipeline", + "target": "src_explain_repair", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/explain/pipeline.py", + "source_location": "L38", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_pipeline", + "target": "src_scoring_bonus_engine", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/explain/pipeline.py", + "source_location": "L39", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_pipeline", + "target": "src_scoring_cluster_dispersion", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/explain/pipeline.py", + "source_location": "L40", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_pipeline", + "target": "src_scoring_reward_engine", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/explain/pipeline.py", + "source_location": "L41", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_pipeline", + "target": "src_scoring_theme_alignment", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/explain/pipeline.py", + "source_location": "L42", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_pipeline", + "target": "src_scoring_travel_ratio", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/explain/pipeline.py", + "source_location": "L43", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_pipeline", + "target": "src_validation_hard_fail", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/explain/pipeline.py", + "source_location": "L44", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_pipeline", + "target": "src_validation_scoring", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/explain/pipeline.py", + "source_location": "L45", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_pipeline", + "target": "src_validation_vrptw_engine", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/explain/pipeline.py", + "source_location": "L46", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_pipeline", + "target": "src_validation_warning", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/explain/pipeline.py", + "source_location": "L47", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_pipeline", + "target": "src_explain_pipeline_to_vrptw_day", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/explain/pipeline.py", + "source_location": "L53", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_pipeline_to_vrptw_day", + "target": "src_data_models_poi", + "relation": "references", + "context": "generic_arg", + "confidence": "EXTRACTED", + "source_file": "src/explain/pipeline.py", + "source_location": "L53", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_pipeline_to_vrptw_day", + "target": "src_data_models_vrptwday", + "relation": "references", + "context": "return_type", + "confidence": "EXTRACTED", + "source_file": "src/explain/pipeline.py", + "source_location": "L53", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_pipeline", + "target": "src_explain_pipeline_to_poi_with_category", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/explain/pipeline.py", + "source_location": "L70", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_pipeline_to_poi_with_category", + "target": "src_data_models_poi", + "relation": "references", + "context": "generic_arg", + "confidence": "EXTRACTED", + "source_file": "src/explain/pipeline.py", + "source_location": "L70", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_pipeline_to_poi_with_category", + "target": "src_scoring_theme_alignment_poiwithcategory", + "relation": "references", + "context": "generic_arg", + "confidence": "EXTRACTED", + "source_file": "src/explain/pipeline.py", + "source_location": "L70", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_pipeline", + "target": "src_explain_pipeline_scorebundle", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/explain/pipeline.py", + "source_location": "L83", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_pipeline", + "target": "src_explain_pipeline_validatorpipeline", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/explain/pipeline.py", + "source_location": "L100", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_pipeline_validatorpipeline", + "target": "src_explain_pipeline_validatorpipeline_init", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/explain/pipeline.py", + "source_location": "L103", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_pipeline_validatorpipeline_init", + "target": "src_scoring_bonus_engine_bonusengine", + "relation": "references", + "context": "parameter_type", + "confidence": "EXTRACTED", + "source_file": "src/explain/pipeline.py", + "source_location": "L103", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_pipeline_validatorpipeline_init", + "target": "src_scoring_theme_alignment_themealignmentjudge", + "relation": "references", + "context": "parameter_type", + "confidence": "EXTRACTED", + "source_file": "src/explain/pipeline.py", + "source_location": "L103", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_pipeline_validatorpipeline_init", + "target": "src_explain_explain_engine_explainengine", + "relation": "references", + "context": "parameter_type", + "confidence": "EXTRACTED", + "source_file": "src/explain/pipeline.py", + "source_location": "L103", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_pipeline_validatorpipeline", + "target": "src_explain_pipeline_validatorpipeline_run", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/explain/pipeline.py", + "source_location": "L119", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_pipeline_validatorpipeline_run", + "target": "src_data_models_itineraryplan", + "relation": "references", + "context": "parameter_type", + "confidence": "EXTRACTED", + "source_file": "src/explain/pipeline.py", + "source_location": "L119", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_pipeline_validatorpipeline_run", + "target": "src_data_models_poi", + "relation": "references", + "context": "generic_arg", + "confidence": "EXTRACTED", + "source_file": "src/explain/pipeline.py", + "source_location": "L119", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_pipeline_validatorpipeline_run", + "target": "src_data_theme_taxonomy_userpreferences", + "relation": "references", + "context": "parameter_type", + "confidence": "EXTRACTED", + "source_file": "src/explain/pipeline.py", + "source_location": "L119", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_pipeline_validatorpipeline_run", + "target": "src_data_models_validationresult", + "relation": "references", + "context": "return_type", + "confidence": "EXTRACTED", + "source_file": "src/explain/pipeline.py", + "source_location": "L119", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_pipeline_validatorpipeline", + "target": "src_explain_pipeline_validatorpipeline_score", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/explain/pipeline.py", + "source_location": "L235", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_pipeline_validatorpipeline_score", + "target": "src_data_models_itineraryplan", + "relation": "references", + "context": "parameter_type", + "confidence": "EXTRACTED", + "source_file": "src/explain/pipeline.py", + "source_location": "L235", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_pipeline_validatorpipeline_score", + "target": "src_data_models_poi", + "relation": "references", + "context": "generic_arg", + "confidence": "EXTRACTED", + "source_file": "src/explain/pipeline.py", + "source_location": "L235", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_pipeline_validatorpipeline_score", + "target": "src_data_theme_taxonomy_userpreferences", + "relation": "references", + "context": "parameter_type", + "confidence": "EXTRACTED", + "source_file": "src/explain/pipeline.py", + "source_location": "L235", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_pipeline_validatorpipeline_score", + "target": "src_explain_pipeline_scorebundle", + "relation": "references", + "context": "return_type", + "confidence": "EXTRACTED", + "source_file": "src/explain/pipeline.py", + "source_location": "L235", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_pipeline_validatorpipeline", + "target": "src_explain_pipeline_validatorpipeline_estimate_repair_gains", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/explain/pipeline.py", + "source_location": "L349", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_pipeline_validatorpipeline_estimate_repair_gains", + "target": "src_data_models_itineraryplan", + "relation": "references", + "context": "parameter_type", + "confidence": "EXTRACTED", + "source_file": "src/explain/pipeline.py", + "source_location": "L349", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_pipeline_validatorpipeline_estimate_repair_gains", + "target": "src_data_models_poi", + "relation": "references", + "context": "generic_arg", + "confidence": "EXTRACTED", + "source_file": "src/explain/pipeline.py", + "source_location": "L349", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_pipeline_validatorpipeline_estimate_repair_gains", + "target": "src_explain_repair_repairresult", + "relation": "references", + "context": "parameter_type", + "confidence": "EXTRACTED", + "source_file": "src/explain/pipeline.py", + "source_location": "L349", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_pipeline_to_vrptw_day", + "target": "src_data_models_vrptwday", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/explain/pipeline.py", + "source_location": "L67", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_pipeline_to_poi_with_category", + "target": "src_scoring_theme_alignment_poiwithcategory", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/explain/pipeline.py", + "source_location": "L72", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_pipeline_validatorpipeline_init", + "target": "src_scoring_theme_alignment_themealignmentjudge", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/explain/pipeline.py", + "source_location": "L116", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_pipeline_validatorpipeline_init", + "target": "src_explain_explain_engine_explainengine", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/explain/pipeline.py", + "source_location": "L117", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_pipeline_validatorpipeline_run", + "target": "src_explain_pipeline_validatorpipeline_score", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/explain/pipeline.py", + "source_location": "L139", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_pipeline_validatorpipeline_run", + "target": "src_explain_pipeline_validatorpipeline_estimate_repair_gains", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/explain/pipeline.py", + "source_location": "L198", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_pipeline_validatorpipeline_run", + "target": "src_data_models_validationresult", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/explain/pipeline.py", + "source_location": "L217", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_pipeline_validatorpipeline_score", + "target": "src_explain_pipeline_to_vrptw_day", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/explain/pipeline.py", + "source_location": "L280", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_pipeline_validatorpipeline_score", + "target": "src_explain_pipeline_to_poi_with_category", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/explain/pipeline.py", + "source_location": "L314", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_pipeline_validatorpipeline_score", + "target": "src_explain_pipeline_scorebundle", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/explain/pipeline.py", + "source_location": "L333", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_pipeline_validatorpipeline_estimate_repair_gains", + "target": "src_explain_pipeline_validatorpipeline_score", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/explain/pipeline.py", + "source_location": "L365", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_pipeline_validatorpipeline_estimate_repair_gains", + "target": "src_explain_repair_repairresult", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/explain/pipeline.py", + "source_location": "L411", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_pipeline_rationale_1", + "target": "src_explain_pipeline", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/explain/pipeline.py", + "source_location": "L1", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_pipeline_rationale_54", + "target": "src_explain_pipeline_to_vrptw_day", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/explain/pipeline.py", + "source_location": "L54", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_pipeline_rationale_84", + "target": "src_explain_pipeline_scorebundle", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/explain/pipeline.py", + "source_location": "L84", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_pipeline_rationale_101", + "target": "src_explain_pipeline_validatorpipeline", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/explain/pipeline.py", + "source_location": "L101", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_pipeline_rationale_128", + "target": "src_explain_pipeline_validatorpipeline_run", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/explain/pipeline.py", + "source_location": "L128", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_pipeline_rationale_244", + "target": "src_explain_pipeline_validatorpipeline_score", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/explain/pipeline.py", + "source_location": "L244", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_pipeline_rationale_357", + "target": "src_explain_pipeline_validatorpipeline_estimate_repair_gains", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/explain/pipeline.py", + "source_location": "L357", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_plan_extractor", + "target": "base64", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/explain/plan_extractor.py", + "source_location": "L13", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_plan_extractor", + "target": "json", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/explain/plan_extractor.py", + "source_location": "L14", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_plan_extractor", + "target": "os", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/explain/plan_extractor.py", + "source_location": "L15", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_plan_extractor", + "target": "re", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/explain/plan_extractor.py", + "source_location": "L16", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_plan_extractor", + "target": "typing", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/explain/plan_extractor.py", + "source_location": "L17", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_plan_extractor", + "target": "src_api_schemas", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/explain/plan_extractor.py", + "source_location": "L19", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_plan_extractor", + "target": "anthropic", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/explain/plan_extractor.py", + "source_location": "L22", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_plan_extractor", + "target": "src_explain_plan_extractor_planextractionerror", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/explain/plan_extractor.py", + "source_location": "L60", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_plan_extractor_planextractionerror", + "target": "src_explain_plan_extractor_py_exception", + "relation": "inherits", + "confidence": "EXTRACTED", + "source_file": "src/explain/plan_extractor.py", + "source_location": "L60", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_plan_extractor", + "target": "src_explain_plan_extractor_strip_fence", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/explain/plan_extractor.py", + "source_location": "L64", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_plan_extractor", + "target": "src_explain_plan_extractor_parse_response", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/explain/plan_extractor.py", + "source_location": "L68", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_plan_extractor_parse_response", + "target": "src_api_schemas_parsedplanresponse", + "relation": "references", + "context": "return_type", + "confidence": "EXTRACTED", + "source_file": "src/explain/plan_extractor.py", + "source_location": "L68", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_plan_extractor", + "target": "src_explain_plan_extractor_fallback_text_parse", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/explain/plan_extractor.py", + "source_location": "L80", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_plan_extractor_fallback_text_parse", + "target": "src_api_schemas_parsedplanresponse", + "relation": "references", + "context": "return_type", + "confidence": "EXTRACTED", + "source_file": "src/explain/plan_extractor.py", + "source_location": "L80", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_plan_extractor", + "target": "src_explain_plan_extractor_planextractor", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/explain/plan_extractor.py", + "source_location": "L103", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_plan_extractor_planextractor", + "target": "src_explain_plan_extractor_planextractor_init", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/explain/plan_extractor.py", + "source_location": "L106", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_plan_extractor_planextractor_init", + "target": "src_explain_plan_extractor_py_any", + "relation": "references", + "context": "parameter_type", + "confidence": "EXTRACTED", + "source_file": "src/explain/plan_extractor.py", + "source_location": "L106", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_plan_extractor_planextractor", + "target": "src_explain_plan_extractor_planextractor_from_env", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/explain/plan_extractor.py", + "source_location": "L123", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_plan_extractor_planextractor_from_env", + "target": "src_explain_plan_extractor_planextractor", + "relation": "references", + "context": "return_type", + "confidence": "EXTRACTED", + "source_file": "src/explain/plan_extractor.py", + "source_location": "L123", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_plan_extractor_planextractor", + "target": "src_explain_plan_extractor_planextractor_is_available", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/explain/plan_extractor.py", + "source_location": "L126", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_plan_extractor_planextractor", + "target": "src_explain_plan_extractor_planextractor_extract_from_text", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/explain/plan_extractor.py", + "source_location": "L129", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_plan_extractor_planextractor_extract_from_text", + "target": "src_api_schemas_parsedplanresponse", + "relation": "references", + "context": "return_type", + "confidence": "EXTRACTED", + "source_file": "src/explain/plan_extractor.py", + "source_location": "L129", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_plan_extractor_planextractor", + "target": "src_explain_plan_extractor_planextractor_extract_from_document", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/explain/plan_extractor.py", + "source_location": "L138", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_plan_extractor_planextractor_extract_from_document", + "target": "src_api_schemas_parsedplanresponse", + "relation": "references", + "context": "return_type", + "confidence": "EXTRACTED", + "source_file": "src/explain/plan_extractor.py", + "source_location": "L138", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_plan_extractor_planextractor", + "target": "src_explain_plan_extractor_planextractor_call", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/explain/plan_extractor.py", + "source_location": "L158", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_plan_extractor_planextractor_call", + "target": "src_api_schemas_parsedplanresponse", + "relation": "references", + "context": "return_type", + "confidence": "EXTRACTED", + "source_file": "src/explain/plan_extractor.py", + "source_location": "L158", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_plan_extractor", + "target": "src_explain_plan_extractor_demo", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/explain/plan_extractor.py", + "source_location": "L177", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_plan_extractor_parse_response", + "target": "src_explain_plan_extractor_strip_fence", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/explain/plan_extractor.py", + "source_location": "L69", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_plan_extractor_parse_response", + "target": "src_explain_plan_extractor_planextractionerror", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/explain/plan_extractor.py", + "source_location": "L73", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_plan_extractor_fallback_text_parse", + "target": "src_api_schemas_parsedplanresponse", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/explain/plan_extractor.py", + "source_location": "L98", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_plan_extractor_planextractor_extract_from_text", + "target": "src_explain_plan_extractor_planextractionerror", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/explain/plan_extractor.py", + "source_location": "L133", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_plan_extractor_planextractor_extract_from_text", + "target": "src_explain_plan_extractor_planextractor_is_available", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/explain/plan_extractor.py", + "source_location": "L134", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_plan_extractor_planextractor_extract_from_text", + "target": "src_explain_plan_extractor_fallback_text_parse", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/explain/plan_extractor.py", + "source_location": "L135", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_plan_extractor_planextractor_extract_from_text", + "target": "src_explain_plan_extractor_planextractor_call", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/explain/plan_extractor.py", + "source_location": "L136", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_plan_extractor_planextractor_extract_from_document", + "target": "src_explain_plan_extractor_planextractionerror", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/explain/plan_extractor.py", + "source_location": "L141", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_plan_extractor_planextractor_extract_from_document", + "target": "src_explain_plan_extractor_planextractor_is_available", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/explain/plan_extractor.py", + "source_location": "L142", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_plan_extractor_planextractor_extract_from_document", + "target": "src_explain_plan_extractor_planextractor_call", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/explain/plan_extractor.py", + "source_location": "L156", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_plan_extractor_planextractor_call", + "target": "src_explain_plan_extractor_planextractionerror", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/explain/plan_extractor.py", + "source_location": "L172", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_plan_extractor_planextractor_call", + "target": "src_explain_plan_extractor_parse_response", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/explain/plan_extractor.py", + "source_location": "L174", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_plan_extractor_demo", + "target": "src_explain_plan_extractor_parse_response", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/explain/plan_extractor.py", + "source_location": "L178", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_plan_extractor_demo", + "target": "src_explain_plan_extractor_fallback_text_parse", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/explain/plan_extractor.py", + "source_location": "L183", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_plan_extractor_rationale_1", + "target": "src_explain_plan_extractor", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/explain/plan_extractor.py", + "source_location": "L1", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_plan_extractor_rationale_61", + "target": "src_explain_plan_extractor_planextractionerror", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/explain/plan_extractor.py", + "source_location": "L61", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_plan_extractor_rationale_81", + "target": "src_explain_plan_extractor_fallback_text_parse", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/explain/plan_extractor.py", + "source_location": "L81", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_plan_extractor_rationale_104", + "target": "src_explain_plan_extractor_planextractor", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/explain/plan_extractor.py", + "source_location": "L104", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_plan_extractor_rationale_130", + "target": "src_explain_plan_extractor_planextractor_extract_from_text", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/explain/plan_extractor.py", + "source_location": "L130", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_plan_extractor_rationale_139", + "target": "src_explain_plan_extractor_planextractor_extract_from_document", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/explain/plan_extractor.py", + "source_location": "L139", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_repair", + "target": "dataclasses", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/explain/repair.py", + "source_location": "L13", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_repair", + "target": "itertools", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/explain/repair.py", + "source_location": "L14", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_repair", + "target": "re", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/explain/repair.py", + "source_location": "L15", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_repair", + "target": "dataclasses", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/explain/repair.py", + "source_location": "L16", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_repair", + "target": "src_data_dwell_db", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/explain/repair.py", + "source_location": "L18", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_repair", + "target": "src_data_models", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/explain/repair.py", + "source_location": "L19", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_repair", + "target": "src_data_party_config", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/explain/repair.py", + "source_location": "L20", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_repair", + "target": "src_data_restaurant_catalog", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/explain/repair.py", + "source_location": "L21", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_repair", + "target": "src_utils_geo", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/explain/repair.py", + "source_location": "L22", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_repair", + "target": "src_validation_hard_fail", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/explain/repair.py", + "source_location": "L23", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_repair", + "target": "src_explain_repair_norm", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/explain/repair.py", + "source_location": "L30", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_repair", + "target": "src_explain_repair_min_dwell_for", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/explain/repair.py", + "source_location": "L34", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_repair", + "target": "src_explain_repair_reordersuggestion", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/explain/repair.py", + "source_location": "L44", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_repair", + "target": "src_explain_repair_timetunesuggestion", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/explain/repair.py", + "source_location": "L53", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_repair", + "target": "src_explain_repair_deletionsuggestion", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/explain/repair.py", + "source_location": "L63", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_repair", + "target": "src_explain_repair_repairresult", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/explain/repair.py", + "source_location": "L74", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_repair_repairresult", + "target": "src_explain_repair_repairresult_is_empty", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/explain/repair.py", + "source_location": "L80", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_repair_repairresult", + "target": "src_explain_repair_repairresult_total_estimated_gain", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/explain/repair.py", + "source_location": "L84", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_repair_repairresult", + "target": "src_explain_repair_repairresult_to_dict", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/explain/repair.py", + "source_location": "L95", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_repair", + "target": "src_explain_repair_repairengine", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/explain/repair.py", + "source_location": "L101", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_repair_repairengine", + "target": "src_explain_repair_repairengine_init", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/explain/repair.py", + "source_location": "L104", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_repair_repairengine_init", + "target": "src_data_restaurant_catalog_restaurantcatalog", + "relation": "references", + "context": "parameter_type", + "confidence": "EXTRACTED", + "source_file": "src/explain/repair.py", + "source_location": "L104", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_repair_repairengine", + "target": "src_explain_repair_repairengine_repair", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/explain/repair.py", + "source_location": "L108", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_repair_repairengine_repair", + "target": "src_data_models_itineraryplan", + "relation": "references", + "context": "parameter_type", + "confidence": "EXTRACTED", + "source_file": "src/explain/repair.py", + "source_location": "L108", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_repair_repairengine_repair", + "target": "src_data_models_poi", + "relation": "references", + "context": "generic_arg", + "confidence": "EXTRACTED", + "source_file": "src/explain/repair.py", + "source_location": "L108", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_repair_repairengine_repair", + "target": "src_data_models_hardfail", + "relation": "references", + "context": "generic_arg", + "confidence": "EXTRACTED", + "source_file": "src/explain/repair.py", + "source_location": "L108", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_repair_repairengine_repair", + "target": "src_explain_repair_repairresult", + "relation": "references", + "context": "return_type", + "confidence": "EXTRACTED", + "source_file": "src/explain/repair.py", + "source_location": "L108", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_repair_repairengine", + "target": "src_explain_repair_repairengine_try_reorder", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/explain/repair.py", + "source_location": "L142", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_repair_repairengine_try_reorder", + "target": "src_data_models_itineraryplan", + "relation": "references", + "context": "parameter_type", + "confidence": "EXTRACTED", + "source_file": "src/explain/repair.py", + "source_location": "L142", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_repair_repairengine_try_reorder", + "target": "src_data_models_poi", + "relation": "references", + "context": "generic_arg", + "confidence": "EXTRACTED", + "source_file": "src/explain/repair.py", + "source_location": "L142", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_repair_repairengine_try_reorder", + "target": "src_explain_repair_reordersuggestion", + "relation": "references", + "context": "return_type", + "confidence": "EXTRACTED", + "source_file": "src/explain/repair.py", + "source_location": "L142", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_repair_repairengine", + "target": "src_explain_repair_repairengine_try_time_tune", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/explain/repair.py", + "source_location": "L171", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_repair_repairengine_try_time_tune", + "target": "src_data_models_itineraryplan", + "relation": "references", + "context": "parameter_type", + "confidence": "EXTRACTED", + "source_file": "src/explain/repair.py", + "source_location": "L171", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_repair_repairengine_try_time_tune", + "target": "src_data_models_poi", + "relation": "references", + "context": "generic_arg", + "confidence": "EXTRACTED", + "source_file": "src/explain/repair.py", + "source_location": "L171", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_repair_repairengine_try_time_tune", + "target": "src_explain_repair_timetunesuggestion", + "relation": "references", + "context": "return_type", + "confidence": "EXTRACTED", + "source_file": "src/explain/repair.py", + "source_location": "L171", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_repair_repairengine", + "target": "src_explain_repair_repairengine_suggest_deletion", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/explain/repair.py", + "source_location": "L224", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_repair_repairengine_suggest_deletion", + "target": "src_data_models_poi", + "relation": "references", + "context": "generic_arg", + "confidence": "EXTRACTED", + "source_file": "src/explain/repair.py", + "source_location": "L224", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_repair_repairengine_suggest_deletion", + "target": "src_explain_repair_deletionsuggestion", + "relation": "references", + "context": "return_type", + "confidence": "EXTRACTED", + "source_file": "src/explain/repair.py", + "source_location": "L224", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_repair_min_dwell_for", + "target": "src_explain_repair_norm", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/explain/repair.py", + "source_location": "L36", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_repair_repairengine_repair", + "target": "src_explain_repair_repairresult", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/explain/repair.py", + "source_location": "L116", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_repair_repairengine_repair", + "target": "src_explain_repair_repairengine_try_reorder", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/explain/repair.py", + "source_location": "L125", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_repair_repairengine_repair", + "target": "src_explain_repair_repairengine_try_time_tune", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/explain/repair.py", + "source_location": "L131", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_repair_repairengine_repair", + "target": "src_explain_repair_repairengine_suggest_deletion", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/explain/repair.py", + "source_location": "L136", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_repair_repairengine_try_reorder", + "target": "src_explain_repair_reordersuggestion", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/explain/repair.py", + "source_location": "L161", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_repair_repairengine_try_time_tune", + "target": "src_explain_repair_min_dwell_for", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/explain/repair.py", + "source_location": "L195", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_repair_repairengine_try_time_tune", + "target": "src_explain_repair_timetunesuggestion", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/explain/repair.py", + "source_location": "L214", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_repair_repairengine_suggest_deletion", + "target": "src_explain_repair_deletionsuggestion", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/explain/repair.py", + "source_location": "L277", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_repair_rationale_1", + "target": "src_explain_repair", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/explain/repair.py", + "source_location": "L1", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_repair_rationale_35", + "target": "src_explain_repair_min_dwell_for", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/explain/repair.py", + "source_location": "L35", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_repair_rationale_85", + "target": "src_explain_repair_repairresult_total_estimated_gain", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/explain/repair.py", + "source_location": "L85", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_repair_rationale_102", + "target": "src_explain_repair_repairengine", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/explain/repair.py", + "source_location": "L102", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_repair_rationale_115", + "target": "src_explain_repair_repairengine_repair", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/explain/repair.py", + "source_location": "L115", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_repair_rationale_149", + "target": "src_explain_repair_repairengine_try_reorder", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/explain/repair.py", + "source_location": "L149", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_repair_rationale_178", + "target": "src_explain_repair_repairengine_try_time_tune", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/explain/repair.py", + "source_location": "L178", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_repair_rationale_229", + "target": "src_explain_repair_repairengine_suggest_deletion", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/explain/repair.py", + "source_location": "L229", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_matrix_init", + "target": "src_matrix_redis_matrix", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/matrix/__init__.py", + "source_location": "L2", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_matrix_init_rationale_1", + "target": "src_matrix_init", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/matrix/__init__.py", + "source_location": "L1", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_matrix_redis_matrix", + "target": "os", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/matrix/redis_matrix.py", + "source_location": "L18", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_matrix_redis_matrix", + "target": "pathlib", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/matrix/redis_matrix.py", + "source_location": "L19", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_matrix_redis_matrix", + "target": "typing", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/matrix/redis_matrix.py", + "source_location": "L20", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_matrix_redis_matrix", + "target": "src_data_models", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/matrix/redis_matrix.py", + "source_location": "L22", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_matrix_redis_matrix", + "target": "src_validation_vrptw_engine", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/matrix/redis_matrix.py", + "source_location": "L23", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_matrix_redis_matrix", + "target": "redis", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/matrix/redis_matrix.py", + "source_location": "L26", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_matrix_redis_matrix", + "target": "src_matrix_redis_matrix_redistimematrix", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/matrix/redis_matrix.py", + "source_location": "L35", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_matrix_redis_matrix_redistimematrix", + "target": "src_validation_vrptw_engine_timematrix", + "relation": "inherits", + "confidence": "EXTRACTED", + "source_file": "src/matrix/redis_matrix.py", + "source_location": "L35", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_matrix_redis_matrix_redistimematrix", + "target": "src_matrix_redis_matrix_redistimematrix_init", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/matrix/redis_matrix.py", + "source_location": "L43", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_matrix_redis_matrix_redistimematrix", + "target": "src_matrix_redis_matrix_redistimematrix_from_env", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/matrix/redis_matrix.py", + "source_location": "L56", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_matrix_redis_matrix_redistimematrix_from_env", + "target": "src_matrix_redis_matrix_py_path", + "relation": "references", + "context": "parameter_type", + "confidence": "EXTRACTED", + "source_file": "src/matrix/redis_matrix.py", + "source_location": "L56", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_matrix_redis_matrix_redistimematrix", + "target": "src_matrix_redis_matrix_redistimematrix_load_dotenv", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/matrix/redis_matrix.py", + "source_location": "L82", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_matrix_redis_matrix_redistimematrix_load_dotenv", + "target": "src_matrix_redis_matrix_py_path", + "relation": "references", + "context": "parameter_type", + "confidence": "EXTRACTED", + "source_file": "src/matrix/redis_matrix.py", + "source_location": "L82", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_matrix_redis_matrix_redistimematrix", + "target": "src_matrix_redis_matrix_redistimematrix_get_travel_time", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/matrix/redis_matrix.py", + "source_location": "L92", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_matrix_redis_matrix_redistimematrix_get_travel_time", + "target": "src_data_models_vrptwplace", + "relation": "references", + "context": "parameter_type", + "confidence": "EXTRACTED", + "source_file": "src/matrix/redis_matrix.py", + "source_location": "L92", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_matrix_redis_matrix_redistimematrix", + "target": "src_matrix_redis_matrix_redistimematrix_set_travel_time", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/matrix/redis_matrix.py", + "source_location": "L110", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_matrix_redis_matrix_redistimematrix_set_travel_time", + "target": "src_data_models_vrptwplace", + "relation": "references", + "context": "parameter_type", + "confidence": "EXTRACTED", + "source_file": "src/matrix/redis_matrix.py", + "source_location": "L110", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_matrix_redis_matrix_redistimematrix", + "target": "src_matrix_redis_matrix_redistimematrix_make_key", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/matrix/redis_matrix.py", + "source_location": "L130", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_matrix_redis_matrix_redistimematrix_make_key", + "target": "src_data_models_vrptwplace", + "relation": "references", + "context": "parameter_type", + "confidence": "EXTRACTED", + "source_file": "src/matrix/redis_matrix.py", + "source_location": "L130", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_matrix_redis_matrix_redistimematrix", + "target": "src_matrix_redis_matrix_redistimematrix_stats", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/matrix/redis_matrix.py", + "source_location": "L138", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_matrix_redis_matrix_redistimematrix", + "target": "src_matrix_redis_matrix_redistimematrix_is_available", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/matrix/redis_matrix.py", + "source_location": "L142", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_matrix_redis_matrix_redistimematrix_from_env", + "target": "src_matrix_redis_matrix_redistimematrix_load_dotenv", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/matrix/redis_matrix.py", + "source_location": "L62", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_matrix_redis_matrix_redistimematrix_from_env", + "target": "src_matrix_redis_matrix_py_path", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/matrix/redis_matrix.py", + "source_location": "L62", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_matrix_redis_matrix_redistimematrix_get_travel_time", + "target": "src_matrix_redis_matrix_redistimematrix_make_key", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/matrix/redis_matrix.py", + "source_location": "L96", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_matrix_redis_matrix_redistimematrix_set_travel_time", + "target": "src_matrix_redis_matrix_redistimematrix_make_key", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/matrix/redis_matrix.py", + "source_location": "L118", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_matrix_redis_matrix_rationale_1", + "target": "src_matrix_redis_matrix", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/matrix/redis_matrix.py", + "source_location": "L1", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_matrix_redis_matrix_rationale_36", + "target": "src_matrix_redis_matrix_redistimematrix", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/matrix/redis_matrix.py", + "source_location": "L36", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_matrix_redis_matrix_rationale_60", + "target": "src_matrix_redis_matrix_redistimematrix_from_env", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/matrix/redis_matrix.py", + "source_location": "L60", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_init_rationale_1", + "target": "src_scoring_init", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/scoring/__init__.py", + "source_location": "L1", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_bonus_engine", + "target": "json", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/scoring/bonus_engine.py", + "source_location": "L4", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_bonus_engine", + "target": "dataclasses", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/scoring/bonus_engine.py", + "source_location": "L5", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_bonus_engine", + "target": "pathlib", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/scoring/bonus_engine.py", + "source_location": "L6", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_bonus_engine", + "target": "src_data_models", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/scoring/bonus_engine.py", + "source_location": "L8", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_bonus_engine", + "target": "src_utils_geo", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/scoring/bonus_engine.py", + "source_location": "L9", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_bonus_engine", + "target": "src_scoring_bonus_engine_bonusresult", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/scoring/bonus_engine.py", + "source_location": "L23", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_bonus_engine", + "target": "src_scoring_bonus_engine_placecoord", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/scoring/bonus_engine.py", + "source_location": "L34", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_bonus_engine", + "target": "src_scoring_bonus_engine_bonusengine", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/scoring/bonus_engine.py", + "source_location": "L39", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_bonus_engine_bonusengine", + "target": "src_scoring_bonus_engine_bonusengine_init", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/scoring/bonus_engine.py", + "source_location": "L46", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_bonus_engine_bonusengine_init", + "target": "src_scoring_bonus_engine_placecoord", + "relation": "references", + "context": "generic_arg", + "confidence": "EXTRACTED", + "source_file": "src/scoring/bonus_engine.py", + "source_location": "L46", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_bonus_engine_bonusengine", + "target": "src_scoring_bonus_engine_bonusengine_from_dataset", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/scoring/bonus_engine.py", + "source_location": "L55", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_bonus_engine_bonusengine_from_dataset", + "target": "src_scoring_bonus_engine_py_path", + "relation": "references", + "context": "parameter_type", + "confidence": "EXTRACTED", + "source_file": "src/scoring/bonus_engine.py", + "source_location": "L55", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_bonus_engine_bonusengine", + "target": "src_scoring_bonus_engine_bonusengine_compute", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/scoring/bonus_engine.py", + "source_location": "L82", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_bonus_engine_bonusengine_compute", + "target": "src_data_models_poi", + "relation": "references", + "context": "generic_arg", + "confidence": "EXTRACTED", + "source_file": "src/scoring/bonus_engine.py", + "source_location": "L82", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_bonus_engine_bonusengine_compute", + "target": "src_scoring_bonus_engine_bonusresult", + "relation": "references", + "context": "return_type", + "confidence": "EXTRACTED", + "source_file": "src/scoring/bonus_engine.py", + "source_location": "L82", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_bonus_engine", + "target": "src_scoring_bonus_engine_nearest_km", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/scoring/bonus_engine.py", + "source_location": "L134", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_bonus_engine_nearest_km", + "target": "src_data_models_poi", + "relation": "references", + "context": "parameter_type", + "confidence": "EXTRACTED", + "source_file": "src/scoring/bonus_engine.py", + "source_location": "L134", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_bonus_engine_nearest_km", + "target": "src_scoring_bonus_engine_placecoord", + "relation": "references", + "context": "generic_arg", + "confidence": "EXTRACTED", + "source_file": "src/scoring/bonus_engine.py", + "source_location": "L134", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_bonus_engine_bonusengine_from_dataset", + "target": "src_scoring_bonus_engine_py_path", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/scoring/bonus_engine.py", + "source_location": "L64", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_bonus_engine_bonusengine_from_dataset", + "target": "src_scoring_bonus_engine_placecoord", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/scoring/bonus_engine.py", + "source_location": "L70", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_bonus_engine_bonusengine_compute", + "target": "src_scoring_bonus_engine_nearest_km", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/scoring/bonus_engine.py", + "source_location": "L100", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_bonus_engine_bonusengine_compute", + "target": "src_scoring_bonus_engine_bonusresult", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/scoring/bonus_engine.py", + "source_location": "L123", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_bonus_engine_rationale_1", + "target": "src_scoring_bonus_engine", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/scoring/bonus_engine.py", + "source_location": "L1", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_bonus_engine_rationale_40", + "target": "src_scoring_bonus_engine_bonusengine", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/scoring/bonus_engine.py", + "source_location": "L40", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_bonus_engine_rationale_60", + "target": "src_scoring_bonus_engine_bonusengine_from_dataset", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/scoring/bonus_engine.py", + "source_location": "L60", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_bonus_engine_rationale_88", + "target": "src_scoring_bonus_engine_bonusengine_compute", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/scoring/bonus_engine.py", + "source_location": "L88", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_bonus_engine_rationale_135", + "target": "src_scoring_bonus_engine_nearest_km", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/scoring/bonus_engine.py", + "source_location": "L135", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_cluster_dispersion", + "target": "dataclasses", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/scoring/cluster_dispersion.py", + "source_location": "L19", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_cluster_dispersion", + "target": "src_data_models", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/scoring/cluster_dispersion.py", + "source_location": "L21", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_cluster_dispersion", + "target": "src_utils_geo", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/scoring/cluster_dispersion.py", + "source_location": "L22", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_cluster_dispersion", + "target": "numpy", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/scoring/cluster_dispersion.py", + "source_location": "L25", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_cluster_dispersion", + "target": "sklearn_cluster", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/scoring/cluster_dispersion.py", + "source_location": "L26", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_cluster_dispersion", + "target": "src_scoring_cluster_dispersion_count_area_backtracks", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/scoring/cluster_dispersion.py", + "source_location": "L64", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_cluster_dispersion", + "target": "src_scoring_cluster_dispersion_count_label_backtracks", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/scoring/cluster_dispersion.py", + "source_location": "L80", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_cluster_dispersion", + "target": "src_scoring_cluster_dispersion_count_geo_cluster_backtracks", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/scoring/cluster_dispersion.py", + "source_location": "L93", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_cluster_dispersion_count_geo_cluster_backtracks", + "target": "src_data_models_vrptwplace", + "relation": "references", + "context": "generic_arg", + "confidence": "EXTRACTED", + "source_file": "src/scoring/cluster_dispersion.py", + "source_location": "L93", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_cluster_dispersion", + "target": "src_scoring_cluster_dispersion_daydispersionmetric", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/scoring/cluster_dispersion.py", + "source_location": "L114", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_cluster_dispersion", + "target": "src_scoring_cluster_dispersion_clusterdispersionreport", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/scoring/cluster_dispersion.py", + "source_location": "L125", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_cluster_dispersion", + "target": "src_scoring_cluster_dispersion_compute_day_dispersion", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/scoring/cluster_dispersion.py", + "source_location": "L131", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_cluster_dispersion_compute_day_dispersion", + "target": "src_data_models_vrptwplace", + "relation": "references", + "context": "generic_arg", + "confidence": "EXTRACTED", + "source_file": "src/scoring/cluster_dispersion.py", + "source_location": "L131", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_cluster_dispersion_compute_day_dispersion", + "target": "src_scoring_cluster_dispersion_daydispersionmetric", + "relation": "references", + "context": "return_type", + "confidence": "EXTRACTED", + "source_file": "src/scoring/cluster_dispersion.py", + "source_location": "L131", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_cluster_dispersion", + "target": "src_scoring_cluster_dispersion_switch_penalty", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/scoring/cluster_dispersion.py", + "source_location": "L166", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_cluster_dispersion", + "target": "src_scoring_cluster_dispersion_distance_penalty", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/scoring/cluster_dispersion.py", + "source_location": "L174", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_cluster_dispersion", + "target": "src_scoring_cluster_dispersion_backtrack_penalty", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/scoring/cluster_dispersion.py", + "source_location": "L184", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_cluster_dispersion", + "target": "src_scoring_cluster_dispersion_geo_bt_penalty", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/scoring/cluster_dispersion.py", + "source_location": "L192", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_cluster_dispersion", + "target": "src_scoring_cluster_dispersion_evaluate_cluster_dispersion", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/scoring/cluster_dispersion.py", + "source_location": "L202", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_cluster_dispersion_evaluate_cluster_dispersion", + "target": "src_data_models_vrptwday", + "relation": "references", + "context": "generic_arg", + "confidence": "EXTRACTED", + "source_file": "src/scoring/cluster_dispersion.py", + "source_location": "L202", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_cluster_dispersion_evaluate_cluster_dispersion", + "target": "src_scoring_cluster_dispersion_clusterdispersionreport", + "relation": "references", + "context": "return_type", + "confidence": "EXTRACTED", + "source_file": "src/scoring/cluster_dispersion.py", + "source_location": "L202", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_cluster_dispersion_count_geo_cluster_backtracks", + "target": "src_scoring_cluster_dispersion_count_label_backtracks", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/scoring/cluster_dispersion.py", + "source_location": "L110", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_cluster_dispersion_compute_day_dispersion", + "target": "src_scoring_cluster_dispersion_count_area_backtracks", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/scoring/cluster_dispersion.py", + "source_location": "L151", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_cluster_dispersion_compute_day_dispersion", + "target": "src_scoring_cluster_dispersion_count_geo_cluster_backtracks", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/scoring/cluster_dispersion.py", + "source_location": "L154", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_cluster_dispersion_compute_day_dispersion", + "target": "src_scoring_cluster_dispersion_daydispersionmetric", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/scoring/cluster_dispersion.py", + "source_location": "L156", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_cluster_dispersion_evaluate_cluster_dispersion", + "target": "src_scoring_cluster_dispersion_compute_day_dispersion", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/scoring/cluster_dispersion.py", + "source_location": "L216", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_cluster_dispersion_evaluate_cluster_dispersion", + "target": "src_scoring_cluster_dispersion_switch_penalty", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/scoring/cluster_dispersion.py", + "source_location": "L219", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_cluster_dispersion_evaluate_cluster_dispersion", + "target": "src_scoring_cluster_dispersion_distance_penalty", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/scoring/cluster_dispersion.py", + "source_location": "L220", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_cluster_dispersion_evaluate_cluster_dispersion", + "target": "src_scoring_cluster_dispersion_backtrack_penalty", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/scoring/cluster_dispersion.py", + "source_location": "L221", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_cluster_dispersion_evaluate_cluster_dispersion", + "target": "src_scoring_cluster_dispersion_geo_bt_penalty", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/scoring/cluster_dispersion.py", + "source_location": "L222", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_cluster_dispersion_evaluate_cluster_dispersion", + "target": "src_scoring_cluster_dispersion_clusterdispersionreport", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/scoring/cluster_dispersion.py", + "source_location": "L281", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_cluster_dispersion_rationale_1", + "target": "src_scoring_cluster_dispersion", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/scoring/cluster_dispersion.py", + "source_location": "L1", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_cluster_dispersion_rationale_65", + "target": "src_scoring_cluster_dispersion_count_area_backtracks", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/scoring/cluster_dispersion.py", + "source_location": "L65", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_cluster_dispersion_rationale_81", + "target": "src_scoring_cluster_dispersion_count_label_backtracks", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/scoring/cluster_dispersion.py", + "source_location": "L81", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_cluster_dispersion_rationale_97", + "target": "src_scoring_cluster_dispersion_count_geo_cluster_backtracks", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/scoring/cluster_dispersion.py", + "source_location": "L97", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_cluster_dispersion_rationale_193", + "target": "src_scoring_cluster_dispersion_geo_bt_penalty", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/scoring/cluster_dispersion.py", + "source_location": "L193", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_cluster_dispersion_rationale_206", + "target": "src_scoring_cluster_dispersion_evaluate_cluster_dispersion", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/scoring/cluster_dispersion.py", + "source_location": "L206", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_congestion_engine", + "target": "unicodedata", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/scoring/congestion_engine.py", + "source_location": "L12", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_congestion_engine", + "target": "dataclasses", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/scoring/congestion_engine.py", + "source_location": "L13", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_congestion_engine", + "target": "enum", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/scoring/congestion_engine.py", + "source_location": "L14", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_congestion_engine", + "target": "functools", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/scoring/congestion_engine.py", + "source_location": "L15", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_congestion_engine", + "target": "pathlib", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/scoring/congestion_engine.py", + "source_location": "L16", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_congestion_engine", + "target": "typing", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/scoring/congestion_engine.py", + "source_location": "L17", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_congestion_engine", + "target": "pandas", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/scoring/congestion_engine.py", + "source_location": "L19", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_congestion_engine", + "target": "src_data_seoul_citydata_client", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/scoring/congestion_engine.py", + "source_location": "L22", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_congestion_engine", + "target": "src_scoring_congestion_engine_congestionlevel", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/scoring/congestion_engine.py", + "source_location": "L27", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_congestion_engine_congestionlevel", + "target": "str", + "relation": "inherits", + "confidence": "EXTRACTED", + "source_file": "src/scoring/congestion_engine.py", + "source_location": "L27", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_congestion_engine_congestionlevel", + "target": "enum", + "relation": "inherits", + "confidence": "EXTRACTED", + "source_file": "src/scoring/congestion_engine.py", + "source_location": "L27", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_congestion_engine", + "target": "src_scoring_congestion_engine_congestionresult", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/scoring/congestion_engine.py", + "source_location": "L35", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_congestion_engine", + "target": "src_scoring_congestion_engine_normalize", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/scoring/congestion_engine.py", + "source_location": "L45", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_congestion_engine", + "target": "src_scoring_congestion_engine_score_to_level", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/scoring/congestion_engine.py", + "source_location": "L49", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_congestion_engine_score_to_level", + "target": "src_scoring_congestion_engine_congestionlevel", + "relation": "references", + "context": "return_type", + "confidence": "EXTRACTED", + "source_file": "src/scoring/congestion_engine.py", + "source_location": "L49", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_congestion_engine", + "target": "src_scoring_congestion_engine_congestionengine", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/scoring/congestion_engine.py", + "source_location": "L59", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_congestion_engine_congestionengine", + "target": "src_scoring_congestion_engine_congestionengine_init", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/scoring/congestion_engine.py", + "source_location": "L68", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_congestion_engine_congestionengine_init", + "target": "src_scoring_congestion_engine_py_path", + "relation": "references", + "context": "parameter_type", + "confidence": "EXTRACTED", + "source_file": "src/scoring/congestion_engine.py", + "source_location": "L68", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_congestion_engine_congestionengine_init", + "target": "src_data_seoul_citydata_client_seoulcitydataclient", + "relation": "references", + "context": "parameter_type", + "confidence": "EXTRACTED", + "source_file": "src/scoring/congestion_engine.py", + "source_location": "L68", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_congestion_engine_congestionengine", + "target": "src_scoring_congestion_engine_congestionengine_df", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/scoring/congestion_engine.py", + "source_location": "L79", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_congestion_engine_congestionengine_df", + "target": "src_scoring_congestion_engine_py_dataframe", + "relation": "references", + "context": "return_type", + "confidence": "EXTRACTED", + "source_file": "src/scoring/congestion_engine.py", + "source_location": "L79", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_congestion_engine_congestionengine", + "target": "src_scoring_congestion_engine_congestionengine_poi_names", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/scoring/congestion_engine.py", + "source_location": "L90", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_congestion_engine_congestionengine", + "target": "src_scoring_congestion_engine_congestionengine_global_avg_by_month", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/scoring/congestion_engine.py", + "source_location": "L94", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_congestion_engine_congestionengine", + "target": "src_scoring_congestion_engine_congestionengine_category_avg_by_month", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/scoring/congestion_engine.py", + "source_location": "L100", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_congestion_engine_congestionengine", + "target": "src_scoring_congestion_engine_congestionengine_lookup_exact", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/scoring/congestion_engine.py", + "source_location": "L113", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_congestion_engine_congestionengine_lookup_exact", + "target": "series", + "relation": "references", + "context": "return_type", + "confidence": "EXTRACTED", + "source_file": "src/scoring/congestion_engine.py", + "source_location": "L113", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_congestion_engine_congestionengine", + "target": "src_scoring_congestion_engine_congestionengine_lookup_partial", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/scoring/congestion_engine.py", + "source_location": "L119", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_congestion_engine_congestionengine_lookup_partial", + "target": "series", + "relation": "references", + "context": "generic_arg", + "confidence": "EXTRACTED", + "source_file": "src/scoring/congestion_engine.py", + "source_location": "L119", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_congestion_engine_congestionengine", + "target": "src_scoring_congestion_engine_congestionengine_score", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/scoring/congestion_engine.py", + "source_location": "L130", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_congestion_engine_congestionengine_score", + "target": "src_scoring_congestion_engine_congestionresult", + "relation": "references", + "context": "return_type", + "confidence": "EXTRACTED", + "source_file": "src/scoring/congestion_engine.py", + "source_location": "L130", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_congestion_engine_congestionengine", + "target": "src_scoring_congestion_engine_congestionengine_is_crowded", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/scoring/congestion_engine.py", + "source_location": "L209", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_congestion_engine_congestionengine", + "target": "src_scoring_congestion_engine_congestionengine_score_itinerary", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/scoring/congestion_engine.py", + "source_location": "L213", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_congestion_engine_congestionengine_score_itinerary", + "target": "src_scoring_congestion_engine_congestionresult", + "relation": "references", + "context": "generic_arg", + "confidence": "EXTRACTED", + "source_file": "src/scoring/congestion_engine.py", + "source_location": "L213", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_congestion_engine_congestionengine_df", + "target": "src_scoring_congestion_engine_normalize", + "relation": "indirect_call", + "context": "argument", + "confidence": "INFERRED", + "source_file": "src/scoring/congestion_engine.py", + "source_location": "L86", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_congestion_engine_congestionengine_score", + "target": "src_scoring_congestion_engine_normalize", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/scoring/congestion_engine.py", + "source_location": "L145", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_congestion_engine_congestionengine_score", + "target": "src_scoring_congestion_engine_congestionresult", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/scoring/congestion_engine.py", + "source_location": "L152", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_congestion_engine_congestionengine_score", + "target": "src_scoring_congestion_engine_score_to_level", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/scoring/congestion_engine.py", + "source_location": "L155", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_congestion_engine_congestionengine_score", + "target": "src_scoring_congestion_engine_congestionengine_lookup_exact", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/scoring/congestion_engine.py", + "source_location": "L164", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_congestion_engine_congestionengine_score", + "target": "src_scoring_congestion_engine_congestionengine_lookup_partial", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/scoring/congestion_engine.py", + "source_location": "L175", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_congestion_engine_congestionengine_is_crowded", + "target": "src_scoring_congestion_engine_congestionengine_score", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/scoring/congestion_engine.py", + "source_location": "L211", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_congestion_engine_congestionengine_score_itinerary", + "target": "src_scoring_congestion_engine_congestionengine_score", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/scoring/congestion_engine.py", + "source_location": "L217", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_congestion_engine_rationale_1", + "target": "src_scoring_congestion_engine", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/scoring/congestion_engine.py", + "source_location": "L1", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_congestion_engine_rationale_60", + "target": "src_scoring_congestion_engine_congestionengine", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/scoring/congestion_engine.py", + "source_location": "L60", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_congestion_engine_rationale_95", + "target": "src_scoring_congestion_engine_congestionengine_global_avg_by_month", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/scoring/congestion_engine.py", + "source_location": "L95", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_congestion_engine_rationale_101", + "target": "src_scoring_congestion_engine_congestionengine_category_avg_by_month", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/scoring/congestion_engine.py", + "source_location": "L101", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_congestion_engine_rationale_131", + "target": "src_scoring_congestion_engine_congestionengine_score", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/scoring/congestion_engine.py", + "source_location": "L131", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_congestion_engine_rationale_210", + "target": "src_scoring_congestion_engine_congestionengine_is_crowded", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/scoring/congestion_engine.py", + "source_location": "L210", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_congestion_engine_rationale_216", + "target": "src_scoring_congestion_engine_congestionengine_score_itinerary", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/scoring/congestion_engine.py", + "source_location": "L216", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_reward_engine", + "target": "src_data_models", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/scoring/reward_engine.py", + "source_location": "L15", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_reward_engine", + "target": "src_scoring_reward_engine_generate_rewards", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/scoring/reward_engine.py", + "source_location": "L24", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_reward_engine_generate_rewards", + "target": "src_data_models_scores", + "relation": "references", + "context": "parameter_type", + "confidence": "EXTRACTED", + "source_file": "src/scoring/reward_engine.py", + "source_location": "L24", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_reward_engine_rationale_1", + "target": "src_scoring_reward_engine", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/scoring/reward_engine.py", + "source_location": "L1", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_reward_engine_rationale_31", + "target": "src_scoring_reward_engine_generate_rewards", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/scoring/reward_engine.py", + "source_location": "L31", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_theme_alignment", + "target": "hashlib", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/scoring/theme_alignment.py", + "source_location": "L15", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_theme_alignment", + "target": "json", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/scoring/theme_alignment.py", + "source_location": "L16", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_theme_alignment", + "target": "os", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/scoring/theme_alignment.py", + "source_location": "L17", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_theme_alignment", + "target": "dataclasses", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/scoring/theme_alignment.py", + "source_location": "L18", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_theme_alignment", + "target": "typing", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/scoring/theme_alignment.py", + "source_location": "L19", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_theme_alignment", + "target": "src_data_models", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/scoring/theme_alignment.py", + "source_location": "L21", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_theme_alignment", + "target": "src_data_theme_taxonomy", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/scoring/theme_alignment.py", + "source_location": "L22", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_theme_alignment", + "target": "anthropic", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/scoring/theme_alignment.py", + "source_location": "L26", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_theme_alignment", + "target": "src_scoring_theme_alignment_poiwithcategory", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/scoring/theme_alignment.py", + "source_location": "L68", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_theme_alignment", + "target": "src_scoring_theme_alignment_themejudgment", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/scoring/theme_alignment.py", + "source_location": "L77", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_theme_alignment", + "target": "src_scoring_theme_alignment_themealignmentreport", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/scoring/theme_alignment.py", + "source_location": "L86", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_theme_alignment", + "target": "src_scoring_theme_alignment_cache_key", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/scoring/theme_alignment.py", + "source_location": "L96", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_theme_alignment_cache_key", + "target": "src_data_theme_taxonomy_userpreferences", + "relation": "references", + "context": "parameter_type", + "confidence": "EXTRACTED", + "source_file": "src/scoring/theme_alignment.py", + "source_location": "L96", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_theme_alignment_cache_key", + "target": "src_scoring_theme_alignment_poiwithcategory", + "relation": "references", + "context": "generic_arg", + "confidence": "EXTRACTED", + "source_file": "src/scoring/theme_alignment.py", + "source_location": "L96", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_theme_alignment", + "target": "src_scoring_theme_alignment_build_user_prompt", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/scoring/theme_alignment.py", + "source_location": "L107", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_theme_alignment_build_user_prompt", + "target": "src_data_theme_taxonomy_userpreferences", + "relation": "references", + "context": "parameter_type", + "confidence": "EXTRACTED", + "source_file": "src/scoring/theme_alignment.py", + "source_location": "L107", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_theme_alignment_build_user_prompt", + "target": "src_scoring_theme_alignment_poiwithcategory", + "relation": "references", + "context": "generic_arg", + "confidence": "EXTRACTED", + "source_file": "src/scoring/theme_alignment.py", + "source_location": "L107", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_theme_alignment", + "target": "src_scoring_theme_alignment_classify_score", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/scoring/theme_alignment.py", + "source_location": "L132", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_theme_alignment", + "target": "src_scoring_theme_alignment_parse_llm_response", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/scoring/theme_alignment.py", + "source_location": "L143", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_theme_alignment_parse_llm_response", + "target": "src_scoring_theme_alignment_themejudgment", + "relation": "references", + "context": "return_type", + "confidence": "EXTRACTED", + "source_file": "src/scoring/theme_alignment.py", + "source_location": "L143", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_theme_alignment", + "target": "src_scoring_theme_alignment_themealignmentjudge", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/scoring/theme_alignment.py", + "source_location": "L163", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_theme_alignment_themealignmentjudge", + "target": "src_scoring_theme_alignment_themealignmentjudge_init", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/scoring/theme_alignment.py", + "source_location": "L171", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_theme_alignment_themealignmentjudge_init", + "target": "src_scoring_theme_alignment_py_any", + "relation": "references", + "context": "parameter_type", + "confidence": "EXTRACTED", + "source_file": "src/scoring/theme_alignment.py", + "source_location": "L171", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_theme_alignment_themealignmentjudge", + "target": "src_scoring_theme_alignment_themealignmentjudge_is_available", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/scoring/theme_alignment.py", + "source_location": "L187", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_theme_alignment_themealignmentjudge", + "target": "src_scoring_theme_alignment_themealignmentjudge_evaluate", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/scoring/theme_alignment.py", + "source_location": "L191", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_theme_alignment_themealignmentjudge_evaluate", + "target": "src_data_theme_taxonomy_userpreferences", + "relation": "references", + "context": "parameter_type", + "confidence": "EXTRACTED", + "source_file": "src/scoring/theme_alignment.py", + "source_location": "L191", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_theme_alignment_themealignmentjudge_evaluate", + "target": "src_scoring_theme_alignment_poiwithcategory", + "relation": "references", + "context": "generic_arg", + "confidence": "EXTRACTED", + "source_file": "src/scoring/theme_alignment.py", + "source_location": "L191", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_theme_alignment_themealignmentjudge_evaluate", + "target": "src_scoring_theme_alignment_themealignmentreport", + "relation": "references", + "context": "return_type", + "confidence": "EXTRACTED", + "source_file": "src/scoring/theme_alignment.py", + "source_location": "L191", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_theme_alignment_themealignmentjudge", + "target": "src_scoring_theme_alignment_themealignmentjudge_call_llm", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/scoring/theme_alignment.py", + "source_location": "L261", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_theme_alignment_themealignmentjudge_call_llm", + "target": "src_data_theme_taxonomy_userpreferences", + "relation": "references", + "context": "parameter_type", + "confidence": "EXTRACTED", + "source_file": "src/scoring/theme_alignment.py", + "source_location": "L261", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_theme_alignment_themealignmentjudge_call_llm", + "target": "src_scoring_theme_alignment_poiwithcategory", + "relation": "references", + "context": "generic_arg", + "confidence": "EXTRACTED", + "source_file": "src/scoring/theme_alignment.py", + "source_location": "L261", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_theme_alignment_themealignmentjudge_call_llm", + "target": "src_scoring_theme_alignment_themejudgment", + "relation": "references", + "context": "return_type", + "confidence": "EXTRACTED", + "source_file": "src/scoring/theme_alignment.py", + "source_location": "L261", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_theme_alignment_parse_llm_response", + "target": "src_scoring_theme_alignment_themejudgment", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/scoring/theme_alignment.py", + "source_location": "L155", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_theme_alignment_themealignmentjudge_evaluate", + "target": "src_scoring_theme_alignment_themealignmentjudge_is_available", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/scoring/theme_alignment.py", + "source_location": "L198", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_theme_alignment_themealignmentjudge_evaluate", + "target": "src_scoring_theme_alignment_themealignmentreport", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/scoring/theme_alignment.py", + "source_location": "L203", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_theme_alignment_themealignmentjudge_evaluate", + "target": "src_scoring_theme_alignment_cache_key", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/scoring/theme_alignment.py", + "source_location": "L215", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_theme_alignment_themealignmentjudge_evaluate", + "target": "src_scoring_theme_alignment_themealignmentjudge_call_llm", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/scoring/theme_alignment.py", + "source_location": "L220", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_theme_alignment_themealignmentjudge_evaluate", + "target": "src_scoring_theme_alignment_classify_score", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/scoring/theme_alignment.py", + "source_location": "L235", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_theme_alignment_themealignmentjudge_call_llm", + "target": "src_scoring_theme_alignment_build_user_prompt", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/scoring/theme_alignment.py", + "source_location": "L267", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_theme_alignment_themealignmentjudge_call_llm", + "target": "src_scoring_theme_alignment_parse_llm_response", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/scoring/theme_alignment.py", + "source_location": "L285", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_theme_alignment_rationale_1", + "target": "src_scoring_theme_alignment", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/scoring/theme_alignment.py", + "source_location": "L1", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_theme_alignment_rationale_69", + "target": "src_scoring_theme_alignment_poiwithcategory", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/scoring/theme_alignment.py", + "source_location": "L69", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_theme_alignment_rationale_97", + "target": "src_scoring_theme_alignment_cache_key", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/scoring/theme_alignment.py", + "source_location": "L97", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_theme_alignment_rationale_111", + "target": "src_scoring_theme_alignment_build_user_prompt", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/scoring/theme_alignment.py", + "source_location": "L111", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_theme_alignment_rationale_133", + "target": "src_scoring_theme_alignment_classify_score", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/scoring/theme_alignment.py", + "source_location": "L133", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_theme_alignment_rationale_144", + "target": "src_scoring_theme_alignment_parse_llm_response", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/scoring/theme_alignment.py", + "source_location": "L144", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_theme_alignment_rationale_164", + "target": "src_scoring_theme_alignment_themealignmentjudge", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/scoring/theme_alignment.py", + "source_location": "L164", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_theme_alignment_rationale_188", + "target": "src_scoring_theme_alignment_themealignmentjudge_is_available", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/scoring/theme_alignment.py", + "source_location": "L188", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_travel_ratio", + "target": "dataclasses", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/scoring/travel_ratio.py", + "source_location": "L10", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_travel_ratio", + "target": "src_data_models", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/scoring/travel_ratio.py", + "source_location": "L12", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_travel_ratio", + "target": "src_validation_vrptw_engine", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/scoring/travel_ratio.py", + "source_location": "L13", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_travel_ratio", + "target": "src_scoring_travel_ratio_dayratiometric", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/scoring/travel_ratio.py", + "source_location": "L28", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_travel_ratio", + "target": "src_scoring_travel_ratio_travelratioreport", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/scoring/travel_ratio.py", + "source_location": "L37", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_travel_ratio", + "target": "src_scoring_travel_ratio_compute_day_metric", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/scoring/travel_ratio.py", + "source_location": "L45", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_travel_ratio_compute_day_metric", + "target": "src_data_models_vrptwplace", + "relation": "references", + "context": "generic_arg", + "confidence": "EXTRACTED", + "source_file": "src/scoring/travel_ratio.py", + "source_location": "L45", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_travel_ratio_compute_day_metric", + "target": "src_validation_vrptw_engine_timematrix", + "relation": "references", + "context": "parameter_type", + "confidence": "EXTRACTED", + "source_file": "src/scoring/travel_ratio.py", + "source_location": "L45", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_travel_ratio_compute_day_metric", + "target": "src_scoring_travel_ratio_dayratiometric", + "relation": "references", + "context": "return_type", + "confidence": "EXTRACTED", + "source_file": "src/scoring/travel_ratio.py", + "source_location": "L45", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_travel_ratio", + "target": "src_scoring_travel_ratio_classify_ratio", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/scoring/travel_ratio.py", + "source_location": "L70", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_travel_ratio", + "target": "src_scoring_travel_ratio_evaluate_travel_ratio", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/scoring/travel_ratio.py", + "source_location": "L81", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_travel_ratio_evaluate_travel_ratio", + "target": "src_data_models_vrptwday", + "relation": "references", + "context": "generic_arg", + "confidence": "EXTRACTED", + "source_file": "src/scoring/travel_ratio.py", + "source_location": "L81", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_travel_ratio_evaluate_travel_ratio", + "target": "src_validation_vrptw_engine_timematrix", + "relation": "references", + "context": "parameter_type", + "confidence": "EXTRACTED", + "source_file": "src/scoring/travel_ratio.py", + "source_location": "L81", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_travel_ratio_evaluate_travel_ratio", + "target": "src_scoring_travel_ratio_travelratioreport", + "relation": "references", + "context": "return_type", + "confidence": "EXTRACTED", + "source_file": "src/scoring/travel_ratio.py", + "source_location": "L81", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_travel_ratio_compute_day_metric", + "target": "src_scoring_travel_ratio_dayratiometric", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/scoring/travel_ratio.py", + "source_location": "L62", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_travel_ratio_evaluate_travel_ratio", + "target": "src_scoring_travel_ratio_compute_day_metric", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/scoring/travel_ratio.py", + "source_location": "L95", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_travel_ratio_evaluate_travel_ratio", + "target": "src_scoring_travel_ratio_classify_ratio", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/scoring/travel_ratio.py", + "source_location": "L100", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_travel_ratio_evaluate_travel_ratio", + "target": "src_scoring_travel_ratio_travelratioreport", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/scoring/travel_ratio.py", + "source_location": "L121", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_travel_ratio_rationale_1", + "target": "src_scoring_travel_ratio", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/scoring/travel_ratio.py", + "source_location": "L1", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_travel_ratio_rationale_50", + "target": "src_scoring_travel_ratio_compute_day_metric", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/scoring/travel_ratio.py", + "source_location": "L50", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_travel_ratio_rationale_71", + "target": "src_scoring_travel_ratio_classify_ratio", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/scoring/travel_ratio.py", + "source_location": "L71", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_travel_ratio_rationale_85", + "target": "src_scoring_travel_ratio_evaluate_travel_ratio", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/scoring/travel_ratio.py", + "source_location": "L85", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_utils_geo", + "target": "math", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/utils/geo.py", + "source_location": "L4", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_utils_geo", + "target": "src_utils_geo_haversine_km", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/utils/geo.py", + "source_location": "L10", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_utils_geo", + "target": "src_utils_geo_build_dist_cache", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/utils/geo.py", + "source_location": "L20", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_utils_geo", + "target": "src_utils_geo_nn_heuristic_km", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/utils/geo.py", + "source_location": "L36", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_utils_geo", + "target": "src_utils_geo_get_travel_min", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/utils/geo.py", + "source_location": "L72", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_utils_geo_build_dist_cache", + "target": "src_utils_geo_haversine_km", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/utils/geo.py", + "source_location": "L30", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_utils_geo_nn_heuristic_km", + "target": "src_utils_geo_haversine_km", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/utils/geo.py", + "source_location": "L57", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_utils_geo_get_travel_min", + "target": "src_utils_geo_haversine_km", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/utils/geo.py", + "source_location": "L89", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_utils_geo_rationale_1", + "target": "src_utils_geo", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/utils/geo.py", + "source_location": "L1", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_utils_geo_rationale_11", + "target": "src_utils_geo_haversine_km", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/utils/geo.py", + "source_location": "L11", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_utils_geo_rationale_21", + "target": "src_utils_geo_build_dist_cache", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/utils/geo.py", + "source_location": "L21", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_utils_geo_rationale_40", + "target": "src_utils_geo_nn_heuristic_km", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/utils/geo.py", + "source_location": "L40", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_utils_geo_rationale_80", + "target": "src_utils_geo_get_travel_min", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/utils/geo.py", + "source_location": "L80", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_alternatives", + "target": "math", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/validation/alternatives.py", + "source_location": "L23", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_alternatives", + "target": "typing", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/validation/alternatives.py", + "source_location": "L24", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_alternatives", + "target": "src_data_models", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/validation/alternatives.py", + "source_location": "L26", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_alternatives", + "target": "src_validation_alternatives_haversine_km", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/validation/alternatives.py", + "source_location": "L32", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_alternatives", + "target": "src_validation_alternatives_alternativesfinder", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/validation/alternatives.py", + "source_location": "L40", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_alternatives_alternativesfinder", + "target": "src_validation_alternatives_alternativesfinder_init", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/validation/alternatives.py", + "source_location": "L49", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_alternatives_alternativesfinder_init", + "target": "src_data_models_poi", + "relation": "references", + "context": "generic_arg", + "confidence": "EXTRACTED", + "source_file": "src/validation/alternatives.py", + "source_location": "L49", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_alternatives_alternativesfinder", + "target": "src_validation_alternatives_alternativesfinder_find_alternatives", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/validation/alternatives.py", + "source_location": "L59", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_alternatives_alternativesfinder_find_alternatives", + "target": "src_data_models_poi", + "relation": "references", + "context": "parameter_type", + "confidence": "EXTRACTED", + "source_file": "src/validation/alternatives.py", + "source_location": "L59", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_alternatives_alternativesfinder_find_alternatives", + "target": "src_data_models_alternativepoi", + "relation": "references", + "context": "generic_arg", + "confidence": "EXTRACTED", + "source_file": "src/validation/alternatives.py", + "source_location": "L59", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_alternatives_alternativesfinder", + "target": "src_validation_alternatives_alternativesfinder_build_alternatives_map", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/validation/alternatives.py", + "source_location": "L92", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_alternatives_alternativesfinder_build_alternatives_map", + "target": "src_data_models_hardfail", + "relation": "references", + "context": "generic_arg", + "confidence": "EXTRACTED", + "source_file": "src/validation/alternatives.py", + "source_location": "L92", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_alternatives_alternativesfinder_build_alternatives_map", + "target": "src_data_models_poi", + "relation": "references", + "context": "generic_arg", + "confidence": "EXTRACTED", + "source_file": "src/validation/alternatives.py", + "source_location": "L92", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_alternatives_alternativesfinder_build_alternatives_map", + "target": "src_data_models_alternativepoi", + "relation": "references", + "context": "generic_arg", + "confidence": "EXTRACTED", + "source_file": "src/validation/alternatives.py", + "source_location": "L92", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_alternatives_alternativesfinder_find_alternatives", + "target": "src_validation_alternatives_haversine_km", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/validation/alternatives.py", + "source_location": "L74", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_alternatives_alternativesfinder_find_alternatives", + "target": "src_data_models_alternativepoi", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/validation/alternatives.py", + "source_location": "L82", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_alternatives_alternativesfinder_build_alternatives_map", + "target": "src_validation_alternatives_alternativesfinder_find_alternatives", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/validation/alternatives.py", + "source_location": "L117", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_alternatives_rationale_1", + "target": "src_validation_alternatives", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/validation/alternatives.py", + "source_location": "L1", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_alternatives_rationale_41", + "target": "src_validation_alternatives_alternativesfinder", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/validation/alternatives.py", + "source_location": "L41", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_alternatives_rationale_64", + "target": "src_validation_alternatives_alternativesfinder_find_alternatives", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/validation/alternatives.py", + "source_location": "L64", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_alternatives_rationale_98", + "target": "src_validation_alternatives_alternativesfinder_build_alternatives_map", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/validation/alternatives.py", + "source_location": "L98", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_hard_fail", + "target": "src_data_models", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/validation/hard_fail.py", + "source_location": "L4", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_hard_fail", + "target": "src_utils_geo", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/validation/hard_fail.py", + "source_location": "L5", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_hard_fail", + "target": "src_validation_hard_fail_hardfaildetector", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/validation/hard_fail.py", + "source_location": "L16", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_hard_fail_hardfaildetector", + "target": "src_validation_hard_fail_hardfaildetector_detect", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/validation/hard_fail.py", + "source_location": "L24", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_hard_fail_hardfaildetector_detect", + "target": "src_data_models_itineraryplan", + "relation": "references", + "context": "parameter_type", + "confidence": "EXTRACTED", + "source_file": "src/validation/hard_fail.py", + "source_location": "L24", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_hard_fail_hardfaildetector_detect", + "target": "src_data_models_poi", + "relation": "references", + "context": "generic_arg", + "confidence": "EXTRACTED", + "source_file": "src/validation/hard_fail.py", + "source_location": "L24", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_hard_fail_hardfaildetector_detect", + "target": "src_data_models_hardfail", + "relation": "references", + "context": "generic_arg", + "confidence": "EXTRACTED", + "source_file": "src/validation/hard_fail.py", + "source_location": "L24", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_hard_fail_hardfaildetector", + "target": "src_validation_hard_fail_hardfaildetector_check_operating_hours", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/validation/hard_fail.py", + "source_location": "L48", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_hard_fail_hardfaildetector_check_operating_hours", + "target": "src_data_models_poi", + "relation": "references", + "context": "generic_arg", + "confidence": "EXTRACTED", + "source_file": "src/validation/hard_fail.py", + "source_location": "L48", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_hard_fail_hardfaildetector_check_operating_hours", + "target": "src_data_models_hardfail", + "relation": "references", + "context": "generic_arg", + "confidence": "EXTRACTED", + "source_file": "src/validation/hard_fail.py", + "source_location": "L48", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_hard_fail_hardfaildetector", + "target": "src_validation_hard_fail_hardfaildetector_check_travel_impossible", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/validation/hard_fail.py", + "source_location": "L110", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_hard_fail_hardfaildetector_check_travel_impossible", + "target": "src_data_models_poi", + "relation": "references", + "context": "generic_arg", + "confidence": "EXTRACTED", + "source_file": "src/validation/hard_fail.py", + "source_location": "L110", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_hard_fail_hardfaildetector_check_travel_impossible", + "target": "src_data_models_hardfail", + "relation": "references", + "context": "generic_arg", + "confidence": "EXTRACTED", + "source_file": "src/validation/hard_fail.py", + "source_location": "L110", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_hard_fail_hardfaildetector", + "target": "src_validation_hard_fail_hardfaildetector_check_schedule_infeasible", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/validation/hard_fail.py", + "source_location": "L157", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_hard_fail_hardfaildetector_check_schedule_infeasible", + "target": "src_data_models_poi", + "relation": "references", + "context": "generic_arg", + "confidence": "EXTRACTED", + "source_file": "src/validation/hard_fail.py", + "source_location": "L157", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_hard_fail_hardfaildetector_check_schedule_infeasible", + "target": "src_data_models_hardfail", + "relation": "references", + "context": "generic_arg", + "confidence": "EXTRACTED", + "source_file": "src/validation/hard_fail.py", + "source_location": "L157", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_hard_fail_hardfaildetector", + "target": "src_validation_hard_fail_hardfaildetector_time_to_min", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/validation/hard_fail.py", + "source_location": "L188", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_hard_fail_hardfaildetector", + "target": "src_validation_hard_fail_hardfaildetector_min_to_time", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/validation/hard_fail.py", + "source_location": "L193", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_hard_fail_hardfaildetector_detect", + "target": "src_validation_hard_fail_hardfaildetector_check_operating_hours", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/validation/hard_fail.py", + "source_location": "L40", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_hard_fail_hardfaildetector_detect", + "target": "src_validation_hard_fail_hardfaildetector_check_travel_impossible", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/validation/hard_fail.py", + "source_location": "L41", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_hard_fail_hardfaildetector_detect", + "target": "src_validation_hard_fail_hardfaildetector_check_schedule_infeasible", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/validation/hard_fail.py", + "source_location": "L42", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_hard_fail_hardfaildetector_check_operating_hours", + "target": "src_validation_hard_fail_hardfaildetector_time_to_min", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/validation/hard_fail.py", + "source_location": "L66", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_hard_fail_hardfaildetector_check_operating_hours", + "target": "src_data_models_hardfail", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/validation/hard_fail.py", + "source_location": "L81", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_hard_fail_hardfaildetector_check_operating_hours", + "target": "src_validation_hard_fail_hardfaildetector_min_to_time", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/validation/hard_fail.py", + "source_location": "L84", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_hard_fail_hardfaildetector_check_travel_impossible", + "target": "src_validation_hard_fail_hardfaildetector_time_to_min", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/validation/hard_fail.py", + "source_location": "L123", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_hard_fail_hardfaildetector_check_travel_impossible", + "target": "src_data_models_hardfail", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/validation/hard_fail.py", + "source_location": "L137", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_hard_fail_hardfaildetector_check_travel_impossible", + "target": "src_validation_hard_fail_hardfaildetector_min_to_time", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/validation/hard_fail.py", + "source_location": "L145", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_hard_fail_hardfaildetector_check_schedule_infeasible", + "target": "src_data_models_hardfail", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/validation/hard_fail.py", + "source_location": "L173", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_hard_fail_rationale_1", + "target": "src_validation_hard_fail", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/validation/hard_fail.py", + "source_location": "L1", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_hard_fail_rationale_17", + "target": "src_validation_hard_fail_hardfaildetector", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/validation/hard_fail.py", + "source_location": "L17", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_hard_fail_rationale_33", + "target": "src_validation_hard_fail_hardfaildetector_detect", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/validation/hard_fail.py", + "source_location": "L33", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_hard_fail_rationale_56", + "target": "src_validation_hard_fail_hardfaildetector_check_operating_hours", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/validation/hard_fail.py", + "source_location": "L56", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_hard_fail_rationale_118", + "target": "src_validation_hard_fail_hardfaildetector_check_travel_impossible", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/validation/hard_fail.py", + "source_location": "L118", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_hard_fail_rationale_164", + "target": "src_validation_hard_fail_hardfaildetector_check_schedule_infeasible", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/validation/hard_fail.py", + "source_location": "L164", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_kakao_matrix", + "target": "asyncio", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/validation/kakao_matrix.py", + "source_location": "L26", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_kakao_matrix", + "target": "json", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/validation/kakao_matrix.py", + "source_location": "L27", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_kakao_matrix", + "target": "os", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/validation/kakao_matrix.py", + "source_location": "L28", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_kakao_matrix", + "target": "time", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/validation/kakao_matrix.py", + "source_location": "L29", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_kakao_matrix", + "target": "pathlib", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/validation/kakao_matrix.py", + "source_location": "L30", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_kakao_matrix", + "target": "typing", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/validation/kakao_matrix.py", + "source_location": "L31", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_kakao_matrix", + "target": "httpx", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/validation/kakao_matrix.py", + "source_location": "L33", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_kakao_matrix", + "target": "src_data_models", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/validation/kakao_matrix.py", + "source_location": "L35", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_kakao_matrix", + "target": "src_validation_vrptw_engine", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/validation/kakao_matrix.py", + "source_location": "L36", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_kakao_matrix", + "target": "src_validation_kakao_matrix_kakaomobilitymatrix", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/validation/kakao_matrix.py", + "source_location": "L47", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_kakao_matrix_kakaomobilitymatrix", + "target": "src_validation_vrptw_engine_timematrix", + "relation": "inherits", + "confidence": "EXTRACTED", + "source_file": "src/validation/kakao_matrix.py", + "source_location": "L47", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_kakao_matrix_kakaomobilitymatrix", + "target": "src_validation_kakao_matrix_kakaomobilitymatrix_init", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/validation/kakao_matrix.py", + "source_location": "L58", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_kakao_matrix_kakaomobilitymatrix_init", + "target": "src_validation_kakao_matrix_py_path", + "relation": "references", + "context": "parameter_type", + "confidence": "EXTRACTED", + "source_file": "src/validation/kakao_matrix.py", + "source_location": "L58", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_kakao_matrix_kakaomobilitymatrix", + "target": "src_validation_kakao_matrix_kakaomobilitymatrix_from_env", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/validation/kakao_matrix.py", + "source_location": "L89", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_kakao_matrix_kakaomobilitymatrix_from_env", + "target": "src_validation_kakao_matrix_py_path", + "relation": "references", + "context": "parameter_type", + "confidence": "EXTRACTED", + "source_file": "src/validation/kakao_matrix.py", + "source_location": "L89", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_kakao_matrix_kakaomobilitymatrix_from_env", + "target": "src_validation_kakao_matrix_py_any", + "relation": "references", + "context": "parameter_type", + "confidence": "EXTRACTED", + "source_file": "src/validation/kakao_matrix.py", + "source_location": "L89", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_kakao_matrix_kakaomobilitymatrix", + "target": "src_validation_kakao_matrix_kakaomobilitymatrix_load_dotenv", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/validation/kakao_matrix.py", + "source_location": "L111", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_kakao_matrix_kakaomobilitymatrix_load_dotenv", + "target": "src_validation_kakao_matrix_py_path", + "relation": "references", + "context": "parameter_type", + "confidence": "EXTRACTED", + "source_file": "src/validation/kakao_matrix.py", + "source_location": "L111", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_kakao_matrix_kakaomobilitymatrix", + "target": "src_validation_kakao_matrix_kakaomobilitymatrix_get_travel_time", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/validation/kakao_matrix.py", + "source_location": "L121", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_kakao_matrix_kakaomobilitymatrix_get_travel_time", + "target": "src_data_models_vrptwplace", + "relation": "references", + "context": "parameter_type", + "confidence": "EXTRACTED", + "source_file": "src/validation/kakao_matrix.py", + "source_location": "L121", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_kakao_matrix_kakaomobilitymatrix", + "target": "src_validation_kakao_matrix_kakaomobilitymatrix_aprefetch_matrix", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/validation/kakao_matrix.py", + "source_location": "L139", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_kakao_matrix_kakaomobilitymatrix_aprefetch_matrix", + "target": "src_data_models_vrptwplace", + "relation": "references", + "context": "generic_arg", + "confidence": "EXTRACTED", + "source_file": "src/validation/kakao_matrix.py", + "source_location": "L139", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_kakao_matrix_kakaomobilitymatrix", + "target": "src_validation_kakao_matrix_kakaomobilitymatrix_acall_kakao", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/validation/kakao_matrix.py", + "source_location": "L177", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_kakao_matrix_kakaomobilitymatrix_acall_kakao", + "target": "src_data_models_vrptwplace", + "relation": "references", + "context": "parameter_type", + "confidence": "EXTRACTED", + "source_file": "src/validation/kakao_matrix.py", + "source_location": "L177", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_kakao_matrix_kakaomobilitymatrix", + "target": "src_validation_kakao_matrix_kakaomobilitymatrix_call_kakao_sync", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/validation/kakao_matrix.py", + "source_location": "L212", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_kakao_matrix_kakaomobilitymatrix_call_kakao_sync", + "target": "src_data_models_vrptwplace", + "relation": "references", + "context": "parameter_type", + "confidence": "EXTRACTED", + "source_file": "src/validation/kakao_matrix.py", + "source_location": "L212", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_kakao_matrix_kakaomobilitymatrix", + "target": "src_validation_kakao_matrix_kakaomobilitymatrix_parse_duration", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/validation/kakao_matrix.py", + "source_location": "L265", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_kakao_matrix_kakaomobilitymatrix", + "target": "src_validation_kakao_matrix_kakaomobilitymatrix_make_key", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/validation/kakao_matrix.py", + "source_location": "L278", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_kakao_matrix_kakaomobilitymatrix_make_key", + "target": "src_data_models_vrptwplace", + "relation": "references", + "context": "parameter_type", + "confidence": "EXTRACTED", + "source_file": "src/validation/kakao_matrix.py", + "source_location": "L278", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_kakao_matrix_kakaomobilitymatrix", + "target": "src_validation_kakao_matrix_kakaomobilitymatrix_load_cache", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/validation/kakao_matrix.py", + "source_location": "L284", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_kakao_matrix_kakaomobilitymatrix", + "target": "src_validation_kakao_matrix_kakaomobilitymatrix_maybe_save_cache", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/validation/kakao_matrix.py", + "source_location": "L294", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_kakao_matrix_kakaomobilitymatrix", + "target": "src_validation_kakao_matrix_kakaomobilitymatrix_save_cache", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/validation/kakao_matrix.py", + "source_location": "L299", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_kakao_matrix_kakaomobilitymatrix", + "target": "src_validation_kakao_matrix_kakaomobilitymatrix_stats", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/validation/kakao_matrix.py", + "source_location": "L310", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_kakao_matrix_kakaomobilitymatrix", + "target": "src_validation_kakao_matrix_kakaomobilitymatrix_cache_size", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/validation/kakao_matrix.py", + "source_location": "L314", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_kakao_matrix_kakaomobilitymatrix", + "target": "src_validation_kakao_matrix_kakaomobilitymatrix_is_quota_exhausted", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/validation/kakao_matrix.py", + "source_location": "L318", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_kakao_matrix_kakaomobilitymatrix_init", + "target": "src_validation_kakao_matrix_py_path", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/validation/kakao_matrix.py", + "source_location": "L73", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_kakao_matrix_kakaomobilitymatrix_init", + "target": "src_validation_kakao_matrix_kakaomobilitymatrix_load_cache", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/validation/kakao_matrix.py", + "source_location": "L79", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_kakao_matrix_kakaomobilitymatrix_from_env", + "target": "src_validation_kakao_matrix_kakaomobilitymatrix_load_dotenv", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/validation/kakao_matrix.py", + "source_location": "L97", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_kakao_matrix_kakaomobilitymatrix_from_env", + "target": "src_validation_kakao_matrix_py_path", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/validation/kakao_matrix.py", + "source_location": "L97", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_kakao_matrix_kakaomobilitymatrix_get_travel_time", + "target": "src_validation_kakao_matrix_kakaomobilitymatrix_make_key", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/validation/kakao_matrix.py", + "source_location": "L126", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_kakao_matrix_kakaomobilitymatrix_aprefetch_matrix", + "target": "src_validation_kakao_matrix_kakaomobilitymatrix_save_cache", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/validation/kakao_matrix.py", + "source_location": "L174", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_kakao_matrix_kakaomobilitymatrix_acall_kakao", + "target": "src_validation_kakao_matrix_kakaomobilitymatrix_parse_duration", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/validation/kakao_matrix.py", + "source_location": "L194", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_kakao_matrix_kakaomobilitymatrix_call_kakao_sync", + "target": "src_validation_kakao_matrix_kakaomobilitymatrix_make_key", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/validation/kakao_matrix.py", + "source_location": "L219", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_kakao_matrix_kakaomobilitymatrix_call_kakao_sync", + "target": "src_validation_kakao_matrix_kakaomobilitymatrix_parse_duration", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/validation/kakao_matrix.py", + "source_location": "L242", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_kakao_matrix_kakaomobilitymatrix_call_kakao_sync", + "target": "src_validation_kakao_matrix_kakaomobilitymatrix_maybe_save_cache", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/validation/kakao_matrix.py", + "source_location": "L246", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_kakao_matrix_kakaomobilitymatrix_maybe_save_cache", + "target": "src_validation_kakao_matrix_kakaomobilitymatrix_save_cache", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/validation/kakao_matrix.py", + "source_location": "L297", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_kakao_matrix_rationale_1", + "target": "src_validation_kakao_matrix", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/validation/kakao_matrix.py", + "source_location": "L1", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_kakao_matrix_rationale_48", + "target": "src_validation_kakao_matrix_kakaomobilitymatrix", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/validation/kakao_matrix.py", + "source_location": "L48", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_kakao_matrix_rationale_95", + "target": "src_validation_kakao_matrix_kakaomobilitymatrix_from_env", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/validation/kakao_matrix.py", + "source_location": "L95", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_kakao_matrix_rationale_122", + "target": "src_validation_kakao_matrix_kakaomobilitymatrix_get_travel_time", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/validation/kakao_matrix.py", + "source_location": "L122", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_kakao_matrix_rationale_144", + "target": "src_validation_kakao_matrix_kakaomobilitymatrix_aprefetch_matrix", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/validation/kakao_matrix.py", + "source_location": "L144", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_kakao_matrix_rationale_180", + "target": "src_validation_kakao_matrix_kakaomobilitymatrix_acall_kakao", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/validation/kakao_matrix.py", + "source_location": "L180", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_kakao_matrix_rationale_215", + "target": "src_validation_kakao_matrix_kakaomobilitymatrix_call_kakao_sync", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/validation/kakao_matrix.py", + "source_location": "L215", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_scoring", + "target": "src_data_models", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/validation/scoring.py", + "source_location": "L4", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_scoring", + "target": "src_data_party_config", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/validation/scoring.py", + "source_location": "L5", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_scoring", + "target": "src_utils_geo", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/validation/scoring.py", + "source_location": "L6", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_scoring", + "target": "src_validation_warning", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/validation/scoring.py", + "source_location": "L7", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_scoring", + "target": "src_validation_scoring_scorecalculator", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/validation/scoring.py", + "source_location": "L20", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_scoring_scorecalculator", + "target": "src_validation_scoring_scorecalculator_compute", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/validation/scoring.py", + "source_location": "L23", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_scoring_scorecalculator_compute", + "target": "src_data_models_itineraryplan", + "relation": "references", + "context": "parameter_type", + "confidence": "EXTRACTED", + "source_file": "src/validation/scoring.py", + "source_location": "L23", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_scoring_scorecalculator_compute", + "target": "src_data_models_poi", + "relation": "references", + "context": "generic_arg", + "confidence": "EXTRACTED", + "source_file": "src/validation/scoring.py", + "source_location": "L23", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_scoring_scorecalculator_compute", + "target": "src_data_models_hardfail", + "relation": "references", + "context": "generic_arg", + "confidence": "EXTRACTED", + "source_file": "src/validation/scoring.py", + "source_location": "L23", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_scoring_scorecalculator_compute", + "target": "src_data_models_scores", + "relation": "references", + "context": "generic_arg", + "confidence": "EXTRACTED", + "source_file": "src/validation/scoring.py", + "source_location": "L23", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_scoring_scorecalculator", + "target": "src_validation_scoring_scorecalculator_cosine_distance", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/validation/scoring.py", + "source_location": "L59", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_scoring_scorecalculator", + "target": "src_validation_scoring_scorecalculator_calc_efficiency", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/validation/scoring.py", + "source_location": "L63", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_scoring_scorecalculator_calc_efficiency", + "target": "src_data_models_poi", + "relation": "references", + "context": "generic_arg", + "confidence": "EXTRACTED", + "source_file": "src/validation/scoring.py", + "source_location": "L63", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_scoring_scorecalculator", + "target": "src_validation_scoring_scorecalculator_calc_feasibility", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/validation/scoring.py", + "source_location": "L79", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_scoring_scorecalculator_calc_feasibility", + "target": "src_data_models_itineraryplan", + "relation": "references", + "context": "parameter_type", + "confidence": "EXTRACTED", + "source_file": "src/validation/scoring.py", + "source_location": "L79", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_scoring_scorecalculator_calc_feasibility", + "target": "src_data_models_poi", + "relation": "references", + "context": "generic_arg", + "confidence": "EXTRACTED", + "source_file": "src/validation/scoring.py", + "source_location": "L79", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_scoring_scorecalculator_calc_feasibility", + "target": "src_data_models_hardfail", + "relation": "references", + "context": "generic_arg", + "confidence": "EXTRACTED", + "source_file": "src/validation/scoring.py", + "source_location": "L79", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_scoring_scorecalculator", + "target": "src_validation_scoring_scorecalculator_calc_purpose_fit", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/validation/scoring.py", + "source_location": "L113", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_scoring_scorecalculator_calc_purpose_fit", + "target": "src_data_models_itineraryplan", + "relation": "references", + "context": "parameter_type", + "confidence": "EXTRACTED", + "source_file": "src/validation/scoring.py", + "source_location": "L113", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_scoring_scorecalculator_calc_purpose_fit", + "target": "src_data_models_poi", + "relation": "references", + "context": "generic_arg", + "confidence": "EXTRACTED", + "source_file": "src/validation/scoring.py", + "source_location": "L113", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_scoring_scorecalculator", + "target": "src_validation_scoring_scorecalculator_calc_flow", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/validation/scoring.py", + "source_location": "L132", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_scoring_scorecalculator_calc_flow", + "target": "src_data_models_poi", + "relation": "references", + "context": "generic_arg", + "confidence": "EXTRACTED", + "source_file": "src/validation/scoring.py", + "source_location": "L132", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_scoring_scorecalculator", + "target": "src_validation_scoring_scorecalculator_calc_area_intensity", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/validation/scoring.py", + "source_location": "L169", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_scoring_scorecalculator_calc_area_intensity", + "target": "src_data_models_poi", + "relation": "references", + "context": "generic_arg", + "confidence": "EXTRACTED", + "source_file": "src/validation/scoring.py", + "source_location": "L169", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_scoring_scorecalculator_compute", + "target": "src_validation_scoring_scorecalculator_calc_efficiency", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/validation/scoring.py", + "source_location": "L37", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_scoring_scorecalculator_compute", + "target": "src_validation_scoring_scorecalculator_calc_feasibility", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/validation/scoring.py", + "source_location": "L38", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_scoring_scorecalculator_compute", + "target": "src_validation_scoring_scorecalculator_calc_purpose_fit", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/validation/scoring.py", + "source_location": "L39", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_scoring_scorecalculator_compute", + "target": "src_validation_scoring_scorecalculator_calc_flow", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/validation/scoring.py", + "source_location": "L40", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_scoring_scorecalculator_compute", + "target": "src_validation_scoring_scorecalculator_calc_area_intensity", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/validation/scoring.py", + "source_location": "L41", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_scoring_scorecalculator_compute", + "target": "src_data_models_scores", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/validation/scoring.py", + "source_location": "L43", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_scoring_scorecalculator_calc_purpose_fit", + "target": "src_validation_scoring_scorecalculator_cosine_distance", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/validation/scoring.py", + "source_location": "L130", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_scoring_rationale_21", + "target": "src_validation_scoring_scorecalculator", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/validation/scoring.py", + "source_location": "L21", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_scoring_rationale_30", + "target": "src_validation_scoring_scorecalculator_compute", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/validation/scoring.py", + "source_location": "L30", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_scoring_rationale_60", + "target": "src_validation_scoring_scorecalculator_cosine_distance", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/validation/scoring.py", + "source_location": "L60", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_scoring_rationale_68", + "target": "src_validation_scoring_scorecalculator_calc_efficiency", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/validation/scoring.py", + "source_location": "L68", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_scoring_rationale_87", + "target": "src_validation_scoring_scorecalculator_calc_feasibility", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/validation/scoring.py", + "source_location": "L87", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_scoring_rationale_114", + "target": "src_validation_scoring_scorecalculator_calc_purpose_fit", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/validation/scoring.py", + "source_location": "L114", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_scoring_rationale_137", + "target": "src_validation_scoring_scorecalculator_calc_flow", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/validation/scoring.py", + "source_location": "L137", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_scoring_rationale_170", + "target": "src_validation_scoring_scorecalculator_calc_area_intensity", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/validation/scoring.py", + "source_location": "L170", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_vrptw_engine", + "target": "json", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/validation/vrptw_engine.py", + "source_location": "L11", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_vrptw_engine", + "target": "math", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/validation/vrptw_engine.py", + "source_location": "L12", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_vrptw_engine", + "target": "abc", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/validation/vrptw_engine.py", + "source_location": "L13", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_vrptw_engine", + "target": "dataclasses", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/validation/vrptw_engine.py", + "source_location": "L14", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_vrptw_engine", + "target": "pathlib", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/validation/vrptw_engine.py", + "source_location": "L15", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_vrptw_engine", + "target": "typing", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/validation/vrptw_engine.py", + "source_location": "L16", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_vrptw_engine", + "target": "src_data_models", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/validation/vrptw_engine.py", + "source_location": "L18", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_vrptw_engine", + "target": "ortools_constraint_solver", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/validation/vrptw_engine.py", + "source_location": "L45", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_vrptw_engine", + "target": "src_validation_vrptw_engine_timematrix", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/validation/vrptw_engine.py", + "source_location": "L55", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_vrptw_engine_timematrix", + "target": "abc", + "relation": "inherits", + "confidence": "EXTRACTED", + "source_file": "src/validation/vrptw_engine.py", + "source_location": "L55", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_vrptw_engine_timematrix", + "target": "src_validation_vrptw_engine_timematrix_get_travel_time", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/validation/vrptw_engine.py", + "source_location": "L59", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_vrptw_engine_timematrix_get_travel_time", + "target": "src_data_models_vrptwplace", + "relation": "references", + "context": "parameter_type", + "confidence": "EXTRACTED", + "source_file": "src/validation/vrptw_engine.py", + "source_location": "L59", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_vrptw_engine", + "target": "src_validation_vrptw_engine_haversinematrix", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/validation/vrptw_engine.py", + "source_location": "L63", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_vrptw_engine_haversinematrix", + "target": "src_validation_vrptw_engine_timematrix", + "relation": "inherits", + "confidence": "EXTRACTED", + "source_file": "src/validation/vrptw_engine.py", + "source_location": "L63", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_vrptw_engine_haversinematrix", + "target": "src_validation_vrptw_engine_haversinematrix_effective_speed", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/validation/vrptw_engine.py", + "source_location": "L80", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_vrptw_engine_haversinematrix", + "target": "src_validation_vrptw_engine_haversinematrix_get_travel_time", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/validation/vrptw_engine.py", + "source_location": "L86", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_vrptw_engine_haversinematrix_get_travel_time", + "target": "src_data_models_vrptwplace", + "relation": "references", + "context": "parameter_type", + "confidence": "EXTRACTED", + "source_file": "src/validation/vrptw_engine.py", + "source_location": "L86", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_vrptw_engine", + "target": "src_validation_vrptw_engine_cachedroutematrix", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/validation/vrptw_engine.py", + "source_location": "L91", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_vrptw_engine_cachedroutematrix", + "target": "src_validation_vrptw_engine_timematrix", + "relation": "inherits", + "confidence": "EXTRACTED", + "source_file": "src/validation/vrptw_engine.py", + "source_location": "L91", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_vrptw_engine_cachedroutematrix", + "target": "src_validation_vrptw_engine_cachedroutematrix_init", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/validation/vrptw_engine.py", + "source_location": "L98", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_vrptw_engine_cachedroutematrix", + "target": "src_validation_vrptw_engine_cachedroutematrix_from_file", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/validation/vrptw_engine.py", + "source_location": "L112", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_vrptw_engine_cachedroutematrix_from_file", + "target": "src_validation_vrptw_engine_py_path", + "relation": "references", + "context": "parameter_type", + "confidence": "EXTRACTED", + "source_file": "src/validation/vrptw_engine.py", + "source_location": "L112", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_vrptw_engine_cachedroutematrix", + "target": "src_validation_vrptw_engine_cachedroutematrix_get_travel_time", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/validation/vrptw_engine.py", + "source_location": "L117", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_vrptw_engine_cachedroutematrix_get_travel_time", + "target": "src_data_models_vrptwplace", + "relation": "references", + "context": "parameter_type", + "confidence": "EXTRACTED", + "source_file": "src/validation/vrptw_engine.py", + "source_location": "L117", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_vrptw_engine", + "target": "src_validation_vrptw_engine_haversine_m", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/validation/vrptw_engine.py", + "source_location": "L130", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_vrptw_engine", + "target": "src_validation_vrptw_engine_simresult", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/validation/vrptw_engine.py", + "source_location": "L144", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_vrptw_engine", + "target": "src_validation_vrptw_engine_minutes_to_hhmm", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/validation/vrptw_engine.py", + "source_location": "L151", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_vrptw_engine", + "target": "src_validation_vrptw_engine_simulate_day", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/validation/vrptw_engine.py", + "source_location": "L156", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_vrptw_engine_simulate_day", + "target": "src_data_models_vrptwplace", + "relation": "references", + "context": "generic_arg", + "confidence": "EXTRACTED", + "source_file": "src/validation/vrptw_engine.py", + "source_location": "L156", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_vrptw_engine_simulate_day", + "target": "src_validation_vrptw_engine_timematrix", + "relation": "references", + "context": "parameter_type", + "confidence": "EXTRACTED", + "source_file": "src/validation/vrptw_engine.py", + "source_location": "L156", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_vrptw_engine_simulate_day", + "target": "src_validation_vrptw_engine_simresult", + "relation": "references", + "context": "return_type", + "confidence": "EXTRACTED", + "source_file": "src/validation/vrptw_engine.py", + "source_location": "L156", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_vrptw_engine", + "target": "src_validation_vrptw_engine_compute_day_total_minutes", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/validation/vrptw_engine.py", + "source_location": "L216", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_vrptw_engine_compute_day_total_minutes", + "target": "src_data_models_vrptwplace", + "relation": "references", + "context": "generic_arg", + "confidence": "EXTRACTED", + "source_file": "src/validation/vrptw_engine.py", + "source_location": "L216", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_vrptw_engine_compute_day_total_minutes", + "target": "src_validation_vrptw_engine_timematrix", + "relation": "references", + "context": "parameter_type", + "confidence": "EXTRACTED", + "source_file": "src/validation/vrptw_engine.py", + "source_location": "L216", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_vrptw_engine", + "target": "src_validation_vrptw_engine_solve_vrptw_ortools", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/validation/vrptw_engine.py", + "source_location": "L244", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_vrptw_engine_solve_vrptw_ortools", + "target": "src_data_models_vrptwplace", + "relation": "references", + "context": "generic_arg", + "confidence": "EXTRACTED", + "source_file": "src/validation/vrptw_engine.py", + "source_location": "L244", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_vrptw_engine_solve_vrptw_ortools", + "target": "src_validation_vrptw_engine_timematrix", + "relation": "references", + "context": "parameter_type", + "confidence": "EXTRACTED", + "source_file": "src/validation/vrptw_engine.py", + "source_location": "L244", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_vrptw_engine", + "target": "src_validation_vrptw_engine_check_depot_constraints", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/validation/vrptw_engine.py", + "source_location": "L317", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_vrptw_engine_check_depot_constraints", + "target": "src_data_models_vrptwday", + "relation": "references", + "context": "generic_arg", + "confidence": "EXTRACTED", + "source_file": "src/validation/vrptw_engine.py", + "source_location": "L317", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_vrptw_engine_check_depot_constraints", + "target": "src_data_models_deepdiveitem", + "relation": "references", + "context": "generic_arg", + "confidence": "EXTRACTED", + "source_file": "src/validation/vrptw_engine.py", + "source_location": "L317", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_vrptw_engine", + "target": "src_validation_vrptw_engine_vrptwengine", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/validation/vrptw_engine.py", + "source_location": "L378", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_vrptw_engine_vrptwengine", + "target": "src_validation_vrptw_engine_vrptwengine_init", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/validation/vrptw_engine.py", + "source_location": "L385", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_vrptw_engine_vrptwengine_init", + "target": "src_validation_vrptw_engine_timematrix", + "relation": "references", + "context": "parameter_type", + "confidence": "EXTRACTED", + "source_file": "src/validation/vrptw_engine.py", + "source_location": "L385", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_vrptw_engine_vrptwengine", + "target": "src_validation_vrptw_engine_vrptwengine_validate", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/validation/vrptw_engine.py", + "source_location": "L396", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_vrptw_engine_vrptwengine_validate", + "target": "src_data_models_vrptwrequest", + "relation": "references", + "context": "parameter_type", + "confidence": "EXTRACTED", + "source_file": "src/validation/vrptw_engine.py", + "source_location": "L396", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_vrptw_engine_vrptwengine_validate", + "target": "src_data_models_vrptwresult", + "relation": "references", + "context": "return_type", + "confidence": "EXTRACTED", + "source_file": "src/validation/vrptw_engine.py", + "source_location": "L396", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_vrptw_engine_vrptwengine", + "target": "src_validation_vrptw_engine_vrptwengine_compute_risk_score", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/validation/vrptw_engine.py", + "source_location": "L494", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_vrptw_engine_vrptwengine_compute_risk_score", + "target": "src_data_models_deepdiveitem", + "relation": "references", + "context": "generic_arg", + "confidence": "EXTRACTED", + "source_file": "src/validation/vrptw_engine.py", + "source_location": "L494", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_vrptw_engine_vrptwengine_compute_risk_score", + "target": "src_data_models_vrptwday", + "relation": "references", + "context": "generic_arg", + "confidence": "EXTRACTED", + "source_file": "src/validation/vrptw_engine.py", + "source_location": "L494", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_vrptw_engine_haversinematrix_get_travel_time", + "target": "src_validation_vrptw_engine_haversine_m", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/validation/vrptw_engine.py", + "source_location": "L87", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_vrptw_engine_haversinematrix_get_travel_time", + "target": "src_validation_vrptw_engine_haversinematrix_effective_speed", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/validation/vrptw_engine.py", + "source_location": "L88", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_vrptw_engine_cachedroutematrix_init", + "target": "src_validation_vrptw_engine_haversinematrix", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/validation/vrptw_engine.py", + "source_location": "L109", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_vrptw_engine_simulate_day", + "target": "src_validation_vrptw_engine_cachedroutematrix_get_travel_time", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/validation/vrptw_engine.py", + "source_location": "L172", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_vrptw_engine_simulate_day", + "target": "src_data_models_deepdiveitem", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/validation/vrptw_engine.py", + "source_location": "L180", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_vrptw_engine_simulate_day", + "target": "src_validation_vrptw_engine_minutes_to_hhmm", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/validation/vrptw_engine.py", + "source_location": "L182", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_vrptw_engine_simulate_day", + "target": "src_validation_vrptw_engine_simresult", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/validation/vrptw_engine.py", + "source_location": "L209", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_vrptw_engine_compute_day_total_minutes", + "target": "src_validation_vrptw_engine_cachedroutematrix_get_travel_time", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/validation/vrptw_engine.py", + "source_location": "L231", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_vrptw_engine_solve_vrptw_ortools", + "target": "src_validation_vrptw_engine_simulate_day", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/validation/vrptw_engine.py", + "source_location": "L253", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_vrptw_engine_solve_vrptw_ortools", + "target": "src_validation_vrptw_engine_cachedroutematrix_get_travel_time", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/validation/vrptw_engine.py", + "source_location": "L257", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_vrptw_engine_check_depot_constraints", + "target": "src_data_models_deepdiveitem", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/validation/vrptw_engine.py", + "source_location": "L339", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_vrptw_engine_vrptwengine_init", + "target": "src_validation_vrptw_engine_haversinematrix", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/validation/vrptw_engine.py", + "source_location": "L390", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_vrptw_engine_vrptwengine_validate", + "target": "src_validation_vrptw_engine_check_depot_constraints", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/validation/vrptw_engine.py", + "source_location": "L403", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_vrptw_engine_vrptwengine_validate", + "target": "src_validation_vrptw_engine_simulate_day", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/validation/vrptw_engine.py", + "source_location": "L414", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_vrptw_engine_vrptwengine_validate", + "target": "src_validation_vrptw_engine_compute_day_total_minutes", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/validation/vrptw_engine.py", + "source_location": "L419", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_vrptw_engine_vrptwengine_validate", + "target": "src_data_models_deepdiveitem", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/validation/vrptw_engine.py", + "source_location": "L422", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_vrptw_engine_vrptwengine_validate", + "target": "src_validation_vrptw_engine_solve_vrptw_ortools", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/validation/vrptw_engine.py", + "source_location": "L437", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_vrptw_engine_vrptwengine_validate", + "target": "src_validation_vrptw_engine_vrptwengine_compute_risk_score", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/validation/vrptw_engine.py", + "source_location": "L472", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_vrptw_engine_vrptwengine_validate", + "target": "src_data_models_vrptwresult", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/validation/vrptw_engine.py", + "source_location": "L483", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_vrptw_engine_vrptwengine_compute_risk_score", + "target": "src_validation_vrptw_engine_compute_day_total_minutes", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/validation/vrptw_engine.py", + "source_location": "L518", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_vrptw_engine_rationale_1", + "target": "src_validation_vrptw_engine", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/validation/vrptw_engine.py", + "source_location": "L1", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_vrptw_engine_rationale_56", + "target": "src_validation_vrptw_engine_timematrix", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/validation/vrptw_engine.py", + "source_location": "L56", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_vrptw_engine_rationale_60", + "target": "src_validation_vrptw_engine_timematrix_get_travel_time", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/validation/vrptw_engine.py", + "source_location": "L60", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_vrptw_engine_rationale_64", + "target": "src_validation_vrptw_engine_haversinematrix", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/validation/vrptw_engine.py", + "source_location": "L64", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_vrptw_engine_rationale_92", + "target": "src_validation_vrptw_engine_cachedroutematrix", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/validation/vrptw_engine.py", + "source_location": "L92", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_vrptw_engine_rationale_145", + "target": "src_validation_vrptw_engine_simresult", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/validation/vrptw_engine.py", + "source_location": "L145", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_vrptw_engine_rationale_161", + "target": "src_validation_vrptw_engine_simulate_day", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/validation/vrptw_engine.py", + "source_location": "L161", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_vrptw_engine_rationale_221", + "target": "src_validation_vrptw_engine_compute_day_total_minutes", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/validation/vrptw_engine.py", + "source_location": "L221", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_vrptw_engine_rationale_249", + "target": "src_validation_vrptw_engine_solve_vrptw_ortools", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/validation/vrptw_engine.py", + "source_location": "L249", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_vrptw_engine_rationale_320", + "target": "src_validation_vrptw_engine_check_depot_constraints", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/validation/vrptw_engine.py", + "source_location": "L320", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_vrptw_engine_rationale_379", + "target": "src_validation_vrptw_engine_vrptwengine", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/validation/vrptw_engine.py", + "source_location": "L379", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_warning", + "target": "src_data_models", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/validation/warning.py", + "source_location": "L4", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_warning", + "target": "src_data_party_config", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/validation/warning.py", + "source_location": "L5", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_warning", + "target": "src_utils_geo", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/validation/warning.py", + "source_location": "L6", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_warning", + "target": "src_validation_warning_cosine_distance", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/validation/warning.py", + "source_location": "L28", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_warning", + "target": "src_validation_warning_warningdetector", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/validation/warning.py", + "source_location": "L39", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_warning_warningdetector", + "target": "src_validation_warning_warningdetector_detect", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/validation/warning.py", + "source_location": "L51", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_warning_warningdetector_detect", + "target": "src_data_models_itineraryplan", + "relation": "references", + "context": "parameter_type", + "confidence": "EXTRACTED", + "source_file": "src/validation/warning.py", + "source_location": "L51", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_warning_warningdetector_detect", + "target": "src_data_models_poi", + "relation": "references", + "context": "generic_arg", + "confidence": "EXTRACTED", + "source_file": "src/validation/warning.py", + "source_location": "L51", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_warning_warningdetector_detect", + "target": "src_data_models_warning", + "relation": "references", + "context": "generic_arg", + "confidence": "EXTRACTED", + "source_file": "src/validation/warning.py", + "source_location": "L51", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_warning_warningdetector", + "target": "src_validation_warning_warningdetector_check_dense_schedule", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/validation/warning.py", + "source_location": "L73", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_warning_warningdetector_check_dense_schedule", + "target": "src_data_models_itineraryplan", + "relation": "references", + "context": "parameter_type", + "confidence": "EXTRACTED", + "source_file": "src/validation/warning.py", + "source_location": "L73", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_warning_warningdetector_check_dense_schedule", + "target": "src_data_models_poi", + "relation": "references", + "context": "generic_arg", + "confidence": "EXTRACTED", + "source_file": "src/validation/warning.py", + "source_location": "L73", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_warning_warningdetector_check_dense_schedule", + "target": "src_data_models_warning", + "relation": "references", + "context": "generic_arg", + "confidence": "EXTRACTED", + "source_file": "src/validation/warning.py", + "source_location": "L73", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_warning_warningdetector", + "target": "src_validation_warning_warningdetector_check_inefficient_route", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/validation/warning.py", + "source_location": "L100", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_warning_warningdetector_check_inefficient_route", + "target": "src_data_models_poi", + "relation": "references", + "context": "generic_arg", + "confidence": "EXTRACTED", + "source_file": "src/validation/warning.py", + "source_location": "L100", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_warning_warningdetector_check_inefficient_route", + "target": "src_data_models_warning", + "relation": "references", + "context": "generic_arg", + "confidence": "EXTRACTED", + "source_file": "src/validation/warning.py", + "source_location": "L100", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_warning_warningdetector", + "target": "src_validation_warning_warningdetector_check_physical_strain", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/validation/warning.py", + "source_location": "L124", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_warning_warningdetector_check_physical_strain", + "target": "src_data_models_itineraryplan", + "relation": "references", + "context": "parameter_type", + "confidence": "EXTRACTED", + "source_file": "src/validation/warning.py", + "source_location": "L124", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_warning_warningdetector_check_physical_strain", + "target": "src_data_models_poi", + "relation": "references", + "context": "generic_arg", + "confidence": "EXTRACTED", + "source_file": "src/validation/warning.py", + "source_location": "L124", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_warning_warningdetector_check_physical_strain", + "target": "src_data_models_warning", + "relation": "references", + "context": "generic_arg", + "confidence": "EXTRACTED", + "source_file": "src/validation/warning.py", + "source_location": "L124", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_warning_warningdetector", + "target": "src_validation_warning_warningdetector_check_purpose_mismatch", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/validation/warning.py", + "source_location": "L145", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_warning_warningdetector_check_purpose_mismatch", + "target": "src_data_models_itineraryplan", + "relation": "references", + "context": "parameter_type", + "confidence": "EXTRACTED", + "source_file": "src/validation/warning.py", + "source_location": "L145", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_warning_warningdetector_check_purpose_mismatch", + "target": "src_data_models_poi", + "relation": "references", + "context": "generic_arg", + "confidence": "EXTRACTED", + "source_file": "src/validation/warning.py", + "source_location": "L145", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_warning_warningdetector_check_purpose_mismatch", + "target": "src_data_models_warning", + "relation": "references", + "context": "generic_arg", + "confidence": "EXTRACTED", + "source_file": "src/validation/warning.py", + "source_location": "L145", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_warning_warningdetector", + "target": "src_validation_warning_warningdetector_check_cumulative_fatigue", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/validation/warning.py", + "source_location": "L176", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_warning_warningdetector_check_cumulative_fatigue", + "target": "src_data_models_itineraryplan", + "relation": "references", + "context": "parameter_type", + "confidence": "EXTRACTED", + "source_file": "src/validation/warning.py", + "source_location": "L176", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_warning_warningdetector_check_cumulative_fatigue", + "target": "src_data_models_poi", + "relation": "references", + "context": "generic_arg", + "confidence": "EXTRACTED", + "source_file": "src/validation/warning.py", + "source_location": "L176", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_warning_warningdetector_check_cumulative_fatigue", + "target": "src_data_models_warning", + "relation": "references", + "context": "generic_arg", + "confidence": "EXTRACTED", + "source_file": "src/validation/warning.py", + "source_location": "L176", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_warning_warningdetector", + "target": "src_validation_warning_warningdetector_check_area_revisit", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/validation/warning.py", + "source_location": "L240", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_warning_warningdetector_check_area_revisit", + "target": "src_data_models_poi", + "relation": "references", + "context": "generic_arg", + "confidence": "EXTRACTED", + "source_file": "src/validation/warning.py", + "source_location": "L240", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_warning_warningdetector_check_area_revisit", + "target": "src_data_models_warning", + "relation": "references", + "context": "generic_arg", + "confidence": "EXTRACTED", + "source_file": "src/validation/warning.py", + "source_location": "L240", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_warning_warningdetector_detect", + "target": "src_validation_warning_warningdetector_check_dense_schedule", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/validation/warning.py", + "source_location": "L61", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_warning_warningdetector_detect", + "target": "src_validation_warning_warningdetector_check_inefficient_route", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/validation/warning.py", + "source_location": "L62", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_warning_warningdetector_detect", + "target": "src_validation_warning_warningdetector_check_physical_strain", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/validation/warning.py", + "source_location": "L63", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_warning_warningdetector_detect", + "target": "src_validation_warning_warningdetector_check_purpose_mismatch", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/validation/warning.py", + "source_location": "L64", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_warning_warningdetector_detect", + "target": "src_validation_warning_warningdetector_check_area_revisit", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/validation/warning.py", + "source_location": "L65", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_warning_warningdetector_check_dense_schedule", + "target": "src_data_models_warning", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/validation/warning.py", + "source_location": "L91", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_warning_warningdetector_check_inefficient_route", + "target": "src_data_models_warning", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/validation/warning.py", + "source_location": "L115", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_warning_warningdetector_check_physical_strain", + "target": "src_data_models_warning", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/validation/warning.py", + "source_location": "L136", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_warning_warningdetector_check_purpose_mismatch", + "target": "src_validation_warning_cosine_distance", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/validation/warning.py", + "source_location": "L163", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_warning_warningdetector_check_purpose_mismatch", + "target": "src_data_models_warning", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/validation/warning.py", + "source_location": "L167", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_warning_warningdetector_check_cumulative_fatigue", + "target": "src_data_models_warning", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/validation/warning.py", + "source_location": "L211", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_warning_warningdetector_check_area_revisit", + "target": "src_data_models_warning", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/validation/warning.py", + "source_location": "L257", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_warning_rationale_1", + "target": "src_validation_warning", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/validation/warning.py", + "source_location": "L1", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_warning_rationale_40", + "target": "src_validation_warning_warningdetector", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/validation/warning.py", + "source_location": "L40", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_warning_rationale_58", + "target": "src_validation_warning_warningdetector_detect", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/validation/warning.py", + "source_location": "L58", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_warning_rationale_182", + "target": "src_validation_warning_warningdetector_check_cumulative_fatigue", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/validation/warning.py", + "source_location": "L182", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_conftest", + "target": "pytest", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/conftest.py", + "source_location": "L7", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_conftest_clean_anthropic_api_key", + "target": "tests_conftest_py_fixture", + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "tests/conftest.py", + "source_location": "L10", + "weight": 1.0, + "context": "decorator", + "_origin": "ast" + }, + { + "source": "tests_conftest", + "target": "tests_conftest_clean_anthropic_api_key", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/conftest.py", + "source_location": "L11", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_conftest_rationale_1", + "target": "tests_conftest", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/conftest.py", + "source_location": "L1", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_alternatives", + "target": "pytest", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_alternatives.py", + "source_location": "L4", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_alternatives", + "target": "src_data_models", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_alternatives.py", + "source_location": "L6", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_alternatives", + "target": "src_validation_alternatives", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_alternatives.py", + "source_location": "L7", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_alternatives", + "target": "tests_test_alternatives_poi", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_alternatives.py", + "source_location": "L10", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_alternatives", + "target": "tests_test_alternatives_hardfail", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_alternatives.py", + "source_location": "L29", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_alternatives", + "target": "tests_test_alternatives_testfindalternatives", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_alternatives.py", + "source_location": "L39", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_alternatives_testfindalternatives", + "target": "tests_test_alternatives_testfindalternatives_test_returns_nearby_same_category", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_alternatives.py", + "source_location": "L40", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_alternatives_testfindalternatives", + "target": "tests_test_alternatives_testfindalternatives_test_excludes_failed_poi_itself", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_alternatives.py", + "source_location": "L50", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_alternatives_testfindalternatives", + "target": "tests_test_alternatives_testfindalternatives_test_respects_max_alternatives", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_alternatives.py", + "source_location": "L57", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_alternatives_testfindalternatives", + "target": "tests_test_alternatives_testfindalternatives_test_respects_search_radius", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_alternatives.py", + "source_location": "L64", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_alternatives_testfindalternatives", + "target": "tests_test_alternatives_testfindalternatives_test_distance_km_is_correct", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_alternatives.py", + "source_location": "L72", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_alternatives_testfindalternatives", + "target": "tests_test_alternatives_testfindalternatives_test_same_category_sorted_before_different", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_alternatives.py", + "source_location": "L80", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_alternatives", + "target": "tests_test_alternatives_testbuildalternativesmap", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_alternatives.py", + "source_location": "L91", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_alternatives_testbuildalternativesmap", + "target": "tests_test_alternatives_testbuildalternativesmap_test_maps_failed_poi_to_alternatives", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_alternatives.py", + "source_location": "L92", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_alternatives_testbuildalternativesmap", + "target": "tests_test_alternatives_testbuildalternativesmap_test_default_no_substitution", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_alternatives.py", + "source_location": "L102", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_alternatives_testbuildalternativesmap", + "target": "tests_test_alternatives_testbuildalternativesmap_test_skips_none_poi_name", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_alternatives.py", + "source_location": "L110", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_alternatives_testbuildalternativesmap", + "target": "tests_test_alternatives_testbuildalternativesmap_test_no_duplicate_keys", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_alternatives.py", + "source_location": "L116", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_alternatives_testbuildalternativesmap", + "target": "tests_test_alternatives_testbuildalternativesmap_test_excludes_plan_pois_from_alternatives", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_alternatives.py", + "source_location": "L123", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_alternatives_testfindalternatives_test_returns_nearby_same_category", + "target": "tests_test_alternatives_poi", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_alternatives.py", + "source_location": "L42", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_alternatives_testfindalternatives_test_excludes_failed_poi_itself", + "target": "tests_test_alternatives_poi", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_alternatives.py", + "source_location": "L51", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_alternatives_testfindalternatives_test_respects_max_alternatives", + "target": "tests_test_alternatives_poi", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_alternatives.py", + "source_location": "L58", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_alternatives_testfindalternatives_test_respects_search_radius", + "target": "tests_test_alternatives_poi", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_alternatives.py", + "source_location": "L65", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_alternatives_testfindalternatives_test_distance_km_is_correct", + "target": "tests_test_alternatives_poi", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_alternatives.py", + "source_location": "L73", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_alternatives_testfindalternatives_test_same_category_sorted_before_different", + "target": "tests_test_alternatives_poi", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_alternatives.py", + "source_location": "L82", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_alternatives_testbuildalternativesmap_test_maps_failed_poi_to_alternatives", + "target": "tests_test_alternatives_poi", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_alternatives.py", + "source_location": "L93", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_alternatives_testbuildalternativesmap_test_maps_failed_poi_to_alternatives", + "target": "tests_test_alternatives_hardfail", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_alternatives.py", + "source_location": "L96", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_alternatives_testbuildalternativesmap_test_default_no_substitution", + "target": "tests_test_alternatives_poi", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_alternatives.py", + "source_location": "L103", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_alternatives_testbuildalternativesmap_test_default_no_substitution", + "target": "tests_test_alternatives_hardfail", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_alternatives.py", + "source_location": "L106", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_alternatives_testbuildalternativesmap_test_skips_none_poi_name", + "target": "tests_test_alternatives_hardfail", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_alternatives.py", + "source_location": "L112", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_alternatives_testbuildalternativesmap_test_no_duplicate_keys", + "target": "tests_test_alternatives_poi", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_alternatives.py", + "source_location": "L117", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_alternatives_testbuildalternativesmap_test_no_duplicate_keys", + "target": "tests_test_alternatives_hardfail", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_alternatives.py", + "source_location": "L119", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_alternatives_testbuildalternativesmap_test_excludes_plan_pois_from_alternatives", + "target": "tests_test_alternatives_poi", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_alternatives.py", + "source_location": "L124", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_alternatives_testbuildalternativesmap_test_excludes_plan_pois_from_alternatives", + "target": "tests_test_alternatives_hardfail", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_alternatives.py", + "source_location": "L126", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_alternatives_rationale_1", + "target": "tests_test_alternatives", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/test_alternatives.py", + "source_location": "L1", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_bonus_engine", + "target": "json", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_bonus_engine.py", + "source_location": "L4", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_bonus_engine", + "target": "tempfile", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_bonus_engine.py", + "source_location": "L5", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_bonus_engine", + "target": "pathlib", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_bonus_engine.py", + "source_location": "L6", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_bonus_engine", + "target": "pytest", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_bonus_engine.py", + "source_location": "L8", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_bonus_engine", + "target": "src_data_models", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_bonus_engine.py", + "source_location": "L10", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_bonus_engine", + "target": "src_scoring_bonus_engine", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_bonus_engine.py", + "source_location": "L11", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_bonus_engine", + "target": "tests_test_bonus_engine_make_poi", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_bonus_engine.py", + "source_location": "L22", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_bonus_engine_make_poi", + "target": "src_data_models_poi", + "relation": "references", + "context": "return_type", + "confidence": "EXTRACTED", + "source_file": "tests/test_bonus_engine.py", + "source_location": "L22", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_bonus_engine", + "target": "tests_test_bonus_engine_make_engine", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_bonus_engine.py", + "source_location": "L34", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_bonus_engine_make_engine", + "target": "src_scoring_bonus_engine_bonusengine", + "relation": "references", + "context": "return_type", + "confidence": "EXTRACTED", + "source_file": "tests/test_bonus_engine.py", + "source_location": "L34", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_bonus_engine", + "target": "tests_test_bonus_engine_testwellnessbonus", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_bonus_engine.py", + "source_location": "L47", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_bonus_engine_testwellnessbonus", + "target": "tests_test_bonus_engine_testwellnessbonus_test_no_wellness_data_gives_zero", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_bonus_engine.py", + "source_location": "L48", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_bonus_engine_testwellnessbonus", + "target": "tests_test_bonus_engine_testwellnessbonus_test_matching_poi_gives_bonus", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_bonus_engine.py", + "source_location": "L54", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_bonus_engine_testwellnessbonus", + "target": "tests_test_bonus_engine_testwellnessbonus_test_two_matching_pois_give_double_bonus", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_bonus_engine.py", + "source_location": "L60", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_bonus_engine_testwellnessbonus", + "target": "tests_test_bonus_engine_testwellnessbonus_test_wellness_bonus_capped", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_bonus_engine.py", + "source_location": "L69", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_bonus_engine_testwellnessbonus", + "target": "tests_test_bonus_engine_testwellnessbonus_test_non_matching_poi_no_bonus", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_bonus_engine.py", + "source_location": "L77", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_bonus_engine_testwellnessbonus", + "target": "tests_test_bonus_engine_testwellnessbonus_test_wellness_applies_to_all_party_types", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_bonus_engine.py", + "source_location": "L83", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_bonus_engine", + "target": "tests_test_bonus_engine_testaccessibilitybonus", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_bonus_engine.py", + "source_location": "L95", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_bonus_engine_testaccessibilitybonus", + "target": "tests_test_bonus_engine_testaccessibilitybonus_test_accessible_party_gets_bonus", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_bonus_engine.py", + "source_location": "L96", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_bonus_engine_testaccessibilitybonus", + "target": "tests_test_bonus_engine_testaccessibilitybonus_test_non_accessible_party_no_bonus", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_bonus_engine.py", + "source_location": "L103", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_bonus_engine_testaccessibilitybonus", + "target": "tests_test_bonus_engine_testaccessibilitybonus_test_accessibility_bonus_capped", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_bonus_engine.py", + "source_location": "L110", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_bonus_engine", + "target": "tests_test_bonus_engine_testpetfriendlybonus", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_bonus_engine.py", + "source_location": "L122", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_bonus_engine_testpetfriendlybonus", + "target": "tests_test_bonus_engine_testpetfriendlybonus_test_disabled_gives_zero_even_if_matched", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_bonus_engine.py", + "source_location": "L123", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_bonus_engine_testpetfriendlybonus", + "target": "tests_test_bonus_engine_testpetfriendlybonus_test_enabled_and_flagged_gives_bonus", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_bonus_engine.py", + "source_location": "L129", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_bonus_engine_testpetfriendlybonus", + "target": "tests_test_bonus_engine_testpetfriendlybonus_test_enabled_but_not_flagged_no_bonus_no_penalty", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_bonus_engine.py", + "source_location": "L135", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_bonus_engine_testpetfriendlybonus", + "target": "tests_test_bonus_engine_testpetfriendlybonus_test_pet_friendly_bonus_capped", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_bonus_engine.py", + "source_location": "L142", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_bonus_engine_testpetfriendlybonus", + "target": "tests_test_bonus_engine_testpetfriendlybonus_test_pet_friendly_matched_names_populated", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_bonus_engine.py", + "source_location": "L148", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_bonus_engine", + "target": "tests_test_bonus_engine_testtotalbonuscap", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_bonus_engine.py", + "source_location": "L159", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_bonus_engine_testtotalbonuscap", + "target": "tests_test_bonus_engine_testtotalbonuscap_test_combined_bonus_capped_at_cap", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_bonus_engine.py", + "source_location": "L160", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_bonus_engine_testtotalbonuscap", + "target": "tests_test_bonus_engine_testtotalbonuscap_test_total_is_sum_when_under_cap", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_bonus_engine.py", + "source_location": "L167", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_bonus_engine", + "target": "tests_test_bonus_engine_testfromdataset", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_bonus_engine.py", + "source_location": "L187", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_bonus_engine_testfromdataset", + "target": "tests_test_bonus_engine_testfromdataset_test_missing_files_give_empty_engine", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_bonus_engine.py", + "source_location": "L188", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_bonus_engine_testfromdataset", + "target": "tests_test_bonus_engine_testfromdataset_test_loads_from_json_files", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_bonus_engine.py", + "source_location": "L197", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_bonus_engine_testfromdataset", + "target": "tests_test_bonus_engine_testfromdataset_test_zero_coords_skipped", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_bonus_engine.py", + "source_location": "L211", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_bonus_engine", + "target": "tests_test_bonus_engine_testbonusresultfields", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_bonus_engine.py", + "source_location": "L227", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_bonus_engine_testbonusresultfields", + "target": "tests_test_bonus_engine_testbonusresultfields_test_matched_names_populated", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_bonus_engine.py", + "source_location": "L228", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_bonus_engine_testbonusresultfields", + "target": "tests_test_bonus_engine_testbonusresultfields_test_no_match_empty_lists", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_bonus_engine.py", + "source_location": "L234", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_bonus_engine_make_poi", + "target": "src_data_models_poi", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_bonus_engine.py", + "source_location": "L25", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_bonus_engine_make_engine", + "target": "src_scoring_bonus_engine_bonusengine", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_bonus_engine.py", + "source_location": "L40", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_bonus_engine_testwellnessbonus_test_no_wellness_data_gives_zero", + "target": "tests_test_bonus_engine_make_engine", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_bonus_engine.py", + "source_location": "L49", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_bonus_engine_testwellnessbonus_test_no_wellness_data_gives_zero", + "target": "tests_test_bonus_engine_make_poi", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_bonus_engine.py", + "source_location": "L50", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_bonus_engine_testwellnessbonus_test_matching_poi_gives_bonus", + "target": "tests_test_bonus_engine_make_engine", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_bonus_engine.py", + "source_location": "L55", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_bonus_engine_testwellnessbonus_test_matching_poi_gives_bonus", + "target": "tests_test_bonus_engine_make_poi", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_bonus_engine.py", + "source_location": "L56", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_bonus_engine_testwellnessbonus_test_two_matching_pois_give_double_bonus", + "target": "tests_test_bonus_engine_make_engine", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_bonus_engine.py", + "source_location": "L61", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_bonus_engine_testwellnessbonus_test_two_matching_pois_give_double_bonus", + "target": "tests_test_bonus_engine_make_poi", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_bonus_engine.py", + "source_location": "L63", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_bonus_engine_testwellnessbonus_test_wellness_bonus_capped", + "target": "tests_test_bonus_engine_make_engine", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_bonus_engine.py", + "source_location": "L72", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_bonus_engine_testwellnessbonus_test_wellness_bonus_capped", + "target": "tests_test_bonus_engine_make_poi", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_bonus_engine.py", + "source_location": "L73", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_bonus_engine_testwellnessbonus_test_non_matching_poi_no_bonus", + "target": "tests_test_bonus_engine_make_engine", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_bonus_engine.py", + "source_location": "L78", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_bonus_engine_testwellnessbonus_test_non_matching_poi_no_bonus", + "target": "tests_test_bonus_engine_make_poi", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_bonus_engine.py", + "source_location": "L79", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_bonus_engine_testwellnessbonus_test_wellness_applies_to_all_party_types", + "target": "tests_test_bonus_engine_make_engine", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_bonus_engine.py", + "source_location": "L84", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_bonus_engine_testwellnessbonus_test_wellness_applies_to_all_party_types", + "target": "tests_test_bonus_engine_make_poi", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_bonus_engine.py", + "source_location": "L85", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_bonus_engine_testaccessibilitybonus_test_accessible_party_gets_bonus", + "target": "tests_test_bonus_engine_make_engine", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_bonus_engine.py", + "source_location": "L97", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_bonus_engine_testaccessibilitybonus_test_accessible_party_gets_bonus", + "target": "tests_test_bonus_engine_make_poi", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_bonus_engine.py", + "source_location": "L98", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_bonus_engine_testaccessibilitybonus_test_non_accessible_party_no_bonus", + "target": "tests_test_bonus_engine_make_engine", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_bonus_engine.py", + "source_location": "L104", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_bonus_engine_testaccessibilitybonus_test_non_accessible_party_no_bonus", + "target": "tests_test_bonus_engine_make_poi", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_bonus_engine.py", + "source_location": "L105", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_bonus_engine_testaccessibilitybonus_test_accessibility_bonus_capped", + "target": "tests_test_bonus_engine_make_engine", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_bonus_engine.py", + "source_location": "L112", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_bonus_engine_testaccessibilitybonus_test_accessibility_bonus_capped", + "target": "tests_test_bonus_engine_make_poi", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_bonus_engine.py", + "source_location": "L113", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_bonus_engine_testpetfriendlybonus_test_disabled_gives_zero_even_if_matched", + "target": "tests_test_bonus_engine_make_engine", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_bonus_engine.py", + "source_location": "L124", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_bonus_engine_testpetfriendlybonus_test_disabled_gives_zero_even_if_matched", + "target": "tests_test_bonus_engine_make_poi", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_bonus_engine.py", + "source_location": "L125", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_bonus_engine_testpetfriendlybonus_test_enabled_and_flagged_gives_bonus", + "target": "tests_test_bonus_engine_make_engine", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_bonus_engine.py", + "source_location": "L130", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_bonus_engine_testpetfriendlybonus_test_enabled_and_flagged_gives_bonus", + "target": "tests_test_bonus_engine_make_poi", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_bonus_engine.py", + "source_location": "L131", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_bonus_engine_testpetfriendlybonus_test_enabled_but_not_flagged_no_bonus_no_penalty", + "target": "tests_test_bonus_engine_make_engine", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_bonus_engine.py", + "source_location": "L136", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_bonus_engine_testpetfriendlybonus_test_enabled_but_not_flagged_no_bonus_no_penalty", + "target": "tests_test_bonus_engine_make_poi", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_bonus_engine.py", + "source_location": "L137", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_bonus_engine_testpetfriendlybonus_test_pet_friendly_bonus_capped", + "target": "tests_test_bonus_engine_make_poi", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_bonus_engine.py", + "source_location": "L143", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_bonus_engine_testpetfriendlybonus_test_pet_friendly_bonus_capped", + "target": "tests_test_bonus_engine_make_engine", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_bonus_engine.py", + "source_location": "L144", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_bonus_engine_testpetfriendlybonus_test_pet_friendly_matched_names_populated", + "target": "tests_test_bonus_engine_make_engine", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_bonus_engine.py", + "source_location": "L149", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_bonus_engine_testpetfriendlybonus_test_pet_friendly_matched_names_populated", + "target": "tests_test_bonus_engine_make_poi", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_bonus_engine.py", + "source_location": "L150", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_bonus_engine_testtotalbonuscap_test_combined_bonus_capped_at_cap", + "target": "tests_test_bonus_engine_make_engine", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_bonus_engine.py", + "source_location": "L162", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_bonus_engine_testtotalbonuscap_test_combined_bonus_capped_at_cap", + "target": "tests_test_bonus_engine_make_poi", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_bonus_engine.py", + "source_location": "L163", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_bonus_engine_testtotalbonuscap_test_total_is_sum_when_under_cap", + "target": "tests_test_bonus_engine_make_engine", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_bonus_engine.py", + "source_location": "L168", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_bonus_engine_testtotalbonuscap_test_total_is_sum_when_under_cap", + "target": "tests_test_bonus_engine_make_poi", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_bonus_engine.py", + "source_location": "L173", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_bonus_engine_testfromdataset_test_missing_files_give_empty_engine", + "target": "tests_test_bonus_engine_make_poi", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_bonus_engine.py", + "source_location": "L193", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_bonus_engine_testfromdataset_test_loads_from_json_files", + "target": "tests_test_bonus_engine_make_poi", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_bonus_engine.py", + "source_location": "L206", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_bonus_engine_testfromdataset_test_zero_coords_skipped", + "target": "tests_test_bonus_engine_make_poi", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_bonus_engine.py", + "source_location": "L218", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_bonus_engine_testbonusresultfields_test_matched_names_populated", + "target": "tests_test_bonus_engine_make_engine", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_bonus_engine.py", + "source_location": "L229", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_bonus_engine_testbonusresultfields_test_matched_names_populated", + "target": "tests_test_bonus_engine_make_poi", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_bonus_engine.py", + "source_location": "L230", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_bonus_engine_testbonusresultfields_test_no_match_empty_lists", + "target": "tests_test_bonus_engine_make_engine", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_bonus_engine.py", + "source_location": "L235", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_bonus_engine_testbonusresultfields_test_no_match_empty_lists", + "target": "tests_test_bonus_engine_make_poi", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_bonus_engine.py", + "source_location": "L236", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_bonus_engine_rationale_1", + "target": "tests_test_bonus_engine", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/test_bonus_engine.py", + "source_location": "L1", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_cluster_dispersion", + "target": "pytest", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_cluster_dispersion.py", + "source_location": "L4", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_cluster_dispersion", + "target": "src_data_models", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_cluster_dispersion.py", + "source_location": "L6", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_cluster_dispersion", + "target": "src_scoring_cluster_dispersion", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_cluster_dispersion.py", + "source_location": "L7", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_cluster_dispersion", + "target": "tests_test_cluster_dispersion_make_place", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_cluster_dispersion.py", + "source_location": "L17", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_cluster_dispersion", + "target": "tests_test_cluster_dispersion_test_compact_day_no_penalty", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_cluster_dispersion.py", + "source_location": "L24", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_cluster_dispersion", + "target": "tests_test_cluster_dispersion_test_lightning_pattern_high_penalty", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_cluster_dispersion.py", + "source_location": "L38", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_cluster_dispersion", + "target": "tests_test_cluster_dispersion_test_per_day_independence", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_cluster_dispersion.py", + "source_location": "L53", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_cluster_dispersion_test_geo_cluster_backtrack_gyeongju", + "target": "skipif", + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "tests/test_cluster_dispersion.py", + "source_location": "L68", + "weight": 1.0, + "context": "decorator", + "_origin": "ast" + }, + { + "source": "tests_test_cluster_dispersion", + "target": "tests_test_cluster_dispersion_test_geo_cluster_backtrack_gyeongju", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_cluster_dispersion.py", + "source_location": "L69", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_cluster_dispersion_test_geo_cluster_no_false_positive_sequential", + "target": "skipif", + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "tests/test_cluster_dispersion.py", + "source_location": "L89", + "weight": 1.0, + "context": "decorator", + "_origin": "ast" + }, + { + "source": "tests_test_cluster_dispersion", + "target": "tests_test_cluster_dispersion_test_geo_cluster_no_false_positive_sequential", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_cluster_dispersion.py", + "source_location": "L90", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_cluster_dispersion_test_geo_cluster_no_double_penalty_when_m3_fires", + "target": "skipif", + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "tests/test_cluster_dispersion.py", + "source_location": "L102", + "weight": 1.0, + "context": "decorator", + "_origin": "ast" + }, + { + "source": "tests_test_cluster_dispersion", + "target": "tests_test_cluster_dispersion_test_geo_cluster_no_double_penalty_when_m3_fires", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_cluster_dispersion.py", + "source_location": "L103", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_cluster_dispersion", + "target": "tests_test_cluster_dispersion_test_sigungu_switches_only", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_cluster_dispersion.py", + "source_location": "L125", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_cluster_dispersion_test_compact_day_no_penalty", + "target": "tests_test_cluster_dispersion_make_place", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_cluster_dispersion.py", + "source_location": "L27", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_cluster_dispersion_test_lightning_pattern_high_penalty", + "target": "tests_test_cluster_dispersion_make_place", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_cluster_dispersion.py", + "source_location": "L41", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_cluster_dispersion_test_per_day_independence", + "target": "tests_test_cluster_dispersion_make_place", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_cluster_dispersion.py", + "source_location": "L56", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_cluster_dispersion_test_geo_cluster_backtrack_gyeongju", + "target": "tests_test_cluster_dispersion_make_place", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_cluster_dispersion.py", + "source_location": "L72", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_cluster_dispersion_test_geo_cluster_no_false_positive_sequential", + "target": "tests_test_cluster_dispersion_make_place", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_cluster_dispersion.py", + "source_location": "L93", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_cluster_dispersion_test_geo_cluster_no_double_penalty_when_m3_fires", + "target": "tests_test_cluster_dispersion_make_place", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_cluster_dispersion.py", + "source_location": "L111", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_cluster_dispersion_test_sigungu_switches_only", + "target": "tests_test_cluster_dispersion_make_place", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_cluster_dispersion.py", + "source_location": "L128", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_cluster_dispersion_rationale_1", + "target": "tests_test_cluster_dispersion", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/test_cluster_dispersion.py", + "source_location": "L1", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_cluster_dispersion_rationale_25", + "target": "tests_test_cluster_dispersion_test_compact_day_no_penalty", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/test_cluster_dispersion.py", + "source_location": "L25", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_cluster_dispersion_rationale_39", + "target": "tests_test_cluster_dispersion_test_lightning_pattern_high_penalty", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/test_cluster_dispersion.py", + "source_location": "L39", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_cluster_dispersion_rationale_54", + "target": "tests_test_cluster_dispersion_test_per_day_independence", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/test_cluster_dispersion.py", + "source_location": "L54", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_cluster_dispersion_rationale_70", + "target": "tests_test_cluster_dispersion_test_geo_cluster_backtrack_gyeongju", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/test_cluster_dispersion.py", + "source_location": "L70", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_cluster_dispersion_rationale_91", + "target": "tests_test_cluster_dispersion_test_geo_cluster_no_false_positive_sequential", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/test_cluster_dispersion.py", + "source_location": "L91", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_cluster_dispersion_rationale_104", + "target": "tests_test_cluster_dispersion_test_geo_cluster_no_double_penalty_when_m3_fires", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/test_cluster_dispersion.py", + "source_location": "L104", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_cluster_dispersion_rationale_126", + "target": "tests_test_cluster_dispersion_test_sigungu_switches_only", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/test_cluster_dispersion.py", + "source_location": "L126", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_congestion_engine", + "target": "pathlib", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_congestion_engine.py", + "source_location": "L4", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_congestion_engine", + "target": "unittest_mock", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_congestion_engine.py", + "source_location": "L5", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_congestion_engine", + "target": "pandas", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_congestion_engine.py", + "source_location": "L7", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_congestion_engine", + "target": "pytest", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_congestion_engine.py", + "source_location": "L8", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_congestion_engine", + "target": "src_scoring_congestion_engine", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_congestion_engine.py", + "source_location": "L10", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_congestion_engine_engine", + "target": "tests_test_congestion_engine_py_fixture", + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "tests/test_congestion_engine.py", + "source_location": "L47", + "weight": 1.0, + "context": "decorator", + "_origin": "ast" + }, + { + "source": "tests_test_congestion_engine", + "target": "tests_test_congestion_engine_engine", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_congestion_engine.py", + "source_location": "L48", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_congestion_engine_test_score_to_level", + "target": "parametrize", + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "tests/test_congestion_engine.py", + "source_location": "L58", + "weight": 1.0, + "context": "decorator", + "_origin": "ast" + }, + { + "source": "tests_test_congestion_engine", + "target": "tests_test_congestion_engine_test_score_to_level", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_congestion_engine.py", + "source_location": "L71", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_congestion_engine", + "target": "tests_test_congestion_engine_test_exact_match", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_congestion_engine.py", + "source_location": "L79", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_congestion_engine", + "target": "tests_test_congestion_engine_test_exact_match_low_season", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_congestion_engine.py", + "source_location": "L87", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_congestion_engine", + "target": "tests_test_congestion_engine_test_partial_match_substring", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_congestion_engine.py", + "source_location": "L98", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_congestion_engine", + "target": "tests_test_congestion_engine_test_partial_match_superstring", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_congestion_engine.py", + "source_location": "L104", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_congestion_engine", + "target": "tests_test_congestion_engine_test_global_fallback", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_congestion_engine.py", + "source_location": "L114", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_congestion_engine", + "target": "tests_test_congestion_engine_test_category_fallback", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_congestion_engine.py", + "source_location": "L120", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_congestion_engine", + "target": "tests_test_congestion_engine_test_invalid_month_raises", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_congestion_engine.py", + "source_location": "L130", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_congestion_engine", + "target": "tests_test_congestion_engine_test_result_is_dataclass", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_congestion_engine.py", + "source_location": "L137", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_congestion_engine", + "target": "tests_test_congestion_engine_test_is_crowded_true", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_congestion_engine.py", + "source_location": "L147", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_congestion_engine", + "target": "tests_test_congestion_engine_test_is_crowded_false", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_congestion_engine.py", + "source_location": "L151", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_congestion_engine", + "target": "tests_test_congestion_engine_test_score_itinerary", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_congestion_engine.py", + "source_location": "L155", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_congestion_engine", + "target": "tests_test_congestion_engine_test_missing_csv_raises", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_congestion_engine.py", + "source_location": "L165", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_congestion_engine_rationale_1", + "target": "tests_test_congestion_engine", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/test_congestion_engine.py", + "source_location": "L1", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_dwell_db", + "target": "pytest", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_dwell_db.py", + "source_location": "L4", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_dwell_db", + "target": "src_data_dwell_db", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_dwell_db.py", + "source_location": "L6", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_dwell_db", + "target": "tests_test_dwell_db_testmanualoverride", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_dwell_db.py", + "source_location": "L16", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_dwell_db_testmanualoverride", + "target": "tests_test_dwell_db_testmanualoverride_test_\uacbd\ubcf5\uad81_returns_manual_source", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_dwell_db.py", + "source_location": "L17", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_dwell_db_testmanualoverride", + "target": "tests_test_dwell_db_testmanualoverride_test_normalization_handles_spaces", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_dwell_db.py", + "source_location": "L23", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_dwell_db_testmanualoverride", + "target": "tests_test_dwell_db_testmanualoverride_test_n_seoul_tower_alias", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_dwell_db.py", + "source_location": "L28", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_dwell_db", + "target": "tests_test_dwell_db_testlclssystm3", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_dwell_db.py", + "source_location": "L35", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_dwell_db_testlclssystm3", + "target": "tests_test_dwell_db_testlclssystm3_test_museum_code", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_dwell_db.py", + "source_location": "L36", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_dwell_db", + "target": "tests_test_dwell_db_testlclssystm1fallback", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_dwell_db.py", + "source_location": "L43", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_dwell_db_testlclssystm1fallback", + "target": "tests_test_dwell_db_testlclssystm1fallback_test_lcls3_unknown_falls_back_to_lcls1", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_dwell_db.py", + "source_location": "L44", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_dwell_db", + "target": "tests_test_dwell_db_testcontenttypefallback", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_dwell_db.py", + "source_location": "L51", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_dwell_db_testcontenttypefallback", + "target": "tests_test_dwell_db_testcontenttypefallback_test_content_type_used_when_no_lcls", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_dwell_db.py", + "source_location": "L52", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_dwell_db", + "target": "tests_test_dwell_db_testdefaultfallback", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_dwell_db.py", + "source_location": "L58", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_dwell_db_testdefaultfallback", + "target": "tests_test_dwell_db_testdefaultfallback_test_no_info_returns_default", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_dwell_db.py", + "source_location": "L59", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_dwell_db", + "target": "tests_test_dwell_db_testistooshort", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_dwell_db.py", + "source_location": "L65", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_dwell_db_testistooshort", + "target": "tests_test_dwell_db_testistooshort_test_below_50pct_is_too_short", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_dwell_db.py", + "source_location": "L66", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_dwell_db_rationale_1", + "target": "tests_test_dwell_db", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/test_dwell_db.py", + "source_location": "L1", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_estimated_hardfail", + "target": "src_data_models", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_estimated_hardfail.py", + "source_location": "L4", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_estimated_hardfail", + "target": "src_validation_hard_fail", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_estimated_hardfail.py", + "source_location": "L5", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_estimated_hardfail", + "target": "tests_test_estimated_hardfail_poi", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_estimated_hardfail.py", + "source_location": "L8", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_estimated_hardfail", + "target": "tests_test_estimated_hardfail_plan", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_estimated_hardfail.py", + "source_location": "L22", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_estimated_hardfail_plan", + "target": "src_data_models_itineraryplan", + "relation": "references", + "context": "return_type", + "confidence": "EXTRACTED", + "source_file": "tests/test_estimated_hardfail.py", + "source_location": "L22", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_estimated_hardfail", + "target": "tests_test_estimated_hardfail_test_estimated_hours_conflict_flagged_estimated", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_estimated_hardfail.py", + "source_location": "L31", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_estimated_hardfail", + "target": "tests_test_estimated_hardfail_test_verified_hours_conflict_not_estimated_and_message_unchanged", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_estimated_hardfail.py", + "source_location": "L41", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_estimated_hardfail_plan", + "target": "src_data_models_itineraryplan", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_estimated_hardfail.py", + "source_location": "L23", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_estimated_hardfail_test_estimated_hours_conflict_flagged_estimated", + "target": "tests_test_estimated_hardfail_poi", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_estimated_hardfail.py", + "source_location": "L33", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_estimated_hardfail_test_estimated_hours_conflict_flagged_estimated", + "target": "tests_test_estimated_hardfail_plan", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_estimated_hardfail.py", + "source_location": "L34", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_estimated_hardfail_test_verified_hours_conflict_not_estimated_and_message_unchanged", + "target": "tests_test_estimated_hardfail_poi", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_estimated_hardfail.py", + "source_location": "L43", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_estimated_hardfail_test_verified_hours_conflict_not_estimated_and_message_unchanged", + "target": "tests_test_estimated_hardfail_plan", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_estimated_hardfail.py", + "source_location": "L44", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_estimated_hardfail_rationale_1", + "target": "tests_test_estimated_hardfail", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/test_estimated_hardfail.py", + "source_location": "L1", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine", + "target": "json", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L4", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine", + "target": "unittest_mock", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L5", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine", + "target": "pytest", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L7", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine", + "target": "src_data_models", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L9", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine", + "target": "src_explain_explain_engine", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L20", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine", + "target": "tests_test_explain_engine_make_plan", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L34", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_make_plan", + "target": "src_data_models_itineraryplan", + "relation": "references", + "context": "return_type", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L34", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine", + "target": "tests_test_explain_engine_make_scores", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L43", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_make_scores", + "target": "src_data_models_scores", + "relation": "references", + "context": "return_type", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L43", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine", + "target": "tests_test_explain_engine_make_hard_fail", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L47", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_make_hard_fail", + "target": "src_data_models_hardfail", + "relation": "references", + "context": "return_type", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L47", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine", + "target": "tests_test_explain_engine_make_warning", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L57", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_make_warning", + "target": "src_data_models_warning", + "relation": "references", + "context": "return_type", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L57", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine", + "target": "tests_test_explain_engine_make_graph_stub", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L65", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine", + "target": "tests_test_explain_engine_make_disabled_graph_stub", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L83", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine", + "target": "tests_test_explain_engine_testcachekey", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L93", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testcachekey", + "target": "tests_test_explain_engine_testcachekey_test_same_inputs_same_key", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L94", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testcachekey", + "target": "tests_test_explain_engine_testcachekey_test_different_score_different_key", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L100", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testcachekey", + "target": "tests_test_explain_engine_testcachekey_test_empty_inputs", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L104", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testcachekey", + "target": "tests_test_explain_engine_testcachekey_test_different_day_index_different_key", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L108", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine", + "target": "tests_test_explain_engine_testgraphcontext", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L120", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testgraphcontext", + "target": "tests_test_explain_engine_testgraphcontext_test_none_graph_returns_none", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L121", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testgraphcontext", + "target": "tests_test_explain_engine_testgraphcontext_test_disabled_graph_returns_none", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L124", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testgraphcontext", + "target": "tests_test_explain_engine_testgraphcontext_test_empty_poi_name_returns_none", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L127", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testgraphcontext", + "target": "tests_test_explain_engine_testgraphcontext_test_no_match_returns_none", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L130", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testgraphcontext", + "target": "tests_test_explain_engine_testgraphcontext_test_match_includes_region_and_category", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L135", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testgraphcontext", + "target": "tests_test_explain_engine_testgraphcontext_test_match_includes_nearby_alternatives", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L140", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testgraphcontext", + "target": "tests_test_explain_engine_testgraphcontext_test_no_nearby_omits_key", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L145", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine", + "target": "tests_test_explain_engine_testbuilduserprompt", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L154", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testbuilduserprompt", + "target": "tests_test_explain_engine_testbuilduserprompt_test_contains_plan_info", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L155", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testbuilduserprompt", + "target": "tests_test_explain_engine_testbuilduserprompt_test_hard_fail_in_prompt", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L160", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testbuilduserprompt", + "target": "tests_test_explain_engine_testbuilduserprompt_test_warning_in_prompt", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L165", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testbuilduserprompt", + "target": "tests_test_explain_engine_testbuilduserprompt_test_penalty_in_prompt", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L169", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testbuilduserprompt", + "target": "tests_test_explain_engine_testbuilduserprompt_test_scores_included_when_provided", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L173", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testbuilduserprompt", + "target": "tests_test_explain_engine_testbuilduserprompt_test_overall_item_present", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L177", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testbuilduserprompt", + "target": "tests_test_explain_engine_testbuilduserprompt_test_graph_evidence_included_when_matched", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L182", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testbuilduserprompt", + "target": "tests_test_explain_engine_testbuilduserprompt_test_no_graph_omits_evidence_key", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L190", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testbuilduserprompt", + "target": "tests_test_explain_engine_testbuilduserprompt_test_day_index_included_for_hard_fail", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L194", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testbuilduserprompt", + "target": "tests_test_explain_engine_testbuilduserprompt_test_day_index_included_for_warning", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L200", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testbuilduserprompt", + "target": "tests_test_explain_engine_testbuilduserprompt_test_no_day_index_omits_day_field", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L209", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testbuilduserprompt", + "target": "tests_test_explain_engine_testbuilduserprompt_test_warning_graph_evidence_uses_first_poi_name", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L213", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine", + "target": "tests_test_explain_engine_testparsellmresponse", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L225", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testparsellmresponse", + "target": "tests_test_explain_engine_testparsellmresponse_test_parses_valid_json_array", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L226", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testparsellmresponse", + "target": "tests_test_explain_engine_testparsellmresponse_test_strips_code_block_wrapper", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L240", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testparsellmresponse", + "target": "tests_test_explain_engine_testparsellmresponse_test_multiple_items", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L246", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testparsellmresponse", + "target": "tests_test_explain_engine_testparsellmresponse_test_returns_explanation_items", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L254", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testparsellmresponse", + "target": "tests_test_explain_engine_testparsellmresponse_test_day_index_echoed_back", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L262", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testparsellmresponse", + "target": "tests_test_explain_engine_testparsellmresponse_test_missing_day_index_defaults_to_none", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L270", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine", + "target": "tests_test_explain_engine_testfallback", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L283", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testfallback", + "target": "tests_test_explain_engine_testfallback_test_hard_fail_becomes_critical", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L284", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testfallback", + "target": "tests_test_explain_engine_testfallback_test_warning_becomes_warning", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L289", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testfallback", + "target": "tests_test_explain_engine_testfallback_test_large_penalty_is_critical", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L294", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testfallback", + "target": "tests_test_explain_engine_testfallback_test_small_penalty_is_warning", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L299", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testfallback", + "target": "tests_test_explain_engine_testfallback_test_always_has_overall_item", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L304", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testfallback", + "target": "tests_test_explain_engine_testfallback_test_failed_overall_is_critical", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L314", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testfallback", + "target": "tests_test_explain_engine_testfallback_test_passed_overall_is_ok", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L319", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testfallback", + "target": "tests_test_explain_engine_testfallback_test_hard_fail_day_index_propagated_and_prefixed", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L324", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testfallback", + "target": "tests_test_explain_engine_testfallback_test_warning_day_index_propagated_and_prefixed", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L332", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testfallback", + "target": "tests_test_explain_engine_testfallback_test_no_day_index_no_prefix", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L340", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine", + "target": "tests_test_explain_engine_testexplainenginenollm", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L351", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testexplainenginenollm", + "target": "tests_test_explain_engine_testexplainenginenollm_setup_method", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L352", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testexplainenginenollm", + "target": "tests_test_explain_engine_testexplainenginenollm_test_is_available_false_without_key", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L356", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testexplainenginenollm", + "target": "tests_test_explain_engine_testexplainenginenollm_test_generate_returns_list_of_explanation_items", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L359", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testexplainenginenollm", + "target": "tests_test_explain_engine_testexplainenginenollm_test_no_issues_returns_ok_overall", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L372", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testexplainenginenollm", + "target": "tests_test_explain_engine_testexplainenginenollm_test_hard_fail_present_in_results", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L381", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testexplainenginenollm", + "target": "tests_test_explain_engine_testexplainenginenollm_test_warning_present_in_results", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L389", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testexplainenginenollm", + "target": "tests_test_explain_engine_testexplainenginenollm_test_penalty_present_in_results", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L397", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine", + "target": "tests_test_explain_engine_testexplainenginemockllm", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L410", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testexplainenginemockllm", + "target": "tests_test_explain_engine_testexplainenginemockllm_make_mock_client", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L411", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testexplainenginemockllm", + "target": "tests_test_explain_engine_testexplainenginemockllm_test_llm_response_used_when_available", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L421", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testexplainenginemockllm", + "target": "tests_test_explain_engine_testexplainenginemockllm_test_llm_failure_falls_back_gracefully", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L445", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testexplainenginemockllm", + "target": "tests_test_explain_engine_testexplainenginemockllm_test_cache_prevents_second_llm_call", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L456", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testexplainenginemockllm", + "target": "tests_test_explain_engine_testexplainenginemockllm_test_is_available_with_client", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L472", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testexplainenginemockllm", + "target": "tests_test_explain_engine_testexplainenginemockllm_test_graph_evidence_reaches_llm_prompt", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L477", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine", + "target": "tests_test_explain_engine_testexplainenginegraphdefault", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L496", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testexplainenginegraphdefault", + "target": "tests_test_explain_engine_testexplainenginegraphdefault_test_default_graph_disabled_without_env", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L497", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine", + "target": "tests_test_explain_engine_testbuildalternatives", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L507", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testbuildalternatives", + "target": "tests_test_explain_engine_testbuildalternatives_test_no_hard_fails_returns_empty", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L508", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testbuildalternatives", + "target": "tests_test_explain_engine_testbuildalternatives_test_disabled_graph_returns_empty", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L512", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testbuildalternatives", + "target": "tests_test_explain_engine_testbuildalternatives_test_hard_fail_without_poi_name_skipped", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L518", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testbuildalternatives", + "target": "tests_test_explain_engine_testbuildalternatives_test_match_returns_alternatives_keyed_by_poi_name", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L524", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testbuildalternatives", + "target": "tests_test_explain_engine_testbuildalternatives_test_no_nearby_omits_poi", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L532", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testbuildalternatives", + "target": "tests_test_explain_engine_testbuildalternatives_test_no_search_match_omits_poi", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L540", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testbuildalternatives", + "target": "tests_test_explain_engine_testbuildalternatives_test_duplicate_poi_name_only_looked_up_once", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L548", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_make_plan", + "target": "src_data_models_itineraryplan", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L35", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_make_scores", + "target": "src_data_models_scores", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L44", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_make_hard_fail", + "target": "src_data_models_hardfail", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L48", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_make_warning", + "target": "src_data_models_warning", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L58", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testcachekey_test_same_inputs_same_key", + "target": "tests_test_explain_engine_make_hard_fail", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L95", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testcachekey_test_same_inputs_same_key", + "target": "tests_test_explain_engine_make_warning", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L96", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testcachekey_test_different_score_different_key", + "target": "tests_test_explain_engine_make_hard_fail", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L101", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testcachekey_test_different_day_index_different_key", + "target": "tests_test_explain_engine_make_hard_fail", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L109", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testgraphcontext_test_disabled_graph_returns_none", + "target": "tests_test_explain_engine_make_disabled_graph_stub", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L125", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testgraphcontext_test_empty_poi_name_returns_none", + "target": "tests_test_explain_engine_make_graph_stub", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L128", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testgraphcontext_test_no_match_returns_none", + "target": "tests_test_explain_engine_make_graph_stub", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L131", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testgraphcontext_test_match_includes_region_and_category", + "target": "tests_test_explain_engine_make_graph_stub", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L136", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testgraphcontext_test_match_includes_nearby_alternatives", + "target": "tests_test_explain_engine_make_graph_stub", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L141", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testgraphcontext_test_no_nearby_omits_key", + "target": "tests_test_explain_engine_make_graph_stub", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L146", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testbuilduserprompt_test_contains_plan_info", + "target": "tests_test_explain_engine_make_plan", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L156", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testbuilduserprompt_test_hard_fail_in_prompt", + "target": "tests_test_explain_engine_make_hard_fail", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L161", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testbuilduserprompt_test_hard_fail_in_prompt", + "target": "tests_test_explain_engine_make_plan", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L161", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testbuilduserprompt_test_warning_in_prompt", + "target": "tests_test_explain_engine_make_warning", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L166", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testbuilduserprompt_test_warning_in_prompt", + "target": "tests_test_explain_engine_make_plan", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L166", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testbuilduserprompt_test_penalty_in_prompt", + "target": "tests_test_explain_engine_make_plan", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L170", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testbuilduserprompt_test_scores_included_when_provided", + "target": "tests_test_explain_engine_make_scores", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L174", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testbuilduserprompt_test_scores_included_when_provided", + "target": "tests_test_explain_engine_make_plan", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L174", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testbuilduserprompt_test_overall_item_present", + "target": "tests_test_explain_engine_make_plan", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L178", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testbuilduserprompt_test_graph_evidence_included_when_matched", + "target": "tests_test_explain_engine_make_hard_fail", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L184", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testbuilduserprompt_test_graph_evidence_included_when_matched", + "target": "tests_test_explain_engine_make_plan", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L184", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testbuilduserprompt_test_graph_evidence_included_when_matched", + "target": "tests_test_explain_engine_make_graph_stub", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L185", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testbuilduserprompt_test_no_graph_omits_evidence_key", + "target": "tests_test_explain_engine_make_hard_fail", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L191", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testbuilduserprompt_test_no_graph_omits_evidence_key", + "target": "tests_test_explain_engine_make_plan", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L191", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testbuilduserprompt_test_day_index_included_for_hard_fail", + "target": "tests_test_explain_engine_make_hard_fail", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L195", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testbuilduserprompt_test_day_index_included_for_hard_fail", + "target": "tests_test_explain_engine_make_plan", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L197", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testbuilduserprompt_test_day_index_included_for_warning", + "target": "tests_test_explain_engine_make_warning", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L201", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testbuilduserprompt_test_day_index_included_for_warning", + "target": "tests_test_explain_engine_make_plan", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L204", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testbuilduserprompt_test_no_day_index_omits_day_field", + "target": "tests_test_explain_engine_make_hard_fail", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L210", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testbuilduserprompt_test_no_day_index_omits_day_field", + "target": "tests_test_explain_engine_make_warning", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L210", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testbuilduserprompt_test_no_day_index_omits_day_field", + "target": "tests_test_explain_engine_make_plan", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L210", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testbuilduserprompt_test_warning_graph_evidence_uses_first_poi_name", + "target": "tests_test_explain_engine_make_warning", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L214", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testbuilduserprompt_test_warning_graph_evidence_uses_first_poi_name", + "target": "tests_test_explain_engine_make_plan", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L216", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testbuilduserprompt_test_warning_graph_evidence_uses_first_poi_name", + "target": "tests_test_explain_engine_make_graph_stub", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L216", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testfallback_test_hard_fail_becomes_critical", + "target": "tests_test_explain_engine_make_hard_fail", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L285", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testfallback_test_warning_becomes_warning", + "target": "tests_test_explain_engine_make_warning", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L290", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testfallback_test_always_has_overall_item", + "target": "tests_test_explain_engine_make_hard_fail", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L306", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testfallback_test_always_has_overall_item", + "target": "tests_test_explain_engine_make_warning", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L307", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testfallback_test_failed_overall_is_critical", + "target": "tests_test_explain_engine_make_hard_fail", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L315", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testfallback_test_hard_fail_day_index_propagated_and_prefixed", + "target": "tests_test_explain_engine_make_hard_fail", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L325", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testfallback_test_warning_day_index_propagated_and_prefixed", + "target": "tests_test_explain_engine_make_warning", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L333", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testfallback_test_no_day_index_no_prefix", + "target": "tests_test_explain_engine_make_hard_fail", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L341", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testexplainenginenollm_test_generate_returns_list_of_explanation_items", + "target": "tests_test_explain_engine_make_hard_fail", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L361", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testexplainenginenollm_test_generate_returns_list_of_explanation_items", + "target": "tests_test_explain_engine_make_warning", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L362", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testexplainenginenollm_test_generate_returns_list_of_explanation_items", + "target": "tests_test_explain_engine_make_scores", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L365", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testexplainenginenollm_test_generate_returns_list_of_explanation_items", + "target": "tests_test_explain_engine_make_plan", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L366", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testexplainenginenollm_test_no_issues_returns_ok_overall", + "target": "tests_test_explain_engine_make_scores", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L375", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testexplainenginenollm_test_no_issues_returns_ok_overall", + "target": "tests_test_explain_engine_make_plan", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L375", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testexplainenginenollm_test_hard_fail_present_in_results", + "target": "tests_test_explain_engine_make_hard_fail", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L383", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testexplainenginenollm_test_hard_fail_present_in_results", + "target": "tests_test_explain_engine_make_plan", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L384", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testexplainenginenollm_test_warning_present_in_results", + "target": "tests_test_explain_engine_make_warning", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L391", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testexplainenginenollm_test_warning_present_in_results", + "target": "tests_test_explain_engine_make_plan", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L392", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testexplainenginenollm_test_penalty_present_in_results", + "target": "tests_test_explain_engine_make_plan", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L400", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testexplainenginemockllm_test_llm_response_used_when_available", + "target": "tests_test_explain_engine_testexplainenginemockllm_make_mock_client", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L437", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testexplainenginemockllm_test_llm_response_used_when_available", + "target": "tests_test_explain_engine_make_hard_fail", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L439", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testexplainenginemockllm_test_llm_response_used_when_available", + "target": "tests_test_explain_engine_make_plan", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L440", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testexplainenginemockllm_test_llm_failure_falls_back_gracefully", + "target": "tests_test_explain_engine_make_hard_fail", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L450", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testexplainenginemockllm_test_llm_failure_falls_back_gracefully", + "target": "tests_test_explain_engine_make_plan", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L451", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testexplainenginemockllm_test_cache_prevents_second_llm_call", + "target": "tests_test_explain_engine_testexplainenginemockllm_make_mock_client", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L464", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testexplainenginemockllm_test_cache_prevents_second_llm_call", + "target": "tests_test_explain_engine_make_hard_fail", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L467", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testexplainenginemockllm_test_cache_prevents_second_llm_call", + "target": "tests_test_explain_engine_make_plan", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L468", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testexplainenginemockllm_test_graph_evidence_reaches_llm_prompt", + "target": "tests_test_explain_engine_testexplainenginemockllm_make_mock_client", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L485", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testexplainenginemockllm_test_graph_evidence_reaches_llm_prompt", + "target": "tests_test_explain_engine_make_graph_stub", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L486", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testexplainenginemockllm_test_graph_evidence_reaches_llm_prompt", + "target": "tests_test_explain_engine_make_hard_fail", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L488", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testexplainenginemockllm_test_graph_evidence_reaches_llm_prompt", + "target": "tests_test_explain_engine_make_plan", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L489", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testbuildalternatives_test_no_hard_fails_returns_empty", + "target": "tests_test_explain_engine_make_graph_stub", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L509", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testbuildalternatives_test_disabled_graph_returns_empty", + "target": "tests_test_explain_engine_make_disabled_graph_stub", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L513", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testbuildalternatives_test_disabled_graph_returns_empty", + "target": "tests_test_explain_engine_make_hard_fail", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L514", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testbuildalternatives_test_hard_fail_without_poi_name_skipped", + "target": "tests_test_explain_engine_make_graph_stub", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L519", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testbuildalternatives_test_hard_fail_without_poi_name_skipped", + "target": "tests_test_explain_engine_make_hard_fail", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L520", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testbuildalternatives_test_match_returns_alternatives_keyed_by_poi_name", + "target": "tests_test_explain_engine_make_graph_stub", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L525", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testbuildalternatives_test_match_returns_alternatives_keyed_by_poi_name", + "target": "tests_test_explain_engine_make_hard_fail", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L526", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testbuildalternatives_test_no_nearby_omits_poi", + "target": "tests_test_explain_engine_make_graph_stub", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L534", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testbuildalternatives_test_no_nearby_omits_poi", + "target": "tests_test_explain_engine_make_hard_fail", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L536", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testbuildalternatives_test_no_search_match_omits_poi", + "target": "tests_test_explain_engine_make_graph_stub", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L541", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testbuildalternatives_test_no_search_match_omits_poi", + "target": "tests_test_explain_engine_make_hard_fail", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L544", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testbuildalternatives_test_duplicate_poi_name_only_looked_up_once", + "target": "tests_test_explain_engine_make_graph_stub", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L549", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testbuildalternatives_test_duplicate_poi_name_only_looked_up_once", + "target": "tests_test_explain_engine_make_hard_fail", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L551", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_rationale_1", + "target": "tests_test_explain_engine", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L1", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_rationale_66", + "target": "tests_test_explain_engine_make_graph_stub", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L66", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_geo", + "target": "pytest", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_geo.py", + "source_location": "L4", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_geo", + "target": "src_data_models", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_geo.py", + "source_location": "L6", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_geo", + "target": "src_utils_geo", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_geo.py", + "source_location": "L7", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_geo", + "target": "tests_test_geo_make_poi", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_geo.py", + "source_location": "L10", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_geo_make_poi", + "target": "src_data_models_poi", + "relation": "references", + "context": "return_type", + "confidence": "EXTRACTED", + "source_file": "tests/test_geo.py", + "source_location": "L10", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_geo", + "target": "tests_test_geo_testhaversinekm", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_geo.py", + "source_location": "L23", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_geo_testhaversinekm", + "target": "tests_test_geo_testhaversinekm_test_same_point_is_zero", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_geo.py", + "source_location": "L24", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_geo_testhaversinekm", + "target": "tests_test_geo_testhaversinekm_test_known_distance", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_geo.py", + "source_location": "L27", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_geo_testhaversinekm", + "target": "tests_test_geo_testhaversinekm_test_symmetric", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_geo.py", + "source_location": "L32", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_geo_testhaversinekm", + "target": "tests_test_geo_testhaversinekm_test_positive", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_geo.py", + "source_location": "L37", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_geo", + "target": "tests_test_geo_testbuilddistcache", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_geo.py", + "source_location": "L45", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_geo_testbuilddistcache", + "target": "tests_test_geo_testbuilddistcache_test_all_pairs_present", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_geo.py", + "source_location": "L46", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_geo_testbuilddistcache", + "target": "tests_test_geo_testbuilddistcache_test_no_self_pairs", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_geo.py", + "source_location": "L54", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_geo_testbuilddistcache", + "target": "tests_test_geo_testbuilddistcache_test_values_match_haversine", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_geo.py", + "source_location": "L60", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_geo_testbuilddistcache", + "target": "tests_test_geo_testbuilddistcache_test_single_poi_empty_cache", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_geo.py", + "source_location": "L70", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_geo_testbuilddistcache", + "target": "tests_test_geo_testbuilddistcache_test_empty_list_empty_cache", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_geo.py", + "source_location": "L75", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_geo", + "target": "tests_test_geo_testnnheuristickm", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_geo.py", + "source_location": "L83", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_geo_testnnheuristickm", + "target": "tests_test_geo_testnnheuristickm_test_single_poi_returns_zero", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_geo.py", + "source_location": "L84", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_geo_testnnheuristickm", + "target": "tests_test_geo_testnnheuristickm_test_two_pois_returns_distance", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_geo.py", + "source_location": "L88", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_geo_testnnheuristickm", + "target": "tests_test_geo_testnnheuristickm_test_nn_le_actual_for_suboptimal", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_geo.py", + "source_location": "L93", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_geo_testnnheuristickm", + "target": "tests_test_geo_testnnheuristickm_test_cache_gives_same_result", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_geo.py", + "source_location": "L109", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_geo_testnnheuristickm", + "target": "tests_test_geo_testnnheuristickm_test_collinear_optimal_order_matches_nn", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_geo.py", + "source_location": "L114", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_geo", + "target": "tests_test_geo_testgettravelmin", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_geo.py", + "source_location": "L128", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_geo_testgettravelmin", + "target": "tests_test_geo_testgettravelmin_test_uses_matrix_when_available", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_geo.py", + "source_location": "L129", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_geo_testgettravelmin", + "target": "tests_test_geo_testgettravelmin_test_haversine_fallback_when_no_matrix", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_geo.py", + "source_location": "L135", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_geo_testgettravelmin", + "target": "tests_test_geo_testgettravelmin_test_cache_fallback_when_no_matrix", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_geo.py", + "source_location": "L143", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_geo_testgettravelmin", + "target": "tests_test_geo_testgettravelmin_test_matrix_takes_priority_over_cache", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_geo.py", + "source_location": "L150", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_geo_make_poi", + "target": "src_data_models_poi", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_geo.py", + "source_location": "L11", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_geo_testbuilddistcache_test_all_pairs_present", + "target": "tests_test_geo_make_poi", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_geo.py", + "source_location": "L47", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_geo_testbuilddistcache_test_no_self_pairs", + "target": "tests_test_geo_make_poi", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_geo.py", + "source_location": "L55", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_geo_testbuilddistcache_test_values_match_haversine", + "target": "tests_test_geo_make_poi", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_geo.py", + "source_location": "L62", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_geo_testbuilddistcache_test_single_poi_empty_cache", + "target": "tests_test_geo_make_poi", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_geo.py", + "source_location": "L71", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_geo_testnnheuristickm_test_single_poi_returns_zero", + "target": "tests_test_geo_make_poi", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_geo.py", + "source_location": "L85", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_geo_testnnheuristickm_test_two_pois_returns_distance", + "target": "tests_test_geo_make_poi", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_geo.py", + "source_location": "L89", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_geo_testnnheuristickm_test_nn_le_actual_for_suboptimal", + "target": "tests_test_geo_make_poi", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_geo.py", + "source_location": "L96", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_geo_testnnheuristickm_test_cache_gives_same_result", + "target": "tests_test_geo_make_poi", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_geo.py", + "source_location": "L110", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_geo_testnnheuristickm_test_collinear_optimal_order_matches_nn", + "target": "tests_test_geo_make_poi", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_geo.py", + "source_location": "L116", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_geo_testgettravelmin_test_uses_matrix_when_available", + "target": "tests_test_geo_make_poi", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_geo.py", + "source_location": "L130", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_geo_testgettravelmin_test_haversine_fallback_when_no_matrix", + "target": "tests_test_geo_make_poi", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_geo.py", + "source_location": "L136", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_geo_testgettravelmin_test_cache_fallback_when_no_matrix", + "target": "tests_test_geo_make_poi", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_geo.py", + "source_location": "L144", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_geo_testgettravelmin_test_matrix_takes_priority_over_cache", + "target": "tests_test_geo_make_poi", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_geo.py", + "source_location": "L151", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_geo_rationale_1", + "target": "tests_test_geo", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/test_geo.py", + "source_location": "L1", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_graph_retriever", + "target": "unittest_mock", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_graph_retriever.py", + "source_location": "L4", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_graph_retriever", + "target": "neo4j_exceptions", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_graph_retriever.py", + "source_location": "L6", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_graph_retriever", + "target": "src_data_graph_retriever", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_graph_retriever.py", + "source_location": "L8", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_graph_retriever", + "target": "src_data_models", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_graph_retriever.py", + "source_location": "L9", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_graph_retriever", + "target": "tests_test_graph_retriever_test_disabled_without_uri_returns_empty", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_graph_retriever.py", + "source_location": "L12", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_graph_retriever", + "target": "tests_test_graph_retriever_test_search_places_parses_records", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_graph_retriever.py", + "source_location": "L19", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_graph_retriever", + "target": "tests_test_graph_retriever_test_search_places_empty_query_skips_call", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_graph_retriever.py", + "source_location": "L39", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_graph_retriever", + "target": "tests_test_graph_retriever_test_search_places_neo4j_error_returns_empty", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_graph_retriever.py", + "source_location": "L46", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_graph_retriever", + "target": "tests_test_graph_retriever_test_find_nearby_parses_and_converts_distance", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_graph_retriever.py", + "source_location": "L53", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_graph_retriever", + "target": "tests_test_graph_retriever_test_repeated_failures_skip_driver_call_during_cooldown", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_graph_retriever.py", + "source_location": "L68", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_graph_retriever", + "target": "tests_test_graph_retriever_test_close_closes_driver", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_graph_retriever.py", + "source_location": "L79", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_graph_retriever", + "target": "tests_test_graph_retriever_test_from_env_reads_variables", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_graph_retriever.py", + "source_location": "L86", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_graph_retriever_rationale_1", + "target": "tests_test_graph_retriever", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/test_graph_retriever.py", + "source_location": "L1", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_hard_fail", + "target": "pytest", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_hard_fail.py", + "source_location": "L4", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_hard_fail", + "target": "src_data_models", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_hard_fail.py", + "source_location": "L6", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_hard_fail", + "target": "src_validation_hard_fail", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_hard_fail.py", + "source_location": "L7", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_hard_fail", + "target": "tests_test_hard_fail_make_poi", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_hard_fail.py", + "source_location": "L13", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_hard_fail_make_poi", + "target": "src_data_models_poi", + "relation": "references", + "context": "return_type", + "confidence": "EXTRACTED", + "source_file": "tests/test_hard_fail.py", + "source_location": "L13", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_hard_fail", + "target": "tests_test_hard_fail_make_plan", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_hard_fail.py", + "source_location": "L30", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_hard_fail_make_plan", + "target": "src_data_models_itineraryplan", + "relation": "references", + "context": "return_type", + "confidence": "EXTRACTED", + "source_file": "tests/test_hard_fail.py", + "source_location": "L30", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_hard_fail", + "target": "tests_test_hard_fail_make_matrix", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_hard_fail.py", + "source_location": "L41", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_hard_fail_detector", + "target": "tests_test_hard_fail_py_fixture", + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "tests/test_hard_fail.py", + "source_location": "L57", + "weight": 1.0, + "context": "decorator", + "_origin": "ast" + }, + { + "source": "tests_test_hard_fail", + "target": "tests_test_hard_fail_detector", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_hard_fail.py", + "source_location": "L58", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_hard_fail_detector", + "target": "src_validation_hard_fail_hardfaildetector", + "relation": "references", + "context": "return_type", + "confidence": "EXTRACTED", + "source_file": "tests/test_hard_fail.py", + "source_location": "L58", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_hard_fail_open_poi", + "target": "tests_test_hard_fail_py_fixture", + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "tests/test_hard_fail.py", + "source_location": "L62", + "weight": 1.0, + "context": "decorator", + "_origin": "ast" + }, + { + "source": "tests_test_hard_fail", + "target": "tests_test_hard_fail_open_poi", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_hard_fail.py", + "source_location": "L63", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_hard_fail_open_poi", + "target": "src_data_models_poi", + "relation": "references", + "context": "return_type", + "confidence": "EXTRACTED", + "source_file": "tests/test_hard_fail.py", + "source_location": "L63", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_hard_fail", + "target": "tests_test_hard_fail_testhelpers", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_hard_fail.py", + "source_location": "L71", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_hard_fail_testhelpers", + "target": "tests_test_hard_fail_testhelpers_test_time_to_min", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_hard_fail.py", + "source_location": "L72", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_hard_fail_testhelpers", + "target": "tests_test_hard_fail_testhelpers_test_min_to_time", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_hard_fail.py", + "source_location": "L75", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_hard_fail_testhelpers", + "target": "tests_test_hard_fail_testhelpers_test_time_to_min_midnight", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_hard_fail.py", + "source_location": "L78", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_hard_fail_testhelpers", + "target": "tests_test_hard_fail_testhelpers_test_min_to_time_midnight", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_hard_fail.py", + "source_location": "L81", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_hard_fail_testhelpers", + "target": "tests_test_hard_fail_testhelpers_test_min_to_time_wraps_past_24h", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_hard_fail.py", + "source_location": "L84", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_hard_fail", + "target": "tests_test_hard_fail_testoperatinghours", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_hard_fail.py", + "source_location": "L92", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_hard_fail_testoperatinghours", + "target": "tests_test_hard_fail_testoperatinghours_test_no_fail_within_hours", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_hard_fail.py", + "source_location": "L93", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_hard_fail_testoperatinghours", + "target": "tests_test_hard_fail_testoperatinghours_test_fail_arrive_before_open", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_hard_fail.py", + "source_location": "L101", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_hard_fail_testoperatinghours", + "target": "tests_test_hard_fail_testoperatinghours_test_fail_arrive_after_close", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_hard_fail.py", + "source_location": "L112", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_hard_fail_testoperatinghours", + "target": "tests_test_hard_fail_testoperatinghours_test_no_fail_for_fallback_hours", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_hard_fail.py", + "source_location": "L121", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_hard_fail", + "target": "tests_test_hard_fail_testtraveltimeimpossible", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_hard_fail.py", + "source_location": "L135", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_hard_fail_testtraveltimeimpossible", + "target": "tests_test_hard_fail_testtraveltimeimpossible_test_travel_impossible", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_hard_fail.py", + "source_location": "L136", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_hard_fail_testtraveltimeimpossible", + "target": "tests_test_hard_fail_testtraveltimeimpossible_test_no_fail_sufficient_window", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_hard_fail.py", + "source_location": "L150", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_hard_fail", + "target": "tests_test_hard_fail_testscheduleinfeasible", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_hard_fail.py", + "source_location": "L165", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_hard_fail_testscheduleinfeasible", + "target": "tests_test_hard_fail_testscheduleinfeasible_test_schedule_exceeds_24h", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_hard_fail.py", + "source_location": "L166", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_hard_fail_testscheduleinfeasible", + "target": "tests_test_hard_fail_testscheduleinfeasible_test_schedule_within_24h", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_hard_fail.py", + "source_location": "L184", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_hard_fail", + "target": "tests_test_hard_fail_testnormalplan", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_hard_fail.py", + "source_location": "L201", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_hard_fail_testnormalplan", + "target": "tests_test_hard_fail_testnormalplan_test_normal_plan_no_fails", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_hard_fail.py", + "source_location": "L202", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_hard_fail", + "target": "tests_test_hard_fail_testdayindex", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_hard_fail.py", + "source_location": "L221", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_hard_fail_testdayindex", + "target": "tests_test_hard_fail_testdayindex_test_day_index_defaults_to_none", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_hard_fail.py", + "source_location": "L222", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_hard_fail_testdayindex", + "target": "tests_test_hard_fail_testdayindex_test_day_index_set_when_passed", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_hard_fail.py", + "source_location": "L229", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_hard_fail_make_poi", + "target": "src_data_models_poi", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_hard_fail.py", + "source_location": "L23", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_hard_fail_make_plan", + "target": "src_data_models_itineraryplan", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_hard_fail.py", + "source_location": "L32", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_hard_fail_detector", + "target": "src_validation_hard_fail_hardfaildetector", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_hard_fail.py", + "source_location": "L59", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_hard_fail_open_poi", + "target": "tests_test_hard_fail_make_poi", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_hard_fail.py", + "source_location": "L64", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_hard_fail_testoperatinghours_test_no_fail_within_hours", + "target": "tests_test_hard_fail_make_plan", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_hard_fail.py", + "source_location": "L96", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_hard_fail_testoperatinghours_test_fail_arrive_before_open", + "target": "tests_test_hard_fail_make_plan", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_hard_fail.py", + "source_location": "L104", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_hard_fail_testoperatinghours_test_fail_arrive_after_close", + "target": "tests_test_hard_fail_make_poi", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_hard_fail.py", + "source_location": "L114", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_hard_fail_testoperatinghours_test_fail_arrive_after_close", + "target": "tests_test_hard_fail_make_plan", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_hard_fail.py", + "source_location": "L116", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_hard_fail_testoperatinghours_test_no_fail_for_fallback_hours", + "target": "tests_test_hard_fail_make_poi", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_hard_fail.py", + "source_location": "L123", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_hard_fail_testoperatinghours_test_no_fail_for_fallback_hours", + "target": "tests_test_hard_fail_make_plan", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_hard_fail.py", + "source_location": "L125", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_hard_fail_testtraveltimeimpossible_test_travel_impossible", + "target": "tests_test_hard_fail_make_poi", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_hard_fail.py", + "source_location": "L139", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_hard_fail_testtraveltimeimpossible_test_travel_impossible", + "target": "tests_test_hard_fail_make_matrix", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_hard_fail.py", + "source_location": "L142", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_hard_fail_testtraveltimeimpossible_test_travel_impossible", + "target": "tests_test_hard_fail_make_plan", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_hard_fail.py", + "source_location": "L143", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_hard_fail_testtraveltimeimpossible_test_no_fail_sufficient_window", + "target": "tests_test_hard_fail_make_poi", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_hard_fail.py", + "source_location": "L151", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_hard_fail_testtraveltimeimpossible_test_no_fail_sufficient_window", + "target": "tests_test_hard_fail_make_matrix", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_hard_fail.py", + "source_location": "L154", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_hard_fail_testtraveltimeimpossible_test_no_fail_sufficient_window", + "target": "tests_test_hard_fail_make_plan", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_hard_fail.py", + "source_location": "L155", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_hard_fail_testscheduleinfeasible_test_schedule_exceeds_24h", + "target": "tests_test_hard_fail_make_poi", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_hard_fail.py", + "source_location": "L169", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_hard_fail_testscheduleinfeasible_test_schedule_exceeds_24h", + "target": "tests_test_hard_fail_make_matrix", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_hard_fail.py", + "source_location": "L175", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_hard_fail_testscheduleinfeasible_test_schedule_exceeds_24h", + "target": "tests_test_hard_fail_make_plan", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_hard_fail.py", + "source_location": "L178", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_hard_fail_testscheduleinfeasible_test_schedule_within_24h", + "target": "tests_test_hard_fail_make_poi", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_hard_fail.py", + "source_location": "L186", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_hard_fail_testscheduleinfeasible_test_schedule_within_24h", + "target": "tests_test_hard_fail_make_matrix", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_hard_fail.py", + "source_location": "L189", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_hard_fail_testscheduleinfeasible_test_schedule_within_24h", + "target": "tests_test_hard_fail_make_plan", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_hard_fail.py", + "source_location": "L190", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_hard_fail_testnormalplan_test_normal_plan_no_fails", + "target": "tests_test_hard_fail_make_poi", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_hard_fail.py", + "source_location": "L204", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_hard_fail_testnormalplan_test_normal_plan_no_fails", + "target": "tests_test_hard_fail_make_matrix", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_hard_fail.py", + "source_location": "L209", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_hard_fail_testnormalplan_test_normal_plan_no_fails", + "target": "tests_test_hard_fail_make_plan", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_hard_fail.py", + "source_location": "L212", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_hard_fail_testdayindex_test_day_index_defaults_to_none", + "target": "tests_test_hard_fail_make_poi", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_hard_fail.py", + "source_location": "L223", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_hard_fail_testdayindex_test_day_index_defaults_to_none", + "target": "tests_test_hard_fail_make_plan", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_hard_fail.py", + "source_location": "L224", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_hard_fail_testdayindex_test_day_index_set_when_passed", + "target": "tests_test_hard_fail_make_poi", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_hard_fail.py", + "source_location": "L230", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_hard_fail_testdayindex_test_day_index_set_when_passed", + "target": "tests_test_hard_fail_make_plan", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_hard_fail.py", + "source_location": "L231", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_hard_fail_rationale_1", + "target": "tests_test_hard_fail", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/test_hard_fail.py", + "source_location": "L1", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_kakao_local", + "target": "unittest_mock", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_kakao_local.py", + "source_location": "L4", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_kakao_local", + "target": "src_data_kakao_local", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_kakao_local.py", + "source_location": "L6", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_kakao_local", + "target": "src_data_models", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_kakao_local.py", + "source_location": "L7", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_kakao_local", + "target": "tests_test_kakao_local_ok_response", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_kakao_local.py", + "source_location": "L10", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_kakao_local", + "target": "tests_test_kakao_local_test_disabled_without_key_returns_none", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_kakao_local.py", + "source_location": "L29", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_kakao_local", + "target": "tests_test_kakao_local_test_search_parses_first_document", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_kakao_local.py", + "source_location": "L35", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_kakao_local", + "target": "tests_test_kakao_local_test_result_is_cached", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_kakao_local.py", + "source_location": "L46", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_kakao_local", + "target": "tests_test_kakao_local_test_empty_documents_returns_none", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_kakao_local.py", + "source_location": "L55", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_kakao_local", + "target": "tests_test_kakao_local_test_http_error_falls_back_to_none", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_kakao_local.py", + "source_location": "L64", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_kakao_local", + "target": "tests_test_kakao_local_multi_response", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_kakao_local.py", + "source_location": "L73", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_kakao_local", + "target": "tests_test_kakao_local_test_search_keyword_list_parses_all", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_kakao_local.py", + "source_location": "L87", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_kakao_local", + "target": "tests_test_kakao_local_test_search_keyword_list_disabled_returns_empty", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_kakao_local.py", + "source_location": "L96", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_kakao_local", + "target": "tests_test_kakao_local_address_response", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_kakao_local.py", + "source_location": "L101", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_kakao_local", + "target": "tests_test_kakao_local_test_geocode_address_parses_lat_lng", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_kakao_local.py", + "source_location": "L116", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_kakao_local", + "target": "tests_test_kakao_local_test_geocode_address_disabled_without_key_returns_none", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_kakao_local.py", + "source_location": "L124", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_kakao_local", + "target": "tests_test_kakao_local_test_geocode_address_is_cached", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_kakao_local.py", + "source_location": "L129", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_kakao_local", + "target": "tests_test_kakao_local_test_geocode_address_empty_documents_returns_none", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_kakao_local.py", + "source_location": "L138", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_kakao_local", + "target": "tests_test_kakao_local_test_geocode_address_http_error_falls_back_to_none", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_kakao_local.py", + "source_location": "L147", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_kakao_local_test_search_parses_first_document", + "target": "tests_test_kakao_local_ok_response", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_kakao_local.py", + "source_location": "L37", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_kakao_local_test_result_is_cached", + "target": "tests_test_kakao_local_ok_response", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_kakao_local.py", + "source_location": "L48", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_kakao_local_test_search_keyword_list_parses_all", + "target": "tests_test_kakao_local_multi_response", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_kakao_local.py", + "source_location": "L89", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_kakao_local_test_geocode_address_parses_lat_lng", + "target": "tests_test_kakao_local_address_response", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_kakao_local.py", + "source_location": "L118", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_kakao_local_test_geocode_address_is_cached", + "target": "tests_test_kakao_local_address_response", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_kakao_local.py", + "source_location": "L131", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_kakao_local_rationale_1", + "target": "tests_test_kakao_local", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/test_kakao_local.py", + "source_location": "L1", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_kakao_matrix", + "target": "json", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_kakao_matrix.py", + "source_location": "L4", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_kakao_matrix", + "target": "unittest_mock", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_kakao_matrix.py", + "source_location": "L5", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_kakao_matrix", + "target": "pytest", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_kakao_matrix.py", + "source_location": "L7", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_kakao_matrix", + "target": "src_data_models", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_kakao_matrix.py", + "source_location": "L9", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_kakao_matrix", + "target": "src_validation_kakao_matrix", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_kakao_matrix.py", + "source_location": "L10", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_kakao_matrix", + "target": "tests_test_kakao_matrix_place", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_kakao_matrix.py", + "source_location": "L13", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_kakao_matrix_place", + "target": "src_data_models_vrptwplace", + "relation": "references", + "context": "return_type", + "confidence": "EXTRACTED", + "source_file": "tests/test_kakao_matrix.py", + "source_location": "L13", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_kakao_matrix", + "target": "tests_test_kakao_matrix_ok_response", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_kakao_matrix.py", + "source_location": "L20", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_kakao_matrix", + "target": "tests_test_kakao_matrix_httpx_sync_client", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_kakao_matrix.py", + "source_location": "L33", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_kakao_matrix", + "target": "tests_test_kakao_matrix_testsamepoint", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_kakao_matrix.py", + "source_location": "L47", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_kakao_matrix_testsamepoint", + "target": "tests_test_kakao_matrix_testsamepoint_test_same_coords_returns_zero", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_kakao_matrix.py", + "source_location": "L48", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_kakao_matrix", + "target": "tests_test_kakao_matrix_testapicall", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_kakao_matrix.py", + "source_location": "L58", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_kakao_matrix_testapicall", + "target": "tests_test_kakao_matrix_testapicall_test_sync_call_populates_cache", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_kakao_matrix.py", + "source_location": "L59", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_kakao_matrix_testapicall", + "target": "tests_test_kakao_matrix_testapicall_test_get_travel_time_uses_cache_after_sync_call", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_kakao_matrix.py", + "source_location": "L71", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_kakao_matrix_testapicall", + "target": "tests_test_kakao_matrix_testapicall_test_get_travel_time_second_call_cache_hit", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_kakao_matrix.py", + "source_location": "L85", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_kakao_matrix_testapicall", + "target": "tests_test_kakao_matrix_testapicall_test_reverse_direction_also_cached", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_kakao_matrix.py", + "source_location": "L98", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_kakao_matrix", + "target": "tests_test_kakao_matrix_testquotaexhaustion", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_kakao_matrix.py", + "source_location": "L116", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_kakao_matrix_testquotaexhaustion", + "target": "tests_test_kakao_matrix_testquotaexhaustion_test_429_sets_quota_exhausted", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_kakao_matrix.py", + "source_location": "L117", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_kakao_matrix_testquotaexhaustion", + "target": "tests_test_kakao_matrix_testquotaexhaustion_test_get_travel_time_haversine_fallback_when_no_cache", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_kakao_matrix.py", + "source_location": "L132", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_kakao_matrix_testquotaexhaustion", + "target": "tests_test_kakao_matrix_testquotaexhaustion_test_after_quota_exhausted_get_travel_time_falls_back", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_kakao_matrix.py", + "source_location": "L141", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_kakao_matrix", + "target": "tests_test_kakao_matrix_testautherror", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_kakao_matrix.py", + "source_location": "L155", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_kakao_matrix_testautherror", + "target": "tests_test_kakao_matrix_testautherror_test_401_raises", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_kakao_matrix.py", + "source_location": "L156", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_kakao_matrix", + "target": "tests_test_kakao_matrix_testcachepersistence", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_kakao_matrix.py", + "source_location": "L174", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_kakao_matrix_testcachepersistence", + "target": "tests_test_kakao_matrix_testcachepersistence_test_save_and_load_cache", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_kakao_matrix.py", + "source_location": "L175", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_kakao_matrix", + "target": "tests_test_kakao_matrix_testfromenv", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_kakao_matrix.py", + "source_location": "L201", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_kakao_matrix_testfromenv", + "target": "tests_test_kakao_matrix_testfromenv_test_no_key_raises", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_kakao_matrix.py", + "source_location": "L202", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_kakao_matrix_testfromenv", + "target": "tests_test_kakao_matrix_testfromenv_test_uses_mobility_key_first", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_kakao_matrix.py", + "source_location": "L208", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_kakao_matrix_testfromenv", + "target": "tests_test_kakao_matrix_testfromenv_test_falls_back_to_rest_key", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_kakao_matrix.py", + "source_location": "L214", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_kakao_matrix", + "target": "tests_test_kakao_matrix_testasyncprefetch", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_kakao_matrix.py", + "source_location": "L225", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_kakao_matrix_testasyncprefetch", + "target": "tests_test_kakao_matrix_testasyncprefetch_test_aprefetch_populates_cache_and_hit_on_get", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_kakao_matrix.py", + "source_location": "L226", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_kakao_matrix_testasyncprefetch", + "target": "tests_test_kakao_matrix_testasyncprefetch_test_aprefetch_deduplicates_bidirectional", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_kakao_matrix.py", + "source_location": "L241", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_kakao_matrix_place", + "target": "src_data_models_vrptwplace", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_kakao_matrix.py", + "source_location": "L14", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_kakao_matrix_testsamepoint_test_same_coords_returns_zero", + "target": "tests_test_kakao_matrix_place", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_kakao_matrix.py", + "source_location": "L50", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_kakao_matrix_testapicall_test_sync_call_populates_cache", + "target": "tests_test_kakao_matrix_place", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_kakao_matrix.py", + "source_location": "L61", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_kakao_matrix_testapicall_test_sync_call_populates_cache", + "target": "tests_test_kakao_matrix_httpx_sync_client", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_kakao_matrix.py", + "source_location": "L65", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_kakao_matrix_testapicall_test_sync_call_populates_cache", + "target": "tests_test_kakao_matrix_ok_response", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_kakao_matrix.py", + "source_location": "L65", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_kakao_matrix_testapicall_test_get_travel_time_uses_cache_after_sync_call", + "target": "tests_test_kakao_matrix_place", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_kakao_matrix.py", + "source_location": "L73", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_kakao_matrix_testapicall_test_get_travel_time_uses_cache_after_sync_call", + "target": "tests_test_kakao_matrix_httpx_sync_client", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_kakao_matrix.py", + "source_location": "L77", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_kakao_matrix_testapicall_test_get_travel_time_uses_cache_after_sync_call", + "target": "tests_test_kakao_matrix_ok_response", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_kakao_matrix.py", + "source_location": "L77", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_kakao_matrix_testapicall_test_get_travel_time_second_call_cache_hit", + "target": "tests_test_kakao_matrix_place", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_kakao_matrix.py", + "source_location": "L87", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_kakao_matrix_testapicall_test_get_travel_time_second_call_cache_hit", + "target": "tests_test_kakao_matrix_httpx_sync_client", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_kakao_matrix.py", + "source_location": "L91", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_kakao_matrix_testapicall_test_get_travel_time_second_call_cache_hit", + "target": "tests_test_kakao_matrix_ok_response", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_kakao_matrix.py", + "source_location": "L91", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_kakao_matrix_testapicall_test_reverse_direction_also_cached", + "target": "tests_test_kakao_matrix_place", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_kakao_matrix.py", + "source_location": "L100", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_kakao_matrix_testapicall_test_reverse_direction_also_cached", + "target": "tests_test_kakao_matrix_httpx_sync_client", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_kakao_matrix.py", + "source_location": "L104", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_kakao_matrix_testapicall_test_reverse_direction_also_cached", + "target": "tests_test_kakao_matrix_ok_response", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_kakao_matrix.py", + "source_location": "L104", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_kakao_matrix_testquotaexhaustion_test_429_sets_quota_exhausted", + "target": "tests_test_kakao_matrix_place", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_kakao_matrix.py", + "source_location": "L119", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_kakao_matrix_testquotaexhaustion_test_429_sets_quota_exhausted", + "target": "tests_test_kakao_matrix_httpx_sync_client", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_kakao_matrix.py", + "source_location": "L126", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_kakao_matrix_testquotaexhaustion_test_get_travel_time_haversine_fallback_when_no_cache", + "target": "tests_test_kakao_matrix_place", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_kakao_matrix.py", + "source_location": "L134", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_kakao_matrix_testquotaexhaustion_test_after_quota_exhausted_get_travel_time_falls_back", + "target": "tests_test_kakao_matrix_place", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_kakao_matrix.py", + "source_location": "L144", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_kakao_matrix_testautherror_test_401_raises", + "target": "tests_test_kakao_matrix_place", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_kakao_matrix.py", + "source_location": "L161", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_kakao_matrix_testautherror_test_401_raises", + "target": "tests_test_kakao_matrix_httpx_sync_client", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_kakao_matrix.py", + "source_location": "L165", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_kakao_matrix_testcachepersistence_test_save_and_load_cache", + "target": "tests_test_kakao_matrix_place", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_kakao_matrix.py", + "source_location": "L179", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_kakao_matrix_testcachepersistence_test_save_and_load_cache", + "target": "tests_test_kakao_matrix_httpx_sync_client", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_kakao_matrix.py", + "source_location": "L183", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_kakao_matrix_testcachepersistence_test_save_and_load_cache", + "target": "tests_test_kakao_matrix_ok_response", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_kakao_matrix.py", + "source_location": "L183", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_kakao_matrix_testasyncprefetch_test_aprefetch_populates_cache_and_hit_on_get", + "target": "tests_test_kakao_matrix_place", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_kakao_matrix.py", + "source_location": "L231", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_kakao_matrix_testasyncprefetch_test_aprefetch_deduplicates_bidirectional", + "target": "tests_test_kakao_matrix_place", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_kakao_matrix.py", + "source_location": "L249", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_kakao_matrix_rationale_1", + "target": "tests_test_kakao_matrix", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/test_kakao_matrix.py", + "source_location": "L1", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_kakao_matrix_rationale_21", + "target": "tests_test_kakao_matrix_ok_response", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/test_kakao_matrix.py", + "source_location": "L21", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_kakao_matrix_rationale_34", + "target": "tests_test_kakao_matrix_httpx_sync_client", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/test_kakao_matrix.py", + "source_location": "L34", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_kakao_matrix_rationale_227", + "target": "tests_test_kakao_matrix_testasyncprefetch_test_aprefetch_populates_cache_and_hit_on_get", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/test_kakao_matrix.py", + "source_location": "L227", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_kakao_matrix_rationale_242", + "target": "tests_test_kakao_matrix_testasyncprefetch_test_aprefetch_deduplicates_bidirectional", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/test_kakao_matrix.py", + "source_location": "L242", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_party_config", + "target": "pytest", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_party_config.py", + "source_location": "L4", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_party_config", + "target": "src_data_party_config", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_party_config.py", + "source_location": "L6", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_party_config", + "target": "tests_test_party_config_testpartyprofiles", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_party_config.py", + "source_location": "L9", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_party_config_testpartyprofiles", + "target": "tests_test_party_config_testpartyprofiles_test_all_types_defined", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_party_config.py", + "source_location": "L10", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_party_config_testpartyprofiles", + "target": "tests_test_party_config_testpartyprofiles_test_friends_speed_factor_one", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_party_config.py", + "source_location": "L14", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_party_config_testpartyprofiles", + "target": "tests_test_party_config_testpartyprofiles_test_baby_speed_factor_below_one", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_party_config.py", + "source_location": "L17", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_party_config_testpartyprofiles", + "target": "tests_test_party_config_testpartyprofiles_test_elderly_speed_factor_below_one", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_party_config.py", + "source_location": "L20", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_party_config_testpartyprofiles", + "target": "tests_test_party_config_testpartyprofiles_test_baby_fatigue_hours_lower_than_friends", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_party_config.py", + "source_location": "L23", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_party_config_testpartyprofiles", + "target": "tests_test_party_config_testpartyprofiles_test_elderly_fatigue_hours_lower_than_friends", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_party_config.py", + "source_location": "L28", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_party_config_testpartyprofiles", + "target": "tests_test_party_config_testpartyprofiles_test_family_fatigue_between_friends_and_baby", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_party_config.py", + "source_location": "L33", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_party_config_testpartyprofiles", + "target": "tests_test_party_config_testpartyprofiles_test_unknown_type_returns_default", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_party_config.py", + "source_location": "L39", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_party_config_testpartyprofiles", + "target": "tests_test_party_config_testpartyprofiles_test_profile_is_frozen", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_party_config.py", + "source_location": "L44", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_party_config", + "target": "tests_test_party_config_testpartyprofilevalues", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_party_config.py", + "source_location": "L50", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_party_config_testpartyprofilevalues", + "target": "tests_test_party_config_testpartyprofilevalues_test_friends_fatigue_12h", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_party_config.py", + "source_location": "L51", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_party_config_testpartyprofilevalues", + "target": "tests_test_party_config_testpartyprofilevalues_test_baby_fatigue_8h", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_party_config.py", + "source_location": "L54", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_party_config_testpartyprofilevalues", + "target": "tests_test_party_config_testpartyprofilevalues_test_elderly_fatigue_8h", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_party_config.py", + "source_location": "L57", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_party_config_testpartyprofilevalues", + "target": "tests_test_party_config_testpartyprofilevalues_test_family_fatigue_10h", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_party_config.py", + "source_location": "L60", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_party_config_testpartyprofilevalues", + "target": "tests_test_party_config_testpartyprofilevalues_test_baby_speed_factor_is_point_eight", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_party_config.py", + "source_location": "L63", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_party_config_testpartyprofilevalues", + "target": "tests_test_party_config_testpartyprofilevalues_test_family_speed_factor_is_point_nine", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_party_config.py", + "source_location": "L66", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_party_config", + "target": "tests_test_party_config_teststrainthresholdlogic", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_party_config.py", + "source_location": "L70", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_party_config_teststrainthresholdlogic", + "target": "tests_test_party_config_teststrainthresholdlogic_test_baby_threshold_lower_than_friends", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_party_config.py", + "source_location": "L75", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_party_config_teststrainthresholdlogic", + "target": "tests_test_party_config_teststrainthresholdlogic_test_baby_threshold_is_24km", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_party_config.py", + "source_location": "L80", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_party_config_teststrainthresholdlogic", + "target": "tests_test_party_config_teststrainthresholdlogic_test_friends_threshold_unchanged", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_party_config.py", + "source_location": "L84", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_party_config_rationale_1", + "target": "tests_test_party_config", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/test_party_config.py", + "source_location": "L1", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_party_config_rationale_71", + "target": "tests_test_party_config_teststrainthresholdlogic", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/test_party_config.py", + "source_location": "L71", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator", + "target": "unittest_mock", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L4", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator", + "target": "pytest", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L6", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator", + "target": "src_data_models", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L8", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator", + "target": "src_explain_pipeline", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L9", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator", + "target": "src_scoring_bonus_engine", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L10", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator", + "target": "tests_test_pipeline_orchestrator_make_poi", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L17", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_make_poi", + "target": "src_data_models_poi", + "relation": "references", + "context": "return_type", + "confidence": "EXTRACTED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L17", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator", + "target": "tests_test_pipeline_orchestrator_make_plan", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L33", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_make_plan", + "target": "src_data_models_itineraryplan", + "relation": "references", + "context": "return_type", + "confidence": "EXTRACTED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L33", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator", + "target": "tests_test_pipeline_orchestrator_make_multi_day_plan", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L47", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_make_multi_day_plan", + "target": "src_data_models_itineraryplan", + "relation": "references", + "context": "return_type", + "confidence": "EXTRACTED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L47", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator", + "target": "tests_test_pipeline_orchestrator_make_empty_bonus_engine", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L56", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_make_empty_bonus_engine", + "target": "src_scoring_bonus_engine_bonusengine", + "relation": "references", + "context": "return_type", + "confidence": "EXTRACTED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L56", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_pipeline", + "target": "tests_test_pipeline_orchestrator_py_fixture", + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L60", + "weight": 1.0, + "context": "decorator", + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator", + "target": "tests_test_pipeline_orchestrator_pipeline", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L61", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_pipeline", + "target": "src_explain_pipeline_validatorpipeline", + "relation": "references", + "context": "return_type", + "confidence": "EXTRACTED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L61", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_sample_pois", + "target": "tests_test_pipeline_orchestrator_py_fixture", + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L65", + "weight": 1.0, + "context": "decorator", + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator", + "target": "tests_test_pipeline_orchestrator_sample_pois", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L66", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_sample_pois", + "target": "src_data_models_poi", + "relation": "references", + "context": "generic_arg", + "confidence": "EXTRACTED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L66", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_sample_plan", + "target": "tests_test_pipeline_orchestrator_py_fixture", + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L75", + "weight": 1.0, + "context": "decorator", + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator", + "target": "tests_test_pipeline_orchestrator_sample_plan", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L76", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_sample_plan", + "target": "src_data_models_poi", + "relation": "references", + "context": "generic_arg", + "confidence": "EXTRACTED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L76", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_sample_plan", + "target": "src_data_models_itineraryplan", + "relation": "references", + "context": "return_type", + "confidence": "EXTRACTED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L76", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator", + "target": "tests_test_pipeline_orchestrator_testtovrptwday", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L84", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_testtovrptwday", + "target": "tests_test_pipeline_orchestrator_testtovrptwday_test_converts_poi_fields", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L85", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_testtovrptwday", + "target": "tests_test_pipeline_orchestrator_testtovrptwday_test_is_depot_false", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L94", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator", + "target": "tests_test_pipeline_orchestrator_testpipelinebasic", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L104", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_testpipelinebasic", + "target": "tests_test_pipeline_orchestrator_testpipelinebasic_test_returns_validation_result", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L105", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_testpipelinebasic", + "target": "tests_test_pipeline_orchestrator_testpipelinebasic_test_final_score_in_range", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L113", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_testpipelinebasic", + "target": "tests_test_pipeline_orchestrator_testpipelinebasic_test_plan_id_matches", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L121", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_testpipelinebasic", + "target": "tests_test_pipeline_orchestrator_testpipelinebasic_test_scores_populated", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L129", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_testpipelinebasic", + "target": "tests_test_pipeline_orchestrator_testpipelinebasic_test_empty_pois_returns_zero_score", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L138", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_testpipelinebasic", + "target": "tests_test_pipeline_orchestrator_testpipelinebasic_test_base_score_populated", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L143", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator", + "target": "tests_test_pipeline_orchestrator_testpipelinehardfail", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L156", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_testpipelinehardfail", + "target": "tests_test_pipeline_orchestrator_testpipelinehardfail_test_open_hours_conflict_caps_score", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L157", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_testpipelinehardfail", + "target": "tests_test_pipeline_orchestrator_testpipelinehardfail_test_no_hard_fail_score_above_59_possible", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L173", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_testpipelinehardfail", + "target": "tests_test_pipeline_orchestrator_testpipelinehardfail_test_hard_fail_day_index_matches_offending_day", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L181", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_testpipelinehardfail", + "target": "tests_test_pipeline_orchestrator_testpipelinehardfail_test_alternatives_populated_from_explain_engine", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L196", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_testpipelinehardfail", + "target": "tests_test_pipeline_orchestrator_testpipelinehardfail_test_alternatives_not_computed_without_hard_fails", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L215", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator", + "target": "tests_test_pipeline_orchestrator_testpipelinebreakdown", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L225", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_testpipelinebreakdown", + "target": "tests_test_pipeline_orchestrator_testpipelinebreakdown_test_breakdown_fields_are_dicts", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L226", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_testpipelinebreakdown", + "target": "tests_test_pipeline_orchestrator_testpipelinebreakdown_test_wellness_bonus_reflected_in_breakdown", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L235", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_testpipelinebreakdown", + "target": "tests_test_pipeline_orchestrator_testpipelinebreakdown_test_accessibility_bonus_for_accessible_party", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L246", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_testpipelinebreakdown", + "target": "tests_test_pipeline_orchestrator_testpipelinebreakdown_test_pet_friendly_bonus_when_enabled", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L257", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_testpipelinebreakdown", + "target": "tests_test_pipeline_orchestrator_testpipelinebreakdown_test_pet_friendly_bonus_absent_when_disabled", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L266", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_testpipelinebreakdown", + "target": "tests_test_pipeline_orchestrator_testpipelinebreakdown_test_wellness_matched_exposed_on_result", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L274", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator", + "target": "tests_test_pipeline_orchestrator_testpipelinemultiday", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L289", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_testpipelinemultiday", + "target": "tests_test_pipeline_orchestrator_testpipelinemultiday_test_multi_day_runs_without_error", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L290", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_testpipelinemultiday", + "target": "tests_test_pipeline_orchestrator_testpipelinemultiday_test_sigungu_codes_accepted", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L301", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator", + "target": "tests_test_pipeline_orchestrator_testpipelinevrptw", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L318", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_testpipelinevrptw", + "target": "tests_test_pipeline_orchestrator_testpipelinevrptw_test_vrptw_fields_present", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L319", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_testpipelinevrptw", + "target": "tests_test_pipeline_orchestrator_testpipelinevrptw_test_vrptw_efficiency_gap_is_float_or_none", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L329", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_testpipelinevrptw", + "target": "tests_test_pipeline_orchestrator_testpipelinevrptw_test_vrptw_efficiency_gap_non_negative", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L337", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_testpipelinevrptw", + "target": "tests_test_pipeline_orchestrator_testpipelinevrptw_test_vrptw_optimal_route_per_day_count", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L346", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_testpipelinevrptw", + "target": "tests_test_pipeline_orchestrator_testpipelinevrptw_test_vrptw_penalty_in_breakdown_when_gap_exceeds_threshold", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L359", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_testpipelinevrptw", + "target": "tests_test_pipeline_orchestrator_testpipelinevrptw_test_vrptw_penalty_does_not_double_count_with_single_poi", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L373", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator", + "target": "tests_test_pipeline_orchestrator_testpipelinerepairgainestimation", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L385", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_testpipelinerepairgainestimation", + "target": "tests_test_pipeline_orchestrator_testpipelinerepairgainestimation_test_deletion_suggestion_carries_gain_and_resolves_flag", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L386", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_testpipelinerepairgainestimation", + "target": "tests_test_pipeline_orchestrator_testpipelinerepairgainestimation_test_no_repair_no_gain_fields_needed", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L406", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_make_poi", + "target": "src_data_models_poi", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L24", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_make_plan", + "target": "src_data_models_itineraryplan", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L38", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_make_multi_day_plan", + "target": "src_data_models_itineraryplan", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L48", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_make_empty_bonus_engine", + "target": "src_scoring_bonus_engine_bonusengine", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L57", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_pipeline", + "target": "src_explain_pipeline_validatorpipeline", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L62", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_pipeline", + "target": "tests_test_pipeline_orchestrator_make_empty_bonus_engine", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L62", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_sample_pois", + "target": "tests_test_pipeline_orchestrator_make_poi", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L68", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_sample_plan", + "target": "tests_test_pipeline_orchestrator_make_plan", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L77", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_testtovrptwday_test_converts_poi_fields", + "target": "tests_test_pipeline_orchestrator_make_poi", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L86", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_testtovrptwday_test_is_depot_false", + "target": "tests_test_pipeline_orchestrator_make_poi", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L95", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_testpipelinebasic_test_empty_pois_returns_zero_score", + "target": "tests_test_pipeline_orchestrator_make_plan", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L139", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_testpipelinehardfail_test_open_hours_conflict_caps_score", + "target": "src_data_models_poi", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L160", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_testpipelinehardfail_test_open_hours_conflict_caps_score", + "target": "tests_test_pipeline_orchestrator_make_poi", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L166", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_testpipelinehardfail_test_open_hours_conflict_caps_score", + "target": "tests_test_pipeline_orchestrator_make_plan", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L168", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_testpipelinehardfail_test_hard_fail_day_index_matches_offending_day", + "target": "tests_test_pipeline_orchestrator_make_poi", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L183", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_testpipelinehardfail_test_hard_fail_day_index_matches_offending_day", + "target": "src_data_models_poi", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L184", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_testpipelinehardfail_test_hard_fail_day_index_matches_offending_day", + "target": "tests_test_pipeline_orchestrator_make_multi_day_plan", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L191", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_testpipelinehardfail_test_alternatives_populated_from_explain_engine", + "target": "src_explain_pipeline_validatorpipeline", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L202", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_testpipelinehardfail_test_alternatives_populated_from_explain_engine", + "target": "tests_test_pipeline_orchestrator_make_empty_bonus_engine", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L203", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_testpipelinehardfail_test_alternatives_populated_from_explain_engine", + "target": "src_data_models_poi", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L205", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_testpipelinehardfail_test_alternatives_populated_from_explain_engine", + "target": "tests_test_pipeline_orchestrator_make_plan", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L209", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_testpipelinebreakdown_test_wellness_bonus_reflected_in_breakdown", + "target": "src_scoring_bonus_engine_bonusengine", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L237", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_testpipelinebreakdown_test_wellness_bonus_reflected_in_breakdown", + "target": "src_explain_pipeline_validatorpipeline", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L238", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_testpipelinebreakdown_test_wellness_bonus_reflected_in_breakdown", + "target": "tests_test_pipeline_orchestrator_make_poi", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L240", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_testpipelinebreakdown_test_wellness_bonus_reflected_in_breakdown", + "target": "tests_test_pipeline_orchestrator_make_plan", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L241", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_testpipelinebreakdown_test_accessibility_bonus_for_accessible_party", + "target": "src_scoring_bonus_engine_bonusengine", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L248", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_testpipelinebreakdown_test_accessibility_bonus_for_accessible_party", + "target": "src_explain_pipeline_validatorpipeline", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L249", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_testpipelinebreakdown_test_accessibility_bonus_for_accessible_party", + "target": "tests_test_pipeline_orchestrator_make_poi", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L251", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_testpipelinebreakdown_test_accessibility_bonus_for_accessible_party", + "target": "tests_test_pipeline_orchestrator_make_plan", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L252", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_testpipelinebreakdown_test_pet_friendly_bonus_when_enabled", + "target": "tests_test_pipeline_orchestrator_make_poi", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L258", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_testpipelinebreakdown_test_pet_friendly_bonus_when_enabled", + "target": "tests_test_pipeline_orchestrator_make_plan", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L259", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_testpipelinebreakdown_test_pet_friendly_bonus_absent_when_disabled", + "target": "tests_test_pipeline_orchestrator_make_poi", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L267", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_testpipelinebreakdown_test_pet_friendly_bonus_absent_when_disabled", + "target": "tests_test_pipeline_orchestrator_make_plan", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L268", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_testpipelinebreakdown_test_wellness_matched_exposed_on_result", + "target": "src_scoring_bonus_engine_bonusengine", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L276", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_testpipelinebreakdown_test_wellness_matched_exposed_on_result", + "target": "src_explain_pipeline_validatorpipeline", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L277", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_testpipelinebreakdown_test_wellness_matched_exposed_on_result", + "target": "tests_test_pipeline_orchestrator_make_poi", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L279", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_testpipelinebreakdown_test_wellness_matched_exposed_on_result", + "target": "tests_test_pipeline_orchestrator_make_plan", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L280", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_testpipelinemultiday_test_multi_day_runs_without_error", + "target": "tests_test_pipeline_orchestrator_make_poi", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L291", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_testpipelinemultiday_test_multi_day_runs_without_error", + "target": "tests_test_pipeline_orchestrator_make_multi_day_plan", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L293", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_testpipelinemultiday_test_sigungu_codes_accepted", + "target": "tests_test_pipeline_orchestrator_make_poi", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L302", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_testpipelinemultiday_test_sigungu_codes_accepted", + "target": "tests_test_pipeline_orchestrator_make_plan", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L303", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_testpipelinevrptw_test_vrptw_optimal_route_per_day_count", + "target": "tests_test_pipeline_orchestrator_make_poi", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L347", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_testpipelinevrptw_test_vrptw_optimal_route_per_day_count", + "target": "tests_test_pipeline_orchestrator_make_multi_day_plan", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L349", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_testpipelinevrptw_test_vrptw_penalty_in_breakdown_when_gap_exceeds_threshold", + "target": "tests_test_pipeline_orchestrator_make_poi", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L363", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_testpipelinevrptw_test_vrptw_penalty_in_breakdown_when_gap_exceeds_threshold", + "target": "tests_test_pipeline_orchestrator_make_plan", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L367", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_testpipelinevrptw_test_vrptw_penalty_does_not_double_count_with_single_poi", + "target": "tests_test_pipeline_orchestrator_make_poi", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L374", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_testpipelinevrptw_test_vrptw_penalty_does_not_double_count_with_single_poi", + "target": "tests_test_pipeline_orchestrator_make_plan", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L375", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_testpipelinerepairgainestimation_test_deletion_suggestion_carries_gain_and_resolves_flag", + "target": "tests_test_pipeline_orchestrator_make_poi", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L388", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_testpipelinerepairgainestimation_test_deletion_suggestion_carries_gain_and_resolves_flag", + "target": "src_data_models_poi", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L390", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_testpipelinerepairgainestimation_test_deletion_suggestion_carries_gain_and_resolves_flag", + "target": "tests_test_pipeline_orchestrator_make_plan", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L395", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_rationale_1", + "target": "tests_test_pipeline_orchestrator", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L1", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_rationale_387", + "target": "tests_test_pipeline_orchestrator_testpipelinerepairgainestimation_test_deletion_suggestion_carries_gain_and_resolves_flag", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L387", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_rationale_407", + "target": "tests_test_pipeline_orchestrator_testpipelinerepairgainestimation_test_no_repair_no_gain_fields_needed", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L407", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_plan_extractor", + "target": "unittest_mock", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_plan_extractor.py", + "source_location": "L4", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_plan_extractor", + "target": "pytest", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_plan_extractor.py", + "source_location": "L6", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_plan_extractor", + "target": "src_explain_plan_extractor", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_plan_extractor.py", + "source_location": "L8", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_plan_extractor", + "target": "tests_test_plan_extractor_client_returning", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_plan_extractor.py", + "source_location": "L11", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_plan_extractor", + "target": "tests_test_plan_extractor_test_extract_from_text_parses_llm_response", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_plan_extractor.py", + "source_location": "L19", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_plan_extractor", + "target": "tests_test_plan_extractor_test_extract_from_text_strips_code_fence", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_plan_extractor.py", + "source_location": "L32", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_plan_extractor", + "target": "tests_test_plan_extractor_test_extract_from_text_empty_raises", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_plan_extractor.py", + "source_location": "L41", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_plan_extractor", + "target": "tests_test_plan_extractor_test_extract_from_text_without_client_falls_back_to_heuristic", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_plan_extractor.py", + "source_location": "L47", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_plan_extractor", + "target": "tests_test_plan_extractor_test_extract_from_document_without_client_raises", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_plan_extractor.py", + "source_location": "L58", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_plan_extractor", + "target": "tests_test_plan_extractor_test_extract_from_document_empty_bytes_raises", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_plan_extractor.py", + "source_location": "L64", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_plan_extractor", + "target": "tests_test_plan_extractor_test_extract_from_document_sends_document_block_for_pdf", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_plan_extractor.py", + "source_location": "L70", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_plan_extractor", + "target": "tests_test_plan_extractor_test_extract_from_document_sends_image_block_for_png", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_plan_extractor.py", + "source_location": "L81", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_plan_extractor", + "target": "tests_test_plan_extractor_test_invalid_json_response_raises", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_plan_extractor.py", + "source_location": "L91", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_plan_extractor", + "target": "tests_test_plan_extractor_test_api_call_failure_raises_extraction_error", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_plan_extractor.py", + "source_location": "L97", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_plan_extractor", + "target": "tests_test_plan_extractor_test_system_prompt_uses_prompt_caching", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_plan_extractor.py", + "source_location": "L106", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_plan_extractor_test_extract_from_text_parses_llm_response", + "target": "tests_test_plan_extractor_client_returning", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_plan_extractor.py", + "source_location": "L20", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_plan_extractor_test_extract_from_text_strips_code_fence", + "target": "tests_test_plan_extractor_client_returning", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_plan_extractor.py", + "source_location": "L33", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_plan_extractor_test_extract_from_text_empty_raises", + "target": "tests_test_plan_extractor_client_returning", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_plan_extractor.py", + "source_location": "L42", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_plan_extractor_test_extract_from_document_empty_bytes_raises", + "target": "tests_test_plan_extractor_client_returning", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_plan_extractor.py", + "source_location": "L65", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_plan_extractor_test_extract_from_document_sends_document_block_for_pdf", + "target": "tests_test_plan_extractor_client_returning", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_plan_extractor.py", + "source_location": "L71", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_plan_extractor_test_extract_from_document_sends_image_block_for_png", + "target": "tests_test_plan_extractor_client_returning", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_plan_extractor.py", + "source_location": "L82", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_plan_extractor_test_invalid_json_response_raises", + "target": "tests_test_plan_extractor_client_returning", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_plan_extractor.py", + "source_location": "L92", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_plan_extractor_test_system_prompt_uses_prompt_caching", + "target": "tests_test_plan_extractor_client_returning", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_plan_extractor.py", + "source_location": "L108", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_plan_extractor_rationale_1", + "target": "tests_test_plan_extractor", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/test_plan_extractor.py", + "source_location": "L1", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_plan_extractor_rationale_107", + "target": "tests_test_plan_extractor_test_system_prompt_uses_prompt_caching", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/test_plan_extractor.py", + "source_location": "L107", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_region_config", + "target": "src_data_region_config", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_region_config.py", + "source_location": "L4", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_region_config", + "target": "tests_test_region_config_testgetthresholds", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_region_config.py", + "source_location": "L12", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_region_config_testgetthresholds", + "target": "tests_test_region_config_testgetthresholds_test_seoul_code_returns_high", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_region_config.py", + "source_location": "L13", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_region_config_testgetthresholds", + "target": "tests_test_region_config_testgetthresholds_test_busan_code_returns_high", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_region_config.py", + "source_location": "L16", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_region_config_testgetthresholds", + "target": "tests_test_region_config_testgetthresholds_test_daegu_code_returns_medium", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_region_config.py", + "source_location": "L19", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_region_config_testgetthresholds", + "target": "tests_test_region_config_testgetthresholds_test_rural_code_returns_low", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_region_config.py", + "source_location": "L22", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_region_config_testgetthresholds", + "target": "tests_test_region_config_testgetthresholds_test_none_returns_medium", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_region_config.py", + "source_location": "L25", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_region_config_testgetthresholds", + "target": "tests_test_region_config_testgetthresholds_test_unknown_code_returns_low", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_region_config.py", + "source_location": "L28", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_region_config_testgetthresholds", + "target": "tests_test_region_config_testgetthresholds_test_high_dist_warn_smaller_than_low", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_region_config.py", + "source_location": "L31", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_region_config_testgetthresholds", + "target": "tests_test_region_config_testgetthresholds_test_high_physical_strain_smaller_than_low", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_region_config.py", + "source_location": "L34", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_region_config_testgetthresholds", + "target": "tests_test_region_config_testgetthresholds_test_tier_fields_ordered", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_region_config.py", + "source_location": "L37", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_region_config_rationale_1", + "target": "tests_test_region_config", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/test_region_config.py", + "source_location": "L1", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_repair", + "target": "src_data_models", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_repair.py", + "source_location": "L4", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_repair", + "target": "src_data_restaurant_catalog", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_repair.py", + "source_location": "L5", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_repair", + "target": "src_explain_repair", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_repair.py", + "source_location": "L6", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_repair", + "target": "tests_test_repair_repairengine", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_repair.py", + "source_location": "L10", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_repair_repairengine", + "target": "src_data_restaurant_catalog_restaurantcatalog", + "relation": "references", + "context": "parameter_type", + "confidence": "EXTRACTED", + "source_file": "tests/test_repair.py", + "source_location": "L10", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_repair_repairengine", + "target": "repairengineclass", + "relation": "references", + "context": "return_type", + "confidence": "EXTRACTED", + "source_file": "tests/test_repair.py", + "source_location": "L10", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_repair", + "target": "tests_test_repair_poi", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_repair.py", + "source_location": "L15", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_repair", + "target": "tests_test_repair_plan", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_repair.py", + "source_location": "L31", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_repair_plan", + "target": "src_data_models_itineraryplan", + "relation": "references", + "context": "return_type", + "confidence": "EXTRACTED", + "source_file": "tests/test_repair.py", + "source_location": "L31", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_repair", + "target": "tests_test_repair_fail", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_repair.py", + "source_location": "L42", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_repair_fail", + "target": "src_data_models_hardfail", + "relation": "references", + "context": "return_type", + "confidence": "EXTRACTED", + "source_file": "tests/test_repair.py", + "source_location": "L42", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_repair", + "target": "tests_test_repair_testrepairenginenoop", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_repair.py", + "source_location": "L53", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_repair_testrepairenginenoop", + "target": "tests_test_repair_testrepairenginenoop_test_empty_when_no_hard_fails", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_repair.py", + "source_location": "L54", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_repair_testrepairenginenoop", + "target": "tests_test_repair_testrepairenginenoop_test_empty_when_pois_list_is_empty", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_repair.py", + "source_location": "L60", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_repair", + "target": "tests_test_repair_outlier_pois", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_repair.py", + "source_location": "L74", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_repair_outlier_pois", + "target": "tests_test_repair_poi", + "relation": "references", + "context": "generic_arg", + "confidence": "EXTRACTED", + "source_file": "tests/test_repair.py", + "source_location": "L74", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_repair", + "target": "tests_test_repair_testdeletionsuggestion", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_repair.py", + "source_location": "L88", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_repair_testdeletionsuggestion", + "target": "tests_test_repair_testdeletionsuggestion_test_identifies_geometric_outlier", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_repair.py", + "source_location": "L89", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_repair_testdeletionsuggestion", + "target": "tests_test_repair_testdeletionsuggestion_test_outlier_deletion_has_positive_savings", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_repair.py", + "source_location": "L97", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_repair_testdeletionsuggestion", + "target": "tests_test_repair_testdeletionsuggestion_test_no_deletion_for_two_pois", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_repair.py", + "source_location": "L104", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_repair_testdeletionsuggestion", + "target": "tests_test_repair_testdeletionsuggestion_test_deletion_reason_mentions_candidate", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_repair.py", + "source_location": "L110", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_repair_testdeletionsuggestion", + "target": "tests_test_repair_testdeletionsuggestion_test_deletion_recommends_nearby_restaurant_when_available", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_repair.py", + "source_location": "L117", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_repair_testdeletionsuggestion", + "target": "tests_test_repair_testdeletionsuggestion_test_deletion_explains_when_no_restaurant_nearby", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_repair.py", + "source_location": "L127", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_repair", + "target": "tests_test_repair_testtimetunesuggestion", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_repair.py", + "source_location": "L140", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_repair_testtimetunesuggestion", + "target": "tests_test_repair_testtimetunesuggestion_test_no_tune_when_within_limit", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_repair.py", + "source_location": "L141", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_repair_testtimetunesuggestion", + "target": "tests_test_repair_testtimetunesuggestion_test_tune_suggested_when_over_limit", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_repair.py", + "source_location": "L149", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_repair_testtimetunesuggestion", + "target": "tests_test_repair_testtimetunesuggestion_test_adjusted_durations_above_minimum", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_repair.py", + "source_location": "L158", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_repair", + "target": "tests_test_repair_testresultmodel", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_repair.py", + "source_location": "L173", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_repair_testresultmodel", + "target": "tests_test_repair_testresultmodel_test_to_dict_is_serializable", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_repair.py", + "source_location": "L174", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_repair_testresultmodel", + "target": "tests_test_repair_testresultmodel_test_is_empty_true_when_no_suggestions", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_repair.py", + "source_location": "L182", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_repair_testresultmodel", + "target": "tests_test_repair_testresultmodel_test_is_empty_false_when_has_deletion", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_repair.py", + "source_location": "L188", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_repair", + "target": "tests_test_repair_testtotalestimatedgain", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_repair.py", + "source_location": "L199", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_repair_testtotalestimatedgain", + "target": "tests_test_repair_testtotalestimatedgain_test_sums_across_different_days", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_repair.py", + "source_location": "L200", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_repair_testtotalestimatedgain", + "target": "tests_test_repair_testtotalestimatedgain_test_takes_max_of_alternatives_on_same_day", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_repair.py", + "source_location": "L207", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_repair_testtotalestimatedgain", + "target": "tests_test_repair_testtotalestimatedgain_test_zero_when_empty", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_repair.py", + "source_location": "L214", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_repair_testtotalestimatedgain", + "target": "tests_test_repair_testtotalestimatedgain_test_included_in_to_dict", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_repair.py", + "source_location": "L217", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_repair_repairengine", + "target": "repairengineclass", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_repair.py", + "source_location": "L12", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_repair_repairengine", + "target": "src_data_restaurant_catalog_restaurantcatalog", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_repair.py", + "source_location": "L12", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_repair_plan", + "target": "src_data_models_itineraryplan", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_repair.py", + "source_location": "L34", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_repair_fail", + "target": "src_data_models_hardfail", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_repair.py", + "source_location": "L43", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_repair_testrepairenginenoop_test_empty_when_no_hard_fails", + "target": "tests_test_repair_repairengine", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_repair.py", + "source_location": "L55", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_repair_testrepairenginenoop_test_empty_when_no_hard_fails", + "target": "tests_test_repair_plan", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_repair.py", + "source_location": "L56", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_repair_testrepairenginenoop_test_empty_when_no_hard_fails", + "target": "tests_test_repair_poi", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_repair.py", + "source_location": "L57", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_repair_testrepairenginenoop_test_empty_when_pois_list_is_empty", + "target": "tests_test_repair_repairengine", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_repair.py", + "source_location": "L61", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_repair_testrepairenginenoop_test_empty_when_pois_list_is_empty", + "target": "tests_test_repair_plan", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_repair.py", + "source_location": "L62", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_repair_testrepairenginenoop_test_empty_when_pois_list_is_empty", + "target": "tests_test_repair_fail", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_repair.py", + "source_location": "L63", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_repair_outlier_pois", + "target": "tests_test_repair_poi", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_repair.py", + "source_location": "L77", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_repair_testdeletionsuggestion_test_identifies_geometric_outlier", + "target": "tests_test_repair_repairengine", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_repair.py", + "source_location": "L90", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_repair_testdeletionsuggestion_test_identifies_geometric_outlier", + "target": "tests_test_repair_plan", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_repair.py", + "source_location": "L91", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_repair_testdeletionsuggestion_test_identifies_geometric_outlier", + "target": "tests_test_repair_outlier_pois", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_repair.py", + "source_location": "L92", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_repair_testdeletionsuggestion_test_identifies_geometric_outlier", + "target": "tests_test_repair_fail", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_repair.py", + "source_location": "L93", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_repair_testdeletionsuggestion_test_outlier_deletion_has_positive_savings", + "target": "tests_test_repair_repairengine", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_repair.py", + "source_location": "L98", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_repair_testdeletionsuggestion_test_outlier_deletion_has_positive_savings", + "target": "tests_test_repair_plan", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_repair.py", + "source_location": "L99", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_repair_testdeletionsuggestion_test_outlier_deletion_has_positive_savings", + "target": "tests_test_repair_outlier_pois", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_repair.py", + "source_location": "L100", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_repair_testdeletionsuggestion_test_outlier_deletion_has_positive_savings", + "target": "tests_test_repair_fail", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_repair.py", + "source_location": "L100", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_repair_testdeletionsuggestion_test_no_deletion_for_two_pois", + "target": "tests_test_repair_repairengine", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_repair.py", + "source_location": "L105", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_repair_testdeletionsuggestion_test_no_deletion_for_two_pois", + "target": "tests_test_repair_plan", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_repair.py", + "source_location": "L106", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_repair_testdeletionsuggestion_test_no_deletion_for_two_pois", + "target": "tests_test_repair_poi", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_repair.py", + "source_location": "L107", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_repair_testdeletionsuggestion_test_no_deletion_for_two_pois", + "target": "tests_test_repair_fail", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_repair.py", + "source_location": "L107", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_repair_testdeletionsuggestion_test_deletion_reason_mentions_candidate", + "target": "tests_test_repair_repairengine", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_repair.py", + "source_location": "L111", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_repair_testdeletionsuggestion_test_deletion_reason_mentions_candidate", + "target": "tests_test_repair_plan", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_repair.py", + "source_location": "L112", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_repair_testdeletionsuggestion_test_deletion_reason_mentions_candidate", + "target": "tests_test_repair_outlier_pois", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_repair.py", + "source_location": "L113", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_repair_testdeletionsuggestion_test_deletion_reason_mentions_candidate", + "target": "tests_test_repair_fail", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_repair.py", + "source_location": "L113", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_repair_testdeletionsuggestion_test_deletion_recommends_nearby_restaurant_when_available", + "target": "src_data_restaurant_catalog_restaurantcatalog", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_repair.py", + "source_location": "L118", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_repair_testdeletionsuggestion_test_deletion_recommends_nearby_restaurant_when_available", + "target": "tests_test_repair_repairengine", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_repair.py", + "source_location": "L119", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_repair_testdeletionsuggestion_test_deletion_recommends_nearby_restaurant_when_available", + "target": "tests_test_repair_plan", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_repair.py", + "source_location": "L120", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_repair_testdeletionsuggestion_test_deletion_recommends_nearby_restaurant_when_available", + "target": "tests_test_repair_outlier_pois", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_repair.py", + "source_location": "L121", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_repair_testdeletionsuggestion_test_deletion_recommends_nearby_restaurant_when_available", + "target": "tests_test_repair_fail", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_repair.py", + "source_location": "L121", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_repair_testdeletionsuggestion_test_deletion_explains_when_no_restaurant_nearby", + "target": "tests_test_repair_repairengine", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_repair.py", + "source_location": "L128", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_repair_testdeletionsuggestion_test_deletion_explains_when_no_restaurant_nearby", + "target": "src_data_restaurant_catalog_restaurantcatalog", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_repair.py", + "source_location": "L128", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_repair_testdeletionsuggestion_test_deletion_explains_when_no_restaurant_nearby", + "target": "tests_test_repair_plan", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_repair.py", + "source_location": "L129", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_repair_testdeletionsuggestion_test_deletion_explains_when_no_restaurant_nearby", + "target": "tests_test_repair_outlier_pois", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_repair.py", + "source_location": "L130", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_repair_testdeletionsuggestion_test_deletion_explains_when_no_restaurant_nearby", + "target": "tests_test_repair_fail", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_repair.py", + "source_location": "L130", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_repair_testtimetunesuggestion_test_no_tune_when_within_limit", + "target": "tests_test_repair_repairengine", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_repair.py", + "source_location": "L143", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_repair_testtimetunesuggestion_test_no_tune_when_within_limit", + "target": "tests_test_repair_plan", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_repair.py", + "source_location": "L144", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_repair_testtimetunesuggestion_test_no_tune_when_within_limit", + "target": "tests_test_repair_poi", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_repair.py", + "source_location": "L145", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_repair_testtimetunesuggestion_test_no_tune_when_within_limit", + "target": "tests_test_repair_fail", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_repair.py", + "source_location": "L146", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_repair_testtimetunesuggestion_test_tune_suggested_when_over_limit", + "target": "tests_test_repair_repairengine", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_repair.py", + "source_location": "L151", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_repair_testtimetunesuggestion_test_tune_suggested_when_over_limit", + "target": "tests_test_repair_plan", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_repair.py", + "source_location": "L152", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_repair_testtimetunesuggestion_test_tune_suggested_when_over_limit", + "target": "tests_test_repair_poi", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_repair.py", + "source_location": "L153", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_repair_testtimetunesuggestion_test_tune_suggested_when_over_limit", + "target": "tests_test_repair_fail", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_repair.py", + "source_location": "L154", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_repair_testtimetunesuggestion_test_adjusted_durations_above_minimum", + "target": "tests_test_repair_repairengine", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_repair.py", + "source_location": "L160", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_repair_testtimetunesuggestion_test_adjusted_durations_above_minimum", + "target": "tests_test_repair_plan", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_repair.py", + "source_location": "L161", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_repair_testtimetunesuggestion_test_adjusted_durations_above_minimum", + "target": "tests_test_repair_poi", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_repair.py", + "source_location": "L162", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_repair_testtimetunesuggestion_test_adjusted_durations_above_minimum", + "target": "tests_test_repair_fail", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_repair.py", + "source_location": "L163", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_repair_testresultmodel_test_to_dict_is_serializable", + "target": "tests_test_repair_repairengine", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_repair.py", + "source_location": "L175", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_repair_testresultmodel_test_to_dict_is_serializable", + "target": "tests_test_repair_plan", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_repair.py", + "source_location": "L176", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_repair_testresultmodel_test_to_dict_is_serializable", + "target": "tests_test_repair_outlier_pois", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_repair.py", + "source_location": "L177", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_repair_testresultmodel_test_to_dict_is_serializable", + "target": "tests_test_repair_fail", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_repair.py", + "source_location": "L177", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_repair_testresultmodel_test_is_empty_true_when_no_suggestions", + "target": "tests_test_repair_repairengine", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_repair.py", + "source_location": "L183", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_repair_testresultmodel_test_is_empty_true_when_no_suggestions", + "target": "tests_test_repair_plan", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_repair.py", + "source_location": "L184", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_repair_testresultmodel_test_is_empty_true_when_no_suggestions", + "target": "tests_test_repair_poi", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_repair.py", + "source_location": "L185", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_repair_testresultmodel_test_is_empty_false_when_has_deletion", + "target": "tests_test_repair_repairengine", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_repair.py", + "source_location": "L189", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_repair_testresultmodel_test_is_empty_false_when_has_deletion", + "target": "tests_test_repair_plan", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_repair.py", + "source_location": "L190", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_repair_testresultmodel_test_is_empty_false_when_has_deletion", + "target": "tests_test_repair_outlier_pois", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_repair.py", + "source_location": "L191", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_repair_testresultmodel_test_is_empty_false_when_has_deletion", + "target": "tests_test_repair_fail", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_repair.py", + "source_location": "L191", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_repair_rationale_11", + "target": "tests_test_repair_repairengine", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/test_repair.py", + "source_location": "L11", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_repair_rationale_75", + "target": "tests_test_repair_outlier_pois", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/test_repair.py", + "source_location": "L75", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_repair_rationale_142", + "target": "tests_test_repair_testtimetunesuggestion_test_no_tune_when_within_limit", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/test_repair.py", + "source_location": "L142", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_repair_rationale_150", + "target": "tests_test_repair_testtimetunesuggestion_test_tune_suggested_when_over_limit", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/test_repair.py", + "source_location": "L150", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_repair_rationale_159", + "target": "tests_test_repair_testtimetunesuggestion_test_adjusted_durations_above_minimum", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/test_repair.py", + "source_location": "L159", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_resolve_poi", + "target": "unittest_mock", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_resolve_poi.py", + "source_location": "L4", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_resolve_poi", + "target": "openpyxl", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_resolve_poi.py", + "source_location": "L6", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_resolve_poi", + "target": "pytest", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_resolve_poi.py", + "source_location": "L7", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_resolve_poi", + "target": "fastapi_testclient", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_resolve_poi.py", + "source_location": "L8", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_resolve_poi", + "target": "src_api", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_resolve_poi.py", + "source_location": "L10", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_resolve_poi", + "target": "src_api_main", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_resolve_poi.py", + "source_location": "L11", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_resolve_poi", + "target": "tests_test_resolve_poi_write_jeju_xlsx", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_resolve_poi.py", + "source_location": "L19", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_resolve_poi_jeju_xlsx_index", + "target": "tests_test_resolve_poi_py_fixture", + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "tests/test_resolve_poi.py", + "source_location": "L28", + "weight": 1.0, + "context": "decorator", + "_origin": "ast" + }, + { + "source": "tests_test_resolve_poi", + "target": "tests_test_resolve_poi_jeju_xlsx_index", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_resolve_poi.py", + "source_location": "L29", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_resolve_poi", + "target": "tests_test_resolve_poi_test_jeju_index_prefers_tourapi_hours_over_legacy_text", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_resolve_poi.py", + "source_location": "L51", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_resolve_poi", + "target": "tests_test_resolve_poi_test_jeju_index_sets_contentid_when_tourapi_matched", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_resolve_poi.py", + "source_location": "L56", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_resolve_poi", + "target": "tests_test_resolve_poi_test_jeju_index_falls_back_to_legacy_hours_when_unmatched", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_resolve_poi.py", + "source_location": "L61", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_resolve_poi", + "target": "tests_test_resolve_poi_test_jeju_index_sets_pet_friendly_flag_when_y", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_resolve_poi.py", + "source_location": "L67", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_resolve_poi", + "target": "tests_test_resolve_poi_test_jeju_index_defaults_pet_friendly_false_when_blank", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_resolve_poi.py", + "source_location": "L72", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_resolve_poi", + "target": "tests_test_resolve_poi_test_resolve_poi_propagates_pet_friendly_flag", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_resolve_poi.py", + "source_location": "L77", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_resolve_poi", + "target": "tests_test_resolve_poi_test_geocode_fallback_used_when_keyword_search_fails", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_resolve_poi.py", + "source_location": "L94", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_resolve_poi", + "target": "tests_test_resolve_poi_test_seoul_fallback_when_geocode_also_fails", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_resolve_poi.py", + "source_location": "L110", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_resolve_poi", + "target": "tests_test_resolve_poi_test_resolve_coords_endpoint_returns_poi_per_place", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_resolve_poi.py", + "source_location": "L123", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_resolve_poi_jeju_xlsx_index", + "target": "tests_test_resolve_poi_write_jeju_xlsx", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_resolve_poi.py", + "source_location": "L31", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_resolve_poi_rationale_1", + "target": "tests_test_resolve_poi", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/test_resolve_poi.py", + "source_location": "L1", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_resolve_poi_rationale_30", + "target": "tests_test_resolve_poi_jeju_xlsx_index", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/test_resolve_poi.py", + "source_location": "L30", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_resolve_poi_rationale_78", + "target": "tests_test_resolve_poi_test_resolve_poi_propagates_pet_friendly_flag", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/test_resolve_poi.py", + "source_location": "L78", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_resolve_poi_rationale_95", + "target": "tests_test_resolve_poi_test_geocode_fallback_used_when_keyword_search_fails", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/test_resolve_poi.py", + "source_location": "L95", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_resolve_poi_rationale_111", + "target": "tests_test_resolve_poi_test_seoul_fallback_when_geocode_also_fails", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/test_resolve_poi.py", + "source_location": "L111", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_resolve_poi_rationale_124", + "target": "tests_test_resolve_poi_test_resolve_coords_endpoint_returns_poi_per_place", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/test_resolve_poi.py", + "source_location": "L124", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_restaurant_catalog", + "target": "src_data_restaurant_catalog", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_restaurant_catalog.py", + "source_location": "L4", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_restaurant_catalog", + "target": "tests_test_restaurant_catalog_catalog", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_restaurant_catalog.py", + "source_location": "L7", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_restaurant_catalog_catalog", + "target": "src_data_restaurant_catalog_restaurantcatalog", + "relation": "references", + "context": "return_type", + "confidence": "EXTRACTED", + "source_file": "tests/test_restaurant_catalog.py", + "source_location": "L7", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_restaurant_catalog", + "target": "tests_test_restaurant_catalog_test_nearby_returns_within_radius_sorted_by_distance", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_restaurant_catalog.py", + "source_location": "L15", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_restaurant_catalog", + "target": "tests_test_restaurant_catalog_test_nearby_excludes_self", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_restaurant_catalog.py", + "source_location": "L22", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_restaurant_catalog", + "target": "tests_test_restaurant_catalog_test_nearby_empty_when_no_restaurants_in_radius", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_restaurant_catalog.py", + "source_location": "L27", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_restaurant_catalog_catalog", + "target": "src_data_restaurant_catalog_restaurantcatalog", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_restaurant_catalog.py", + "source_location": "L8", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_restaurant_catalog_test_nearby_returns_within_radius_sorted_by_distance", + "target": "tests_test_restaurant_catalog_catalog", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_restaurant_catalog.py", + "source_location": "L16", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_restaurant_catalog_test_nearby_excludes_self", + "target": "tests_test_restaurant_catalog_catalog", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_restaurant_catalog.py", + "source_location": "L23", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_restaurant_catalog_test_nearby_empty_when_no_restaurants_in_radius", + "target": "src_data_restaurant_catalog_restaurantcatalog", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_restaurant_catalog.py", + "source_location": "L28", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_restaurant_catalog_rationale_1", + "target": "tests_test_restaurant_catalog", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/test_restaurant_catalog.py", + "source_location": "L1", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_reward_engine", + "target": "pytest", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_reward_engine.py", + "source_location": "L4", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_reward_engine", + "target": "src_data_models", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_reward_engine.py", + "source_location": "L6", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_reward_engine", + "target": "src_scoring_reward_engine", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_reward_engine.py", + "source_location": "L7", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_reward_engine", + "target": "tests_test_reward_engine_scores", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_reward_engine.py", + "source_location": "L10", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_reward_engine", + "target": "tests_test_reward_engine_testgeneraterewards", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_reward_engine.py", + "source_location": "L16", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_reward_engine_testgeneraterewards", + "target": "tests_test_reward_engine_testgeneraterewards_test_hard_fail_returns_empty", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_reward_engine.py", + "source_location": "L17", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_reward_engine_testgeneraterewards", + "target": "tests_test_reward_engine_testgeneraterewards_test_excellent_flow_generates_message", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_reward_engine.py", + "source_location": "L27", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_reward_engine_testgeneraterewards", + "target": "tests_test_reward_engine_testgeneraterewards_test_excellent_efficiency_generates_message", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_reward_engine.py", + "source_location": "L37", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_reward_engine_testgeneraterewards", + "target": "tests_test_reward_engine_testgeneraterewards_test_low_travel_ratio_generates_message", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_reward_engine.py", + "source_location": "L47", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_reward_engine_testgeneraterewards", + "target": "tests_test_reward_engine_testgeneraterewards_test_excellent_purpose_fit_generates_message", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_reward_engine.py", + "source_location": "L57", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_reward_engine_testgeneraterewards", + "target": "tests_test_reward_engine_testgeneraterewards_test_no_warnings_generates_message", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_reward_engine.py", + "source_location": "L67", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_reward_engine_testgeneraterewards", + "target": "tests_test_reward_engine_testgeneraterewards_test_zero_cluster_penalty_generates_message", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_reward_engine.py", + "source_location": "L77", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_reward_engine_testgeneraterewards", + "target": "tests_test_reward_engine_testgeneraterewards_test_perfect_plan_all_messages", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_reward_engine.py", + "source_location": "L87", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_reward_engine_testgeneraterewards", + "target": "tests_test_reward_engine_testgeneraterewards_test_mediocre_plan_few_messages", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_reward_engine.py", + "source_location": "L97", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_reward_engine_testgeneraterewards_test_hard_fail_returns_empty", + "target": "tests_test_reward_engine_scores", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_reward_engine.py", + "source_location": "L19", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_reward_engine_testgeneraterewards_test_excellent_flow_generates_message", + "target": "tests_test_reward_engine_scores", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_reward_engine.py", + "source_location": "L29", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_reward_engine_testgeneraterewards_test_excellent_efficiency_generates_message", + "target": "tests_test_reward_engine_scores", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_reward_engine.py", + "source_location": "L39", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_reward_engine_testgeneraterewards_test_low_travel_ratio_generates_message", + "target": "tests_test_reward_engine_scores", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_reward_engine.py", + "source_location": "L49", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_reward_engine_testgeneraterewards_test_excellent_purpose_fit_generates_message", + "target": "tests_test_reward_engine_scores", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_reward_engine.py", + "source_location": "L59", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_reward_engine_testgeneraterewards_test_no_warnings_generates_message", + "target": "tests_test_reward_engine_scores", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_reward_engine.py", + "source_location": "L69", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_reward_engine_testgeneraterewards_test_zero_cluster_penalty_generates_message", + "target": "tests_test_reward_engine_scores", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_reward_engine.py", + "source_location": "L79", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_reward_engine_testgeneraterewards_test_perfect_plan_all_messages", + "target": "tests_test_reward_engine_scores", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_reward_engine.py", + "source_location": "L89", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_reward_engine_testgeneraterewards_test_mediocre_plan_few_messages", + "target": "tests_test_reward_engine_scores", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_reward_engine.py", + "source_location": "L99", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_scoring", + "target": "pytest", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_scoring.py", + "source_location": "L4", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_scoring", + "target": "src_data_models", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_scoring.py", + "source_location": "L6", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_scoring", + "target": "src_validation_scoring", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_scoring.py", + "source_location": "L7", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_scoring", + "target": "tests_test_scoring_make_poi", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_scoring.py", + "source_location": "L14", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_scoring_make_poi", + "target": "src_data_models_poi", + "relation": "references", + "context": "return_type", + "confidence": "EXTRACTED", + "source_file": "tests/test_scoring.py", + "source_location": "L14", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_scoring", + "target": "tests_test_scoring_make_plan", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_scoring.py", + "source_location": "L29", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_scoring_make_plan", + "target": "src_data_models_itineraryplan", + "relation": "references", + "context": "return_type", + "confidence": "EXTRACTED", + "source_file": "tests/test_scoring.py", + "source_location": "L29", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_scoring", + "target": "tests_test_scoring_make_matrix", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_scoring.py", + "source_location": "L42", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_scoring", + "target": "tests_test_scoring_make_hard_fail", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_scoring.py", + "source_location": "L52", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_scoring_make_hard_fail", + "target": "src_data_models_hardfail", + "relation": "references", + "context": "return_type", + "confidence": "EXTRACTED", + "source_file": "tests/test_scoring.py", + "source_location": "L52", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_scoring_calc", + "target": "tests_test_scoring_py_fixture", + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "tests/test_scoring.py", + "source_location": "L65", + "weight": 1.0, + "context": "decorator", + "_origin": "ast" + }, + { + "source": "tests_test_scoring", + "target": "tests_test_scoring_calc", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_scoring.py", + "source_location": "L66", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_scoring_calc", + "target": "src_validation_scoring_scorecalculator", + "relation": "references", + "context": "return_type", + "confidence": "EXTRACTED", + "source_file": "tests/test_scoring.py", + "source_location": "L66", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_scoring_sample_pois", + "target": "tests_test_scoring_py_fixture", + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "tests/test_scoring.py", + "source_location": "L70", + "weight": 1.0, + "context": "decorator", + "_origin": "ast" + }, + { + "source": "tests_test_scoring", + "target": "tests_test_scoring_sample_pois", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_scoring.py", + "source_location": "L71", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_scoring_sample_pois", + "target": "src_data_models_poi", + "relation": "references", + "context": "generic_arg", + "confidence": "EXTRACTED", + "source_file": "tests/test_scoring.py", + "source_location": "L71", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_scoring_sample_matrix", + "target": "tests_test_scoring_py_fixture", + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "tests/test_scoring.py", + "source_location": "L80", + "weight": 1.0, + "context": "decorator", + "_origin": "ast" + }, + { + "source": "tests_test_scoring", + "target": "tests_test_scoring_sample_matrix", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_scoring.py", + "source_location": "L81", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_scoring_sample_plan", + "target": "tests_test_scoring_py_fixture", + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "tests/test_scoring.py", + "source_location": "L86", + "weight": 1.0, + "context": "decorator", + "_origin": "ast" + }, + { + "source": "tests_test_scoring", + "target": "tests_test_scoring_sample_plan", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_scoring.py", + "source_location": "L87", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_scoring_sample_plan", + "target": "src_data_models_itineraryplan", + "relation": "references", + "context": "return_type", + "confidence": "EXTRACTED", + "source_file": "tests/test_scoring.py", + "source_location": "L87", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_scoring", + "target": "tests_test_scoring_testweights", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_scoring.py", + "source_location": "L95", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_scoring_testweights", + "target": "tests_test_scoring_testweights_test_weights_sum_to_one", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_scoring.py", + "source_location": "L96", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_scoring_testweights", + "target": "tests_test_scoring_testweights_test_weights_keys", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_scoring.py", + "source_location": "L100", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_scoring", + "target": "tests_test_scoring_testcompute", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_scoring.py", + "source_location": "L110", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_scoring_testcompute", + "target": "tests_test_scoring_testcompute_test_final_score_in_range", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_scoring.py", + "source_location": "L111", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_scoring_testcompute", + "target": "tests_test_scoring_testcompute_test_hard_fail_caps_score_at_59", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_scoring.py", + "source_location": "L115", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_scoring_testcompute", + "target": "tests_test_scoring_testcompute_test_no_hard_fail_can_exceed_59", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_scoring.py", + "source_location": "L121", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_scoring_testcompute", + "target": "tests_test_scoring_testcompute_test_scores_object_fields", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_scoring.py", + "source_location": "L127", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_scoring", + "target": "tests_test_scoring_testefficiency", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_scoring.py", + "source_location": "L140", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_scoring_testefficiency", + "target": "tests_test_scoring_testefficiency_test_optimal_order_is_one", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_scoring.py", + "source_location": "L141", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_scoring_testefficiency", + "target": "tests_test_scoring_testefficiency_test_suboptimal_order_below_one", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_scoring.py", + "source_location": "L150", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_scoring_testefficiency", + "target": "tests_test_scoring_testefficiency_test_single_poi_returns_one", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_scoring.py", + "source_location": "L161", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_scoring", + "target": "tests_test_scoring_testfeasibility", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_scoring.py", + "source_location": "L170", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_scoring_testfeasibility", + "target": "tests_test_scoring_testfeasibility_test_no_hard_fails_hard_is_one", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_scoring.py", + "source_location": "L171", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_scoring_testfeasibility", + "target": "tests_test_scoring_testfeasibility_test_hard_fail_reduces_feasibility", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_scoring.py", + "source_location": "L176", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_scoring_testfeasibility", + "target": "tests_test_scoring_testfeasibility_test_feasibility_in_range", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_scoring.py", + "source_location": "L181", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_scoring", + "target": "tests_test_scoring_testpurposefit", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_scoring.py", + "source_location": "L190", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_scoring_testpurposefit", + "target": "tests_test_scoring_testpurposefit_test_cultural_all_cultural_high", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_scoring.py", + "source_location": "L191", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_scoring_testpurposefit", + "target": "tests_test_scoring_testpurposefit_test_cultural_all_sports_low", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_scoring.py", + "source_location": "L197", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_scoring_testpurposefit", + "target": "tests_test_scoring_testpurposefit_test_no_travel_type_returns_half", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_scoring.py", + "source_location": "L203", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_scoring", + "target": "tests_test_scoring_testcosinedistance", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_scoring.py", + "source_location": "L213", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_scoring_testcosinedistance", + "target": "tests_test_scoring_testcosinedistance_test_identical_vectors", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_scoring.py", + "source_location": "L214", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_scoring_testcosinedistance", + "target": "tests_test_scoring_testcosinedistance_test_orthogonal_vectors", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_scoring.py", + "source_location": "L218", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_scoring_testcosinedistance", + "target": "tests_test_scoring_testcosinedistance_test_zero_vector", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_scoring.py", + "source_location": "L223", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_scoring_make_poi", + "target": "src_data_models_poi", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_scoring.py", + "source_location": "L22", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_scoring_make_plan", + "target": "src_data_models_itineraryplan", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_scoring.py", + "source_location": "L33", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_scoring_make_hard_fail", + "target": "src_data_models_hardfail", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_scoring.py", + "source_location": "L53", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_scoring_calc", + "target": "src_validation_scoring_scorecalculator", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_scoring.py", + "source_location": "L67", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_scoring_sample_pois", + "target": "tests_test_scoring_make_poi", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_scoring.py", + "source_location": "L73", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_scoring_sample_matrix", + "target": "tests_test_scoring_make_matrix", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_scoring.py", + "source_location": "L83", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_scoring_sample_plan", + "target": "tests_test_scoring_make_plan", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_scoring.py", + "source_location": "L88", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_scoring_testcompute_test_hard_fail_caps_score_at_59", + "target": "tests_test_scoring_make_hard_fail", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_scoring.py", + "source_location": "L117", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_scoring_testefficiency_test_optimal_order_is_one", + "target": "tests_test_scoring_make_poi", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_scoring.py", + "source_location": "L144", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_scoring_testefficiency_test_suboptimal_order_below_one", + "target": "tests_test_scoring_make_poi", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_scoring.py", + "source_location": "L153", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_scoring_testefficiency_test_single_poi_returns_one", + "target": "tests_test_scoring_make_poi", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_scoring.py", + "source_location": "L162", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_scoring_testfeasibility_test_hard_fail_reduces_feasibility", + "target": "tests_test_scoring_make_hard_fail", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_scoring.py", + "source_location": "L177", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_scoring_testpurposefit_test_cultural_all_cultural_high", + "target": "tests_test_scoring_make_poi", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_scoring.py", + "source_location": "L192", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_scoring_testpurposefit_test_cultural_all_cultural_high", + "target": "tests_test_scoring_make_plan", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_scoring.py", + "source_location": "L193", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_scoring_testpurposefit_test_cultural_all_sports_low", + "target": "tests_test_scoring_make_poi", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_scoring.py", + "source_location": "L198", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_scoring_testpurposefit_test_cultural_all_sports_low", + "target": "tests_test_scoring_make_plan", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_scoring.py", + "source_location": "L199", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_scoring_testpurposefit_test_no_travel_type_returns_half", + "target": "tests_test_scoring_make_poi", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_scoring.py", + "source_location": "L204", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_scoring_testpurposefit_test_no_travel_type_returns_half", + "target": "tests_test_scoring_make_plan", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_scoring.py", + "source_location": "L205", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_scoring_rationale_1", + "target": "tests_test_scoring", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/test_scoring.py", + "source_location": "L1", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_theme_alignment", + "target": "unittest_mock", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_theme_alignment.py", + "source_location": "L4", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_theme_alignment", + "target": "pytest", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_theme_alignment.py", + "source_location": "L6", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_theme_alignment", + "target": "src_data_theme_taxonomy", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_theme_alignment.py", + "source_location": "L8", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_theme_alignment", + "target": "src_scoring_theme_alignment", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_theme_alignment.py", + "source_location": "L9", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_theme_alignment_clear_cache", + "target": "tests_test_theme_alignment_py_fixture", + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "tests/test_theme_alignment.py", + "source_location": "L21", + "weight": 1.0, + "context": "decorator", + "_origin": "ast" + }, + { + "source": "tests_test_theme_alignment", + "target": "tests_test_theme_alignment_clear_cache", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_theme_alignment.py", + "source_location": "L22", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_theme_alignment", + "target": "tests_test_theme_alignment_testnoapikey", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_theme_alignment.py", + "source_location": "L29", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_theme_alignment_testnoapikey", + "target": "tests_test_theme_alignment_testnoapikey_test_skip_returns_informational_only", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_theme_alignment.py", + "source_location": "L30", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_theme_alignment", + "target": "tests_test_theme_alignment_testclassifyscore", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_theme_alignment.py", + "source_location": "L41", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_theme_alignment_testclassifyscore", + "target": "tests_test_theme_alignment_testclassifyscore_test_high_score_no_penalty", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_theme_alignment.py", + "source_location": "L42", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_theme_alignment_testclassifyscore", + "target": "tests_test_theme_alignment_testclassifyscore_test_low_score_critical", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_theme_alignment.py", + "source_location": "L47", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_theme_alignment", + "target": "tests_test_theme_alignment_testparsellmresponse", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_theme_alignment.py", + "source_location": "L53", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_theme_alignment_testparsellmresponse", + "target": "tests_test_theme_alignment_testparsellmresponse_test_clean_json", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_theme_alignment.py", + "source_location": "L54", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_theme_alignment_testparsellmresponse", + "target": "tests_test_theme_alignment_testparsellmresponse_test_score_clamped_to_1", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_theme_alignment.py", + "source_location": "L61", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_theme_alignment_testparsellmresponse", + "target": "tests_test_theme_alignment_testparsellmresponse_test_code_block_stripped", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_theme_alignment.py", + "source_location": "L66", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_theme_alignment", + "target": "tests_test_theme_alignment_testevaluatewithmockclient", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_theme_alignment.py", + "source_location": "L72", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_theme_alignment_testevaluatewithmockclient", + "target": "tests_test_theme_alignment_testevaluatewithmockclient_test_high_alignment_no_penalty", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_theme_alignment.py", + "source_location": "L73", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_theme_alignment_testevaluatewithmockclient", + "target": "tests_test_theme_alignment_testevaluatewithmockclient_test_low_alignment_critical", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_theme_alignment.py", + "source_location": "L90", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_theme_alignment_testevaluatewithmockclient", + "target": "tests_test_theme_alignment_testevaluatewithmockclient_test_cache_hit_skips_second_call", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_theme_alignment.py", + "source_location": "L106", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_theme_alignment_testevaluatewithmockclient", + "target": "tests_test_theme_alignment_testevaluatewithmockclient_test_llm_failure_returns_informational", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_theme_alignment.py", + "source_location": "L121", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_theme_alignment_rationale_1", + "target": "tests_test_theme_alignment", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/test_theme_alignment.py", + "source_location": "L1", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_theme_alignment_rationale_31", + "target": "tests_test_theme_alignment_testnoapikey_test_skip_returns_informational_only", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/test_theme_alignment.py", + "source_location": "L31", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_theme_alignment_rationale_91", + "target": "tests_test_theme_alignment_testevaluatewithmockclient_test_low_alignment_critical", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/test_theme_alignment.py", + "source_location": "L91", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_theme_alignment_rationale_107", + "target": "tests_test_theme_alignment_testevaluatewithmockclient_test_cache_hit_skips_second_call", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/test_theme_alignment.py", + "source_location": "L107", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_theme_alignment_rationale_122", + "target": "tests_test_theme_alignment_testevaluatewithmockclient_test_llm_failure_returns_informational", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/test_theme_alignment.py", + "source_location": "L122", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_theme_taxonomy", + "target": "pytest", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_theme_taxonomy.py", + "source_location": "L4", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_theme_taxonomy", + "target": "src_data_theme_taxonomy", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_theme_taxonomy.py", + "source_location": "L6", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_theme_taxonomy", + "target": "tests_test_theme_taxonomy_testplacetypecount", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_theme_taxonomy.py", + "source_location": "L15", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_theme_taxonomy_testplacetypecount", + "target": "tests_test_theme_taxonomy_testplacetypecount_test_9_place_types", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_theme_taxonomy.py", + "source_location": "L16", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_theme_taxonomy_testplacetypecount", + "target": "tests_test_theme_taxonomy_testplacetypecount_test_9_travel_styles", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_theme_taxonomy.py", + "source_location": "L21", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_theme_taxonomy", + "target": "tests_test_theme_taxonomy_testuserpreferences", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_theme_taxonomy.py", + "source_location": "L27", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_theme_taxonomy_testuserpreferences", + "target": "tests_test_theme_taxonomy_testuserpreferences_test_valid_input", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_theme_taxonomy.py", + "source_location": "L28", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_theme_taxonomy_testuserpreferences", + "target": "tests_test_theme_taxonomy_testuserpreferences_test_invalid_place_type_raises", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_theme_taxonomy.py", + "source_location": "L33", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_theme_taxonomy_testuserpreferences", + "target": "tests_test_theme_taxonomy_testuserpreferences_test_invalid_style_raises", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_theme_taxonomy.py", + "source_location": "L37", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_theme_taxonomy_testuserpreferences", + "target": "tests_test_theme_taxonomy_testuserpreferences_test_empty_both_axes_raises", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_theme_taxonomy.py", + "source_location": "L41", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_theme_taxonomy", + "target": "tests_test_theme_taxonomy_testmatchesplacetype", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_theme_taxonomy.py", + "source_location": "L46", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_theme_taxonomy_testmatchesplacetype", + "target": "tests_test_theme_taxonomy_testmatchesplacetype_test_mountain_matches_na04", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_theme_taxonomy.py", + "source_location": "L47", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_theme_taxonomy_testmatchesplacetype", + "target": "tests_test_theme_taxonomy_testmatchesplacetype_test_beach_matches_na12", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_theme_taxonomy.py", + "source_location": "L51", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_theme_taxonomy_testmatchesplacetype", + "target": "tests_test_theme_taxonomy_testmatchesplacetype_test_festival_matches_content_type_15", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_theme_taxonomy.py", + "source_location": "L54", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_theme_taxonomy_testmatchesplacetype", + "target": "tests_test_theme_taxonomy_testmatchesplacetype_test_no_match", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_theme_taxonomy.py", + "source_location": "L57", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_theme_taxonomy", + "target": "tests_test_theme_taxonomy_testgetplacetypesfor", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_theme_taxonomy.py", + "source_location": "L62", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_theme_taxonomy_testgetplacetypesfor", + "target": "tests_test_theme_taxonomy_testgetplacetypesfor_test_mountain_code_returns_list", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_theme_taxonomy.py", + "source_location": "L63", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_theme_taxonomy_testgetplacetypesfor", + "target": "tests_test_theme_taxonomy_testgetplacetypesfor_test_no_code_returns_empty", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_theme_taxonomy.py", + "source_location": "L67", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_theme_taxonomy_rationale_1", + "target": "tests_test_theme_taxonomy", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/test_theme_taxonomy.py", + "source_location": "L1", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_travel_ratio", + "target": "pytest", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_travel_ratio.py", + "source_location": "L4", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_travel_ratio", + "target": "src_data_models", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_travel_ratio.py", + "source_location": "L6", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_travel_ratio", + "target": "src_scoring_travel_ratio", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_travel_ratio.py", + "source_location": "L7", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_travel_ratio", + "target": "src_validation_vrptw_engine", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_travel_ratio.py", + "source_location": "L12", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_travel_ratio", + "target": "tests_test_travel_ratio_make_place", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_travel_ratio.py", + "source_location": "L15", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_travel_ratio", + "target": "tests_test_travel_ratio_test_no_penalty_when_ratio_low", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_travel_ratio.py", + "source_location": "L22", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_travel_ratio", + "target": "tests_test_travel_ratio_test_penalty_when_ratio_high", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_travel_ratio.py", + "source_location": "L35", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_travel_ratio", + "target": "tests_test_travel_ratio_test_overall_ratio_aggregates_across_days", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_travel_ratio.py", + "source_location": "L48", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_travel_ratio_test_no_penalty_when_ratio_low", + "target": "tests_test_travel_ratio_make_place", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_travel_ratio.py", + "source_location": "L25", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_travel_ratio_test_penalty_when_ratio_high", + "target": "tests_test_travel_ratio_make_place", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_travel_ratio.py", + "source_location": "L38", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_travel_ratio_test_overall_ratio_aggregates_across_days", + "target": "tests_test_travel_ratio_make_place", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_travel_ratio.py", + "source_location": "L51", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_travel_ratio_rationale_1", + "target": "tests_test_travel_ratio", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/test_travel_ratio.py", + "source_location": "L1", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_travel_ratio_rationale_23", + "target": "tests_test_travel_ratio_test_no_penalty_when_ratio_low", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/test_travel_ratio.py", + "source_location": "L23", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_travel_ratio_rationale_36", + "target": "tests_test_travel_ratio_test_penalty_when_ratio_high", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/test_travel_ratio.py", + "source_location": "L36", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine", + "target": "math", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L4", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine", + "target": "typing", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L5", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine", + "target": "unittest_mock", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L6", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine", + "target": "pytest", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L8", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine", + "target": "src_data_models", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L10", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine", + "target": "src_validation_vrptw_engine", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L11", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine", + "target": "tests_test_vrptw_engine_make_place", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L24", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_make_place", + "target": "src_data_models_vrptwplace", + "relation": "references", + "context": "return_type", + "confidence": "EXTRACTED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L24", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine", + "target": "tests_test_vrptw_engine_testhaversinematrix", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L54", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testhaversinematrix", + "target": "tests_test_vrptw_engine_testhaversinematrix_test_same_point_is_zero", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L55", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testhaversinematrix", + "target": "tests_test_vrptw_engine_testhaversinematrix_test_known_distance", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L59", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testhaversinematrix", + "target": "tests_test_vrptw_engine_testhaversinematrix_test_symmetry", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L66", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine", + "target": "tests_test_vrptw_engine_testcachedroutematrix", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L75", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testcachedroutematrix", + "target": "tests_test_vrptw_engine_testcachedroutematrix_test_cache_hit", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L76", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testcachedroutematrix", + "target": "tests_test_vrptw_engine_testcachedroutematrix_test_cache_miss_falls_back_to_haversine", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L81", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testcachedroutematrix", + "target": "tests_test_vrptw_engine_testcachedroutematrix_test_reverse_key_fallback", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L87", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testcachedroutematrix", + "target": "tests_test_vrptw_engine_testcachedroutematrix_test_load_from_dict", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L93", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine", + "target": "tests_test_vrptw_engine_testdepotconstraint", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L105", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testdepotconstraint", + "target": "tests_test_vrptw_engine_testdepotconstraint_engine_with_haversine", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L106", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testdepotconstraint_engine_with_haversine", + "target": "src_validation_vrptw_engine_vrptwengine", + "relation": "references", + "context": "return_type", + "confidence": "EXTRACTED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L106", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testdepotconstraint", + "target": "tests_test_vrptw_engine_testdepotconstraint_test_2n3d_day1_must_end_at_depot", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L109", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testdepotconstraint", + "target": "tests_test_vrptw_engine_testdepotconstraint_test_2n3d_middle_day_must_start_and_end_at_depot", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L126", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testdepotconstraint", + "target": "tests_test_vrptw_engine_testdepotconstraint_test_1n2d_no_depot_constraint_applied", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L139", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine", + "target": "tests_test_vrptw_engine_testtimewindowfeasibility", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L161", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testtimewindowfeasibility", + "target": "tests_test_vrptw_engine_testtimewindowfeasibility_engine", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L162", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testtimewindowfeasibility_engine", + "target": "src_validation_vrptw_engine_vrptwengine", + "relation": "references", + "context": "return_type", + "confidence": "EXTRACTED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L162", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testtimewindowfeasibility", + "target": "tests_test_vrptw_engine_testtimewindowfeasibility_test_feasible_schedule_passes", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L165", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testtimewindowfeasibility", + "target": "tests_test_vrptw_engine_testtimewindowfeasibility_test_infeasible_close_time_triggers_critical", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L174", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testtimewindowfeasibility", + "target": "tests_test_vrptw_engine_testtimewindowfeasibility_test_safety_margin_warning", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L185", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine", + "target": "tests_test_vrptw_engine_testefficiencygap", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L203", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testefficiencygap", + "target": "tests_test_vrptw_engine_testefficiencygap_test_optimal_order_same_as_user_gives_zero_gap", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L204", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testefficiencygap", + "target": "tests_test_vrptw_engine_testefficiencygap_test_reversed_inefficient_route_shows_gap", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L212", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine", + "target": "tests_test_vrptw_engine_testfatiguescore", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L225", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testfatiguescore", + "target": "tests_test_vrptw_engine_testfatiguescore_test_12h_schedule_no_fatigue_penalty", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L226", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testfatiguescore", + "target": "tests_test_vrptw_engine_testfatiguescore_test_long_schedule_triggers_fatigue", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L239", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine", + "target": "tests_test_vrptw_engine_testortoolsdegradation", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L256", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testortoolsdegradation", + "target": "tests_test_vrptw_engine_testortoolsdegradation_test_missing_ortools_still_returns_result", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L257", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine", + "target": "tests_test_vrptw_engine_testriskscore", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L277", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testriskscore", + "target": "tests_test_vrptw_engine_testriskscore_test_risk_score_in_0_100", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L278", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testriskscore", + "target": "tests_test_vrptw_engine_testriskscore_test_pass_fail_threshold", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L284", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine", + "target": "tests_test_vrptw_engine_test_constants_accessible", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L298", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine", + "target": "tests_test_vrptw_engine_testmodelvalidation", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L308", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testmodelvalidation", + "target": "tests_test_vrptw_engine_testmodelvalidation_test_invalid_lat_raises", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L309", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testmodelvalidation", + "target": "tests_test_vrptw_engine_testmodelvalidation_test_invalid_lng_raises", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L313", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testmodelvalidation", + "target": "tests_test_vrptw_engine_testmodelvalidation_test_invalid_time_format_raises", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L317", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testmodelvalidation", + "target": "tests_test_vrptw_engine_testmodelvalidation_test_invalid_time_value_raises", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L321", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testmodelvalidation", + "target": "tests_test_vrptw_engine_testmodelvalidation_test_negative_stay_raises", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L325", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testmodelvalidation", + "target": "tests_test_vrptw_engine_testmodelvalidation_test_zero_stay_allowed_for_depot", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L329", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testmodelvalidation", + "target": "tests_test_vrptw_engine_testmodelvalidation_test_empty_day_raises", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L334", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testmodelvalidation", + "target": "tests_test_vrptw_engine_testmodelvalidation_test_empty_days_raises", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L338", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testmodelvalidation", + "target": "tests_test_vrptw_engine_testmodelvalidation_test_open_minutes_property", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L342", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testmodelvalidation", + "target": "tests_test_vrptw_engine_testmodelvalidation_test_close_minutes_property", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L346", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine", + "target": "tests_test_vrptw_engine_testefficiencygapthreshold", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L355", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testefficiencygapthreshold", + "target": "tests_test_vrptw_engine_testefficiencygapthreshold_test_gap_over_threshold_adds_warning", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L356", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine", + "target": "tests_test_vrptw_engine_testmultidayresult", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L376", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testmultidayresult", + "target": "tests_test_vrptw_engine_testmultidayresult_test_multi_day_returns_per_day_comparison", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L377", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testmultidayresult", + "target": "tests_test_vrptw_engine_testmultidayresult_test_multi_day_user_total_travel_is_sum", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L391", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testmultidayresult", + "target": "tests_test_vrptw_engine_testmultidayresult_test_single_place_day_no_travel", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L404", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine", + "target": "tests_test_vrptw_engine_test_summary_contains_score", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L415", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine", + "target": "tests_test_vrptw_engine_test_deep_dive_items_have_all_fields", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L427", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine", + "target": "tests_test_vrptw_engine_test_cached_matrix_from_actual_file", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L444", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_make_place", + "target": "src_data_models_vrptwplace", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L33", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testcachedroutematrix_test_load_from_dict", + "target": "tests_test_vrptw_engine_make_place", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L96", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testdepotconstraint_engine_with_haversine", + "target": "src_validation_vrptw_engine_vrptwengine", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L107", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testdepotconstraint_test_2n3d_day1_must_end_at_depot", + "target": "tests_test_vrptw_engine_testdepotconstraint_engine_with_haversine", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L118", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testdepotconstraint_test_2n3d_middle_day_must_start_and_end_at_depot", + "target": "tests_test_vrptw_engine_testdepotconstraint_engine_with_haversine", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L134", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testdepotconstraint_test_1n2d_no_depot_constraint_applied", + "target": "tests_test_vrptw_engine_testdepotconstraint_engine_with_haversine", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L147", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testtimewindowfeasibility_engine", + "target": "src_validation_vrptw_engine_vrptwengine", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L163", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testtimewindowfeasibility_test_feasible_schedule_passes", + "target": "tests_test_vrptw_engine_testtimewindowfeasibility_engine", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L169", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testtimewindowfeasibility_test_infeasible_close_time_triggers_critical", + "target": "tests_test_vrptw_engine_make_place", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L176", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testtimewindowfeasibility_test_infeasible_close_time_triggers_critical", + "target": "tests_test_vrptw_engine_testtimewindowfeasibility_engine", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L180", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testtimewindowfeasibility_test_safety_margin_warning", + "target": "tests_test_vrptw_engine_make_place", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L189", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testtimewindowfeasibility_test_safety_margin_warning", + "target": "tests_test_vrptw_engine_testtimewindowfeasibility_engine", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L193", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testefficiencygap_test_optimal_order_same_as_user_gives_zero_gap", + "target": "src_validation_vrptw_engine_vrptwengine", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L207", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testefficiencygap_test_reversed_inefficient_route_shows_gap", + "target": "src_validation_vrptw_engine_vrptwengine", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L215", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testfatiguescore_test_12h_schedule_no_fatigue_penalty", + "target": "tests_test_vrptw_engine_make_place", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L229", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testfatiguescore_test_12h_schedule_no_fatigue_penalty", + "target": "src_validation_vrptw_engine_vrptwengine", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L233", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testfatiguescore_test_long_schedule_triggers_fatigue", + "target": "tests_test_vrptw_engine_make_place", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L242", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testfatiguescore_test_long_schedule_triggers_fatigue", + "target": "src_validation_vrptw_engine_vrptwengine", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L246", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testortoolsdegradation_test_missing_ortools_still_returns_result", + "target": "src_validation_vrptw_engine_vrptwengine", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L265", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testriskscore_test_risk_score_in_0_100", + "target": "src_validation_vrptw_engine_vrptwengine", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L280", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testriskscore_test_pass_fail_threshold", + "target": "src_validation_vrptw_engine_vrptwengine", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L286", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testmodelvalidation_test_invalid_lat_raises", + "target": "src_data_models_vrptwplace", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L311", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testmodelvalidation_test_invalid_lng_raises", + "target": "src_data_models_vrptwplace", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L315", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testmodelvalidation_test_invalid_time_format_raises", + "target": "src_data_models_vrptwplace", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L319", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testmodelvalidation_test_invalid_time_value_raises", + "target": "src_data_models_vrptwplace", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L323", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testmodelvalidation_test_negative_stay_raises", + "target": "src_data_models_vrptwplace", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L327", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testmodelvalidation_test_zero_stay_allowed_for_depot", + "target": "src_data_models_vrptwplace", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L330", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testmodelvalidation_test_open_minutes_property", + "target": "tests_test_vrptw_engine_make_place", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L343", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testmodelvalidation_test_close_minutes_property", + "target": "tests_test_vrptw_engine_make_place", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L347", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testefficiencygapthreshold_test_gap_over_threshold_adds_warning", + "target": "tests_test_vrptw_engine_make_place", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L360", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testefficiencygapthreshold_test_gap_over_threshold_adds_warning", + "target": "src_validation_vrptw_engine_vrptwengine", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L364", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testmultidayresult_test_multi_day_returns_per_day_comparison", + "target": "src_validation_vrptw_engine_vrptwengine", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L384", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testmultidayresult_test_multi_day_user_total_travel_is_sum", + "target": "src_validation_vrptw_engine_vrptwengine", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L398", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testmultidayresult_test_single_place_day_no_travel", + "target": "src_validation_vrptw_engine_vrptwengine", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L406", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_test_summary_contains_score", + "target": "src_validation_vrptw_engine_vrptwengine", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L417", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_test_deep_dive_items_have_all_fields", + "target": "tests_test_vrptw_engine_make_place", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L429", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_test_deep_dive_items_have_all_fields", + "target": "src_validation_vrptw_engine_vrptwengine", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L431", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_test_cached_matrix_from_actual_file", + "target": "tests_test_vrptw_engine_make_place", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L454", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_rationale_1", + "target": "tests_test_vrptw_engine", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L1", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_rationale_88", + "target": "tests_test_vrptw_engine_testcachedroutematrix_test_reverse_key_fallback", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L88", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_rationale_110", + "target": "tests_test_vrptw_engine_testdepotconstraint_test_2n3d_day1_must_end_at_depot", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L110", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_rationale_140", + "target": "tests_test_vrptw_engine_testdepotconstraint_test_1n2d_no_depot_constraint_applied", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L140", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_rationale_175", + "target": "tests_test_vrptw_engine_testtimewindowfeasibility_test_infeasible_close_time_triggers_critical", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L175", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_rationale_186", + "target": "tests_test_vrptw_engine_testtimewindowfeasibility_test_safety_margin_warning", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L186", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_rationale_205", + "target": "tests_test_vrptw_engine_testefficiencygap_test_optimal_order_same_as_user_gives_zero_gap", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L205", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_rationale_213", + "target": "tests_test_vrptw_engine_testefficiencygap_test_reversed_inefficient_route_shows_gap", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L213", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_rationale_258", + "target": "tests_test_vrptw_engine_testortoolsdegradation_test_missing_ortools_still_returns_result", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L258", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_rationale_357", + "target": "tests_test_vrptw_engine_testefficiencygapthreshold_test_gap_over_threshold_adds_warning", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L357", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_rationale_428", + "target": "tests_test_vrptw_engine_test_deep_dive_items_have_all_fields", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L428", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_rationale_445", + "target": "tests_test_vrptw_engine_test_cached_matrix_from_actual_file", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L445", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_warning", + "target": "pytest", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_warning.py", + "source_location": "L4", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_warning", + "target": "src_data_models", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_warning.py", + "source_location": "L6", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_warning", + "target": "src_validation_warning", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_warning.py", + "source_location": "L7", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_warning", + "target": "tests_test_warning_make_poi", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_warning.py", + "source_location": "L14", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_warning_make_poi", + "target": "src_data_models_poi", + "relation": "references", + "context": "return_type", + "confidence": "EXTRACTED", + "source_file": "tests/test_warning.py", + "source_location": "L14", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_warning", + "target": "tests_test_warning_make_plan", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_warning.py", + "source_location": "L29", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_warning_make_plan", + "target": "src_data_models_itineraryplan", + "relation": "references", + "context": "return_type", + "confidence": "EXTRACTED", + "source_file": "tests/test_warning.py", + "source_location": "L29", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_warning", + "target": "tests_test_warning_make_matrix", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_warning.py", + "source_location": "L44", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_warning_detector", + "target": "tests_test_warning_py_fixture", + "relation": "references", + "confidence": "EXTRACTED", + "source_file": "tests/test_warning.py", + "source_location": "L58", + "weight": 1.0, + "context": "decorator", + "_origin": "ast" + }, + { + "source": "tests_test_warning", + "target": "tests_test_warning_detector", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_warning.py", + "source_location": "L59", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_warning_detector", + "target": "src_validation_warning_warningdetector", + "relation": "references", + "context": "return_type", + "confidence": "EXTRACTED", + "source_file": "tests/test_warning.py", + "source_location": "L59", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_warning", + "target": "tests_test_warning_testdenseschedule", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_warning.py", + "source_location": "L67", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_warning_testdenseschedule", + "target": "tests_test_warning_testdenseschedule_test_dense_trigger_baby", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_warning.py", + "source_location": "L68", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_warning_testdenseschedule", + "target": "tests_test_warning_testdenseschedule_test_dense_trigger_friends_heavy", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_warning.py", + "source_location": "L77", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_warning_testdenseschedule", + "target": "tests_test_warning_testdenseschedule_test_no_dense_within_threshold", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_warning.py", + "source_location": "L86", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_warning_testdenseschedule", + "target": "tests_test_warning_testdenseschedule_test_dense_message_includes_party_type", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_warning.py", + "source_location": "L95", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_warning", + "target": "tests_test_warning_testphysicalstrain", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_warning.py", + "source_location": "L109", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_warning_testphysicalstrain", + "target": "tests_test_warning_testphysicalstrain_test_strain_trigger", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_warning.py", + "source_location": "L110", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_warning_testphysicalstrain", + "target": "tests_test_warning_testphysicalstrain_test_no_strain_short_distance", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_warning.py", + "source_location": "L123", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_warning", + "target": "tests_test_warning_testpurposemismatch", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_warning.py", + "source_location": "L138", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_warning_testpurposemismatch", + "target": "tests_test_warning_testpurposemismatch_test_mismatch_cultural_all_sports", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_warning.py", + "source_location": "L139", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_warning_testpurposemismatch", + "target": "tests_test_warning_testpurposemismatch_test_no_mismatch_cultural_all_cultural", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_warning.py", + "source_location": "L150", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_warning_testpurposemismatch", + "target": "tests_test_warning_testpurposemismatch_test_no_mismatch_when_no_travel_type", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_warning.py", + "source_location": "L161", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_warning", + "target": "tests_test_warning_testarearevisit", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_warning.py", + "source_location": "L173", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_warning_testarearevisit", + "target": "tests_test_warning_testarearevisit_test_consecutive_same_category_triggers", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_warning.py", + "source_location": "L174", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_warning_testarearevisit", + "target": "tests_test_warning_testarearevisit_test_all_different_no_revisit", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_warning.py", + "source_location": "L187", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_warning_testarearevisit", + "target": "tests_test_warning_testarearevisit_test_three_consecutive_triggers", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_warning.py", + "source_location": "L199", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_warning_testarearevisit", + "target": "tests_test_warning_testarearevisit_test_two_consecutive_no_trigger", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_warning.py", + "source_location": "L212", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_warning", + "target": "tests_test_warning_testwarningfields", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_warning.py", + "source_location": "L230", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_warning_testwarningfields", + "target": "tests_test_warning_testwarningfields_test_warning_has_confidence_from_types", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_warning.py", + "source_location": "L231", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_warning_testwarningfields", + "target": "tests_test_warning_testwarningfields_test_warning_message_not_empty", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_warning.py", + "source_location": "L242", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_warning", + "target": "tests_test_warning_testdayindex", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/test_warning.py", + "source_location": "L255", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_warning_testdayindex", + "target": "tests_test_warning_testdayindex_test_day_index_defaults_to_none", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_warning.py", + "source_location": "L256", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_warning_testdayindex", + "target": "tests_test_warning_testdayindex_test_day_index_and_poi_names_set_when_passed", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/test_warning.py", + "source_location": "L266", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_warning_make_poi", + "target": "src_data_models_poi", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_warning.py", + "source_location": "L22", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_warning_make_plan", + "target": "src_data_models_itineraryplan", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_warning.py", + "source_location": "L35", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_warning_detector", + "target": "src_validation_warning_warningdetector", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_warning.py", + "source_location": "L60", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_warning_testdenseschedule_test_dense_trigger_baby", + "target": "tests_test_warning_make_poi", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_warning.py", + "source_location": "L70", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_warning_testdenseschedule_test_dense_trigger_baby", + "target": "tests_test_warning_make_matrix", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_warning.py", + "source_location": "L71", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_warning_testdenseschedule_test_dense_trigger_baby", + "target": "tests_test_warning_make_plan", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_warning.py", + "source_location": "L72", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_warning_testdenseschedule_test_dense_trigger_friends_heavy", + "target": "tests_test_warning_make_poi", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_warning.py", + "source_location": "L79", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_warning_testdenseschedule_test_dense_trigger_friends_heavy", + "target": "tests_test_warning_make_matrix", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_warning.py", + "source_location": "L80", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_warning_testdenseschedule_test_dense_trigger_friends_heavy", + "target": "tests_test_warning_make_plan", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_warning.py", + "source_location": "L81", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_warning_testdenseschedule_test_no_dense_within_threshold", + "target": "tests_test_warning_make_poi", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_warning.py", + "source_location": "L88", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_warning_testdenseschedule_test_no_dense_within_threshold", + "target": "tests_test_warning_make_matrix", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_warning.py", + "source_location": "L89", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_warning_testdenseschedule_test_no_dense_within_threshold", + "target": "tests_test_warning_make_plan", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_warning.py", + "source_location": "L90", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_warning_testdenseschedule_test_dense_message_includes_party_type", + "target": "tests_test_warning_make_poi", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_warning.py", + "source_location": "L96", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_warning_testdenseschedule_test_dense_message_includes_party_type", + "target": "tests_test_warning_make_matrix", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_warning.py", + "source_location": "L97", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_warning_testdenseschedule_test_dense_message_includes_party_type", + "target": "tests_test_warning_make_plan", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_warning.py", + "source_location": "L98", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_warning_testphysicalstrain_test_strain_trigger", + "target": "tests_test_warning_make_poi", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_warning.py", + "source_location": "L113", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_warning_testphysicalstrain_test_strain_trigger", + "target": "tests_test_warning_make_plan", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_warning.py", + "source_location": "L118", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_warning_testphysicalstrain_test_no_strain_short_distance", + "target": "tests_test_warning_make_poi", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_warning.py", + "source_location": "L125", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_warning_testphysicalstrain_test_no_strain_short_distance", + "target": "tests_test_warning_make_plan", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_warning.py", + "source_location": "L128", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_warning_testpurposemismatch_test_mismatch_cultural_all_sports", + "target": "tests_test_warning_make_poi", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_warning.py", + "source_location": "L142", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_warning_testpurposemismatch_test_mismatch_cultural_all_sports", + "target": "tests_test_warning_make_plan", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_warning.py", + "source_location": "L145", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_warning_testpurposemismatch_test_no_mismatch_cultural_all_cultural", + "target": "tests_test_warning_make_poi", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_warning.py", + "source_location": "L153", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_warning_testpurposemismatch_test_no_mismatch_cultural_all_cultural", + "target": "tests_test_warning_make_plan", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_warning.py", + "source_location": "L156", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_warning_testpurposemismatch_test_no_mismatch_when_no_travel_type", + "target": "tests_test_warning_make_poi", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_warning.py", + "source_location": "L162", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_warning_testpurposemismatch_test_no_mismatch_when_no_travel_type", + "target": "tests_test_warning_make_plan", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_warning.py", + "source_location": "L163", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_warning_testarearevisit_test_consecutive_same_category_triggers", + "target": "tests_test_warning_make_poi", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_warning.py", + "source_location": "L177", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_warning_testarearevisit_test_consecutive_same_category_triggers", + "target": "tests_test_warning_make_plan", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_warning.py", + "source_location": "L182", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_warning_testarearevisit_test_all_different_no_revisit", + "target": "tests_test_warning_make_poi", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_warning.py", + "source_location": "L189", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_warning_testarearevisit_test_all_different_no_revisit", + "target": "tests_test_warning_make_plan", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_warning.py", + "source_location": "L194", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_warning_testarearevisit_test_three_consecutive_triggers", + "target": "tests_test_warning_make_poi", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_warning.py", + "source_location": "L202", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_warning_testarearevisit_test_three_consecutive_triggers", + "target": "tests_test_warning_make_plan", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_warning.py", + "source_location": "L207", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_warning_testarearevisit_test_two_consecutive_no_trigger", + "target": "tests_test_warning_make_poi", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_warning.py", + "source_location": "L215", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_warning_testarearevisit_test_two_consecutive_no_trigger", + "target": "tests_test_warning_make_plan", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_warning.py", + "source_location": "L220", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_warning_testwarningfields_test_warning_has_confidence_from_types", + "target": "tests_test_warning_make_poi", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_warning.py", + "source_location": "L233", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_warning_testwarningfields_test_warning_has_confidence_from_types", + "target": "tests_test_warning_make_plan", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_warning.py", + "source_location": "L236", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_warning_testwarningfields_test_warning_message_not_empty", + "target": "tests_test_warning_make_poi", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_warning.py", + "source_location": "L243", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_warning_testwarningfields_test_warning_message_not_empty", + "target": "tests_test_warning_make_matrix", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_warning.py", + "source_location": "L244", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_warning_testwarningfields_test_warning_message_not_empty", + "target": "tests_test_warning_make_plan", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_warning.py", + "source_location": "L245", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_warning_testdayindex_test_day_index_defaults_to_none", + "target": "tests_test_warning_make_poi", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_warning.py", + "source_location": "L257", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_warning_testdayindex_test_day_index_defaults_to_none", + "target": "tests_test_warning_make_matrix", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_warning.py", + "source_location": "L258", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_warning_testdayindex_test_day_index_defaults_to_none", + "target": "tests_test_warning_make_plan", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_warning.py", + "source_location": "L259", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_warning_testdayindex_test_day_index_and_poi_names_set_when_passed", + "target": "tests_test_warning_make_poi", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_warning.py", + "source_location": "L267", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_warning_testdayindex_test_day_index_and_poi_names_set_when_passed", + "target": "tests_test_warning_make_matrix", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_warning.py", + "source_location": "L268", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_warning_testdayindex_test_day_index_and_poi_names_set_when_passed", + "target": "tests_test_warning_make_plan", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_warning.py", + "source_location": "L269", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_warning_rationale_1", + "target": "tests_test_warning", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/test_warning.py", + "source_location": "L1", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_matrix_init", + "target": "src_matrix_redis_matrix", + "relation": "re_exports", + "context": "export", + "confidence": "EXTRACTED", + "source_file": "src/matrix/__init__.py", + "source_location": "L2", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_build_itinerary_excel", + "target": "src_data_dwell_db_get_recommended_dwell", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/build_itinerary_excel.py", + "source_location": "L41", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_build_itinerary_excel", + "target": "src_data_hours_db_resolve_hours", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/build_itinerary_excel.py", + "source_location": "L42", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_build_itinerary_excel", + "target": "src_data_hours_db_hoursspec", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/build_itinerary_excel.py", + "source_location": "L42", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_build_itinerary_excel", + "target": "src_data_hours_db_to_minutes", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/build_itinerary_excel.py", + "source_location": "L42", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_build_itinerary_excel", + "target": "src_data_models_vrptwday", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/build_itinerary_excel.py", + "source_location": "L43", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_build_itinerary_excel", + "target": "src_data_models_vrptwplace", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/build_itinerary_excel.py", + "source_location": "L43", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_build_itinerary_excel", + "target": "src_scoring_cluster_dispersion_evaluate_cluster_dispersion", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/build_itinerary_excel.py", + "source_location": "L44", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_build_itinerary_excel", + "target": "src_scoring_travel_ratio_evaluate_travel_ratio", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/build_itinerary_excel.py", + "source_location": "L45", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_build_itinerary_excel", + "target": "src_validation_kakao_matrix_kakaomobilitymatrix", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/build_itinerary_excel.py", + "source_location": "L46", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_build_itinerary_excel", + "target": "src_validation_vrptw_engine_haversinematrix", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/build_itinerary_excel.py", + "source_location": "L47", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_build_travel_matrix", + "target": "src_data_models_vrptwplace", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/build_travel_matrix.py", + "source_location": "L39", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_build_travel_matrix", + "target": "src_validation_kakao_matrix_kakaomobilitymatrix", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/build_travel_matrix.py", + "source_location": "L40", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_setup_and_test", + "target": "src_validation_kakao_matrix_kakaomobilitymatrix", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/setup_and_test.py", + "source_location": "L47", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_setup_and_test", + "target": "src_data_models_vrptwplace", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/setup_and_test.py", + "source_location": "L48", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_build_poi_dataset", + "target": "src_data_barrier_free_api_barrierfreeapiclient", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "scripts/build_poi_dataset.py", + "source_location": "L25", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_build_poi_dataset", + "target": "src_data_models_settings", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "scripts/build_poi_dataset.py", + "source_location": "L26", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_build_poi_dataset", + "target": "src_data_wellness_api_wellnessapiclient", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "scripts/build_poi_dataset.py", + "source_location": "L27", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_demo_live_e2e", + "target": "src_data_graph_retriever_graphretriever", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "scripts/demo_live_e2e.py", + "source_location": "L20", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_demo_live_e2e", + "target": "src_data_models_dayplan", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "scripts/demo_live_e2e.py", + "source_location": "L21", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_demo_live_e2e", + "target": "src_data_models_hardfail", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "scripts/demo_live_e2e.py", + "source_location": "L21", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_demo_live_e2e", + "target": "src_data_models_itineraryplan", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "scripts/demo_live_e2e.py", + "source_location": "L21", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_demo_live_e2e", + "target": "src_data_models_placeinput", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "scripts/demo_live_e2e.py", + "source_location": "L21", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_demo_live_e2e", + "target": "src_explain_explain_engine_explainengine", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "scripts/demo_live_e2e.py", + "source_location": "L22", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_fetch_jeju_hours", + "target": "src_data_models_settings", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "scripts/fetch_jeju_hours.py", + "source_location": "L28", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_fetch_jeju_hours", + "target": "src_data_tour_api_tourapiclient", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "scripts/fetch_jeju_hours.py", + "source_location": "L29", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_geocode_jeju_missing_coords", + "target": "src_data_kakao_local_kakaolocalclient", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "scripts/geocode_jeju_missing_coords.py", + "source_location": "L22", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_neo4j_coverage_analysis", + "target": "src_data_models_vrptwday", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "scripts/neo4j_coverage_analysis.py", + "source_location": "L22", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_neo4j_coverage_analysis", + "target": "src_data_models_vrptwplace", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "scripts/neo4j_coverage_analysis.py", + "source_location": "L22", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_neo4j_coverage_analysis", + "target": "src_data_models_vrptwrequest", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "scripts/neo4j_coverage_analysis.py", + "source_location": "L22", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_neo4j_coverage_analysis", + "target": "src_scoring_cluster_dispersion_evaluate_cluster_dispersion", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "scripts/neo4j_coverage_analysis.py", + "source_location": "L23", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_neo4j_coverage_analysis", + "target": "src_scoring_travel_ratio_evaluate_travel_ratio", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "scripts/neo4j_coverage_analysis.py", + "source_location": "L24", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_neo4j_coverage_analysis", + "target": "src_validation_vrptw_engine_haversinematrix", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "scripts/neo4j_coverage_analysis.py", + "source_location": "L25", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_neo4j_coverage_analysis", + "target": "src_validation_vrptw_engine_vrptwengine", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "scripts/neo4j_coverage_analysis.py", + "source_location": "L25", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_test_pipeline", + "target": "src_data_models_dayplan", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "scripts/test_pipeline.py", + "source_location": "L12", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_test_pipeline", + "target": "src_data_models_itineraryplan", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "scripts/test_pipeline.py", + "source_location": "L12", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_test_pipeline", + "target": "src_data_models_placeinput", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "scripts/test_pipeline.py", + "source_location": "L12", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_test_pipeline", + "target": "src_data_models_poi", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "scripts/test_pipeline.py", + "source_location": "L12", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_test_pipeline", + "target": "src_validation_hard_fail_hardfaildetector", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "scripts/test_pipeline.py", + "source_location": "L13", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_test_pipeline", + "target": "src_validation_warning_warningdetector", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "scripts/test_pipeline.py", + "source_location": "L14", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_test_pipeline", + "target": "src_validation_scoring_scorecalculator", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "scripts/test_pipeline.py", + "source_location": "L15", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_router", + "target": "src_api_schemas_dayplanweb", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/api/router.py", + "source_location": "L13", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_router", + "target": "src_api_schemas_parsedplanresponse", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/api/router.py", + "source_location": "L13", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_router", + "target": "src_api_schemas_parsetextrequest", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/api/router.py", + "source_location": "L13", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_router", + "target": "src_api_schemas_placeitem", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/api/router.py", + "source_location": "L13", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_router", + "target": "src_api_schemas_placesresponse", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/api/router.py", + "source_location": "L13", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_router", + "target": "src_api_schemas_poiinfo", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/api/router.py", + "source_location": "L13", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_router", + "target": "src_api_schemas_validaterequest", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/api/router.py", + "source_location": "L13", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_router", + "target": "src_api_schemas_validateresponse", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/api/router.py", + "source_location": "L13", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_router", + "target": "src_data_graph_retriever_graphretriever", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/api/router.py", + "source_location": "L24", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_router", + "target": "src_data_hours_db_resolve_hours", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/api/router.py", + "source_location": "L25", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_router", + "target": "src_data_kakao_local_kakaolocalclient", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/api/router.py", + "source_location": "L26", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_router", + "target": "src_data_models_poi", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/api/router.py", + "source_location": "L27", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_router", + "target": "src_data_models_dayplan", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/api/router.py", + "source_location": "L27", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_router", + "target": "src_data_models_itineraryplan", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/api/router.py", + "source_location": "L27", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_router", + "target": "src_data_models_placeinput", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/api/router.py", + "source_location": "L27", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_router", + "target": "src_explain_pipeline_validatorpipeline", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/api/router.py", + "source_location": "L28", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_router", + "target": "src_explain_plan_extractor_planextractionerror", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/api/router.py", + "source_location": "L29", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_router", + "target": "src_explain_plan_extractor_planextractor", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/api/router.py", + "source_location": "L29", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_barrier_free_api", + "target": "src_data_models_settings", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/data/barrier_free_api.py", + "source_location": "L16", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_graph_retriever", + "target": "src_data_models_alternativepoi", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/data/graph_retriever.py", + "source_location": "L20", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_graph_retriever", + "target": "src_data_models_placeevidence", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/data/graph_retriever.py", + "source_location": "L20", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_kakao_local", + "target": "src_data_models_kakaoplace", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/data/kakao_local.py", + "source_location": "L18", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_restaurant_catalog", + "target": "src_data_models_alternativepoi", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/data/restaurant_catalog.py", + "source_location": "L14", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_restaurant_catalog", + "target": "src_utils_geo_haversine_km", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/data/restaurant_catalog.py", + "source_location": "L15", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_seoul_citydata_client", + "target": "src_data_models_settings", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/data/seoul_citydata_client.py", + "source_location": "L95", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_tour_api", + "target": "src_data_models_poi", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/data/tour_api.py", + "source_location": "L9", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_tour_api", + "target": "src_data_models_settings", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/data/tour_api.py", + "source_location": "L9", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_wellness_api", + "target": "src_data_models_settings", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/data/wellness_api.py", + "source_location": "L9", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_explain_engine", + "target": "src_data_graph_retriever_graphretriever", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/explain/explain_engine.py", + "source_location": "L21", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_explain_engine", + "target": "src_data_models_alternativepoi", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/explain/explain_engine.py", + "source_location": "L22", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_explain_engine", + "target": "src_data_models_explanationitem", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/explain/explain_engine.py", + "source_location": "L22", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_explain_engine", + "target": "src_data_models_hardfail", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/explain/explain_engine.py", + "source_location": "L22", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_explain_engine", + "target": "src_data_models_itineraryplan", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/explain/explain_engine.py", + "source_location": "L22", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_explain_engine", + "target": "src_data_models_scores", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/explain/explain_engine.py", + "source_location": "L22", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_explain_engine", + "target": "src_data_models_warning", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/explain/explain_engine.py", + "source_location": "L22", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_pipeline", + "target": "src_data_models_poi", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/explain/pipeline.py", + "source_location": "L26", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_pipeline", + "target": "src_data_models_hardfail", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/explain/pipeline.py", + "source_location": "L26", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_pipeline", + "target": "src_data_models_itineraryplan", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/explain/pipeline.py", + "source_location": "L26", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_pipeline", + "target": "src_data_models_scores", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/explain/pipeline.py", + "source_location": "L26", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_pipeline", + "target": "src_data_models_validationresult", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/explain/pipeline.py", + "source_location": "L26", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_pipeline", + "target": "src_data_models_vrptwday", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/explain/pipeline.py", + "source_location": "L26", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_pipeline", + "target": "src_data_models_vrptwplace", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/explain/pipeline.py", + "source_location": "L26", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_pipeline", + "target": "src_data_models_vrptwrequest", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/explain/pipeline.py", + "source_location": "L26", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_pipeline", + "target": "src_data_theme_taxonomy_userpreferences", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/explain/pipeline.py", + "source_location": "L36", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_pipeline", + "target": "src_explain_explain_engine_explainengine", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/explain/pipeline.py", + "source_location": "L37", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_pipeline", + "target": "src_explain_repair_repairengine", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/explain/pipeline.py", + "source_location": "L38", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_pipeline", + "target": "src_explain_repair_repairresult", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/explain/pipeline.py", + "source_location": "L38", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_pipeline", + "target": "src_scoring_bonus_engine_bonusengine", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/explain/pipeline.py", + "source_location": "L39", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_pipeline", + "target": "src_scoring_bonus_engine_bonusresult", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/explain/pipeline.py", + "source_location": "L39", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_pipeline", + "target": "src_scoring_cluster_dispersion_evaluate_cluster_dispersion", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/explain/pipeline.py", + "source_location": "L40", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_pipeline", + "target": "src_scoring_reward_engine_generate_rewards", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/explain/pipeline.py", + "source_location": "L41", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_pipeline", + "target": "src_scoring_theme_alignment_poiwithcategory", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/explain/pipeline.py", + "source_location": "L42", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_pipeline", + "target": "src_scoring_theme_alignment_themealignmentjudge", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/explain/pipeline.py", + "source_location": "L42", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_pipeline", + "target": "src_scoring_travel_ratio_evaluate_travel_ratio", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/explain/pipeline.py", + "source_location": "L43", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_pipeline", + "target": "src_validation_hard_fail_hardfaildetector", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/explain/pipeline.py", + "source_location": "L44", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_pipeline", + "target": "src_validation_scoring_scorecalculator", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/explain/pipeline.py", + "source_location": "L45", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_pipeline", + "target": "src_validation_vrptw_engine_vrptwengine", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/explain/pipeline.py", + "source_location": "L46", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_pipeline", + "target": "src_validation_warning_warningdetector", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/explain/pipeline.py", + "source_location": "L47", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_plan_extractor", + "target": "src_api_schemas_parsedday", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/explain/plan_extractor.py", + "source_location": "L19", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_plan_extractor", + "target": "src_api_schemas_parsedplace", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/explain/plan_extractor.py", + "source_location": "L19", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_plan_extractor", + "target": "src_api_schemas_parsedplanresponse", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/explain/plan_extractor.py", + "source_location": "L19", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_repair", + "target": "src_data_models_poi", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/explain/repair.py", + "source_location": "L19", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_repair", + "target": "src_data_models_hardfail", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/explain/repair.py", + "source_location": "L19", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_repair", + "target": "src_data_models_itineraryplan", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/explain/repair.py", + "source_location": "L19", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_repair", + "target": "src_data_party_config_get_party_profile", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/explain/repair.py", + "source_location": "L20", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_repair", + "target": "src_data_restaurant_catalog_restaurantcatalog", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/explain/repair.py", + "source_location": "L21", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_repair", + "target": "src_utils_geo_build_dist_cache", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/explain/repair.py", + "source_location": "L22", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_repair", + "target": "src_utils_geo_get_travel_min", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/explain/repair.py", + "source_location": "L22", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_repair", + "target": "src_utils_geo_haversine_km", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/explain/repair.py", + "source_location": "L22", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_repair", + "target": "src_validation_hard_fail_hardfaildetector", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/explain/repair.py", + "source_location": "L23", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_matrix_init", + "target": "src_matrix_redis_matrix_redistimematrix", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/matrix/__init__.py", + "source_location": "L2", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_matrix_redis_matrix", + "target": "src_data_models_vrptwplace", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/matrix/redis_matrix.py", + "source_location": "L22", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_matrix_redis_matrix", + "target": "src_validation_vrptw_engine_haversinematrix", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/matrix/redis_matrix.py", + "source_location": "L23", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_matrix_redis_matrix", + "target": "src_validation_vrptw_engine_timematrix", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/matrix/redis_matrix.py", + "source_location": "L23", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_bonus_engine", + "target": "src_data_models_poi", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/scoring/bonus_engine.py", + "source_location": "L8", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_bonus_engine", + "target": "src_utils_geo_haversine_km", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/scoring/bonus_engine.py", + "source_location": "L9", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_cluster_dispersion", + "target": "src_data_models_deepdiveitem", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/scoring/cluster_dispersion.py", + "source_location": "L21", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_cluster_dispersion", + "target": "src_data_models_vrptwday", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/scoring/cluster_dispersion.py", + "source_location": "L21", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_cluster_dispersion", + "target": "src_data_models_vrptwplace", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/scoring/cluster_dispersion.py", + "source_location": "L21", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_cluster_dispersion", + "target": "src_utils_geo_haversine_km", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/scoring/cluster_dispersion.py", + "source_location": "L22", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_congestion_engine", + "target": "src_data_seoul_citydata_client_seoulcitydataclient", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/scoring/congestion_engine.py", + "source_location": "L22", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_reward_engine", + "target": "src_data_models_scores", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/scoring/reward_engine.py", + "source_location": "L15", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_theme_alignment", + "target": "src_data_models_deepdiveitem", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/scoring/theme_alignment.py", + "source_location": "L21", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_theme_alignment", + "target": "src_data_theme_taxonomy_userpreferences", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/scoring/theme_alignment.py", + "source_location": "L22", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_travel_ratio", + "target": "src_data_models_deepdiveitem", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/scoring/travel_ratio.py", + "source_location": "L12", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_travel_ratio", + "target": "src_data_models_vrptwday", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/scoring/travel_ratio.py", + "source_location": "L12", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_travel_ratio", + "target": "src_data_models_vrptwplace", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/scoring/travel_ratio.py", + "source_location": "L12", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_travel_ratio", + "target": "src_validation_vrptw_engine_haversinematrix", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/scoring/travel_ratio.py", + "source_location": "L13", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_travel_ratio", + "target": "src_validation_vrptw_engine_timematrix", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/scoring/travel_ratio.py", + "source_location": "L13", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_alternatives", + "target": "src_data_models_alternativepoi", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/validation/alternatives.py", + "source_location": "L26", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_alternatives", + "target": "src_data_models_hardfail", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/validation/alternatives.py", + "source_location": "L26", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_alternatives", + "target": "src_data_models_poi", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/validation/alternatives.py", + "source_location": "L26", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_hard_fail", + "target": "src_data_models_hardfail", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/validation/hard_fail.py", + "source_location": "L4", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_hard_fail", + "target": "src_data_models_itineraryplan", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/validation/hard_fail.py", + "source_location": "L4", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_hard_fail", + "target": "src_data_models_poi", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/validation/hard_fail.py", + "source_location": "L4", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_hard_fail", + "target": "src_utils_geo_build_dist_cache", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/validation/hard_fail.py", + "source_location": "L5", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_hard_fail", + "target": "src_utils_geo_get_travel_min", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/validation/hard_fail.py", + "source_location": "L5", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_kakao_matrix", + "target": "src_data_models_vrptwplace", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/validation/kakao_matrix.py", + "source_location": "L35", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_kakao_matrix", + "target": "src_validation_vrptw_engine_haversinematrix", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/validation/kakao_matrix.py", + "source_location": "L36", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_kakao_matrix", + "target": "src_validation_vrptw_engine_timematrix", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/validation/kakao_matrix.py", + "source_location": "L36", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_scoring", + "target": "src_data_models_hardfail", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/validation/scoring.py", + "source_location": "L4", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_scoring", + "target": "src_data_models_itineraryplan", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/validation/scoring.py", + "source_location": "L4", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_scoring", + "target": "src_data_models_poi", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/validation/scoring.py", + "source_location": "L4", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_scoring", + "target": "src_data_models_scores", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/validation/scoring.py", + "source_location": "L4", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_scoring", + "target": "src_data_party_config_get_party_profile", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/validation/scoring.py", + "source_location": "L5", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_scoring", + "target": "src_utils_geo_build_dist_cache", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/validation/scoring.py", + "source_location": "L6", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_scoring", + "target": "src_utils_geo_get_travel_min", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/validation/scoring.py", + "source_location": "L6", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_scoring", + "target": "src_utils_geo_nn_heuristic_km", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/validation/scoring.py", + "source_location": "L6", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_scoring", + "target": "src_validation_warning_cosine_distance", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/validation/scoring.py", + "source_location": "L7", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_vrptw_engine", + "target": "src_data_models_dayroutecomparison", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/validation/vrptw_engine.py", + "source_location": "L18", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_vrptw_engine", + "target": "src_data_models_deepdiveitem", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/validation/vrptw_engine.py", + "source_location": "L18", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_vrptw_engine", + "target": "src_data_models_vrptwday", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/validation/vrptw_engine.py", + "source_location": "L18", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_vrptw_engine", + "target": "src_data_models_vrptwplace", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/validation/vrptw_engine.py", + "source_location": "L18", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_vrptw_engine", + "target": "src_data_models_vrptwrequest", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/validation/vrptw_engine.py", + "source_location": "L18", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_vrptw_engine", + "target": "src_data_models_vrptwresult", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/validation/vrptw_engine.py", + "source_location": "L18", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_warning", + "target": "src_data_models_itineraryplan", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/validation/warning.py", + "source_location": "L4", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_warning", + "target": "src_data_models_poi", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/validation/warning.py", + "source_location": "L4", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_warning", + "target": "src_data_models_warning", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/validation/warning.py", + "source_location": "L4", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_warning", + "target": "src_data_party_config_get_party_profile", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/validation/warning.py", + "source_location": "L5", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_warning", + "target": "src_utils_geo_build_dist_cache", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/validation/warning.py", + "source_location": "L6", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_warning", + "target": "src_utils_geo_get_travel_min", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/validation/warning.py", + "source_location": "L6", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_warning", + "target": "src_utils_geo_haversine_km", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/validation/warning.py", + "source_location": "L6", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_warning", + "target": "src_utils_geo_nn_heuristic_km", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "src/validation/warning.py", + "source_location": "L6", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_alternatives", + "target": "src_data_models_alternativepoi", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_alternatives.py", + "source_location": "L6", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_alternatives", + "target": "src_data_models_hardfail", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_alternatives.py", + "source_location": "L6", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_alternatives", + "target": "src_data_models_poi", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_alternatives.py", + "source_location": "L6", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_alternatives", + "target": "src_validation_alternatives_alternativesfinder", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_alternatives.py", + "source_location": "L7", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_bonus_engine", + "target": "src_data_models_poi", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_bonus_engine.py", + "source_location": "L10", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_bonus_engine", + "target": "src_scoring_bonus_engine_bonusengine", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_bonus_engine.py", + "source_location": "L11", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_bonus_engine", + "target": "src_scoring_bonus_engine_placecoord", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_bonus_engine.py", + "source_location": "L11", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_cluster_dispersion", + "target": "src_data_models_vrptwday", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_cluster_dispersion.py", + "source_location": "L6", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_cluster_dispersion", + "target": "src_data_models_vrptwplace", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_cluster_dispersion.py", + "source_location": "L6", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_cluster_dispersion", + "target": "src_scoring_cluster_dispersion_count_geo_cluster_backtracks", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_cluster_dispersion.py", + "source_location": "L7", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_cluster_dispersion", + "target": "src_scoring_cluster_dispersion_evaluate_cluster_dispersion", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_cluster_dispersion.py", + "source_location": "L7", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_congestion_engine", + "target": "src_scoring_congestion_engine_congestionengine", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_congestion_engine.py", + "source_location": "L10", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_congestion_engine", + "target": "src_scoring_congestion_engine_congestionlevel", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_congestion_engine.py", + "source_location": "L10", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_congestion_engine", + "target": "src_scoring_congestion_engine_congestionresult", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_congestion_engine.py", + "source_location": "L10", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_congestion_engine", + "target": "src_scoring_congestion_engine_score_to_level", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_congestion_engine.py", + "source_location": "L10", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_dwell_db", + "target": "src_data_dwell_db_dwellrecommendation", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_dwell_db.py", + "source_location": "L6", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_dwell_db", + "target": "src_data_dwell_db_get_recommended_dwell", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_dwell_db.py", + "source_location": "L6", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_estimated_hardfail", + "target": "src_data_models_dayplan", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_estimated_hardfail.py", + "source_location": "L4", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_estimated_hardfail", + "target": "src_data_models_itineraryplan", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_estimated_hardfail.py", + "source_location": "L4", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_estimated_hardfail", + "target": "src_data_models_placeinput", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_estimated_hardfail.py", + "source_location": "L4", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_estimated_hardfail", + "target": "src_data_models_poi", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_estimated_hardfail.py", + "source_location": "L4", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_estimated_hardfail", + "target": "src_validation_hard_fail_hardfaildetector", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_estimated_hardfail.py", + "source_location": "L5", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine", + "target": "src_data_models_alternativepoi", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L9", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine", + "target": "src_data_models_dayplan", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L9", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine", + "target": "src_data_models_explanationitem", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L9", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine", + "target": "src_data_models_hardfail", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L9", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine", + "target": "src_data_models_itineraryplan", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L9", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine", + "target": "src_data_models_placeevidence", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L9", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine", + "target": "src_data_models_placeinput", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L9", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine", + "target": "src_data_models_scores", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L9", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine", + "target": "src_data_models_warning", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L9", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine", + "target": "src_explain_explain_engine_explainengine", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L20", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine", + "target": "src_explain_explain_engine_build_user_prompt", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L20", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine", + "target": "src_explain_explain_engine_cache_key", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L20", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine", + "target": "src_explain_explain_engine_fallback", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L20", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine", + "target": "src_explain_explain_engine_graph_context", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L20", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine", + "target": "src_explain_explain_engine_parse_llm_response", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L20", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_geo", + "target": "src_data_models_poi", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_geo.py", + "source_location": "L6", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_geo", + "target": "src_utils_geo_build_dist_cache", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_geo.py", + "source_location": "L7", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_geo", + "target": "src_utils_geo_get_travel_min", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_geo.py", + "source_location": "L7", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_geo", + "target": "src_utils_geo_haversine_km", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_geo.py", + "source_location": "L7", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_geo", + "target": "src_utils_geo_nn_heuristic_km", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_geo.py", + "source_location": "L7", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_graph_retriever", + "target": "src_data_graph_retriever_graphretriever", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_graph_retriever.py", + "source_location": "L8", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_graph_retriever", + "target": "src_data_models_alternativepoi", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_graph_retriever.py", + "source_location": "L9", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_graph_retriever", + "target": "src_data_models_placeevidence", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_graph_retriever.py", + "source_location": "L9", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_hard_fail", + "target": "src_data_models_poi", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_hard_fail.py", + "source_location": "L6", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_hard_fail", + "target": "src_data_models_dayplan", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_hard_fail.py", + "source_location": "L6", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_hard_fail", + "target": "src_data_models_itineraryplan", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_hard_fail.py", + "source_location": "L6", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_hard_fail", + "target": "src_data_models_placeinput", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_hard_fail.py", + "source_location": "L6", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_hard_fail", + "target": "src_validation_hard_fail_hardfaildetector", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_hard_fail.py", + "source_location": "L7", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_kakao_local", + "target": "src_data_kakao_local_kakaolocalclient", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_kakao_local.py", + "source_location": "L6", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_kakao_local", + "target": "src_data_models_kakaoplace", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_kakao_local.py", + "source_location": "L7", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_kakao_matrix", + "target": "src_data_models_vrptwplace", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_kakao_matrix.py", + "source_location": "L9", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_kakao_matrix", + "target": "src_validation_kakao_matrix_kakaomobilitymatrix", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_kakao_matrix.py", + "source_location": "L10", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_party_config", + "target": "src_data_party_config_partyprofile", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_party_config.py", + "source_location": "L6", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_party_config", + "target": "src_data_party_config_get_party_profile", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_party_config.py", + "source_location": "L6", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator", + "target": "src_data_models_alternativepoi", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L8", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator", + "target": "src_data_models_dayplan", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L8", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator", + "target": "src_data_models_hardfail", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L8", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator", + "target": "src_data_models_itineraryplan", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L8", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator", + "target": "src_data_models_placeinput", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L8", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator", + "target": "src_data_models_poi", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L8", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator", + "target": "src_data_models_validationresult", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L8", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator", + "target": "src_explain_pipeline_validatorpipeline", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L9", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator", + "target": "src_explain_pipeline_to_vrptw_day", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L9", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator", + "target": "src_scoring_bonus_engine_bonusengine", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L10", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator", + "target": "src_scoring_bonus_engine_placecoord", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L10", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_plan_extractor", + "target": "src_explain_plan_extractor_planextractionerror", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_plan_extractor.py", + "source_location": "L8", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_plan_extractor", + "target": "src_explain_plan_extractor_planextractor", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_plan_extractor.py", + "source_location": "L8", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_region_config", + "target": "src_data_region_config_get_thresholds", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_region_config.py", + "source_location": "L4", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_repair", + "target": "src_data_models_poi", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_repair.py", + "source_location": "L4", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_repair", + "target": "src_data_models_dayplan", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_repair.py", + "source_location": "L4", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_repair", + "target": "src_data_models_hardfail", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_repair.py", + "source_location": "L4", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_repair", + "target": "src_data_models_itineraryplan", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_repair.py", + "source_location": "L4", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_repair", + "target": "src_data_models_placeinput", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_repair.py", + "source_location": "L4", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_repair", + "target": "src_data_restaurant_catalog_restaurantcatalog", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_repair.py", + "source_location": "L5", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_repair", + "target": "src_explain_repair_deletionsuggestion", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_repair.py", + "source_location": "L6", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_repair", + "target": "src_explain_repair_repairresult", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_repair.py", + "source_location": "L6", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_repair", + "target": "src_explain_repair_repairengine", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_repair.py", + "source_location": "L7", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_restaurant_catalog", + "target": "src_data_restaurant_catalog_restaurantcatalog", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_restaurant_catalog.py", + "source_location": "L4", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_reward_engine", + "target": "src_data_models_scores", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_reward_engine.py", + "source_location": "L6", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_reward_engine", + "target": "src_scoring_reward_engine_generate_rewards", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_reward_engine.py", + "source_location": "L7", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_scoring", + "target": "src_data_models_dayplan", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_scoring.py", + "source_location": "L6", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_scoring", + "target": "src_data_models_hardfail", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_scoring.py", + "source_location": "L6", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_scoring", + "target": "src_data_models_itineraryplan", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_scoring.py", + "source_location": "L6", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_scoring", + "target": "src_data_models_placeinput", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_scoring.py", + "source_location": "L6", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_scoring", + "target": "src_data_models_poi", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_scoring.py", + "source_location": "L6", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_scoring", + "target": "src_data_models_scores", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_scoring.py", + "source_location": "L6", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_scoring", + "target": "src_validation_scoring_scorecalculator", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_scoring.py", + "source_location": "L7", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_theme_alignment", + "target": "src_data_theme_taxonomy_userpreferences", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_theme_alignment.py", + "source_location": "L8", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_theme_alignment", + "target": "src_scoring_theme_alignment_poiwithcategory", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_theme_alignment.py", + "source_location": "L9", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_theme_alignment", + "target": "src_scoring_theme_alignment_themealignmentjudge", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_theme_alignment.py", + "source_location": "L9", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_theme_alignment", + "target": "src_scoring_theme_alignment_themejudgment", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_theme_alignment.py", + "source_location": "L9", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_theme_alignment", + "target": "src_scoring_theme_alignment_classify_score", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_theme_alignment.py", + "source_location": "L9", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_theme_alignment", + "target": "src_scoring_theme_alignment_parse_llm_response", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_theme_alignment.py", + "source_location": "L9", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_theme_taxonomy", + "target": "src_data_theme_taxonomy_userpreferences", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_theme_taxonomy.py", + "source_location": "L6", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_theme_taxonomy", + "target": "src_data_theme_taxonomy_get_place_types_for", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_theme_taxonomy.py", + "source_location": "L6", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_theme_taxonomy", + "target": "src_data_theme_taxonomy_matches_place_type", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_theme_taxonomy.py", + "source_location": "L6", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_travel_ratio", + "target": "src_data_models_vrptwday", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_travel_ratio.py", + "source_location": "L6", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_travel_ratio", + "target": "src_data_models_vrptwplace", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_travel_ratio.py", + "source_location": "L6", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_travel_ratio", + "target": "src_scoring_travel_ratio_evaluate_travel_ratio", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_travel_ratio.py", + "source_location": "L7", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_travel_ratio", + "target": "src_validation_vrptw_engine_haversinematrix", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_travel_ratio.py", + "source_location": "L12", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine", + "target": "src_data_models_vrptwday", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L10", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine", + "target": "src_data_models_vrptwplace", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L10", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine", + "target": "src_data_models_vrptwrequest", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L10", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine", + "target": "src_data_models_vrptwresult", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L10", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine", + "target": "src_validation_vrptw_engine_cachedroutematrix", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L11", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine", + "target": "src_validation_vrptw_engine_haversinematrix", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L11", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine", + "target": "src_validation_vrptw_engine_vrptwengine", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L11", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_warning", + "target": "src_data_models_dayplan", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_warning.py", + "source_location": "L6", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_warning", + "target": "src_data_models_itineraryplan", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_warning.py", + "source_location": "L6", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_warning", + "target": "src_data_models_placeinput", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_warning.py", + "source_location": "L6", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_warning", + "target": "src_data_models_poi", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_warning.py", + "source_location": "L6", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_warning", + "target": "src_validation_warning_warningdetector", + "relation": "imports", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "tests/test_warning.py", + "source_location": "L7", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_resolve_poi", + "target": "src_api_router", + "relation": "imports_from", + "context": "submodule_import", + "confidence": "EXTRACTED", + "source_file": "tests/test_resolve_poi.py", + "source_location": "L10", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_build_itinerary_excel_check_hours_violations", + "target": "src_data_hours_db_to_minutes", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/build_itinerary_excel.py", + "source_location": "L132", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_build_itinerary_excel_process_one_day", + "target": "src_data_hours_db_to_minutes", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/build_itinerary_excel.py", + "source_location": "L262", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_build_itinerary_excel_process_one_day", + "target": "src_data_hours_db_resolve_hours", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/build_itinerary_excel.py", + "source_location": "L276", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_build_itinerary_excel_process_one_day", + "target": "src_data_models_vrptwday", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/build_itinerary_excel.py", + "source_location": "L306", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_build_itinerary_excel_process_one_day", + "target": "src_scoring_cluster_dispersion_evaluate_cluster_dispersion", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/build_itinerary_excel.py", + "source_location": "L307", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_build_itinerary_excel_process_one_day", + "target": "src_scoring_travel_ratio_evaluate_travel_ratio", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/build_itinerary_excel.py", + "source_location": "L316", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_build_itinerary_excel_main", + "target": "src_data_dwell_db_get_recommended_dwell", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/build_itinerary_excel.py", + "source_location": "L405", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_build_itinerary_excel_main", + "target": "src_data_hours_db_resolve_hours", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/build_itinerary_excel.py", + "source_location": "L415", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_build_itinerary_excel_main", + "target": "src_validation_vrptw_engine_haversinematrix", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "gun/scripts/build_itinerary_excel.py", + "source_location": "L451", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_build_poi_dataset_main", + "target": "src_data_models_settings", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "scripts/build_poi_dataset.py", + "source_location": "L67", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_demo_live_e2e_main", + "target": "src_explain_explain_engine_explainengine", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "scripts/demo_live_e2e.py", + "source_location": "L29", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_demo_live_e2e_main", + "target": "src_data_models_itineraryplan", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "scripts/demo_live_e2e.py", + "source_location": "L44", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_demo_live_e2e_main", + "target": "src_data_models_dayplan", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "scripts/demo_live_e2e.py", + "source_location": "L45", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_demo_live_e2e_main", + "target": "src_data_models_placeinput", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "scripts/demo_live_e2e.py", + "source_location": "L45", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_demo_live_e2e_main", + "target": "src_data_models_hardfail", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "scripts/demo_live_e2e.py", + "source_location": "L48", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_fetch_jeju_hours_main", + "target": "src_data_models_settings", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "scripts/fetch_jeju_hours.py", + "source_location": "L44", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_neo4j_coverage_analysis_neo4j_timeslot_density", + "target": "src_validation_vrptw_engine_haversinematrix", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "scripts/neo4j_coverage_analysis.py", + "source_location": "L89", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_neo4j_coverage_analysis_run_vrptw", + "target": "src_validation_vrptw_engine_vrptwengine", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "scripts/neo4j_coverage_analysis.py", + "source_location": "L128", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_neo4j_coverage_analysis_run_vrptw", + "target": "src_data_models_vrptwday", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "scripts/neo4j_coverage_analysis.py", + "source_location": "L129", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_neo4j_coverage_analysis_run_vrptw", + "target": "src_data_models_vrptwrequest", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "scripts/neo4j_coverage_analysis.py", + "source_location": "L130", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_neo4j_coverage_analysis_run_vrptw", + "target": "src_scoring_cluster_dispersion_evaluate_cluster_dispersion", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "scripts/neo4j_coverage_analysis.py", + "source_location": "L134", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_neo4j_coverage_analysis_run_vrptw", + "target": "src_scoring_travel_ratio_evaluate_travel_ratio", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "scripts/neo4j_coverage_analysis.py", + "source_location": "L136", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_test_pipeline_build_itinerary", + "target": "src_data_models_placeinput", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "scripts/test_pipeline.py", + "source_location": "L311", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_test_pipeline_build_itinerary", + "target": "src_data_models_dayplan", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "scripts/test_pipeline.py", + "source_location": "L314", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_test_pipeline_run_pipeline", + "target": "src_validation_hard_fail_hardfaildetector", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "scripts/test_pipeline.py", + "source_location": "L366", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_test_pipeline_run_pipeline", + "target": "src_validation_warning_warningdetector", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "scripts/test_pipeline.py", + "source_location": "L367", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_test_pipeline_run_pipeline", + "target": "src_validation_scoring_scorecalculator", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "scripts/test_pipeline.py", + "source_location": "L368", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_router_resolve_poi", + "target": "src_data_hours_db_resolve_hours", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/api/router.py", + "source_location": "L675", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_pipeline_to_vrptw_day", + "target": "src_data_models_vrptwplace", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/explain/pipeline.py", + "source_location": "L56", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_plan_extractor_fallback_text_parse", + "target": "src_api_schemas_parsedday", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/explain/plan_extractor.py", + "source_location": "L99", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_plan_extractor_fallback_text_parse", + "target": "src_api_schemas_parsedplace", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/explain/plan_extractor.py", + "source_location": "L99", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_bonus_engine_nearest_km", + "target": "src_utils_geo_haversine_km", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/scoring/bonus_engine.py", + "source_location": "L138", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_cluster_dispersion_compute_day_dispersion", + "target": "src_utils_geo_haversine_km", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/scoring/cluster_dispersion.py", + "source_location": "L146", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_cluster_dispersion_evaluate_cluster_dispersion", + "target": "src_data_models_deepdiveitem", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/scoring/cluster_dispersion.py", + "source_location": "L228", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_travel_ratio_evaluate_travel_ratio", + "target": "src_validation_vrptw_engine_haversinematrix", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/scoring/travel_ratio.py", + "source_location": "L86", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_travel_ratio_evaluate_travel_ratio", + "target": "src_data_models_deepdiveitem", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/scoring/travel_ratio.py", + "source_location": "L105", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_alternatives_poi", + "target": "src_data_models_poi", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_alternatives.py", + "source_location": "L17", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_alternatives_hardfail", + "target": "src_data_models_hardfail", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_alternatives.py", + "source_location": "L30", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_bonus_engine_make_engine", + "target": "src_scoring_bonus_engine_placecoord", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_bonus_engine.py", + "source_location": "L38", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_cluster_dispersion_make_place", + "target": "src_data_models_vrptwplace", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_cluster_dispersion.py", + "source_location": "L18", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_cluster_dispersion_test_compact_day_no_penalty", + "target": "src_data_models_vrptwday", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_cluster_dispersion.py", + "source_location": "L26", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_cluster_dispersion_test_compact_day_no_penalty", + "target": "src_scoring_cluster_dispersion_evaluate_cluster_dispersion", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_cluster_dispersion.py", + "source_location": "L32", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_cluster_dispersion_test_lightning_pattern_high_penalty", + "target": "src_data_models_vrptwday", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_cluster_dispersion.py", + "source_location": "L40", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_cluster_dispersion_test_lightning_pattern_high_penalty", + "target": "src_scoring_cluster_dispersion_evaluate_cluster_dispersion", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_cluster_dispersion.py", + "source_location": "L46", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_cluster_dispersion_test_per_day_independence", + "target": "src_data_models_vrptwday", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_cluster_dispersion.py", + "source_location": "L55", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_cluster_dispersion_test_per_day_independence", + "target": "src_scoring_cluster_dispersion_evaluate_cluster_dispersion", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_cluster_dispersion.py", + "source_location": "L64", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_cluster_dispersion_test_sigungu_switches_only", + "target": "src_data_models_vrptwday", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_cluster_dispersion.py", + "source_location": "L127", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_cluster_dispersion_test_sigungu_switches_only", + "target": "src_scoring_cluster_dispersion_evaluate_cluster_dispersion", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_cluster_dispersion.py", + "source_location": "L135", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_congestion_engine_test_missing_csv_raises", + "target": "src_scoring_congestion_engine_congestionengine", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_congestion_engine.py", + "source_location": "L166", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_estimated_hardfail_poi", + "target": "src_data_models_poi", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_estimated_hardfail.py", + "source_location": "L9", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_estimated_hardfail_plan", + "target": "src_data_models_dayplan", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_estimated_hardfail.py", + "source_location": "L24", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_estimated_hardfail_plan", + "target": "src_data_models_placeinput", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_estimated_hardfail.py", + "source_location": "L24", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_estimated_hardfail_test_estimated_hours_conflict_flagged_estimated", + "target": "src_validation_hard_fail_hardfaildetector", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_estimated_hardfail.py", + "source_location": "L34", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_estimated_hardfail_test_verified_hours_conflict_not_estimated_and_message_unchanged", + "target": "src_validation_hard_fail_hardfaildetector", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_estimated_hardfail.py", + "source_location": "L44", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_make_plan", + "target": "src_data_models_dayplan", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L36", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_make_plan", + "target": "src_data_models_placeinput", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L36", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_make_graph_stub", + "target": "src_data_models_placeevidence", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L70", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_make_graph_stub", + "target": "src_data_models_alternativepoi", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L77", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_graph_retriever_test_disabled_without_uri_returns_empty", + "target": "src_data_graph_retriever_graphretriever", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_graph_retriever.py", + "source_location": "L13", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_graph_retriever_test_search_places_parses_records", + "target": "src_data_graph_retriever_graphretriever", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_graph_retriever.py", + "source_location": "L21", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_graph_retriever_test_search_places_empty_query_skips_call", + "target": "src_data_graph_retriever_graphretriever", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_graph_retriever.py", + "source_location": "L41", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_graph_retriever_test_search_places_neo4j_error_returns_empty", + "target": "src_data_graph_retriever_graphretriever", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_graph_retriever.py", + "source_location": "L48", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_graph_retriever_test_find_nearby_parses_and_converts_distance", + "target": "src_data_graph_retriever_graphretriever", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_graph_retriever.py", + "source_location": "L55", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_graph_retriever_test_repeated_failures_skip_driver_call_during_cooldown", + "target": "src_data_graph_retriever_graphretriever", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_graph_retriever.py", + "source_location": "L70", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_graph_retriever_test_close_closes_driver", + "target": "src_data_graph_retriever_graphretriever", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_graph_retriever.py", + "source_location": "L81", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_hard_fail_make_plan", + "target": "src_data_models_dayplan", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_hard_fail.py", + "source_location": "L33", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_hard_fail_make_plan", + "target": "src_data_models_placeinput", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_hard_fail.py", + "source_location": "L33", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_kakao_local_test_disabled_without_key_returns_none", + "target": "src_data_kakao_local_kakaolocalclient", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_kakao_local.py", + "source_location": "L30", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_kakao_local_test_search_parses_first_document", + "target": "src_data_kakao_local_kakaolocalclient", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_kakao_local.py", + "source_location": "L36", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_kakao_local_test_result_is_cached", + "target": "src_data_kakao_local_kakaolocalclient", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_kakao_local.py", + "source_location": "L47", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_kakao_local_test_empty_documents_returns_none", + "target": "src_data_kakao_local_kakaolocalclient", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_kakao_local.py", + "source_location": "L56", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_kakao_local_test_http_error_falls_back_to_none", + "target": "src_data_kakao_local_kakaolocalclient", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_kakao_local.py", + "source_location": "L67", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_kakao_local_test_search_keyword_list_parses_all", + "target": "src_data_kakao_local_kakaolocalclient", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_kakao_local.py", + "source_location": "L88", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_kakao_local_test_search_keyword_list_disabled_returns_empty", + "target": "src_data_kakao_local_kakaolocalclient", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_kakao_local.py", + "source_location": "L97", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_kakao_local_test_geocode_address_parses_lat_lng", + "target": "src_data_kakao_local_kakaolocalclient", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_kakao_local.py", + "source_location": "L117", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_kakao_local_test_geocode_address_disabled_without_key_returns_none", + "target": "src_data_kakao_local_kakaolocalclient", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_kakao_local.py", + "source_location": "L125", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_kakao_local_test_geocode_address_is_cached", + "target": "src_data_kakao_local_kakaolocalclient", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_kakao_local.py", + "source_location": "L130", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_kakao_local_test_geocode_address_empty_documents_returns_none", + "target": "src_data_kakao_local_kakaolocalclient", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_kakao_local.py", + "source_location": "L139", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_kakao_local_test_geocode_address_http_error_falls_back_to_none", + "target": "src_data_kakao_local_kakaolocalclient", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_kakao_local.py", + "source_location": "L150", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_make_plan", + "target": "src_data_models_dayplan", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L39", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_make_plan", + "target": "src_data_models_placeinput", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L39", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_make_multi_day_plan", + "target": "src_data_models_dayplan", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L49", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_make_multi_day_plan", + "target": "src_data_models_placeinput", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L49", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_plan_extractor_test_extract_from_text_parses_llm_response", + "target": "src_explain_plan_extractor_planextractor", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_plan_extractor.py", + "source_location": "L23", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_plan_extractor_test_extract_from_text_strips_code_fence", + "target": "src_explain_plan_extractor_planextractor", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_plan_extractor.py", + "source_location": "L34", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_plan_extractor_test_extract_from_text_empty_raises", + "target": "src_explain_plan_extractor_planextractor", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_plan_extractor.py", + "source_location": "L42", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_plan_extractor_test_extract_from_text_without_client_falls_back_to_heuristic", + "target": "src_explain_plan_extractor_planextractor", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_plan_extractor.py", + "source_location": "L48", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_plan_extractor_test_extract_from_document_without_client_raises", + "target": "src_explain_plan_extractor_planextractor", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_plan_extractor.py", + "source_location": "L59", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_plan_extractor_test_extract_from_document_empty_bytes_raises", + "target": "src_explain_plan_extractor_planextractor", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_plan_extractor.py", + "source_location": "L65", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_plan_extractor_test_extract_from_document_sends_document_block_for_pdf", + "target": "src_explain_plan_extractor_planextractor", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_plan_extractor.py", + "source_location": "L72", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_plan_extractor_test_extract_from_document_sends_image_block_for_png", + "target": "src_explain_plan_extractor_planextractor", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_plan_extractor.py", + "source_location": "L83", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_plan_extractor_test_invalid_json_response_raises", + "target": "src_explain_plan_extractor_planextractor", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_plan_extractor.py", + "source_location": "L92", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_plan_extractor_test_api_call_failure_raises_extraction_error", + "target": "src_explain_plan_extractor_planextractor", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_plan_extractor.py", + "source_location": "L100", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_plan_extractor_test_system_prompt_uses_prompt_caching", + "target": "src_explain_plan_extractor_planextractor", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_plan_extractor.py", + "source_location": "L109", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_repair_repairengine", + "target": "src_explain_repair_repairengine", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_repair.py", + "source_location": "L12", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_repair_poi", + "target": "src_data_models_poi", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_repair.py", + "source_location": "L24", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_repair_plan", + "target": "src_data_models_dayplan", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_repair.py", + "source_location": "L35", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_repair_plan", + "target": "src_data_models_placeinput", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_repair.py", + "source_location": "L35", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_reward_engine_scores", + "target": "src_data_models_scores", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_reward_engine.py", + "source_location": "L13", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_scoring_make_plan", + "target": "src_data_models_dayplan", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_scoring.py", + "source_location": "L34", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_scoring_make_plan", + "target": "src_data_models_placeinput", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_scoring.py", + "source_location": "L34", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_travel_ratio_make_place", + "target": "src_data_models_vrptwplace", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_travel_ratio.py", + "source_location": "L16", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_travel_ratio_test_no_penalty_when_ratio_low", + "target": "src_data_models_vrptwday", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_travel_ratio.py", + "source_location": "L24", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_travel_ratio_test_no_penalty_when_ratio_low", + "target": "src_scoring_travel_ratio_evaluate_travel_ratio", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_travel_ratio.py", + "source_location": "L30", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_travel_ratio_test_no_penalty_when_ratio_low", + "target": "src_validation_vrptw_engine_haversinematrix", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_travel_ratio.py", + "source_location": "L30", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_travel_ratio_test_penalty_when_ratio_high", + "target": "src_data_models_vrptwday", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_travel_ratio.py", + "source_location": "L37", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_travel_ratio_test_penalty_when_ratio_high", + "target": "src_scoring_travel_ratio_evaluate_travel_ratio", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_travel_ratio.py", + "source_location": "L41", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_travel_ratio_test_penalty_when_ratio_high", + "target": "src_validation_vrptw_engine_haversinematrix", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_travel_ratio.py", + "source_location": "L41", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_travel_ratio_test_overall_ratio_aggregates_across_days", + "target": "src_data_models_vrptwday", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_travel_ratio.py", + "source_location": "L50", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_travel_ratio_test_overall_ratio_aggregates_across_days", + "target": "src_scoring_travel_ratio_evaluate_travel_ratio", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_travel_ratio.py", + "source_location": "L59", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_travel_ratio_test_overall_ratio_aggregates_across_days", + "target": "src_validation_vrptw_engine_haversinematrix", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_travel_ratio.py", + "source_location": "L59", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_test_summary_contains_score", + "target": "src_data_models_vrptwrequest", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L416", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_test_summary_contains_score", + "target": "src_data_models_vrptwday", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L416", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_test_summary_contains_score", + "target": "src_validation_vrptw_engine_haversinematrix", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L417", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_test_deep_dive_items_have_all_fields", + "target": "src_data_models_vrptwrequest", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L430", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_test_deep_dive_items_have_all_fields", + "target": "src_data_models_vrptwday", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L430", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_test_deep_dive_items_have_all_fields", + "target": "src_validation_vrptw_engine_haversinematrix", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L431", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_warning_make_plan", + "target": "src_data_models_dayplan", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_warning.py", + "source_location": "L36", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_warning_make_plan", + "target": "src_data_models_placeinput", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/test_warning.py", + "source_location": "L36", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_build_itinerary_excel_poimatcher", + "target": "src_data_hours_db_hoursspec", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "gun/scripts/build_itinerary_excel.py", + "source_location": "L42", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "gun_scripts_build_itinerary_excel_poimatcher", + "target": "src_data_models_vrptwday", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "gun/scripts/build_itinerary_excel.py", + "source_location": "L43", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "gun_scripts_build_itinerary_excel_poimatcher", + "target": "src_data_models_vrptwplace", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "gun/scripts/build_itinerary_excel.py", + "source_location": "L43", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "gun_scripts_build_itinerary_excel_poimatcher", + "target": "src_validation_kakao_matrix_kakaomobilitymatrix", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "gun/scripts/build_itinerary_excel.py", + "source_location": "L46", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "gun_scripts_build_itinerary_excel_poimatcher", + "target": "src_validation_vrptw_engine_haversinematrix", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "gun/scripts/build_itinerary_excel.py", + "source_location": "L47", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "scripts_neo4j_coverage_analysis_coverageresult", + "target": "src_data_models_vrptwday", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "scripts/neo4j_coverage_analysis.py", + "source_location": "L22", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "scripts_neo4j_coverage_analysis_coverageresult", + "target": "src_data_models_vrptwplace", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "scripts/neo4j_coverage_analysis.py", + "source_location": "L22", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "scripts_neo4j_coverage_analysis_coverageresult", + "target": "src_data_models_vrptwrequest", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "scripts/neo4j_coverage_analysis.py", + "source_location": "L22", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "scripts_neo4j_coverage_analysis_coverageresult", + "target": "src_validation_vrptw_engine_haversinematrix", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "scripts/neo4j_coverage_analysis.py", + "source_location": "L25", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "scripts_neo4j_coverage_analysis_coverageresult", + "target": "src_validation_vrptw_engine_vrptwengine", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "scripts/neo4j_coverage_analysis.py", + "source_location": "L25", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_data_barrier_free_api_barrierfreeplace", + "target": "src_data_models_settings", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/data/barrier_free_api.py", + "source_location": "L16", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_data_barrier_free_api_barrierfreedetail", + "target": "src_data_models_settings", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/data/barrier_free_api.py", + "source_location": "L16", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_data_barrier_free_api_barrierfreeapiclient", + "target": "src_data_models_settings", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/data/barrier_free_api.py", + "source_location": "L16", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_data_graph_retriever_graphretriever", + "target": "src_data_models_alternativepoi", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/data/graph_retriever.py", + "source_location": "L20", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_data_graph_retriever_graphretriever", + "target": "src_data_models_placeevidence", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/data/graph_retriever.py", + "source_location": "L20", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_data_kakao_local_kakaolocalclient", + "target": "src_data_models_kakaoplace", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/data/kakao_local.py", + "source_location": "L18", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_data_restaurant_catalog_restaurantcatalog", + "target": "src_data_models_alternativepoi", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/data/restaurant_catalog.py", + "source_location": "L14", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_data_seoul_citydata_client_forecastslot", + "target": "src_data_models_settings", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/data/seoul_citydata_client.py", + "source_location": "L95", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_data_seoul_citydata_client_seoulrealtimecongestion", + "target": "src_data_models_settings", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/data/seoul_citydata_client.py", + "source_location": "L95", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_data_seoul_citydata_client_seoulcitydataclient", + "target": "src_data_models_settings", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/data/seoul_citydata_client.py", + "source_location": "L95", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_data_tour_api_tourapiclient", + "target": "src_data_models_poi", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/data/tour_api.py", + "source_location": "L9", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_data_tour_api_tourapiclient", + "target": "src_data_models_settings", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/data/tour_api.py", + "source_location": "L9", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_data_wellness_api_wellnessplace", + "target": "src_data_models_settings", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/data/wellness_api.py", + "source_location": "L9", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_data_wellness_api_wellnessapiclient", + "target": "src_data_models_settings", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/data/wellness_api.py", + "source_location": "L9", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_explain_explain_engine_lrucache", + "target": "src_data_graph_retriever_graphretriever", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/explain/explain_engine.py", + "source_location": "L21", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_explain_explain_engine_explainengine", + "target": "src_data_graph_retriever_graphretriever", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/explain/explain_engine.py", + "source_location": "L21", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_explain_explain_engine_lrucache", + "target": "src_data_models_alternativepoi", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/explain/explain_engine.py", + "source_location": "L22", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_explain_explain_engine_explainengine", + "target": "src_data_models_alternativepoi", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/explain/explain_engine.py", + "source_location": "L22", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_explain_explain_engine_lrucache", + "target": "src_data_models_explanationitem", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/explain/explain_engine.py", + "source_location": "L22", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_explain_explain_engine_explainengine", + "target": "src_data_models_explanationitem", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/explain/explain_engine.py", + "source_location": "L22", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_explain_explain_engine_lrucache", + "target": "src_data_models_hardfail", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/explain/explain_engine.py", + "source_location": "L22", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_explain_explain_engine_explainengine", + "target": "src_data_models_hardfail", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/explain/explain_engine.py", + "source_location": "L22", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_explain_explain_engine_lrucache", + "target": "src_data_models_itineraryplan", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/explain/explain_engine.py", + "source_location": "L22", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_explain_explain_engine_explainengine", + "target": "src_data_models_itineraryplan", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/explain/explain_engine.py", + "source_location": "L22", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_explain_explain_engine_lrucache", + "target": "src_data_models_scores", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/explain/explain_engine.py", + "source_location": "L22", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_explain_explain_engine_explainengine", + "target": "src_data_models_scores", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/explain/explain_engine.py", + "source_location": "L22", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_explain_explain_engine_lrucache", + "target": "src_data_models_warning", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/explain/explain_engine.py", + "source_location": "L22", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_explain_explain_engine_explainengine", + "target": "src_data_models_warning", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/explain/explain_engine.py", + "source_location": "L22", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_explain_pipeline_scorebundle", + "target": "src_data_models_poi", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/explain/pipeline.py", + "source_location": "L26", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_explain_pipeline_validatorpipeline", + "target": "src_data_models_poi", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/explain/pipeline.py", + "source_location": "L26", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_explain_pipeline_scorebundle", + "target": "src_data_models_hardfail", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/explain/pipeline.py", + "source_location": "L26", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_explain_pipeline_validatorpipeline", + "target": "src_data_models_hardfail", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/explain/pipeline.py", + "source_location": "L26", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_explain_pipeline_scorebundle", + "target": "src_data_models_itineraryplan", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/explain/pipeline.py", + "source_location": "L26", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_explain_pipeline_validatorpipeline", + "target": "src_data_models_itineraryplan", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/explain/pipeline.py", + "source_location": "L26", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_explain_pipeline_scorebundle", + "target": "src_data_models_scores", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/explain/pipeline.py", + "source_location": "L26", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_explain_pipeline_validatorpipeline", + "target": "src_data_models_scores", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/explain/pipeline.py", + "source_location": "L26", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_explain_pipeline_scorebundle", + "target": "src_data_models_validationresult", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/explain/pipeline.py", + "source_location": "L26", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_explain_pipeline_validatorpipeline", + "target": "src_data_models_validationresult", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/explain/pipeline.py", + "source_location": "L26", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_explain_pipeline_scorebundle", + "target": "src_data_models_vrptwday", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/explain/pipeline.py", + "source_location": "L26", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_explain_pipeline_validatorpipeline", + "target": "src_data_models_vrptwday", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/explain/pipeline.py", + "source_location": "L26", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_explain_pipeline_scorebundle", + "target": "src_data_models_vrptwplace", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/explain/pipeline.py", + "source_location": "L26", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_explain_pipeline_validatorpipeline", + "target": "src_data_models_vrptwplace", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/explain/pipeline.py", + "source_location": "L26", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_explain_pipeline_scorebundle", + "target": "src_data_models_vrptwrequest", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/explain/pipeline.py", + "source_location": "L26", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_explain_pipeline_validatorpipeline", + "target": "src_data_models_vrptwrequest", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/explain/pipeline.py", + "source_location": "L26", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_explain_pipeline_scorebundle", + "target": "src_data_theme_taxonomy_userpreferences", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/explain/pipeline.py", + "source_location": "L36", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_explain_pipeline_validatorpipeline", + "target": "src_data_theme_taxonomy_userpreferences", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/explain/pipeline.py", + "source_location": "L36", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_explain_pipeline_scorebundle", + "target": "src_explain_explain_engine_explainengine", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/explain/pipeline.py", + "source_location": "L37", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_explain_pipeline_validatorpipeline", + "target": "src_explain_explain_engine_explainengine", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/explain/pipeline.py", + "source_location": "L37", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_explain_pipeline_scorebundle", + "target": "src_explain_repair_repairengine", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/explain/pipeline.py", + "source_location": "L38", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_explain_pipeline_validatorpipeline", + "target": "src_explain_repair_repairengine", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/explain/pipeline.py", + "source_location": "L38", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_explain_pipeline_scorebundle", + "target": "src_explain_repair_repairresult", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/explain/pipeline.py", + "source_location": "L38", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_explain_pipeline_validatorpipeline", + "target": "src_explain_repair_repairresult", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/explain/pipeline.py", + "source_location": "L38", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_explain_pipeline_scorebundle", + "target": "src_scoring_bonus_engine_bonusengine", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/explain/pipeline.py", + "source_location": "L39", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_explain_pipeline_validatorpipeline", + "target": "src_scoring_bonus_engine_bonusengine", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/explain/pipeline.py", + "source_location": "L39", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_explain_pipeline_scorebundle", + "target": "src_scoring_bonus_engine_bonusresult", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/explain/pipeline.py", + "source_location": "L39", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_explain_pipeline_validatorpipeline", + "target": "src_scoring_bonus_engine_bonusresult", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/explain/pipeline.py", + "source_location": "L39", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_explain_pipeline_scorebundle", + "target": "src_scoring_theme_alignment_poiwithcategory", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/explain/pipeline.py", + "source_location": "L42", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_explain_pipeline_validatorpipeline", + "target": "src_scoring_theme_alignment_poiwithcategory", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/explain/pipeline.py", + "source_location": "L42", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_explain_pipeline_scorebundle", + "target": "src_scoring_theme_alignment_themealignmentjudge", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/explain/pipeline.py", + "source_location": "L42", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_explain_pipeline_validatorpipeline", + "target": "src_scoring_theme_alignment_themealignmentjudge", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/explain/pipeline.py", + "source_location": "L42", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_explain_pipeline_scorebundle", + "target": "src_validation_hard_fail_hardfaildetector", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/explain/pipeline.py", + "source_location": "L44", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_explain_pipeline_validatorpipeline", + "target": "src_validation_hard_fail_hardfaildetector", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/explain/pipeline.py", + "source_location": "L44", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_explain_pipeline_scorebundle", + "target": "src_validation_scoring_scorecalculator", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/explain/pipeline.py", + "source_location": "L45", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_explain_pipeline_validatorpipeline", + "target": "src_validation_scoring_scorecalculator", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/explain/pipeline.py", + "source_location": "L45", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_explain_pipeline_scorebundle", + "target": "src_validation_vrptw_engine_vrptwengine", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/explain/pipeline.py", + "source_location": "L46", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_explain_pipeline_validatorpipeline", + "target": "src_validation_vrptw_engine_vrptwengine", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/explain/pipeline.py", + "source_location": "L46", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_explain_pipeline_scorebundle", + "target": "src_validation_warning_warningdetector", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/explain/pipeline.py", + "source_location": "L47", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_explain_pipeline_validatorpipeline", + "target": "src_validation_warning_warningdetector", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/explain/pipeline.py", + "source_location": "L47", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_explain_plan_extractor_planextractionerror", + "target": "src_api_schemas_parsedday", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/explain/plan_extractor.py", + "source_location": "L19", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_explain_plan_extractor_planextractor", + "target": "src_api_schemas_parsedday", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/explain/plan_extractor.py", + "source_location": "L19", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_explain_plan_extractor_planextractionerror", + "target": "src_api_schemas_parsedplace", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/explain/plan_extractor.py", + "source_location": "L19", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_explain_plan_extractor_planextractor", + "target": "src_api_schemas_parsedplace", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/explain/plan_extractor.py", + "source_location": "L19", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_explain_plan_extractor_planextractionerror", + "target": "src_api_schemas_parsedplanresponse", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/explain/plan_extractor.py", + "source_location": "L19", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_explain_plan_extractor_planextractor", + "target": "src_api_schemas_parsedplanresponse", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/explain/plan_extractor.py", + "source_location": "L19", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_explain_repair_reordersuggestion", + "target": "src_data_models_poi", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/explain/repair.py", + "source_location": "L19", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_explain_repair_timetunesuggestion", + "target": "src_data_models_poi", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/explain/repair.py", + "source_location": "L19", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_explain_repair_deletionsuggestion", + "target": "src_data_models_poi", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/explain/repair.py", + "source_location": "L19", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_explain_repair_repairresult", + "target": "src_data_models_poi", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/explain/repair.py", + "source_location": "L19", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_explain_repair_repairengine", + "target": "src_data_models_poi", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/explain/repair.py", + "source_location": "L19", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_explain_repair_reordersuggestion", + "target": "src_data_models_hardfail", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/explain/repair.py", + "source_location": "L19", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_explain_repair_timetunesuggestion", + "target": "src_data_models_hardfail", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/explain/repair.py", + "source_location": "L19", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_explain_repair_deletionsuggestion", + "target": "src_data_models_hardfail", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/explain/repair.py", + "source_location": "L19", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_explain_repair_repairresult", + "target": "src_data_models_hardfail", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/explain/repair.py", + "source_location": "L19", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_explain_repair_repairengine", + "target": "src_data_models_hardfail", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/explain/repair.py", + "source_location": "L19", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_explain_repair_reordersuggestion", + "target": "src_data_models_itineraryplan", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/explain/repair.py", + "source_location": "L19", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_explain_repair_timetunesuggestion", + "target": "src_data_models_itineraryplan", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/explain/repair.py", + "source_location": "L19", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_explain_repair_deletionsuggestion", + "target": "src_data_models_itineraryplan", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/explain/repair.py", + "source_location": "L19", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_explain_repair_repairresult", + "target": "src_data_models_itineraryplan", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/explain/repair.py", + "source_location": "L19", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_explain_repair_repairengine", + "target": "src_data_models_itineraryplan", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/explain/repair.py", + "source_location": "L19", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_explain_repair_reordersuggestion", + "target": "src_data_restaurant_catalog_restaurantcatalog", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/explain/repair.py", + "source_location": "L21", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_explain_repair_timetunesuggestion", + "target": "src_data_restaurant_catalog_restaurantcatalog", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/explain/repair.py", + "source_location": "L21", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_explain_repair_deletionsuggestion", + "target": "src_data_restaurant_catalog_restaurantcatalog", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/explain/repair.py", + "source_location": "L21", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_explain_repair_repairresult", + "target": "src_data_restaurant_catalog_restaurantcatalog", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/explain/repair.py", + "source_location": "L21", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_explain_repair_repairengine", + "target": "src_data_restaurant_catalog_restaurantcatalog", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/explain/repair.py", + "source_location": "L21", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_explain_repair_reordersuggestion", + "target": "src_validation_hard_fail_hardfaildetector", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/explain/repair.py", + "source_location": "L23", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_explain_repair_timetunesuggestion", + "target": "src_validation_hard_fail_hardfaildetector", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/explain/repair.py", + "source_location": "L23", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_explain_repair_deletionsuggestion", + "target": "src_validation_hard_fail_hardfaildetector", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/explain/repair.py", + "source_location": "L23", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_explain_repair_repairresult", + "target": "src_validation_hard_fail_hardfaildetector", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/explain/repair.py", + "source_location": "L23", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_explain_repair_repairengine", + "target": "src_validation_hard_fail_hardfaildetector", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/explain/repair.py", + "source_location": "L23", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_matrix_redis_matrix_redistimematrix", + "target": "src_data_models_vrptwplace", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/matrix/redis_matrix.py", + "source_location": "L22", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_matrix_redis_matrix_redistimematrix", + "target": "src_validation_vrptw_engine_haversinematrix", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/matrix/redis_matrix.py", + "source_location": "L23", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_matrix_redis_matrix_redistimematrix", + "target": "src_validation_vrptw_engine_timematrix", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/matrix/redis_matrix.py", + "source_location": "L23", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_scoring_bonus_engine_bonusresult", + "target": "src_data_models_poi", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/scoring/bonus_engine.py", + "source_location": "L8", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_scoring_bonus_engine_placecoord", + "target": "src_data_models_poi", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/scoring/bonus_engine.py", + "source_location": "L8", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_scoring_bonus_engine_bonusengine", + "target": "src_data_models_poi", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/scoring/bonus_engine.py", + "source_location": "L8", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_scoring_cluster_dispersion_daydispersionmetric", + "target": "src_data_models_deepdiveitem", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/scoring/cluster_dispersion.py", + "source_location": "L21", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_scoring_cluster_dispersion_clusterdispersionreport", + "target": "src_data_models_deepdiveitem", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/scoring/cluster_dispersion.py", + "source_location": "L21", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_scoring_cluster_dispersion_daydispersionmetric", + "target": "src_data_models_vrptwday", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/scoring/cluster_dispersion.py", + "source_location": "L21", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_scoring_cluster_dispersion_clusterdispersionreport", + "target": "src_data_models_vrptwday", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/scoring/cluster_dispersion.py", + "source_location": "L21", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_scoring_cluster_dispersion_daydispersionmetric", + "target": "src_data_models_vrptwplace", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/scoring/cluster_dispersion.py", + "source_location": "L21", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_scoring_cluster_dispersion_clusterdispersionreport", + "target": "src_data_models_vrptwplace", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/scoring/cluster_dispersion.py", + "source_location": "L21", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_scoring_congestion_engine_congestionlevel", + "target": "src_data_seoul_citydata_client_seoulcitydataclient", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/scoring/congestion_engine.py", + "source_location": "L22", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_scoring_congestion_engine_congestionresult", + "target": "src_data_seoul_citydata_client_seoulcitydataclient", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/scoring/congestion_engine.py", + "source_location": "L22", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_scoring_congestion_engine_congestionengine", + "target": "src_data_seoul_citydata_client_seoulcitydataclient", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/scoring/congestion_engine.py", + "source_location": "L22", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_scoring_theme_alignment_poiwithcategory", + "target": "src_data_models_deepdiveitem", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/scoring/theme_alignment.py", + "source_location": "L21", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_scoring_theme_alignment_themejudgment", + "target": "src_data_models_deepdiveitem", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/scoring/theme_alignment.py", + "source_location": "L21", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_scoring_theme_alignment_themealignmentreport", + "target": "src_data_models_deepdiveitem", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/scoring/theme_alignment.py", + "source_location": "L21", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_scoring_theme_alignment_themealignmentjudge", + "target": "src_data_models_deepdiveitem", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/scoring/theme_alignment.py", + "source_location": "L21", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_scoring_theme_alignment_poiwithcategory", + "target": "src_data_theme_taxonomy_userpreferences", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/scoring/theme_alignment.py", + "source_location": "L22", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_scoring_theme_alignment_themejudgment", + "target": "src_data_theme_taxonomy_userpreferences", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/scoring/theme_alignment.py", + "source_location": "L22", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_scoring_theme_alignment_themealignmentreport", + "target": "src_data_theme_taxonomy_userpreferences", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/scoring/theme_alignment.py", + "source_location": "L22", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_scoring_theme_alignment_themealignmentjudge", + "target": "src_data_theme_taxonomy_userpreferences", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/scoring/theme_alignment.py", + "source_location": "L22", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_scoring_travel_ratio_dayratiometric", + "target": "src_data_models_deepdiveitem", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/scoring/travel_ratio.py", + "source_location": "L12", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_scoring_travel_ratio_travelratioreport", + "target": "src_data_models_deepdiveitem", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/scoring/travel_ratio.py", + "source_location": "L12", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_scoring_travel_ratio_dayratiometric", + "target": "src_data_models_vrptwday", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/scoring/travel_ratio.py", + "source_location": "L12", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_scoring_travel_ratio_travelratioreport", + "target": "src_data_models_vrptwday", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/scoring/travel_ratio.py", + "source_location": "L12", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_scoring_travel_ratio_dayratiometric", + "target": "src_data_models_vrptwplace", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/scoring/travel_ratio.py", + "source_location": "L12", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_scoring_travel_ratio_travelratioreport", + "target": "src_data_models_vrptwplace", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/scoring/travel_ratio.py", + "source_location": "L12", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_scoring_travel_ratio_dayratiometric", + "target": "src_validation_vrptw_engine_haversinematrix", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/scoring/travel_ratio.py", + "source_location": "L13", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_scoring_travel_ratio_travelratioreport", + "target": "src_validation_vrptw_engine_haversinematrix", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/scoring/travel_ratio.py", + "source_location": "L13", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_scoring_travel_ratio_dayratiometric", + "target": "src_validation_vrptw_engine_timematrix", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/scoring/travel_ratio.py", + "source_location": "L13", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_scoring_travel_ratio_travelratioreport", + "target": "src_validation_vrptw_engine_timematrix", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/scoring/travel_ratio.py", + "source_location": "L13", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_validation_alternatives_alternativesfinder", + "target": "src_data_models_alternativepoi", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/validation/alternatives.py", + "source_location": "L26", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_validation_alternatives_alternativesfinder", + "target": "src_data_models_hardfail", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/validation/alternatives.py", + "source_location": "L26", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_validation_alternatives_alternativesfinder", + "target": "src_data_models_poi", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/validation/alternatives.py", + "source_location": "L26", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_validation_hard_fail_hardfaildetector", + "target": "src_data_models_hardfail", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/validation/hard_fail.py", + "source_location": "L4", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_validation_hard_fail_hardfaildetector", + "target": "src_data_models_itineraryplan", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/validation/hard_fail.py", + "source_location": "L4", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_validation_hard_fail_hardfaildetector", + "target": "src_data_models_poi", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/validation/hard_fail.py", + "source_location": "L4", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_validation_kakao_matrix_kakaomobilitymatrix", + "target": "src_data_models_vrptwplace", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/validation/kakao_matrix.py", + "source_location": "L35", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_validation_kakao_matrix_kakaomobilitymatrix", + "target": "src_validation_vrptw_engine_haversinematrix", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/validation/kakao_matrix.py", + "source_location": "L36", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_validation_kakao_matrix_kakaomobilitymatrix", + "target": "src_validation_vrptw_engine_timematrix", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/validation/kakao_matrix.py", + "source_location": "L36", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_validation_scoring_scorecalculator", + "target": "src_data_models_hardfail", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/validation/scoring.py", + "source_location": "L4", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_validation_scoring_scorecalculator", + "target": "src_data_models_itineraryplan", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/validation/scoring.py", + "source_location": "L4", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_validation_scoring_scorecalculator", + "target": "src_data_models_poi", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/validation/scoring.py", + "source_location": "L4", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_validation_scoring_scorecalculator", + "target": "src_data_models_scores", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/validation/scoring.py", + "source_location": "L4", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_validation_vrptw_engine_timematrix", + "target": "src_data_models_dayroutecomparison", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/validation/vrptw_engine.py", + "source_location": "L18", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_validation_vrptw_engine_haversinematrix", + "target": "src_data_models_dayroutecomparison", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/validation/vrptw_engine.py", + "source_location": "L18", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_validation_vrptw_engine_cachedroutematrix", + "target": "src_data_models_dayroutecomparison", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/validation/vrptw_engine.py", + "source_location": "L18", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_validation_vrptw_engine_simresult", + "target": "src_data_models_dayroutecomparison", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/validation/vrptw_engine.py", + "source_location": "L18", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_validation_vrptw_engine_vrptwengine", + "target": "src_data_models_dayroutecomparison", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/validation/vrptw_engine.py", + "source_location": "L18", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_validation_vrptw_engine_timematrix", + "target": "src_data_models_deepdiveitem", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/validation/vrptw_engine.py", + "source_location": "L18", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_validation_vrptw_engine_haversinematrix", + "target": "src_data_models_deepdiveitem", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/validation/vrptw_engine.py", + "source_location": "L18", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_validation_vrptw_engine_cachedroutematrix", + "target": "src_data_models_deepdiveitem", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/validation/vrptw_engine.py", + "source_location": "L18", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_validation_vrptw_engine_simresult", + "target": "src_data_models_deepdiveitem", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/validation/vrptw_engine.py", + "source_location": "L18", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_validation_vrptw_engine_vrptwengine", + "target": "src_data_models_deepdiveitem", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/validation/vrptw_engine.py", + "source_location": "L18", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_validation_vrptw_engine_timematrix", + "target": "src_data_models_vrptwday", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/validation/vrptw_engine.py", + "source_location": "L18", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_validation_vrptw_engine_haversinematrix", + "target": "src_data_models_vrptwday", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/validation/vrptw_engine.py", + "source_location": "L18", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_validation_vrptw_engine_cachedroutematrix", + "target": "src_data_models_vrptwday", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/validation/vrptw_engine.py", + "source_location": "L18", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_validation_vrptw_engine_simresult", + "target": "src_data_models_vrptwday", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/validation/vrptw_engine.py", + "source_location": "L18", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_validation_vrptw_engine_vrptwengine", + "target": "src_data_models_vrptwday", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/validation/vrptw_engine.py", + "source_location": "L18", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_validation_vrptw_engine_timematrix", + "target": "src_data_models_vrptwplace", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/validation/vrptw_engine.py", + "source_location": "L18", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_validation_vrptw_engine_haversinematrix", + "target": "src_data_models_vrptwplace", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/validation/vrptw_engine.py", + "source_location": "L18", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_validation_vrptw_engine_cachedroutematrix", + "target": "src_data_models_vrptwplace", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/validation/vrptw_engine.py", + "source_location": "L18", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_validation_vrptw_engine_simresult", + "target": "src_data_models_vrptwplace", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/validation/vrptw_engine.py", + "source_location": "L18", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_validation_vrptw_engine_vrptwengine", + "target": "src_data_models_vrptwplace", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/validation/vrptw_engine.py", + "source_location": "L18", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_validation_vrptw_engine_timematrix", + "target": "src_data_models_vrptwrequest", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/validation/vrptw_engine.py", + "source_location": "L18", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_validation_vrptw_engine_haversinematrix", + "target": "src_data_models_vrptwrequest", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/validation/vrptw_engine.py", + "source_location": "L18", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_validation_vrptw_engine_cachedroutematrix", + "target": "src_data_models_vrptwrequest", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/validation/vrptw_engine.py", + "source_location": "L18", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_validation_vrptw_engine_simresult", + "target": "src_data_models_vrptwrequest", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/validation/vrptw_engine.py", + "source_location": "L18", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_validation_vrptw_engine_vrptwengine", + "target": "src_data_models_vrptwrequest", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/validation/vrptw_engine.py", + "source_location": "L18", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_validation_vrptw_engine_timematrix", + "target": "src_data_models_vrptwresult", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/validation/vrptw_engine.py", + "source_location": "L18", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_validation_vrptw_engine_haversinematrix", + "target": "src_data_models_vrptwresult", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/validation/vrptw_engine.py", + "source_location": "L18", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_validation_vrptw_engine_cachedroutematrix", + "target": "src_data_models_vrptwresult", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/validation/vrptw_engine.py", + "source_location": "L18", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_validation_vrptw_engine_simresult", + "target": "src_data_models_vrptwresult", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/validation/vrptw_engine.py", + "source_location": "L18", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_validation_vrptw_engine_vrptwengine", + "target": "src_data_models_vrptwresult", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/validation/vrptw_engine.py", + "source_location": "L18", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_validation_warning_warningdetector", + "target": "src_data_models_itineraryplan", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/validation/warning.py", + "source_location": "L4", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_validation_warning_warningdetector", + "target": "src_data_models_poi", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/validation/warning.py", + "source_location": "L4", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "src_validation_warning_warningdetector", + "target": "src_data_models_warning", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/validation/warning.py", + "source_location": "L4", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_alternatives_testfindalternatives", + "target": "src_data_models_alternativepoi", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_alternatives.py", + "source_location": "L6", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_alternatives_testbuildalternativesmap", + "target": "src_data_models_alternativepoi", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_alternatives.py", + "source_location": "L6", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_alternatives_testfindalternatives", + "target": "src_data_models_hardfail", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_alternatives.py", + "source_location": "L6", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_alternatives_testbuildalternativesmap", + "target": "src_data_models_hardfail", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_alternatives.py", + "source_location": "L6", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_alternatives_testfindalternatives", + "target": "src_data_models_poi", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_alternatives.py", + "source_location": "L6", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_alternatives_testbuildalternativesmap", + "target": "src_data_models_poi", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_alternatives.py", + "source_location": "L6", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_alternatives_testfindalternatives", + "target": "src_validation_alternatives_alternativesfinder", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_alternatives.py", + "source_location": "L7", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_alternatives_testbuildalternativesmap", + "target": "src_validation_alternatives_alternativesfinder", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_alternatives.py", + "source_location": "L7", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_bonus_engine_testwellnessbonus", + "target": "src_data_models_poi", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_bonus_engine.py", + "source_location": "L10", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_bonus_engine_testaccessibilitybonus", + "target": "src_data_models_poi", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_bonus_engine.py", + "source_location": "L10", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_bonus_engine_testpetfriendlybonus", + "target": "src_data_models_poi", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_bonus_engine.py", + "source_location": "L10", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_bonus_engine_testtotalbonuscap", + "target": "src_data_models_poi", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_bonus_engine.py", + "source_location": "L10", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_bonus_engine_testfromdataset", + "target": "src_data_models_poi", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_bonus_engine.py", + "source_location": "L10", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_bonus_engine_testbonusresultfields", + "target": "src_data_models_poi", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_bonus_engine.py", + "source_location": "L10", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_bonus_engine_testwellnessbonus", + "target": "src_scoring_bonus_engine_bonusengine", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_bonus_engine.py", + "source_location": "L11", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_bonus_engine_testaccessibilitybonus", + "target": "src_scoring_bonus_engine_bonusengine", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_bonus_engine.py", + "source_location": "L11", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_bonus_engine_testpetfriendlybonus", + "target": "src_scoring_bonus_engine_bonusengine", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_bonus_engine.py", + "source_location": "L11", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_bonus_engine_testtotalbonuscap", + "target": "src_scoring_bonus_engine_bonusengine", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_bonus_engine.py", + "source_location": "L11", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_bonus_engine_testfromdataset", + "target": "src_scoring_bonus_engine_bonusengine", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_bonus_engine.py", + "source_location": "L11", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_bonus_engine_testbonusresultfields", + "target": "src_scoring_bonus_engine_bonusengine", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_bonus_engine.py", + "source_location": "L11", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_dwell_db_testmanualoverride", + "target": "src_data_dwell_db_dwellrecommendation", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_dwell_db.py", + "source_location": "L6", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_dwell_db_testlclssystm3", + "target": "src_data_dwell_db_dwellrecommendation", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_dwell_db.py", + "source_location": "L6", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_dwell_db_testlclssystm1fallback", + "target": "src_data_dwell_db_dwellrecommendation", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_dwell_db.py", + "source_location": "L6", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_dwell_db_testcontenttypefallback", + "target": "src_data_dwell_db_dwellrecommendation", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_dwell_db.py", + "source_location": "L6", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_dwell_db_testdefaultfallback", + "target": "src_data_dwell_db_dwellrecommendation", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_dwell_db.py", + "source_location": "L6", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_dwell_db_testistooshort", + "target": "src_data_dwell_db_dwellrecommendation", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_dwell_db.py", + "source_location": "L6", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testcachekey", + "target": "src_data_models_alternativepoi", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L9", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testgraphcontext", + "target": "src_data_models_alternativepoi", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L9", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testbuilduserprompt", + "target": "src_data_models_alternativepoi", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L9", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testparsellmresponse", + "target": "src_data_models_alternativepoi", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L9", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testfallback", + "target": "src_data_models_alternativepoi", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L9", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testexplainenginenollm", + "target": "src_data_models_alternativepoi", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L9", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testexplainenginemockllm", + "target": "src_data_models_alternativepoi", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L9", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testexplainenginegraphdefault", + "target": "src_data_models_alternativepoi", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L9", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testbuildalternatives", + "target": "src_data_models_alternativepoi", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L9", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testcachekey", + "target": "src_data_models_dayplan", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L9", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testgraphcontext", + "target": "src_data_models_dayplan", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L9", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testbuilduserprompt", + "target": "src_data_models_dayplan", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L9", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testparsellmresponse", + "target": "src_data_models_dayplan", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L9", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testfallback", + "target": "src_data_models_dayplan", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L9", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testexplainenginenollm", + "target": "src_data_models_dayplan", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L9", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testexplainenginemockllm", + "target": "src_data_models_dayplan", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L9", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testexplainenginegraphdefault", + "target": "src_data_models_dayplan", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L9", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testbuildalternatives", + "target": "src_data_models_dayplan", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L9", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testcachekey", + "target": "src_data_models_explanationitem", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L9", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testgraphcontext", + "target": "src_data_models_explanationitem", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L9", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testbuilduserprompt", + "target": "src_data_models_explanationitem", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L9", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testparsellmresponse", + "target": "src_data_models_explanationitem", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L9", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testfallback", + "target": "src_data_models_explanationitem", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L9", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testexplainenginenollm", + "target": "src_data_models_explanationitem", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L9", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testexplainenginemockllm", + "target": "src_data_models_explanationitem", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L9", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testexplainenginegraphdefault", + "target": "src_data_models_explanationitem", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L9", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testbuildalternatives", + "target": "src_data_models_explanationitem", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L9", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testcachekey", + "target": "src_data_models_hardfail", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L9", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testgraphcontext", + "target": "src_data_models_hardfail", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L9", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testbuilduserprompt", + "target": "src_data_models_hardfail", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L9", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testparsellmresponse", + "target": "src_data_models_hardfail", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L9", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testfallback", + "target": "src_data_models_hardfail", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L9", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testexplainenginenollm", + "target": "src_data_models_hardfail", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L9", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testexplainenginemockllm", + "target": "src_data_models_hardfail", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L9", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testexplainenginegraphdefault", + "target": "src_data_models_hardfail", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L9", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testbuildalternatives", + "target": "src_data_models_hardfail", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L9", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testcachekey", + "target": "src_data_models_itineraryplan", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L9", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testgraphcontext", + "target": "src_data_models_itineraryplan", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L9", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testbuilduserprompt", + "target": "src_data_models_itineraryplan", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L9", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testparsellmresponse", + "target": "src_data_models_itineraryplan", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L9", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testfallback", + "target": "src_data_models_itineraryplan", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L9", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testexplainenginenollm", + "target": "src_data_models_itineraryplan", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L9", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testexplainenginemockllm", + "target": "src_data_models_itineraryplan", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L9", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testexplainenginegraphdefault", + "target": "src_data_models_itineraryplan", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L9", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testbuildalternatives", + "target": "src_data_models_itineraryplan", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L9", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testcachekey", + "target": "src_data_models_placeevidence", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L9", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testgraphcontext", + "target": "src_data_models_placeevidence", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L9", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testbuilduserprompt", + "target": "src_data_models_placeevidence", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L9", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testparsellmresponse", + "target": "src_data_models_placeevidence", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L9", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testfallback", + "target": "src_data_models_placeevidence", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L9", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testexplainenginenollm", + "target": "src_data_models_placeevidence", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L9", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testexplainenginemockllm", + "target": "src_data_models_placeevidence", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L9", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testexplainenginegraphdefault", + "target": "src_data_models_placeevidence", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L9", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testbuildalternatives", + "target": "src_data_models_placeevidence", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L9", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testcachekey", + "target": "src_data_models_placeinput", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L9", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testgraphcontext", + "target": "src_data_models_placeinput", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L9", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testbuilduserprompt", + "target": "src_data_models_placeinput", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L9", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testparsellmresponse", + "target": "src_data_models_placeinput", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L9", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testfallback", + "target": "src_data_models_placeinput", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L9", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testexplainenginenollm", + "target": "src_data_models_placeinput", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L9", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testexplainenginemockllm", + "target": "src_data_models_placeinput", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L9", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testexplainenginegraphdefault", + "target": "src_data_models_placeinput", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L9", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testbuildalternatives", + "target": "src_data_models_placeinput", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L9", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testcachekey", + "target": "src_data_models_scores", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L9", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testgraphcontext", + "target": "src_data_models_scores", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L9", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testbuilduserprompt", + "target": "src_data_models_scores", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L9", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testparsellmresponse", + "target": "src_data_models_scores", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L9", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testfallback", + "target": "src_data_models_scores", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L9", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testexplainenginenollm", + "target": "src_data_models_scores", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L9", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testexplainenginemockllm", + "target": "src_data_models_scores", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L9", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testexplainenginegraphdefault", + "target": "src_data_models_scores", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L9", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testbuildalternatives", + "target": "src_data_models_scores", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L9", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testcachekey", + "target": "src_data_models_warning", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L9", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testgraphcontext", + "target": "src_data_models_warning", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L9", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testbuilduserprompt", + "target": "src_data_models_warning", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L9", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testparsellmresponse", + "target": "src_data_models_warning", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L9", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testfallback", + "target": "src_data_models_warning", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L9", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testexplainenginenollm", + "target": "src_data_models_warning", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L9", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testexplainenginemockllm", + "target": "src_data_models_warning", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L9", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testexplainenginegraphdefault", + "target": "src_data_models_warning", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L9", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testbuildalternatives", + "target": "src_data_models_warning", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L9", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testcachekey", + "target": "src_explain_explain_engine_explainengine", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L20", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testgraphcontext", + "target": "src_explain_explain_engine_explainengine", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L20", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testbuilduserprompt", + "target": "src_explain_explain_engine_explainengine", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L20", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testparsellmresponse", + "target": "src_explain_explain_engine_explainengine", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L20", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testfallback", + "target": "src_explain_explain_engine_explainengine", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L20", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testexplainenginenollm", + "target": "src_explain_explain_engine_explainengine", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L20", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testexplainenginemockllm", + "target": "src_explain_explain_engine_explainengine", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L20", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testexplainenginegraphdefault", + "target": "src_explain_explain_engine_explainengine", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L20", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testbuildalternatives", + "target": "src_explain_explain_engine_explainengine", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_explain_engine.py", + "source_location": "L20", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_geo_testhaversinekm", + "target": "src_data_models_poi", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_geo.py", + "source_location": "L6", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_geo_testbuilddistcache", + "target": "src_data_models_poi", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_geo.py", + "source_location": "L6", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_geo_testnnheuristickm", + "target": "src_data_models_poi", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_geo.py", + "source_location": "L6", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_geo_testgettravelmin", + "target": "src_data_models_poi", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_geo.py", + "source_location": "L6", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_hard_fail_testhelpers", + "target": "src_data_models_poi", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_hard_fail.py", + "source_location": "L6", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_hard_fail_testoperatinghours", + "target": "src_data_models_poi", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_hard_fail.py", + "source_location": "L6", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_hard_fail_testtraveltimeimpossible", + "target": "src_data_models_poi", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_hard_fail.py", + "source_location": "L6", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_hard_fail_testscheduleinfeasible", + "target": "src_data_models_poi", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_hard_fail.py", + "source_location": "L6", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_hard_fail_testnormalplan", + "target": "src_data_models_poi", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_hard_fail.py", + "source_location": "L6", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_hard_fail_testdayindex", + "target": "src_data_models_poi", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_hard_fail.py", + "source_location": "L6", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_hard_fail_testhelpers", + "target": "src_data_models_dayplan", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_hard_fail.py", + "source_location": "L6", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_hard_fail_testoperatinghours", + "target": "src_data_models_dayplan", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_hard_fail.py", + "source_location": "L6", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_hard_fail_testtraveltimeimpossible", + "target": "src_data_models_dayplan", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_hard_fail.py", + "source_location": "L6", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_hard_fail_testscheduleinfeasible", + "target": "src_data_models_dayplan", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_hard_fail.py", + "source_location": "L6", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_hard_fail_testnormalplan", + "target": "src_data_models_dayplan", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_hard_fail.py", + "source_location": "L6", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_hard_fail_testdayindex", + "target": "src_data_models_dayplan", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_hard_fail.py", + "source_location": "L6", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_hard_fail_testhelpers", + "target": "src_data_models_itineraryplan", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_hard_fail.py", + "source_location": "L6", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_hard_fail_testoperatinghours", + "target": "src_data_models_itineraryplan", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_hard_fail.py", + "source_location": "L6", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_hard_fail_testtraveltimeimpossible", + "target": "src_data_models_itineraryplan", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_hard_fail.py", + "source_location": "L6", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_hard_fail_testscheduleinfeasible", + "target": "src_data_models_itineraryplan", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_hard_fail.py", + "source_location": "L6", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_hard_fail_testnormalplan", + "target": "src_data_models_itineraryplan", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_hard_fail.py", + "source_location": "L6", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_hard_fail_testdayindex", + "target": "src_data_models_itineraryplan", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_hard_fail.py", + "source_location": "L6", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_hard_fail_testhelpers", + "target": "src_data_models_placeinput", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_hard_fail.py", + "source_location": "L6", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_hard_fail_testoperatinghours", + "target": "src_data_models_placeinput", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_hard_fail.py", + "source_location": "L6", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_hard_fail_testtraveltimeimpossible", + "target": "src_data_models_placeinput", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_hard_fail.py", + "source_location": "L6", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_hard_fail_testscheduleinfeasible", + "target": "src_data_models_placeinput", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_hard_fail.py", + "source_location": "L6", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_hard_fail_testnormalplan", + "target": "src_data_models_placeinput", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_hard_fail.py", + "source_location": "L6", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_hard_fail_testdayindex", + "target": "src_data_models_placeinput", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_hard_fail.py", + "source_location": "L6", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_hard_fail_testhelpers", + "target": "src_validation_hard_fail_hardfaildetector", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_hard_fail.py", + "source_location": "L7", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_hard_fail_testoperatinghours", + "target": "src_validation_hard_fail_hardfaildetector", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_hard_fail.py", + "source_location": "L7", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_hard_fail_testtraveltimeimpossible", + "target": "src_validation_hard_fail_hardfaildetector", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_hard_fail.py", + "source_location": "L7", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_hard_fail_testscheduleinfeasible", + "target": "src_validation_hard_fail_hardfaildetector", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_hard_fail.py", + "source_location": "L7", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_hard_fail_testnormalplan", + "target": "src_validation_hard_fail_hardfaildetector", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_hard_fail.py", + "source_location": "L7", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_hard_fail_testdayindex", + "target": "src_validation_hard_fail_hardfaildetector", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_hard_fail.py", + "source_location": "L7", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_kakao_matrix_testsamepoint", + "target": "src_data_models_vrptwplace", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_kakao_matrix.py", + "source_location": "L9", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_kakao_matrix_testapicall", + "target": "src_data_models_vrptwplace", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_kakao_matrix.py", + "source_location": "L9", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_kakao_matrix_testquotaexhaustion", + "target": "src_data_models_vrptwplace", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_kakao_matrix.py", + "source_location": "L9", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_kakao_matrix_testautherror", + "target": "src_data_models_vrptwplace", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_kakao_matrix.py", + "source_location": "L9", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_kakao_matrix_testcachepersistence", + "target": "src_data_models_vrptwplace", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_kakao_matrix.py", + "source_location": "L9", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_kakao_matrix_testfromenv", + "target": "src_data_models_vrptwplace", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_kakao_matrix.py", + "source_location": "L9", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_kakao_matrix_testasyncprefetch", + "target": "src_data_models_vrptwplace", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_kakao_matrix.py", + "source_location": "L9", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_kakao_matrix_testsamepoint", + "target": "src_validation_kakao_matrix_kakaomobilitymatrix", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_kakao_matrix.py", + "source_location": "L10", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_kakao_matrix_testapicall", + "target": "src_validation_kakao_matrix_kakaomobilitymatrix", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_kakao_matrix.py", + "source_location": "L10", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_kakao_matrix_testquotaexhaustion", + "target": "src_validation_kakao_matrix_kakaomobilitymatrix", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_kakao_matrix.py", + "source_location": "L10", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_kakao_matrix_testautherror", + "target": "src_validation_kakao_matrix_kakaomobilitymatrix", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_kakao_matrix.py", + "source_location": "L10", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_kakao_matrix_testcachepersistence", + "target": "src_validation_kakao_matrix_kakaomobilitymatrix", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_kakao_matrix.py", + "source_location": "L10", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_kakao_matrix_testfromenv", + "target": "src_validation_kakao_matrix_kakaomobilitymatrix", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_kakao_matrix.py", + "source_location": "L10", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_kakao_matrix_testasyncprefetch", + "target": "src_validation_kakao_matrix_kakaomobilitymatrix", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_kakao_matrix.py", + "source_location": "L10", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_party_config_testpartyprofiles", + "target": "src_data_party_config_partyprofile", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_party_config.py", + "source_location": "L6", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_party_config_testpartyprofilevalues", + "target": "src_data_party_config_partyprofile", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_party_config.py", + "source_location": "L6", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_party_config_teststrainthresholdlogic", + "target": "src_data_party_config_partyprofile", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_party_config.py", + "source_location": "L6", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_testtovrptwday", + "target": "src_data_models_alternativepoi", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L8", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_testpipelinebasic", + "target": "src_data_models_alternativepoi", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L8", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_testpipelinehardfail", + "target": "src_data_models_alternativepoi", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L8", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_testpipelinebreakdown", + "target": "src_data_models_alternativepoi", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L8", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_testpipelinemultiday", + "target": "src_data_models_alternativepoi", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L8", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_testpipelinevrptw", + "target": "src_data_models_alternativepoi", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L8", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_testpipelinerepairgainestimation", + "target": "src_data_models_alternativepoi", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L8", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_testtovrptwday", + "target": "src_data_models_dayplan", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L8", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_testpipelinebasic", + "target": "src_data_models_dayplan", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L8", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_testpipelinehardfail", + "target": "src_data_models_dayplan", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L8", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_testpipelinebreakdown", + "target": "src_data_models_dayplan", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L8", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_testpipelinemultiday", + "target": "src_data_models_dayplan", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L8", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_testpipelinevrptw", + "target": "src_data_models_dayplan", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L8", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_testpipelinerepairgainestimation", + "target": "src_data_models_dayplan", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L8", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_testtovrptwday", + "target": "src_data_models_hardfail", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L8", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_testpipelinebasic", + "target": "src_data_models_hardfail", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L8", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_testpipelinehardfail", + "target": "src_data_models_hardfail", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L8", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_testpipelinebreakdown", + "target": "src_data_models_hardfail", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L8", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_testpipelinemultiday", + "target": "src_data_models_hardfail", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L8", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_testpipelinevrptw", + "target": "src_data_models_hardfail", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L8", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_testpipelinerepairgainestimation", + "target": "src_data_models_hardfail", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L8", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_testtovrptwday", + "target": "src_data_models_itineraryplan", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L8", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_testpipelinebasic", + "target": "src_data_models_itineraryplan", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L8", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_testpipelinehardfail", + "target": "src_data_models_itineraryplan", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L8", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_testpipelinebreakdown", + "target": "src_data_models_itineraryplan", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L8", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_testpipelinemultiday", + "target": "src_data_models_itineraryplan", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L8", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_testpipelinevrptw", + "target": "src_data_models_itineraryplan", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L8", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_testpipelinerepairgainestimation", + "target": "src_data_models_itineraryplan", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L8", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_testtovrptwday", + "target": "src_data_models_placeinput", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L8", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_testpipelinebasic", + "target": "src_data_models_placeinput", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L8", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_testpipelinehardfail", + "target": "src_data_models_placeinput", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L8", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_testpipelinebreakdown", + "target": "src_data_models_placeinput", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L8", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_testpipelinemultiday", + "target": "src_data_models_placeinput", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L8", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_testpipelinevrptw", + "target": "src_data_models_placeinput", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L8", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_testpipelinerepairgainestimation", + "target": "src_data_models_placeinput", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L8", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_testtovrptwday", + "target": "src_data_models_poi", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L8", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_testpipelinebasic", + "target": "src_data_models_poi", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L8", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_testpipelinehardfail", + "target": "src_data_models_poi", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L8", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_testpipelinebreakdown", + "target": "src_data_models_poi", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L8", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_testpipelinemultiday", + "target": "src_data_models_poi", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L8", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_testpipelinevrptw", + "target": "src_data_models_poi", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L8", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_testpipelinerepairgainestimation", + "target": "src_data_models_poi", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L8", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_testtovrptwday", + "target": "src_data_models_validationresult", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L8", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_testpipelinebasic", + "target": "src_data_models_validationresult", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L8", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_testpipelinehardfail", + "target": "src_data_models_validationresult", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L8", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_testpipelinebreakdown", + "target": "src_data_models_validationresult", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L8", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_testpipelinemultiday", + "target": "src_data_models_validationresult", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L8", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_testpipelinevrptw", + "target": "src_data_models_validationresult", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L8", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_testpipelinerepairgainestimation", + "target": "src_data_models_validationresult", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L8", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_testtovrptwday", + "target": "src_explain_pipeline_validatorpipeline", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L9", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_testpipelinebasic", + "target": "src_explain_pipeline_validatorpipeline", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L9", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_testpipelinehardfail", + "target": "src_explain_pipeline_validatorpipeline", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L9", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_testpipelinebreakdown", + "target": "src_explain_pipeline_validatorpipeline", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L9", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_testpipelinemultiday", + "target": "src_explain_pipeline_validatorpipeline", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L9", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_testpipelinevrptw", + "target": "src_explain_pipeline_validatorpipeline", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L9", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_testpipelinerepairgainestimation", + "target": "src_explain_pipeline_validatorpipeline", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L9", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_testtovrptwday", + "target": "src_scoring_bonus_engine_bonusengine", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L10", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_testpipelinebasic", + "target": "src_scoring_bonus_engine_bonusengine", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L10", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_testpipelinehardfail", + "target": "src_scoring_bonus_engine_bonusengine", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L10", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_testpipelinebreakdown", + "target": "src_scoring_bonus_engine_bonusengine", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L10", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_testpipelinemultiday", + "target": "src_scoring_bonus_engine_bonusengine", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L10", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_testpipelinevrptw", + "target": "src_scoring_bonus_engine_bonusengine", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L10", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_testpipelinerepairgainestimation", + "target": "src_scoring_bonus_engine_bonusengine", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L10", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_repair_testrepairenginenoop", + "target": "src_data_models_poi", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_repair.py", + "source_location": "L4", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_repair_testdeletionsuggestion", + "target": "src_data_models_poi", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_repair.py", + "source_location": "L4", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_repair_testtimetunesuggestion", + "target": "src_data_models_poi", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_repair.py", + "source_location": "L4", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_repair_testresultmodel", + "target": "src_data_models_poi", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_repair.py", + "source_location": "L4", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_repair_testtotalestimatedgain", + "target": "src_data_models_poi", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_repair.py", + "source_location": "L4", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_repair_testrepairenginenoop", + "target": "src_data_models_dayplan", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_repair.py", + "source_location": "L4", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_repair_testdeletionsuggestion", + "target": "src_data_models_dayplan", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_repair.py", + "source_location": "L4", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_repair_testtimetunesuggestion", + "target": "src_data_models_dayplan", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_repair.py", + "source_location": "L4", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_repair_testresultmodel", + "target": "src_data_models_dayplan", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_repair.py", + "source_location": "L4", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_repair_testtotalestimatedgain", + "target": "src_data_models_dayplan", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_repair.py", + "source_location": "L4", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_repair_testrepairenginenoop", + "target": "src_data_models_hardfail", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_repair.py", + "source_location": "L4", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_repair_testdeletionsuggestion", + "target": "src_data_models_hardfail", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_repair.py", + "source_location": "L4", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_repair_testtimetunesuggestion", + "target": "src_data_models_hardfail", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_repair.py", + "source_location": "L4", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_repair_testresultmodel", + "target": "src_data_models_hardfail", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_repair.py", + "source_location": "L4", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_repair_testtotalestimatedgain", + "target": "src_data_models_hardfail", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_repair.py", + "source_location": "L4", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_repair_testrepairenginenoop", + "target": "src_data_models_itineraryplan", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_repair.py", + "source_location": "L4", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_repair_testdeletionsuggestion", + "target": "src_data_models_itineraryplan", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_repair.py", + "source_location": "L4", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_repair_testtimetunesuggestion", + "target": "src_data_models_itineraryplan", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_repair.py", + "source_location": "L4", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_repair_testresultmodel", + "target": "src_data_models_itineraryplan", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_repair.py", + "source_location": "L4", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_repair_testtotalestimatedgain", + "target": "src_data_models_itineraryplan", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_repair.py", + "source_location": "L4", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_repair_testrepairenginenoop", + "target": "src_data_models_placeinput", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_repair.py", + "source_location": "L4", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_repair_testdeletionsuggestion", + "target": "src_data_models_placeinput", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_repair.py", + "source_location": "L4", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_repair_testtimetunesuggestion", + "target": "src_data_models_placeinput", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_repair.py", + "source_location": "L4", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_repair_testresultmodel", + "target": "src_data_models_placeinput", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_repair.py", + "source_location": "L4", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_repair_testtotalestimatedgain", + "target": "src_data_models_placeinput", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_repair.py", + "source_location": "L4", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_repair_testrepairenginenoop", + "target": "src_data_restaurant_catalog_restaurantcatalog", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_repair.py", + "source_location": "L5", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_repair_testdeletionsuggestion", + "target": "src_data_restaurant_catalog_restaurantcatalog", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_repair.py", + "source_location": "L5", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_repair_testtimetunesuggestion", + "target": "src_data_restaurant_catalog_restaurantcatalog", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_repair.py", + "source_location": "L5", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_repair_testresultmodel", + "target": "src_data_restaurant_catalog_restaurantcatalog", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_repair.py", + "source_location": "L5", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_repair_testtotalestimatedgain", + "target": "src_data_restaurant_catalog_restaurantcatalog", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_repair.py", + "source_location": "L5", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_repair_testrepairenginenoop", + "target": "src_explain_repair_deletionsuggestion", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_repair.py", + "source_location": "L6", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_repair_testdeletionsuggestion", + "target": "src_explain_repair_deletionsuggestion", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_repair.py", + "source_location": "L6", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_repair_testtimetunesuggestion", + "target": "src_explain_repair_deletionsuggestion", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_repair.py", + "source_location": "L6", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_repair_testresultmodel", + "target": "src_explain_repair_deletionsuggestion", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_repair.py", + "source_location": "L6", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_repair_testtotalestimatedgain", + "target": "src_explain_repair_deletionsuggestion", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_repair.py", + "source_location": "L6", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_repair_testrepairenginenoop", + "target": "src_explain_repair_repairresult", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_repair.py", + "source_location": "L6", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_repair_testdeletionsuggestion", + "target": "src_explain_repair_repairresult", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_repair.py", + "source_location": "L6", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_repair_testtimetunesuggestion", + "target": "src_explain_repair_repairresult", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_repair.py", + "source_location": "L6", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_repair_testresultmodel", + "target": "src_explain_repair_repairresult", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_repair.py", + "source_location": "L6", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_repair_testtotalestimatedgain", + "target": "src_explain_repair_repairresult", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_repair.py", + "source_location": "L6", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_repair_testrepairenginenoop", + "target": "src_explain_repair_repairengine", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_repair.py", + "source_location": "L7", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_repair_testdeletionsuggestion", + "target": "src_explain_repair_repairengine", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_repair.py", + "source_location": "L7", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_repair_testtimetunesuggestion", + "target": "src_explain_repair_repairengine", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_repair.py", + "source_location": "L7", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_repair_testresultmodel", + "target": "src_explain_repair_repairengine", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_repair.py", + "source_location": "L7", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_repair_testtotalestimatedgain", + "target": "src_explain_repair_repairengine", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_repair.py", + "source_location": "L7", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_reward_engine_testgeneraterewards", + "target": "src_data_models_scores", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_reward_engine.py", + "source_location": "L6", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_scoring_testweights", + "target": "src_data_models_dayplan", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_scoring.py", + "source_location": "L6", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_scoring_testcompute", + "target": "src_data_models_dayplan", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_scoring.py", + "source_location": "L6", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_scoring_testefficiency", + "target": "src_data_models_dayplan", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_scoring.py", + "source_location": "L6", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_scoring_testfeasibility", + "target": "src_data_models_dayplan", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_scoring.py", + "source_location": "L6", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_scoring_testpurposefit", + "target": "src_data_models_dayplan", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_scoring.py", + "source_location": "L6", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_scoring_testcosinedistance", + "target": "src_data_models_dayplan", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_scoring.py", + "source_location": "L6", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_scoring_testweights", + "target": "src_data_models_hardfail", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_scoring.py", + "source_location": "L6", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_scoring_testcompute", + "target": "src_data_models_hardfail", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_scoring.py", + "source_location": "L6", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_scoring_testefficiency", + "target": "src_data_models_hardfail", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_scoring.py", + "source_location": "L6", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_scoring_testfeasibility", + "target": "src_data_models_hardfail", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_scoring.py", + "source_location": "L6", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_scoring_testpurposefit", + "target": "src_data_models_hardfail", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_scoring.py", + "source_location": "L6", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_scoring_testcosinedistance", + "target": "src_data_models_hardfail", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_scoring.py", + "source_location": "L6", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_scoring_testweights", + "target": "src_data_models_itineraryplan", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_scoring.py", + "source_location": "L6", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_scoring_testcompute", + "target": "src_data_models_itineraryplan", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_scoring.py", + "source_location": "L6", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_scoring_testefficiency", + "target": "src_data_models_itineraryplan", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_scoring.py", + "source_location": "L6", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_scoring_testfeasibility", + "target": "src_data_models_itineraryplan", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_scoring.py", + "source_location": "L6", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_scoring_testpurposefit", + "target": "src_data_models_itineraryplan", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_scoring.py", + "source_location": "L6", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_scoring_testcosinedistance", + "target": "src_data_models_itineraryplan", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_scoring.py", + "source_location": "L6", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_scoring_testweights", + "target": "src_data_models_placeinput", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_scoring.py", + "source_location": "L6", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_scoring_testcompute", + "target": "src_data_models_placeinput", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_scoring.py", + "source_location": "L6", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_scoring_testefficiency", + "target": "src_data_models_placeinput", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_scoring.py", + "source_location": "L6", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_scoring_testfeasibility", + "target": "src_data_models_placeinput", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_scoring.py", + "source_location": "L6", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_scoring_testpurposefit", + "target": "src_data_models_placeinput", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_scoring.py", + "source_location": "L6", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_scoring_testcosinedistance", + "target": "src_data_models_placeinput", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_scoring.py", + "source_location": "L6", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_scoring_testweights", + "target": "src_data_models_poi", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_scoring.py", + "source_location": "L6", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_scoring_testcompute", + "target": "src_data_models_poi", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_scoring.py", + "source_location": "L6", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_scoring_testefficiency", + "target": "src_data_models_poi", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_scoring.py", + "source_location": "L6", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_scoring_testfeasibility", + "target": "src_data_models_poi", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_scoring.py", + "source_location": "L6", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_scoring_testpurposefit", + "target": "src_data_models_poi", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_scoring.py", + "source_location": "L6", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_scoring_testcosinedistance", + "target": "src_data_models_poi", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_scoring.py", + "source_location": "L6", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_scoring_testweights", + "target": "src_data_models_scores", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_scoring.py", + "source_location": "L6", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_scoring_testcompute", + "target": "src_data_models_scores", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_scoring.py", + "source_location": "L6", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_scoring_testefficiency", + "target": "src_data_models_scores", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_scoring.py", + "source_location": "L6", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_scoring_testfeasibility", + "target": "src_data_models_scores", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_scoring.py", + "source_location": "L6", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_scoring_testpurposefit", + "target": "src_data_models_scores", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_scoring.py", + "source_location": "L6", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_scoring_testcosinedistance", + "target": "src_data_models_scores", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_scoring.py", + "source_location": "L6", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_scoring_testweights", + "target": "src_validation_scoring_scorecalculator", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_scoring.py", + "source_location": "L7", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_scoring_testcompute", + "target": "src_validation_scoring_scorecalculator", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_scoring.py", + "source_location": "L7", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_scoring_testefficiency", + "target": "src_validation_scoring_scorecalculator", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_scoring.py", + "source_location": "L7", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_scoring_testfeasibility", + "target": "src_validation_scoring_scorecalculator", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_scoring.py", + "source_location": "L7", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_scoring_testpurposefit", + "target": "src_validation_scoring_scorecalculator", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_scoring.py", + "source_location": "L7", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_scoring_testcosinedistance", + "target": "src_validation_scoring_scorecalculator", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_scoring.py", + "source_location": "L7", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_theme_alignment_testnoapikey", + "target": "src_data_theme_taxonomy_userpreferences", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_theme_alignment.py", + "source_location": "L8", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_theme_alignment_testclassifyscore", + "target": "src_data_theme_taxonomy_userpreferences", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_theme_alignment.py", + "source_location": "L8", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_theme_alignment_testparsellmresponse", + "target": "src_data_theme_taxonomy_userpreferences", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_theme_alignment.py", + "source_location": "L8", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_theme_alignment_testevaluatewithmockclient", + "target": "src_data_theme_taxonomy_userpreferences", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_theme_alignment.py", + "source_location": "L8", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_theme_alignment_testnoapikey", + "target": "src_scoring_theme_alignment_poiwithcategory", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_theme_alignment.py", + "source_location": "L9", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_theme_alignment_testclassifyscore", + "target": "src_scoring_theme_alignment_poiwithcategory", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_theme_alignment.py", + "source_location": "L9", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_theme_alignment_testparsellmresponse", + "target": "src_scoring_theme_alignment_poiwithcategory", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_theme_alignment.py", + "source_location": "L9", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_theme_alignment_testevaluatewithmockclient", + "target": "src_scoring_theme_alignment_poiwithcategory", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_theme_alignment.py", + "source_location": "L9", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_theme_alignment_testnoapikey", + "target": "src_scoring_theme_alignment_themealignmentjudge", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_theme_alignment.py", + "source_location": "L9", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_theme_alignment_testclassifyscore", + "target": "src_scoring_theme_alignment_themealignmentjudge", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_theme_alignment.py", + "source_location": "L9", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_theme_alignment_testparsellmresponse", + "target": "src_scoring_theme_alignment_themealignmentjudge", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_theme_alignment.py", + "source_location": "L9", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_theme_alignment_testevaluatewithmockclient", + "target": "src_scoring_theme_alignment_themealignmentjudge", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_theme_alignment.py", + "source_location": "L9", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_theme_alignment_testnoapikey", + "target": "src_scoring_theme_alignment_themejudgment", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_theme_alignment.py", + "source_location": "L9", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_theme_alignment_testclassifyscore", + "target": "src_scoring_theme_alignment_themejudgment", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_theme_alignment.py", + "source_location": "L9", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_theme_alignment_testparsellmresponse", + "target": "src_scoring_theme_alignment_themejudgment", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_theme_alignment.py", + "source_location": "L9", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_theme_alignment_testevaluatewithmockclient", + "target": "src_scoring_theme_alignment_themejudgment", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_theme_alignment.py", + "source_location": "L9", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_theme_taxonomy_testplacetypecount", + "target": "src_data_theme_taxonomy_userpreferences", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_theme_taxonomy.py", + "source_location": "L6", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_theme_taxonomy_testuserpreferences", + "target": "src_data_theme_taxonomy_userpreferences", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_theme_taxonomy.py", + "source_location": "L6", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_theme_taxonomy_testmatchesplacetype", + "target": "src_data_theme_taxonomy_userpreferences", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_theme_taxonomy.py", + "source_location": "L6", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_theme_taxonomy_testgetplacetypesfor", + "target": "src_data_theme_taxonomy_userpreferences", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_theme_taxonomy.py", + "source_location": "L6", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testhaversinematrix", + "target": "src_data_models_vrptwday", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L10", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testcachedroutematrix", + "target": "src_data_models_vrptwday", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L10", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testdepotconstraint", + "target": "src_data_models_vrptwday", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L10", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testtimewindowfeasibility", + "target": "src_data_models_vrptwday", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L10", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testefficiencygap", + "target": "src_data_models_vrptwday", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L10", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testfatiguescore", + "target": "src_data_models_vrptwday", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L10", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testortoolsdegradation", + "target": "src_data_models_vrptwday", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L10", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testriskscore", + "target": "src_data_models_vrptwday", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L10", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testmodelvalidation", + "target": "src_data_models_vrptwday", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L10", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testefficiencygapthreshold", + "target": "src_data_models_vrptwday", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L10", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testmultidayresult", + "target": "src_data_models_vrptwday", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L10", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testhaversinematrix", + "target": "src_data_models_vrptwplace", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L10", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testcachedroutematrix", + "target": "src_data_models_vrptwplace", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L10", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testdepotconstraint", + "target": "src_data_models_vrptwplace", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L10", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testtimewindowfeasibility", + "target": "src_data_models_vrptwplace", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L10", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testefficiencygap", + "target": "src_data_models_vrptwplace", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L10", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testfatiguescore", + "target": "src_data_models_vrptwplace", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L10", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testortoolsdegradation", + "target": "src_data_models_vrptwplace", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L10", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testriskscore", + "target": "src_data_models_vrptwplace", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L10", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testmodelvalidation", + "target": "src_data_models_vrptwplace", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L10", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testefficiencygapthreshold", + "target": "src_data_models_vrptwplace", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L10", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testmultidayresult", + "target": "src_data_models_vrptwplace", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L10", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testhaversinematrix", + "target": "src_data_models_vrptwrequest", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L10", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testcachedroutematrix", + "target": "src_data_models_vrptwrequest", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L10", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testdepotconstraint", + "target": "src_data_models_vrptwrequest", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L10", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testtimewindowfeasibility", + "target": "src_data_models_vrptwrequest", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L10", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testefficiencygap", + "target": "src_data_models_vrptwrequest", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L10", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testfatiguescore", + "target": "src_data_models_vrptwrequest", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L10", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testortoolsdegradation", + "target": "src_data_models_vrptwrequest", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L10", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testriskscore", + "target": "src_data_models_vrptwrequest", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L10", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testmodelvalidation", + "target": "src_data_models_vrptwrequest", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L10", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testefficiencygapthreshold", + "target": "src_data_models_vrptwrequest", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L10", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testmultidayresult", + "target": "src_data_models_vrptwrequest", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L10", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testhaversinematrix", + "target": "src_data_models_vrptwresult", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L10", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testcachedroutematrix", + "target": "src_data_models_vrptwresult", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L10", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testdepotconstraint", + "target": "src_data_models_vrptwresult", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L10", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testtimewindowfeasibility", + "target": "src_data_models_vrptwresult", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L10", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testefficiencygap", + "target": "src_data_models_vrptwresult", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L10", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testfatiguescore", + "target": "src_data_models_vrptwresult", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L10", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testortoolsdegradation", + "target": "src_data_models_vrptwresult", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L10", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testriskscore", + "target": "src_data_models_vrptwresult", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L10", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testmodelvalidation", + "target": "src_data_models_vrptwresult", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L10", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testefficiencygapthreshold", + "target": "src_data_models_vrptwresult", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L10", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testmultidayresult", + "target": "src_data_models_vrptwresult", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L10", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testhaversinematrix", + "target": "src_validation_vrptw_engine_cachedroutematrix", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L11", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testcachedroutematrix", + "target": "src_validation_vrptw_engine_cachedroutematrix", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L11", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testdepotconstraint", + "target": "src_validation_vrptw_engine_cachedroutematrix", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L11", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testtimewindowfeasibility", + "target": "src_validation_vrptw_engine_cachedroutematrix", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L11", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testefficiencygap", + "target": "src_validation_vrptw_engine_cachedroutematrix", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L11", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testfatiguescore", + "target": "src_validation_vrptw_engine_cachedroutematrix", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L11", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testortoolsdegradation", + "target": "src_validation_vrptw_engine_cachedroutematrix", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L11", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testriskscore", + "target": "src_validation_vrptw_engine_cachedroutematrix", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L11", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testmodelvalidation", + "target": "src_validation_vrptw_engine_cachedroutematrix", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L11", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testefficiencygapthreshold", + "target": "src_validation_vrptw_engine_cachedroutematrix", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L11", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testmultidayresult", + "target": "src_validation_vrptw_engine_cachedroutematrix", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L11", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testhaversinematrix", + "target": "src_validation_vrptw_engine_haversinematrix", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L11", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testcachedroutematrix", + "target": "src_validation_vrptw_engine_haversinematrix", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L11", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testdepotconstraint", + "target": "src_validation_vrptw_engine_haversinematrix", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L11", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testtimewindowfeasibility", + "target": "src_validation_vrptw_engine_haversinematrix", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L11", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testefficiencygap", + "target": "src_validation_vrptw_engine_haversinematrix", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L11", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testfatiguescore", + "target": "src_validation_vrptw_engine_haversinematrix", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L11", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testortoolsdegradation", + "target": "src_validation_vrptw_engine_haversinematrix", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L11", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testriskscore", + "target": "src_validation_vrptw_engine_haversinematrix", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L11", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testmodelvalidation", + "target": "src_validation_vrptw_engine_haversinematrix", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L11", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testefficiencygapthreshold", + "target": "src_validation_vrptw_engine_haversinematrix", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L11", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testmultidayresult", + "target": "src_validation_vrptw_engine_haversinematrix", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L11", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testhaversinematrix", + "target": "src_validation_vrptw_engine_vrptwengine", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L11", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testcachedroutematrix", + "target": "src_validation_vrptw_engine_vrptwengine", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L11", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testdepotconstraint", + "target": "src_validation_vrptw_engine_vrptwengine", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L11", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testtimewindowfeasibility", + "target": "src_validation_vrptw_engine_vrptwengine", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L11", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testefficiencygap", + "target": "src_validation_vrptw_engine_vrptwengine", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L11", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testfatiguescore", + "target": "src_validation_vrptw_engine_vrptwengine", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L11", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testortoolsdegradation", + "target": "src_validation_vrptw_engine_vrptwengine", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L11", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testriskscore", + "target": "src_validation_vrptw_engine_vrptwengine", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L11", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testmodelvalidation", + "target": "src_validation_vrptw_engine_vrptwengine", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L11", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testefficiencygapthreshold", + "target": "src_validation_vrptw_engine_vrptwengine", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L11", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testmultidayresult", + "target": "src_validation_vrptw_engine_vrptwengine", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L11", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_warning_testdenseschedule", + "target": "src_data_models_dayplan", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_warning.py", + "source_location": "L6", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_warning_testphysicalstrain", + "target": "src_data_models_dayplan", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_warning.py", + "source_location": "L6", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_warning_testpurposemismatch", + "target": "src_data_models_dayplan", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_warning.py", + "source_location": "L6", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_warning_testarearevisit", + "target": "src_data_models_dayplan", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_warning.py", + "source_location": "L6", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_warning_testwarningfields", + "target": "src_data_models_dayplan", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_warning.py", + "source_location": "L6", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_warning_testdayindex", + "target": "src_data_models_dayplan", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_warning.py", + "source_location": "L6", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_warning_testdenseschedule", + "target": "src_data_models_itineraryplan", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_warning.py", + "source_location": "L6", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_warning_testphysicalstrain", + "target": "src_data_models_itineraryplan", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_warning.py", + "source_location": "L6", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_warning_testpurposemismatch", + "target": "src_data_models_itineraryplan", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_warning.py", + "source_location": "L6", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_warning_testarearevisit", + "target": "src_data_models_itineraryplan", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_warning.py", + "source_location": "L6", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_warning_testwarningfields", + "target": "src_data_models_itineraryplan", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_warning.py", + "source_location": "L6", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_warning_testdayindex", + "target": "src_data_models_itineraryplan", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_warning.py", + "source_location": "L6", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_warning_testdenseschedule", + "target": "src_data_models_placeinput", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_warning.py", + "source_location": "L6", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_warning_testphysicalstrain", + "target": "src_data_models_placeinput", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_warning.py", + "source_location": "L6", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_warning_testpurposemismatch", + "target": "src_data_models_placeinput", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_warning.py", + "source_location": "L6", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_warning_testarearevisit", + "target": "src_data_models_placeinput", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_warning.py", + "source_location": "L6", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_warning_testwarningfields", + "target": "src_data_models_placeinput", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_warning.py", + "source_location": "L6", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_warning_testdayindex", + "target": "src_data_models_placeinput", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_warning.py", + "source_location": "L6", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_warning_testdenseschedule", + "target": "src_data_models_poi", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_warning.py", + "source_location": "L6", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_warning_testphysicalstrain", + "target": "src_data_models_poi", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_warning.py", + "source_location": "L6", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_warning_testpurposemismatch", + "target": "src_data_models_poi", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_warning.py", + "source_location": "L6", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_warning_testarearevisit", + "target": "src_data_models_poi", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_warning.py", + "source_location": "L6", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_warning_testwarningfields", + "target": "src_data_models_poi", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_warning.py", + "source_location": "L6", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_warning_testdayindex", + "target": "src_data_models_poi", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_warning.py", + "source_location": "L6", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_warning_testdenseschedule", + "target": "src_validation_warning_warningdetector", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_warning.py", + "source_location": "L7", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_warning_testphysicalstrain", + "target": "src_validation_warning_warningdetector", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_warning.py", + "source_location": "L7", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_warning_testpurposemismatch", + "target": "src_validation_warning_warningdetector", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_warning.py", + "source_location": "L7", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_warning_testarearevisit", + "target": "src_validation_warning_warningdetector", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_warning.py", + "source_location": "L7", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_warning_testwarningfields", + "target": "src_validation_warning_warningdetector", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_warning.py", + "source_location": "L7", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "tests_test_warning_testdayindex", + "target": "src_validation_warning_warningdetector", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_warning.py", + "source_location": "L7", + "weight": 0.8, + "_origin": "ast" + }, + { + "source": "scripts_collect_naver_full_print_stats", + "target": "counter", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "scripts/collect_naver_full.py", + "source_location": "L457", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_router_list_places", + "target": "src_api_schemas_placeitem", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/api/router.py", + "source_location": "L789", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_router_list_regions", + "target": "counter", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "src/api/router.py", + "source_location": "L821", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_router_validate_plan", + "target": "src_data_models_itineraryplan", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/api/router.py", + "source_location": "L894", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_router_validate_plan", + "target": "src_data_models_dayplan", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/api/router.py", + "source_location": "L896", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_api_router_validate_plan", + "target": "src_data_models_placeinput", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/api/router.py", + "source_location": "L896", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_restaurant_catalog_restaurantcatalog_nearby", + "target": "src_utils_geo_haversine_km", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/data/restaurant_catalog.py", + "source_location": "L67", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_data_seoul_citydata_client_seoulcitydataclient_init", + "target": "src_data_models_settings", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/data/seoul_citydata_client.py", + "source_location": "L96", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_pipeline_validatorpipeline_init", + "target": "src_validation_hard_fail_hardfaildetector", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/explain/pipeline.py", + "source_location": "L109", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_pipeline_validatorpipeline_init", + "target": "src_validation_warning_warningdetector", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/explain/pipeline.py", + "source_location": "L110", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_pipeline_validatorpipeline_init", + "target": "src_validation_scoring_scorecalculator", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/explain/pipeline.py", + "source_location": "L111", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_pipeline_validatorpipeline_init", + "target": "src_explain_repair_repairengine", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/explain/pipeline.py", + "source_location": "L112", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_pipeline_validatorpipeline_run", + "target": "src_scoring_reward_engine_generate_rewards", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/explain/pipeline.py", + "source_location": "L162", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_pipeline_validatorpipeline_score", + "target": "src_data_models_scores", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/explain/pipeline.py", + "source_location": "L273", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_pipeline_validatorpipeline_score", + "target": "src_validation_vrptw_engine_vrptwengine", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/explain/pipeline.py", + "source_location": "L286", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_pipeline_validatorpipeline_score", + "target": "src_data_models_vrptwrequest", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/explain/pipeline.py", + "source_location": "L286", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_pipeline_validatorpipeline_score", + "target": "src_scoring_cluster_dispersion_evaluate_cluster_dispersion", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/explain/pipeline.py", + "source_location": "L300", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_pipeline_validatorpipeline_score", + "target": "src_scoring_travel_ratio_evaluate_travel_ratio", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/explain/pipeline.py", + "source_location": "L307", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_repair_repairengine_init", + "target": "src_validation_hard_fail_hardfaildetector", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/explain/repair.py", + "source_location": "L105", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_repair_repairengine_try_time_tune", + "target": "src_data_party_config_get_party_profile", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/explain/repair.py", + "source_location": "L179", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_repair_repairengine_try_time_tune", + "target": "src_utils_geo_build_dist_cache", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/explain/repair.py", + "source_location": "L181", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_repair_repairengine_try_time_tune", + "target": "src_utils_geo_get_travel_min", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/explain/repair.py", + "source_location": "L184", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_repair_repairengine_suggest_deletion", + "target": "src_utils_geo_build_dist_cache", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/explain/repair.py", + "source_location": "L237", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_repair_repairengine_suggest_deletion", + "target": "src_utils_geo_haversine_km", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/explain/repair.py", + "source_location": "L252", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_matrix_redis_matrix_redistimematrix_init", + "target": "src_validation_vrptw_engine_haversinematrix", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/matrix/redis_matrix.py", + "source_location": "L49", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_cluster_dispersion_compute_day_dispersion", + "target": "src_validation_alternatives_haversine_km", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "src/scoring/cluster_dispersion.py", + "source_location": "L146", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_scoring_theme_alignment_themealignmentjudge_evaluate", + "target": "src_data_models_deepdiveitem", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/scoring/theme_alignment.py", + "source_location": "L206", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_hard_fail_hardfaildetector_detect", + "target": "src_utils_geo_build_dist_cache", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/validation/hard_fail.py", + "source_location": "L38", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_hard_fail_hardfaildetector_check_operating_hours", + "target": "src_utils_geo_get_travel_min", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/validation/hard_fail.py", + "source_location": "L73", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_hard_fail_hardfaildetector_check_travel_impossible", + "target": "src_utils_geo_get_travel_min", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/validation/hard_fail.py", + "source_location": "L131", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_hard_fail_hardfaildetector_check_schedule_infeasible", + "target": "src_utils_geo_get_travel_min", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/validation/hard_fail.py", + "source_location": "L169", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_kakao_matrix_kakaomobilitymatrix_init", + "target": "src_validation_vrptw_engine_haversinematrix", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/validation/kakao_matrix.py", + "source_location": "L80", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_scoring_scorecalculator_compute", + "target": "src_utils_geo_build_dist_cache", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/validation/scoring.py", + "source_location": "L35", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_scoring_scorecalculator_calc_efficiency", + "target": "src_utils_geo_build_dist_cache", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/validation/scoring.py", + "source_location": "L72", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_scoring_scorecalculator_calc_efficiency", + "target": "src_utils_geo_nn_heuristic_km", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/validation/scoring.py", + "source_location": "L76", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_scoring_scorecalculator_calc_feasibility", + "target": "src_utils_geo_build_dist_cache", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/validation/scoring.py", + "source_location": "L92", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_scoring_scorecalculator_calc_feasibility", + "target": "src_data_party_config_get_party_profile", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/validation/scoring.py", + "source_location": "L95", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_scoring_scorecalculator_calc_feasibility", + "target": "src_utils_geo_get_travel_min", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/validation/scoring.py", + "source_location": "L101", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_scoring_scorecalculator_calc_flow", + "target": "src_utils_geo_build_dist_cache", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/validation/scoring.py", + "source_location": "L146", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_scoring_scorecalculator_calc_flow", + "target": "src_utils_geo_nn_heuristic_km", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/validation/scoring.py", + "source_location": "L149", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_vrptw_engine_vrptwengine_validate", + "target": "src_data_models_dayroutecomparison", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/validation/vrptw_engine.py", + "source_location": "L443", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_warning_warningdetector_detect", + "target": "src_utils_geo_build_dist_cache", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/validation/warning.py", + "source_location": "L59", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_warning_warningdetector_check_dense_schedule", + "target": "src_data_party_config_get_party_profile", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/validation/warning.py", + "source_location": "L80", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_warning_warningdetector_check_dense_schedule", + "target": "src_utils_geo_get_travel_min", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/validation/warning.py", + "source_location": "L84", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_warning_warningdetector_check_inefficient_route", + "target": "src_utils_geo_nn_heuristic_km", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/validation/warning.py", + "source_location": "L110", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_warning_warningdetector_check_physical_strain", + "target": "src_data_party_config_get_party_profile", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/validation/warning.py", + "source_location": "L130", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_warning_warningdetector_check_cumulative_fatigue", + "target": "src_data_party_config_get_party_profile", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/validation/warning.py", + "source_location": "L186", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_warning_warningdetector_check_cumulative_fatigue", + "target": "src_utils_geo_build_dist_cache", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/validation/warning.py", + "source_location": "L194", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_validation_warning_warningdetector_check_cumulative_fatigue", + "target": "src_utils_geo_get_travel_min", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/validation/warning.py", + "source_location": "L197", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_alternatives_testfindalternatives_test_returns_nearby_same_category", + "target": "src_validation_alternatives_alternativesfinder", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_alternatives.py", + "source_location": "L45", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_alternatives_testfindalternatives_test_excludes_failed_poi_itself", + "target": "src_validation_alternatives_alternativesfinder", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_alternatives.py", + "source_location": "L52", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_alternatives_testfindalternatives_test_respects_max_alternatives", + "target": "src_validation_alternatives_alternativesfinder", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_alternatives.py", + "source_location": "L59", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_alternatives_testfindalternatives_test_respects_search_radius", + "target": "src_validation_alternatives_alternativesfinder", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_alternatives.py", + "source_location": "L67", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_alternatives_testfindalternatives_test_distance_km_is_correct", + "target": "src_validation_alternatives_alternativesfinder", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_alternatives.py", + "source_location": "L74", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_alternatives_testfindalternatives_test_same_category_sorted_before_different", + "target": "src_validation_alternatives_alternativesfinder", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_alternatives.py", + "source_location": "L85", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_alternatives_testbuildalternativesmap_test_maps_failed_poi_to_alternatives", + "target": "src_validation_alternatives_alternativesfinder", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_alternatives.py", + "source_location": "L95", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_alternatives_testbuildalternativesmap_test_default_no_substitution", + "target": "src_validation_alternatives_alternativesfinder", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_alternatives.py", + "source_location": "L105", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_alternatives_testbuildalternativesmap_test_skips_none_poi_name", + "target": "src_validation_alternatives_alternativesfinder", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_alternatives.py", + "source_location": "L111", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_alternatives_testbuildalternativesmap_test_no_duplicate_keys", + "target": "src_validation_alternatives_alternativesfinder", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_alternatives.py", + "source_location": "L118", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_alternatives_testbuildalternativesmap_test_excludes_plan_pois_from_alternatives", + "target": "src_validation_alternatives_alternativesfinder", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_alternatives.py", + "source_location": "L125", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_cluster_dispersion_test_geo_cluster_backtrack_gyeongju", + "target": "src_data_models_vrptwday", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_cluster_dispersion.py", + "source_location": "L71", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_cluster_dispersion_test_geo_cluster_backtrack_gyeongju", + "target": "src_scoring_cluster_dispersion_evaluate_cluster_dispersion", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_cluster_dispersion.py", + "source_location": "L79", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_cluster_dispersion_test_geo_cluster_no_false_positive_sequential", + "target": "src_data_models_vrptwday", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_cluster_dispersion.py", + "source_location": "L92", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_cluster_dispersion_test_geo_cluster_no_false_positive_sequential", + "target": "src_scoring_cluster_dispersion_count_geo_cluster_backtracks", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_cluster_dispersion.py", + "source_location": "L98", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_cluster_dispersion_test_geo_cluster_no_double_penalty_when_m3_fires", + "target": "src_data_models_vrptwday", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_cluster_dispersion.py", + "source_location": "L110", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_cluster_dispersion_test_geo_cluster_no_double_penalty_when_m3_fires", + "target": "src_scoring_cluster_dispersion_evaluate_cluster_dispersion", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_cluster_dispersion.py", + "source_location": "L116", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_congestion_engine_engine", + "target": "src_scoring_congestion_engine_congestionengine", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_congestion_engine.py", + "source_location": "L51", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_congestion_engine_test_score_to_level", + "target": "src_scoring_congestion_engine_score_to_level", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_congestion_engine.py", + "source_location": "L72", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_dwell_db_testmanualoverride_test_\uacbd\ubcf5\uad81_returns_manual_source", + "target": "src_data_dwell_db_get_recommended_dwell", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_dwell_db.py", + "source_location": "L18", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_dwell_db_testmanualoverride_test_normalization_handles_spaces", + "target": "src_data_dwell_db_get_recommended_dwell", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_dwell_db.py", + "source_location": "L25", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_dwell_db_testmanualoverride_test_n_seoul_tower_alias", + "target": "src_data_dwell_db_get_recommended_dwell", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_dwell_db.py", + "source_location": "L29", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_dwell_db_testlclssystm3_test_museum_code", + "target": "src_data_dwell_db_get_recommended_dwell", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_dwell_db.py", + "source_location": "L38", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_dwell_db_testlclssystm1fallback_test_lcls3_unknown_falls_back_to_lcls1", + "target": "src_data_dwell_db_get_recommended_dwell", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_dwell_db.py", + "source_location": "L46", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_dwell_db_testcontenttypefallback_test_content_type_used_when_no_lcls", + "target": "src_data_dwell_db_get_recommended_dwell", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_dwell_db.py", + "source_location": "L53", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_dwell_db_testdefaultfallback_test_no_info_returns_default", + "target": "src_data_dwell_db_get_recommended_dwell", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_dwell_db.py", + "source_location": "L60", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_dwell_db_testistooshort_test_below_50pct_is_too_short", + "target": "src_data_dwell_db_dwellrecommendation", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_dwell_db.py", + "source_location": "L67", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testcachekey_test_same_inputs_same_key", + "target": "src_explain_explain_engine_cache_key", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_explain_engine.py", + "source_location": "L98", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testcachekey_test_different_score_different_key", + "target": "src_explain_explain_engine_cache_key", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_explain_engine.py", + "source_location": "L102", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testcachekey_test_empty_inputs", + "target": "src_explain_explain_engine_cache_key", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_explain_engine.py", + "source_location": "L105", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testcachekey_test_different_day_index_different_key", + "target": "src_explain_explain_engine_cache_key", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_explain_engine.py", + "source_location": "L113", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testgraphcontext_test_none_graph_returns_none", + "target": "src_explain_explain_engine_graph_context", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_explain_engine.py", + "source_location": "L122", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testgraphcontext_test_disabled_graph_returns_none", + "target": "src_explain_explain_engine_graph_context", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_explain_engine.py", + "source_location": "L125", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testgraphcontext_test_empty_poi_name_returns_none", + "target": "src_explain_explain_engine_graph_context", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_explain_engine.py", + "source_location": "L128", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testgraphcontext_test_no_match_returns_none", + "target": "src_explain_explain_engine_graph_context", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_explain_engine.py", + "source_location": "L133", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testgraphcontext_test_match_includes_region_and_category", + "target": "src_explain_explain_engine_graph_context", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_explain_engine.py", + "source_location": "L136", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testgraphcontext_test_match_includes_nearby_alternatives", + "target": "src_explain_explain_engine_graph_context", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_explain_engine.py", + "source_location": "L141", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testgraphcontext_test_no_nearby_omits_key", + "target": "src_explain_explain_engine_graph_context", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_explain_engine.py", + "source_location": "L146", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testbuilduserprompt_test_contains_plan_info", + "target": "src_explain_explain_engine_build_user_prompt", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_explain_engine.py", + "source_location": "L156", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testbuilduserprompt_test_hard_fail_in_prompt", + "target": "src_explain_explain_engine_build_user_prompt", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_explain_engine.py", + "source_location": "L161", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testbuilduserprompt_test_warning_in_prompt", + "target": "src_explain_explain_engine_build_user_prompt", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_explain_engine.py", + "source_location": "L166", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testbuilduserprompt_test_penalty_in_prompt", + "target": "src_explain_explain_engine_build_user_prompt", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_explain_engine.py", + "source_location": "L170", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testbuilduserprompt_test_scores_included_when_provided", + "target": "src_explain_explain_engine_build_user_prompt", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_explain_engine.py", + "source_location": "L174", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testbuilduserprompt_test_overall_item_present", + "target": "src_explain_explain_engine_build_user_prompt", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_explain_engine.py", + "source_location": "L178", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testbuilduserprompt_test_graph_evidence_included_when_matched", + "target": "src_explain_explain_engine_build_user_prompt", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_explain_engine.py", + "source_location": "L183", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testbuilduserprompt_test_no_graph_omits_evidence_key", + "target": "src_explain_explain_engine_build_user_prompt", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_explain_engine.py", + "source_location": "L191", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testbuilduserprompt_test_day_index_included_for_hard_fail", + "target": "src_explain_explain_engine_build_user_prompt", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_explain_engine.py", + "source_location": "L197", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testbuilduserprompt_test_day_index_included_for_warning", + "target": "src_explain_explain_engine_build_user_prompt", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_explain_engine.py", + "source_location": "L204", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testbuilduserprompt_test_no_day_index_omits_day_field", + "target": "src_explain_explain_engine_build_user_prompt", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_explain_engine.py", + "source_location": "L210", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testbuilduserprompt_test_warning_graph_evidence_uses_first_poi_name", + "target": "src_explain_explain_engine_build_user_prompt", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_explain_engine.py", + "source_location": "L216", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testparsellmresponse_test_parses_valid_json_array", + "target": "src_explain_explain_engine_parse_llm_response", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_explain_engine.py", + "source_location": "L235", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testparsellmresponse_test_strips_code_block_wrapper", + "target": "src_explain_explain_engine_parse_llm_response", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_explain_engine.py", + "source_location": "L242", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testparsellmresponse_test_multiple_items", + "target": "src_explain_explain_engine_parse_llm_response", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_explain_engine.py", + "source_location": "L251", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testparsellmresponse_test_returns_explanation_items", + "target": "src_explain_explain_engine_parse_llm_response", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_explain_engine.py", + "source_location": "L259", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testparsellmresponse_test_day_index_echoed_back", + "target": "src_explain_explain_engine_parse_llm_response", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_explain_engine.py", + "source_location": "L267", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testparsellmresponse_test_missing_day_index_defaults_to_none", + "target": "src_explain_explain_engine_parse_llm_response", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_explain_engine.py", + "source_location": "L275", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testfallback_test_hard_fail_becomes_critical", + "target": "src_explain_explain_engine_fallback", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_explain_engine.py", + "source_location": "L285", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testfallback_test_warning_becomes_warning", + "target": "src_explain_explain_engine_fallback", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_explain_engine.py", + "source_location": "L290", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testfallback_test_large_penalty_is_critical", + "target": "src_explain_explain_engine_fallback", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_explain_engine.py", + "source_location": "L295", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testfallback_test_small_penalty_is_warning", + "target": "src_explain_explain_engine_fallback", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_explain_engine.py", + "source_location": "L300", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testfallback_test_always_has_overall_item", + "target": "src_explain_explain_engine_fallback", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_explain_engine.py", + "source_location": "L310", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testfallback_test_failed_overall_is_critical", + "target": "src_explain_explain_engine_fallback", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_explain_engine.py", + "source_location": "L315", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testfallback_test_passed_overall_is_ok", + "target": "src_explain_explain_engine_fallback", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_explain_engine.py", + "source_location": "L320", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testfallback_test_hard_fail_day_index_propagated_and_prefixed", + "target": "src_explain_explain_engine_fallback", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_explain_engine.py", + "source_location": "L327", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testfallback_test_warning_day_index_propagated_and_prefixed", + "target": "src_explain_explain_engine_fallback", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_explain_engine.py", + "source_location": "L335", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testfallback_test_no_day_index_no_prefix", + "target": "src_explain_explain_engine_fallback", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_explain_engine.py", + "source_location": "L341", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testexplainenginenollm_setup_method", + "target": "src_explain_explain_engine_explainengine", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_explain_engine.py", + "source_location": "L354", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testexplainenginemockllm_test_llm_response_used_when_available", + "target": "src_explain_explain_engine_explainengine", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_explain_engine.py", + "source_location": "L437", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testexplainenginemockllm_test_llm_failure_falls_back_gracefully", + "target": "src_explain_explain_engine_explainengine", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_explain_engine.py", + "source_location": "L448", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testexplainenginemockllm_test_cache_prevents_second_llm_call", + "target": "src_explain_explain_engine_explainengine", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_explain_engine.py", + "source_location": "L465", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testexplainenginemockllm_test_is_available_with_client", + "target": "src_explain_explain_engine_explainengine", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_explain_engine.py", + "source_location": "L474", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testexplainenginemockllm_test_graph_evidence_reaches_llm_prompt", + "target": "src_explain_explain_engine_explainengine", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_explain_engine.py", + "source_location": "L486", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testexplainenginegraphdefault_test_default_graph_disabled_without_env", + "target": "src_explain_explain_engine_explainengine", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_explain_engine.py", + "source_location": "L499", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testbuildalternatives_test_no_hard_fails_returns_empty", + "target": "src_explain_explain_engine_explainengine", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_explain_engine.py", + "source_location": "L509", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testbuildalternatives_test_disabled_graph_returns_empty", + "target": "src_explain_explain_engine_explainengine", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_explain_engine.py", + "source_location": "L513", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testbuildalternatives_test_hard_fail_without_poi_name_skipped", + "target": "src_explain_explain_engine_explainengine", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_explain_engine.py", + "source_location": "L519", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testbuildalternatives_test_match_returns_alternatives_keyed_by_poi_name", + "target": "src_explain_explain_engine_explainengine", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_explain_engine.py", + "source_location": "L525", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testbuildalternatives_test_no_nearby_omits_poi", + "target": "src_explain_explain_engine_explainengine", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_explain_engine.py", + "source_location": "L533", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testbuildalternatives_test_no_search_match_omits_poi", + "target": "src_explain_explain_engine_explainengine", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_explain_engine.py", + "source_location": "L543", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_explain_engine_testbuildalternatives_test_duplicate_poi_name_only_looked_up_once", + "target": "src_explain_explain_engine_explainengine", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_explain_engine.py", + "source_location": "L550", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_geo_testhaversinekm_test_same_point_is_zero", + "target": "src_utils_geo_haversine_km", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_geo.py", + "source_location": "L25", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_geo_testhaversinekm_test_known_distance", + "target": "src_utils_geo_haversine_km", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_geo.py", + "source_location": "L29", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_geo_testhaversinekm_test_symmetric", + "target": "src_utils_geo_haversine_km", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_geo.py", + "source_location": "L33", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_geo_testhaversinekm_test_positive", + "target": "src_utils_geo_haversine_km", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_geo.py", + "source_location": "L38", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_geo_testbuilddistcache_test_all_pairs_present", + "target": "src_utils_geo_build_dist_cache", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_geo.py", + "source_location": "L48", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_geo_testbuilddistcache_test_no_self_pairs", + "target": "src_utils_geo_build_dist_cache", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_geo.py", + "source_location": "L56", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_geo_testbuilddistcache_test_values_match_haversine", + "target": "src_utils_geo_build_dist_cache", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_geo.py", + "source_location": "L65", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_geo_testbuilddistcache_test_values_match_haversine", + "target": "src_utils_geo_haversine_km", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_geo.py", + "source_location": "L66", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_geo_testbuilddistcache_test_single_poi_empty_cache", + "target": "src_utils_geo_build_dist_cache", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_geo.py", + "source_location": "L72", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_geo_testbuilddistcache_test_empty_list_empty_cache", + "target": "src_utils_geo_build_dist_cache", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_geo.py", + "source_location": "L76", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_geo_testnnheuristickm_test_single_poi_returns_zero", + "target": "src_utils_geo_nn_heuristic_km", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_geo.py", + "source_location": "L86", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_geo_testnnheuristickm_test_two_pois_returns_distance", + "target": "src_utils_geo_haversine_km", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_geo.py", + "source_location": "L90", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_geo_testnnheuristickm_test_two_pois_returns_distance", + "target": "src_utils_geo_nn_heuristic_km", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_geo.py", + "source_location": "L91", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_geo_testnnheuristickm_test_nn_le_actual_for_suboptimal", + "target": "src_utils_geo_haversine_km", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_geo.py", + "source_location": "L102", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_geo_testnnheuristickm_test_nn_le_actual_for_suboptimal", + "target": "src_utils_geo_nn_heuristic_km", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_geo.py", + "source_location": "L106", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_geo_testnnheuristickm_test_cache_gives_same_result", + "target": "src_utils_geo_build_dist_cache", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_geo.py", + "source_location": "L111", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_geo_testnnheuristickm_test_cache_gives_same_result", + "target": "src_utils_geo_nn_heuristic_km", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_geo.py", + "source_location": "L112", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_geo_testnnheuristickm_test_collinear_optimal_order_matches_nn", + "target": "src_utils_geo_haversine_km", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_geo.py", + "source_location": "L118", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_geo_testnnheuristickm_test_collinear_optimal_order_matches_nn", + "target": "src_utils_geo_nn_heuristic_km", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_geo.py", + "source_location": "L121", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_geo_testgettravelmin_test_uses_matrix_when_available", + "target": "src_utils_geo_get_travel_min", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_geo.py", + "source_location": "L133", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_geo_testgettravelmin_test_haversine_fallback_when_no_matrix", + "target": "src_utils_geo_haversine_km", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_geo.py", + "source_location": "L138", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_geo_testgettravelmin_test_haversine_fallback_when_no_matrix", + "target": "src_utils_geo_get_travel_min", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_geo.py", + "source_location": "L140", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_geo_testgettravelmin_test_cache_fallback_when_no_matrix", + "target": "src_utils_geo_get_travel_min", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_geo.py", + "source_location": "L147", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_geo_testgettravelmin_test_matrix_takes_priority_over_cache", + "target": "src_utils_geo_get_travel_min", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_geo.py", + "source_location": "L155", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_kakao_matrix_testsamepoint_test_same_coords_returns_zero", + "target": "src_validation_kakao_matrix_kakaomobilitymatrix", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_kakao_matrix.py", + "source_location": "L49", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_kakao_matrix_testapicall_test_sync_call_populates_cache", + "target": "src_validation_kakao_matrix_kakaomobilitymatrix", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_kakao_matrix.py", + "source_location": "L60", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_kakao_matrix_testapicall_test_get_travel_time_uses_cache_after_sync_call", + "target": "src_validation_kakao_matrix_kakaomobilitymatrix", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_kakao_matrix.py", + "source_location": "L72", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_kakao_matrix_testapicall_test_get_travel_time_second_call_cache_hit", + "target": "src_validation_kakao_matrix_kakaomobilitymatrix", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_kakao_matrix.py", + "source_location": "L86", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_kakao_matrix_testapicall_test_reverse_direction_also_cached", + "target": "src_validation_kakao_matrix_kakaomobilitymatrix", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_kakao_matrix.py", + "source_location": "L99", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_kakao_matrix_testquotaexhaustion_test_429_sets_quota_exhausted", + "target": "src_validation_kakao_matrix_kakaomobilitymatrix", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_kakao_matrix.py", + "source_location": "L118", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_kakao_matrix_testquotaexhaustion_test_get_travel_time_haversine_fallback_when_no_cache", + "target": "src_validation_kakao_matrix_kakaomobilitymatrix", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_kakao_matrix.py", + "source_location": "L133", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_kakao_matrix_testquotaexhaustion_test_after_quota_exhausted_get_travel_time_falls_back", + "target": "src_validation_kakao_matrix_kakaomobilitymatrix", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_kakao_matrix.py", + "source_location": "L142", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_kakao_matrix_testautherror_test_401_raises", + "target": "src_validation_kakao_matrix_kakaomobilitymatrix", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_kakao_matrix.py", + "source_location": "L160", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_kakao_matrix_testcachepersistence_test_save_and_load_cache", + "target": "src_validation_kakao_matrix_kakaomobilitymatrix", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_kakao_matrix.py", + "source_location": "L178", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_kakao_matrix_testasyncprefetch_test_aprefetch_populates_cache_and_hit_on_get", + "target": "src_validation_kakao_matrix_kakaomobilitymatrix", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_kakao_matrix.py", + "source_location": "L230", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_kakao_matrix_testasyncprefetch_test_aprefetch_deduplicates_bidirectional", + "target": "src_validation_kakao_matrix_kakaomobilitymatrix", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_kakao_matrix.py", + "source_location": "L248", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_party_config_testpartyprofiles_test_friends_speed_factor_one", + "target": "src_data_party_config_get_party_profile", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_party_config.py", + "source_location": "L15", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_party_config_testpartyprofiles_test_baby_speed_factor_below_one", + "target": "src_data_party_config_get_party_profile", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_party_config.py", + "source_location": "L18", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_party_config_testpartyprofiles_test_elderly_speed_factor_below_one", + "target": "src_data_party_config_get_party_profile", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_party_config.py", + "source_location": "L21", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_party_config_testpartyprofiles_test_baby_fatigue_hours_lower_than_friends", + "target": "src_data_party_config_get_party_profile", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_party_config.py", + "source_location": "L24", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_party_config_testpartyprofiles_test_elderly_fatigue_hours_lower_than_friends", + "target": "src_data_party_config_get_party_profile", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_party_config.py", + "source_location": "L29", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_party_config_testpartyprofiles_test_family_fatigue_between_friends_and_baby", + "target": "src_data_party_config_get_party_profile", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_party_config.py", + "source_location": "L34", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_party_config_testpartyprofiles_test_unknown_type_returns_default", + "target": "src_data_party_config_get_party_profile", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_party_config.py", + "source_location": "L40", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_party_config_testpartyprofiles_test_profile_is_frozen", + "target": "src_data_party_config_get_party_profile", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_party_config.py", + "source_location": "L45", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_party_config_testpartyprofilevalues_test_friends_fatigue_12h", + "target": "src_data_party_config_get_party_profile", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_party_config.py", + "source_location": "L52", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_party_config_testpartyprofilevalues_test_baby_fatigue_8h", + "target": "src_data_party_config_get_party_profile", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_party_config.py", + "source_location": "L55", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_party_config_testpartyprofilevalues_test_elderly_fatigue_8h", + "target": "src_data_party_config_get_party_profile", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_party_config.py", + "source_location": "L58", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_party_config_testpartyprofilevalues_test_family_fatigue_10h", + "target": "src_data_party_config_get_party_profile", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_party_config.py", + "source_location": "L61", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_party_config_testpartyprofilevalues_test_baby_speed_factor_is_point_eight", + "target": "src_data_party_config_get_party_profile", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_party_config.py", + "source_location": "L64", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_party_config_testpartyprofilevalues_test_family_speed_factor_is_point_nine", + "target": "src_data_party_config_get_party_profile", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_party_config.py", + "source_location": "L67", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_party_config_teststrainthresholdlogic_test_baby_threshold_lower_than_friends", + "target": "src_data_party_config_get_party_profile", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_party_config.py", + "source_location": "L76", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_party_config_teststrainthresholdlogic_test_baby_threshold_is_24km", + "target": "src_data_party_config_get_party_profile", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_party_config.py", + "source_location": "L81", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_party_config_teststrainthresholdlogic_test_friends_threshold_unchanged", + "target": "src_data_party_config_get_party_profile", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_party_config.py", + "source_location": "L85", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_testtovrptwday_test_converts_poi_fields", + "target": "src_explain_pipeline_to_vrptw_day", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L87", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_testtovrptwday_test_is_depot_false", + "target": "src_explain_pipeline_to_vrptw_day", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L96", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_testpipelinehardfail_test_alternatives_populated_from_explain_engine", + "target": "src_data_models_alternativepoi", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L200", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_testpipelinebreakdown_test_wellness_bonus_reflected_in_breakdown", + "target": "src_scoring_bonus_engine_placecoord", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L236", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_testpipelinebreakdown_test_accessibility_bonus_for_accessible_party", + "target": "src_scoring_bonus_engine_placecoord", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L247", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_pipeline_orchestrator_testpipelinebreakdown_test_wellness_matched_exposed_on_result", + "target": "src_scoring_bonus_engine_placecoord", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_pipeline_orchestrator.py", + "source_location": "L275", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_region_config_testgetthresholds_test_seoul_code_returns_high", + "target": "src_data_region_config_get_thresholds", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_region_config.py", + "source_location": "L14", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_region_config_testgetthresholds_test_busan_code_returns_high", + "target": "src_data_region_config_get_thresholds", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_region_config.py", + "source_location": "L17", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_region_config_testgetthresholds_test_daegu_code_returns_medium", + "target": "src_data_region_config_get_thresholds", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_region_config.py", + "source_location": "L20", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_region_config_testgetthresholds_test_rural_code_returns_low", + "target": "src_data_region_config_get_thresholds", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_region_config.py", + "source_location": "L23", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_region_config_testgetthresholds_test_none_returns_medium", + "target": "src_data_region_config_get_thresholds", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_region_config.py", + "source_location": "L26", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_region_config_testgetthresholds_test_unknown_code_returns_low", + "target": "src_data_region_config_get_thresholds", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_region_config.py", + "source_location": "L29", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_repair_testtotalestimatedgain_test_sums_across_different_days", + "target": "src_explain_repair_repairresult", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_repair.py", + "source_location": "L201", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_repair_testtotalestimatedgain_test_sums_across_different_days", + "target": "src_explain_repair_deletionsuggestion", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_repair.py", + "source_location": "L202", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_repair_testtotalestimatedgain_test_takes_max_of_alternatives_on_same_day", + "target": "src_explain_repair_repairresult", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_repair.py", + "source_location": "L208", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_repair_testtotalestimatedgain_test_takes_max_of_alternatives_on_same_day", + "target": "src_explain_repair_deletionsuggestion", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_repair.py", + "source_location": "L209", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_repair_testtotalestimatedgain_test_zero_when_empty", + "target": "src_explain_repair_repairresult", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_repair.py", + "source_location": "L215", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_repair_testtotalestimatedgain_test_included_in_to_dict", + "target": "src_explain_repair_repairresult", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_repair.py", + "source_location": "L218", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_repair_testtotalestimatedgain_test_included_in_to_dict", + "target": "src_explain_repair_deletionsuggestion", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_repair.py", + "source_location": "L219", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_reward_engine_testgeneraterewards_test_hard_fail_returns_empty", + "target": "src_scoring_reward_engine_generate_rewards", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_reward_engine.py", + "source_location": "L18", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_reward_engine_testgeneraterewards_test_excellent_flow_generates_message", + "target": "src_scoring_reward_engine_generate_rewards", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_reward_engine.py", + "source_location": "L28", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_reward_engine_testgeneraterewards_test_excellent_efficiency_generates_message", + "target": "src_scoring_reward_engine_generate_rewards", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_reward_engine.py", + "source_location": "L38", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_reward_engine_testgeneraterewards_test_low_travel_ratio_generates_message", + "target": "src_scoring_reward_engine_generate_rewards", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_reward_engine.py", + "source_location": "L48", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_reward_engine_testgeneraterewards_test_excellent_purpose_fit_generates_message", + "target": "src_scoring_reward_engine_generate_rewards", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_reward_engine.py", + "source_location": "L58", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_reward_engine_testgeneraterewards_test_no_warnings_generates_message", + "target": "src_scoring_reward_engine_generate_rewards", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_reward_engine.py", + "source_location": "L68", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_reward_engine_testgeneraterewards_test_zero_cluster_penalty_generates_message", + "target": "src_scoring_reward_engine_generate_rewards", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_reward_engine.py", + "source_location": "L78", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_reward_engine_testgeneraterewards_test_perfect_plan_all_messages", + "target": "src_scoring_reward_engine_generate_rewards", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_reward_engine.py", + "source_location": "L88", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_reward_engine_testgeneraterewards_test_mediocre_plan_few_messages", + "target": "src_scoring_reward_engine_generate_rewards", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_reward_engine.py", + "source_location": "L98", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_theme_alignment_testnoapikey_test_skip_returns_informational_only", + "target": "src_scoring_theme_alignment_themealignmentjudge", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_theme_alignment.py", + "source_location": "L32", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_theme_alignment_testnoapikey_test_skip_returns_informational_only", + "target": "src_data_theme_taxonomy_userpreferences", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_theme_alignment.py", + "source_location": "L33", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_theme_alignment_testnoapikey_test_skip_returns_informational_only", + "target": "src_scoring_theme_alignment_poiwithcategory", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_theme_alignment.py", + "source_location": "L34", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_theme_alignment_testclassifyscore_test_high_score_no_penalty", + "target": "src_scoring_theme_alignment_classify_score", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_theme_alignment.py", + "source_location": "L43", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_theme_alignment_testclassifyscore_test_low_score_critical", + "target": "src_scoring_theme_alignment_classify_score", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_theme_alignment.py", + "source_location": "L48", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_theme_alignment_testparsellmresponse_test_clean_json", + "target": "src_scoring_theme_alignment_parse_llm_response", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_theme_alignment.py", + "source_location": "L56", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_theme_alignment_testparsellmresponse_test_score_clamped_to_1", + "target": "src_scoring_theme_alignment_parse_llm_response", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_theme_alignment.py", + "source_location": "L63", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_theme_alignment_testparsellmresponse_test_code_block_stripped", + "target": "src_scoring_theme_alignment_parse_llm_response", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_theme_alignment.py", + "source_location": "L68", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_theme_alignment_testevaluatewithmockclient_test_high_alignment_no_penalty", + "target": "src_scoring_theme_alignment_themealignmentjudge", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_theme_alignment.py", + "source_location": "L80", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_theme_alignment_testevaluatewithmockclient_test_high_alignment_no_penalty", + "target": "src_data_theme_taxonomy_userpreferences", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_theme_alignment.py", + "source_location": "L81", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_theme_alignment_testevaluatewithmockclient_test_high_alignment_no_penalty", + "target": "src_scoring_theme_alignment_poiwithcategory", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_theme_alignment.py", + "source_location": "L83", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_theme_alignment_testevaluatewithmockclient_test_low_alignment_critical", + "target": "src_scoring_theme_alignment_themealignmentjudge", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_theme_alignment.py", + "source_location": "L97", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_theme_alignment_testevaluatewithmockclient_test_low_alignment_critical", + "target": "src_data_theme_taxonomy_userpreferences", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_theme_alignment.py", + "source_location": "L98", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_theme_alignment_testevaluatewithmockclient_test_low_alignment_critical", + "target": "src_scoring_theme_alignment_poiwithcategory", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_theme_alignment.py", + "source_location": "L100", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_theme_alignment_testevaluatewithmockclient_test_cache_hit_skips_second_call", + "target": "src_scoring_theme_alignment_themealignmentjudge", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_theme_alignment.py", + "source_location": "L113", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_theme_alignment_testevaluatewithmockclient_test_cache_hit_skips_second_call", + "target": "src_data_theme_taxonomy_userpreferences", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_theme_alignment.py", + "source_location": "L114", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_theme_alignment_testevaluatewithmockclient_test_cache_hit_skips_second_call", + "target": "src_scoring_theme_alignment_poiwithcategory", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_theme_alignment.py", + "source_location": "L115", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_theme_alignment_testevaluatewithmockclient_test_llm_failure_returns_informational", + "target": "src_scoring_theme_alignment_themealignmentjudge", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_theme_alignment.py", + "source_location": "L126", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_theme_alignment_testevaluatewithmockclient_test_llm_failure_returns_informational", + "target": "src_data_theme_taxonomy_userpreferences", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_theme_alignment.py", + "source_location": "L127", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_theme_alignment_testevaluatewithmockclient_test_llm_failure_returns_informational", + "target": "src_scoring_theme_alignment_poiwithcategory", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_theme_alignment.py", + "source_location": "L128", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_theme_taxonomy_testuserpreferences_test_valid_input", + "target": "src_data_theme_taxonomy_userpreferences", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_theme_taxonomy.py", + "source_location": "L29", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_theme_taxonomy_testuserpreferences_test_invalid_place_type_raises", + "target": "src_data_theme_taxonomy_userpreferences", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_theme_taxonomy.py", + "source_location": "L35", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_theme_taxonomy_testuserpreferences_test_invalid_style_raises", + "target": "src_data_theme_taxonomy_userpreferences", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_theme_taxonomy.py", + "source_location": "L39", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_theme_taxonomy_testuserpreferences_test_empty_both_axes_raises", + "target": "src_data_theme_taxonomy_userpreferences", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_theme_taxonomy.py", + "source_location": "L43", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_theme_taxonomy_testmatchesplacetype_test_mountain_matches_na04", + "target": "src_data_theme_taxonomy_matches_place_type", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_theme_taxonomy.py", + "source_location": "L49", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_theme_taxonomy_testmatchesplacetype_test_beach_matches_na12", + "target": "src_data_theme_taxonomy_matches_place_type", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_theme_taxonomy.py", + "source_location": "L52", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_theme_taxonomy_testmatchesplacetype_test_festival_matches_content_type_15", + "target": "src_data_theme_taxonomy_matches_place_type", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_theme_taxonomy.py", + "source_location": "L55", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_theme_taxonomy_testmatchesplacetype_test_no_match", + "target": "src_data_theme_taxonomy_matches_place_type", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_theme_taxonomy.py", + "source_location": "L59", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_theme_taxonomy_testgetplacetypesfor_test_mountain_code_returns_list", + "target": "src_data_theme_taxonomy_get_place_types_for", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_theme_taxonomy.py", + "source_location": "L64", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_theme_taxonomy_testgetplacetypesfor_test_no_code_returns_empty", + "target": "src_data_theme_taxonomy_get_place_types_for", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_theme_taxonomy.py", + "source_location": "L68", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testhaversinematrix_test_same_point_is_zero", + "target": "src_validation_vrptw_engine_haversinematrix", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L56", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testhaversinematrix_test_known_distance", + "target": "src_validation_vrptw_engine_haversinematrix", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L62", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testhaversinematrix_test_symmetry", + "target": "src_validation_vrptw_engine_haversinematrix", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L67", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testcachedroutematrix_test_cache_hit", + "target": "src_validation_vrptw_engine_cachedroutematrix", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L78", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testcachedroutematrix_test_cache_miss_falls_back_to_haversine", + "target": "src_validation_vrptw_engine_cachedroutematrix", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L82", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testcachedroutematrix_test_cache_miss_falls_back_to_haversine", + "target": "src_validation_vrptw_engine_haversinematrix", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L84", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testcachedroutematrix_test_reverse_key_fallback", + "target": "src_validation_vrptw_engine_cachedroutematrix", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L90", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testcachedroutematrix_test_load_from_dict", + "target": "src_validation_vrptw_engine_cachedroutematrix", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L95", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testdepotconstraint_engine_with_haversine", + "target": "src_validation_vrptw_engine_haversinematrix", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L107", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testdepotconstraint_test_2n3d_day1_must_end_at_depot", + "target": "src_data_models_vrptwrequest", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L111", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testdepotconstraint_test_2n3d_day1_must_end_at_depot", + "target": "src_data_models_vrptwday", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L113", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testdepotconstraint_test_2n3d_middle_day_must_start_and_end_at_depot", + "target": "src_data_models_vrptwrequest", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L127", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testdepotconstraint_test_2n3d_middle_day_must_start_and_end_at_depot", + "target": "src_data_models_vrptwday", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L129", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testdepotconstraint_test_1n2d_no_depot_constraint_applied", + "target": "src_data_models_vrptwrequest", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L141", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testdepotconstraint_test_1n2d_no_depot_constraint_applied", + "target": "src_data_models_vrptwday", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L143", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testtimewindowfeasibility_engine", + "target": "src_validation_vrptw_engine_haversinematrix", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L163", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testtimewindowfeasibility_test_feasible_schedule_passes", + "target": "src_data_models_vrptwrequest", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L166", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testtimewindowfeasibility_test_feasible_schedule_passes", + "target": "src_data_models_vrptwday", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L167", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testtimewindowfeasibility_test_infeasible_close_time_triggers_critical", + "target": "src_data_models_vrptwrequest", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L177", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testtimewindowfeasibility_test_infeasible_close_time_triggers_critical", + "target": "src_data_models_vrptwday", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L178", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testtimewindowfeasibility_test_safety_margin_warning", + "target": "src_data_models_vrptwrequest", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L190", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testtimewindowfeasibility_test_safety_margin_warning", + "target": "src_data_models_vrptwday", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L191", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testefficiencygap_test_optimal_order_same_as_user_gives_zero_gap", + "target": "src_data_models_vrptwrequest", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L206", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testefficiencygap_test_optimal_order_same_as_user_gives_zero_gap", + "target": "src_data_models_vrptwday", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L206", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testefficiencygap_test_optimal_order_same_as_user_gives_zero_gap", + "target": "src_validation_vrptw_engine_haversinematrix", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L207", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testefficiencygap_test_reversed_inefficient_route_shows_gap", + "target": "src_data_models_vrptwrequest", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L214", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testefficiencygap_test_reversed_inefficient_route_shows_gap", + "target": "src_data_models_vrptwday", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L214", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testefficiencygap_test_reversed_inefficient_route_shows_gap", + "target": "src_validation_vrptw_engine_haversinematrix", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L215", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testfatiguescore_test_12h_schedule_no_fatigue_penalty", + "target": "src_data_models_vrptwrequest", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L232", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testfatiguescore_test_12h_schedule_no_fatigue_penalty", + "target": "src_data_models_vrptwday", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L232", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testfatiguescore_test_12h_schedule_no_fatigue_penalty", + "target": "src_validation_vrptw_engine_haversinematrix", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L233", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testfatiguescore_test_long_schedule_triggers_fatigue", + "target": "src_data_models_vrptwrequest", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L245", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testfatiguescore_test_long_schedule_triggers_fatigue", + "target": "src_data_models_vrptwday", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L245", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testfatiguescore_test_long_schedule_triggers_fatigue", + "target": "src_validation_vrptw_engine_haversinematrix", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L246", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testortoolsdegradation_test_missing_ortools_still_returns_result", + "target": "src_data_models_vrptwrequest", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L259", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testortoolsdegradation_test_missing_ortools_still_returns_result", + "target": "src_data_models_vrptwday", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L259", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testortoolsdegradation_test_missing_ortools_still_returns_result", + "target": "src_validation_vrptw_engine_haversinematrix", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L265", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testriskscore_test_risk_score_in_0_100", + "target": "src_data_models_vrptwrequest", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L279", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testriskscore_test_risk_score_in_0_100", + "target": "src_data_models_vrptwday", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L279", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testriskscore_test_risk_score_in_0_100", + "target": "src_validation_vrptw_engine_haversinematrix", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L280", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testriskscore_test_pass_fail_threshold", + "target": "src_data_models_vrptwrequest", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L285", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testriskscore_test_pass_fail_threshold", + "target": "src_data_models_vrptwday", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L285", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testriskscore_test_pass_fail_threshold", + "target": "src_validation_vrptw_engine_haversinematrix", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L286", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testmodelvalidation_test_empty_day_raises", + "target": "src_data_models_vrptwday", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L336", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testmodelvalidation_test_empty_days_raises", + "target": "src_data_models_vrptwrequest", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L340", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testefficiencygapthreshold_test_gap_over_threshold_adds_warning", + "target": "src_data_models_vrptwrequest", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L363", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testefficiencygapthreshold_test_gap_over_threshold_adds_warning", + "target": "src_data_models_vrptwday", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L363", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testefficiencygapthreshold_test_gap_over_threshold_adds_warning", + "target": "src_validation_vrptw_engine_haversinematrix", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L364", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testmultidayresult_test_multi_day_returns_per_day_comparison", + "target": "src_data_models_vrptwrequest", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L378", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testmultidayresult_test_multi_day_returns_per_day_comparison", + "target": "src_data_models_vrptwday", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L380", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testmultidayresult_test_multi_day_returns_per_day_comparison", + "target": "src_validation_vrptw_engine_haversinematrix", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L384", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testmultidayresult_test_multi_day_user_total_travel_is_sum", + "target": "src_data_models_vrptwrequest", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L392", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testmultidayresult_test_multi_day_user_total_travel_is_sum", + "target": "src_data_models_vrptwday", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L394", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testmultidayresult_test_multi_day_user_total_travel_is_sum", + "target": "src_validation_vrptw_engine_haversinematrix", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L398", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testmultidayresult_test_single_place_day_no_travel", + "target": "src_data_models_vrptwrequest", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L405", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testmultidayresult_test_single_place_day_no_travel", + "target": "src_data_models_vrptwday", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L405", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_testmultidayresult_test_single_place_day_no_travel", + "target": "src_validation_vrptw_engine_haversinematrix", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L406", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_build_itinerary_excel_main", + "target": "src_validation_kakao_matrix_kakaomobilitymatrix_from_env", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "gun/scripts/build_itinerary_excel.py", + "source_location": "L453", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_build_travel_matrix_main", + "target": "src_validation_kakao_matrix_kakaomobilitymatrix_from_env", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "gun/scripts/build_travel_matrix.py", + "source_location": "L177", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_fetch_tourapi_to_csv_main", + "target": "gun_scripts_fetch_tourapi_to_csv_checkpoint_load", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "gun/scripts/fetch_tourapi_to_csv.py", + "source_location": "L897", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_build_poi_dataset_main", + "target": "src_data_wellness_api_wellnessapiclient_from_settings", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "scripts/build_poi_dataset.py", + "source_location": "L69", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_build_poi_dataset_main", + "target": "src_data_barrier_free_api_barrierfreeapiclient_from_settings", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "scripts/build_poi_dataset.py", + "source_location": "L70", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_demo_live_e2e_main", + "target": "src_data_graph_retriever_graphretriever_from_env", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "scripts/demo_live_e2e.py", + "source_location": "L28", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_fetch_jeju_hours_main", + "target": "src_data_tour_api_tourapiclient_from_settings", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "scripts/fetch_jeju_hours.py", + "source_location": "L44", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "scripts_geocode_jeju_missing_coords_main", + "target": "src_data_kakao_local_kakaolocalclient_from_env", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "scripts/geocode_jeju_missing_coords.py", + "source_location": "L32", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_explain_engine_explainengine_init", + "target": "src_data_graph_retriever_graphretriever_from_env", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/explain/explain_engine.py", + "source_location": "L436", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_pipeline_validatorpipeline_init", + "target": "src_scoring_bonus_engine_bonusengine_from_dataset", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/explain/pipeline.py", + "source_location": "L113", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "src_explain_repair_repairengine_init", + "target": "src_data_restaurant_catalog_restaurantcatalog_from_default", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/explain/repair.py", + "source_location": "L106", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_bonus_engine_testfromdataset_test_missing_files_give_empty_engine", + "target": "src_scoring_bonus_engine_bonusengine_from_dataset", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_bonus_engine.py", + "source_location": "L189", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_bonus_engine_testfromdataset_test_loads_from_json_files", + "target": "src_scoring_bonus_engine_bonusengine_from_dataset", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_bonus_engine.py", + "source_location": "L205", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_bonus_engine_testfromdataset_test_zero_coords_skipped", + "target": "src_scoring_bonus_engine_bonusengine_from_dataset", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_bonus_engine.py", + "source_location": "L217", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_graph_retriever_test_from_env_reads_variables", + "target": "src_data_graph_retriever_graphretriever_from_env", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_graph_retriever.py", + "source_location": "L92", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_hard_fail_testhelpers_test_time_to_min", + "target": "src_validation_hard_fail_hardfaildetector_time_to_min", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_hard_fail.py", + "source_location": "L73", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_hard_fail_testhelpers_test_min_to_time", + "target": "src_validation_hard_fail_hardfaildetector_min_to_time", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_hard_fail.py", + "source_location": "L76", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_hard_fail_testhelpers_test_time_to_min_midnight", + "target": "src_validation_hard_fail_hardfaildetector_time_to_min", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_hard_fail.py", + "source_location": "L79", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_hard_fail_testhelpers_test_min_to_time_midnight", + "target": "src_validation_hard_fail_hardfaildetector_min_to_time", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_hard_fail.py", + "source_location": "L82", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_hard_fail_testhelpers_test_min_to_time_wraps_past_24h", + "target": "src_validation_hard_fail_hardfaildetector_min_to_time", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_hard_fail.py", + "source_location": "L85", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_kakao_matrix_testfromenv_test_no_key_raises", + "target": "src_validation_kakao_matrix_kakaomobilitymatrix_from_env", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_kakao_matrix.py", + "source_location": "L206", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_kakao_matrix_testfromenv_test_uses_mobility_key_first", + "target": "src_validation_kakao_matrix_kakaomobilitymatrix_from_env", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_kakao_matrix.py", + "source_location": "L211", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_kakao_matrix_testfromenv_test_falls_back_to_rest_key", + "target": "src_validation_kakao_matrix_kakaomobilitymatrix_from_env", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_kakao_matrix.py", + "source_location": "L217", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_resolve_poi_jeju_xlsx_index", + "target": "src_api_router_build_jeju_place_index", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_resolve_poi.py", + "source_location": "L48", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_resolve_poi_test_jeju_index_prefers_tourapi_hours_over_legacy_text", + "target": "src_api_router_normalize", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_resolve_poi.py", + "source_location": "L52", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_resolve_poi_test_jeju_index_sets_contentid_when_tourapi_matched", + "target": "src_api_router_normalize", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_resolve_poi.py", + "source_location": "L57", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_resolve_poi_test_jeju_index_falls_back_to_legacy_hours_when_unmatched", + "target": "src_api_router_normalize", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_resolve_poi.py", + "source_location": "L62", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_resolve_poi_test_jeju_index_sets_pet_friendly_flag_when_y", + "target": "src_api_router_normalize", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_resolve_poi.py", + "source_location": "L68", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_resolve_poi_test_jeju_index_defaults_pet_friendly_false_when_blank", + "target": "src_api_router_normalize", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_resolve_poi.py", + "source_location": "L73", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_resolve_poi_test_resolve_poi_propagates_pet_friendly_flag", + "target": "src_api_router_normalize", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_resolve_poi.py", + "source_location": "L81", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_resolve_poi_test_resolve_poi_propagates_pet_friendly_flag", + "target": "src_api_router_resolve_poi", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_resolve_poi.py", + "source_location": "L89", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_resolve_poi_test_geocode_fallback_used_when_keyword_search_fails", + "target": "src_api_router_resolve_poi", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_resolve_poi.py", + "source_location": "L100", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_resolve_poi_test_seoul_fallback_when_geocode_also_fails", + "target": "src_api_router_resolve_poi", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_resolve_poi.py", + "source_location": "L116", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "tests_test_vrptw_engine_test_cached_matrix_from_actual_file", + "target": "src_validation_vrptw_engine_cachedroutematrix_from_file", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "tests/test_vrptw_engine.py", + "source_location": "L452", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_build_travel_matrix_resolve_base_dir", + "target": "gun_scripts_build_ppt_path", + "relation": "references", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "gun/scripts/build_travel_matrix.py", + "source_location": "L47", + "weight": 1.0, + "_origin": "ast" + }, + { + "source": "gun_scripts_fetch_tourapi_to_csv_resolve_base_dir", + "target": "gun_scripts_build_ppt_path", + "relation": "references", + "context": "call", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "gun/scripts/fetch_tourapi_to_csv.py", + "source_location": "L137", + "weight": 1.0, + "_origin": "ast" + } + ], + "hyperedges": [], + "input_tokens": 0, + "output_tokens": 0 +} \ No newline at end of file diff --git a/graphify-out/manifest.json b/graphify-out/manifest.json new file mode 100644 index 0000000..3725280 --- /dev/null +++ b/graphify-out/manifest.json @@ -0,0 +1,642 @@ +{ + ".codex/hooks.json": { + "mtime": 1785898952.0052752, + "ast_hash": "f79c0e2acd58d791a55bd439748c37bf", + "semantic_hash": "f79c0e2acd58d791a55bd439748c37bf" + }, + "data/barrier_free_places.json": { + "mtime": 1777871166.071958, + "ast_hash": "3d62e4b030b39261add1c073ba6b98bb", + "semantic_hash": "3d62e4b030b39261add1c073ba6b98bb" + }, + "data/jeju_hours.json": { + "mtime": 1785587001.302524, + "ast_hash": "0d4577b836cb7049a25d266eb41af85c", + "semantic_hash": "0d4577b836cb7049a25d266eb41af85c" + }, + "data/naver/naver_metadata.json": { + "mtime": 1777472848.7758675, + "ast_hash": "f10d199ca9b840bd4efe628d58dae26d", + "semantic_hash": "f10d199ca9b840bd4efe628d58dae26d" + }, + "data/naver/naver_progress.json": { + "mtime": 1777472848.7683585, + "ast_hash": "f10d199ca9b840bd4efe628d58dae26d", + "semantic_hash": "f10d199ca9b840bd4efe628d58dae26d" + }, + "data/supabase_migration_congestion.sql": { + "mtime": 1777516043.4186354, + "ast_hash": "fb6a1ff0665759bb40047c18b9dd1e79", + "semantic_hash": "fb6a1ff0665759bb40047c18b9dd1e79" + }, + "data/wellness_places.json": { + "mtime": 1777871146.0104413, + "ast_hash": "8ab44fd2e8a80e8869fc4d1e1f44af76", + "semantic_hash": "8ab44fd2e8a80e8869fc4d1e1f44af76" + }, + "gun/data/kakao_route_cache.json": { + "mtime": 1777722543.919778, + "ast_hash": "cad1325b8e8928e3a3b981ef8eb4d0e1", + "semantic_hash": "cad1325b8e8928e3a3b981ef8eb4d0e1" + }, + "gun/scripts/build_hours_db.py": { + "mtime": 1777774502.375676, + "ast_hash": "f5f4e411cccea6e3efffd57609cbc9a3", + "semantic_hash": "f5f4e411cccea6e3efffd57609cbc9a3" + }, + "gun/scripts/build_itinerary_excel.py": { + "mtime": 1777774502.3760476, + "ast_hash": "9ee7db85ef603729f5b713c11de8ffc4", + "semantic_hash": "9ee7db85ef603729f5b713c11de8ffc4" + }, + "gun/scripts/build_ppt.js": { + "mtime": 1777722543.9211984, + "ast_hash": "aedbd78f3f7ca67aa7bbbb905f32ab33", + "semantic_hash": "aedbd78f3f7ca67aa7bbbb905f32ab33" + }, + "gun/scripts/build_travel_matrix.py": { + "mtime": 1777722543.9214137, + "ast_hash": "0d3c155a301165ae55f579261495d50e", + "semantic_hash": "0d3c155a301165ae55f579261495d50e" + }, + "gun/scripts/create_input_template.py": { + "mtime": 1777722543.9216266, + "ast_hash": "625d4e2ed996c796efb6c2dd2da8abaa", + "semantic_hash": "625d4e2ed996c796efb6c2dd2da8abaa" + }, + "gun/scripts/curated_itineraries.py": { + "mtime": 1777722543.921766, + "ast_hash": "cc5793a2f1e0d7a4be680848cb0fb28f", + "semantic_hash": "cc5793a2f1e0d7a4be680848cb0fb28f" + }, + "gun/scripts/fetch_google_hours.py": { + "mtime": 1777725821.0460975, + "ast_hash": "111c062be917ebe85739349705d3d488", + "semantic_hash": "111c062be917ebe85739349705d3d488" + }, + "gun/scripts/fetch_tourapi_to_csv.py": { + "mtime": 1777722543.9219298, + "ast_hash": "87ac281c5d26c41914b53734eb3f7b84", + "semantic_hash": "87ac281c5d26c41914b53734eb3f7b84" + }, + "gun/scripts/inspect_json.py": { + "mtime": 1777722543.9221287, + "ast_hash": "8934cb9d5d5e40b322bb5b652a1e286f", + "semantic_hash": "8934cb9d5d5e40b322bb5b652a1e286f" + }, + "gun/scripts/preprocess_pois.py": { + "mtime": 1777722543.922293, + "ast_hash": "3f383fd4cd5ae4b86ff000b325e64110", + "semantic_hash": "3f383fd4cd5ae4b86ff000b325e64110" + }, + "gun/scripts/setup_and_test.py": { + "mtime": 1777722543.9223857, + "ast_hash": "1d286050e68ba0487bde3dbc3d4cca96", + "semantic_hash": "1d286050e68ba0487bde3dbc3d4cca96" + }, + "gun/src/__init__.py": { + "mtime": 1777722543.9224577, + "ast_hash": "d41d8cd98f00b204e9800998ecf8427e", + "semantic_hash": "d41d8cd98f00b204e9800998ecf8427e" + }, + "gun/src/validation/__init__.py": { + "mtime": 1777722543.9225435, + "ast_hash": "d41d8cd98f00b204e9800998ecf8427e", + "semantic_hash": "d41d8cd98f00b204e9800998ecf8427e" + }, + "gun/tests/__init__.py": { + "mtime": 1777722543.92263, + "ast_hash": "d41d8cd98f00b204e9800998ecf8427e", + "semantic_hash": "d41d8cd98f00b204e9800998ecf8427e" + }, + "package.json": { + "mtime": 1777722543.9227288, + "ast_hash": "b778aa66da97ea0e37d59b39f34429bc", + "semantic_hash": "b778aa66da97ea0e37d59b39f34429bc" + }, + "phases/0-setup/analysis_result.json": { + "mtime": 1777451253.5622375, + "ast_hash": "93b0a3e08dcc5d4e91cf237f6150fa2d", + "semantic_hash": "93b0a3e08dcc5d4e91cf237f6150fa2d" + }, + "phases/0-setup/analyze.py": { + "mtime": 1777451253.5623744, + "ast_hash": "94fcceaa6973edb5e977531832d2667b", + "semantic_hash": "94fcceaa6973edb5e977531832d2667b" + }, + "phases/0-setup/analyze_triple.py": { + "mtime": 1777451253.5624943, + "ast_hash": "80fd368b6a5a773f6461e0309490ab0c", + "semantic_hash": "80fd368b6a5a773f6461e0309490ab0c" + }, + "phases/0-setup/cache_route.json": { + "mtime": 1777451253.5627754, + "ast_hash": "4a1ee33881363cbc81b13497be0283cd", + "semantic_hash": "4a1ee33881363cbc81b13497be0283cd" + }, + "phases/0-setup/index.json": { + "mtime": 1777451253.5636084, + "ast_hash": "39927df531e45fc45defc749a13eae1b", + "semantic_hash": "39927df531e45fc45defc749a13eae1b" + }, + "phases/0-setup/statistical_report.json": { + "mtime": 1777451253.5636873, + "ast_hash": "d14bbfebc315d91b8c0d0e0dd49064cf", + "semantic_hash": "d14bbfebc315d91b8c0d0e0dd49064cf" + }, + "phases/0-setup/statistical_report.py": { + "mtime": 1777451253.5637925, + "ast_hash": "2fdb21ea80082653e16354d42b04d361", + "semantic_hash": "2fdb21ea80082653e16354d42b04d361" + }, + "phases/0-setup/triple_analysis_result.json": { + "mtime": 1777451253.5641038, + "ast_hash": "56ee600d694000c55ca752409c7441d0", + "semantic_hash": "56ee600d694000c55ca752409c7441d0" + }, + "phases/0-setup/visualize.py": { + "mtime": 1777451253.5647297, + "ast_hash": "081a373fc6462961b0e5982bb81ec865", + "semantic_hash": "081a373fc6462961b0e5982bb81ec865" + }, + "phases/0-setup/visualize_combined.py": { + "mtime": 1778043956.7780018, + "ast_hash": "d0c3c3f6c72685ee08746fede60eb014", + "semantic_hash": "d0c3c3f6c72685ee08746fede60eb014" + }, + "phases/1-data/index.json": { + "mtime": 1777451253.5652366, + "ast_hash": "746f1c6971b328d9ecfe19b1fa99c7f2", + "semantic_hash": "746f1c6971b328d9ecfe19b1fa99c7f2" + }, + "phases/2-matrix/index.json": { + "mtime": 1777451253.5656605, + "ast_hash": "ce948a97a6811024de015cf9ce79d638", + "semantic_hash": "ce948a97a6811024de015cf9ce79d638" + }, + "phases/3-graph/index.json": { + "mtime": 1777451253.56582, + "ast_hash": "aa318d13181f1a2e4c03f87d330b602d", + "semantic_hash": "aa318d13181f1a2e4c03f87d330b602d" + }, + "phases/4-validation/index.json": { + "mtime": 1777451253.5661435, + "ast_hash": "3849bca550c5675fe7fcf346a9c0c0c2", + "semantic_hash": "3849bca550c5675fe7fcf346a9c0c0c2" + }, + "phases/5-explain/index.json": { + "mtime": 1777451253.5664701, + "ast_hash": "2548a8a8199289e2c8e3a0fe4f14096e", + "semantic_hash": "2548a8a8199289e2c8e3a0fe4f14096e" + }, + "phases/6-api/index.json": { + "mtime": 1777451253.5668325, + "ast_hash": "2d1db8cdcfc97a5724732d226d59dc59", + "semantic_hash": "2d1db8cdcfc97a5724732d226d59dc59" + }, + "phases/index.json": { + "mtime": 1777523379.983558, + "ast_hash": "6085025a092d0575637c1806feaff58c", + "semantic_hash": "6085025a092d0575637c1806feaff58c" + }, + "pyproject.toml": { + "mtime": 1786589332.0267932, + "ast_hash": "eb94f4e2b4ed51f37b591ec9aa9cba4b", + "semantic_hash": "eb94f4e2b4ed51f37b591ec9aa9cba4b" + }, + "scripts/build_knowledge_graph.py": { + "mtime": 1785584052.3065748, + "ast_hash": "0def2652ee48fc99da8a8d88a4d7f54b", + "semantic_hash": "0def2652ee48fc99da8a8d88a4d7f54b" + }, + "scripts/build_poi_dataset.py": { + "mtime": 1777738552.4729176, + "ast_hash": "c0ce74966b71a4701a0dfd4c188f6dd2", + "semantic_hash": "c0ce74966b71a4701a0dfd4c188f6dd2" + }, + "scripts/collect_naver_full.py": { + "mtime": 1777472360.5868547, + "ast_hash": "60e13a6c034c48d4733aca7b7e8e25fc", + "semantic_hash": "60e13a6c034c48d4733aca7b7e8e25fc" + }, + "scripts/collect_naver_metadata.py": { + "mtime": 1777456822.351481, + "ast_hash": "d1ef8c23abb90f6fcb48eed359434fc3", + "semantic_hash": "d1ef8c23abb90f6fcb48eed359434fc3" + }, + "scripts/collect_naver_only.py": { + "mtime": 1777466784.9032376, + "ast_hash": "607745e1d0883c05b8702bd18c89a3bb", + "semantic_hash": "607745e1d0883c05b8702bd18c89a3bb" + }, + "scripts/demo_live_e2e.py": { + "mtime": 1785585693.7232184, + "ast_hash": "af8913359b7323311a2e7f0ae067137b", + "semantic_hash": "af8913359b7323311a2e7f0ae067137b" + }, + "scripts/execute.py": { + "mtime": 1777451253.5841513, + "ast_hash": "533ae1869f447ff3ba053e779f53fd50", + "semantic_hash": "533ae1869f447ff3ba053e779f53fd50" + }, + "scripts/extract_visitor_stats.py": { + "mtime": 1777515293.7619472, + "ast_hash": "fad75baf806cdb6d256d76110977660a", + "semantic_hash": "fad75baf806cdb6d256d76110977660a" + }, + "scripts/fetch_jeju_hours.py": { + "mtime": 1785586956.1377618, + "ast_hash": "b901f0eba2256aac38748261da5e1a86", + "semantic_hash": "b901f0eba2256aac38748261da5e1a86" + }, + "scripts/fetch_missing_pois.py": { + "mtime": 1779312122.0434918, + "ast_hash": "e60bbd3b385f829f81aed7469fde5eb8", + "semantic_hash": "e60bbd3b385f829f81aed7469fde5eb8" + }, + "scripts/geocode_jeju_missing_coords.py": { + "mtime": 1785334245.581387, + "ast_hash": "a494ba184e1630033ab77b9afa486a8a", + "semantic_hash": "a494ba184e1630033ab77b9afa486a8a" + }, + "scripts/load_knowledge_graph_neo4j.py": { + "mtime": 1785583919.1200502, + "ast_hash": "da3caa98ff7d8808cad81fbe2cf22f49", + "semantic_hash": "da3caa98ff7d8808cad81fbe2cf22f49" + }, + "scripts/neo4j_coverage_analysis.py": { + "mtime": 1777520076.5689738, + "ast_hash": "ef54939459abe5bbfa09469e11e24ff2", + "semantic_hash": "ef54939459abe5bbfa09469e11e24ff2" + }, + "scripts/test_execute.py": { + "mtime": 1777451253.5842624, + "ast_hash": "3b410dd3b98c54a6f4953b194061faa8", + "semantic_hash": "3b410dd3b98c54a6f4953b194061faa8" + }, + "scripts/test_pipeline.py": { + "mtime": 1777735206.5331042, + "ast_hash": "fd5b92126f6c7425506fc05150add574", + "semantic_hash": "fd5b92126f6c7425506fc05150add574" + }, + "src/__init__.py": { + "mtime": 1777451253.5843337, + "ast_hash": "d41d8cd98f00b204e9800998ecf8427e", + "semantic_hash": "d41d8cd98f00b204e9800998ecf8427e" + }, + "src/api/__init__.py": { + "mtime": 1777816109.3945787, + "ast_hash": "d41d8cd98f00b204e9800998ecf8427e", + "semantic_hash": "d41d8cd98f00b204e9800998ecf8427e" + }, + "src/api/main.py": { + "mtime": 1785587795.1309295, + "ast_hash": "81767a349f90b701c89a55e7108aa8ec", + "semantic_hash": "81767a349f90b701c89a55e7108aa8ec" + }, + "src/api/router.py": { + "mtime": 1786783687.653695, + "ast_hash": "53585ea2a562963e3cd97d83ffcc7929", + "semantic_hash": "53585ea2a562963e3cd97d83ffcc7929" + }, + "src/api/schemas.py": { + "mtime": 1786783667.34905, + "ast_hash": "151d032a0cb6e3aa607dd69444b66bcd", + "semantic_hash": "151d032a0cb6e3aa607dd69444b66bcd" + }, + "src/api/static/manifest.json": { + "mtime": 1780124687.4502513, + "ast_hash": "c9c4aaebe966e7f6ed29bee2a1a34396", + "semantic_hash": "c9c4aaebe966e7f6ed29bee2a1a34396" + }, + "src/api/static/service-worker.js": { + "mtime": 1780124696.7628965, + "ast_hash": "4b1cbe0738efaf969ece789472a4348d", + "semantic_hash": "4b1cbe0738efaf969ece789472a4348d" + }, + "src/data/__init__.py": { + "mtime": 1777451253.5844173, + "ast_hash": "d41d8cd98f00b204e9800998ecf8427e", + "semantic_hash": "d41d8cd98f00b204e9800998ecf8427e" + }, + "src/data/barrier_free_api.py": { + "mtime": 1777781991.1116767, + "ast_hash": "f4c68868de5f59953d9337dd2726d870", + "semantic_hash": "f4c68868de5f59953d9337dd2726d870" + }, + "src/data/dwell_db.py": { + "mtime": 1777451253.5845017, + "ast_hash": "b39f136229c23460b924bfe70c99ee43", + "semantic_hash": "b39f136229c23460b924bfe70c99ee43" + }, + "src/data/graph_retriever.py": { + "mtime": 1786616520.125144, + "ast_hash": "6d15df0ea351b042c42534e515e71545", + "semantic_hash": "6d15df0ea351b042c42534e515e71545" + }, + "src/data/hours_db.py": { + "mtime": 1777774502.3764617, + "ast_hash": "9d61df5189ab67bf8a01a3c4a5324d7c", + "semantic_hash": "9d61df5189ab67bf8a01a3c4a5324d7c" + }, + "src/data/kakao_local.py": { + "mtime": 1785334192.9340384, + "ast_hash": "4f347b60a20e201308d309b5608a46af", + "semantic_hash": "4f347b60a20e201308d309b5608a46af" + }, + "src/data/models.py": { + "mtime": 1786783617.9840896, + "ast_hash": "52dc9b4955b0b9b8927520c0546a392c", + "semantic_hash": "52dc9b4955b0b9b8927520c0546a392c" + }, + "src/data/party_config.py": { + "mtime": 1777721907.7956548, + "ast_hash": "cf169b5e02aa957fb03ef5bbda4e5c68", + "semantic_hash": "cf169b5e02aa957fb03ef5bbda4e5c68" + }, + "src/data/region_config.py": { + "mtime": 1777718481.3908644, + "ast_hash": "05bc8c3245e9db27d8b821a565bd5a83", + "semantic_hash": "05bc8c3245e9db27d8b821a565bd5a83" + }, + "src/data/restaurant_catalog.py": { + "mtime": 1786616398.4857664, + "ast_hash": "ab5539e7ca5dcbcbd041e3d2e325b6a2", + "semantic_hash": "ab5539e7ca5dcbcbd041e3d2e325b6a2" + }, + "src/data/seoul_citydata_client.py": { + "mtime": 1777523278.3714013, + "ast_hash": "08238f1cd346d828385a5d79e5e91f6c", + "semantic_hash": "08238f1cd346d828385a5d79e5e91f6c" + }, + "src/data/theme_taxonomy.py": { + "mtime": 1777451253.5846374, + "ast_hash": "da4875d28460fb6ade1741f46e97ca73", + "semantic_hash": "da4875d28460fb6ade1741f46e97ca73" + }, + "src/data/tour_api.py": { + "mtime": 1777785284.9394975, + "ast_hash": "9761a387188ce0dbf7b455c9657430d0", + "semantic_hash": "9761a387188ce0dbf7b455c9657430d0" + }, + "src/data/wellness_api.py": { + "mtime": 1777869280.2927735, + "ast_hash": "32fe6ce7ee2798eeaab1957851b8fd2d", + "semantic_hash": "32fe6ce7ee2798eeaab1957851b8fd2d" + }, + "src/explain/__init__.py": { + "mtime": 1777738407.0960405, + "ast_hash": "d41d8cd98f00b204e9800998ecf8427e", + "semantic_hash": "d41d8cd98f00b204e9800998ecf8427e" + }, + "src/explain/explain_engine.py": { + "mtime": 1786779975.226672, + "ast_hash": "ed1eebee75e49690ffcab9db86321bed", + "semantic_hash": "ed1eebee75e49690ffcab9db86321bed" + }, + "src/explain/pipeline.py": { + "mtime": 1786851619.871098, + "ast_hash": "d25194b2822b0f08b85dafe626af1b98", + "semantic_hash": "d25194b2822b0f08b85dafe626af1b98" + }, + "src/explain/plan_extractor.py": { + "mtime": 1786862653.1442518, + "ast_hash": "8d24197f6bcfbadf63026a94d86f1a83", + "semantic_hash": "8d24197f6bcfbadf63026a94d86f1a83" + }, + "src/explain/repair.py": { + "mtime": 1786861266.7705383, + "ast_hash": "19b32a4e14156a09b2da439f0dfc6739", + "semantic_hash": "19b32a4e14156a09b2da439f0dfc6739" + }, + "src/matrix/__init__.py": { + "mtime": 1777718449.7403164, + "ast_hash": "b4325934db2b80cbc9c79bae4eaad220", + "semantic_hash": "b4325934db2b80cbc9c79bae4eaad220" + }, + "src/matrix/redis_matrix.py": { + "mtime": 1777718852.132281, + "ast_hash": "da4195921575fc46b85c68974844467a", + "semantic_hash": "da4195921575fc46b85c68974844467a" + }, + "src/scoring/__init__.py": { + "mtime": 1777451253.5847325, + "ast_hash": "edf8eea9f9249828fe093a664120ea4f", + "semantic_hash": "edf8eea9f9249828fe093a664120ea4f" + }, + "src/scoring/bonus_engine.py": { + "mtime": 1786783637.7312648, + "ast_hash": "bc771f96f6ea42989be32df91130e54a", + "semantic_hash": "bc771f96f6ea42989be32df91130e54a" + }, + "src/scoring/cluster_dispersion.py": { + "mtime": 1777738403.7953079, + "ast_hash": "1c3c420adc418ed9e8c70eff5663dba3", + "semantic_hash": "1c3c420adc418ed9e8c70eff5663dba3" + }, + "src/scoring/congestion_engine.py": { + "mtime": 1777523358.9986482, + "ast_hash": "6778ce5aa27e005f5c09f2dcc3754f71", + "semantic_hash": "6778ce5aa27e005f5c09f2dcc3754f71" + }, + "src/scoring/reward_engine.py": { + "mtime": 1777718876.9925988, + "ast_hash": "21306e4c6dd2b7b355b3ba0ad90cdb6f", + "semantic_hash": "21306e4c6dd2b7b355b3ba0ad90cdb6f" + }, + "src/scoring/theme_alignment.py": { + "mtime": 1786779975.2287865, + "ast_hash": "27bcd6b6e5081ae108445c3fbe6ccf7e", + "semantic_hash": "27bcd6b6e5081ae108445c3fbe6ccf7e" + }, + "src/scoring/travel_ratio.py": { + "mtime": 1777451253.5849264, + "ast_hash": "60179d0db12925e08fb1d2966b3d1632", + "semantic_hash": "60179d0db12925e08fb1d2966b3d1632" + }, + "src/utils/__init__.py": { + "mtime": 1777731460.2646558, + "ast_hash": "d41d8cd98f00b204e9800998ecf8427e", + "semantic_hash": "d41d8cd98f00b204e9800998ecf8427e" + }, + "src/utils/geo.py": { + "mtime": 1777731462.310334, + "ast_hash": "ad38814c8bee6298f244b56d20ceea95", + "semantic_hash": "ad38814c8bee6298f244b56d20ceea95" + }, + "src/validation/__init__.py": { + "mtime": 1777451253.5850027, + "ast_hash": "d41d8cd98f00b204e9800998ecf8427e", + "semantic_hash": "d41d8cd98f00b204e9800998ecf8427e" + }, + "src/validation/alternatives.py": { + "mtime": 1777828486.9440112, + "ast_hash": "6e321708fa1db6166e889a68019ce568", + "semantic_hash": "6e321708fa1db6166e889a68019ce568" + }, + "src/validation/hard_fail.py": { + "mtime": 1786616520.125523, + "ast_hash": "adfb4c5cbc13897cd98b7a3fd0d8dedb", + "semantic_hash": "adfb4c5cbc13897cd98b7a3fd0d8dedb" + }, + "src/validation/kakao_matrix.py": { + "mtime": 1777718149.8496418, + "ast_hash": "b763d51e06699163aab32b2d6cf50203", + "semantic_hash": "b763d51e06699163aab32b2d6cf50203" + }, + "src/validation/scoring.py": { + "mtime": 1777828448.7311811, + "ast_hash": "fa308ab36ac24e183a00fb2c5f38ef36", + "semantic_hash": "fa308ab36ac24e183a00fb2c5f38ef36" + }, + "src/validation/vrptw_engine.py": { + "mtime": 1777473547.1145976, + "ast_hash": "aa820e564c7c25a4d5096f3969b77704", + "semantic_hash": "aa820e564c7c25a4d5096f3969b77704" + }, + "src/validation/warning.py": { + "mtime": 1785639470.5717049, + "ast_hash": "d9ea0ac80563f212b021628c53c8a551", + "semantic_hash": "d9ea0ac80563f212b021628c53c8a551" + }, + "tests/__init__.py": { + "mtime": 1777451253.5852776, + "ast_hash": "d41d8cd98f00b204e9800998ecf8427e", + "semantic_hash": "d41d8cd98f00b204e9800998ecf8427e" + }, + "tests/conftest.py": { + "mtime": 1786780450.9829178, + "ast_hash": "a4516f1cbdaf0fac499d7d3a03a80457", + "semantic_hash": "a4516f1cbdaf0fac499d7d3a03a80457" + }, + "tests/test_alternatives.py": { + "mtime": 1777828575.8245907, + "ast_hash": "2c3b38004c37d6654e28a7e0f3a502b0", + "semantic_hash": "2c3b38004c37d6654e28a7e0f3a502b0" + }, + "tests/test_bonus_engine.py": { + "mtime": 1786783575.5544577, + "ast_hash": "f2640b62ad8974e26f5ad6c4caae01d8", + "semantic_hash": "f2640b62ad8974e26f5ad6c4caae01d8" + }, + "tests/test_cluster_dispersion.py": { + "mtime": 1777521944.1446033, + "ast_hash": "819da2ce7aaac4695b1dcaca2b1317f7", + "semantic_hash": "819da2ce7aaac4695b1dcaca2b1317f7" + }, + "tests/test_congestion_engine.py": { + "mtime": 1777516006.3020432, + "ast_hash": "d6403b05086a45b97edfc6320c270629", + "semantic_hash": "d6403b05086a45b97edfc6320c270629" + }, + "tests/test_dwell_db.py": { + "mtime": 1777451253.585397, + "ast_hash": "3db1954090bebb210b9d9d91fc5637d2", + "semantic_hash": "3db1954090bebb210b9d9d91fc5637d2" + }, + "tests/test_estimated_hardfail.py": { + "mtime": 1780630909.497777, + "ast_hash": "1570b16326c198f485dabe897bdb43c6", + "semantic_hash": "1570b16326c198f485dabe897bdb43c6" + }, + "tests/test_explain_engine.py": { + "mtime": 1785640352.0980227, + "ast_hash": "7809ce2937ebea8895e346332e32539f", + "semantic_hash": "7809ce2937ebea8895e346332e32539f" + }, + "tests/test_geo.py": { + "mtime": 1777736842.6244195, + "ast_hash": "a719a5de25ce9da7335b0be13ccbd7fe", + "semantic_hash": "a719a5de25ce9da7335b0be13ccbd7fe" + }, + "tests/test_graph_retriever.py": { + "mtime": 1786616520.1256936, + "ast_hash": "9d5692c51c01fa101ea2cc53fd8f7438", + "semantic_hash": "9d5692c51c01fa101ea2cc53fd8f7438" + }, + "tests/test_hard_fail.py": { + "mtime": 1786616520.1258426, + "ast_hash": "f96e535fe3737adb7831b55296dcefb6", + "semantic_hash": "f96e535fe3737adb7831b55296dcefb6" + }, + "tests/test_kakao_local.py": { + "mtime": 1785334170.3045812, + "ast_hash": "660c80c74224ce8965f3ab1e31e35b20", + "semantic_hash": "660c80c74224ce8965f3ab1e31e35b20" + }, + "tests/test_kakao_matrix.py": { + "mtime": 1777718270.6302164, + "ast_hash": "7058ab733cde49cadce430d4f8a04967", + "semantic_hash": "7058ab733cde49cadce430d4f8a04967" + }, + "tests/test_party_config.py": { + "mtime": 1777722533.6004114, + "ast_hash": "c0b29a60e9c74541931b7c45823c23f6", + "semantic_hash": "c0b29a60e9c74541931b7c45823c23f6" + }, + "tests/test_pipeline_orchestrator.py": { + "mtime": 1786851429.3373396, + "ast_hash": "1253c5654eb06c414e1bd869650a0077", + "semantic_hash": "1253c5654eb06c414e1bd869650a0077" + }, + "tests/test_plan_extractor.py": { + "mtime": 1786862644.0086124, + "ast_hash": "b75c1813810d653728e1727ea32960bb", + "semantic_hash": "b75c1813810d653728e1727ea32960bb" + }, + "tests/test_region_config.py": { + "mtime": 1777718962.185176, + "ast_hash": "6a8e96f8703bc5b43f18750766624e2a", + "semantic_hash": "6a8e96f8703bc5b43f18750766624e2a" + }, + "tests/test_repair.py": { + "mtime": 1786861255.0592692, + "ast_hash": "f53b00b667549e720a222e6fa85bcd6c", + "semantic_hash": "f53b00b667549e720a222e6fa85bcd6c" + }, + "tests/test_resolve_poi.py": { + "mtime": 1786783594.6301389, + "ast_hash": "28e9638cc17a4dea344d92e578dcfcc2", + "semantic_hash": "28e9638cc17a4dea344d92e578dcfcc2" + }, + "tests/test_restaurant_catalog.py": { + "mtime": 1786616467.294536, + "ast_hash": "c46f9353a2f56132c31a70ab86b54882", + "semantic_hash": "c46f9353a2f56132c31a70ab86b54882" + }, + "tests/test_reward_engine.py": { + "mtime": 1777718976.8613403, + "ast_hash": "7174620d9fa8ac955e6dcd1275c60d92", + "semantic_hash": "7174620d9fa8ac955e6dcd1275c60d92" + }, + "tests/test_scoring.py": { + "mtime": 1777736815.9053977, + "ast_hash": "fa745f6624a3e8b54b486d827c2e67fe", + "semantic_hash": "fa745f6624a3e8b54b486d827c2e67fe" + }, + "tests/test_theme_alignment.py": { + "mtime": 1777451253.5854843, + "ast_hash": "ac31773f3944fdf4de7785cb14507a62", + "semantic_hash": "ac31773f3944fdf4de7785cb14507a62" + }, + "tests/test_theme_taxonomy.py": { + "mtime": 1777451253.5855556, + "ast_hash": "4fcd5e0c59deab9d74911fc9b99209d6", + "semantic_hash": "4fcd5e0c59deab9d74911fc9b99209d6" + }, + "tests/test_travel_ratio.py": { + "mtime": 1777451253.5856159, + "ast_hash": "08e5a691a6a0b48fc629f3c76dba82fa", + "semantic_hash": "08e5a691a6a0b48fc629f3c76dba82fa" + }, + "tests/test_vrptw_engine.py": { + "mtime": 1777451253.585699, + "ast_hash": "92c79b6ec9be760bbf6190cb9a255a7e", + "semantic_hash": "92c79b6ec9be760bbf6190cb9a255a7e" + }, + "tests/test_warning.py": { + "mtime": 1785639582.983331, + "ast_hash": "da8729cf7272ad1756417344d0ff94c9", + "semantic_hash": "da8729cf7272ad1756417344d0ff94c9" + } +} \ No newline at end of file diff --git a/gun/docs/COLLECTION_GUIDE.md b/gun/docs/COLLECTION_GUIDE.md index 376ef34..d0de6d7 100644 --- a/gun/docs/COLLECTION_GUIDE.md +++ b/gun/docs/COLLECTION_GUIDE.md @@ -1,4 +1,4 @@ - + # 추천 일정 수집 가이드 > 100개 추천 일정을 모아 **매칭 → 시간 계산 → Excel 출력**하는 워크플로우. diff --git a/gun/docs/DESIGN_RECONCILIATION.md b/gun/docs/DESIGN_RECONCILIATION.md index 595e8ab..2eb5fc1 100644 --- a/gun/docs/DESIGN_RECONCILIATION.md +++ b/gun/docs/DESIGN_RECONCILIATION.md @@ -1,4 +1,4 @@ - + # Design Reconciliation — PRD ↔ ENHANCEMENT_PLAN ↔ 실제 코드 > ENHANCEMENT_PLAN(2026-04-26) 검토 중 발견된 **3대 정합성 이슈**를 해소하기 위한 결정 기록. 이 문서가 원본 문서들의 **상위 권위**를 가진다 (이후 충돌 시 본 문서 기준). diff --git a/gun/docs/README.md b/gun/docs/README.md index c9c5d83..042b971 100644 --- a/gun/docs/README.md +++ b/gun/docs/README.md @@ -1,4 +1,4 @@ - + # `gun/` 폴더 — 신규·수정 문서 인덱스 > 본 폴더는 프로젝트의 **신규 추가** 또는 **기존 문서 수정** 산출물을 모은다. diff --git a/phases/0-setup/step0.md b/phases/0-setup/step0.md index aca9875..277bc07 100644 --- a/phases/0-setup/step0.md +++ b/phases/0-setup/step0.md @@ -1,4 +1,4 @@ - + # Step 0: python-env ## 읽어야 할 파일 diff --git a/phases/0-setup/step1.md b/phases/0-setup/step1.md index 7aa529e..c4c76f5 100644 --- a/phases/0-setup/step1.md +++ b/phases/0-setup/step1.md @@ -1,4 +1,4 @@ - + # Step 1: src-scaffold ## 읽어야 할 파일 diff --git a/phases/1-data/step0.md b/phases/1-data/step0.md index 19ec414..f8d712b 100644 --- a/phases/1-data/step0.md +++ b/phases/1-data/step0.md @@ -1,4 +1,4 @@ - + # Step 0: data-models ## 읽어야 할 파일 diff --git a/phases/1-data/step1.md b/phases/1-data/step1.md index 02c7c6b..8d8bf5c 100644 --- a/phases/1-data/step1.md +++ b/phases/1-data/step1.md @@ -1,4 +1,4 @@ - + # Step 1: tour-api-client ## 읽어야 할 파일 diff --git a/phases/1-data/step2.md b/phases/1-data/step2.md index de75aee..f542a00 100644 --- a/phases/1-data/step2.md +++ b/phases/1-data/step2.md @@ -1,4 +1,4 @@ - + # Step 2: kakao-client ## 읽어야 할 파일 diff --git a/phases/1-data/step3.md b/phases/1-data/step3.md index dfb3482..f1f9157 100644 --- a/phases/1-data/step3.md +++ b/phases/1-data/step3.md @@ -1,4 +1,4 @@ - + # Step 3: data-collector ## 읽어야 할 파일 diff --git a/phases/2-matrix/step0.md b/phases/2-matrix/step0.md index 4d9e207..564bc93 100644 --- a/phases/2-matrix/step0.md +++ b/phases/2-matrix/step0.md @@ -1,4 +1,4 @@ - + # Step 0: travel-matrix ## 읽어야 할 파일 diff --git a/phases/3-graph/step0.md b/phases/3-graph/step0.md index ab7f346..31de337 100644 --- a/phases/3-graph/step0.md +++ b/phases/3-graph/step0.md @@ -1,111 +1,9 @@ - -# Step 0: neo4j-schema + +# Step 0: graph-db (removed) -## 읽어야 할 파일 +이 단계는 과거 Neo4j 스키마를 정의하던 기록이다. 외부 그래프 DB는 현재 제품 런타임과 의존성에서 제거되었다. -먼저 아래 파일들을 읽고 프로젝트의 기획·아키텍처·설계 의도를 파악하라: +현재 장소 근거 검색은 `src/data/evidence_retriever.py`의 `LocalEvidenceRetriever`가 +프로젝트 데이터 CSV를 로컬에서 읽어 처리한다. 외부 네트워크 없이 테스트할 수 있으며, +지역·근접 대안 정보도 동일한 Pydantic 모델로 반환한다. -- `/CLAUDE.md` -- `/docs/ARCHITECTURE.md` (Neo4j 그래프 스키마 섹션) -- `/src/data/models.py` -- `/src/graph/schema.py` (phase 0 스텁) -- `/src/graph/neo4j_client.py` (phase 0 스텁) -- `/phases/3-graph/index.json` - -## 작업 - -### 1. `src/graph/schema.py` 완성 - -```python -class NodeLabel: - POI = "POI" - AREA = "Area" - TIME_SLOT = "TimeSlot" - -class RelType: - IN_AREA = "IN_AREA" - SCHEDULED_AT = "SCHEDULED_AT" - FOLLOWED_BY = "FOLLOWED_BY" - TRAVELS_TO = "TRAVELS_TO" - -# 초기화 시 실행할 Neo4j 제약조건·인덱스 (멱등성 보장) -CONSTRAINTS = [ - "CREATE CONSTRAINT poi_id IF NOT EXISTS FOR (p:POI) REQUIRE p.poi_id IS UNIQUE", - "CREATE CONSTRAINT slot_id IF NOT EXISTS FOR (t:TimeSlot) REQUIRE t.slot_id IS UNIQUE", - "CREATE INDEX area_name IF NOT EXISTS FOR (a:Area) ON (a.name)", -] -``` - -### 2. `src/graph/neo4j_client.py` 완성 - -```python -from neo4j import GraphDatabase -from src.graph.schema import CONSTRAINTS - -class Neo4jClient: - def __init__(self, uri: str, user: str, password: str) -> None: - self._driver = GraphDatabase.driver(uri, auth=(user, password)) - - def __enter__(self) -> "Neo4jClient": - return self - - def __exit__(self, *args) -> None: - self.close() - - def close(self) -> None: - self._driver.close() - - def run(self, query: str, **params) -> list[dict]: - # Session을 열고 query 실행, 결과를 list[dict]로 반환 - ... - - def initialize_schema(self) -> None: - # CONSTRAINTS 쿼리 모두 실행 - ... - - def health_check(self) -> bool: - # "RETURN 1" 쿼리로 연결 확인, 성공 시 True, 실패 시 False - ... -``` - -### 3. `tests/test_neo4j_schema.py` 작성 - -`neo4j.GraphDatabase.driver`를 mock으로 대체하여 **실제 Neo4j 없이** 테스트: - -```python -from unittest.mock import MagicMock, patch -import pytest - -@pytest.fixture -def mock_driver(): - with patch("src.graph.neo4j_client.GraphDatabase") as mock_gdb: - mock_session = MagicMock() - mock_driver_inst = MagicMock() - mock_driver_inst.session.return_value.__enter__.return_value = mock_session - mock_gdb.driver.return_value = mock_driver_inst - yield mock_gdb, mock_session, mock_driver_inst -``` - -테스트 케이스: -- `Neo4jClient("bolt://localhost:7687", "neo4j", "pass")` 생성 → `GraphDatabase.driver` 호출 확인 -- `initialize_schema()` → CONSTRAINTS 수 만큼 run 호출 -- `health_check()` → True 반환 (mock 기준) -- `Neo4jClient.__enter__` / `__exit__` 동작 확인 -- `schema.NodeLabel`, `schema.RelType` 상수값이 ARCHITECTURE.md와 일치하는지 확인 (POI, Area, TimeSlot) - -## Acceptance Criteria - -```bash -python -m pytest tests/test_neo4j_schema.py -v -``` - -## 검증 절차 - -1. 위 AC 커맨드를 실행한다. (mock 기반, 실제 Neo4j 불필요) -2. `phases/3-graph/index.json`의 step 0 status를 업데이트한다. - -## 금지사항 - -- `Neo4jClient`에서 neo4j Session을 외부에 노출하지 마라. 항상 `run()`을 통해서만 쿼리를 실행한다. -- 테스트에서 실제 Neo4j 연결을 시도하지 마라. -- `CONSTRAINTS`에서 `IF NOT EXISTS` 없이 제약조건을 생성하지 마라. diff --git a/phases/3-graph/step1.md b/phases/3-graph/step1.md index 2019c9a..acbb572 100644 --- a/phases/3-graph/step1.md +++ b/phases/3-graph/step1.md @@ -1,97 +1,8 @@ - -# Step 1: graph-builder + +# Step 1: graph-load (removed) -## 읽어야 할 파일 +과거 그래프 적재 작업은 폐기했다. `scripts/`의 과거 적재 파일은 운영 경로에서 호출되지 않으며, +새 환경은 `data/jeju_places.csv`를 애플리케이션 시작 시 로컬 인덱스로 읽는다. -- `/CLAUDE.md` -- `/docs/ARCHITECTURE.md` (Neo4j 스키마, Cypher 쿼리) -- `/src/data/models.py` -- `/src/graph/schema.py` -- `/src/graph/neo4j_client.py` -- `/src/graph/builder.py` (phase 0 스텁) -- `/phases/3-graph/index.json` (step 0 summary 확인) +검증·설명·대안 추천은 모두 외부 그래프 연결 없이 동작해야 한다. -## 작업 - -`src/graph/builder.py`에 여행 일정을 Neo4j 그래프로 저장하는 빌더를 구현하고, `tests/test_graph_builder.py`를 작성하라. - -### 1. `src/graph/builder.py` 구현 - -```python -import hashlib -from src.data.models import POI, ItineraryPlan -from src.graph.neo4j_client import Neo4jClient -from src.graph.schema import NodeLabel, RelType - -class ItineraryGraphBuilder: - def __init__(self, client: Neo4jClient) -> None: - self._client = client - - def build(self, plan: ItineraryPlan, pois: list[POI], matrix: dict) -> None: - """ - ItineraryPlan + POI 목록 + 이동시간 행렬을 받아 Neo4j에 저장. - 순서: POI upsert → Area upsert → TimeSlot upsert → 관계 생성 - """ - sorted_places = sorted(plan.places, key=lambda p: p.visit_order) - for i, (place, poi) in enumerate(zip(sorted_places, pois)): - self._upsert_poi(poi) - self._upsert_area(poi) - slot = self._upsert_time_slot(plan, i, place, poi) - if i > 0: - prev_slot = self._make_slot_id(plan.plan_id, i - 1) - self._create_followed_by(prev_slot, slot) - travel = matrix[i - 1][i] - self._create_travels_to(prev_slot, slot, travel) - - def _upsert_poi(self, poi: POI) -> None: - # POI 노드 MERGE (poi_id 기준) - ... - - def _upsert_area(self, poi: POI) -> None: - # Area 노드 MERGE + (POI)-[:IN_AREA]->(Area) 생성 - # Area name은 poi.category 또는 행정구역 (MVP: poi.category 사용) - ... - - def _upsert_time_slot(self, plan: ItineraryPlan, order: int, place, poi: POI) -> str: - # TimeSlot 노드 MERGE + (POI)-[:SCHEDULED_AT]->(TimeSlot) - # start_time/end_time 계산 (plan.start_time + 이전 이동시간 + 체류시간 누적) - # slot_id 반환 - ... - - def _make_slot_id(self, plan_id: str, order: int) -> str: - return f"{plan_id}_slot_{order}" - - def _create_followed_by(self, slot1_id: str, slot2_id: str) -> None: - # (TimeSlot {slot_id: slot1_id})-[:FOLLOWED_BY]->(TimeSlot {slot_id: slot2_id}) - ... - - def _create_travels_to(self, slot1_id: str, slot2_id: str, travel: dict) -> None: - # (TimeSlot)-[:TRAVELS_TO {travel_min, distance_km, mode}]->(TimeSlot) - ... -``` - -### 2. `tests/test_graph_builder.py` 작성 - -`Neo4jClient.run`을 mock으로 대체: - -- `build(plan, pois, matrix)` → `client.run()`이 최소 POI수×3회 이상 호출 확인 -- `_upsert_poi(poi)` → MERGE 쿼리에 `poi_id` 파라미터 포함 확인 -- `_create_travels_to(...)` → `TRAVELS_TO` 관계 속성 (travel_min, distance_km) 전달 확인 -- 빈 places 목록 → run 호출 없음 - -## Acceptance Criteria - -```bash -python -m pytest tests/test_graph_builder.py -v -``` - -## 검증 절차 - -1. 위 AC 커맨드를 실행한다. -2. `phases/3-graph/index.json`의 step 1 status를 업데이트한다. - -## 금지사항 - -- 모든 쿼리에서 `MERGE`를 사용하라. `CREATE`는 중복 노드를 생성하므로 금지. -- `TRAVELS_TO` 관계는 방향이 있다: (앞 TimeSlot)→(뒤 TimeSlot). 반대 방향 금지. -- 테스트에서 실제 Neo4j 연결을 시도하지 마라. diff --git a/phases/3-graph/step2.md b/phases/3-graph/step2.md index a2bdcd9..3252354 100644 --- a/phases/3-graph/step2.md +++ b/phases/3-graph/step2.md @@ -1,86 +1,7 @@ - -# Step 2: graph-queries + +# Step 2: graph-query (removed) -## 읽어야 할 파일 +그래프 쿼리 단계는 제거했다. 이동시간은 `KakaoMobilityMatrix` 또는 명시적인 Haversine +폴백이 담당하고, 운영시간·구역 재방문·클러스터 분산은 `validation/`과 `scoring/`의 +결정론적 Python 로직이 담당한다. -- `/CLAUDE.md` -- `/docs/ARCHITECTURE.md` (Cypher 쿼리 섹션) -- `/src/graph/schema.py` -- `/src/graph/neo4j_client.py` -- `/src/graph/queries.py` (phase 0 스텁) -- `/phases/3-graph/index.json` (step 1 summary 확인) - -## 작업 - -`src/graph/queries.py`에 ARCHITECTURE.md에 정의된 Cypher 쿼리 함수들을 구현하고, `tests/test_graph_queries.py`를 작성하라. - -### 1. `src/graph/queries.py` 구현 - -```python -from src.graph.neo4j_client import Neo4jClient - -def get_total_travel_time(client: Neo4jClient, slot_ids: list[str]) -> float: - """ - 일정 내 TimeSlot 간 총 이동시간(분) 합계. - 반환: float (분) - """ - query = """ - MATCH (t1:TimeSlot)-[r:TRAVELS_TO]->(t2:TimeSlot) - WHERE t1.slot_id IN $slot_ids - RETURN sum(r.travel_min) AS total_travel_min - """ - ... - -def get_area_revisits(client: Neo4jClient, poi_ids: list[str]) -> list[dict]: - """ - 동일 Area를 2회 이상 방문하는 경우 반환. - 반환: [{"area": "종로구", "visits": 2}, ...] - """ - query = """ - MATCH (p:POI)-[:IN_AREA]->(a:Area) - WHERE p.poi_id IN $poi_ids - WITH a.name AS area, count(*) AS visits - WHERE visits > 1 - RETURN area, visits ORDER BY visits DESC - """ - ... - -def get_operating_conflicts(client: Neo4jClient, poi_ids: list[str]) -> list[dict]: - """ - 운영시간 충돌 후보 (도착 예상이 운영 범위 밖인 POI). - 반환: [{"poi_name": "경복궁", "start_time": "08:30", "open_start": "09:00", "open_end": "18:00"}, ...] - """ - query = """ - MATCH (p:POI)-[:SCHEDULED_AT]->(t:TimeSlot) - WHERE p.poi_id IN $poi_ids - AND (t.start_time < p.open_start OR t.start_time >= p.open_end) - RETURN p.name AS poi_name, t.start_time, p.open_start, p.open_end - """ - ... -``` - -### 2. `tests/test_graph_queries.py` 작성 - -`Neo4jClient.run`을 mock하여 테스트: - -- `get_total_travel_time(client, slot_ids)` → `client.run()`이 slot_ids 파라미터로 호출 확인 -- mock 반환 `[{"total_travel_min": 45.0}]` → `45.0` 반환 확인 -- `get_area_revisits(client, poi_ids)` → visits > 1인 항목만 반환 -- `get_operating_conflicts(client, poi_ids)` → poi_name, start_time 포함 확인 -- 빈 결과 → 빈 리스트 반환 (None 반환 금지) - -## Acceptance Criteria - -```bash -python -m pytest tests/test_graph_queries.py -v -``` - -## 검증 절차 - -1. 위 AC 커맨드를 실행한다. -2. `phases/3-graph/index.json`의 step 2 status를 업데이트한다. - -## 금지사항 - -- Cypher 파라미터를 문자열 포맷팅으로 삽입하지 마라 (`f"...{poi_id}..."` 금지). 반드시 `client.run(query, poi_ids=...)` 파라미터 바인딩 사용. -- 쿼리 결과가 없을 때 None을 반환하지 마라. 빈 리스트 또는 0.0을 반환한다. diff --git a/phases/4-validation/step0.md b/phases/4-validation/step0.md index 60701b3..3de8751 100644 --- a/phases/4-validation/step0.md +++ b/phases/4-validation/step0.md @@ -1,4 +1,4 @@ - + # Step 0: hard-fail ## 읽어야 할 파일 diff --git a/phases/4-validation/step1.md b/phases/4-validation/step1.md index 918568f..2e91c20 100644 --- a/phases/4-validation/step1.md +++ b/phases/4-validation/step1.md @@ -1,4 +1,4 @@ - + # Step 1: warning ## 읽어야 할 파일 diff --git a/phases/4-validation/step2.md b/phases/4-validation/step2.md index 161d935..fca06ca 100644 --- a/phases/4-validation/step2.md +++ b/phases/4-validation/step2.md @@ -1,4 +1,4 @@ - + # Step 2: scoring ## 읽어야 할 파일 diff --git a/phases/5-explain/step0.md b/phases/5-explain/step0.md index b77f483..7e6d8e6 100644 --- a/phases/5-explain/step0.md +++ b/phases/5-explain/step0.md @@ -1,4 +1,4 @@ - + # Step 0: prompts ## 읽어야 할 파일 diff --git a/phases/5-explain/step1.md b/phases/5-explain/step1.md index 555e8da..44baff2 100644 --- a/phases/5-explain/step1.md +++ b/phases/5-explain/step1.md @@ -1,4 +1,4 @@ - + # Step 1: explain-engine ## 읽어야 할 파일 diff --git a/phases/5-explain/step2.md b/phases/5-explain/step2.md index 9a1ccef..227bc95 100644 --- a/phases/5-explain/step2.md +++ b/phases/5-explain/step2.md @@ -1,4 +1,4 @@ - + # Step 2: orchestrator ## 읽어야 할 파일 diff --git a/phases/6-api/step0.md b/phases/6-api/step0.md index 8676ac4..038c889 100644 --- a/phases/6-api/step0.md +++ b/phases/6-api/step0.md @@ -1,154 +1,9 @@ - -# Step 0: api-schemas + +# Step 0: API schemas -## 읽어야 할 파일 +현재 API는 Pydantic v2로 입력을 검증한다. -- `/CLAUDE.md` -- `/docs/UI_GUIDE.md` (엔드포인트 Request/Response 스펙) -- `/src/data/models.py` -- `/src/api/schemas.py` (phase 0 스텁) -- `/phases/6-api/index.json` +- `POST /api/validate`: 1~30일, 하루 1~8장소, ISO 날짜, `HH:MM` 시작 시각 +- 빈 일정·공백 장소명·잘못된 날짜/시각은 FastAPI 422로 반환한다. +- 검증 응답은 점수, Hard Fail/Warning, 설명, `repair_suggestions`를 함께 포함한다. -## 작업 - -`src/api/schemas.py`에 FastAPI Request/Response Pydantic 스키마를 구현하라. - -### 구현할 스키마 - -```python -from pydantic import BaseModel, Field -from src.data.models import HardFail, Warning, Scores, RepairSuggestion - -class PlaceInputSchema(BaseModel): - name: str = Field(..., min_length=1, max_length=100, examples=["경복궁"]) - stay_minutes: int = Field(..., ge=10, le=600) - visit_order: int = Field(..., ge=1) - -class ValidateRequest(BaseModel): - places: list[PlaceInputSchema] = Field(..., min_length=4, max_length=8) - transport: str = Field(..., pattern="^(transit|car|walk)$") - travel_type: str = Field(..., pattern="^(cultural|nature|shopping|food|adventure)$") - date: str = Field(..., pattern=r"^\d{4}-\d{2}-\d{2}$", examples=["2024-07-20"]) - start_time: str = Field(default="09:00", pattern=r"^\d{2}:\d{2}$") - -class ValidateResponse(BaseModel): - plan_id: str - final_score: int = Field(ge=0, le=100) - hard_fails: list[HardFail] - warnings: list[Warning] - scores: Scores - explanation: str - repair_suggestions: list[RepairSuggestion] - - @classmethod - def from_result(cls, result) -> "ValidateResponse": - """ValidationResult → ValidateResponse 변환.""" - return cls( - plan_id=result.plan_id, - final_score=result.final_score, - hard_fails=result.hard_fails, - warnings=result.warnings, - scores=result.scores, - explanation=result.explanation, - repair_suggestions=result.repair_suggestions, - ) - -class RepairResponse(BaseModel): - plan_id: str - repair_suggestions: list[RepairSuggestion] - -class HealthResponse(BaseModel): - status: str # "ok" | "degraded" - neo4j: bool - tour_api: bool - kakao: bool -``` - -### `tests/test_api_schemas.py` 작성 - -```python -import pytest -from pydantic import ValidationError -from src.api.schemas import ValidateRequest, ValidateResponse, HealthResponse - -def make_places(n=4): - return [ - {"name": f"장소{i}", "stay_minutes": 60, "visit_order": i} - for i in range(1, n + 1) - ] - -def test_validate_request_valid(): - req = ValidateRequest( - places=make_places(4), - transport="transit", - travel_type="cultural", - date="2024-07-20", - ) - assert req.start_time == "09:00" - -def test_validate_request_too_few_places(): - with pytest.raises(ValidationError): - ValidateRequest( - places=make_places(3), # 4 미만 - transport="transit", - travel_type="cultural", - date="2024-07-20", - ) - -def test_validate_request_too_many_places(): - with pytest.raises(ValidationError): - ValidateRequest( - places=make_places(9), # 8 초과 - transport="transit", - travel_type="cultural", - date="2024-07-20", - ) - -def test_validate_request_invalid_transport(): - with pytest.raises(ValidationError): - ValidateRequest( - places=make_places(4), - transport="bike", # 허용 안 됨 - travel_type="cultural", - date="2024-07-20", - ) - -def test_validate_request_invalid_date_format(): - with pytest.raises(ValidationError): - ValidateRequest( - places=make_places(4), - transport="transit", - travel_type="cultural", - date="20240720", # 잘못된 형식 - ) - -def test_health_response(): - h = HealthResponse(status="ok", neo4j=True, tour_api=True, kakao=True) - assert h.status == "ok" -``` - -테스트 케이스: -- `ValidateRequest` 정상 생성 (4개 장소) -- `places` 3개 미만 → ValidationError -- `places` 9개 초과 → ValidationError -- `transport="bike"` → ValidationError -- `date="20240720"` (잘못된 형식) → ValidationError -- `ValidateResponse.from_result(mock_result)` → ValidateResponse 생성 -- JSON 직렬화 → final_score, hard_fails 포함 확인 - -## Acceptance Criteria - -```bash -python -m pytest tests/test_api_schemas.py -v -``` - -## 검증 절차 - -1. 위 AC 커맨드를 실행한다. -2. `phases/6-api/index.json`의 step 0 status를 업데이트한다. - -## 금지사항 - -- `src/data/models.py`의 `ValidationResult`를 API 응답으로 직접 반환하지 마라. `ValidateResponse.from_result()`로 변환 후 반환한다. -- `ValidateRequest`에서 places가 3개 이하일 때 ValidationError가 아닌 다른 에러를 발생시키지 마라. -- `transport` 필드를 문자열로만 허용하고 Enum으로 강제하지 마라 (openapi 스펙 단순화). diff --git a/phases/6-api/step1.md b/phases/6-api/step1.md index ac5b8f4..75acc35 100644 --- a/phases/6-api/step1.md +++ b/phases/6-api/step1.md @@ -1,160 +1,11 @@ - -# Step 1: api-routes + +# Step 1: API runtime -## 읽어야 할 파일 +라우터는 외부 I/O를 직접 수행하지 않고 data/scoring 계층의 클라이언트를 호출한다. -- `/CLAUDE.md` -- `/docs/UI_GUIDE.md` (엔드포인트 스펙) -- `/src/api/schemas.py` -- `/src/data/models.py` -- `/src/explain/orchestrator.py` -- `/src/api/routes.py` (phase 0 스텁) -- `/src/api/main.py` (phase 0 스텁) -- `/phases/6-api/index.json` +- `POST /api/validate`: Kakao 경로 행렬(키가 없으면 Haversine 명시적 폴백), 시작 시각, 실시간 서울 혼잡도, Repair 제안을 한 응답에 반영한다. +- `POST /api/parse/text`, `POST /api/parse/document`: 파싱 실패는 구체적인 4xx로 반환하고 문서 업로드는 15MB로 제한한다. +- `GET /health`: API 키 설정 여부뿐 아니라 필수 데이터 로딩 여부를 `ready`로 보고한다. +- `ENVIRONMENT=production`에서는 비용이 큰 엔드포인트에 `Authorization: Bearer` 토큰이 필요하며, 모든 API 요청은 IP별 sliding-window 레이트리밋을 적용한다. +- 별도 `/repair/{plan_id}` 조회 API는 제공하지 않는다. Repair 제안은 검증 응답의 `repair_suggestions` 필드에 포함한다. -## 작업 - -### 1. `src/api/main.py` 구현 - -```python -from contextlib import asynccontextmanager -from fastapi import FastAPI -from src.data.models import Settings -from src.explain.orchestrator import ValidationOrchestrator - -@asynccontextmanager -async def lifespan(app: FastAPI): - settings = Settings() - orchestrator = ValidationOrchestrator(settings) - app.state.orchestrator = orchestrator - app.state.settings = settings - yield - # teardown: Neo4j 클라이언트 닫기 (orchestrator._neo4j가 있을 때만) - if orchestrator._neo4j: - orchestrator._neo4j.close() - -app = FastAPI( - title="Explainable Travel Plan Validator", - description="여행 일정의 실행 가능성·동선 효율·위험 요소를 AI로 검증합니다.", - version="0.1.0", - lifespan=lifespan, -) -# routes.router include -``` - -### 2. `src/api/routes.py` 구현 - -```python -from fastapi import APIRouter, HTTPException, Request -from src.api.schemas import ValidateRequest, ValidateResponse, RepairResponse, HealthResponse -from src.data.models import ItineraryPlan, PlaceInput - -router = APIRouter() - -@router.post("/validate", response_model=ValidateResponse, status_code=200) -async def validate_plan(request: Request, body: ValidateRequest) -> ValidateResponse: - """ - 여행 일정 검증 전체 파이프라인 실행. - - TourAPI 404 (ValueError) → HTTPException 404 - - 기타 예외 → HTTPException 503 (서비스 일시 불가) - """ - orchestrator = request.app.state.orchestrator - plan = ItineraryPlan( - places=[PlaceInput(**p.model_dump()) for p in body.places], - transport=body.transport, - travel_type=body.travel_type, - date=body.date, - start_time=body.start_time, - ) - try: - result = await orchestrator.run(plan) - except ValueError as e: - raise HTTPException(status_code=404, detail=str(e)) - except Exception as e: - raise HTTPException(status_code=503, detail="서비스를 일시적으로 사용할 수 없습니다.") - return ValidateResponse.from_result(result) - -@router.get("/repair/{plan_id}", response_model=RepairResponse) -async def get_repair(request: Request, plan_id: str) -> RepairResponse: - """ - 저장된 ValidationResult에서 repair_suggestions 반환. - plan_id 미존재 → HTTPException 404 - """ - # Neo4j에서 plan_id로 저장된 결과 조회 - # MVP: in-memory store 또는 Neo4j 쿼리 - orchestrator = request.app.state.orchestrator - if not orchestrator._neo4j: - raise HTTPException(status_code=503, detail="Neo4j 연결 없음") - # 결과 조회 (Neo4j 또는 캐시) - # plan_id 없으면 404 - raise HTTPException(status_code=404, detail=f"plan_id={plan_id} 결과 없음") - -@router.get("/health", response_model=HealthResponse) -async def health(request: Request) -> HealthResponse: - """ - Neo4j, TourAPI, Kakao API 상태 확인. - 모두 정상 → status="ok", 하나 이상 실패 → status="degraded" - """ - orchestrator = request.app.state.orchestrator - neo4j_ok = orchestrator._neo4j is not None - # TourAPI, Kakao: ping 없이 초기화 성공 여부로 판단 (MVP) - tour_ok = orchestrator._tour is not None - kakao_ok = orchestrator._kakao is not None - status = "ok" if all([neo4j_ok, tour_ok, kakao_ok]) else "degraded" - return HealthResponse(status=status, neo4j=neo4j_ok, tour_api=tour_ok, kakao=kakao_ok) -``` - -### 3. `tests/test_api_routes.py` 작성 - -`fastapi.testclient.TestClient` + mock 사용: - -```python -import pytest -from fastapi.testclient import TestClient -from unittest.mock import AsyncMock, MagicMock, patch -from src.api.main import app - -VALID_BODY = { - "places": [ - {"name": "경복궁", "stay_minutes": 120, "visit_order": 1}, - {"name": "인사동", "stay_minutes": 60, "visit_order": 2}, - {"name": "남산서울타워", "stay_minutes": 90, "visit_order": 3}, - {"name": "명동", "stay_minutes": 60, "visit_order": 4}, - ], - "transport": "transit", - "travel_type": "cultural", - "date": "2024-07-20", -} -``` - -테스트 케이스 (ValidationOrchestrator를 mock): -- `POST /validate` 정상 body → 200 + ValidateResponse 형식 -- `POST /validate` places 3개 → 422 ValidationError -- `POST /validate` (TourAPI ValueError) → 404 -- `POST /validate` (기타 예외) → 503 -- `GET /health` → 200 + `{"status": ...}` 포함 -- `GET /repair/{plan_id}` Neo4j 없음 → 503 - -## Acceptance Criteria - -```bash -python -m pytest tests/test_api_routes.py -v -ruff check src/api/ -``` - -## 검증 절차 - -1. 위 AC 커맨드를 실행한다. -2. 전체 테스트 스위트 실행: - ```bash - python -m pytest tests/ -v --tb=short - ``` - 모든 테스트 통과 확인. -3. `phases/6-api/index.json`의 step 1 status를 업데이트한다. - -## 금지사항 - -- `routes.py`에서 `ValidationOrchestrator`를 직접 인스턴스화하지 마라. 반드시 `request.app.state.orchestrator`를 사용한다. -- `ValueError`를 503으로 처리하지 마라. TourAPI 관광지 미검색은 404다. -- 전역 변수에 orchestrator 인스턴스를 저장하지 마라. FastAPI lifespan + app.state 사용. -- `GET /repair/{plan_id}` MVP에서 Neo4j가 없으면 503을 반환한다. 결과 캐싱 로직은 선택 구현. diff --git a/plan.md b/plan.md index e60fe29..8f24741 100644 --- a/plan.md +++ b/plan.md @@ -1,3 +1,4 @@ + 전체 분석 완료. 이제 결과를 종합해서 기획 문서로 정리합니다. --- diff --git a/pyproject.toml b/pyproject.toml index 3056a8c..179068e 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -22,7 +22,8 @@ dependencies = [ "tqdm>=4.66", "openpyxl>=3.1", "scipy>=1.13", - "neo4j>=5.26", + "scikit-learn>=1.5", + "ortools>=9.10", "python-multipart>=0.0.32", ] diff --git a/requirements.txt b/requirements.txt index 47d8dae..b724525 100644 --- a/requirements.txt +++ b/requirements.txt @@ -16,7 +16,8 @@ pdfplumber>=0.11 tqdm>=4.66 openpyxl>=3.1 scipy>=1.13 -neo4j>=5.26 +scikit-learn>=1.5 +ortools>=9.10 python-multipart>=0.0.32 # --- 개발/테스트 (선택) --- diff --git a/src/api/main.py b/src/api/main.py index 35e0cd9..293af94 100644 --- a/src/api/main.py +++ b/src/api/main.py @@ -1,7 +1,7 @@ """FastAPI 앱 진입점.""" + from __future__ import annotations -import os from pathlib import Path from fastapi import FastAPI @@ -9,18 +9,9 @@ from fastapi.responses import HTMLResponse, Response from fastapi.staticfiles import StaticFiles -# .env → os.environ 로드 (uvicorn 직접 실행 시 환경변수 자동 주입) -# router import보다 먼저 실행해야 한다 — router.py는 모듈 로드 시점에 -# GraphRetriever.from_env() 등으로 즉시 환경변수를 읽는 싱글턴을 생성한다. -_dotenv_path = Path(__file__).parent.parent.parent / ".env" -if _dotenv_path.exists() and not os.environ.get("ANTHROPIC_API_KEY"): - for line in _dotenv_path.read_text(encoding="utf-8").splitlines(): - line = line.strip() - if line and not line.startswith("#") and "=" in line: - key, _, val = line.partition("=") - os.environ.setdefault(key.strip(), val.strip()) - -from src.api.router import router # noqa: E402 — .env 로드 이후에 import해야 함 +from src.api.router import router +from src.api.security import security_middleware +from src.data.models import Settings _STATIC_DIR = Path(__file__).parent / "static" @@ -30,12 +21,18 @@ description="여행 계획 QA 검증 API", ) +_settings = Settings() +_cors_origins = [ + origin.strip() for origin in _settings.cors_allowed_origins.split(",") if origin.strip() +] + app.add_middleware( CORSMiddleware, - allow_origins=["*"], - allow_methods=["*"], - allow_headers=["*"], + allow_origins=_cors_origins, + allow_methods=["GET", "POST", "OPTIONS"], + allow_headers=["Authorization", "Content-Type"], ) +app.middleware("http")(security_middleware) app.include_router(router, prefix="/api") @@ -80,16 +77,13 @@ async def health() -> dict: 데이터 적재 상태를 한 번에 확인하는 용도. """ - def _is_set(name: str) -> bool: - return bool(os.environ.get(name, "").strip()) - apis_configured = { - "anthropic": _is_set("ANTHROPIC_API_KEY"), - "tour_api": _is_set("TOUR_API_KEY"), - "kakao_rest": _is_set("KAKAO_REST_API_KEY"), - "kakao_mobility": _is_set("KAKAO_MOBILITY_KEY"), - "seoul_data": _is_set("SEOUL_DATA_API_KEY"), - "naver": _is_set("NAVER_API_KEY"), + "anthropic": bool(_settings.anthropic_api_key.strip()), + "tour_api": bool(_settings.tour_api_key.strip()), + "kakao_rest": bool(_settings.kakao_rest_api_key.strip()), + "kakao_mobility": bool(_settings.kakao_mobility_key.strip()), + "seoul_data": bool(_settings.seoul_data_api_key.strip()), + "naver": bool(_settings.naver_api_key.strip()), } data_loaded: dict[str, int] = {} @@ -104,8 +98,10 @@ def _is_set(name: str) -> bool: except Exception: # pragma: no cover - 진단용, 실패해도 health 는 200 data_loaded = {} + ready = data_loaded.get("places", 0) > 0 and data_loaded.get("congestion_places", 0) > 0 return { - "status": "ok", + "status": "ok" if ready else "degraded", + "ready": ready, "version": app.version, "apis_configured": apis_configured, "data_loaded": data_loaded, diff --git a/src/api/router.py b/src/api/router.py index d9596e9..f785178 100644 --- a/src/api/router.py +++ b/src/api/router.py @@ -1,4 +1,5 @@ """FastAPI 라우터 — /validate, /places 엔드포인트.""" + from __future__ import annotations import asyncio @@ -8,7 +9,7 @@ from pathlib import Path import openpyxl -from fastapi import APIRouter, File, HTTPException, UploadFile +from fastapi import APIRouter, HTTPException, UploadFile from src.api.schemas import ( DayPlanWeb, @@ -21,12 +22,14 @@ ValidateResponse, ) from src.data.dwell_db import MANUAL_OVERRIDES as _DWELL_OVERRIDES -from src.data.graph_retriever import GraphRetriever +from src.data.evidence_retriever import LocalEvidenceRetriever from src.data.hours_db import resolve_hours from src.data.kakao_local import KakaoLocalClient from src.data.models import POI, DayPlan, ItineraryPlan, PlaceInput from src.explain.pipeline import ValidatorPipeline from src.explain.plan_extractor import PlanExtractionError, PlanExtractor +from src.matrix.route_matrix import RouteMatrixService +from src.scoring.congestion_engine import CongestionEngine router = APIRouter() @@ -34,8 +37,10 @@ # 키가 없으면 enabled=False 로 동작해 기존 폴백을 유지한다. _KAKAO_LOCAL = KakaoLocalClient.from_env() -# Neo4j 지식그래프 — 지역/도보권 대안 근거. NEO4J_URI 미설정 시 enabled=False로 조용히 폴백. -_GRAPH = GraphRetriever.from_env() +# 로컬 장소 근거 — 지역/근접 대안 조회. +_GRAPH = LocalEvidenceRetriever.from_settings() +_ROUTE_MATRIX = RouteMatrixService.from_settings() +_CONGESTION_ENGINE = CongestionEngine.from_settings() # 일정표 업로드(PDF·이미지·복사 텍스트) 파싱 — Claude Vision + 쿼리 리라이팅. _EXTRACTOR = PlanExtractor.from_env() @@ -75,6 +80,7 @@ def _kakao_cat_code(category_name: str) -> str: return "32" return "12" + _DATA_DIR = Path(__file__).parent.parent.parent / "data" _DEFAULT_CENTER = (37.5665, 126.9780) # 서울 시청 @@ -88,145 +94,751 @@ def _kakao_cat_code(category_name: str) -> str: # ── sido 단축 매핑 ───────────────────────────────────────────────────────── _SIDO_MAP: dict[str, str] = { - "서울특별시": "서울", "부산광역시": "부산", "대구광역시": "대구", - "인천광역시": "인천", "광주광역시": "광주", "대전광역시": "대전", - "울산광역시": "울산", "세종특별자치시": "세종", - "경기도": "경기", "강원특별자치도": "강원", "강원도": "강원", - "충청북도": "충북", "충청남도": "충남", - "전라북도": "전북", "전북특별자치도": "전북", "전라남도": "전남", - "경상북도": "경북", "경상남도": "경남", + "서울특별시": "서울", + "부산광역시": "부산", + "대구광역시": "대구", + "인천광역시": "인천", + "광주광역시": "광주", + "대전광역시": "대전", + "울산광역시": "울산", + "세종특별자치시": "세종", + "경기도": "경기", + "강원특별자치도": "강원", + "강원도": "강원", + "충청북도": "충북", + "충청남도": "충남", + "전라북도": "전북", + "전북특별자치도": "전북", + "전라남도": "전남", + "경상북도": "경북", + "경상남도": "경남", "제주특별자치도": "제주", } # TourAPI type_label → category code _TYPE_MAP: dict[str, str] = { - "관광지": "12", "문화시설": "14", "레저스포츠": "28", - "숙박": "32", "쇼핑": "38", "음식점": "39", "여행코스": "25", + "관광지": "12", + "문화시설": "14", + "레저스포츠": "28", + "숙박": "32", + "쇼핑": "38", + "음식점": "39", + "여행코스": "25", } # TourAPI contenttypeid → 한글 레이블 _TYPEID_LABEL: dict[str, str] = { - "12": "관광지", "14": "문화시설", "15": "축제/행사", - "25": "여행코스", "28": "레저스포츠", "32": "숙박", - "38": "쇼핑", "39": "음식점", - "wellness": "웰니스", "bf": "무장애여행", + "12": "관광지", + "14": "문화시설", + "15": "축제/행사", + "25": "여행코스", + "28": "레저스포츠", + "32": "숙박", + "38": "쇼핑", + "39": "음식점", + "wellness": "웰니스", + "bf": "무장애여행", } # ── 하드코딩 좌표 DB (고품질 기준값) ────────────────────────────────────── _COORD_CATALOG: dict[str, dict] = { - "경복궁": {"lat": 37.5796, "lng": 126.9770, "cat": "14", "region": "서울", "cat_name": "문화시설"}, - "창덕궁": {"lat": 37.5793, "lng": 126.9910, "cat": "14", "region": "서울", "cat_name": "문화시설"}, - "덕수궁": {"lat": 37.5658, "lng": 126.9752, "cat": "14", "region": "서울", "cat_name": "문화시설"}, - "창경궁": {"lat": 37.5789, "lng": 126.9950, "cat": "14", "region": "서울", "cat_name": "문화시설"}, - "종묘": {"lat": 37.5751, "lng": 126.9942, "cat": "14", "region": "서울", "cat_name": "문화시설"}, - "국립중앙박물관": {"lat": 37.5234, "lng": 126.9806, "cat": "14", "region": "서울", "cat_name": "문화시설"}, - "국립민속박물관": {"lat": 37.5820, "lng": 126.9790, "cat": "14", "region": "서울", "cat_name": "문화시설"}, - "국립현대미술관": {"lat": 37.5789, "lng": 126.9741, "cat": "14", "region": "서울", "cat_name": "문화시설"}, - "리움미술관": {"lat": 37.5383, "lng": 126.9988, "cat": "14", "region": "서울", "cat_name": "문화시설"}, - "전쟁기념관": {"lat": 37.5376, "lng": 126.9770, "cat": "14", "region": "서울", "cat_name": "문화시설"}, - "동대문디자인플라자": {"lat": 37.5669, "lng": 127.0091, "cat": "14", "region": "서울", "cat_name": "문화시설"}, - "한강공원": {"lat": 37.5279, "lng": 126.9985, "cat": "12", "region": "서울", "cat_name": "자연관광"}, - "반포한강공원": {"lat": 37.5069, "lng": 126.9943, "cat": "12", "region": "서울", "cat_name": "자연관광"}, - "여의도한강공원": {"lat": 37.5265, "lng": 126.9322, "cat": "12", "region": "서울", "cat_name": "자연관광"}, - "뚝섬한강공원": {"lat": 37.5315, "lng": 127.0614, "cat": "12", "region": "서울", "cat_name": "자연관광"}, - "서울숲": {"lat": 37.5445, "lng": 127.0374, "cat": "12", "region": "서울", "cat_name": "자연관광"}, - "남산공원": {"lat": 37.5512, "lng": 126.9882, "cat": "12", "region": "서울", "cat_name": "자연관광"}, - "올림픽공원": {"lat": 37.5220, "lng": 127.1217, "cat": "12", "region": "서울", "cat_name": "자연관광"}, - "북한산": {"lat": 37.6589, "lng": 126.9764, "cat": "12", "region": "서울", "cat_name": "자연관광"}, - "관악산": {"lat": 37.4443, "lng": 126.9634, "cat": "12", "region": "서울", "cat_name": "자연관광"}, - "남산타워": {"lat": 37.5512, "lng": 126.9882, "cat": "12", "region": "서울", "cat_name": "관광지"}, - "N서울타워": {"lat": 37.5512, "lng": 126.9882, "cat": "12", "region": "서울", "cat_name": "관광지"}, - "북촌한옥마을": {"lat": 37.5826, "lng": 126.9830, "cat": "12", "region": "서울", "cat_name": "관광지"}, - "서촌": {"lat": 37.5809, "lng": 126.9690, "cat": "12", "region": "서울", "cat_name": "관광지"}, - "광화문광장": {"lat": 37.5720, "lng": 126.9768, "cat": "12", "region": "서울", "cat_name": "관광지"}, - "청계천": {"lat": 37.5695, "lng": 126.9784, "cat": "12", "region": "서울", "cat_name": "관광지"}, - "63빌딩": {"lat": 37.5198, "lng": 126.9407, "cat": "12", "region": "서울", "cat_name": "관광지"}, - "롯데월드타워": {"lat": 37.5126, "lng": 127.1026, "cat": "12", "region": "서울", "cat_name": "관광지"}, - "익선동": {"lat": 37.5755, "lng": 126.9999, "cat": "12", "region": "서울", "cat_name": "관광지"}, - "명동": {"lat": 37.5636, "lng": 126.9838, "cat": "38", "region": "서울", "cat_name": "쇼핑"}, - "인사동": {"lat": 37.5742, "lng": 126.9858, "cat": "38", "region": "서울", "cat_name": "쇼핑"}, - "동대문": {"lat": 37.5660, "lng": 127.0098, "cat": "38", "region": "서울", "cat_name": "쇼핑"}, - "코엑스": {"lat": 37.5115, "lng": 127.0596, "cat": "38", "region": "서울", "cat_name": "쇼핑"}, - "홍대": {"lat": 37.5563, "lng": 126.9235, "cat": "39", "region": "서울", "cat_name": "음식/카페"}, - "이태원": {"lat": 37.5347, "lng": 126.9940, "cat": "39", "region": "서울", "cat_name": "음식/카페"}, - "강남역": {"lat": 37.4979, "lng": 127.0276, "cat": "39", "region": "서울", "cat_name": "음식/카페"}, - "성수동": {"lat": 37.5444, "lng": 127.0558, "cat": "39", "region": "서울", "cat_name": "음식/카페"}, - "연남동": {"lat": 37.5619, "lng": 126.9244, "cat": "39", "region": "서울", "cat_name": "음식/카페"}, - "망원동": {"lat": 37.5555, "lng": 126.9094, "cat": "39", "region": "서울", "cat_name": "음식/카페"}, - "롯데월드": {"lat": 37.5111, "lng": 127.0985, "cat": "15", "region": "서울", "cat_name": "테마파크"}, - "서울랜드": {"lat": 37.4277, "lng": 127.0048, "cat": "15", "region": "서울", "cat_name": "테마파크"}, - "에버랜드": {"lat": 37.2930, "lng": 127.2025, "cat": "15", "region": "경기", "cat_name": "테마파크"}, - "캐리비안베이": {"lat": 37.2930, "lng": 127.2025, "cat": "15", "region": "경기", "cat_name": "테마파크"}, - "수원화성": {"lat": 37.2871, "lng": 127.0145, "cat": "14", "region": "경기", "cat_name": "문화시설"}, - "해운대해수욕장": {"lat": 35.1586, "lng": 129.1603, "cat": "12", "region": "부산", "cat_name": "자연관광"}, - "광안리해수욕장": {"lat": 35.1531, "lng": 129.1191, "cat": "12", "region": "부산", "cat_name": "자연관광"}, - "감천문화마을": {"lat": 35.0976, "lng": 129.0099, "cat": "12", "region": "부산", "cat_name": "관광지"}, - "태종대": {"lat": 35.0456, "lng": 129.0845, "cat": "12", "region": "부산", "cat_name": "자연관광"}, - "용두산공원": {"lat": 35.1007, "lng": 129.0324, "cat": "12", "region": "부산", "cat_name": "자연관광"}, - "자갈치시장": {"lat": 35.0966, "lng": 129.0302, "cat": "38", "region": "부산", "cat_name": "쇼핑"}, - "BIFF광장": {"lat": 35.0977, "lng": 129.0227, "cat": "12", "region": "부산", "cat_name": "관광지"}, - "센텀시티": {"lat": 35.1693, "lng": 129.1323, "cat": "38", "region": "부산", "cat_name": "쇼핑"}, - "제주국제공항": {"lat": 33.5104, "lng": 126.4926, "cat": "14", "region": "제주", "cat_name": "교통"}, - "성산일출봉": {"lat": 33.4580, "lng": 126.9424, "cat": "12", "region": "제주", "cat_name": "자연관광"}, - "한라산": {"lat": 33.3617, "lng": 126.5338, "cat": "12", "region": "제주", "cat_name": "자연관광"}, - "협재해수욕장": {"lat": 33.3941, "lng": 126.2397, "cat": "12", "region": "제주", "cat_name": "자연관광"}, - "함덕해수욕장": {"lat": 33.5430, "lng": 126.6697, "cat": "12", "region": "제주", "cat_name": "자연관광"}, - "월정리해변": {"lat": 33.5605, "lng": 126.7958, "cat": "12", "region": "제주", "cat_name": "자연관광"}, - "우도": {"lat": 33.5000, "lng": 126.9517, "cat": "12", "region": "제주", "cat_name": "자연관광"}, - "섭지코지": {"lat": 33.4286, "lng": 126.9283, "cat": "12", "region": "제주", "cat_name": "자연관광"}, - "김녕해수욕장": {"lat": 33.5561, "lng": 126.7547, "cat": "12", "region": "제주", "cat_name": "자연관광"}, - "새별오름": {"lat": 33.3664, "lng": 126.2931, "cat": "12", "region": "제주", "cat_name": "자연관광"}, - "산굼부리": {"lat": 33.4279, "lng": 126.6165, "cat": "12", "region": "제주", "cat_name": "자연관광"}, - "사려니숲길": {"lat": 33.3726, "lng": 126.5953, "cat": "12", "region": "제주", "cat_name": "자연관광"}, - "쇠소깍": {"lat": 33.2419, "lng": 126.6328, "cat": "12", "region": "제주", "cat_name": "자연관광"}, - "보롬왓": {"lat": 33.3653, "lng": 126.7530, "cat": "12", "region": "제주", "cat_name": "자연관광"}, - "만장굴": {"lat": 33.5280, "lng": 126.7720, "cat": "12", "region": "제주", "cat_name": "자연관광"}, - "올레길": {"lat": 33.2489, "lng": 126.5641, "cat": "12", "region": "제주", "cat_name": "자연관광"}, - "카멜리아힐": {"lat": 33.2920, "lng": 126.4057, "cat": "12", "region": "제주", "cat_name": "자연관광"}, - "오설록티뮤지엄": {"lat": 33.3059, "lng": 126.2909, "cat": "14", "region": "제주", "cat_name": "문화시설"}, - "아르떼뮤지엄": {"lat": 33.4486, "lng": 126.3256, "cat": "14", "region": "제주", "cat_name": "문화시설"}, - "빛의벙커": {"lat": 33.4450, "lng": 126.9210, "cat": "14", "region": "제주", "cat_name": "문화시설"}, - "에코랜드": {"lat": 33.4571, "lng": 126.7016, "cat": "15", "region": "제주", "cat_name": "테마파크"}, - "스누피가든": {"lat": 33.5070, "lng": 126.7250, "cat": "15", "region": "제주", "cat_name": "테마파크"}, - "아쿠아플라넷제주": {"lat": 33.4333, "lng": 126.9213, "cat": "15", "region": "제주", "cat_name": "테마파크"}, - "9.81파크": {"lat": 33.3803, "lng": 126.3020, "cat": "15", "region": "제주", "cat_name": "테마파크"}, - "동문재래시장": {"lat": 33.5126, "lng": 126.5291, "cat": "38", "region": "제주", "cat_name": "쇼핑"}, - "서귀포올레시장": {"lat": 33.2489, "lng": 126.5641, "cat": "38", "region": "제주", "cat_name": "쇼핑"}, - "불국사": {"lat": 35.7897, "lng": 129.3317, "cat": "14", "region": "경주", "cat_name": "문화시설"}, - "석굴암": {"lat": 35.7953, "lng": 129.3465, "cat": "14", "region": "경주", "cat_name": "문화시설"}, - "첨성대": {"lat": 35.8347, "lng": 129.2191, "cat": "14", "region": "경주", "cat_name": "문화시설"}, - "동궁과월지": {"lat": 35.8351, "lng": 129.2248, "cat": "14", "region": "경주", "cat_name": "문화시설"}, - "대릉원": {"lat": 35.8364, "lng": 129.2147, "cat": "14", "region": "경주", "cat_name": "문화시설"}, - "설악산": {"lat": 38.1190, "lng": 128.4654, "cat": "12", "region": "강원", "cat_name": "자연관광"}, - "오대산": {"lat": 37.7947, "lng": 128.5369, "cat": "12", "region": "강원", "cat_name": "자연관광"}, - "정동진": {"lat": 37.6844, "lng": 129.0559, "cat": "12", "region": "강원", "cat_name": "자연관광"}, + "경복궁": { + "lat": 37.5796, + "lng": 126.9770, + "cat": "14", + "region": "서울", + "cat_name": "문화시설", + }, + "창덕궁": { + "lat": 37.5793, + "lng": 126.9910, + "cat": "14", + "region": "서울", + "cat_name": "문화시설", + }, + "덕수궁": { + "lat": 37.5658, + "lng": 126.9752, + "cat": "14", + "region": "서울", + "cat_name": "문화시설", + }, + "창경궁": { + "lat": 37.5789, + "lng": 126.9950, + "cat": "14", + "region": "서울", + "cat_name": "문화시설", + }, + "종묘": { + "lat": 37.5751, + "lng": 126.9942, + "cat": "14", + "region": "서울", + "cat_name": "문화시설", + }, + "국립중앙박물관": { + "lat": 37.5234, + "lng": 126.9806, + "cat": "14", + "region": "서울", + "cat_name": "문화시설", + }, + "국립민속박물관": { + "lat": 37.5820, + "lng": 126.9790, + "cat": "14", + "region": "서울", + "cat_name": "문화시설", + }, + "국립현대미술관": { + "lat": 37.5789, + "lng": 126.9741, + "cat": "14", + "region": "서울", + "cat_name": "문화시설", + }, + "리움미술관": { + "lat": 37.5383, + "lng": 126.9988, + "cat": "14", + "region": "서울", + "cat_name": "문화시설", + }, + "전쟁기념관": { + "lat": 37.5376, + "lng": 126.9770, + "cat": "14", + "region": "서울", + "cat_name": "문화시설", + }, + "동대문디자인플라자": { + "lat": 37.5669, + "lng": 127.0091, + "cat": "14", + "region": "서울", + "cat_name": "문화시설", + }, + "한강공원": { + "lat": 37.5279, + "lng": 126.9985, + "cat": "12", + "region": "서울", + "cat_name": "자연관광", + }, + "반포한강공원": { + "lat": 37.5069, + "lng": 126.9943, + "cat": "12", + "region": "서울", + "cat_name": "자연관광", + }, + "여의도한강공원": { + "lat": 37.5265, + "lng": 126.9322, + "cat": "12", + "region": "서울", + "cat_name": "자연관광", + }, + "뚝섬한강공원": { + "lat": 37.5315, + "lng": 127.0614, + "cat": "12", + "region": "서울", + "cat_name": "자연관광", + }, + "서울숲": { + "lat": 37.5445, + "lng": 127.0374, + "cat": "12", + "region": "서울", + "cat_name": "자연관광", + }, + "남산공원": { + "lat": 37.5512, + "lng": 126.9882, + "cat": "12", + "region": "서울", + "cat_name": "자연관광", + }, + "올림픽공원": { + "lat": 37.5220, + "lng": 127.1217, + "cat": "12", + "region": "서울", + "cat_name": "자연관광", + }, + "북한산": { + "lat": 37.6589, + "lng": 126.9764, + "cat": "12", + "region": "서울", + "cat_name": "자연관광", + }, + "관악산": { + "lat": 37.4443, + "lng": 126.9634, + "cat": "12", + "region": "서울", + "cat_name": "자연관광", + }, + "남산타워": { + "lat": 37.5512, + "lng": 126.9882, + "cat": "12", + "region": "서울", + "cat_name": "관광지", + }, + "N서울타워": { + "lat": 37.5512, + "lng": 126.9882, + "cat": "12", + "region": "서울", + "cat_name": "관광지", + }, + "북촌한옥마을": { + "lat": 37.5826, + "lng": 126.9830, + "cat": "12", + "region": "서울", + "cat_name": "관광지", + }, + "서촌": {"lat": 37.5809, "lng": 126.9690, "cat": "12", "region": "서울", "cat_name": "관광지"}, + "광화문광장": { + "lat": 37.5720, + "lng": 126.9768, + "cat": "12", + "region": "서울", + "cat_name": "관광지", + }, + "청계천": { + "lat": 37.5695, + "lng": 126.9784, + "cat": "12", + "region": "서울", + "cat_name": "관광지", + }, + "63빌딩": { + "lat": 37.5198, + "lng": 126.9407, + "cat": "12", + "region": "서울", + "cat_name": "관광지", + }, + "롯데월드타워": { + "lat": 37.5126, + "lng": 127.1026, + "cat": "12", + "region": "서울", + "cat_name": "관광지", + }, + "익선동": { + "lat": 37.5755, + "lng": 126.9999, + "cat": "12", + "region": "서울", + "cat_name": "관광지", + }, + "명동": {"lat": 37.5636, "lng": 126.9838, "cat": "38", "region": "서울", "cat_name": "쇼핑"}, + "인사동": {"lat": 37.5742, "lng": 126.9858, "cat": "38", "region": "서울", "cat_name": "쇼핑"}, + "동대문": {"lat": 37.5660, "lng": 127.0098, "cat": "38", "region": "서울", "cat_name": "쇼핑"}, + "코엑스": {"lat": 37.5115, "lng": 127.0596, "cat": "38", "region": "서울", "cat_name": "쇼핑"}, + "홍대": { + "lat": 37.5563, + "lng": 126.9235, + "cat": "39", + "region": "서울", + "cat_name": "음식/카페", + }, + "이태원": { + "lat": 37.5347, + "lng": 126.9940, + "cat": "39", + "region": "서울", + "cat_name": "음식/카페", + }, + "강남역": { + "lat": 37.4979, + "lng": 127.0276, + "cat": "39", + "region": "서울", + "cat_name": "음식/카페", + }, + "성수동": { + "lat": 37.5444, + "lng": 127.0558, + "cat": "39", + "region": "서울", + "cat_name": "음식/카페", + }, + "연남동": { + "lat": 37.5619, + "lng": 126.9244, + "cat": "39", + "region": "서울", + "cat_name": "음식/카페", + }, + "망원동": { + "lat": 37.5555, + "lng": 126.9094, + "cat": "39", + "region": "서울", + "cat_name": "음식/카페", + }, + "롯데월드": { + "lat": 37.5111, + "lng": 127.0985, + "cat": "15", + "region": "서울", + "cat_name": "테마파크", + }, + "서울랜드": { + "lat": 37.4277, + "lng": 127.0048, + "cat": "15", + "region": "서울", + "cat_name": "테마파크", + }, + "에버랜드": { + "lat": 37.2930, + "lng": 127.2025, + "cat": "15", + "region": "경기", + "cat_name": "테마파크", + }, + "캐리비안베이": { + "lat": 37.2930, + "lng": 127.2025, + "cat": "15", + "region": "경기", + "cat_name": "테마파크", + }, + "수원화성": { + "lat": 37.2871, + "lng": 127.0145, + "cat": "14", + "region": "경기", + "cat_name": "문화시설", + }, + "해운대해수욕장": { + "lat": 35.1586, + "lng": 129.1603, + "cat": "12", + "region": "부산", + "cat_name": "자연관광", + }, + "광안리해수욕장": { + "lat": 35.1531, + "lng": 129.1191, + "cat": "12", + "region": "부산", + "cat_name": "자연관광", + }, + "감천문화마을": { + "lat": 35.0976, + "lng": 129.0099, + "cat": "12", + "region": "부산", + "cat_name": "관광지", + }, + "태종대": { + "lat": 35.0456, + "lng": 129.0845, + "cat": "12", + "region": "부산", + "cat_name": "자연관광", + }, + "용두산공원": { + "lat": 35.1007, + "lng": 129.0324, + "cat": "12", + "region": "부산", + "cat_name": "자연관광", + }, + "자갈치시장": { + "lat": 35.0966, + "lng": 129.0302, + "cat": "38", + "region": "부산", + "cat_name": "쇼핑", + }, + "BIFF광장": { + "lat": 35.0977, + "lng": 129.0227, + "cat": "12", + "region": "부산", + "cat_name": "관광지", + }, + "센텀시티": { + "lat": 35.1693, + "lng": 129.1323, + "cat": "38", + "region": "부산", + "cat_name": "쇼핑", + }, + "제주국제공항": { + "lat": 33.5104, + "lng": 126.4926, + "cat": "14", + "region": "제주", + "cat_name": "교통", + }, + "성산일출봉": { + "lat": 33.4580, + "lng": 126.9424, + "cat": "12", + "region": "제주", + "cat_name": "자연관광", + }, + "한라산": { + "lat": 33.3617, + "lng": 126.5338, + "cat": "12", + "region": "제주", + "cat_name": "자연관광", + }, + "협재해수욕장": { + "lat": 33.3941, + "lng": 126.2397, + "cat": "12", + "region": "제주", + "cat_name": "자연관광", + }, + "함덕해수욕장": { + "lat": 33.5430, + "lng": 126.6697, + "cat": "12", + "region": "제주", + "cat_name": "자연관광", + }, + "월정리해변": { + "lat": 33.5605, + "lng": 126.7958, + "cat": "12", + "region": "제주", + "cat_name": "자연관광", + }, + "우도": { + "lat": 33.5000, + "lng": 126.9517, + "cat": "12", + "region": "제주", + "cat_name": "자연관광", + }, + "섭지코지": { + "lat": 33.4286, + "lng": 126.9283, + "cat": "12", + "region": "제주", + "cat_name": "자연관광", + }, + "김녕해수욕장": { + "lat": 33.5561, + "lng": 126.7547, + "cat": "12", + "region": "제주", + "cat_name": "자연관광", + }, + "새별오름": { + "lat": 33.3664, + "lng": 126.2931, + "cat": "12", + "region": "제주", + "cat_name": "자연관광", + }, + "산굼부리": { + "lat": 33.4279, + "lng": 126.6165, + "cat": "12", + "region": "제주", + "cat_name": "자연관광", + }, + "사려니숲길": { + "lat": 33.3726, + "lng": 126.5953, + "cat": "12", + "region": "제주", + "cat_name": "자연관광", + }, + "쇠소깍": { + "lat": 33.2419, + "lng": 126.6328, + "cat": "12", + "region": "제주", + "cat_name": "자연관광", + }, + "보롬왓": { + "lat": 33.3653, + "lng": 126.7530, + "cat": "12", + "region": "제주", + "cat_name": "자연관광", + }, + "만장굴": { + "lat": 33.5280, + "lng": 126.7720, + "cat": "12", + "region": "제주", + "cat_name": "자연관광", + }, + "올레길": { + "lat": 33.2489, + "lng": 126.5641, + "cat": "12", + "region": "제주", + "cat_name": "자연관광", + }, + "카멜리아힐": { + "lat": 33.2920, + "lng": 126.4057, + "cat": "12", + "region": "제주", + "cat_name": "자연관광", + }, + "오설록티뮤지엄": { + "lat": 33.3059, + "lng": 126.2909, + "cat": "14", + "region": "제주", + "cat_name": "문화시설", + }, + "아르떼뮤지엄": { + "lat": 33.4486, + "lng": 126.3256, + "cat": "14", + "region": "제주", + "cat_name": "문화시설", + }, + "빛의벙커": { + "lat": 33.4450, + "lng": 126.9210, + "cat": "14", + "region": "제주", + "cat_name": "문화시설", + }, + "에코랜드": { + "lat": 33.4571, + "lng": 126.7016, + "cat": "15", + "region": "제주", + "cat_name": "테마파크", + }, + "스누피가든": { + "lat": 33.5070, + "lng": 126.7250, + "cat": "15", + "region": "제주", + "cat_name": "테마파크", + }, + "아쿠아플라넷제주": { + "lat": 33.4333, + "lng": 126.9213, + "cat": "15", + "region": "제주", + "cat_name": "테마파크", + }, + "9.81파크": { + "lat": 33.3803, + "lng": 126.3020, + "cat": "15", + "region": "제주", + "cat_name": "테마파크", + }, + "동문재래시장": { + "lat": 33.5126, + "lng": 126.5291, + "cat": "38", + "region": "제주", + "cat_name": "쇼핑", + }, + "서귀포올레시장": { + "lat": 33.2489, + "lng": 126.5641, + "cat": "38", + "region": "제주", + "cat_name": "쇼핑", + }, + "불국사": { + "lat": 35.7897, + "lng": 129.3317, + "cat": "14", + "region": "경주", + "cat_name": "문화시설", + }, + "석굴암": { + "lat": 35.7953, + "lng": 129.3465, + "cat": "14", + "region": "경주", + "cat_name": "문화시설", + }, + "첨성대": { + "lat": 35.8347, + "lng": 129.2191, + "cat": "14", + "region": "경주", + "cat_name": "문화시설", + }, + "동궁과월지": { + "lat": 35.8351, + "lng": 129.2248, + "cat": "14", + "region": "경주", + "cat_name": "문화시설", + }, + "대릉원": { + "lat": 35.8364, + "lng": 129.2147, + "cat": "14", + "region": "경주", + "cat_name": "문화시설", + }, + "설악산": { + "lat": 38.1190, + "lng": 128.4654, + "cat": "12", + "region": "강원", + "cat_name": "자연관광", + }, + "오대산": { + "lat": 37.7947, + "lng": 128.5369, + "cat": "12", + "region": "강원", + "cat_name": "자연관광", + }, + "정동진": { + "lat": 37.6844, + "lng": 129.0559, + "cat": "12", + "region": "강원", + "cat_name": "자연관광", + }, # 대구 - "팔공산": {"lat": 35.9991, "lng": 128.6966, "cat": "12", "region": "대구", "cat_name": "자연관광"}, - "동성로": {"lat": 35.8664, "lng": 128.5955, "cat": "38", "region": "대구", "cat_name": "쇼핑"}, - "근대골목": {"lat": 35.8692, "lng": 128.5967, "cat": "12", "region": "대구", "cat_name": "관광지"}, - "서문시장": {"lat": 35.8688, "lng": 128.5808, "cat": "38", "region": "대구", "cat_name": "쇼핑"}, - "대구수목원": {"lat": 35.8322, "lng": 128.5307, "cat": "12", "region": "대구", "cat_name": "자연관광"}, - "김광석다시그리기길": {"lat": 35.8682, "lng": 128.6020, "cat": "12", "region": "대구", "cat_name": "관광지"}, + "팔공산": { + "lat": 35.9991, + "lng": 128.6966, + "cat": "12", + "region": "대구", + "cat_name": "자연관광", + }, + "동성로": {"lat": 35.8664, "lng": 128.5955, "cat": "38", "region": "대구", "cat_name": "쇼핑"}, + "근대골목": { + "lat": 35.8692, + "lng": 128.5967, + "cat": "12", + "region": "대구", + "cat_name": "관광지", + }, + "서문시장": { + "lat": 35.8688, + "lng": 128.5808, + "cat": "38", + "region": "대구", + "cat_name": "쇼핑", + }, + "대구수목원": { + "lat": 35.8322, + "lng": 128.5307, + "cat": "12", + "region": "대구", + "cat_name": "자연관광", + }, + "김광석다시그리기길": { + "lat": 35.8682, + "lng": 128.6020, + "cat": "12", + "region": "대구", + "cat_name": "관광지", + }, # 광주 - "무등산": {"lat": 35.1298, "lng": 126.9883, "cat": "12", "region": "광주", "cat_name": "자연관광"}, - "양림동": {"lat": 35.1410, "lng": 126.8951, "cat": "12", "region": "광주", "cat_name": "관광지"}, - "국립아시아문화전당": {"lat": 35.1456, "lng": 126.9160, "cat": "14", "region": "광주", "cat_name": "문화시설"}, - "충장로": {"lat": 35.1489, "lng": 126.9147, "cat": "38", "region": "광주", "cat_name": "쇼핑"}, + "무등산": { + "lat": 35.1298, + "lng": 126.9883, + "cat": "12", + "region": "광주", + "cat_name": "자연관광", + }, + "양림동": { + "lat": 35.1410, + "lng": 126.8951, + "cat": "12", + "region": "광주", + "cat_name": "관광지", + }, + "국립아시아문화전당": { + "lat": 35.1456, + "lng": 126.9160, + "cat": "14", + "region": "광주", + "cat_name": "문화시설", + }, + "충장로": {"lat": 35.1489, "lng": 126.9147, "cat": "38", "region": "광주", "cat_name": "쇼핑"}, # 대전 - "대전엑스포과학공원": {"lat": 36.3736, "lng": 127.3865, "cat": "12", "region": "대전", "cat_name": "관광지"}, - "유성온천": {"lat": 36.3625, "lng": 127.3367, "cat": "12", "region": "대전", "cat_name": "관광지"}, - "계룡산": {"lat": 36.3462, "lng": 127.2113, "cat": "12", "region": "충남", "cat_name": "자연관광"}, - "한밭수목원": {"lat": 36.3621, "lng": 127.3847, "cat": "12", "region": "대전", "cat_name": "자연관광"}, - "대전오월드": {"lat": 36.3090, "lng": 127.3620, "cat": "15", "region": "대전", "cat_name": "테마파크"}, + "대전엑스포과학공원": { + "lat": 36.3736, + "lng": 127.3865, + "cat": "12", + "region": "대전", + "cat_name": "관광지", + }, + "유성온천": { + "lat": 36.3625, + "lng": 127.3367, + "cat": "12", + "region": "대전", + "cat_name": "관광지", + }, + "계룡산": { + "lat": 36.3462, + "lng": 127.2113, + "cat": "12", + "region": "충남", + "cat_name": "자연관광", + }, + "한밭수목원": { + "lat": 36.3621, + "lng": 127.3847, + "cat": "12", + "region": "대전", + "cat_name": "자연관광", + }, + "대전오월드": { + "lat": 36.3090, + "lng": 127.3620, + "cat": "15", + "region": "대전", + "cat_name": "테마파크", + }, # 충북 - "단양팔경": {"lat": 36.9848, "lng": 128.3673, "cat": "12", "region": "충북", "cat_name": "자연관광"}, - "소백산": {"lat": 36.9641, "lng": 128.4743, "cat": "12", "region": "충북", "cat_name": "자연관광"}, - "청남대": {"lat": 36.4853, "lng": 127.5039, "cat": "12", "region": "충북", "cat_name": "관광지"}, + "단양팔경": { + "lat": 36.9848, + "lng": 128.3673, + "cat": "12", + "region": "충북", + "cat_name": "자연관광", + }, + "소백산": { + "lat": 36.9641, + "lng": 128.4743, + "cat": "12", + "region": "충북", + "cat_name": "자연관광", + }, + "청남대": { + "lat": 36.4853, + "lng": 127.5039, + "cat": "12", + "region": "충북", + "cat_name": "관광지", + }, } _CHOSUNG_LIST = list("ㄱㄲㄴㄷㄸㄹㅁㅂㅃㅅㅆㅇㅈㅉㅊㅋㅌㅍㅎ") -_JAMO_CHARS = set("ㄱㄲㄴㄷㄸㄹㅁㅂㅃㅅㅆㅇㅈㅉㅊㅋㅌㅍㅎㅏㅐㅑㅒㅓㅔㅕㅖㅗㅘㅙㅚㅛㅜㅝㅞㅟㅠㅡㅢㅣ") +_JAMO_CHARS = set( + "ㄱㄲㄴㄷㄸㄹㅁㅂㅃㅅㅆㅇㅈㅉㅊㅋㅌㅍㅎㅏㅐㅑㅒㅓㅔㅕㅖㅗㅘㅙㅚㅛㅜㅝㅞㅟㅠㅡㅢㅣ" +) def _extract_chosung(text: str) -> str: @@ -242,11 +854,11 @@ def _extract_chosung(text: str) -> str: def _normalize(name: str) -> str: # 1. 괄호 안 내용 제거: "한강공원(뚝섬지구)" → "한강공원" - s = re.sub(r'[\((\[【][^\))\]】]*[\))\]】]', '', name) + s = re.sub(r"[\((\[【][^\))\]】]*[\))\]】]", "", name) # 2. 지점명 분리: "스타벅스 강남점" → "스타벅스", "CGV 홍대점" → "CGV" - s = re.sub(r'\s+[가-힣]{1,5}(점|지점|본점)\s*$', '', s) + s = re.sub(r"\s+[가-힣]{1,5}(점|지점|본점)\s*$", "", s) # 3. 특수문자·공백 제거, 소문자화 - return re.sub(r'[\s·ㆍ\-\/\(\)()「」\.,]+', '', s).lower() + return re.sub(r"[\s·ㆍ\-\/\(\)()「」\.,]+", "", s).lower() def _guess_dwell(name: str) -> int: @@ -255,12 +867,30 @@ def _guess_dwell(name: str) -> int: if _normalize(key_raw) == norm: return mn hints = [ - ("공항", 60), ("시장", 60), ("카페", 60), ("마을", 60), - ("해수욕장", 90), ("해변", 90), ("오름", 90), ("숲길", 90), - ("박물관", 90), ("기념관", 90), ("미술관", 90), ("뮤지엄", 90), - ("궁", 90), ("성", 90), ("타워", 90), ("전망대", 90), ("공원", 60), - ("파크", 120), ("테마", 120), ("랜드", 120), ("산", 240), - ("호텔", 480), ("리조트", 480), ("펜션", 480), + ("공항", 60), + ("시장", 60), + ("카페", 60), + ("마을", 60), + ("해수욕장", 90), + ("해변", 90), + ("오름", 90), + ("숲길", 90), + ("박물관", 90), + ("기념관", 90), + ("미술관", 90), + ("뮤지엄", 90), + ("궁", 90), + ("성", 90), + ("타워", 90), + ("전망대", 90), + ("공원", 60), + ("파크", 120), + ("테마", 120), + ("랜드", 120), + ("산", 240), + ("호텔", 480), + ("리조트", 480), + ("펜션", 480), ] for kw, m in hints: if kw in name: @@ -275,7 +905,13 @@ def _addr_to_region(addr: str) -> str: # data/jeju_places.csv (대한민국구석구석 제주특별자치도 통합, 25,377건) 대분류코드 → 앱 카테고리 코드 _JEJU_CAT_MAP: dict[str, str] = { - "FD": "39", "AC": "32", "SH": "38", "VE": "14", "LS": "28", "EX": "12", "HS": "14", + "FD": "39", + "AC": "32", + "SH": "38", + "VE": "14", + "LS": "28", + "EX": "12", + "HS": "14", } @@ -286,7 +922,7 @@ def _parse_jeju_hours(raw: str) -> tuple[str, str] | None: return None if "24시간" in s: return "00:00", "23:59" - m = re.search(r'(\d{1,2}:\d{2})\s*~\s*(\d{1,2}:\d{2})', s) + m = re.search(r"(\d{1,2}:\d{2})\s*~\s*(\d{1,2}:\d{2})", s) return (m.group(1), m.group(2)) if m else None @@ -315,7 +951,10 @@ def _build_jeju_place_index() -> dict[str, dict]: except (ValueError, TypeError, KeyError): continue entry = { - "name": name, "lat": lat, "lng": lng, "region": "제주", + "name": name, + "lat": lat, + "lng": lng, + "region": "제주", "cat": _JEJU_CAT_MAP.get(str(row.get("대분류코드") or ""), "12"), "cat_name": row.get("대분류명") or "관광지", "addr": str(row.get("도로명주소") or "").strip(), @@ -325,9 +964,8 @@ def _build_jeju_place_index() -> dict[str, dict]: contentid = row.get("TourAPI_contentid") if contentid not in (None, ""): entry["contentid"] = str(int(contentid)) - hrs = ( - _parse_jeju_hours(str(row.get("TourAPI_영업시간") or "")) - or _parse_jeju_hours(str(row.get("영업시간") or "")) + hrs = _parse_jeju_hours(str(row.get("TourAPI_영업시간") or "")) or _parse_jeju_hours( + str(row.get("영업시간") or "") ) if hrs: entry["open_start"], entry["open_end"] = hrs @@ -434,17 +1072,19 @@ def _build_place_list(coord_index: dict[str, dict]) -> list[dict]: entry = ce break - result.append({ - "name": name, - "lat": entry["lat"] if entry else None, - "lng": entry["lng"] if entry else None, - "region": entry.get("region", "") if entry else "", - "cat": entry.get("cat", "12") if entry else "12", - "cat_name": entry.get("cat_name", "관광지") if entry else "관광지", - "annual_max": annual_max, - "has_coords": entry is not None, - "firstimage": image_index.get(norm_key, ""), - }) + result.append( + { + "name": name, + "lat": entry["lat"] if entry else None, + "lng": entry["lng"] if entry else None, + "region": entry.get("region", "") if entry else "", + "cat": entry.get("cat", "12") if entry else "12", + "cat_name": entry.get("cat_name", "관광지") if entry else "관광지", + "annual_max": annual_max, + "has_coords": entry is not None, + "firstimage": image_index.get(norm_key, ""), + } + ) result.sort(key=lambda x: -x["annual_max"]) return result @@ -474,19 +1114,21 @@ def _build_full_place_list(coord_index: dict[str, dict]) -> list[dict]: has_c = False region = _addr_to_region(row.get("addr1", "")) cat = row.get("contenttypeid", "12") - result.append({ - "name": name, - "lat": lat, - "lng": lng, - "region": region, - "cat": cat, - "cat_name": _TYPEID_LABEL.get(cat, "관광지"), - "annual_max": 0.0, - "has_coords": has_c, - "firstimage": row.get("firstimage", "").strip(), - "addr": row.get("addr1", "").strip(), - "tags": [], - }) + result.append( + { + "name": name, + "lat": lat, + "lng": lng, + "region": region, + "cat": cat, + "cat_name": _TYPEID_LABEL.get(cat, "관광지"), + "annual_max": 0.0, + "has_coords": has_c, + "firstimage": row.get("firstimage", "").strip(), + "addr": row.get("addr1", "").strip(), + "tags": [], + } + ) # 2) wellness_places.json wl_path = _DATA_DIR / "wellness_places.json" @@ -500,21 +1142,27 @@ def _build_full_place_list(coord_index: dict[str, dict]) -> list[dict]: continue seen.add(norm) try: - lat = float(item["lat"]); lng = float(item["lng"]); has_c = True + lat = float(item["lat"]) + lng = float(item["lng"]) + has_c = True except (ValueError, TypeError): - lat, lng = None, None; has_c = False - result.append({ - "name": name, - "lat": lat, "lng": lng, - "region": _addr_to_region(item.get("addr", "")), - "cat": "wellness", - "cat_name": "웰니스", - "annual_max": 0.0, - "has_coords": has_c, - "firstimage": "", - "addr": item.get("addr", "").strip(), - "tags": ["웰니스", "힐링"], - }) + lat, lng = None, None + has_c = False + result.append( + { + "name": name, + "lat": lat, + "lng": lng, + "region": _addr_to_region(item.get("addr", "")), + "cat": "wellness", + "cat_name": "웰니스", + "annual_max": 0.0, + "has_coords": has_c, + "firstimage": "", + "addr": item.get("addr", "").strip(), + "tags": ["웰니스", "힐링"], + } + ) # 3) barrier_free_places.json bf_path = _DATA_DIR / "barrier_free_places.json" @@ -528,26 +1176,36 @@ def _build_full_place_list(coord_index: dict[str, dict]) -> list[dict]: continue seen.add(norm) try: - lat = float(item["lat"]); lng = float(item["lng"]); has_c = True + lat = float(item["lat"]) + lng = float(item["lng"]) + has_c = True except (ValueError, TypeError): - lat, lng = None, None; has_c = False + lat, lng = None, None + has_c = False bf_tags = ["무장애"] - if item.get("wheelchair"): bf_tags.append("휠체어") - if item.get("elevator"): bf_tags.append("엘리베이터") - if item.get("stroller"): bf_tags.append("유모차") - if item.get("parking"): bf_tags.append("주차가능") - result.append({ - "name": name, - "lat": lat, "lng": lng, - "region": _addr_to_region(item.get("addr", "")), - "cat": "bf", - "cat_name": "무장애여행", - "annual_max": 0.0, - "has_coords": has_c, - "firstimage": "", - "addr": item.get("addr", "").strip(), - "tags": bf_tags, - }) + if item.get("wheelchair"): + bf_tags.append("휠체어") + if item.get("elevator"): + bf_tags.append("엘리베이터") + if item.get("stroller"): + bf_tags.append("유모차") + if item.get("parking"): + bf_tags.append("주차가능") + result.append( + { + "name": name, + "lat": lat, + "lng": lng, + "region": _addr_to_region(item.get("addr", "")), + "cat": "bf", + "cat_name": "무장애여행", + "annual_max": 0.0, + "has_coords": has_c, + "firstimage": "", + "addr": item.get("addr", "").strip(), + "tags": bf_tags, + } + ) return result @@ -582,12 +1240,20 @@ def _build_monthly_congestion() -> dict[str, dict[int, float]]: _seen_full = {_normalize(p["name"]) for p in _FULL_PLACE_LIST} _FULL_PLACE_LIST += [ { - "name": e["name"], "lat": e["lat"], "lng": e["lng"], - "region": e["region"], "cat": e["cat"], "cat_name": e["cat_name"], - "annual_max": 0.0, "has_coords": True, - "firstimage": "", "addr": e.get("addr", ""), "tags": [], + "name": e["name"], + "lat": e["lat"], + "lng": e["lng"], + "region": e["region"], + "cat": e["cat"], + "cat_name": e["cat_name"], + "annual_max": 0.0, + "has_coords": True, + "firstimage": "", + "addr": e.get("addr", ""), + "tags": [], } - for k, e in _JEJU_CSV_INDEX.items() if k not in _seen_full + for k, e in _JEJU_CSV_INDEX.items() + if k not in _seen_full ] _MONTHLY_CONG: dict[str, dict[int, float]] = _build_monthly_congestion() # 이름 정규화 → place dict 역방향 인덱스 @@ -688,17 +1354,25 @@ def _resolve_poi(name: str, idx: int, address: str = "") -> tuple[POI, POIInfo]: poi = POI( poi_id=f"web_{idx:04d}", - name=name, lat=lat, lng=lng, - open_start=open_start, open_end=open_end, - duration_min=dwell, category=category, + name=name, + lat=lat, + lng=lng, + open_start=open_start, + open_end=open_end, + duration_min=dwell, + category=category, hours_estimated=hours_estimated, pet_friendly=pet_friendly, ) info = POIInfo( - name=name, found=(confidence != "Low"), source=source, + name=name, + found=(confidence != "Low"), + source=source, confidence=confidence, - lat=lat, lng=lng, - open_start=open_start, open_end=open_end, + lat=lat, + lng=lng, + open_start=open_start, + open_end=open_end, duration_min=dwell, hours_estimated=hours_estimated, graph_region=graph_region, @@ -730,8 +1404,12 @@ def _get_pipeline() -> ValidatorPipeline: @router.get("/places", response_model=PlacesResponse) async def list_places( - q: str = "", region: str = "", extended: bool = False, cat: str = "", - offset: int = 0, limit: int = 2000, + q: str = "", + region: str = "", + extended: bool = False, + cat: str = "", + offset: int = 0, + limit: int = 2000, ) -> PlacesResponse: """등록 장소 목록. q=검색어, region=지역 필터, cat=카테고리 코드, extended=전체DB 초기 로드. @@ -769,17 +1447,21 @@ async def list_places( if cat and cat not in ("all", "fav") and code != cat: continue existing.add(nm) - filtered = filtered + [{ - "name": kp.name, - "region": kp_region, - "cat": code, - "cat_name": (kp.category_name.split(">")[-1].strip() if kp.category_name else "장소"), - "has_coords": True, - "annual_max": 0.0, - "firstimage": "", - "addr": kp.address, - "tags": ["카카오"], - }] + filtered = filtered + [ + { + "name": kp.name, + "region": kp_region, + "cat": code, + "cat_name": ( + kp.category_name.split(">")[-1].strip() if kp.category_name else "장소" + ), + "has_coords": True, + "annual_max": 0.0, + "firstimage": "", + "addr": kp.address, + "tags": ["카카오"], + } + ] total_count = len(filtered) page_size = min(limit, 2000) if use_full else total_count @@ -818,12 +1500,15 @@ async def monthly_congestion(name: str) -> dict: async def list_regions() -> dict: """지역별 장소 수 통계.""" from collections import Counter + counts: Counter[str] = Counter() for p in _FULL_PLACE_LIST: r = p.get("region") or "기타" if r: counts[r] += 1 - return {"regions": [{"name": k, "count": v} for k, v in sorted(counts.items(), key=lambda x: -x[1])]} + return { + "regions": [{"name": k, "count": v} for k, v in sorted(counts.items(), key=lambda x: -x[1])] + } @router.post("/parse/text", response_model=ParsedPlanResponse) @@ -836,7 +1521,7 @@ async def parse_text(req: ParseTextRequest) -> ParsedPlanResponse: @router.post("/parse/document", response_model=ParsedPlanResponse) -async def parse_document(file: UploadFile = File(...)) -> ParsedPlanResponse: +async def parse_document(file: UploadFile) -> ParsedPlanResponse: """AI 플래너 결과 PDF·스크린샷(PNG/JPG) → Claude Vision으로 day/place 구조 추출.""" media_type = _ALLOWED_DOC_TYPES.get((file.content_type or "").lower()) if media_type is None: @@ -884,6 +1569,20 @@ async def validate_plan(req: ValidateRequest) -> ValidateResponse: ) ) + unresolved = [ + name + for (_, name, _), (_poi, info) in zip(flat_places, resolved, strict=True) + if not info.found + ] + if unresolved: + raise HTTPException( + status_code=422, + detail={ + "message": "좌표를 확인할 수 없는 장소가 있습니다.", + "places": unresolved, + }, + ) + per_day_pois: list[list[POI]] = [[] for _ in req.days] poi_info_list: list[POIInfo] = [] for (day_idx, _, _addr), (poi, info) in zip(flat_places, resolved, strict=True): @@ -892,22 +1591,23 @@ async def validate_plan(req: ValidateRequest) -> ValidateResponse: poi_info_list.append(info) plan = ItineraryPlan( - days=[ - DayPlan(places=[PlaceInput(name=p.name) for p in day.places]) - for day in req.days - ], + days=[DayPlan(places=[PlaceInput(name=p.name) for p in day.places]) for day in req.days], party_size=req.party_size, party_type=req.party_type, travel_type=req.travel_type, date=req.date, + start_time=req.start_time, ) + all_pois = [poi for day in per_day_pois for poi in day] + await _ROUTE_MATRIX.prepare(all_pois) result = await asyncio.to_thread( _get_pipeline().run, plan=plan, per_day_pois=per_day_pois, - matrix={}, + matrix=_ROUTE_MATRIX, pet_friendly_enabled=req.pet_friendly, + time_matrix=_ROUTE_MATRIX, ) if result.wellness_matched: @@ -926,10 +1626,40 @@ async def validate_plan(req: ValidateRequest) -> ValidateResponse: except (IndexError, ValueError): travel_month = 5 - MONTH_NAMES = {1:"1월",2:"2월",3:"3월",4:"4월",5:"5월",6:"6월", - 7:"7월",8:"8월",9:"9월",10:"10월",11:"11월",12:"12월"} + MONTH_NAMES = { + 1: "1월", + 2: "2월", + 3: "3월", + 4: "4월", + 5: "5월", + 6: "6월", + 7: "7월", + 8: "8월", + 9: "9월", + 10: "10월", + 11: "11월", + 12: "12월", + } for info in poi_info_list: + live_congestion = _CONGESTION_ENGINE.score(info.name, travel_month) + if live_congestion.fallback_used == "seoul_realtime": + if live_congestion.congestion_score >= 0.65: + congestion_warnings.append( + { + "poi_name": info.name, + "month": travel_month, + "level": live_congestion.level.value.lower(), + "ratio": round(live_congestion.congestion_score, 2), + "message": ( + f"서울 실시간 혼잡도는 {live_congestion.level.value} 수준이에요. " + "가능하면 이른 방문을 추천해요." + ), + "best_month": None, + "source": "seoul_realtime", + } + ) + continue monthly = _MONTHLY_CONG.get(info.name) if not monthly: continue @@ -937,7 +1667,6 @@ async def validate_plan(req: ValidateRequest) -> ValidateResponse: if not score: continue max_score = max(monthly.values()) - min_score = min(monthly.values()) if max_score <= 0: continue ratio = score / max_score @@ -945,20 +1674,22 @@ async def validate_plan(req: ValidateRequest) -> ValidateResponse: if ratio >= 0.85: level = "high" if ratio >= 0.95 else "medium" best_month = min(monthly, key=monthly.get) - congestion_warnings.append({ - "poi_name": info.name, - "month": travel_month, - "level": level, - "ratio": round(ratio, 2), - "message": ( - f"{MONTH_NAMES[travel_month]}은 연중 가장 붐비는 시기예요. " - f"예약이나 이른 방문을 추천해요." - if level == "high" else - f"{MONTH_NAMES[travel_month]}은 사람이 꽤 많은 편이에요. " - f"여유 있게 시간을 잡으세요." - ), - "best_month": best_month, - }) + congestion_warnings.append( + { + "poi_name": info.name, + "month": travel_month, + "level": level, + "ratio": round(ratio, 2), + "message": ( + f"{MONTH_NAMES[travel_month]}은 연중 가장 붐비는 시기예요. " + f"예약이나 이른 방문을 추천해요." + if level == "high" + else f"{MONTH_NAMES[travel_month]}은 사람이 꽤 많은 편이에요. " + f"여유 있게 시간을 잡으세요." + ), + "best_month": best_month, + } + ) return ValidateResponse( plan_id=result.plan_id, @@ -981,7 +1712,8 @@ async def validate_plan(req: ValidateRequest) -> ValidateResponse: repair_suggestions=result.repair or None, optimal_route=( [r.model_dump() for r in result.vrptw_optimal_route] - if result.vrptw_optimal_route else None + if result.vrptw_optimal_route + else None ), vrptw_efficiency_gap=result.vrptw_efficiency_gap, congestion_warnings=congestion_warnings, diff --git a/src/api/schemas.py b/src/api/schemas.py index 3e5f765..9b28e45 100644 --- a/src/api/schemas.py +++ b/src/api/schemas.py @@ -1,24 +1,35 @@ """API 요청/응답 Pydantic 스키마.""" + from __future__ import annotations -from typing import Literal, Optional +from typing import Literal + +from pydantic import BaseModel, Field, field_validator -from pydantic import BaseModel +from src.data.models import _validate_hhmm, _validate_iso_date class PlaceInputWeb(BaseModel): - name: str + name: str = Field(min_length=1, max_length=200) address: str = "" + @field_validator("name") + @classmethod + def validate_name(cls, v: str) -> str: + value = v.strip() + if not value: + raise ValueError("place name must not be blank") + return value + class DayPlanWeb(BaseModel): - places: list[PlaceInputWeb] + places: list[PlaceInputWeb] = Field(min_length=1, max_length=8) class POIInfo(BaseModel): name: str found: bool - source: str # "catalog" | "pois" | "fallback" + source: str # "catalog" | "pois" | "fallback" confidence: Literal["High", "Medium", "Low"] = "Medium" lat: float lng: float @@ -52,14 +63,24 @@ class PlacesResponse(BaseModel): class ValidateRequest(BaseModel): - days: list[DayPlanWeb] + days: list[DayPlanWeb] = Field(min_length=1, max_length=30) party_size: Literal[1, 2, 3, 4, 5] = 2 party_type: Literal["혼자", "친구", "연인", "가족", "아기동반", "어르신동반"] = "친구" - travel_type: Optional[Literal["cultural", "nature", "shopping", "food", "adventure"]] = None + travel_type: Literal["cultural", "nature", "shopping", "food", "adventure"] | None = None date: str = "2026-05-10" start_time: str = "09:00" pet_friendly: bool = False + @field_validator("date") + @classmethod + def validate_date(cls, v: str) -> str: + return _validate_iso_date(v) + + @field_validator("start_time") + @classmethod + def validate_start_time(cls, v: str) -> str: + return _validate_hhmm(v, "start_time") + class ParseTextRequest(BaseModel): text: str @@ -87,14 +108,14 @@ class ValidateResponse(BaseModel): data_reliability_score: int = 0 hard_fails: list[dict] warnings: list[dict] - scores: Optional[dict] = None + scores: dict | None = None explanations: list[dict] = [] penalty_breakdown: dict[str, int] bonus_breakdown: dict[str, int] rewards: list[str] alternatives: dict[str, list[dict]] = {} poi_info: list[POIInfo] - repair_suggestions: Optional[dict] = None - optimal_route: Optional[list[dict]] = None - vrptw_efficiency_gap: Optional[float] = None + repair_suggestions: dict | None = None + optimal_route: list[dict] | None = None + vrptw_efficiency_gap: float | None = None congestion_warnings: list[dict] = [] diff --git a/src/api/security.py b/src/api/security.py new file mode 100644 index 0000000..e0750c7 --- /dev/null +++ b/src/api/security.py @@ -0,0 +1,66 @@ +"""API 요청 보호: 환경 기반 인증과 프로세스 로컬 레이트리밋.""" + +from __future__ import annotations + +import secrets +import time +from collections import defaultdict, deque +from threading import Lock + +from fastapi import Request +from fastapi.responses import JSONResponse + +from src.data.models import Settings + + +class InMemoryRateLimiter: + """단일 프로세스 개발/소규모 배포용 sliding-window 제한기.""" + + def __init__(self) -> None: + self._hits: defaultdict[str, deque[float]] = defaultdict(deque) + self._lock = Lock() + + def allow(self, key: str, limit: int, window_seconds: float = 60.0) -> bool: + now = time.monotonic() + with self._lock: + hits = self._hits[key] + while hits and now - hits[0] >= window_seconds: + hits.popleft() + if len(hits) >= limit: + return False + hits.append(now) + return True + + +_LIMITER = InMemoryRateLimiter() +_PROTECTED_PATHS = {"/api/parse/text", "/api/parse/document", "/api/validate"} + + +def _client_key(request: Request) -> str: + return request.client.host if request.client else "unknown" + + +async def security_middleware(request: Request, call_next): + """비용이 큰 API를 인증하고, 모든 API 요청에 기본 레이트리밋을 적용한다.""" + path = request.url.path + if path.startswith("/api/") and request.method != "OPTIONS": + settings = Settings() + protected = path in _PROTECTED_PATHS + token_required = settings.environment.lower() == "production" or bool( + settings.api_auth_token.strip() + ) + if protected and token_required: + authorization = request.headers.get("Authorization", "") + supplied = authorization.removeprefix("Bearer ").strip() + expected = settings.api_auth_token.strip() + if not expected or not secrets.compare_digest(supplied, expected): + return JSONResponse({"detail": "인증이 필요합니다."}, status_code=401) + + limit = 5 if path == "/api/parse/document" else 30 if protected else 60 + if not _LIMITER.allow(f"{_client_key(request)}:{path}", limit): + return JSONResponse( + {"detail": "요청이 너무 많습니다. 잠시 후 다시 시도하세요."}, + status_code=429, + headers={"Retry-After": "60"}, + ) + return await call_next(request) diff --git a/src/api/static/index.html b/src/api/static/index.html index a22acb3..22e54e5 100644 --- a/src/api/static/index.html +++ b/src/api/static/index.html @@ -3141,7 +3141,11 @@

데이터 라이선스

// Repair var rep=d.repair_suggestions; if(rep&&!isRepEmpty(rep)){ - html+='

이렇게 바꿔보면 어떨까요?

'; + var repCount=(rep.reorders||[]).length+(rep.time_tunes||[]).length+(rep.deletions||[]).length; + var repTotalGain=rep.total_estimated_gain||0; + html+='

이렇게 바꿔보면 어떨까요?

'+ + (repCount>1&&repTotalGain>0?'전부 적용 시 +'+repTotalGain+'점 예상':'')+ + '
'; (rep.reorders||[]).forEach(function(ro){ var firstPoi=(ro.suggested_order||[])[0]; html+='
'+ diff --git a/src/data/barrier_free_api.py b/src/data/barrier_free_api.py index c910da1..2928ae6 100644 --- a/src/data/barrier_free_api.py +++ b/src/data/barrier_free_api.py @@ -6,6 +6,7 @@ 참고: 한국관광공사_개방데이터_활용매뉴얼(무장애여행)_v4.3 """ + from __future__ import annotations from dataclasses import dataclass @@ -16,32 +17,34 @@ from src.data.models import Settings _BASE_URL = "https://apis.data.go.kr/B551011/KorWithService2" -_LIST_OP = "areaBasedList2" # 지역기반 목록 조회 -_DETAIL_OP = "detailWithTour2" # 무장애여행 상세 조회 +_LIST_OP = "areaBasedList2" # 지역기반 목록 조회 +_DETAIL_OP = "detailWithTour2" # 무장애여행 상세 조회 @dataclass(frozen=True) class BarrierFreePlace: """areaBasedList2 기반 기본 POI + detailWithTour2 접근성 세부 항목.""" + content_id: str title: str addr: str - lat: float # mapy (WGS84 위도) - lng: float # mapx (WGS84 경도) + lat: float # mapy (WGS84 위도) + lng: float # mapx (WGS84 경도) # ── detailWithTour2 지체장애 항목 (선택 보강) ────────────────── - wheelchair: str = "" # 휠체어 대여/접근 여부 (텍스트, 예: "대여가능(수동휠체어 2대)") - elevator: str = "" # 엘리베이터 여부 (텍스트) - parking: str = "" # 장애인 주차 여부 (텍스트) + wheelchair: str = "" # 휠체어 대여/접근 여부 (텍스트, 예: "대여가능(수동휠체어 2대)") + elevator: str = "" # 엘리베이터 여부 (텍스트) + parking: str = "" # 장애인 주차 여부 (텍스트) # ── detailWithTour2 영유아가족 항목 ───────────────────────────── - stroller: str = "" # 유모차 여부 (텍스트) + stroller: str = "" # 유모차 여부 (텍스트) lactation_room: str = "" # 수유실 여부 (텍스트) # ── detailWithTour2 시각장애 항목 ─────────────────────────────── - help_dog: str = "" # 보조견 동반 여부 (텍스트) + help_dog: str = "" # 보조견 동반 여부 (텍스트) @dataclass(frozen=True) class BarrierFreeDetail: """detailWithTour2 응답 전체 필드 (필요 시 개별 조회용).""" + content_id: str # 지체장애 parking: str = "" @@ -101,7 +104,7 @@ def __init__(self, api_key: str, timeout_sec: float = 10.0) -> None: self._timeout = timeout_sec @classmethod - def from_settings(cls, settings: Settings | None = None) -> "BarrierFreeAPIClient | None": + def from_settings(cls, settings: Settings | None = None) -> BarrierFreeAPIClient | None: if settings is None: settings = Settings() key = settings.barrier_free_api_key @@ -151,13 +154,15 @@ async def fetch_page( lng = _safe_float(item.get("mapx") or item.get("lng")) if not content_id or lat == 0.0 or lng == 0.0: continue - places.append(BarrierFreePlace( - content_id=content_id, - title=title, - addr=addr, - lat=lat, - lng=lng, - )) + places.append( + BarrierFreePlace( + content_id=content_id, + title=title, + addr=addr, + lat=lat, + lng=lng, + ) + ) return places async def fetch_detail(self, content_id: str) -> BarrierFreeDetail | None: diff --git a/src/data/dwell_db.py b/src/data/dwell_db.py index e942df6..3df655c 100644 --- a/src/data/dwell_db.py +++ b/src/data/dwell_db.py @@ -9,6 +9,7 @@ 사용자가 입력한 stay_duration이 권장 min의 50% 미만이면 비현실적으로 짧은 일정으로 간주. """ + from __future__ import annotations from dataclasses import dataclass @@ -20,6 +21,7 @@ @dataclass(frozen=True) class DwellRecommendation: """권장 체류시간 (분 단위).""" + min_minutes: int max_minutes: int source: DwellSource @@ -106,25 +108,25 @@ def is_too_short(self, user_minutes: int, ratio: float = 0.5) -> bool: "NA0101": (180, 480), # 국립공원 "NA0201": (120, 360), # 도립공원 "NA0401": (180, 480), # 산 - "NA0501": (90, 180), # 자연생태관광지 + "NA0501": (90, 180), # 자연생태관광지 "NA0601": (120, 240), # 자연휴양림 - "NA0701": (90, 150), # 수목원 - "NA0801": (45, 90), # 폭포 - "NA0901": (60, 120), # 계곡 - "NA1101": (60, 120), # 해안절경 - "NA1201": (90, 240), # 해수욕장 + "NA0701": (90, 150), # 수목원 + "NA0801": (45, 90), # 폭포 + "NA0901": (60, 120), # 계곡 + "NA1101": (60, 120), # 해안절경 + "NA1201": (90, 240), # 해수욕장 "NA1301": (240, 480), # 섬 # 인문관광지 (VE) - "VE0101": (90, 180), # 박물관 - "VE0201": (60, 120), # 기념관 - "VE0301": (60, 120), # 전시관 - "VE0401": (90, 180), # 미술관 - "VE0501": (90, 180), # 체험관 - "VE0701": (60, 120), # 기타문화시설 + "VE0101": (90, 180), # 박물관 + "VE0201": (60, 120), # 기념관 + "VE0301": (60, 120), # 전시관 + "VE0401": (90, 180), # 미술관 + "VE0501": (90, 180), # 체험관 + "VE0701": (60, 120), # 기타문화시설 # 역사관광지 (HS) - "HS0101": (90, 150), # 고궁 - "HS0201": (60, 120), # 사찰 - "HS0301": (60, 120), # 유적지 + "HS0101": (90, 150), # 고궁 + "HS0201": (60, 120), # 사찰 + "HS0301": (60, 120), # 유적지 # 레포츠 (EX) "EX0101": (180, 360), # 육상레포츠 "EX0201": (120, 240), # 수상레포츠 @@ -132,45 +134,45 @@ def is_too_short(self, user_minutes: int, ratio: float = 0.5) -> bool: "EX0401": (240, 480), # 복합레포츠 "EX2101": (300, 600), # 테마파크 (추정 코드) # 음식점 (FD) - "FD0101": (45, 75), # 한식 - "FD0102": (45, 75), # 양식 - "FD0103": (45, 75), # 일식 - "FD0104": (45, 75), # 중식 - "FD0201": (30, 60), # 카페 - "FD0202": (30, 60), # 카페·전통찻집 + "FD0101": (45, 75), # 한식 + "FD0102": (45, 75), # 양식 + "FD0103": (45, 75), # 일식 + "FD0104": (45, 75), # 중식 + "FD0201": (30, 60), # 카페 + "FD0202": (30, 60), # 카페·전통찻집 # 쇼핑 (SH) - "SH0101": (45, 90), # 5일장·전통시장 - "SH0201": (60, 180), # 백화점 - "SH0301": (60, 120), # 면세점 - "SH0401": (60, 120), # 대형마트 + "SH0101": (45, 90), # 5일장·전통시장 + "SH0201": (60, 180), # 백화점 + "SH0301": (60, 120), # 면세점 + "SH0401": (60, 120), # 대형마트 # 숙박 (AC) — depot이라 체류시간 의미 없음, 형식상 정의 - "AC0101": (0, 0), # 호텔 - "AC0301": (0, 0), # 한옥 + "AC0101": (0, 0), # 호텔 + "AC0301": (0, 0), # 한옥 } # ── 3순위: lclsSystm1 (1-depth 대분류) 기반 ────────────────────────── BY_LCLS1: dict[str, tuple[int, int]] = { - "NA": (90, 240), # 자연관광지 - "VE": (75, 150), # 인문관광지 - "HS": (60, 120), # 역사관광지 + "NA": (90, 240), # 자연관광지 + "VE": (75, 150), # 인문관광지 + "HS": (60, 120), # 역사관광지 "EX": (180, 360), # 레포츠 - "FD": (45, 75), # 음식점 - "SH": (60, 120), # 쇼핑 - "AC": (0, 0), # 숙박 + "FD": (45, 75), # 음식점 + "SH": (60, 120), # 쇼핑 + "AC": (0, 0), # 숙박 } # ── 4순위: contentTypeId 기반 ───────────────────────────────────────── BY_CONTENT_TYPE: dict[int, tuple[int, int]] = { - 12: (90, 150), # 관광지 - 14: (90, 150), # 문화시설 - 15: (120, 240), # 축제공연행사 - 25: (480, 720), # 여행코스 (하루 단위) - 28: (180, 360), # 레포츠 - 32: (0, 0), # 숙박 - 38: (60, 120), # 쇼핑 - 39: (45, 75), # 음식점 + 12: (90, 150), # 관광지 + 14: (90, 150), # 문화시설 + 15: (120, 240), # 축제공연행사 + 25: (480, 720), # 여행코스 (하루 단위) + 28: (180, 360), # 레포츠 + 32: (0, 0), # 숙박 + 38: (60, 120), # 쇼핑 + 39: (45, 75), # 음식점 } diff --git a/src/data/evidence_retriever.py b/src/data/evidence_retriever.py new file mode 100644 index 0000000..ac8e22b --- /dev/null +++ b/src/data/evidence_retriever.py @@ -0,0 +1,94 @@ +"""로컬 장소 근거 리트리버. + +검증 요청이 외부 그래프 서버에 의존하지 않도록 배포물의 장소 CSV를 인덱싱한다. +장소 검색과 좌표 기반 근접 대안 조회를 같은 데이터 레이어에서 제공한다. +""" + +from __future__ import annotations + +import csv +from pathlib import Path + +from src.data.models import AlternativePOI, PlaceEvidence +from src.utils.geo import haversine_km + +_PROJECT_ROOT = Path(__file__).resolve().parents[2] +_DEFAULT_CSV = _PROJECT_ROOT / "data" / "jeju_places.csv" + + +class LocalEvidenceRetriever: + """장소명 검색과 근접 대안 조회를 제공하는 로컬 리트리버.""" + + def __init__(self, catalog_path: str | Path | None = None) -> None: + self._catalog_path = Path(catalog_path or _DEFAULT_CSV) + self._places = self._load_places() + self._by_id = {place.place_id: place for place in self._places} + self.enabled = bool(self._places) + + def _load_places(self) -> list[PlaceEvidence]: + if not self._catalog_path.exists(): + return [] + places: list[PlaceEvidence] = [] + try: + with self._catalog_path.open(encoding="utf-8-sig", newline="") as file: + for row in csv.DictReader(file): + try: + name = (row.get("상호명") or row.get("name") or "").strip() + if not name: + continue + address = (row.get("도로명주소") or row.get("address") or "").strip() + places.append( + PlaceEvidence( + place_id=(row.get("ID") or row.get("id") or name).strip(), + name=name, + place_type=( + row.get("대분류") or row.get("place_type") or "" + ).strip(), + category_name=( + row.get("중분류명") or row.get("카테고리") or "" + ).strip(), + region_name=" ".join(address.split()[:2]), + address=address, + lat=float(row.get("위도") or row.get("lat") or 0), + lng=float(row.get("경도") or row.get("lng") or 0), + ) + ) + except (TypeError, ValueError): + continue + except (OSError, UnicodeError): + return [] + return places + + @classmethod + def from_settings(cls, catalog_path: str | Path | None = None) -> LocalEvidenceRetriever: + """설정 기반 생성자. 외부 환경변수나 네트워크를 읽지 않는다.""" + return cls(catalog_path=catalog_path) + + def search_places(self, query: str, limit: int = 5) -> list[PlaceEvidence]: + query = (query or "").strip().casefold() + if not query or limit <= 0: + return [] + matches = [place for place in self._places if query in place.name.casefold()] + return sorted( + matches, + key=lambda place: (place.name.casefold() != query, len(place.name)), + )[:limit] + + def find_nearby(self, place_id: str, limit: int = 5) -> list[AlternativePOI]: + origin = self._by_id.get(place_id) + if origin is None or limit <= 0: + return [] + candidates = [place for place in self._places if place.place_id != place_id] + candidates.sort( + key=lambda place: haversine_km(origin.lat, origin.lng, place.lat, place.lng) + ) + return [ + AlternativePOI( + name=place.name, + distance_km=round(haversine_km(origin.lat, origin.lng, place.lat, place.lng), 3), + category=place.category_name, + lat=place.lat, + lng=place.lng, + ) + for place in candidates[:limit] + ] diff --git a/src/data/graph_retriever.py b/src/data/graph_retriever.py deleted file mode 100644 index e0237da..0000000 --- a/src/data/graph_retriever.py +++ /dev/null @@ -1,131 +0,0 @@ -"""Neo4j 지식그래프 리트리버 — Place/Region/NEAR_BY 그래프에서 근거 조회. - -scripts/build_knowledge_graph.py + scripts/load_knowledge_graph_neo4j.py로 적재한 -제주도 그래프(Aura)에서 장소명으로 검색하고, 도보 근접 대체 후보를 조회한다. -explain 엔진이 답변에 인용할 그라운딩 소스. - -CLAUDE.md 규칙: - - 외부 I/O는 data 레이어에서만 처리한다. - - 키는 환경변수로만 관리한다. - - 모듈 간 데이터는 Pydantic 모델(PlaceEvidence, AlternativePOI)로만 주고받는다. -""" -from __future__ import annotations - -import os -import time - -from neo4j import GraphDatabase -from neo4j.exceptions import DriverError, Neo4jError - -from src.data.models import AlternativePOI, PlaceEvidence - -_UNREACHABLE_COOLDOWN_SEC = 60.0 - -_SEARCH_CYPHER = """ -MATCH (p:Place) -WHERE toLower(p.name) CONTAINS toLower($q) -OPTIONAL MATCH (p)-[:IS_LOCATED_IN]->(r:Region) -RETURN p.id AS id, p.name AS name, p.place_type AS place_type, - p.category_medium_name AS category_name, p.address AS address, - p.lat AS lat, p.lng AS lng, r.name AS region_name -ORDER BY toLower(p.name) <> toLower($q), size(p.name) -LIMIT $limit -""" - -_NEARBY_CYPHER = """ -MATCH (p:Place {id: $place_id})-[rel:NEAR_BY]->(n:Place) -RETURN n.name AS name, n.category_medium_name AS category, - n.lat AS lat, n.lng AS lng, rel.distance_m AS distance_m -ORDER BY rel.distance_m -LIMIT $limit -""" - - -class GraphRetriever: - """제주 지식그래프(Neo4j Aura) 리트리버. 미설정/연결 실패 시 빈 결과로 폴백.""" - - def __init__(self, uri: str, username: str, password: str, database: str = "neo4j") -> None: - self._database = database - self._driver = ( - GraphDatabase.driver( - uri, - auth=(username, password), - connection_timeout=5.0, - max_transaction_retry_time=5.0, - ) - if uri - else None - ) - self._unreachable_until = 0.0 - - @classmethod - def from_env(cls) -> GraphRetriever: - return cls( - uri=os.environ.get("NEO4J_URI", ""), - username=os.environ.get("NEO4J_USERNAME", ""), - password=os.environ.get("NEO4J_PASSWORD", ""), - database=os.environ.get("NEO4J_DATABASE", "neo4j"), - ) - - @property - def enabled(self) -> bool: - return self._driver is not None - - def _callable(self) -> bool: - """호출 가능 여부. 최근 연결 실패 시 쿨다운 동안 재시도 백오프 비용 없이 즉시 빈 결과로 넘긴다.""" - return self.enabled and time.monotonic() >= self._unreachable_until - - def _mark_unreachable(self) -> None: - self._unreachable_until = time.monotonic() + _UNREACHABLE_COOLDOWN_SEC - - def close(self) -> None: - if self._driver is not None: - self._driver.close() - - def search_places(self, query: str, limit: int = 5) -> list[PlaceEvidence]: - """장소명 부분일치 검색 — Region 컨텍스트 포함.""" - q = (query or "").strip() - if not q or not self._callable(): - return [] - try: - result = self._driver.execute_query( - _SEARCH_CYPHER, q=q, limit=limit, database_=self._database - ) - except (Neo4jError, DriverError): - self._mark_unreachable() - return [] - return [ - PlaceEvidence( - place_id=rec["id"], - name=rec["name"], - place_type=rec["place_type"] or "", - category_name=rec["category_name"] or "", - region_name=rec["region_name"] or "", - address=rec["address"] or "", - lat=rec["lat"], - lng=rec["lng"], - ) - for rec in result.records - ] - - def find_nearby(self, place_id: str, limit: int = 5) -> list[AlternativePOI]: - """NEAR_BY 그래프에서 도보 근접 대체 후보 조회 (거리순).""" - if not place_id or not self._callable(): - return [] - try: - result = self._driver.execute_query( - _NEARBY_CYPHER, place_id=place_id, limit=limit, database_=self._database - ) - except (Neo4jError, DriverError): - self._mark_unreachable() - return [] - return [ - AlternativePOI( - name=rec["name"], - distance_km=round(rec["distance_m"] / 1000, 3), - category=rec["category"] or "", - lat=rec["lat"], - lng=rec["lng"], - ) - for rec in result.records - ] diff --git a/src/data/hours_db.py b/src/data/hours_db.py index 3cd10d8..9f015b2 100644 --- a/src/data/hours_db.py +++ b/src/data/hours_db.py @@ -5,7 +5,9 @@ spec = resolve_hours("경복궁", "관광지") # spec.open_, spec.close_, spec.off_days, spec.break_start, spec.break_end """ + from __future__ import annotations + import re from dataclasses import dataclass, field @@ -16,229 +18,337 @@ class HoursSpec: open_: str close_: str break_start: str | None = None - break_end: str | None = None - off_days: list[int] = field(default_factory=list) # 0=월, ..., 6=일 + break_end: str | None = None + off_days: list[int] = field(default_factory=list) # 0=월, ..., 6=일 # ── 카테고리 표준값 (category_hours.xlsx 와 동기화) ────────── SUB_CATEGORIES: dict[str, HoursSpec] = { "nature_outdoor": HoursSpec( - label='자연 · 산·해변·공원', - open_='00:00', close_='23:59', - break_start=None, break_end=None, + label="자연 · 산·해변·공원", + open_="00:00", + close_="23:59", + break_start=None, + break_end=None, off_days=[], ), "palace": HoursSpec( - label='궁궐 · 종묘', - open_='09:00', close_='18:00', - break_start=None, break_end=None, + label="궁궐 · 종묘", + open_="09:00", + close_="18:00", + break_start=None, + break_end=None, off_days=[1], ), "tomb_historic": HoursSpec( - label='왕릉 · 유적지 · 성곽', - open_='09:00', close_='18:00', - break_start=None, break_end=None, + label="왕릉 · 유적지 · 성곽", + open_="09:00", + close_="18:00", + break_start=None, + break_end=None, off_days=[0], ), "temple": HoursSpec( - label='사찰 · 사찰림', - open_='04:00', close_='19:00', - break_start=None, break_end=None, + label="사찰 · 사찰림", + open_="04:00", + close_="19:00", + break_start=None, + break_end=None, off_days=[], ), "traditional_village": HoursSpec( - label='한옥마을 · 민속촌', - open_='09:00', close_='18:00', - break_start=None, break_end=None, + label="한옥마을 · 민속촌", + open_="09:00", + close_="18:00", + break_start=None, + break_end=None, off_days=[], ), "street_plaza": HoursSpec( - label='거리 · 광장 · 골목', - open_='00:00', close_='23:59', - break_start=None, break_end=None, + label="거리 · 광장 · 골목", + open_="00:00", + close_="23:59", + break_start=None, + break_end=None, off_days=[], ), "market_traditional": HoursSpec( - label='전통시장', - open_='09:00', close_='21:00', - break_start=None, break_end=None, + label="전통시장", + open_="09:00", + close_="21:00", + break_start=None, + break_end=None, off_days=[], ), "market_seafood": HoursSpec( - label='수산시장', - open_='04:00', close_='21:00', - break_start=None, break_end=None, + label="수산시장", + open_="04:00", + close_="21:00", + break_start=None, + break_end=None, off_days=[], ), "night_market": HoursSpec( - label='야시장', - open_='18:00', close_='23:00', - break_start=None, break_end=None, + label="야시장", + open_="18:00", + close_="23:00", + break_start=None, + break_end=None, off_days=[], ), "tower_observatory": HoursSpec( - label='타워 · 전망대', - open_='10:00', close_='22:00', - break_start=None, break_end=None, + label="타워 · 전망대", + open_="10:00", + close_="22:00", + break_start=None, + break_end=None, off_days=[], ), "museum": HoursSpec( - label='박물관 · 미술관 · 기념관', - open_='10:00', close_='18:00', - break_start=None, break_end=None, + label="박물관 · 미술관 · 기념관", + open_="10:00", + close_="18:00", + break_start=None, + break_end=None, off_days=[0], ), "library_culture_center": HoursSpec( - label='도서관 · 문화회관', - open_='09:00', close_='21:00', - break_start=None, break_end=None, + label="도서관 · 문화회관", + open_="09:00", + close_="21:00", + break_start=None, + break_end=None, off_days=[0], ), "theme_park": HoursSpec( - label='테마파크 · 놀이공원', - open_='10:00', close_='22:00', - break_start=None, break_end=None, + label="테마파크 · 놀이공원", + open_="10:00", + close_="22:00", + break_start=None, + break_end=None, off_days=[], ), "aquarium_zoo": HoursSpec( - label='수족관 · 동물원', - open_='09:30', close_='18:00', - break_start=None, break_end=None, + label="수족관 · 동물원", + open_="09:30", + close_="18:00", + break_start=None, + break_end=None, off_days=[], ), "korean_restaurant": HoursSpec( - label='한식당', - open_='11:00', close_='21:30', - break_start='15:00', break_end='17:00', + label="한식당", + open_="11:00", + close_="21:30", + break_start="15:00", + break_end="17:00", off_days=[], ), "bbq_restaurant": HoursSpec( - label='고기집 · 바비큐', - open_='11:30', close_='23:00', - break_start=None, break_end=None, + label="고기집 · 바비큐", + open_="11:30", + close_="23:00", + break_start=None, + break_end=None, off_days=[], ), "noodle_restaurant": HoursSpec( - label='면 · 분식', - open_='10:30', close_='21:00', - break_start=None, break_end=None, + label="면 · 분식", + open_="10:30", + close_="21:00", + break_start=None, + break_end=None, off_days=[], ), "general_restaurant": HoursSpec( - label='일반 식당', - open_='11:00', close_='21:00', - break_start='15:00', break_end='17:00', + label="일반 식당", + open_="11:00", + close_="21:00", + break_start="15:00", + break_end="17:00", off_days=[], ), "cafe": HoursSpec( - label='카페 · 디저트', - open_='09:00', close_='22:00', - break_start=None, break_end=None, + label="카페 · 디저트", + open_="09:00", + close_="22:00", + break_start=None, + break_end=None, off_days=[], ), "bakery": HoursSpec( - label='베이커리', - open_='08:00', close_='21:00', - break_start=None, break_end=None, + label="베이커리", + open_="08:00", + close_="21:00", + break_start=None, + break_end=None, off_days=[], ), "department_store": HoursSpec( - label='백화점 · 쇼핑몰', - open_='10:30', close_='20:00', - break_start=None, break_end=None, + label="백화점 · 쇼핑몰", + open_="10:30", + close_="20:00", + break_start=None, + break_end=None, off_days=[], ), "outlet": HoursSpec( - label='아울렛', - open_='10:30', close_='21:00', - break_start=None, break_end=None, + label="아울렛", + open_="10:30", + close_="21:00", + break_start=None, + break_end=None, off_days=[], ), "leisure_sport": HoursSpec( - label='레포츠 · 체험', - open_='09:00', close_='18:00', - break_start=None, break_end=None, + label="레포츠 · 체험", + open_="09:00", + close_="18:00", + break_start=None, + break_end=None, off_days=[], ), "lodging": HoursSpec( - label='숙박', - open_='00:00', close_='23:59', - break_start=None, break_end=None, + label="숙박", + open_="00:00", + close_="23:59", + break_start=None, + break_end=None, off_days=[], ), "religious_site": HoursSpec( - label='성당 · 교회', - open_='06:00', close_='21:00', - break_start=None, break_end=None, + label="성당 · 교회", + open_="06:00", + close_="21:00", + break_start=None, + break_end=None, off_days=[], ), "scenic_spot": HoursSpec( - label='명승지 · 절경', - open_='00:00', close_='23:59', - break_start=None, break_end=None, + label="명승지 · 절경", + open_="00:00", + close_="23:59", + break_start=None, + break_end=None, off_days=[], ), "cave": HoursSpec( - label='동굴 (관광)', - open_='09:00', close_='18:00', - break_start=None, break_end=None, + label="동굴 (관광)", + open_="09:00", + close_="18:00", + break_start=None, + break_end=None, off_days=[], ), "cable_car": HoursSpec( - label='케이블카 · 모노레일', - open_='09:00', close_='18:00', - break_start=None, break_end=None, + label="케이블카 · 모노레일", + open_="09:00", + close_="18:00", + break_start=None, + break_end=None, off_days=[], ), "ranch_farm": HoursSpec( - label='목장 · 체험농장', - open_='09:00', close_='18:00', - break_start=None, break_end=None, + label="목장 · 체험농장", + open_="09:00", + close_="18:00", + break_start=None, + break_end=None, off_days=[], ), "default_attraction": HoursSpec( - label='기타 관광지 (미분류)', - open_='09:00', close_='18:00', - break_start=None, break_end=None, + label="기타 관광지 (미분류)", + open_="09:00", + close_="18:00", + break_start=None, + break_end=None, off_days=[], ), } # ── 키워드 → sub_category 매칭 룰 (위에서 아래로 평가) ─────── KEYWORD_RULES: list[tuple[str, str]] = [ - ('봉은사|해동용궁사|불국사|석굴암|낙산사|월정사|향일암|선암사|구인사|마곡사|전등사|진관사|용궁사|부석사|보리암|쌍계사|선운사|용문사|해인사|통도사|범어사|송광사|법주사|미황사|화엄사|쌍봉사|운주사|금산사|내장사|관음사|약천사|약사사|봉정사|봉선사|적천사|자장사|봉선사|동학사|갑사|마이산탑사|청룡사|봉선사|관룡사|사불산|불교문화관', 'temple'), - ('만장굴|고씨굴|천지연.*동굴|화암동굴|단양고수동굴|고수동굴|환선굴|여천굴|동굴$|관광동굴|대금굴|해저터널|관광터널', 'cave'), - ('케이블카|모노레일|곤돌라|로프웨이|루지$|짚라인|집라인|레일바이크', 'cable_car'), - ('목장|양떼목장|허브농장|농원$|체험농장|승마장', 'ranch_farm'), - ('산$|^[가-힣]+산\\s|산림욕|봉우리|봉$|폭포|계곡|숲$|호수|호$|강$|바다|해수욕장|해변$|해안|해변로|해돋이|일출|일몰|만$|곶$|섬$|비치$|^.+도$|^오동도|^외도|^청산도|^보길도|^외연도|^안면도|^거문도|^월미도|^남이섬|공원|숲길|올레|둘레길|등산로|언덕|고개|평원|벌판|초원|꽃밭|들꽃|수목원|식물원|지질공원|자연휴양림|휴양림|자연공원|국립공원|도립공원|가든|편백|편백숲|핀크스|메타세콰이어|소쇄원|죽녹원|관방제림|보성녹차밭|녹차밭|식물원|저수지$|^.+호$|의림지|화진포|두물머리|세미원|태화강국가정원|방조림|어부림|^.+림$|불광천|청계천|^.+천$|동촌유원지|유원지$', 'nature_outdoor'), - ('낙화암|외돌개|주상절리|정방폭포|천지연|용두암|섭지코지|성산일출봉|비자림|사려니숲|에코랜드|카멜리아힐|선유도|영금정|공지천|경포대|정동진|월정리|함덕|애월|순천만습지|순천만|우포늪|화담숲|아침고요|남이섬|쁘띠프랑스|대왕암|간절곶|호미곶|가천다랭이|용궁리|섭지|올레길|둘레길|태종대|갓바위|신선대|촛대바위|하조대|화진포|정선아우라지|탄금대|통일전망대|묵호항|구룡포항|항구$', 'scenic_spot'), - ('경복궁|창덕궁|창경궁|덕수궁|경희궁|운현궁|종묘', 'palace'), - ('왕릉|^선릉|^정릉|^태릉|^홍릉|^동구릉|능원|능$|고분|고도$|유적|유적지|읍성|산성|토성|주성|남한산성|북한산성|고려궁지|문화유산|서원$|향교$|선비촌|경기전|오죽헌|동궁과월지|대릉원|노서리|쪽샘|첨성대|오목대|월영교|수원화성|행궁$|행궁가|^.+문$|숭례문|흥인지문|독립문|광화문|풍남문|팔달문|장안문|동대문$|남대문$|^.+루$|광한루|촉석루|죽서루|만대루|영남루|^.+사지$|정림사지', 'tomb_historic'), - ('한옥마을|민속촌|전통마을|민속마을|문화마을|북촌$|서촌$|감천문화마을|양동마을|하회마을|외암마을|왕곡마을|전주한옥|전주한옥마을', 'traditional_village'), - ('야시장|밤시장', 'night_market'), - ('수산시장|어시장|자갈치|소래포구|구룡포|주문진|속초중앙시장.*어시장', 'market_seafood'), - ('시장$|전통시장|광장시장|남대문시장|동대문시장|통인시장|망원시장|국제시장|부평시장|중앙시장|BIFF광장|깡통시장|남포동$', 'market_traditional'), - ('백화점|면세점|쇼핑몰|몰$|복합쇼핑|스타필드|이마트|코엑스|롯데월드몰|가로수길.*몰|타임스퀘어|디큐브|디큐브시티|롯데몰|현대시티몰', 'department_store'), - ('아울렛|프리미엄아울렛|시즌아울렛', 'outlet'), - ('광화문|시청$|청계천|성수동|연남동|이태원|망원동|북촌$|서촌$|을지로$|가로수길|경리단길|샤로수길|망원|연희동|인사동|삼청동|익선동|서순라길|남대문로|홍대|홍익대|건대$|건대거리|신촌$|해방촌|용산공예단지|부산.*해리단길|해리단길|제주.*탑동|탑동광장', 'street_plaza'), - ('거리$|^.+거리\\s|^.+로$|^.+길$|골목$|광장$|마을$|동네|로데오|단지$|상점가|쇼핑거리|먹자골목|예술의거리|벽화마을', 'street_plaza'), - ('타워|전망대|뷰포인트|스카이|루프탑|전망$|^N서울|남산서울타워', 'tower_observatory'), - ('박물관|미술관|뮤지엄|museum|기념관|아트센터|아트홀|문학관|역사관|체험관|과학관|전시관|갤러리|예술관|디자인플라자|DDP|테디베어|티뮤지엄|오설록|스페이스워크|아트밸리|포천아트밸리', 'museum'), - ('도서관|문화회관|문화원|아트빌리지|예술의전당', 'library_culture_center'), - ('에버랜드|롯데월드$|레전드$|월드$|테마파크|놀이공원|랜드$|어드벤처|한국민속촌|드림랜드|월미테마파크', 'theme_park'), - ('아쿠아리움|수족관|아쿠아|씨라이프|동물원|사파리|아쿠아필드', 'aquarium_zoo'), - ('성당$|교회$|채플|수도원|^명동성당|약현성당|중림동성당', 'religious_site'), - ('갈비|삼겹살|돼지|소고기|등심|안심|불고기|고기집|숯불|화로구이', 'bbq_restaurant'), - ('국밥|순대|냉면|국수|면옥|분식|떡볶이|김밥|만두|짜장면|짬뽕', 'noodle_restaurant'), - ('한정식|한식|삼계탕|곰탕|설렁탕|족발|보쌈|닭갈비|찜닭|토속촌|광장시장.*빈대떡|마약김밥', 'korean_restaurant'), - ('베이커리|빵집|제과|제빵|베이글', 'bakery'), - ('카페|커피|coffee|디저트|아이스크림|티하우스|찻집|밀크티', 'cafe'), - ('패러글라이딩|서핑|스쿠버|스키장|스키리조트|보드|짚라인|루지|카약|요트|보트|승마|승마장|스카이다이빙|번지점프|체험$|온천$|^.+온천|유성온천|수안보온천|온천랜드|찜질방|스파$|녹차탕|해수탕|^.+탕$|율포해수녹차탕', 'leisure_sport'), - ('리조트|호텔|콘도|풀빌라|펜션|모텔|게스트하우스|^워커힐$|^.+호텔$|^.+리조트$', 'lodging'), - ('다리$|^.+다리$|^.+교$|엑스포다리|영도대교|광안대교|새천년대교', 'street_plaza'), - ('차이나타운|이태원로|용산기지|양림동|예술촌|아트빌리지|아트밸리|아트타운|예술마을|예술의거리|벽화마을|창동예술촌', 'street_plaza'), - ('63빌딩|타워팰리스|롯데월드타워|광화빌딩|^.+빌딩$|광화문빌딩', 'tower_observatory'), - ('^.+촌$|선비촌|민속촌|국악촌|문학촌|최참판댁|^.+댁$|^.+종가$|^.+고택$|^.+가옥$', 'traditional_village'), + ( + "봉은사|해동용궁사|불국사|석굴암|낙산사|월정사|향일암|선암사|구인사|마곡사|전등사|진관사|용궁사|부석사|보리암|쌍계사|선운사|용문사|해인사|통도사|범어사|송광사|법주사|미황사|화엄사|쌍봉사|운주사|금산사|내장사|관음사|약천사|약사사|봉정사|봉선사|적천사|자장사|봉선사|동학사|갑사|마이산탑사|청룡사|봉선사|관룡사|사불산|불교문화관", + "temple", + ), + ( + "만장굴|고씨굴|천지연.*동굴|화암동굴|단양고수동굴|고수동굴|환선굴|여천굴|동굴$|관광동굴|대금굴|해저터널|관광터널", + "cave", + ), + ("케이블카|모노레일|곤돌라|로프웨이|루지$|짚라인|집라인|레일바이크", "cable_car"), + ("목장|양떼목장|허브농장|농원$|체험농장|승마장", "ranch_farm"), + ( + "산$|^[가-힣]+산\\s|산림욕|봉우리|봉$|폭포|계곡|숲$|호수|호$|강$|바다|해수욕장|해변$|해안|해변로|해돋이|일출|일몰|만$|곶$|섬$|비치$|^.+도$|^오동도|^외도|^청산도|^보길도|^외연도|^안면도|^거문도|^월미도|^남이섬|공원|숲길|올레|둘레길|등산로|언덕|고개|평원|벌판|초원|꽃밭|들꽃|수목원|식물원|지질공원|자연휴양림|휴양림|자연공원|국립공원|도립공원|가든|편백|편백숲|핀크스|메타세콰이어|소쇄원|죽녹원|관방제림|보성녹차밭|녹차밭|식물원|저수지$|^.+호$|의림지|화진포|두물머리|세미원|태화강국가정원|방조림|어부림|^.+림$|불광천|청계천|^.+천$|동촌유원지|유원지$", + "nature_outdoor", + ), + ( + "낙화암|외돌개|주상절리|정방폭포|천지연|용두암|섭지코지|성산일출봉|비자림|사려니숲|에코랜드|카멜리아힐|선유도|영금정|공지천|경포대|정동진|월정리|함덕|애월|순천만습지|순천만|우포늪|화담숲|아침고요|남이섬|쁘띠프랑스|대왕암|간절곶|호미곶|가천다랭이|용궁리|섭지|올레길|둘레길|태종대|갓바위|신선대|촛대바위|하조대|화진포|정선아우라지|탄금대|통일전망대|묵호항|구룡포항|항구$", + "scenic_spot", + ), + ("경복궁|창덕궁|창경궁|덕수궁|경희궁|운현궁|종묘", "palace"), + ( + "왕릉|^선릉|^정릉|^태릉|^홍릉|^동구릉|능원|능$|고분|고도$|유적|유적지|읍성|산성|토성|주성|남한산성|북한산성|고려궁지|문화유산|서원$|향교$|선비촌|경기전|오죽헌|동궁과월지|대릉원|노서리|쪽샘|첨성대|오목대|월영교|수원화성|행궁$|행궁가|^.+문$|숭례문|흥인지문|독립문|광화문|풍남문|팔달문|장안문|동대문$|남대문$|^.+루$|광한루|촉석루|죽서루|만대루|영남루|^.+사지$|정림사지", + "tomb_historic", + ), + ( + "한옥마을|민속촌|전통마을|민속마을|문화마을|북촌$|서촌$|감천문화마을|양동마을|하회마을|외암마을|왕곡마을|전주한옥|전주한옥마을", + "traditional_village", + ), + ("야시장|밤시장", "night_market"), + ("수산시장|어시장|자갈치|소래포구|구룡포|주문진|속초중앙시장.*어시장", "market_seafood"), + ( + "시장$|전통시장|광장시장|남대문시장|동대문시장|통인시장|망원시장|국제시장|부평시장|중앙시장|BIFF광장|깡통시장|남포동$", + "market_traditional", + ), + ( + "백화점|면세점|쇼핑몰|몰$|복합쇼핑|스타필드|이마트|코엑스|롯데월드몰|가로수길.*몰|타임스퀘어|디큐브|디큐브시티|롯데몰|현대시티몰", + "department_store", + ), + ("아울렛|프리미엄아울렛|시즌아울렛", "outlet"), + ( + "광화문|시청$|청계천|성수동|연남동|이태원|망원동|북촌$|서촌$|을지로$|가로수길|경리단길|샤로수길|망원|연희동|인사동|삼청동|익선동|서순라길|남대문로|홍대|홍익대|건대$|건대거리|신촌$|해방촌|용산공예단지|부산.*해리단길|해리단길|제주.*탑동|탑동광장", + "street_plaza", + ), + ( + "거리$|^.+거리\\s|^.+로$|^.+길$|골목$|광장$|마을$|동네|로데오|단지$|상점가|쇼핑거리|먹자골목|예술의거리|벽화마을", + "street_plaza", + ), + ("타워|전망대|뷰포인트|스카이|루프탑|전망$|^N서울|남산서울타워", "tower_observatory"), + ( + "박물관|미술관|뮤지엄|museum|기념관|아트센터|아트홀|문학관|역사관|체험관|과학관|전시관|갤러리|예술관|디자인플라자|DDP|테디베어|티뮤지엄|오설록|스페이스워크|아트밸리|포천아트밸리", + "museum", + ), + ("도서관|문화회관|문화원|아트빌리지|예술의전당", "library_culture_center"), + ( + "에버랜드|롯데월드$|레전드$|월드$|테마파크|놀이공원|랜드$|어드벤처|한국민속촌|드림랜드|월미테마파크", + "theme_park", + ), + ("아쿠아리움|수족관|아쿠아|씨라이프|동물원|사파리|아쿠아필드", "aquarium_zoo"), + ("성당$|교회$|채플|수도원|^명동성당|약현성당|중림동성당", "religious_site"), + ("갈비|삼겹살|돼지|소고기|등심|안심|불고기|고기집|숯불|화로구이", "bbq_restaurant"), + ("국밥|순대|냉면|국수|면옥|분식|떡볶이|김밥|만두|짜장면|짬뽕", "noodle_restaurant"), + ( + "한정식|한식|삼계탕|곰탕|설렁탕|족발|보쌈|닭갈비|찜닭|토속촌|광장시장.*빈대떡|마약김밥", + "korean_restaurant", + ), + ("베이커리|빵집|제과|제빵|베이글", "bakery"), + ("카페|커피|coffee|디저트|아이스크림|티하우스|찻집|밀크티", "cafe"), + ( + "패러글라이딩|서핑|스쿠버|스키장|스키리조트|보드|짚라인|루지|카약|요트|보트|승마|승마장|스카이다이빙|번지점프|체험$|온천$|^.+온천|유성온천|수안보온천|온천랜드|찜질방|스파$|녹차탕|해수탕|^.+탕$|율포해수녹차탕", + "leisure_sport", + ), + ("리조트|호텔|콘도|풀빌라|펜션|모텔|게스트하우스|^워커힐$|^.+호텔$|^.+리조트$", "lodging"), + ("다리$|^.+다리$|^.+교$|엑스포다리|영도대교|광안대교|새천년대교", "street_plaza"), + ( + "차이나타운|이태원로|용산기지|양림동|예술촌|아트빌리지|아트밸리|아트타운|예술마을|예술의거리|벽화마을|창동예술촌", + "street_plaza", + ), + ("63빌딩|타워팰리스|롯데월드타워|광화빌딩|^.+빌딩$|광화문빌딩", "tower_observatory"), + ( + "^.+촌$|선비촌|민속촌|국악촌|문학촌|최참판댁|^.+댁$|^.+종가$|^.+고택$|^.+가옥$", + "traditional_village", + ), ] @@ -254,12 +364,12 @@ def resolve_hours(name: str, hint: str | None = None) -> HoursSpec: h = (hint or "").strip() fallback = { - "식당": "general_restaurant", - "카페": "cafe", + "식당": "general_restaurant", + "카페": "cafe", "문화시설": "museum", - "쇼핑": "department_store", - "레포츠": "leisure_sport", - "축제": "default_attraction", + "쇼핑": "department_store", + "레포츠": "leisure_sport", + "축제": "default_attraction", }.get(h, "default_attraction") return SUB_CATEGORIES[fallback] diff --git a/src/data/kakao_local.py b/src/data/kakao_local.py index 389200e..a252ed2 100644 --- a/src/data/kakao_local.py +++ b/src/data/kakao_local.py @@ -9,13 +9,12 @@ - 키는 환경변수로만 관리한다. - 모듈 간 데이터는 Pydantic 모델(KakaoPlace)로 주고받는다. """ -from __future__ import annotations -import os +from __future__ import annotations import httpx -from src.data.models import KakaoPlace +from src.data.models import KakaoPlace, Settings _KEYWORD_URL = "https://dapi.kakao.com/v2/local/search/keyword.json" _ADDRESS_URL = "https://dapi.kakao.com/v2/local/search/address.json" @@ -33,8 +32,10 @@ def __init__(self, api_key: str | None = None, timeout_sec: float = 3.0) -> None self.stats: dict[str, int] = {"hit": 0, "miss": 0, "api_ok": 0, "api_fail": 0} @classmethod - def from_env(cls) -> KakaoLocalClient: - return cls(api_key=os.environ.get("KAKAO_REST_API_KEY", "")) + def from_settings(cls, settings: Settings | None = None) -> KakaoLocalClient: + return cls(api_key=(settings or Settings()).kakao_rest_api_key) + + from_env = from_settings @property def enabled(self) -> bool: diff --git a/src/data/models.py b/src/data/models.py index 7e7eac6..64ba8d4 100644 --- a/src/data/models.py +++ b/src/data/models.py @@ -4,14 +4,39 @@ Pydantic v2 can resolve forward references (e.g. ExplanationItem, DayRouteComparison) that are defined later in this file. """ + from __future__ import annotations import hashlib import re +from datetime import date as date_type +from pathlib import Path from typing import Literal from pydantic import BaseModel, Field, computed_field, field_validator, model_validator -from pydantic_settings import BaseSettings +from pydantic_settings import BaseSettings, SettingsConfigDict + + +def _validate_hhmm(value: str, field_name: str = "time") -> str: + if not re.fullmatch(r"\d{2}:\d{2}", value): + raise ValueError(f"{field_name} must be HH:MM format, got: {value!r}") + hour, minute = int(value[:2]), int(value[3:]) + if not (0 <= hour <= 23 and 0 <= minute <= 59): + raise ValueError(f"Invalid {field_name} value: {value!r}") + return value + + +def _validate_iso_date(value: str) -> str: + try: + parsed = date_type.fromisoformat(value) + except ValueError as exc: + raise ValueError("date must be an ISO date in YYYY-MM-DD format") from exc + if parsed.isoformat() != value: + raise ValueError("date must be an ISO date in YYYY-MM-DD format") + return value + + +_PROJECT_ROOT = Path(__file__).resolve().parents[2] # --------------------------------------------------------------------------- @@ -32,7 +57,7 @@ class KakaoPlace(BaseModel): class PlaceEvidence(BaseModel): - """지식그래프(Neo4j)에서 검색된 장소 근거 1건 (Region 컨텍스트 포함).""" + """로컬 장소 근거 검색 결과 1건 (Region 컨텍스트 포함).""" place_id: str name: str @@ -86,7 +111,7 @@ class Scores(BaseModel): area_intensity: float @model_validator(mode="after") - def validate_ranges(self) -> "Scores": + def validate_ranges(self) -> Scores: for fname in ("efficiency", "feasibility", "purpose_fit", "flow", "area_intensity"): v = getattr(self, fname) if not 0.0 <= v <= 1.0: @@ -108,7 +133,7 @@ class POI(BaseModel): lat: float lng: float open_start: str # HH:MM - open_end: str # HH:MM + open_end: str # HH:MM duration_min: int category: str = "" # 영업시간이 실측/검증값이 아니라 카테고리 추정값이면 True. @@ -157,8 +182,8 @@ def validate_duration(cls, v: int) -> int: class PlaceInput(BaseModel): name: str - visit_order: int | None = None # None → DayPlan에서 해당 일자 내 리스트 순서 자동 할당 - is_accommodation: bool = False # True → 숙소(Depot). M3/M4 백트래킹 계산 시 기준점 역할 + visit_order: int | None = None # None → DayPlan에서 해당 일자 내 리스트 순서 자동 할당 + is_accommodation: bool = False # True → 숙소(Depot). M3/M4 백트래킹 계산 시 기준점 역할 @field_validator("visit_order") @classmethod @@ -172,6 +197,7 @@ def validate_order(cls, v: int | None) -> int | None: class DayPlan(BaseModel): """하루 일정 — 장소 이름과 방문 순서 입력.""" + places: list[PlaceInput] @field_validator("places") @@ -184,7 +210,7 @@ def validate_place_count(cls, v: list[PlaceInput]) -> list[PlaceInput]: return v @model_validator(mode="after") - def auto_fill_visit_order(self) -> "DayPlan": + def auto_fill_visit_order(self) -> DayPlan: """visit_order 미입력 시 해당 일자 내 리스트 위치(1-based)로 자동 할당.""" for i, place in enumerate(self.places): if place.visit_order is None: @@ -193,11 +219,22 @@ def auto_fill_visit_order(self) -> "DayPlan": class ItineraryPlan(BaseModel): - days: list[DayPlan] # 일자별 장소 목록 (len = travel_days) - party_size: Literal[1, 2, 3, 4, 5] # 여행 인원 (5 = 5인 이상) + days: list[DayPlan] # 일자별 장소 목록 (len = travel_days) + party_size: Literal[1, 2, 3, 4, 5] # 여행 인원 (5 = 5인 이상) party_type: Literal["혼자", "친구", "연인", "가족", "아기동반", "어르신동반"] travel_type: Literal["cultural", "nature", "shopping", "food", "adventure"] | None = None date: str # 여행 시작일 (YYYY-MM-DD) + start_time: str = "09:00" + + @field_validator("date") + @classmethod + def validate_date(cls, v: str) -> str: + return _validate_iso_date(v) + + @field_validator("start_time") + @classmethod + def validate_start_time(cls, v: str) -> str: + return _validate_hhmm(v, "start_time") @field_validator("days") @classmethod @@ -247,26 +284,30 @@ def validate_score_range(cls, v: int) -> int: return v @model_validator(mode="after") - def hard_fail_score_cap(self) -> "ValidationResult": + def hard_fail_score_cap(self) -> ValidationResult: if self.hard_fails and self.final_score >= 60: raise ValueError("final_score must be <= 59 when hard_fails are present") return self class Settings(BaseSettings): + environment: str = "development" + api_auth_token: str = "" + cors_allowed_origins: str = "http://localhost:8000,http://127.0.0.1:8000" anthropic_api_key: str = "" claude_model: str = "claude-haiku-4-5" tour_api_key: str = "" kakao_rest_api_key: str = "" kakao_mobility_key: str = "" seoul_data_api_key: str = "" + naver_api_key: str = "" wellness_api_key: str = "" barrier_free_api_key: str = "" - model_config = {"env_file": ".env", "extra": "ignore"} + model_config = SettingsConfigDict(env_file=_PROJECT_ROOT / ".env", extra="ignore") @model_validator(mode="after") - def fill_gov_api_keys(self) -> "Settings": + def fill_gov_api_keys(self) -> Settings: """wellness_api_key / barrier_free_api_key 미설정 시 tour_api_key로 대체.""" if not self.wellness_api_key: self.wellness_api_key = self.tour_api_key @@ -284,7 +325,7 @@ class VRPTWPlace(BaseModel): name: str lng: float lat: float - open: str # HH:MM + open: str # HH:MM close: str # HH:MM stay_duration: int # minutes; 0 allowed for depot is_depot: bool = False @@ -292,12 +333,7 @@ class VRPTWPlace(BaseModel): @field_validator("open", "close") @classmethod def validate_hhmm(cls, v: str) -> str: - if not re.fullmatch(r"\d{2}:\d{2}", v): - raise ValueError(f"Time must be HH:MM format, got: {v!r}") - h, m = int(v[:2]), int(v[3:]) - if not (0 <= h <= 23 and 0 <= m <= 59): - raise ValueError(f"Invalid time value: {v!r}") - return v + return _validate_hhmm(v) @field_validator("lat") @classmethod @@ -344,6 +380,12 @@ def at_least_one(cls, v: list[VRPTWPlace]) -> list[VRPTWPlace]: class VRPTWRequest(BaseModel): days: list[VRPTWDay] + start_time: str = "09:00" + + @field_validator("start_time") + @classmethod + def validate_start_time(cls, v: str) -> str: + return _validate_hhmm(v, "start_time") @field_validator("days") @classmethod @@ -362,6 +404,7 @@ class DeepDiveItem(BaseModel): class ExplanationItem(BaseModel): """ExplainEngine이 생성하는 4단계 설명 항목.""" + item_type: Literal["hard_fail", "warning", "penalty", "bonus", "overall"] item_key: str fact: str @@ -373,18 +416,18 @@ class ExplanationItem(BaseModel): class DayRouteComparison(BaseModel): day_index: int - user_order: list[str] # place names in user order + user_order: list[str] # place names in user order optimal_order: list[str] | None # None when ortools unavailable user_travel_seconds: int optimal_travel_seconds: int | None class VRPTWResult(BaseModel): - risk_score: int # 0–100 - passed: bool # risk_score >= 60 + risk_score: int # 0–100 + passed: bool # risk_score >= 60 user_total_travel_seconds: int optimal_total_travel_seconds: int | None - efficiency_gap: float | None # (user - optimal) / optimal + efficiency_gap: float | None # (user - optimal) / optimal optimal_route: list[DayRouteComparison] | None deep_dive: list[DeepDiveItem] summary: str diff --git a/src/data/party_config.py b/src/data/party_config.py index b7d5aef..ea527b5 100644 --- a/src/data/party_config.py +++ b/src/data/party_config.py @@ -10,6 +10,7 @@ 가족 : 10h (어린 자녀 동반 가능성) 아기동반 / 어르신동반: 8h (취약 그룹 동반, 조기 경고) """ + from __future__ import annotations from dataclasses import dataclass @@ -17,16 +18,16 @@ @dataclass(frozen=True) class PartyProfile: - speed_factor: float # 체력 부담 임계 보정 계수 (1.0 = 기준) - fatigue_hours: int # 일정 과밀 경고 기준 시간 + speed_factor: float # 체력 부담 임계 보정 계수 (1.0 = 기준) + fatigue_hours: int # 일정 과밀 경고 기준 시간 PARTY_PROFILES: dict[str, PartyProfile] = { - "혼자": PartyProfile(speed_factor=1.0, fatigue_hours=12), - "친구": PartyProfile(speed_factor=1.0, fatigue_hours=12), - "연인": PartyProfile(speed_factor=1.0, fatigue_hours=12), - "가족": PartyProfile(speed_factor=0.9, fatigue_hours=10), - "아기동반": PartyProfile(speed_factor=0.8, fatigue_hours=8), + "혼자": PartyProfile(speed_factor=1.0, fatigue_hours=12), + "친구": PartyProfile(speed_factor=1.0, fatigue_hours=12), + "연인": PartyProfile(speed_factor=1.0, fatigue_hours=12), + "가족": PartyProfile(speed_factor=0.9, fatigue_hours=10), + "아기동반": PartyProfile(speed_factor=0.8, fatigue_hours=8), "어르신동반": PartyProfile(speed_factor=0.8, fatigue_hours=8), } diff --git a/src/data/region_config.py b/src/data/region_config.py index 6c54596..06b1d3b 100644 --- a/src/data/region_config.py +++ b/src/data/region_config.py @@ -8,6 +8,7 @@ MEDIUM — 지방 광역시, 수도권 외곽 (100–299 POI/km²) LOW — 농어촌·산간·도서 지역 (<100 POI/km²) """ + from __future__ import annotations from dataclasses import dataclass @@ -16,21 +17,22 @@ @dataclass(frozen=True) class RegionThresholds: """지역 티어별 VRPTW/Scoring 임계값.""" - tier: str # "high" | "medium" | "low" + + tier: str # "high" | "medium" | "low" # ── ClusterDispersion ──────────────────────────────────────────── - dist_warn_km: float # M2 경고 임계 직선거리 + dist_warn_km: float # M2 경고 임계 직선거리 dist_risk_km: float dist_crit_km: float - switch_warn: int # M1 시군구 전환 경고 횟수 + switch_warn: int # M1 시군구 전환 경고 횟수 switch_crit: int # ── HardFail / Warning ─────────────────────────────────────────── - physical_strain_km: float # 1일 총 이동거리 경고 임계 - dense_schedule_min: int # 일정 과밀 임계 (분) + physical_strain_km: float # 1일 총 이동거리 경고 임계 + dense_schedule_min: int # 일정 과밀 임계 (분) # ── Scoring ────────────────────────────────────────────────────── - fatigue_hours_limit: int # 피로 패널티 기준 시간 + fatigue_hours_limit: int # 피로 패널티 기준 시간 TIER_HIGH_DENSITY = RegionThresholds( @@ -70,25 +72,89 @@ class RegionThresholds: ) # 서울 핵심 25개 자치구 + 경기 핵심 시 -_HIGH_DENSITY_CODES: frozenset[str] = frozenset({ - "11110", "11140", "11170", "11200", "11215", "11230", "11260", - "11290", "11305", "11320", "11350", "11380", "11410", "11440", - "11470", "11500", "11530", "11545", "11560", "11590", "11620", - "11650", "11680", "11710", "11740", # 서울 25구 - "26110", "26140", "26170", "26200", "26230", "26260", "26290", - "26320", "26350", "26380", "26410", "26440", "26470", "26500", - "26530", # 부산 15개 구 - "41131", "41133", "41135", "41171", "41173", # 수원·성남·고양 -}) - -_MEDIUM_DENSITY_CODES: frozenset[str] = frozenset({ - "27110", "27140", "27170", "27200", "27230", "27260", "27290", # 대구 - "28110", "28140", "28170", "28200", "28237", "28245", "28260", # 인천 - "29110", "29140", "29155", "29170", "29200", # 광주 - "30110", "30140", "30170", "30200", "30230", # 대전 - "31110", "31140", "31170", "31200", # 울산 - "36110", # 세종 -}) +_HIGH_DENSITY_CODES: frozenset[str] = frozenset( + { + "11110", + "11140", + "11170", + "11200", + "11215", + "11230", + "11260", + "11290", + "11305", + "11320", + "11350", + "11380", + "11410", + "11440", + "11470", + "11500", + "11530", + "11545", + "11560", + "11590", + "11620", + "11650", + "11680", + "11710", + "11740", # 서울 25구 + "26110", + "26140", + "26170", + "26200", + "26230", + "26260", + "26290", + "26320", + "26350", + "26380", + "26410", + "26440", + "26470", + "26500", + "26530", # 부산 15개 구 + "41131", + "41133", + "41135", + "41171", + "41173", # 수원·성남·고양 + } +) + +_MEDIUM_DENSITY_CODES: frozenset[str] = frozenset( + { + "27110", + "27140", + "27170", + "27200", + "27230", + "27260", + "27290", # 대구 + "28110", + "28140", + "28170", + "28200", + "28237", + "28245", + "28260", # 인천 + "29110", + "29140", + "29155", + "29170", + "29200", # 광주 + "30110", + "30140", + "30170", + "30200", + "30230", # 대전 + "31110", + "31140", + "31170", + "31200", # 울산 + "36110", # 세종 + } +) def get_thresholds(sigungu_code: str | None) -> RegionThresholds: diff --git a/src/data/restaurant_catalog.py b/src/data/restaurant_catalog.py index 91898d1..3c05a27 100644 --- a/src/data/restaurant_catalog.py +++ b/src/data/restaurant_catalog.py @@ -6,6 +6,7 @@ CLAUDE.md 규칙: - 모듈 간 데이터는 Pydantic 모델(AlternativePOI)로만 주고받는다. """ + from __future__ import annotations import csv @@ -14,6 +15,8 @@ from src.data.models import AlternativePOI from src.utils.geo import haversine_km +_PROJECT_ROOT = Path(__file__).resolve().parents[2] + _RESTAURANT_CODE = "FD" @@ -48,7 +51,7 @@ def from_csv(cls, path: Path) -> RestaurantCatalog: @classmethod def from_default(cls) -> RestaurantCatalog: - return cls.from_csv(Path("data/jeju_places.csv")) + return cls.from_csv(_PROJECT_ROOT / "data" / "jeju_places.csv") def nearby( self, @@ -69,6 +72,12 @@ def nearby( candidates.append((dist, r)) candidates.sort(key=lambda c: c[0]) return [ - AlternativePOI(name=r["name"], distance_km=round(dist, 2), category="39", lat=r["lat"], lng=r["lng"]) + AlternativePOI( + name=r["name"], + distance_km=round(dist, 2), + category="39", + lat=r["lat"], + lng=r["lng"], + ) for dist, r in candidates[:limit] ] diff --git a/src/data/seoul_citydata_client.py b/src/data/seoul_citydata_client.py index d3ebe2e..88975db 100644 --- a/src/data/seoul_citydata_client.py +++ b/src/data/seoul_citydata_client.py @@ -9,11 +9,11 @@ 지원 혼잡도 레벨: 여유 → 0.1 | 보통 → 0.4 | 약간 붐빔 → 0.7 | 붐빔 → 1.0 """ + from __future__ import annotations from dataclasses import dataclass, field from datetime import datetime -from typing import Optional import httpx @@ -22,15 +22,37 @@ # 서울 도시데이터 API 등록 장소명 (115개소 중 주요 관광지) # 정확한 문자열 일치가 필요 — 오타 시 404 반환 KNOWN_AREAS: set[str] = { - "경복궁", "창덕궁", "창경궁", "덕수궁", "경희궁", - "인사동", "북촌한옥마을", "서촌", "남산공원", - "명동 관광특구", "동대문 관광특구", "이태원 관광특구", - "강남 MICE 관광특구", "홍대 관광특구", - "여의도한강공원", "반포한강공원", "뚝섬한강공원", - "잠실한강공원", "망원한강공원", "이촌한강공원", - "롯데월드", "코엑스", "국립중앙박물관", - "서울숲", "올림픽공원", "북한산", "관악산", - "강남역", "신촌·이대", "건대입구역", "왕십리역", + "경복궁", + "창덕궁", + "창경궁", + "덕수궁", + "경희궁", + "인사동", + "북촌한옥마을", + "서촌", + "남산공원", + "명동 관광특구", + "동대문 관광특구", + "이태원 관광특구", + "강남 MICE 관광특구", + "홍대 관광특구", + "여의도한강공원", + "반포한강공원", + "뚝섬한강공원", + "잠실한강공원", + "망원한강공원", + "이촌한강공원", + "롯데월드", + "코엑스", + "국립중앙박물관", + "서울숲", + "올림픽공원", + "북한산", + "관악산", + "강남역", + "신촌·이대", + "건대입구역", + "왕십리역", } # 사용자 입력 → API 장소명 별칭 매핑 @@ -60,9 +82,9 @@ @dataclass(frozen=True) class ForecastSlot: - time: str # "YYYY-MM-DD HH:MM" - level: str # "여유" | "보통" | "약간 붐빔" | "붐빔" - score: float # 0.0~1.0 + time: str # "YYYY-MM-DD HH:MM" + level: str # "여유" | "보통" | "약간 붐빔" | "붐빔" + score: float # 0.0~1.0 ppltn_min: int ppltn_max: int @@ -71,13 +93,13 @@ class ForecastSlot: class SeoulRealtimeCongestion: area_name: str area_code: str - level: str # 현재 혼잡도 텍스트 - score: float # 0.0~1.0 + level: str # 현재 혼잡도 텍스트 + score: float # 0.0~1.0 ppltn_min: int ppltn_max: int - measured_at: str # "YYYY-MM-DD HH:MM" + measured_at: str # "YYYY-MM-DD HH:MM" forecast: list[ForecastSlot] = field(default_factory=list) - is_replaced: bool = False # REPLACE_YN == 'Y' 이면 추정치 + is_replaced: bool = False # REPLACE_YN == 'Y' 이면 추정치 class SeoulCityDataClient: @@ -93,6 +115,7 @@ def __init__(self, api_key: str | None = None, timeout: float = 10.0) -> None: self._key = api_key else: from src.data.models import Settings + self._key = Settings().seoul_data_api_key if not self._key: raise ValueError("SEOUL_DATA_API_KEY가 설정되지 않았습니다.") diff --git a/src/data/theme_taxonomy.py b/src/data/theme_taxonomy.py index 2a7fd65..7575212 100644 --- a/src/data/theme_taxonomy.py +++ b/src/data/theme_taxonomy.py @@ -8,11 +8,10 @@ 사용자 입력 모델은 UserPreferences로 묶어서 양 축 다중 선택을 허용. """ + from __future__ import annotations from dataclasses import dataclass, field -from typing import Literal - # ── 축 A: 장소 유형 (List 1) ────────────────────────────────────────── PLACE_TYPES: list[str] = [ @@ -45,15 +44,15 @@ # 한 PLACE_TYPE에 여러 코드가 매핑될 수 있음 (OR 조건). # 매핑은 코드의 prefix 매칭 (예: "NA04" → 산 → 모든 NA04로 시작하는 코드) PLACE_TYPE_TO_LCLS: dict[str, list[str]] = { - "산": ["NA04", "NA01"], # 산, 국립공원 - "바다": ["NA12", "NA11", "NA13", "NA14"], # 해수욕장, 해안절경, 섬, 항구 + "산": ["NA04", "NA01"], # 산, 국립공원 + "바다": ["NA12", "NA11", "NA13", "NA14"], # 해수욕장, 해안절경, 섬, 항구 "실내 여행지": ["VE01", "VE03", "VE04", "VE05"], # 박물관, 전시관, 미술관, 체험관 - "액티비티": ["EX"], # 레포츠 전체 - "문화_역사": ["VE01", "VE02", "HS"], # 박물관, 기념관, 역사관광지 - "테마파크": ["EX21"], # 테마파크 (레포츠 하위) - "카페": ["FD02"], # 카페·전통찻집 - "전통시장": ["SH01"], # 5일·전통시장 - "축제": [], # contentTypeId=15로 별도 매칭 + "액티비티": ["EX"], # 레포츠 전체 + "문화_역사": ["VE01", "VE02", "HS"], # 박물관, 기념관, 역사관광지 + "테마파크": ["EX21"], # 테마파크 (레포츠 하위) + "카페": ["FD02"], # 카페·전통찻집 + "전통시장": ["SH01"], # 5일·전통시장 + "축제": [], # contentTypeId=15로 별도 매칭 } @@ -66,15 +65,15 @@ # ── TRAVEL_STYLE 메타 정보 (LLM 프롬프트 컨텍스트용) ───────────────── # 각 스타일에 대한 한 줄 설명 — Claude API 호출 시 system 또는 user 프롬프트에 포함 TRAVEL_STYLE_DESCRIPTIONS: dict[str, str] = { - "체험_액티비티": "직접 몸으로 부딪히는 체험형 활동 (서핑, 등산, ATV 등)", - "SNS 핫플레이스": "사진 찍기 좋고 트렌디한 곳 (인스타 감성 카페, 포토존)", - "자연과 함께": "자연 풍경 중심 (산, 바다, 숲, 공원)", + "체험_액티비티": "직접 몸으로 부딪히는 체험형 활동 (서핑, 등산, ATV 등)", + "SNS 핫플레이스": "사진 찍기 좋고 트렌디한 곳 (인스타 감성 카페, 포토존)", + "자연과 함께": "자연 풍경 중심 (산, 바다, 숲, 공원)", "유명 관광지는 필수": "랜드마크·필수 코스 (경복궁, 해운대 등)", - "여유롭게 힐링": "조용하고 편안한 휴식 (한적한 카페, 명상, 온천)", - "문화_예술_역사": "박물관·미술관·고궁·전통 문화 체험", - "여행지 느낌 물씬": "그 지역 고유의 분위기·전통 강하게 살아있는 곳", - "쇼핑은 열정적으로": "쇼핑 위주 (백화점, 면세점, 시장, 쇼핑몰)", - "관광보다 먹방": "유명 맛집·식도락 위주 (현지 음식, 노포)", + "여유롭게 힐링": "조용하고 편안한 휴식 (한적한 카페, 명상, 온천)", + "문화_예술_역사": "박물관·미술관·고궁·전통 문화 체험", + "여행지 느낌 물씬": "그 지역 고유의 분위기·전통 강하게 살아있는 곳", + "쇼핑은 열정적으로": "쇼핑 위주 (백화점, 면세점, 시장, 쇼핑몰)", + "관광보다 먹방": "유명 맛집·식도락 위주 (현지 음식, 노포)", } @@ -82,6 +81,7 @@ @dataclass class UserPreferences: """사용자가 선택한 테마. 두 축 모두 다중 선택 허용 (각 1개 이상).""" + place_types: list[str] = field(default_factory=list) travel_styles: list[str] = field(default_factory=list) @@ -89,16 +89,10 @@ def __post_init__(self) -> None: # 검증: 모든 항목이 정의된 테마인지 확인 invalid_pt = [p for p in self.place_types if p not in PLACE_TYPES] if invalid_pt: - raise ValueError( - f"정의되지 않은 PLACE_TYPE: {invalid_pt}. " - f"허용: {PLACE_TYPES}" - ) + raise ValueError(f"정의되지 않은 PLACE_TYPE: {invalid_pt}. 허용: {PLACE_TYPES}") invalid_ts = [s for s in self.travel_styles if s not in TRAVEL_STYLES] if invalid_ts: - raise ValueError( - f"정의되지 않은 TRAVEL_STYLE: {invalid_ts}. " - f"허용: {TRAVEL_STYLES}" - ) + raise ValueError(f"정의되지 않은 TRAVEL_STYLE: {invalid_ts}. 허용: {TRAVEL_STYLES}") if not self.place_types and not self.travel_styles: raise ValueError("최소 하나의 PLACE_TYPE 또는 TRAVEL_STYLE을 선택해야 합니다.") diff --git a/src/data/tour_api.py b/src/data/tour_api.py index 295454b..9c7328c 100644 --- a/src/data/tour_api.py +++ b/src/data/tour_api.py @@ -1,4 +1,5 @@ """한국관광공사 TourAPI v2 비동기 클라이언트 (httpx + Graceful Fallback).""" + from __future__ import annotations import re @@ -59,7 +60,7 @@ def __init__( self._hours_cache: dict[str, tuple[str, str]] = {} @classmethod - def from_settings(cls, settings: Settings | None = None) -> "TourAPIClient | None": + def from_settings(cls, settings: Settings | None = None) -> TourAPIClient | None: """Settings에서 키 로드. 키 없으면 None 반환 (Graceful Fallback 진입점).""" if settings is None: settings = Settings() @@ -76,13 +77,13 @@ async def search_poi( """키워드로 POI 검색. 실패 시 빈 리스트 반환.""" params: dict[str, Any] = { "serviceKey": self._key, - "numOfRows": num_of_rows, - "pageNo": 1, - "MobileOS": "ETC", - "MobileApp": self._mobile_app, - "arrange": "A", - "keyword": keyword, - "_type": "json", + "numOfRows": num_of_rows, + "pageNo": 1, + "MobileOS": "ETC", + "MobileApp": self._mobile_app, + "arrange": "A", + "keyword": keyword, + "_type": "json", } if content_type_id is not None: params["contentTypeId"] = content_type_id @@ -106,16 +107,18 @@ async def search_poi( if not lat or not lng: continue open_s, close_s = await self.get_operating_hours(content_id, ctype) - pois.append(POI( - poi_id=content_id, - name=str(item.get("title", keyword)), - lat=lat, - lng=lng, - open_start=open_s, - open_end=close_s, - duration_min=60, - category=str(ctype), - )) + pois.append( + POI( + poi_id=content_id, + name=str(item.get("title", keyword)), + lat=lat, + lng=lng, + open_start=open_s, + open_end=close_s, + duration_min=60, + category=str(ctype), + ) + ) except Exception: continue return pois @@ -130,12 +133,12 @@ async def get_operating_hours( return self._hours_cache[content_id] params: dict[str, Any] = { - "serviceKey": self._key, - "contentId": content_id, + "serviceKey": self._key, + "contentId": content_id, "contentTypeId": content_type_id, - "MobileOS": "ETC", - "MobileApp": self._mobile_app, - "_type": "json", + "MobileOS": "ETC", + "MobileApp": self._mobile_app, + "_type": "json", } result = (_FALLBACK_OPEN, _FALLBACK_CLOSE) diff --git a/src/data/wellness_api.py b/src/data/wellness_api.py index db85188..bbdf556 100644 --- a/src/data/wellness_api.py +++ b/src/data/wellness_api.py @@ -1,4 +1,5 @@ """한국관광공사 웰니스 관광 정보 API 클라이언트 (B551011/WellnessTursmService).""" + from __future__ import annotations from dataclasses import dataclass @@ -17,8 +18,8 @@ class WellnessPlace: content_id: str title: str addr: str - lat: float # mapY - lng: float # mapX + lat: float # mapY + lng: float # mapX cat1: str = "" cat2: str = "" cat3: str = "" @@ -55,7 +56,7 @@ def __init__(self, api_key: str, timeout_sec: float = 10.0) -> None: self._timeout = timeout_sec @classmethod - def from_settings(cls, settings: Settings | None = None) -> "WellnessAPIClient | None": + def from_settings(cls, settings: Settings | None = None) -> WellnessAPIClient | None: if settings is None: settings = Settings() key = settings.wellness_api_key @@ -98,20 +99,22 @@ async def fetch_page( addr = str(item.get("baseAddr") or item.get("addr1") or item.get("addr") or "") lat = _safe_float(item.get("mapY") or item.get("mapy") or item.get("lat")) lng = _safe_float(item.get("mapX") or item.get("mapx") or item.get("lng")) - + if not content_id or lat == 0.0 or lng == 0.0: continue - - places.append(WellnessPlace( - content_id=content_id, - title=title, - addr=addr, - lat=lat, - lng=lng, - cat1=str(item.get("cat1", "")), - cat2=str(item.get("cat2", "")), - cat3=str(item.get("cat3", "")), - )) + + places.append( + WellnessPlace( + content_id=content_id, + title=title, + addr=addr, + lat=lat, + lng=lng, + cat1=str(item.get("cat1", "")), + cat2=str(item.get("cat2", "")), + cat3=str(item.get("cat3", "")), + ) + ) return places async def fetch_all(self, num_of_rows: int = 100) -> list[WellnessPlace]: diff --git a/src/explain/explain_engine.py b/src/explain/explain_engine.py index 8fe248e..c577d32 100644 --- a/src/explain/explain_engine.py +++ b/src/explain/explain_engine.py @@ -10,26 +10,28 @@ - Graceful fallback: API 키 없거나 호출 실패 시 규칙 기반 설명으로 대체 - 이슈 없을 때 LLM 미호출: 불필요한 API 호출 방지 """ + from __future__ import annotations import hashlib import json -import os from collections import OrderedDict from typing import Any -from src.data.graph_retriever import GraphRetriever +from src.data.evidence_retriever import LocalEvidenceRetriever from src.data.models import ( AlternativePOI, ExplanationItem, HardFail, ItineraryPlan, Scores, + Settings, Warning, ) try: import anthropic + _ANTHROPIC_AVAILABLE = True except ImportError: _ANTHROPIC_AVAILABLE = False @@ -41,6 +43,7 @@ # ── 메모리 캐시 (모듈 단위, 콘텐츠 해시 키) ────────────────────────────── + class _LRUCache: """최대 크기 제한 LRU 캐시 — collections.OrderedDict 기반 (외부 의존성 없음).""" @@ -175,8 +178,15 @@ def _cache_key( final_score: int, ) -> str: payload = { - "hf": sorted([(h.fail_type, h.poi_name or "", h.day_index if h.day_index is not None else -1) for h in hard_fails]), - "w": sorted([(w.warning_type, w.day_index if w.day_index is not None else -1) for w in warnings]), + "hf": sorted( + [ + (h.fail_type, h.poi_name or "", h.day_index if h.day_index is not None else -1) + for h in hard_fails + ] + ), + "w": sorted( + [(w.warning_type, w.day_index if w.day_index is not None else -1) for w in warnings] + ), "p": sorted(penalty_breakdown.items()), "score": final_score, } @@ -184,7 +194,7 @@ def _cache_key( return hashlib.md5(raw.encode("utf-8")).hexdigest() -def _graph_context(poi_name: str, graph: GraphRetriever | None) -> dict | None: +def _graph_context(poi_name: str, graph: LocalEvidenceRetriever | None) -> dict | None: """지식그래프에서 POI명 검색 → 지역/카테고리 + 도보 근접 대안 근거. 그래프 미설정이거나 매칭 실패(대상 지역 밖 POI 등) 시 None — 프롬프트에 노이즈를 넣지 않는다. @@ -202,7 +212,7 @@ def _graph_context(poi_name: str, graph: GraphRetriever | None) -> dict | None: return ctx -def _find_alternatives(poi_name: str, graph: GraphRetriever | None) -> list[AlternativePOI]: +def _find_alternatives(poi_name: str, graph: LocalEvidenceRetriever | None) -> list[AlternativePOI]: """지식그래프에서 POI명 검색 → 도보 근접 대안 POI 목록. 미매칭/미설정 시 빈 리스트.""" if not poi_name or graph is None or not graph.enabled: return [] @@ -220,7 +230,7 @@ def _build_user_prompt( scores: Scores | None, plan: ItineraryPlan, final_score: int, - graph: GraphRetriever | None = None, + graph: LocalEvidenceRetriever | None = None, ) -> str: issues: list[dict] = [] @@ -236,12 +246,14 @@ def _build_user_prompt( gctx = _graph_context(hf.poi_name or "", graph) if gctx: data["지식그래프_근거"] = gctx - issues.append({ - "item_type": "hard_fail", - "item_key": hf.fail_type, - "day_index": hf.day_index, - "data": data, - }) + issues.append( + { + "item_type": "hard_fail", + "item_key": hf.fail_type, + "day_index": hf.day_index, + "data": data, + } + ) for w in warnings: data = { @@ -255,36 +267,42 @@ def _build_user_prompt( gctx = _graph_context(w.poi_names[0], graph) if gctx: data["지식그래프_근거"] = gctx - issues.append({ - "item_type": "warning", - "item_key": w.warning_type, - "day_index": w.day_index, - "data": data, - }) + issues.append( + { + "item_type": "warning", + "item_key": w.warning_type, + "day_index": w.day_index, + "data": data, + } + ) for key, penalty in penalty_breakdown.items(): - issues.append({ - "item_type": "penalty", - "item_key": key, - "data": { - "감점": penalty, - "규칙_설명": _PENALTY_RULES.get(key, key), - }, - }) + issues.append( + { + "item_type": "penalty", + "item_key": key, + "data": { + "감점": penalty, + "규칙_설명": _PENALTY_RULES.get(key, key), + }, + } + ) passed = final_score >= 60 and not hard_fails - issues.append({ - "item_type": "overall", - "item_key": "summary", - "data": { - "최종_점수": final_score, - "합격_여부": "PASS" if passed else "FAIL", - "Hard_Fail_수": len(hard_fails), - "Warning_수": len(warnings), - "총_감점": sum(penalty_breakdown.values()), - "총_가산": sum(bonus_breakdown.values()), - }, - }) + issues.append( + { + "item_type": "overall", + "item_key": "summary", + "data": { + "최종_점수": final_score, + "합격_여부": "PASS" if passed else "FAIL", + "Hard_Fail_수": len(hard_fails), + "Warning_수": len(warnings), + "총_감점": sum(penalty_breakdown.values()), + "총_가산": sum(bonus_breakdown.values()), + }, + } + ) plan_info = { "파티": f"{plan.party_type} {plan.party_size}인", @@ -332,21 +350,23 @@ def _parse_llm_response(raw: str) -> list[ExplanationItem]: text = raw.strip() if text.startswith("```"): lines = text.split("\n") - end = next((i for i, l in enumerate(lines[1:], 1) if l.strip() == "```"), len(lines)) + end = next((i for i, line in enumerate(lines[1:], 1) if line.strip() == "```"), len(lines)) text = "\n".join(lines[1:end]) data = json.loads(text) items: list[ExplanationItem] = [] for obj in data: - items.append(ExplanationItem( - item_type=obj.get("item_type", "overall"), - item_key=obj.get("item_key", "unknown"), - fact=str(obj.get("fact", "")), - rule=str(obj.get("rule", "")), - risk=obj.get("risk", "WARNING"), - suggestion=str(obj.get("suggestion", "")), - day_index=obj.get("day_index"), - )) + items.append( + ExplanationItem( + item_type=obj.get("item_type", "overall"), + item_key=obj.get("item_key", "unknown"), + fact=str(obj.get("fact", "")), + rule=str(obj.get("rule", "")), + risk=obj.get("risk", "WARNING"), + suggestion=str(obj.get("suggestion", "")), + day_index=obj.get("day_index"), + ) + ) return items @@ -360,55 +380,63 @@ def _fallback( for hf in hard_fails: day_prefix = f"{hf.day_index + 1}일차: " if hf.day_index is not None else "" - items.append(ExplanationItem( - item_type="hard_fail", - item_key=hf.fail_type, - fact=f"{day_prefix}[{hf.poi_name or '장소'}] {hf.message} (증거: {hf.evidence})", - rule=_HARD_FAIL_RULES.get(hf.fail_type, hf.message), - risk="CRITICAL", - suggestion=_HARD_FAIL_SUGGESTIONS.get(hf.fail_type, "일정을 수정하세요."), - day_index=hf.day_index, - )) + items.append( + ExplanationItem( + item_type="hard_fail", + item_key=hf.fail_type, + fact=f"{day_prefix}[{hf.poi_name or '장소'}] {hf.message} (증거: {hf.evidence})", + rule=_HARD_FAIL_RULES.get(hf.fail_type, hf.message), + risk="CRITICAL", + suggestion=_HARD_FAIL_SUGGESTIONS.get(hf.fail_type, "일정을 수정하세요."), + day_index=hf.day_index, + ) + ) for w in warnings: day_prefix = f"{w.day_index + 1}일차: " if w.day_index is not None else "" - items.append(ExplanationItem( - item_type="warning", - item_key=w.warning_type, - fact=f"{day_prefix}{w.message}", - rule=_WARNING_RULES.get(w.warning_type, w.message), - risk="WARNING", - suggestion=_WARNING_SUGGESTIONS.get(w.warning_type, "일정을 조정하세요."), - day_index=w.day_index, - )) + items.append( + ExplanationItem( + item_type="warning", + item_key=w.warning_type, + fact=f"{day_prefix}{w.message}", + rule=_WARNING_RULES.get(w.warning_type, w.message), + risk="WARNING", + suggestion=_WARNING_SUGGESTIONS.get(w.warning_type, "일정을 조정하세요."), + day_index=w.day_index, + ) + ) for key, penalty in penalty_breakdown.items(): - items.append(ExplanationItem( - item_type="penalty", - item_key=key, - fact=f"{key} 패널티 {penalty}점 감점", - rule=_PENALTY_RULES.get(key, ""), - risk="CRITICAL" if penalty > 5 else "WARNING", - suggestion=_PENALTY_SUGGESTIONS.get(key, "동선을 최적화하세요."), - )) + items.append( + ExplanationItem( + item_type="penalty", + item_key=key, + fact=f"{key} 패널티 {penalty}점 감점", + rule=_PENALTY_RULES.get(key, ""), + risk="CRITICAL" if penalty > 5 else "WARNING", + suggestion=_PENALTY_SUGGESTIONS.get(key, "동선을 최적화하세요."), + ) + ) passed = final_score >= 60 and not hard_fails - items.append(ExplanationItem( - item_type="overall", - item_key="summary", - fact=( - f"종합 점수 {final_score}/100 — " - f"Hard Fail {len(hard_fails)}건, Warning {len(warnings)}건, " - f"패널티 {sum(penalty_breakdown.values())}점" - ), - rule="60점 이상이면 PASS. Hard Fail 존재 시 점수는 59점 이하로 제한됩니다.", - risk="OK" if passed else "CRITICAL", - suggestion=( - "일정이 기준을 통과했습니다. 경고 항목을 개선하면 더 나은 여행이 됩니다." - if passed else - "Hard Fail을 먼저 해결한 후, Warning 항목을 순서대로 개선하세요." - ), - )) + items.append( + ExplanationItem( + item_type="overall", + item_key="summary", + fact=( + f"종합 점수 {final_score}/100 — " + f"Hard Fail {len(hard_fails)}건, Warning {len(warnings)}건, " + f"패널티 {sum(penalty_breakdown.values())}점" + ), + rule="60점 이상이면 PASS. Hard Fail 존재 시 점수는 59점 이하로 제한됩니다.", + risk="OK" if passed else "CRITICAL", + suggestion=( + "일정이 기준을 통과했습니다. 경고 항목을 개선하면 더 나은 여행이 됩니다." + if passed + else "Hard Fail을 먼저 해결한 후, Warning 항목을 순서대로 개선하세요." + ), + ) + ) return items @@ -423,17 +451,20 @@ def __init__( timeout_sec: float = DEFAULT_TIMEOUT_SEC, max_tokens: int = DEFAULT_MAX_TOKENS, client: Any = None, - graph_retriever: GraphRetriever | None = None, + graph_retriever: LocalEvidenceRetriever | None = None, ) -> None: self._model = model self._timeout = timeout_sec self._max_tokens = max_tokens - self._api_key = api_key or os.environ.get("ANTHROPIC_API_KEY", "") + self._api_key = Settings().anthropic_api_key if api_key is None else api_key self._client = client if self._client is None and _ANTHROPIC_AVAILABLE and self._api_key: self._client = anthropic.Anthropic(api_key=self._api_key) - # NEO4J_URI 미설정 시 GraphRetriever.enabled=False → 그래프 근거는 조용히 생략된다. - self._graph = graph_retriever if graph_retriever is not None else GraphRetriever.from_env() + self._graph = ( + graph_retriever + if graph_retriever is not None + else LocalEvidenceRetriever.from_settings() + ) def is_available(self) -> bool: return self._client is not None @@ -491,18 +522,22 @@ def generate( if improvement_hints: suggestion = f"{'·'.join(improvement_hints)}으로 점수를 추가로 높일 수 있습니다." elif final_score < 85: - suggestion = "웰니스·무장애 장소를 추가하면 보너스 가산점으로 점수를 더 높일 수 있습니다." + suggestion = ( + "웰니스·무장애 장소를 추가하면 보너스 가산점으로 점수를 더 높일 수 있습니다." + ) else: suggestion = "완성도 높은 일정입니다. 현재 구성을 유지하세요." - return [ExplanationItem( - item_type="overall", - item_key="summary", - fact=", ".join(fact_parts), - rule="60점 이상이면 PASS. Hard Fail 없이 모든 항목을 통과했습니다.", - risk="OK", - suggestion=suggestion, - )] + return [ + ExplanationItem( + item_type="overall", + item_key="summary", + fact=", ".join(fact_parts), + rule="60점 이상이면 PASS. Hard Fail 없이 모든 항목을 통과했습니다.", + risk="OK", + suggestion=suggestion, + ) + ] # 폴백 (LLM 미사용) if not self.is_available(): @@ -515,8 +550,13 @@ def generate( try: result = self._call_llm( - hard_fails, warnings, penalty_breakdown, bonus_breakdown, - scores, plan, final_score, + hard_fails, + warnings, + penalty_breakdown, + bonus_breakdown, + scores, + plan, + final_score, ) _CACHE[key] = result return result @@ -534,8 +574,13 @@ def _call_llm( final_score: int, ) -> list[ExplanationItem]: user_prompt = _build_user_prompt( - hard_fails, warnings, penalty_breakdown, - bonus_breakdown, scores, plan, final_score, + hard_fails, + warnings, + penalty_breakdown, + bonus_breakdown, + scores, + plan, + final_score, graph=self._graph, ) @@ -543,11 +588,13 @@ def _call_llm( model=self._model, max_tokens=self._max_tokens, timeout=self._timeout, - system=[{ - "type": "text", - "text": SYSTEM_PROMPT, - "cache_control": {"type": "ephemeral"}, - }], + system=[ + { + "type": "text", + "text": SYSTEM_PROMPT, + "cache_control": {"type": "ephemeral"}, + } + ], messages=[{"role": "user", "content": user_prompt}], ) diff --git a/src/explain/pipeline.py b/src/explain/pipeline.py index 8cd19a8..b79b96a 100644 --- a/src/explain/pipeline.py +++ b/src/explain/pipeline.py @@ -18,6 +18,7 @@ adjusted = clamp(adjusted, 0, 100) if hard_fails: adjusted = min(adjusted, 59) """ + from __future__ import annotations import dataclasses @@ -43,11 +44,12 @@ from src.scoring.travel_ratio import evaluate_travel_ratio from src.validation.hard_fail import HardFailDetector from src.validation.scoring import ScoreCalculator -from src.validation.vrptw_engine import VRPTWEngine +from src.validation.vrptw_engine import TimeMatrix, VRPTWEngine from src.validation.warning import WarningDetector -_DEFAULT_WELLNESS_PATH = Path("data/wellness_places.json") -_DEFAULT_BARRIER_FREE_PATH = Path("data/barrier_free_places.json") +_PROJECT_ROOT = Path(__file__).resolve().parents[2] +_DEFAULT_WELLNESS_PATH = _PROJECT_ROOT / "data" / "wellness_places.json" +_DEFAULT_BARRIER_FREE_PATH = _PROJECT_ROOT / "data" / "barrier_free_places.json" def _to_vrptw_day(pois: list[POI]) -> VRPTWDay: @@ -82,6 +84,7 @@ def _to_poi_with_category(pois: list[POI], order_offset: int = 0) -> list[POIWit @dataclasses.dataclass class _ScoreBundle: """1·3·3b·4·5·6·7·8단계(점수 계산)만의 결과. Warning·Repair·Explain 미포함.""" + adjusted: int base_score: int scores: Scores @@ -124,6 +127,7 @@ def run( sigungu_codes_per_day: list[list[str]] | None = None, user_prefs: UserPreferences | None = None, pet_friendly_enabled: bool = False, + time_matrix: TimeMatrix | None = None, ) -> ValidationResult: """파이프라인 실행 → ValidationResult 반환. @@ -137,8 +141,13 @@ def run( """ all_pois: list[POI] = [poi for day in per_day_pois for poi in day] bundle = self._score( - plan, per_day_pois, matrix, - sigungu_codes_per_day, user_prefs, pet_friendly_enabled, + plan, + per_day_pois, + matrix, + sigungu_codes_per_day, + user_prefs, + pet_friendly_enabled, + time_matrix, ) # ── 2. Warning 탐지 (per-day) ──────────────────────────────────── @@ -149,15 +158,15 @@ def run( for day_idx, day_pois in enumerate(per_day_pois): if not day_pois: continue - day_warns = self._warning.detect(plan=plan, pois=day_pois, matrix=matrix, day_index=day_idx) + day_warns = self._warning.detect( + plan=plan, pois=day_pois, matrix=matrix, day_index=day_idx + ) warnings.extend(w for w in day_warns if w.warning_type != "PURPOSE_MISMATCH") warnings.extend(self._warning._check_purpose_mismatch(plan, all_pois)) # CUMULATIVE_FATIGUE — cross-day 분석 (2일 이상 일정에서만 의미 있음) - warnings.extend( - self._warning.check_cumulative_fatigue(plan, per_day_pois, matrix) - ) + warnings.extend(self._warning.check_cumulative_fatigue(plan, per_day_pois, matrix)) rewards = generate_rewards( scores=bundle.scores, @@ -196,7 +205,12 @@ def run( ) if not repair_result.is_empty: repair_result = self._estimate_repair_gains( - plan, per_day_pois, matrix, pet_friendly_enabled, repair_result, + plan, + per_day_pois, + matrix, + pet_friendly_enabled, + repair_result, + time_matrix=time_matrix, ) repair_data = repair_result.to_dict() @@ -212,7 +226,9 @@ def run( ) # ── 12. Hard Fail POI 대안 (지식그래프 도보권 대안, 미설정/미매칭 시 빈 dict) ── - alternatives = self._explain.build_alternatives(bundle.hard_fails) if bundle.hard_fails else {} + alternatives = ( + self._explain.build_alternatives(bundle.hard_fails) if bundle.hard_fails else {} + ) return ValidationResult( plan_id=plan.plan_id, @@ -240,6 +256,7 @@ def _score( sigungu_codes_per_day: list[list[str]] | None, user_prefs: UserPreferences | None, pet_friendly_enabled: bool, + time_matrix: TimeMatrix | None = None, ) -> _ScoreBundle: """1·3·3b·4·5·6·7·8단계만 실행해 점수를 계산한다 (Warning·Repair·Explain 제외). @@ -267,12 +284,18 @@ def _score( # ── 3. ScoreCalculator → base_score ──────────────────────────── if all_pois: scores, base_score = self._scorer.compute( - plan=plan, pois=all_pois, matrix=matrix, hard_fails=hard_fails, + plan=plan, + pois=all_pois, + matrix=matrix, + hard_fails=hard_fails, ) else: scores = Scores( - efficiency=0.0, feasibility=0.0, - purpose_fit=0.0, flow=0.0, area_intensity=0.0, + efficiency=0.0, + feasibility=0.0, + purpose_fit=0.0, + flow=0.0, + area_intensity=0.0, ) base_score = 0 @@ -283,7 +306,9 @@ def _score( vrptw_penalty = 0 if vrptw_days: - _vrptw_result = VRPTWEngine().validate(VRPTWRequest(days=vrptw_days)) + _vrptw_result = VRPTWEngine(matrix=time_matrix).validate( + VRPTWRequest(days=vrptw_days, start_time=plan.start_time) + ) vrptw_optimal_route = _vrptw_result.optimal_route vrptw_efficiency_gap = _vrptw_result.efficiency_gap if vrptw_efficiency_gap is not None: @@ -304,7 +329,7 @@ def _score( travel_ratio_penalty = 0 overall_travel_ratio = 0.0 if vrptw_days: - tr_report = evaluate_travel_ratio(vrptw_days) + tr_report = evaluate_travel_ratio(vrptw_days, matrix=time_matrix) travel_ratio_penalty = tr_report.total_penalty overall_travel_ratio = tr_report.overall_ratio @@ -317,7 +342,8 @@ def _score( # ── 7. BonusEngine 가산점 ─────────────────────────────────────── bonus_result = self._bonus.compute( - pois=all_pois, party_type=plan.party_type, + pois=all_pois, + party_type=plan.party_type, pet_friendly_enabled=pet_friendly_enabled, ) @@ -353,6 +379,7 @@ def _estimate_repair_gains( matrix: dict, pet_friendly_enabled: bool, repair_result: RepairResult, + time_matrix: TimeMatrix | None = None, ) -> RepairResult: """교정 제안별 예상 점수 변화(`estimated_score_gain`)와 문제 해소 여부(`resolves_hard_fail`)를 채운다. @@ -363,18 +390,26 @@ def _estimate_repair_gains( 정밀도가 필요해지면 실제 sigungu_codes_per_day·user_prefs를 그대로 전달하도록 확장한다. """ baseline = self._score( - plan, per_day_pois, matrix, - sigungu_codes_per_day=None, user_prefs=None, + plan, + per_day_pois, + matrix, + sigungu_codes_per_day=None, + user_prefs=None, pet_friendly_enabled=pet_friendly_enabled, + time_matrix=time_matrix, ) def simulate(day_idx: int, modified_day: list[POI]) -> tuple[int, bool]: sim_days = list(per_day_pois) sim_days[day_idx] = modified_day bundle = self._score( - plan, sim_days, matrix, - sigungu_codes_per_day=None, user_prefs=None, + plan, + sim_days, + matrix, + sigungu_codes_per_day=None, + user_prefs=None, pet_friendly_enabled=pet_friendly_enabled, + time_matrix=time_matrix, ) resolved = not any(hf.day_index == day_idx for hf in bundle.capping_fails) return bundle.adjusted - baseline.adjusted, resolved @@ -384,28 +419,41 @@ def simulate(day_idx: int, modified_day: list[POI]) -> tuple[int, bool]: by_name = {p.name: p for p in per_day_pois[ro.day_index]} modified = [by_name[n] for n in ro.suggested_order if n in by_name] gain, resolved = simulate(ro.day_index, modified) - reorders.append(dataclasses.replace( - ro, estimated_score_gain=gain, resolves_hard_fail=resolved, - )) + reorders.append( + dataclasses.replace( + ro, + estimated_score_gain=gain, + resolves_hard_fail=resolved, + ) + ) time_tunes = [] for tt in repair_result.time_tunes: modified = [ p.model_copy(update={"duration_min": tt.adjustments[p.name]}) - if p.name in tt.adjustments else p + if p.name in tt.adjustments + else p for p in per_day_pois[tt.day_index] ] gain, resolved = simulate(tt.day_index, modified) - time_tunes.append(dataclasses.replace( - tt, estimated_score_gain=gain, resolves_hard_fail=resolved, - )) + time_tunes.append( + dataclasses.replace( + tt, + estimated_score_gain=gain, + resolves_hard_fail=resolved, + ) + ) deletions = [] for dl in repair_result.deletions: modified = [p for p in per_day_pois[dl.day_index] if p.name != dl.candidate_name] gain, resolved = simulate(dl.day_index, modified) - deletions.append(dataclasses.replace( - dl, estimated_score_gain=gain, resolves_hard_fail=resolved, - )) + deletions.append( + dataclasses.replace( + dl, + estimated_score_gain=gain, + resolves_hard_fail=resolved, + ) + ) return RepairResult(reorders=reorders, time_tunes=time_tunes, deletions=deletions) diff --git a/src/explain/plan_extractor.py b/src/explain/plan_extractor.py index 2b67265..222e9c1 100644 --- a/src/explain/plan_extractor.py +++ b/src/explain/plan_extractor.py @@ -4,22 +4,24 @@ 복사한 텍스트 — 을 입력받아 day/place 구조(ParsedPlanResponse)로 정규화한다. 텍스트는 쿼리 리라이팅으로, 이미지·PDF는 Claude Vision으로 동일한 JSON 스키마를 뽑아낸다. -추출된 장소명은 이후 src.api.router._resolve_poi()가 지식그래프(GraphRetriever)· -jeju_places.csv 등 기존 데이터 레이어를 그대로 통해 좌표·운영시간을 재조회하므로, +추출된 장소명은 이후 src.api.router._resolve_poi()가 로컬 근거 리트리버· +jeju_places.csv 등 기존 데이터 레이어를 통해 좌표·운영시간을 재조회하므로, 이 모듈은 "이름·주소·카테고리 추출"에만 집중한다. """ + from __future__ import annotations import base64 import json -import os import re from typing import Any from src.api.schemas import ParsedDay, ParsedPlace, ParsedPlanResponse +from src.data.models import Settings try: import anthropic + _ANTHROPIC_AVAILABLE = True except ImportError: _ANTHROPIC_AVAILABLE = False @@ -48,7 +50,9 @@ - 장소를 하나도 찾지 못하면 {"days": []} 를 반환하라. """ -_USER_PREFIX_TEXT = "다음은 여행 플래너에서 추천받은 일정을 복사한 텍스트다. 스키마에 맞게 파싱하라:\n\n" +_USER_PREFIX_TEXT = ( + "다음은 여행 플래너에서 추천받은 일정을 복사한 텍스트다. 스키마에 맞게 파싱하라:\n\n" +) _USER_PREFIX_DOC = "첨부된 여행 일정 캡처(이미지 또는 PDF)를 스키마에 맞게 파싱하라." _FENCE_RE = re.compile(r"^```(?:json)?\s*|\s*```$", re.MULTILINE) @@ -114,7 +118,7 @@ def __init__( self._model = model self._timeout = timeout_sec self._max_tokens = max_tokens - self._api_key = api_key or os.environ.get("ANTHROPIC_API_KEY", "") + self._api_key = Settings().anthropic_api_key if api_key is None else api_key self._client = client if self._client is None and _ANTHROPIC_AVAILABLE and self._api_key: self._client = anthropic.Anthropic(api_key=self._api_key) @@ -151,7 +155,6 @@ def extract_from_document(self, data: bytes, media_type: str) -> ParsedPlanRespo { "type": "text", "text": _USER_PREFIX_DOC, - "cache_control": {"type": "ephemeral"}, }, ] return self._call(content) @@ -162,7 +165,13 @@ def _call(self, content: list[dict]) -> ParsedPlanResponse: model=self._model, max_tokens=self._max_tokens, timeout=self._timeout, - system=_SYSTEM_PROMPT, + system=[ + { + "type": "text", + "text": _SYSTEM_PROMPT, + "cache_control": {"type": "ephemeral"}, + } + ], messages=[{"role": "user", "content": content}], ) except Exception as e: @@ -177,9 +186,13 @@ def _demo() -> None: ) assert resp.days[0].places[0].name == "성산일출봉" - fb = _fallback_text_parse("Day 1\n1 다려도 여행지\n2 바람벽에흰당나귀 카페\n\nDay 2\n월정리해변") + fb = _fallback_text_parse( + "Day 1\n1 다려도 여행지\n2 바람벽에흰당나귀 카페\n\nDay 2\n월정리해변" + ) assert [p.name for d in fb.days for p in d.places] == [ - "다려도", "바람벽에흰당나귀", "월정리해변", + "다려도", + "바람벽에흰당나귀", + "월정리해변", ] assert len(fb.days) == 2 print("plan_extractor self-check OK") diff --git a/src/explain/repair.py b/src/explain/repair.py index 2d162cd..20f3698 100644 --- a/src/explain/repair.py +++ b/src/explain/repair.py @@ -8,6 +8,7 @@ 이 엔진은 '장소 대체(substitution)'를 수행하지 않는다. 사용자가 선택한 POI 목록을 보존하며 제약 조건만을 최적화하는 수학적 교정 도구다. """ + from __future__ import annotations import dataclasses @@ -22,9 +23,9 @@ from src.utils.geo import build_dist_cache, get_travel_min, haversine_km from src.validation.hard_fail import HardFailDetector -_MAX_PERM_N: int = 7 # 7! = 5040 — 탐색 허용 상한 -_MIN_DWELL_RATIO: float = 0.5 # 최소 체류 = 원래의 50% -_MIN_DWELL_ABS: int = 20 # 절대 최솟값 20분 +_MAX_PERM_N: int = 7 # 7! = 5040 — 탐색 허용 상한 +_MIN_DWELL_RATIO: float = 0.5 # 최소 체류 = 원래의 50% +_MIN_DWELL_ABS: int = 20 # 절대 최솟값 20분 def _norm(name: str) -> str: @@ -80,8 +81,22 @@ class RepairResult: def is_empty(self) -> bool: return not (self.reorders or self.time_tunes or self.deletions) + @property + def total_estimated_gain(self) -> int: + """모든 제안을 적용했을 때 예상 총 점수 상승분. + + 같은 날짜의 제안들은 서로 대안(하나만 적용)이므로 최댓값만 취하고, + 서로 다른 날짜의 제안은 독립적이므로 합산한다. + """ + per_day: dict[int, int] = {} + for sug in (*self.reorders, *self.time_tunes, *self.deletions): + per_day[sug.day_index] = max(per_day.get(sug.day_index, 0), sug.estimated_score_gain) + return sum(per_day.values()) + def to_dict(self) -> dict: - return dataclasses.asdict(self) + d = dataclasses.asdict(self) + d["total_estimated_gain"] = self.total_estimated_gain + return d class RepairEngine: @@ -194,8 +209,7 @@ def _try_time_tune( return None saved = sum( - poi.duration_min - adjustments[poi.name] - for poi in pois if poi.name in adjustments + poi.duration_min - adjustments[poi.name] for poi in pois if poi.name in adjustments ) return TimeTuneSuggestion( day_index=day_idx, @@ -224,7 +238,7 @@ def _suggest_deletion( max_savings = -1.0 best_idx = -1 - for i, poi in enumerate(pois): + for i, _poi in enumerate(pois): before = pois[i - 1] if i > 0 else None after = pois[i + 1] if i < len(pois) - 1 else None @@ -236,7 +250,8 @@ def _suggest_deletion( bypass = ( haversine_km(before.lat, before.lng, after.lat, after.lng) - if before and after else 0.0 + if before and after + else 0.0 ) savings = detour - bypass @@ -256,7 +271,9 @@ def _suggest_deletion( ) if nearby: reason += ( - " 대신 근처 음식점 " + ", ".join(f"{a.name}({a.distance_km}km)" for a in nearby) + "을(를) 추천합니다." + " 대신 근처 음식점 " + + ", ".join(f"{a.name}({a.distance_km}km)" for a in nearby) + + "을(를) 추천합니다." ) else: reason += " 반경 2km 내 대체 가능한 음식점을 찾지 못했습니다." diff --git a/src/matrix/__init__.py b/src/matrix/__init__.py index 56477fe..a59d6cc 100644 --- a/src/matrix/__init__.py +++ b/src/matrix/__init__.py @@ -1,4 +1,5 @@ """matrix — 이동시간 행렬 구현체 패키지.""" + from src.matrix.redis_matrix import RedisTimeMatrix __all__ = ["RedisTimeMatrix"] diff --git a/src/matrix/redis_matrix.py b/src/matrix/redis_matrix.py index 804accf..025fdd0 100644 --- a/src/matrix/redis_matrix.py +++ b/src/matrix/redis_matrix.py @@ -13,17 +13,18 @@ if matrix is None: matrix = KakaoMobilityMatrix.from_env(cache_path="data/route_cache.json") """ + from __future__ import annotations import os from pathlib import Path -from typing import Any from src.data.models import VRPTWPlace from src.validation.vrptw_engine import HaversineMatrix, TimeMatrix try: import redis as _redis_lib + _REDIS_AVAILABLE = True except ImportError: _REDIS_AVAILABLE = False @@ -42,13 +43,14 @@ class RedisTimeMatrix(TimeMatrix): def __init__(self, redis_url: str) -> None: if not _REDIS_AVAILABLE: - raise RuntimeError( - "redis-py 미설치. `pip install redis` 후 사용하세요." - ) + raise RuntimeError("redis-py 미설치. `pip install redis` 후 사용하세요.") self._client = _redis_lib.from_url(redis_url, decode_responses=True) self._fallback = HaversineMatrix() self._stats: dict[str, int] = { - "cache_hit": 0, "cache_miss": 0, "fallback": 0, "write": 0, + "cache_hit": 0, + "cache_miss": 0, + "fallback": 0, + "write": 0, } # ── 팩토리 ─────────────────────────────────────────────────────────── @@ -56,7 +58,7 @@ def __init__(self, redis_url: str) -> None: def from_env( cls, env_path: str | Path | None = None, - ) -> "RedisTimeMatrix | None": + ) -> RedisTimeMatrix | None: """REDIS_URL 환경변수가 있으면 인스턴스 반환, 없으면 None.""" if env_path: cls._load_dotenv(Path(env_path)) diff --git a/src/matrix/route_matrix.py b/src/matrix/route_matrix.py new file mode 100644 index 0000000..6500837 --- /dev/null +++ b/src/matrix/route_matrix.py @@ -0,0 +1,93 @@ +"""운영 검증에 주입할 indexed 이동시간 행렬 서비스.""" + +from __future__ import annotations + +from pathlib import Path + +from src.data.models import POI, Settings, VRPTWPlace +from src.utils.geo import haversine_km +from src.validation.kakao_matrix import KakaoMobilityMatrix +from src.validation.vrptw_engine import HaversineMatrix, TimeMatrix + + +class RouteMatrixService: + """Kakao Mobility를 우선 사용하고 보정된 Haversine으로 폴백한다.""" + + def __init__(self, provider: TimeMatrix, mode: str | None = None): + self.provider = provider + self._mode = mode or ( + "kakao" if isinstance(provider, KakaoMobilityMatrix) else "haversine_fallback" + ) + + @classmethod + def from_settings( + cls, + settings: Settings | None = None, + cache_path: str | Path | None = None, + ) -> RouteMatrixService: + settings = settings or Settings() + api_key = settings.kakao_mobility_key or settings.kakao_rest_api_key + if not api_key: + return cls(HaversineMatrix()) + + if cache_path is None: + cache_path = Path(__file__).resolve().parents[2] / "data" / "route_cache.json" + return cls(KakaoMobilityMatrix(api_key=api_key, cache_path=cache_path)) + + @property + def uses_kakao(self) -> bool: + return isinstance(self.provider, KakaoMobilityMatrix) + + @staticmethod + def _to_vrptw_place(poi: POI) -> VRPTWPlace: + return VRPTWPlace( + name=poi.name, + lat=poi.lat, + lng=poi.lng, + open=poi.open_start, + close=poi.open_end, + stay_duration=poi.duration_min, + ) + + async def prepare(self, pois: list[POI]) -> None: + """현재 요청의 모든 장소 쌍을 API/캐시에 미리 적재한다.""" + places = [self._to_vrptw_place(poi) for poi in pois] + if hasattr(self.provider, "aprefetch_matrix") and len(places) > 1: + await self.provider.aprefetch_matrix(places) # type: ignore[attr-defined] + + def get_travel_time(self, origin: VRPTWPlace, destination: VRPTWPlace) -> int: + """VRPTWEngine이 사용하는 초 단위 이동시간.""" + return self.provider.get_travel_time(origin, destination) + + def get_travel_min(self, origin: POI, destination: POI) -> float: + """기존 dict 기반 검증기가 사용하는 분 단위 이동시간.""" + return ( + self.provider.get_travel_time( + self._to_vrptw_place(origin), + self._to_vrptw_place(destination), + ) + / 60.0 + ) + + async def build(self, pois: list[POI]) -> dict[int, dict[int, dict[str, float | str]]]: + places = [self._to_vrptw_place(poi) for poi in pois] + await self.prepare(pois) + + mode = self._mode + matrix: dict[int, dict[int, dict[str, float | str]]] = {} + for i, origin in enumerate(places): + for j, destination in enumerate(places): + if i == j: + continue + seconds = self.provider.get_travel_time(origin, destination) + matrix.setdefault(i, {})[j] = { + "travel_min": seconds / 60.0, + "distance_km": haversine_km( + origin.lat, + origin.lng, + destination.lat, + destination.lng, + ), + "mode": mode, + } + return matrix diff --git a/src/scoring/bonus_engine.py b/src/scoring/bonus_engine.py index a1f0a83..646cd87 100644 --- a/src/scoring/bonus_engine.py +++ b/src/scoring/bonus_engine.py @@ -1,4 +1,5 @@ """가산점 엔진 — 웰니스·무장애 여행지 방문 보너스.""" + from __future__ import annotations import json @@ -25,9 +26,9 @@ class BonusResult: accessibility_bonus: int pet_friendly_bonus: int total_bonus: int - wellness_matched: list[str] # 매칭된 POI 이름 목록 - accessibility_matched: list[str] # 매칭된 POI 이름 목록 - pet_friendly_matched: list[str] # 매칭된 POI 이름 목록 + wellness_matched: list[str] # 매칭된 POI 이름 목록 + accessibility_matched: list[str] # 매칭된 POI 이름 목록 + pet_friendly_matched: list[str] # 매칭된 POI 이름 목록 @dataclass(frozen=True) @@ -56,7 +57,7 @@ def from_dataset( cls, wellness_path: Path | str = "data/wellness_places.json", barrier_free_path: Path | str = "data/barrier_free_places.json", - ) -> "BonusEngine": + ) -> BonusEngine: """로컬 JSON 데이터셋에서 로드. 파일 없으면 빈 엔진 반환.""" wellness: list[_PlaceCoord] = [] barrier_free: list[_PlaceCoord] = [] @@ -107,18 +108,14 @@ def compute( if pet_friendly_enabled and poi.pet_friendly: pet_friendly_matched.append(poi.name) - wellness_bonus = min( - len(wellness_matched) * WELLNESS_BONUS_PER_PLACE, BONUS_CAP - ) + wellness_bonus = min(len(wellness_matched) * WELLNESS_BONUS_PER_PLACE, BONUS_CAP) accessibility_bonus = min( len(accessibility_matched) * ACCESSIBILITY_BONUS_PER_PLACE, BONUS_CAP ) pet_friendly_bonus = min( len(pet_friendly_matched) * PET_FRIENDLY_BONUS_PER_PLACE, BONUS_CAP ) - total_bonus = min( - wellness_bonus + accessibility_bonus + pet_friendly_bonus, BONUS_CAP - ) + total_bonus = min(wellness_bonus + accessibility_bonus + pet_friendly_bonus, BONUS_CAP) return BonusResult( wellness_bonus=wellness_bonus, diff --git a/src/scoring/cluster_dispersion.py b/src/scoring/cluster_dispersion.py index d1fb8f8..1025eb8 100644 --- a/src/scoring/cluster_dispersion.py +++ b/src/scoring/cluster_dispersion.py @@ -14,9 +14,10 @@ eps=2.0km (도보 25분). sklearn 없으면 자동 스킵. per-request 즉석 계산 (4~8 POI → <1ms, DB 사전 클러스터링 불필요). """ + from __future__ import annotations -from dataclasses import dataclass, field +from dataclasses import dataclass from src.data.models import DeepDiveItem, VRPTWDay, VRPTWPlace from src.utils.geo import haversine_km as _haversine_km @@ -24,6 +25,7 @@ try: import numpy as np from sklearn.cluster import DBSCAN as _DBSCAN + _SKLEARN_AVAILABLE = True except ImportError: _SKLEARN_AVAILABLE = False @@ -55,7 +57,7 @@ GEO_BT_CRIT: int = 2 PENALTY_GEO_BT_WARN: int = 5 PENALTY_GEO_BT_CRIT: int = 10 -DBSCAN_EPS_KM: float = 2.0 # 도보 25분 ≈ 2km +DBSCAN_EPS_KM: float = 2.0 # 도보 25분 ≈ 2km # ── 합산 캡 ────────────────────────────────────────────────────────── COMBINED_PENALTY_CAP: int = 20 @@ -104,21 +106,22 @@ def count_geo_cluster_backtracks( return 0 coords = np.radians([[p.lat, p.lng] for p in places]) eps_rad = eps_km / _EARTH_R_KM - labels: list[int] = _DBSCAN( - eps=eps_rad, min_samples=1, metric="haversine" - ).fit_predict(coords).tolist() + labels: list[int] = ( + _DBSCAN(eps=eps_rad, min_samples=1, metric="haversine").fit_predict(coords).tolist() + ) return _count_label_backtracks(labels) @dataclass(frozen=True) class DayDispersionMetric: """일자별 밀집도 측정.""" + day_index: int sigungu_switches: int max_pairwise_km: float sigungu_codes_visited: list[str] - area_backtrack_count: int = 0 # M3 시군구 기반 - geo_cluster_backtrack: int = 0 # M4 DBSCAN 지리 기반 + area_backtrack_count: int = 0 # M3 시군구 기반 + geo_cluster_backtrack: int = 0 # M4 DBSCAN 지리 기반 @dataclass(frozen=True) @@ -136,7 +139,7 @@ def _compute_day_dispersion( """하루 일정의 네 메트릭 계산.""" # ── M1 ── sigungus: list[str] = [c for c in (sigungu_codes or []) if c] - switches = sum(1 for a, b in zip(sigungus, sigungus[1:]) if a != b) + switches = sum(1 for a, b in zip(sigungus, sigungus[1:], strict=False) if a != b) # ── M2 ── max_dist = 0.0 @@ -212,71 +215,82 @@ def evaluate_cluster_dispersion( total_penalty = 0 for idx, day in enumerate(days): - sg = sigungu_codes_per_day[idx] if sigungu_codes_per_day and idx < len(sigungu_codes_per_day) else None + sg = ( + sigungu_codes_per_day[idx] + if sigungu_codes_per_day and idx < len(sigungu_codes_per_day) + else None + ) metric = _compute_day_dispersion(idx, day.places, sg) per_day.append(metric) - sw_pen = _switch_penalty(metric.sigungu_switches) - ds_pen = _distance_penalty(metric.max_pairwise_km) - bt_pen = _backtrack_penalty(metric.area_backtrack_count) + sw_pen = _switch_penalty(metric.sigungu_switches) + ds_pen = _distance_penalty(metric.max_pairwise_km) + bt_pen = _backtrack_penalty(metric.area_backtrack_count) geo_pen = _geo_bt_penalty(metric.geo_cluster_backtrack, metric.area_backtrack_count) day_penalty = min(sw_pen + ds_pen + bt_pen + geo_pen, COMBINED_PENALTY_CAP) total_penalty += day_penalty if bt_pen > 0: - deep_dive.append(DeepDiveItem( - fact=( - f"{idx + 1}일차 구역 백트래킹 {metric.area_backtrack_count}회 탐지 " - f"(이미 방문한 시군구에 다시 되돌아옴)" - ), - rule="area_backtrack", - risk="WARNING" if bt_pen == PENALTY_BACKTRACK_WARN else "CRITICAL", - suggestion=( - "이미 방문한 지역으로 되돌아가는 동선이 있습니다. " - "같은 구역 방문을 연속으로 묶어 이동 낭비를 줄이세요." - ), - )) + deep_dive.append( + DeepDiveItem( + fact=( + f"{idx + 1}일차 구역 백트래킹 {metric.area_backtrack_count}회 탐지 " + f"(이미 방문한 시군구에 다시 되돌아옴)" + ), + rule="area_backtrack", + risk="WARNING" if bt_pen == PENALTY_BACKTRACK_WARN else "CRITICAL", + suggestion=( + "이미 방문한 지역으로 되돌아가는 동선이 있습니다. " + "같은 구역 방문을 연속으로 묶어 이동 낭비를 줄이세요." + ), + ) + ) if geo_pen > 0: - deep_dive.append(DeepDiveItem( - fact=( - f"{idx + 1}일차 지리적 클러스터 백트래킹 {metric.geo_cluster_backtrack}회 탐지 " - f"(같은 시군구 내 지리적으로 분산된 구역 간 왕복)" - ), - rule="geo_cluster_backtrack", - risk="WARNING" if geo_pen == PENALTY_GEO_BT_WARN else "CRITICAL", - suggestion=( - "같은 행정구역 안에서도 멀리 떨어진 장소를 왕복하고 있습니다. " - "인접한 장소끼리 묶어 방문 순서를 재배치하세요." - ), - )) + deep_dive.append( + DeepDiveItem( + fact=( + f"{idx + 1}일차 지리적 클러스터 백트래킹 {metric.geo_cluster_backtrack}회 탐지 " + f"(같은 시군구 내 지리적으로 분산된 구역 간 왕복)" + ), + rule="geo_cluster_backtrack", + risk="WARNING" if geo_pen == PENALTY_GEO_BT_WARN else "CRITICAL", + suggestion=( + "같은 행정구역 안에서도 멀리 떨어진 장소를 왕복하고 있습니다. " + "인접한 장소끼리 묶어 방문 순서를 재배치하세요." + ), + ) + ) if sw_pen > 0: - deep_dive.append(DeepDiveItem( - fact=( - f"{idx + 1}일차 시군구 전환 {metric.sigungu_switches}회 " - f"(방문: {', '.join(metric.sigungu_codes_visited)})" - ), - rule="cluster_dispersion_switches", - risk="WARNING" if sw_pen == PENALTY_SWITCH_WARN else "CRITICAL", - suggestion=( - "하루 안에 너무 많은 시군구를 이동합니다. " - "같은 지역 내 장소로 묶어주세요." - ), - )) + deep_dive.append( + DeepDiveItem( + fact=( + f"{idx + 1}일차 시군구 전환 {metric.sigungu_switches}회 " + f"(방문: {', '.join(metric.sigungu_codes_visited)})" + ), + rule="cluster_dispersion_switches", + risk="WARNING" if sw_pen == PENALTY_SWITCH_WARN else "CRITICAL", + suggestion=( + "하루 안에 너무 많은 시군구를 이동합니다. 같은 지역 내 장소로 묶어주세요." + ), + ) + ) if ds_pen > 0: risk = "CRITICAL" if ds_pen == PENALTY_DIST_CRIT else "WARNING" - deep_dive.append(DeepDiveItem( - fact=( - f"{idx + 1}일차 최대 직선거리 {metric.max_pairwise_km}km " - f"({len(day.places)}개 장소)" - ), - rule="cluster_dispersion_distance", - risk=risk, # type: ignore[arg-type] - suggestion=( - "하루 안에 멀리 떨어진 장소들이 섞여 있습니다. " - "1일차는 목적지 근처에 집중하고, 다른 지역은 다른 날로 분리하세요." - ), - )) + deep_dive.append( + DeepDiveItem( + fact=( + f"{idx + 1}일차 최대 직선거리 {metric.max_pairwise_km}km " + f"({len(day.places)}개 장소)" + ), + rule="cluster_dispersion_distance", + risk=risk, # type: ignore[arg-type] + suggestion=( + "하루 안에 멀리 떨어진 장소들이 섞여 있습니다. " + "1일차는 목적지 근처에 집중하고, 다른 지역은 다른 날로 분리하세요." + ), + ) + ) return ClusterDispersionReport( per_day=per_day, diff --git a/src/scoring/congestion_engine.py b/src/scoring/congestion_engine.py index a1538f2..a245813 100644 --- a/src/scoring/congestion_engine.py +++ b/src/scoring/congestion_engine.py @@ -7,24 +7,24 @@ 3. 카테고리 평균 (poi_name에 지역/유형 접두어 기반 클러스터링) 4. 전체 평균 """ + from __future__ import annotations import unicodedata from dataclasses import dataclass -from enum import Enum +from enum import StrEnum from functools import cached_property from pathlib import Path -from typing import TYPE_CHECKING import pandas as pd -if TYPE_CHECKING: - from src.data.seoul_citydata_client import SeoulCityDataClient +from src.data.models import Settings +from src.data.seoul_citydata_client import SeoulCityDataClient _DEFAULT_CSV = Path(__file__).parent.parent.parent / "data" / "congestion_stats.csv" -class CongestionLevel(str, Enum): +class CongestionLevel(StrEnum): LOW = "LOW" MEDIUM = "MEDIUM" HIGH = "HIGH" @@ -35,11 +35,11 @@ class CongestionLevel(str, Enum): class CongestionResult: poi_name: str month: int - congestion_score: float # 0.0 ~ 1.0 + congestion_score: float # 0.0 ~ 1.0 level: CongestionLevel avg_visitors: float - matched_poi: str # 실제 매칭된 POI명 - fallback_used: str # "exact" | "partial" | "category" | "global" + matched_poi: str # 실제 매칭된 POI명 + fallback_used: str # "exact" | "partial" | "category" | "global" def _normalize(s: str) -> str: @@ -75,6 +75,16 @@ def __init__( self._prefix_len = category_prefix_len self._seoul: SeoulCityDataClient | None = seoul_client + @classmethod + def from_settings(cls, settings: Settings | None = None) -> CongestionEngine: + settings = settings or Settings() + seoul_client = ( + SeoulCityDataClient(api_key=settings.seoul_data_api_key) + if settings.seoul_data_api_key.strip() + else None + ) + return cls(seoul_client=seoul_client) + @cached_property def _df(self) -> pd.DataFrame: if not self._csv_path.exists(): @@ -100,13 +110,12 @@ def _global_avg_by_month(self) -> dict[int, tuple[float, float]]: def _category_avg_by_month(self) -> dict[str, dict[int, tuple[float, float]]]: """prefix → month → (avg_visitors, congestion_score).""" df = self._df.copy() - df["prefix"] = df["poi_name"].str[:self._prefix_len] + df["prefix"] = df["poi_name"].str[: self._prefix_len] result: dict[str, dict[int, tuple[float, float]]] = {} for prefix, group in df.groupby("prefix"): agg = group.groupby("month")[["avg_visitors", "congestion_score"]].mean() result[prefix] = { - int(m): (row["avg_visitors"], row["congestion_score"]) - for m, row in agg.iterrows() + int(m): (row["avg_visitors"], row["congestion_score"]) for m, row in agg.iterrows() } return result @@ -150,7 +159,8 @@ def score(self, poi_name: str, month: int) -> CongestionResult: realtime = self._seoul.get(poi_name) if realtime is not None: return CongestionResult( - poi_name=poi_name, month=month, + poi_name=poi_name, + month=month, congestion_score=realtime.score, level=_score_to_level(realtime.score), avg_visitors=float((realtime.ppltn_min + realtime.ppltn_max) // 2), @@ -164,11 +174,13 @@ def score(self, poi_name: str, month: int) -> CongestionResult: row = self._lookup_exact(norm_name, month) if row is not None: return CongestionResult( - poi_name=poi_name, month=month, + poi_name=poi_name, + month=month, congestion_score=float(row["congestion_score"]), level=_score_to_level(float(row["congestion_score"])), avg_visitors=float(row["avg_visitors"]), - matched_poi=row["poi_name"], fallback_used="exact", + matched_poi=row["poi_name"], + fallback_used="exact", ) # 2. Partial match @@ -176,42 +188,46 @@ def score(self, poi_name: str, month: int) -> CongestionResult: if partial is not None: row, matched = partial return CongestionResult( - poi_name=poi_name, month=month, + poi_name=poi_name, + month=month, congestion_score=float(row["congestion_score"]), level=_score_to_level(float(row["congestion_score"])), avg_visitors=float(row["avg_visitors"]), - matched_poi=matched, fallback_used="partial", + matched_poi=matched, + fallback_used="partial", ) # 3. Category average (prefix-based) - prefix = norm_name[:self._prefix_len] + prefix = norm_name[: self._prefix_len] cat_data = self._category_avg_by_month.get(prefix, {}) if month in cat_data: avg_v, score = cat_data[month] return CongestionResult( - poi_name=poi_name, month=month, + poi_name=poi_name, + month=month, congestion_score=round(score, 4), level=_score_to_level(score), avg_visitors=round(avg_v, 1), - matched_poi=f"[카테고리:{prefix}*]", fallback_used="category", + matched_poi=f"[카테고리:{prefix}*]", + fallback_used="category", ) # 4. Global average avg_v, score = self._global_avg_by_month.get(month, (0.0, 0.5)) return CongestionResult( - poi_name=poi_name, month=month, + poi_name=poi_name, + month=month, congestion_score=round(score, 4), level=_score_to_level(score), avg_visitors=round(avg_v, 1), - matched_poi="[전체평균]", fallback_used="global", + matched_poi="[전체평균]", + fallback_used="global", ) def is_crowded(self, poi_name: str, month: int, threshold: float = 0.7) -> bool: """congestion_score >= threshold 이면 True.""" return self.score(poi_name, month).congestion_score >= threshold - def score_itinerary( - self, pois: list[str], month: int - ) -> list[CongestionResult]: + def score_itinerary(self, pois: list[str], month: int) -> list[CongestionResult]: """여행 일정의 모든 POI 혼잡도를 일괄 반환한다.""" return [self.score(poi, month) for poi in pois] diff --git a/src/scoring/reward_engine.py b/src/scoring/reward_engine.py index 57ac827..eb99530 100644 --- a/src/scoring/reward_engine.py +++ b/src/scoring/reward_engine.py @@ -10,6 +10,7 @@ - purpose_fit ≥ 0.80 → 여행 테마 일치 - n_warnings == 0 → 경고 없음 """ + from __future__ import annotations from src.data.models import Scores @@ -55,9 +56,7 @@ def generate_rewards( ) if scores.purpose_fit >= PURPOSE_FIT_EXCELLENT: - messages.append( - "선택하신 장소들이 여행 목적에 잘 맞습니다. 테마에 집중된 알찬 일정이에요." - ) + messages.append("선택하신 장소들이 여행 목적에 잘 맞습니다. 테마에 집중된 알찬 일정이에요.") if n_warnings == 0: messages.append( diff --git a/src/scoring/theme_alignment.py b/src/scoring/theme_alignment.py index ecb0b31..5785286 100644 --- a/src/scoring/theme_alignment.py +++ b/src/scoring/theme_alignment.py @@ -10,29 +10,30 @@ - Prompt Caching: system 프롬프트는 cache_control: ephemeral 적용 - Timeout: 10초, 실패 시 정보성 DeepDive """ + from __future__ import annotations import hashlib import json -import os from dataclasses import dataclass, field from typing import Any -from src.data.models import DeepDiveItem +from src.data.models import DeepDiveItem, Settings from src.data.theme_taxonomy import TRAVEL_STYLE_DESCRIPTIONS, UserPreferences # Anthropic SDK는 선택적 의존성 try: import anthropic + _ANTHROPIC_AVAILABLE = True except ImportError: _ANTHROPIC_AVAILABLE = False # ── 패널티 임계값 ───────────────────────────────────────────────────── -WARN_THRESHOLD: float = 0.8 # 0.6 ≤ score < 0.8 → -5 -RISK_THRESHOLD: float = 0.6 # 0.4 ≤ score < 0.6 → -10 -CRIT_THRESHOLD: float = 0.4 # score < 0.4 → -20 +WARN_THRESHOLD: float = 0.8 # 0.6 ≤ score < 0.8 → -5 +RISK_THRESHOLD: float = 0.6 # 0.4 ≤ score < 0.6 → -10 +CRIT_THRESHOLD: float = 0.4 # score < 0.4 → -20 PENALTY_WARN: int = 5 PENALTY_RISK: int = 10 @@ -67,8 +68,9 @@ @dataclass class POIWithCategory: """LLM에게 전달할 POI 정보 (카테고리 명 포함).""" + name: str - category_name: str = "" # 예: "자연관광지/산", "음식점/카페" + category_name: str = "" # 예: "자연관광지/산", "음식점/카페" visit_order: int = 0 stay_minutes: int = 0 @@ -76,15 +78,16 @@ class POIWithCategory: @dataclass(frozen=True) class ThemeJudgment: """LLM 평가 결과.""" - score: float # 0.0 ~ 1.0 + + score: float # 0.0 ~ 1.0 reasoning: str mismatched_places: list[str] = field(default_factory=list) - api_used: bool = True # False = LLM 호출 없이 폴백 + api_used: bool = True # False = LLM 호출 없이 폴백 @dataclass(frozen=True) class ThemeAlignmentReport: - judgment: ThemeJudgment | None # None = LLM 미호출 + judgment: ThemeJudgment | None # None = LLM 미호출 penalty: int deep_dive: list[DeepDiveItem] @@ -151,7 +154,7 @@ def _parse_llm_response(raw_text: str) -> ThemeJudgment: data = json.loads(text) score = float(data.get("score", 0.5)) - score = max(0.0, min(1.0, score)) # clamp + score = max(0.0, min(1.0, score)) # clamp return ThemeJudgment( score=score, reasoning=str(data.get("reasoning", "")), @@ -174,12 +177,12 @@ def __init__( model: str = DEFAULT_MODEL, timeout_sec: float = DEFAULT_TIMEOUT_SEC, max_tokens: int = DEFAULT_MAX_TOKENS, - client: Any = None, # 테스트에서 주입 가능 + client: Any = None, # 테스트에서 주입 가능 ) -> None: self._model = model self._timeout = timeout_sec self._max_tokens = max_tokens - self._api_key = api_key or os.environ.get("ANTHROPIC_API_KEY", "") + self._api_key = Settings().anthropic_api_key if api_key is None else api_key self._client = client if self._client is None and _ANTHROPIC_AVAILABLE and self._api_key: self._client = anthropic.Anthropic(api_key=self._api_key) @@ -196,19 +199,18 @@ def evaluate( """테마 일치도 평가 + 패널티 산출.""" # ── LLM 사용 불가 케이스: 정보성 DeepDive만 ── if not self.is_available(): - reason = ( - "ANTHROPIC_API_KEY 미설정" if not self._api_key - else "anthropic SDK 미설치" - ) + reason = "ANTHROPIC_API_KEY 미설정" if not self._api_key else "anthropic SDK 미설치" return ThemeAlignmentReport( judgment=None, penalty=0, - deep_dive=[DeepDiveItem( - fact=f"테마 일치성 평가 미수행 — {reason}", - rule="theme_alignment_skipped", - risk="OK", - suggestion="ANTHROPIC_API_KEY 환경변수 설정 후 재실행하세요.", - )], + deep_dive=[ + DeepDiveItem( + fact=f"테마 일치성 평가 미수행 — {reason}", + rule="theme_alignment_skipped", + risk="OK", + suggestion="ANTHROPIC_API_KEY 환경변수 설정 후 재실행하세요.", + ) + ], ) # ── 캐시 조회 ── @@ -223,12 +225,14 @@ def evaluate( return ThemeAlignmentReport( judgment=None, penalty=0, - deep_dive=[DeepDiveItem( - fact=f"LLM 호출 실패 — {type(e).__name__}: {str(e)[:100]}", - rule="theme_alignment_error", - risk="OK", - suggestion="네트워크/API 키 확인 후 재시도하세요.", - )], + deep_dive=[ + DeepDiveItem( + fact=f"LLM 호출 실패 — {type(e).__name__}: {str(e)[:100]}", + rule="theme_alignment_error", + risk="OK", + suggestion="네트워크/API 키 확인 후 재시도하세요.", + ) + ], ) # ── 패널티 + DeepDive 생성 ── @@ -237,20 +241,23 @@ def evaluate( if penalty > 0: mismatched_str = ( f" 어긋난 장소: {', '.join(judgment.mismatched_places)}" - if judgment.mismatched_places else "" + if judgment.mismatched_places + else "" + ) + deep_dive.append( + DeepDiveItem( + fact=( + f"테마 일치도 {judgment.score:.2f}/1.0 — " + f"{judgment.reasoning}{mismatched_str}" + ), + rule="theme_alignment", + risk=risk, # type: ignore[arg-type] + suggestion=( + "선택하신 테마에 맞지 않는 장소들을 더 적합한 곳으로 교체하거나, " + "테마를 다시 선택해 보세요." + ), + ) ) - deep_dive.append(DeepDiveItem( - fact=( - f"테마 일치도 {judgment.score:.2f}/1.0 — " - f"{judgment.reasoning}{mismatched_str}" - ), - rule="theme_alignment", - risk=risk, # type: ignore[arg-type] - suggestion=( - "선택하신 테마에 맞지 않는 장소들을 더 적합한 곳으로 교체하거나, " - "테마를 다시 선택해 보세요." - ), - )) return ThemeAlignmentReport( judgment=judgment, @@ -271,11 +278,13 @@ def _call_llm( model=self._model, max_tokens=self._max_tokens, timeout=self._timeout, - system=[{ - "type": "text", - "text": SYSTEM_PROMPT, - "cache_control": {"type": "ephemeral"}, - }], + system=[ + { + "type": "text", + "text": SYSTEM_PROMPT, + "cache_control": {"type": "ephemeral"}, + } + ], messages=[{"role": "user", "content": user_prompt}], ) diff --git a/src/scoring/travel_ratio.py b/src/scoring/travel_ratio.py index 4d0ef6f..c88d4b9 100644 --- a/src/scoring/travel_ratio.py +++ b/src/scoring/travel_ratio.py @@ -5,6 +5,7 @@ 기존 `phases/0-setup/analyze.py`의 정의 유지. 임계값은 구석구석 50개 / 트리플 38개 실측 P75/P90 기반. """ + from __future__ import annotations from dataclasses import dataclass @@ -12,7 +13,6 @@ from src.data.models import DeepDiveItem, VRPTWDay, VRPTWPlace from src.validation.vrptw_engine import HaversineMatrix, TimeMatrix - # ── 임계값 (구석구석 P75=0.20, P90=0.50 기반) ───────────────────────── WARN_THRESHOLD: float = 0.20 RISK_THRESHOLD: float = 0.40 @@ -27,6 +27,7 @@ @dataclass(frozen=True) class DayRatioMetric: """일자별 비율 측정 결과.""" + day_index: int travel_sec: int dwell_sec: int @@ -36,9 +37,10 @@ class DayRatioMetric: @dataclass(frozen=True) class TravelRatioReport: """전체 평가 리포트.""" + per_day: list[DayRatioMetric] - overall_ratio: float # 전체 일정 합산 기준 - total_penalty: int # 일자별 패널티 합산 + overall_ratio: float # 전체 일정 합산 기준 + total_penalty: int # 일자별 패널티 합산 deep_dive: list[DeepDiveItem] @@ -102,18 +104,20 @@ def evaluate_travel_ratio( total_penalty += penalty travel_min = metric.travel_sec // 60 dwell_min = metric.dwell_sec // 60 - deep_dive.append(DeepDiveItem( - fact=( - f"{idx + 1}일차 이동 비율 {metric.travel_ratio:.1%} " - f"(이동 {travel_min}분 / 관광 {dwell_min}분)" - ), - rule="travel_ratio", - risk=risk, # type: ignore[arg-type] - suggestion=( - "이동 시간이 관광 시간 대비 너무 큽니다. " - "더 가까운 장소로 변경하거나 일정을 단순화하세요." - ), - )) + deep_dive.append( + DeepDiveItem( + fact=( + f"{idx + 1}일차 이동 비율 {metric.travel_ratio:.1%} " + f"(이동 {travel_min}분 / 관광 {dwell_min}분)" + ), + rule="travel_ratio", + risk=risk, # type: ignore[arg-type] + suggestion=( + "이동 시간이 관광 시간 대비 너무 큽니다. " + "더 가까운 장소로 변경하거나 일정을 단순화하세요." + ), + ) + ) overall_total = total_travel + total_dwell overall_ratio = total_travel / overall_total if overall_total > 0 else 0.0 diff --git a/src/utils/geo.py b/src/utils/geo.py index bb16d0b..dd1297a 100644 --- a/src/utils/geo.py +++ b/src/utils/geo.py @@ -1,4 +1,5 @@ """공유 지리 계산 유틸리티 — Haversine, NN 휴리스틱, 이동시간 조회.""" + from __future__ import annotations import math @@ -27,9 +28,7 @@ def build_dist_cache(pois: list) -> dict[tuple[int, int], float]: for i in range(n): for j in range(n): if i != j: - cache[(i, j)] = haversine_km( - pois[i].lat, pois[i].lng, pois[j].lat, pois[j].lng - ) + cache[(i, j)] = haversine_km(pois[i].lat, pois[i].lng, pois[j].lat, pois[j].lng) return cache @@ -55,8 +54,10 @@ def nn_heuristic_km( dist_cache[(current, j)] if dist_cache is not None else haversine_km( - pois[current].lat, pois[current].lng, - pois[j].lat, pois[j].lng, + pois[current].lat, + pois[current].lng, + pois[j].lat, + pois[j].lng, ) ) if d < best_d: @@ -81,6 +82,9 @@ def get_travel_min( dist_cache 를 넘기면 폴백 시 재계산 없이 조회한다. """ + if matrix is not None and hasattr(matrix, "get_travel_min"): + return float(matrix.get_travel_min(origin, dest)) + entry = (matrix.get(i) or {}).get(j) if entry and "travel_min" in entry: return float(entry["travel_min"]) diff --git a/src/validation/alternatives.py b/src/validation/alternatives.py index 0e2670c..f63931e 100644 --- a/src/validation/alternatives.py +++ b/src/validation/alternatives.py @@ -18,15 +18,16 @@ ) # → {"경복궁": [AlternativePOI(name="창덕궁", ...), ...]} """ + from __future__ import annotations import math -from typing import Sequence +from collections.abc import Sequence -from src.data.models import AlternativePOI, HardFail, POI +from src.data.models import POI, AlternativePOI, HardFail _EARTH_R = 6371.0 -_MAX_SEARCH_KM = 10.0 # 기본 탐색 반경 +_MAX_SEARCH_KM = 10.0 # 기본 탐색 반경 def _haversine_km(lat1: float, lng1: float, lat2: float, lng2: float) -> float: diff --git a/src/validation/hard_fail.py b/src/validation/hard_fail.py index a314b7b..8b9effb 100644 --- a/src/validation/hard_fail.py +++ b/src/validation/hard_fail.py @@ -1,15 +1,16 @@ """Hard Fail 탐지기 (운영시간 충돌·이동 불가·일정 시간 초과).""" + from __future__ import annotations -from src.data.models import HardFail, ItineraryPlan, POI +from src.data.models import POI, HardFail, ItineraryPlan from src.utils.geo import build_dist_cache, get_travel_min DEFAULT_START_MINUTES: int = 9 * 60 # 09:00 HARD_FAIL_TYPES = { "OPERATING_HOURS_CONFLICT": "도착 예상 시간이 POI 운영시간 외", - "TRAVEL_TIME_IMPOSSIBLE": "이동시간이 이용 가능한 시간 창을 초과", - "SCHEDULE_INFEASIBLE": "전체 일정이 시간 내 수행 불가능", + "TRAVEL_TIME_IMPOSSIBLE": "이동시간이 이용 가능한 시간 창을 초과", + "SCHEDULE_INFEASIBLE": "전체 일정이 시간 내 수행 불가능", } @@ -26,19 +27,26 @@ def detect( plan: ItineraryPlan, pois: list[POI], matrix: dict, - start_minutes: int = DEFAULT_START_MINUTES, + start_minutes: int | None = None, origin_poi: POI | None = None, day_index: int | None = None, ) -> list[HardFail]: """Hard Fail 목록 반환. 없으면 빈 리스트.""" + if start_minutes is None: + start_minutes = self._time_to_min(plan.start_time) + # origin_poi 가 있으면 pois 앞에 가상 출발 인덱스(-1)로 붙여 처리 effective_pois = pois if origin_poi is None else [origin_poi] + list(pois) offset = 0 if origin_poi is None else 1 # 실제 POI 인덱스 오프셋 dist_cache = build_dist_cache(effective_pois) fails: list[HardFail] = [] - fails.extend(self._check_operating_hours(effective_pois, matrix, start_minutes, offset, dist_cache)) - fails.extend(self._check_travel_impossible(effective_pois, matrix, start_minutes, offset, dist_cache)) + fails.extend( + self._check_operating_hours(effective_pois, matrix, start_minutes, offset, dist_cache) + ) + fails.extend( + self._check_travel_impossible(effective_pois, matrix, start_minutes, offset, dist_cache) + ) fails.extend(self._check_schedule_infeasible(effective_pois, matrix, offset, dist_cache)) if day_index is not None: for f in fails: @@ -78,31 +86,53 @@ def _check_operating_hours( est = getattr(poi, "hours_estimated", False) note = " (추정 영업시간 기준 — 방문 전 확인을 권장합니다)" if est else "" if arrive < open_min: - fails.append(HardFail( - fail_type="OPERATING_HOURS_CONFLICT", - message=( - f"'{poi.name}' 도착 예정 {self._min_to_time(arrive)}, " - f"운영 시작 {poi.open_start} — 아직 문을 열지 않았습니다." + note - ), - evidence=f"도착 {self._min_to_time(arrive)} < 운영시작 {poi.open_start}", - confidence="Medium", - poi_name=poi.name, - estimated=est, - )) + fails.append( + HardFail( + fail_type="OPERATING_HOURS_CONFLICT", + message=( + f"'{poi.name}' 도착 예정 {self._min_to_time(arrive)}, " + f"운영 시작 {poi.open_start} — 아직 문을 열지 않았습니다." + note + ), + evidence=f"도착 {self._min_to_time(arrive)} < 운영시작 {poi.open_start}", + confidence="Medium", + poi_name=poi.name, + estimated=est, + ) + ) elif arrive > close_min: - fails.append(HardFail( + fails.append( + HardFail( + fail_type="OPERATING_HOURS_CONFLICT", + message=( + f"'{poi.name}' 도착 예정 {self._min_to_time(arrive)}, " + f"운영 종료 {poi.open_end} — 이미 문을 닫았습니다." + note + ), + evidence=f"도착 {self._min_to_time(arrive)} > 운영종료 {poi.open_end}", + confidence="Medium", + poi_name=poi.name, + estimated=est, + ) + ) + + effective_arrive = max(arrive, open_min) + if not is_fallback and effective_arrive + poi.duration_min > close_min: + fails.append( + HardFail( fail_type="OPERATING_HOURS_CONFLICT", message=( - f"'{poi.name}' 도착 예정 {self._min_to_time(arrive)}, " - f"운영 종료 {poi.open_end} — 이미 문을 닫았습니다." + note + f"'{poi.name}' 방문 종료 예정 " + f"{self._min_to_time(effective_arrive + poi.duration_min)}, " + f"운영 종료 {poi.open_end} 이후까지 체류합니다." + note + ), + evidence=( + f"방문 종료 {self._min_to_time(effective_arrive + poi.duration_min)} " + f"> 운영종료 {poi.open_end}" ), - evidence=f"도착 {self._min_to_time(arrive)} > 운영종료 {poi.open_end}", confidence="Medium", poi_name=poi.name, estimated=est, - )) - - effective_arrive = max(arrive, open_min) + ) + ) current_time = effective_arrive + poi.duration_min return fails @@ -134,19 +164,21 @@ def _check_travel_impossible( available_window = close_min - current_time if not is_fallback and travel_min > available_window: - fails.append(HardFail( - fail_type="TRAVEL_TIME_IMPOSSIBLE", - message=( - f"'{prev.name}'→'{poi.name}' 이동 시간 {travel_min:.0f}분이 " - f"가용 시간 창 {available_window:.0f}분을 초과합니다." - ), - evidence=( - f"이동 {travel_min:.0f}분 > 가용 창 {available_window:.0f}분 " - f"(출발 {self._min_to_time(current_time)}, '{poi.name}' 종료 {poi.open_end})" - ), - confidence="High", - poi_name=poi.name, - )) + fails.append( + HardFail( + fail_type="TRAVEL_TIME_IMPOSSIBLE", + message=( + f"'{prev.name}'→'{poi.name}' 이동 시간 {travel_min:.0f}분이 " + f"가용 시간 창 {available_window:.0f}분을 초과합니다." + ), + evidence=( + f"이동 {travel_min:.0f}분 > 가용 창 {available_window:.0f}분 " + f"(출발 {self._min_to_time(current_time)}, '{poi.name}' 종료 {poi.open_end})" + ), + confidence="High", + poi_name=poi.name, + ) + ) arrive = current_time + travel_min effective_arrive = max(arrive, open_min) @@ -170,18 +202,20 @@ def _check_schedule_infeasible( total_min = total_dwell + total_travel_min if total_min > 24 * 60: - return [HardFail( - fail_type="SCHEDULE_INFEASIBLE", - message=( - f"총 일정 소요 시간 {total_min:.0f}분 ({total_min / 60:.1f}시간)이 " - f"24시간을 초과합니다." - ), - evidence=( - f"체류 {total_dwell}분 + 이동 {total_travel_min:.0f}분 " - f"= {total_min:.0f}분 > 1440분" - ), - confidence="High", - )] + return [ + HardFail( + fail_type="SCHEDULE_INFEASIBLE", + message=( + f"총 일정 소요 시간 {total_min:.0f}분 ({total_min / 60:.1f}시간)이 " + f"24시간을 초과합니다." + ), + evidence=( + f"체류 {total_dwell}분 + 이동 {total_travel_min:.0f}분 " + f"= {total_min:.0f}분 > 1440분" + ), + confidence="High", + ) + ] return [] @staticmethod @@ -191,5 +225,7 @@ def _time_to_min(hhmm: str) -> int: @staticmethod def _min_to_time(minutes: float) -> str: - m = int(minutes) % 1440 # 24시간 시계로 정규화 (누적 이동시간이 하루를 넘어도 유효한 시각으로 표시) + m = ( + int(minutes) % 1440 + ) # 24시간 시계로 정규화 (누적 이동시간이 하루를 넘어도 유효한 시각으로 표시) return f"{m // 60:02d}:{m % 60:02d}" diff --git a/src/validation/kakao_matrix.py b/src/validation/kakao_matrix.py index d708c26..3a3b42c 100644 --- a/src/validation/kakao_matrix.py +++ b/src/validation/kakao_matrix.py @@ -21,25 +21,24 @@ 6. async aprefetch_matrix: httpx.AsyncClient로 N×N 쌍 비동기 사전 로드 (get_travel_time은 동기 유지 — VRPTWEngine/OR-Tools 호환) """ + from __future__ import annotations import asyncio import json -import os import time from pathlib import Path from typing import Any import httpx -from src.data.models import VRPTWPlace +from src.data.models import Settings, VRPTWPlace from src.validation.vrptw_engine import HaversineMatrix, TimeMatrix - KAKAO_DIRECTIONS_URL = "https://apis-navi.kakaomobility.com/v1/directions" DEFAULT_TIMEOUT_SEC: float = 5.0 -DEFAULT_SLEEP_BETWEEN: float = 0.05 # 초당 ~20회 +DEFAULT_SLEEP_BETWEEN: float = 0.05 # 초당 ~20회 DEFAULT_MAX_RETRIES: int = 3 DEFAULT_RETRY_BACKOFF: float = 2.0 @@ -80,7 +79,10 @@ def __init__( self._fallback = HaversineMatrix() self._quota_exhausted = False self._stats: dict[str, int] = { - "cache_hit": 0, "api_success": 0, "api_fail": 0, "fallback": 0, + "cache_hit": 0, + "api_success": 0, + "api_fail": 0, + "fallback": 0, } self._dirty_count = 0 @@ -91,32 +93,12 @@ def from_env( cache_path: str | Path | None = None, env_path: str | Path | None = None, **kwargs: Any, - ) -> "KakaoMobilityMatrix": + ) -> KakaoMobilityMatrix: """`.env`에서 KAKAO_MOBILITY_KEY (없으면 KAKAO_REST_API_KEY) 로드.""" - if env_path: - cls._load_dotenv(Path(env_path)) - else: - project_root = Path(__file__).resolve().parents[2] - env_default = project_root / ".env" - if env_default.exists(): - cls._load_dotenv(env_default) - - key = ( - os.environ.get("KAKAO_MOBILITY_KEY", "") - or os.environ.get("KAKAO_REST_API_KEY", "") - ) + settings = Settings(_env_file=env_path) if env_path else Settings() + key = settings.kakao_mobility_key or settings.kakao_rest_api_key return cls(api_key=key, cache_path=cache_path, **kwargs) - @staticmethod - def _load_dotenv(env_path: Path) -> None: - if not env_path.exists(): - return - for line in env_path.read_text(encoding="utf-8").splitlines(): - line = line.strip() - if line and not line.startswith("#") and "=" in line: - k, _, v = line.partition("=") - os.environ.setdefault(k.strip(), v.strip()) - # ── TimeMatrix 인터페이스 (동기) ────────────────────────────────────── def get_travel_time(self, origin: VRPTWPlace, destination: VRPTWPlace) -> int: """캐시 조회 + Haversine 폴백. API 직접 호출 없음.""" @@ -147,10 +129,7 @@ async def aprefetch_matrix( 항상 캐시 히트되어 레이턴시 없이 동작한다. """ pairs = [ - (places[i], places[j]) - for i in range(len(places)) - for j in range(len(places)) - if i != j + (places[i], places[j]) for i in range(len(places)) for j in range(len(places)) if i != j ] sem = asyncio.Semaphore(concurrency) @@ -174,22 +153,18 @@ async def fetch_one(origin: VRPTWPlace, dest: VRPTWPlace) -> None: self.save_cache() # ── 비동기 API 호출 ────────────────────────────────────────────────── - async def _acall_kakao( - self, origin: VRPTWPlace, destination: VRPTWPlace - ) -> int | None: + async def _acall_kakao(self, origin: VRPTWPlace, destination: VRPTWPlace) -> int | None: """카카오 모빌리티 비동기 호출 (httpx.AsyncClient).""" headers = {"Authorization": f"KakaoAK {self._api_key}"} params = { - "origin": f"{origin.lng},{origin.lat}", + "origin": f"{origin.lng},{origin.lat}", "destination": f"{destination.lng},{destination.lat}", } async with httpx.AsyncClient(timeout=self._timeout) as client: for attempt in range(1, self._max_retries + 1): try: - r = await client.get( - KAKAO_DIRECTIONS_URL, headers=headers, params=params - ) + r = await client.get(KAKAO_DIRECTIONS_URL, headers=headers, params=params) if r.status_code == 200: return self._parse_duration(r.json()) if r.status_code == 429: @@ -198,10 +173,10 @@ async def _acall_kakao( return None if r.status_code in (401, 403): raise RuntimeError(f"인증 오류 {r.status_code}") - await asyncio.sleep(DEFAULT_RETRY_BACKOFF ** attempt) + await asyncio.sleep(DEFAULT_RETRY_BACKOFF**attempt) except httpx.RequestError as e: if attempt < self._max_retries: - await asyncio.sleep(DEFAULT_RETRY_BACKOFF ** attempt) + await asyncio.sleep(DEFAULT_RETRY_BACKOFF**attempt) else: print(f" [kakao-mobility] 실패: {e}") @@ -209,9 +184,7 @@ async def _acall_kakao( return None # ── 동기 API 호출 (캐시 워밍업 스크립트용) ────────────────────────── - def _call_kakao_sync( - self, origin: VRPTWPlace, destination: VRPTWPlace - ) -> int | None: + def _call_kakao_sync(self, origin: VRPTWPlace, destination: VRPTWPlace) -> int | None: """동기 API 호출 + 캐시 저장 + 통계 업데이트 (httpx.Client). 캐시에 이미 있으면 API 호출 없이 캐시 값 반환. @@ -230,7 +203,7 @@ def _call_kakao_sync( headers = {"Authorization": f"KakaoAK {self._api_key}"} params = { - "origin": f"{origin.lng},{origin.lat}", + "origin": f"{origin.lng},{origin.lat}", "destination": f"{destination.lng},{destination.lat}", } @@ -251,10 +224,10 @@ def _call_kakao_sync( return None if r.status_code in (401, 403): raise RuntimeError(f"인증 오류 {r.status_code}") - time.sleep(DEFAULT_RETRY_BACKOFF ** attempt) + time.sleep(DEFAULT_RETRY_BACKOFF**attempt) except httpx.RequestError as e: if attempt < self._max_retries: - time.sleep(DEFAULT_RETRY_BACKOFF ** attempt) + time.sleep(DEFAULT_RETRY_BACKOFF**attempt) else: print(f" [kakao-mobility] 실패: {e}") @@ -276,10 +249,7 @@ def _parse_duration(data: dict) -> int | None: # ── 캐시 입출력 ────────────────────────────────────────────────────── def _make_key(self, origin: VRPTWPlace, destination: VRPTWPlace) -> str: - return ( - f"{origin.lng:.4f},{origin.lat:.4f}" - f"|{destination.lng:.4f},{destination.lat:.4f}" - ) + return f"{origin.lng:.4f},{origin.lat:.4f}|{destination.lng:.4f},{destination.lat:.4f}" def _load_cache(self) -> dict[str, int]: if not self._cache_path or not self._cache_path.exists(): @@ -300,9 +270,7 @@ def save_cache(self) -> None: if not self._cache_path: return self._cache_path.parent.mkdir(parents=True, exist_ok=True) - self._cache_path.write_text( - json.dumps(self._cache, ensure_ascii=False), encoding="utf-8" - ) + self._cache_path.write_text(json.dumps(self._cache, ensure_ascii=False), encoding="utf-8") self._dirty_count = 0 # ── 진단 ───────────────────────────────────────────────────────────── diff --git a/src/validation/scoring.py b/src/validation/scoring.py index a6ea3bc..a5eda1c 100644 --- a/src/validation/scoring.py +++ b/src/validation/scoring.py @@ -1,16 +1,17 @@ """5개 지표 기반 최종 점수 계산기.""" + from __future__ import annotations -from src.data.models import HardFail, ItineraryPlan, POI, Scores +from src.data.models import POI, HardFail, ItineraryPlan, Scores from src.data.party_config import get_party_profile from src.utils.geo import build_dist_cache, get_travel_min, nn_heuristic_km from src.validation.warning import INTENT_VECTORS, _cosine_distance WEIGHTS = { - "efficiency": 0.30, - "feasibility": 0.25, - "purpose_fit": 0.20, - "flow": 0.15, + "efficiency": 0.30, + "feasibility": 0.25, + "purpose_fit": 0.20, + "flow": 0.15, "area_intensity": 0.10, } @@ -34,10 +35,10 @@ def compute( """ dist_cache = build_dist_cache(pois) - efficiency = self._calc_efficiency(pois, dist_cache) - feasibility = self._calc_feasibility(plan, pois, matrix, hard_fails, dist_cache) - purpose_fit = self._calc_purpose_fit(plan, pois) - flow = self._calc_flow(pois, dist_cache) + efficiency = self._calc_efficiency(pois, dist_cache) + feasibility = self._calc_feasibility(plan, pois, matrix, hard_fails, dist_cache) + purpose_fit = self._calc_purpose_fit(plan, pois) + flow = self._calc_flow(pois, dist_cache) area_intensity = self._calc_area_intensity(pois) scores = Scores( @@ -147,9 +148,7 @@ def _calc_flow( actual_km = sum(dist_cache.get((i, i + 1), 0.0) for i in range(n - 1)) nn_km = nn_heuristic_km(pois, dist_cache) - backtrack_ratio = ( - max(0.0, (actual_km - nn_km) / actual_km) if actual_km > 0 else 0.0 - ) + backtrack_ratio = max(0.0, (actual_km - nn_km) / actual_km) if actual_km > 0 else 0.0 seen: dict[str, bool] = {} prev_cat: str | None = None diff --git a/src/validation/vrptw_engine.py b/src/validation/vrptw_engine.py index a3737a7..ca59a3b 100644 --- a/src/validation/vrptw_engine.py +++ b/src/validation/vrptw_engine.py @@ -6,6 +6,7 @@ TimeMatrix interface is swappable — replace CachedRouteMatrix with a Kakao Mobility implementation without touching solver code. """ + from __future__ import annotations import json @@ -13,7 +14,6 @@ from abc import ABC, abstractmethod from dataclasses import dataclass, field from pathlib import Path -from typing import TYPE_CHECKING from src.data.models import ( DayRouteComparison, @@ -24,18 +24,24 @@ VRPTWResult, ) + +def _time_to_minutes(value: str) -> int: + hour, minute = map(int, value.split(":")) + return hour * 60 + minute + + # --------------------------------------------------------------------------- # Tunable thresholds # --------------------------------------------------------------------------- -EFFICIENCY_GAP_THRESHOLD: float = 0.20 # 20%: efficiency gap that triggers "low efficiency" -FATIGUE_HOURS_LIMIT: int = 12 # hours: daily schedule exceeding this incurs penalty -FATIGUE_PENALTY_PER_HOUR: int = 10 # points deducted per hour over limit -SAFETY_MARGIN_MINUTES: int = 60 # minutes: arrival within this of close → CRITICAL -PASS_THRESHOLD: int = 60 # risk_score >= this → passed +EFFICIENCY_GAP_THRESHOLD: float = 0.20 # 20%: efficiency gap that triggers "low efficiency" +FATIGUE_HOURS_LIMIT: int = 12 # hours: daily schedule exceeding this incurs penalty +FATIGUE_PENALTY_PER_HOUR: int = 10 # points deducted per hour over limit +SAFETY_MARGIN_MINUTES: int = 60 # minutes: arrival within this of close → CRITICAL +PASS_THRESHOLD: int = 60 # risk_score >= this → passed # Day-start time assumption when no depot open time is specified -DEFAULT_START_MINUTES: int = 9 * 60 # 09:00 +DEFAULT_START_MINUTES: int = 9 * 60 # 09:00 # --------------------------------------------------------------------------- # OR-Tools import (graceful degradation) @@ -43,6 +49,7 @@ try: from ortools.constraint_solver import pywrapcp, routing_enums_pb2 + _ORTOOLS_AVAILABLE = True except Exception: _ORTOOLS_AVAILABLE = False @@ -52,6 +59,7 @@ # TimeMatrix interface # --------------------------------------------------------------------------- + class TimeMatrix(ABC): """Abstract travel-time provider. Implementations are interchangeable.""" @@ -72,8 +80,8 @@ class HaversineMatrix(TimeMatrix): # (거리 상한 m, 유효 속도 m/s) _BANDS: tuple = ( - (5_000, 12_000 / 3600), # 도심 <5km - (50_000, 22_000 / 3600), # 중거리 5~50km + (5_000, 12_000 / 3600), # 도심 <5km + (50_000, 22_000 / 3600), # 중거리 5~50km (float("inf"), 80_000 / 3600), # 장거리 >50km ) @@ -109,7 +117,7 @@ def __init__(self, cache: dict[str, int]) -> None: self._fallback = HaversineMatrix() @classmethod - def from_file(cls, path: str | Path) -> "CachedRouteMatrix": + def from_file(cls, path: str | Path) -> CachedRouteMatrix: with open(path, encoding="utf-8") as f: data: dict[str, int] = json.load(f) return cls(data) @@ -126,7 +134,6 @@ def get_travel_time(self, origin: VRPTWPlace, destination: VRPTWPlace) -> int: return self._fallback.get_travel_time(origin, destination) - def _haversine_m(lat1: float, lng1: float, lat2: float, lng2: float) -> float: R = 6_371_000.0 phi1, phi2 = math.radians(lat1), math.radians(lat2) @@ -140,9 +147,11 @@ def _haversine_m(lat1: float, lng1: float, lat2: float, lng2: float) -> float: # Internal helpers # --------------------------------------------------------------------------- + @dataclass class _SimResult: """Simulation result for a single day.""" + travel_seconds: int visit_order: list[str] deep_dive: list[DeepDiveItem] = field(default_factory=list) @@ -177,30 +186,34 @@ def _simulate_day( # --- Safety margin check --- minutes_before_close = place.close_minutes - arrive if 0 < minutes_before_close < SAFETY_MARGIN_MINUTES and not place.is_depot: - deep_dive.append(DeepDiveItem( - fact=( - f"'{place.name}' 도착 예정 {_minutes_to_hhmm(arrive)}, " - f"영업 종료 {place.close} — {minutes_before_close:.0f}분 여유" - ), - rule="safety_margin", - risk="CRITICAL", - suggestion=( - f"'{place.name}' 방문 순서를 앞당기거나 " - f"체류 시간({place.stay_duration}분)을 줄이세요." - ), - )) + deep_dive.append( + DeepDiveItem( + fact=( + f"'{place.name}' 도착 예정 {_minutes_to_hhmm(arrive)}, " + f"영업 종료 {place.close} — {minutes_before_close:.0f}분 여유" + ), + rule="safety_margin", + risk="CRITICAL", + suggestion=( + f"'{place.name}' 방문 순서를 앞당기거나 " + f"체류 시간({place.stay_duration}분)을 줄이세요." + ), + ) + ) # --- Time window infeasibility check --- if arrive > place.close_minutes and not place.is_depot: - deep_dive.append(DeepDiveItem( - fact=( - f"'{place.name}' 도착 예정 {_minutes_to_hhmm(arrive)}이나 " - f"영업 종료는 {place.close}. 입장 불가." - ), - rule="time_window_infeasibility", - risk="CRITICAL", - suggestion=f"'{place.name}'을 더 이른 시간대로 이동하거나 일정에서 제외하세요.", - )) + deep_dive.append( + DeepDiveItem( + fact=( + f"'{place.name}' 도착 예정 {_minutes_to_hhmm(arrive)}이나 " + f"영업 종료는 {place.close}. 입장 불가." + ), + rule="time_window_infeasibility", + risk="CRITICAL", + suggestion=f"'{place.name}'을 더 이른 시간대로 이동하거나 일정에서 제외하세요.", + ) + ) # Wait until open if arrived early effective_arrive = max(arrive, place.open_minutes) @@ -241,6 +254,7 @@ def _compute_day_total_minutes( # OR-Tools VRPTW solver (per-day, single-vehicle) # --------------------------------------------------------------------------- + def _solve_vrptw_ortools( places: list[VRPTWPlace], matrix: TimeMatrix, @@ -271,9 +285,9 @@ def _time_callback(from_idx: int, to_idx: int) -> int: # OR-Tools AddDimension: (evaluator_index, slack_max, capacity, fix_start_cumul_to_zero, name) routing.AddDimension( cb_idx, - 24 * 3600, # slack_max (max waiting time) - 24 * 3600, # capacity (max total time) - False, # fix_start_cumul_to_zero + 24 * 3600, # slack_max (max waiting time) + 24 * 3600, # capacity (max total time) + False, # fix_start_cumul_to_zero "Time", ) time_dim = routing.GetDimensionOrDie("Time") @@ -285,9 +299,7 @@ def _time_callback(from_idx: int, to_idx: int) -> int: time_dim.CumulVar(idx).SetRange(open_sec, close_sec) params = pywrapcp.DefaultRoutingSearchParameters() - params.first_solution_strategy = ( - routing_enums_pb2.FirstSolutionStrategy.PATH_CHEAPEST_ARC - ) + params.first_solution_strategy = routing_enums_pb2.FirstSolutionStrategy.PATH_CHEAPEST_ARC params.time_limit.seconds = 5 solution = routing.SolveWithParameters(params) @@ -314,6 +326,7 @@ def _time_callback(from_idx: int, to_idx: int) -> int: # Depot constraint checker # --------------------------------------------------------------------------- + def _check_depot_constraints( days: list[VRPTWDay], ) -> list[DeepDiveItem]: @@ -336,37 +349,45 @@ def _has_depot(places: list[VRPTWPlace], position: str) -> bool: if is_first_day: # Day 1: must end at depot if not _has_depot(places, "last"): - issues.append(DeepDiveItem( - fact=f"1일차 마지막 장소가 숙소(depot)가 아닙니다. ('{places[-1].name}')", - rule="depot_constraint", - risk="CRITICAL", - suggestion="1일차 일정 마지막에 숙소 복귀를 추가하세요.", - )) + issues.append( + DeepDiveItem( + fact=f"1일차 마지막 장소가 숙소(depot)가 아닙니다. ('{places[-1].name}')", + rule="depot_constraint", + risk="CRITICAL", + suggestion="1일차 일정 마지막에 숙소 복귀를 추가하세요.", + ) + ) elif is_last_day: # Last day: must start at depot if not _has_depot(places, "first"): - issues.append(DeepDiveItem( - fact=f"마지막 날 첫 장소가 숙소(depot)가 아닙니다. ('{places[0].name}')", - rule="depot_constraint", - risk="CRITICAL", - suggestion="마지막 날 일정은 숙소 출발로 시작해야 합니다.", - )) + issues.append( + DeepDiveItem( + fact=f"마지막 날 첫 장소가 숙소(depot)가 아닙니다. ('{places[0].name}')", + rule="depot_constraint", + risk="CRITICAL", + suggestion="마지막 날 일정은 숙소 출발로 시작해야 합니다.", + ) + ) else: # Middle days: must start AND end at depot if not _has_depot(places, "first"): - issues.append(DeepDiveItem( - fact=f"{day_idx + 1}일차 첫 장소가 숙소(depot)가 아닙니다. ('{places[0].name}')", - rule="depot_constraint", - risk="CRITICAL", - suggestion=f"{day_idx + 1}일차는 숙소에서 출발해야 합니다.", - )) + issues.append( + DeepDiveItem( + fact=f"{day_idx + 1}일차 첫 장소가 숙소(depot)가 아닙니다. ('{places[0].name}')", + rule="depot_constraint", + risk="CRITICAL", + suggestion=f"{day_idx + 1}일차는 숙소에서 출발해야 합니다.", + ) + ) if not _has_depot(places, "last"): - issues.append(DeepDiveItem( - fact=f"{day_idx + 1}일차 마지막 장소가 숙소(depot)가 아닙니다. ('{places[-1].name}')", - rule="depot_constraint", - risk="CRITICAL", - suggestion=f"{day_idx + 1}일차는 숙소로 귀환해야 합니다.", - )) + issues.append( + DeepDiveItem( + fact=f"{day_idx + 1}일차 마지막 장소가 숙소(depot)가 아닙니다. ('{places[-1].name}')", + rule="depot_constraint", + risk="CRITICAL", + suggestion=f"{day_idx + 1}일차는 숙소로 귀환해야 합니다.", + ) + ) return issues @@ -375,6 +396,7 @@ def _has_depot(places: list[VRPTWPlace], position: str) -> bool: # Main engine # --------------------------------------------------------------------------- + class VRPTWEngine: """VRPTW-based travel itinerary validator. @@ -402,13 +424,14 @@ def validate(self, request: VRPTWRequest) -> VRPTWResult: # Depot constraint check deep_dive.extend(_check_depot_constraints(request.days)) + start_minutes = _time_to_minutes(request.start_time) for day_idx, day in enumerate(request.days): places = day.places - start_min = DEFAULT_START_MINUTES + start_min = start_minutes # Determine day start from depot open time if present if places and places[0].is_depot: - start_min = max(DEFAULT_START_MINUTES, places[0].open_minutes) + start_min = max(start_minutes, places[0].open_minutes) # Simulate user route user_sim = _simulate_day(places, self._matrix, start_min) @@ -419,16 +442,18 @@ def validate(self, request: VRPTWRequest) -> VRPTWResult: day_total_min = _compute_day_total_minutes(places, self._matrix, start_min) if day_total_min > FATIGUE_HOURS_LIMIT * 60: excess_h = (day_total_min - FATIGUE_HOURS_LIMIT * 60) / 60 - deep_dive.append(DeepDiveItem( - fact=( - f"{day_idx + 1}일차 총 소요 시간 {day_total_min:.0f}분 " - f"({day_total_min/60:.1f}시간) — " - f"{FATIGUE_HOURS_LIMIT}시간 초과 {excess_h:.1f}시간" - ), - rule="fatigue", - risk="WARNING", - suggestion="장소 수를 줄이거나 체류 시간을 단축해 일정을 12시간 이내로 조정하세요.", - )) + deep_dive.append( + DeepDiveItem( + fact=( + f"{day_idx + 1}일차 총 소요 시간 {day_total_min:.0f}분 " + f"({day_total_min / 60:.1f}시간) — " + f"{FATIGUE_HOURS_LIMIT}시간 초과 {excess_h:.1f}시간" + ), + rule="fatigue", + risk="WARNING", + suggestion="장소 수를 줄이거나 체류 시간을 단축해 일정을 12시간 이내로 조정하세요.", + ) + ) # OR-Tools optimal route optimal_order: list[str] | None = None @@ -440,33 +465,33 @@ def validate(self, request: VRPTWRequest) -> VRPTWResult: if total_optimal_travel is not None: total_optimal_travel += optimal_travel - day_comparisons.append(DayRouteComparison( - day_index=day_idx, - user_order=[p.name for p in places], - optimal_order=optimal_order, - user_travel_seconds=user_sim.travel_seconds, - optimal_travel_seconds=optimal_travel, - )) + day_comparisons.append( + DayRouteComparison( + day_index=day_idx, + user_order=[p.name for p in places], + optimal_order=optimal_order, + user_travel_seconds=user_sim.travel_seconds, + optimal_travel_seconds=optimal_travel, + ) + ) # Efficiency gap efficiency_gap: float | None = None - if ( - total_optimal_travel is not None - and total_optimal_travel > 0 - and total_user_travel > 0 - ): + if total_optimal_travel is not None and total_optimal_travel > 0 and total_user_travel > 0: efficiency_gap = (total_user_travel - total_optimal_travel) / total_optimal_travel if efficiency_gap > EFFICIENCY_GAP_THRESHOLD: - deep_dive.append(DeepDiveItem( - fact=( - f"사용자 이동 시간 {total_user_travel}초 vs " - f"최적 {total_optimal_travel}초 " - f"(효율성 격차 {efficiency_gap:.1%})" - ), - rule="efficiency_gap", - risk="WARNING", - suggestion="VRPTW 최적 순서를 참고해 방문 순서를 재배치하세요.", - )) + deep_dive.append( + DeepDiveItem( + fact=( + f"사용자 이동 시간 {total_user_travel}초 vs " + f"최적 {total_optimal_travel}초 " + f"(효율성 격차 {efficiency_gap:.1%})" + ), + rule="efficiency_gap", + risk="WARNING", + suggestion="VRPTW 최적 순서를 참고해 방문 순서를 재배치하세요.", + ) + ) # Risk score risk_score = self._compute_risk_score(deep_dive, efficiency_gap, request.days) @@ -514,7 +539,7 @@ def _compute_risk_score( # Fatigue: extra deduction already encoded in deep_dive above; # additionally compute raw fatigue hours across all days - for day_idx, day in enumerate(days): + for _day_idx, day in enumerate(days): day_total_min = _compute_day_total_minutes( day.places, self._matrix, DEFAULT_START_MINUTES ) diff --git a/src/validation/warning.py b/src/validation/warning.py index e309342..4a95668 100644 --- a/src/validation/warning.py +++ b/src/validation/warning.py @@ -1,36 +1,38 @@ """Warning 탐지기 (동선 비효율·일정 과밀·체력 부담·목적 부적합·구역 재방문).""" + from __future__ import annotations -from src.data.models import ItineraryPlan, POI, Warning +from src.data.models import POI, ItineraryPlan, Warning from src.data.party_config import get_party_profile -from src.utils.geo import build_dist_cache, get_travel_min, haversine_km, nn_heuristic_km +from src.utils.geo import build_dist_cache, get_travel_min, nn_heuristic_km DEFAULT_START_MINUTES: int = 9 * 60 # 09:00 WARNING_TYPES = { - "DENSE_SCHEDULE": ("일정 과밀", "Medium"), - "INEFFICIENT_ROUTE": ("동선 비효율", "Medium"), - "PHYSICAL_STRAIN": ("체력 부담", "Medium"), - "PURPOSE_MISMATCH": ("목적 부적합", "Medium-Low"), - "AREA_REVISIT": ("구역 재방문", "Medium"), - "CUMULATIVE_FATIGUE": ("누적 피로도", "Medium"), + "DENSE_SCHEDULE": ("일정 과밀", "Medium"), + "INEFFICIENT_ROUTE": ("동선 비효율", "Medium"), + "PHYSICAL_STRAIN": ("체력 부담", "Medium"), + "PURPOSE_MISMATCH": ("목적 부적합", "Medium-Low"), + "AREA_REVISIT": ("구역 재방문", "Medium"), + "CUMULATIVE_FATIGUE": ("누적 피로도", "Medium"), } INTENT_VECTORS: dict[str, dict[str, float]] = { - "cultural": {"14": 0.6, "12": 0.2, "15": 0.1, "other": 0.1}, - "nature": {"12": 0.5, "15": 0.3, "14": 0.1, "other": 0.1}, - "shopping": {"38": 0.5, "12": 0.3, "14": 0.1, "other": 0.1}, - "food": {"39": 0.6, "12": 0.2, "14": 0.1, "other": 0.1}, + "cultural": {"14": 0.6, "12": 0.2, "15": 0.1, "other": 0.1}, + "nature": {"12": 0.5, "15": 0.3, "14": 0.1, "other": 0.1}, + "shopping": {"38": 0.5, "12": 0.3, "14": 0.1, "other": 0.1}, + "food": {"39": 0.6, "12": 0.2, "14": 0.1, "other": 0.1}, "adventure": {"15": 0.6, "12": 0.2, "14": 0.1, "other": 0.1}, } def _cosine_distance(v1: dict[str, float], v2: dict[str, float]) -> float: import math + keys = set(v1) | set(v2) dot = sum(v1.get(k, 0.0) * v2.get(k, 0.0) for k in keys) - norm1 = math.sqrt(sum(x ** 2 for x in v1.values())) - norm2 = math.sqrt(sum(x ** 2 for x in v2.values())) + norm1 = math.sqrt(sum(x**2 for x in v1.values())) + norm2 = math.sqrt(sum(x**2 for x in v2.values())) if norm1 == 0 or norm2 == 0: return 1.0 return 1.0 - dot / (norm1 * norm2) @@ -44,9 +46,9 @@ class WarningDetector: """ STRAIN_THRESHOLD_KM: float = 30.0 # 기준 그룹(혼자/친구) 체력 부담 임계 - BACKTRACK_THRESHOLD: float = 0.3 # 30% 초과 이동거리 비효율 + BACKTRACK_THRESHOLD: float = 0.3 # 30% 초과 이동거리 비효율 PURPOSE_FIT_THRESHOLD: float = 0.5 - CONSECUTIVE_REVISIT: int = 3 # 같은 카테고리 연속 ≥ 3회 (2회는 문화투어 등에서 false positive) + CONSECUTIVE_REVISIT: int = 3 # 같은 카테고리 연속 ≥ 3회 (2회는 문화투어 등에서 false positive) def detect( self, @@ -88,14 +90,16 @@ def _check_dense_schedule( if total_min <= threshold_min: return [] _, confidence = WARNING_TYPES["DENSE_SCHEDULE"] - return [Warning( - warning_type="DENSE_SCHEDULE", - message=( - f"총 일정 소요 시간 {total_min:.0f}분 ({total_min / 60:.1f}시간)이 " - f"'{plan.party_type}' 그룹 피로도 한계 {profile.fatigue_hours}시간을 초과합니다." - ), - confidence=confidence, - )] + return [ + Warning( + warning_type="DENSE_SCHEDULE", + message=( + f"총 일정 소요 시간 {total_min:.0f}분 ({total_min / 60:.1f}시간)이 " + f"'{plan.party_type}' 그룹 피로도 한계 {profile.fatigue_hours}시간을 초과합니다." + ), + confidence=confidence, + ) + ] def _check_inefficient_route( self, @@ -112,14 +116,16 @@ def _check_inefficient_route( if ratio <= self.BACKTRACK_THRESHOLD: return [] _, confidence = WARNING_TYPES["INEFFICIENT_ROUTE"] - return [Warning( - warning_type="INEFFICIENT_ROUTE", - message=( - f"현재 방문 순서의 이동 거리({actual_km:.1f}km)가 최적 경로 대비 " - f"{ratio:.1%} 더 깁니다. 방문 순서를 재배치해 보세요." - ), - confidence=confidence, - )] + return [ + Warning( + warning_type="INEFFICIENT_ROUTE", + message=( + f"현재 방문 순서의 이동 거리({actual_km:.1f}km)가 최적 경로 대비 " + f"{ratio:.1%} 더 깁니다. 방문 순서를 재배치해 보세요." + ), + confidence=confidence, + ) + ] def _check_physical_strain( self, @@ -133,14 +139,16 @@ def _check_physical_strain( if total_km <= threshold_km: return [] _, confidence = WARNING_TYPES["PHYSICAL_STRAIN"] - return [Warning( - warning_type="PHYSICAL_STRAIN", - message=( - f"총 이동 거리 {total_km:.1f}km가 " - f"'{plan.party_type}' 그룹 체력 한계 {threshold_km:.0f}km를 초과합니다." - ), - confidence=confidence, - )] + return [ + Warning( + warning_type="PHYSICAL_STRAIN", + message=( + f"총 이동 거리 {total_km:.1f}km가 " + f"'{plan.party_type}' 그룹 체력 한계 {threshold_km:.0f}km를 초과합니다." + ), + confidence=confidence, + ) + ] def _check_purpose_mismatch(self, plan: ItineraryPlan, pois: list[POI]) -> list[Warning]: if not plan.travel_type: @@ -164,14 +172,16 @@ def _check_purpose_mismatch(self, plan: ItineraryPlan, pois: list[POI]) -> list[ if purpose_fit >= self.PURPOSE_FIT_THRESHOLD: return [] _, confidence = WARNING_TYPES["PURPOSE_MISMATCH"] - return [Warning( - warning_type="PURPOSE_MISMATCH", - message=( - f"여행 테마 '{plan.travel_type}'과 실제 장소 구성의 일치도가 " - f"{purpose_fit:.2f}로 낮습니다. 테마에 맞는 장소 선택을 권장합니다." - ), - confidence=confidence, - )] + return [ + Warning( + warning_type="PURPOSE_MISMATCH", + message=( + f"여행 테마 '{plan.travel_type}'과 실제 장소 구성의 일치도가 " + f"{purpose_fit:.2f}로 낮습니다. 테마에 맞는 장소 선택을 권장합니다." + ), + confidence=confidence, + ) + ] def check_cumulative_fatigue( self, @@ -208,32 +218,38 @@ def check_cumulative_fatigue( max_run = max(max_run, run) if max_run >= ABUSE_RUN: - return [Warning( - warning_type="CUMULATIVE_FATIGUE", - message=( - f"{max_run}일 연속으로 일일 피로도 한계의 {int(HIGH*100)}% 이상인 일정이 감지되었습니다. " - f"'{plan.party_type}' 그룹에게 심각한 누적 피로가 예상됩니다. " - "중간에 여유 있는 반나절 일정을 넣어보세요." - ), - confidence="Medium", - )] + return [ + Warning( + warning_type="CUMULATIVE_FATIGUE", + message=( + f"{max_run}일 연속으로 일일 피로도 한계의 {int(HIGH * 100)}% 이상인 일정이 감지되었습니다. " + f"'{plan.party_type}' 그룹에게 심각한 누적 피로가 예상됩니다. " + "중간에 여유 있는 반나절 일정을 넣어보세요." + ), + confidence="Medium", + ) + ] # 전날 매우 강도 높음(>85%) + 다음날도 상당(>60%) → carry-over 경고 VERY_HIGH = 0.85 MODERATE = 0.60 for i in range(1, len(intensities)): if intensities[i - 1] > VERY_HIGH and intensities[i] > MODERATE: - return [Warning( - warning_type="CUMULATIVE_FATIGUE", - message=( - f"{i}일차 일정이 피로도 한계의 {intensities[i-1]:.0%}로 매우 고강도였고, " - f"{i+1}일차도 {intensities[i]:.0%} 강도로 계획되어 있습니다. " - "전날 피로가 이월되어 컨디션이 저하될 수 있습니다." - ), - confidence="Medium", - day_index=i, - poi_names=[p.name for p in per_day_pois[i]] if i < len(per_day_pois) else [], - )] + return [ + Warning( + warning_type="CUMULATIVE_FATIGUE", + message=( + f"{i}일차 일정이 피로도 한계의 {intensities[i - 1]:.0%}로 매우 고강도였고, " + f"{i + 1}일차도 {intensities[i]:.0%} 강도로 계획되어 있습니다. " + "전날 피로가 이월되어 컨디션이 저하될 수 있습니다." + ), + confidence="Medium", + day_index=i, + poi_names=[p.name for p in per_day_pois[i]] + if i < len(per_day_pois) + else [], + ) + ] return [] @@ -254,11 +270,13 @@ def _check_area_revisit(self, pois: list[POI]) -> list[Warning]: if max_run < self.CONSECUTIVE_REVISIT: return [] _, confidence = WARNING_TYPES["AREA_REVISIT"] - return [Warning( - warning_type="AREA_REVISIT", - message=( - f"동일 카테고리 장소가 {max_run}회 연속 배치되어 있습니다. " - "다양한 유형의 장소를 번갈아 방문하면 여행이 더 풍성해집니다." - ), - confidence=confidence, - )] + return [ + Warning( + warning_type="AREA_REVISIT", + message=( + f"동일 카테고리 장소가 {max_run}회 연속 배치되어 있습니다. " + "다양한 유형의 장소를 번갈아 방문하면 여행이 더 풍성해집니다." + ), + confidence=confidence, + ) + ] diff --git a/tests/conftest.py b/tests/conftest.py index 66a87a9..bd8863f 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -4,6 +4,7 @@ 그 모듈을 import하는 테스트가 먼저 수집되면 이후 테스트의 "키 없음" 케이스가 실행 순서에 따라 랜덤하게 깨진다 — 매 테스트마다 강제로 지워 격리한다. """ + import pytest diff --git a/tests/test_alternatives.py b/tests/test_alternatives.py index 677ef86..0732c7a 100644 --- a/tests/test_alternatives.py +++ b/tests/test_alternatives.py @@ -1,9 +1,8 @@ """AlternativesFinder 유닛 테스트.""" -from __future__ import annotations -import pytest +from __future__ import annotations -from src.data.models import AlternativePOI, HardFail, POI +from src.data.models import POI, HardFail from src.validation.alternatives import AlternativesFinder @@ -40,7 +39,7 @@ class TestFindAlternatives: def test_returns_nearby_same_category(self): pool = [ _poi("B", lat=37.502, lng=127.0, category="14"), - _poi("C", lat=37.6, lng=127.0, category="12"), + _poi("C", lat=37.6, lng=127.0, category="12"), ] finder = AlternativesFinder(poi_pool=pool) failed = _poi("A", lat=37.5, lng=127.0, category="14") diff --git a/tests/test_api_schemas.py b/tests/test_api_schemas.py new file mode 100644 index 0000000..5ad4386 --- /dev/null +++ b/tests/test_api_schemas.py @@ -0,0 +1,36 @@ +"""API 입력 스키마의 경계값 검증.""" + +import pytest +from pydantic import ValidationError + +from src.api.schemas import ValidateRequest + + +def _request(**overrides): + data = { + "days": [{"places": [{"name": "경복궁"}]}], + "party_size": 2, + "party_type": "친구", + "travel_type": "cultural", + "date": "2026-05-10", + "start_time": "09:00", + } + data.update(overrides) + return ValidateRequest(**data) + + +def test_date_and_start_time_are_validated(): + with pytest.raises(ValidationError): + _request(date="not-a-date") + with pytest.raises(ValidationError): + _request(start_time="99:99") + + +def test_empty_day_is_rejected_at_request_boundary(): + with pytest.raises(ValidationError): + _request(days=[{"places": []}]) + + +def test_place_name_cannot_be_blank(): + with pytest.raises(ValidationError): + _request(days=[{"places": [{"name": " "}]}]) diff --git a/tests/test_bonus_engine.py b/tests/test_bonus_engine.py index 0cd0af4..4eb3ddf 100644 --- a/tests/test_bonus_engine.py +++ b/tests/test_bonus_engine.py @@ -1,16 +1,15 @@ """Tests for BonusEngine (TDD).""" + from __future__ import annotations import json import tempfile from pathlib import Path -import pytest - from src.data.models import POI from src.scoring.bonus_engine import ( - ACCESSIBLE_PARTY_TYPES, ACCESSIBILITY_BONUS_PER_PLACE, + ACCESSIBLE_PARTY_TYPES, BONUS_CAP, PET_FRIENDLY_BONUS_PER_PLACE, WELLNESS_BONUS_PER_PLACE, @@ -20,12 +19,18 @@ def make_poi( - poi_id: str = "1", lat: float = 37.5, lng: float = 127.0, pet_friendly: bool = False, + poi_id: str = "1", + lat: float = 37.5, + lng: float = 127.0, + pet_friendly: bool = False, ) -> POI: return POI( - poi_id=poi_id, name=f"POI_{poi_id}", - lat=lat, lng=lng, - open_start="09:00", open_end="18:00", + poi_id=poi_id, + name=f"POI_{poi_id}", + lat=lat, + lng=lng, + open_start="09:00", + open_end="18:00", duration_min=60, pet_friendly=pet_friendly, ) @@ -44,6 +49,7 @@ def make_engine( # BonusEngine.compute() — wellness bonus # --------------------------------------------------------------------------- + class TestWellnessBonus: def test_no_wellness_data_gives_zero(self): engine = make_engine(wellness_coords=[]) @@ -92,6 +98,7 @@ def test_wellness_applies_to_all_party_types(self): # BonusEngine.compute() — accessibility bonus # --------------------------------------------------------------------------- + class TestAccessibilityBonus: def test_accessible_party_gets_bonus(self): engine = make_engine(barrier_free_coords=[(37.5, 127.0)]) @@ -119,6 +126,7 @@ def test_accessibility_bonus_capped(self): # BonusEngine.compute() — pet-friendly bonus (가산점만, 감점 없음) # --------------------------------------------------------------------------- + class TestPetFriendlyBonus: def test_disabled_gives_zero_even_if_matched(self): engine = make_engine() @@ -156,6 +164,7 @@ def test_pet_friendly_matched_names_populated(self): # BonusEngine.compute() — total_bonus cap # --------------------------------------------------------------------------- + class TestTotalBonusCap: def test_combined_bonus_capped_at_cap(self): coords = [(37.5 + i * 0.01, 127.0) for i in range(20)] @@ -174,9 +183,7 @@ def test_total_is_sum_when_under_cap(self): make_poi("2", 37.51, 127.0), ] result = engine.compute(pois, party_type="아기동반") - expected_total = min( - result.wellness_bonus + result.accessibility_bonus, BONUS_CAP - ) + expected_total = min(result.wellness_bonus + result.accessibility_bonus, BONUS_CAP) assert result.total_bonus == expected_total @@ -184,6 +191,7 @@ def test_total_is_sum_when_under_cap(self): # BonusEngine.from_dataset() # --------------------------------------------------------------------------- + class TestFromDataset: def test_missing_files_give_empty_engine(self): engine = BonusEngine.from_dataset( @@ -214,7 +222,9 @@ def test_zero_coords_skipped(self): wp = Path(tmp) / "wellness.json" wp.write_text(json.dumps(records), encoding="utf-8") - engine = BonusEngine.from_dataset(wellness_path=wp, barrier_free_path="nonexistent.json") + engine = BonusEngine.from_dataset( + wellness_path=wp, barrier_free_path="nonexistent.json" + ) pois = [make_poi("1", 37.5, 127.0)] result = engine.compute(pois, party_type="친구") assert result.wellness_bonus == 0 @@ -224,6 +234,7 @@ def test_zero_coords_skipped(self): # BonusResult fields # --------------------------------------------------------------------------- + class TestBonusResultFields: def test_matched_names_populated(self): engine = make_engine(wellness_coords=[(37.5, 127.0)]) diff --git a/tests/test_cluster_dispersion.py b/tests/test_cluster_dispersion.py index 0d60bf1..212e84d 100644 --- a/tests/test_cluster_dispersion.py +++ b/tests/test_cluster_dispersion.py @@ -1,14 +1,14 @@ """Tests for src/scoring/cluster_dispersion.py — per-day 검증.""" + from __future__ import annotations import pytest from src.data.models import VRPTWDay, VRPTWPlace from src.scoring.cluster_dispersion import ( + _SKLEARN_AVAILABLE, COMBINED_PENALTY_CAP, - PENALTY_DIST_CRIT, PENALTY_SWITCH_WARN, - _SKLEARN_AVAILABLE, count_geo_cluster_backtracks, evaluate_cluster_dispersion, ) @@ -16,19 +16,26 @@ def _make_place(name: str, lng: float, lat: float): return VRPTWPlace( - name=name, lng=lng, lat=lat, - open="09:00", close="22:00", stay_duration=60, is_depot=False, + name=name, + lng=lng, + lat=lat, + open="09:00", + close="22:00", + stay_duration=60, + is_depot=False, ) def test_compact_day_no_penalty(): """같은 시군구 + 거리 < 30km → 패널티 0.""" - day = VRPTWDay(places=[ - _make_place("강남A", 127.027, 37.498), - _make_place("강남B", 127.030, 37.500), - _make_place("강남C", 127.025, 37.495), - ]) - sg = [["680", "680", "680"]] # 모두 강남구 + day = VRPTWDay( + places=[ + _make_place("강남A", 127.027, 37.498), + _make_place("강남B", 127.030, 37.500), + _make_place("강남C", 127.025, 37.495), + ] + ) + sg = [["680", "680", "680"]] # 모두 강남구 report = evaluate_cluster_dispersion([day], sigungu_codes_per_day=sg) assert report.total_penalty == 0 assert report.per_day[0].sigungu_switches == 0 @@ -37,12 +44,14 @@ def test_compact_day_no_penalty(): def test_lightning_pattern_high_penalty(): """1일차에 서울↔부산 섞기 → 거리 메트릭 CRITICAL + 캡 적용.""" - day = VRPTWDay(places=[ - _make_place("서울 강남", 127.027, 37.498), - _make_place("부산 해운대", 129.157, 35.158), - _make_place("서울 종로", 126.984, 37.572), - ]) - sg = [["680", "260", "110"]] # 강남구 → 해운대구 → 종로구 + day = VRPTWDay( + places=[ + _make_place("서울 강남", 127.027, 37.498), + _make_place("부산 해운대", 129.157, 35.158), + _make_place("서울 종로", 126.984, 37.572), + ] + ) + sg = [["680", "260", "110"]] # 강남구 → 해운대구 → 종로구 report = evaluate_cluster_dispersion([day], sigungu_codes_per_day=sg) # 서울↔부산 직선거리 ~325km → CRITICAL assert report.per_day[0].max_pairwise_km > 100 @@ -52,14 +61,18 @@ def test_lightning_pattern_high_penalty(): def test_per_day_independence(): """Day1=서울 / Day2=부산 (각 day 안에서는 응집) → 패널티 없음.""" - day1 = VRPTWDay(places=[ - _make_place("서울A", 127.027, 37.498), - _make_place("서울B", 127.030, 37.500), - ]) - day2 = VRPTWDay(places=[ - _make_place("부산A", 129.157, 35.158), - _make_place("부산B", 129.160, 35.160), - ]) + day1 = VRPTWDay( + places=[ + _make_place("서울A", 127.027, 37.498), + _make_place("서울B", 127.030, 37.500), + ] + ) + day2 = VRPTWDay( + places=[ + _make_place("부산A", 129.157, 35.158), + _make_place("부산B", 129.160, 35.160), + ] + ) sg = [["680", "680"], ["260", "260"]] report = evaluate_cluster_dispersion([day1, day2], sigungu_codes_per_day=sg) assert report.total_penalty == 0 @@ -68,12 +81,14 @@ def test_per_day_independence(): @pytest.mark.skipif(not _SKLEARN_AVAILABLE, reason="sklearn not installed") def test_geo_cluster_backtrack_gyeongju(): """M4: 경주 — 동일 시군구지만 지리적으로 분산 왕복 → M3=0인데 M4≥1.""" - day = VRPTWDay(places=[ - _make_place("첨성대", 129.2191, 35.8347), # 경주 시내 - _make_place("감포해수욕장", 129.5007, 35.7914), # 경주 동해안 ~28km - _make_place("안압지", 129.2246, 35.8344), # 경주 시내 (재방문) - _make_place("불국사", 129.3317, 35.7896), # 중간 - ]) + day = VRPTWDay( + places=[ + _make_place("첨성대", 129.2191, 35.8347), # 경주 시내 + _make_place("감포해수욕장", 129.5007, 35.7914), # 경주 동해안 ~28km + _make_place("안압지", 129.2246, 35.8344), # 경주 시내 (재방문) + _make_place("불국사", 129.3317, 35.7896), # 중간 + ] + ) # 모두 경주시 → M3=0, M2=25km대 (30km 미만 → 패널티 없음) sg = [["경주시", "경주시", "경주시", "경주시"]] report = evaluate_cluster_dispersion([day], sigungu_codes_per_day=sg) @@ -89,12 +104,14 @@ def test_geo_cluster_backtrack_gyeongju(): @pytest.mark.skipif(not _SKLEARN_AVAILABLE, reason="sklearn not installed") def test_geo_cluster_no_false_positive_sequential(): """M4 false positive: 강남→홍대 순방향 방문은 패널티 없어야.""" - day = VRPTWDay(places=[ - _make_place("강남역", 127.0276, 37.4979), - _make_place("코엑스", 127.0590, 37.5115), - _make_place("홍대입구", 126.9248, 37.5574), - _make_place("연남동", 126.9259, 37.5634), - ]) + day = VRPTWDay( + places=[ + _make_place("강남역", 127.0276, 37.4979), + _make_place("코엑스", 127.0590, 37.5115), + _make_place("홍대입구", 126.9248, 37.5574), + _make_place("연남동", 126.9259, 37.5634), + ] + ) bt = count_geo_cluster_backtracks(day.places) assert bt == 0, "순방향 방문은 지리 클러스터 백트래킹 0" @@ -107,11 +124,13 @@ def test_geo_cluster_no_double_penalty_when_m3_fires(): M3: 강남→마포→강남 = 1회 탐지. M4도 동일 이벤트 탐지. → geo_pen = max(0, 1 - 1) = 0 → M4 DeepDive 없어야. """ - day = VRPTWDay(places=[ - _make_place("강남역", 127.0276, 37.4979), # cluster A - _make_place("홍대입구", 126.9248, 37.5574), # cluster B - _make_place("역삼역", 127.0368, 37.5006), # cluster A (~0.9km from 강남역) - ]) + day = VRPTWDay( + places=[ + _make_place("강남역", 127.0276, 37.4979), # cluster A + _make_place("홍대입구", 126.9248, 37.5574), # cluster B + _make_place("역삼역", 127.0368, 37.5006), # cluster A (~0.9km from 강남역) + ] + ) sg = [["강남구", "마포구", "강남구"]] report = evaluate_cluster_dispersion([day], sigungu_codes_per_day=sg) m = report.per_day[0] @@ -124,14 +143,16 @@ def test_geo_cluster_no_double_penalty_when_m3_fires(): def test_sigungu_switches_only(): """거리는 안 멀지만 시군구 전환 4회+ → 시군구 패널티만 발생.""" - day = VRPTWDay(places=[ - _make_place("A", 127.00, 37.55), # 강남 - _make_place("B", 127.01, 37.56), # 송파 (10km 미만) - _make_place("C", 127.02, 37.57), # 광진 (10km 미만) - _make_place("D", 127.03, 37.58), # 성동 (10km 미만) - _make_place("E", 127.04, 37.59), # 중구 (10km 미만) - ]) - sg = [["680", "710", "215", "200", "140"]] # 5개 다른 시군구 → 4회 전환 + day = VRPTWDay( + places=[ + _make_place("A", 127.00, 37.55), # 강남 + _make_place("B", 127.01, 37.56), # 송파 (10km 미만) + _make_place("C", 127.02, 37.57), # 광진 (10km 미만) + _make_place("D", 127.03, 37.58), # 성동 (10km 미만) + _make_place("E", 127.04, 37.59), # 중구 (10km 미만) + ] + ) + sg = [["680", "710", "215", "200", "140"]] # 5개 다른 시군구 → 4회 전환 report = evaluate_cluster_dispersion([day], sigungu_codes_per_day=sg) assert report.per_day[0].sigungu_switches == 4 assert report.total_penalty >= PENALTY_SWITCH_WARN diff --git a/tests/test_congestion_engine.py b/tests/test_congestion_engine.py index 6c188b2..345e298 100644 --- a/tests/test_congestion_engine.py +++ b/tests/test_congestion_engine.py @@ -1,8 +1,8 @@ """Unit tests for CongestionEngine.""" + from __future__ import annotations from pathlib import Path -from unittest.mock import patch import pandas as pd import pytest @@ -23,20 +23,14 @@ "poi_name": ["경복궁"] * 12 + ["남산타워"] * 12 + ["해운대"] * 12, "month": list(range(1, 13)) * 3, "avg_visitors": ( - [10000, 11000, 15000, 30000, 45000, 35000, - 30000, 32000, 40000, 50000, 20000, 12000] - + [5000, 5500, 7000, 12000, 18000, 14000, - 12000, 13000, 16000, 20000, 8000, 5000] - + [8000, 8500, 9000, 15000, 20000, 25000, - 90000, 95000, 30000, 18000, 9000, 8000] + [10000, 11000, 15000, 30000, 45000, 35000, 30000, 32000, 40000, 50000, 20000, 12000] + + [5000, 5500, 7000, 12000, 18000, 14000, 12000, 13000, 16000, 20000, 8000, 5000] + + [8000, 8500, 9000, 15000, 20000, 25000, 90000, 95000, 30000, 18000, 9000, 8000] ), "congestion_score": ( - [0.2, 0.22, 0.30, 0.60, 1.00, 0.70, - 0.60, 0.64, 0.80, 1.00, 0.40, 0.24] - + [0.25, 0.275, 0.35, 0.60, 0.90, 0.70, - 0.60, 0.65, 0.80, 1.00, 0.40, 0.25] - + [0.084, 0.090, 0.095, 0.158, 0.211, 0.263, - 1.000, 1.000, 0.316, 0.190, 0.095, 0.084] + [0.2, 0.22, 0.30, 0.60, 1.00, 0.70, 0.60, 0.64, 0.80, 1.00, 0.40, 0.24] + + [0.25, 0.275, 0.35, 0.60, 0.90, 0.70, 0.60, 0.65, 0.80, 1.00, 0.40, 0.25] + + [0.084, 0.090, 0.095, 0.158, 0.211, 0.263, 1.000, 1.000, 0.316, 0.190, 0.095, 0.084] ), "annual_max": [50000 * 12] * 12 + [20000 * 12] * 12 + [95000 * 12] * 12, "annual_min": [10000 * 12] * 12 + [5000 * 12] * 12 + [8000 * 12] * 12, @@ -55,6 +49,7 @@ def engine(tmp_path): # _score_to_level # ────────────────────────────────────────────── + @pytest.mark.parametrize( "score,expected", [ @@ -76,6 +71,7 @@ def test_score_to_level(score, expected): # Exact match # ────────────────────────────────────────────── + def test_exact_match(engine): result = engine.score("경복궁", 10) assert result.fallback_used == "exact" @@ -95,6 +91,7 @@ def test_exact_match_low_season(engine): # Partial match # ────────────────────────────────────────────── + def test_partial_match_substring(engine): result = engine.score("경복", 5) assert result.fallback_used == "partial" @@ -111,6 +108,7 @@ def test_partial_match_superstring(engine): # Category / global fallback # ────────────────────────────────────────────── + def test_global_fallback(engine): result = engine.score("존재하지않는관광지XYZ", 6) assert result.fallback_used in ("category", "global") @@ -127,6 +125,7 @@ def test_category_fallback(engine): # Validation # ────────────────────────────────────────────── + def test_invalid_month_raises(engine): with pytest.raises(ValueError, match="month must be 1-12"): engine.score("경복궁", 0) @@ -144,6 +143,7 @@ def test_result_is_dataclass(engine): # is_crowded / batch # ────────────────────────────────────────────── + def test_is_crowded_true(engine): assert engine.is_crowded("경복궁", 10, threshold=0.7) is True @@ -162,6 +162,7 @@ def test_score_itinerary(engine): # Missing CSV # ────────────────────────────────────────────── + def test_missing_csv_raises(): engine = CongestionEngine(csv_path=Path("/nonexistent/path.csv")) with pytest.raises(FileNotFoundError, match="혼잡도 데이터 없음"): diff --git a/tests/test_dwell_db.py b/tests/test_dwell_db.py index 64a24f2..6a6ee8a 100644 --- a/tests/test_dwell_db.py +++ b/tests/test_dwell_db.py @@ -1,13 +1,11 @@ """Tests for src/data/dwell_db.py — 5단계 폴백 검증.""" -from __future__ import annotations -import pytest +from __future__ import annotations from src.data.dwell_db import ( BY_LCLS1, BY_LCLS3, DEFAULT_DWELL, - MANUAL_OVERRIDES, DwellRecommendation, get_recommended_dwell, ) @@ -65,5 +63,5 @@ def test_no_info_returns_default(self): class TestIsTooShort: def test_below_50pct_is_too_short(self): rec = DwellRecommendation(min_minutes=90, max_minutes=150, source="manual") - assert rec.is_too_short(30) is True # 30 < 90*0.5=45 + assert rec.is_too_short(30) is True # 30 < 90*0.5=45 assert rec.is_too_short(60) is False # 60 >= 45 diff --git a/tests/test_estimated_hardfail.py b/tests/test_estimated_hardfail.py index 72017fa..d8d6909 100644 --- a/tests/test_estimated_hardfail.py +++ b/tests/test_estimated_hardfail.py @@ -1,7 +1,8 @@ """P1: 추정 영업시간 충돌의 하드페일 강등 테스트.""" + from __future__ import annotations -from src.data.models import DayPlan, ItineraryPlan, PlaceInput, POI +from src.data.models import POI, DayPlan, ItineraryPlan, PlaceInput from src.validation.hard_fail import HardFailDetector diff --git a/tests/test_explain_engine.py b/tests/test_explain_engine.py index 67f60da..fb5dc51 100644 --- a/tests/test_explain_engine.py +++ b/tests/test_explain_engine.py @@ -1,10 +1,9 @@ """Tests for ExplainEngine (TDD) — LLM은 mock으로 대체.""" + from __future__ import annotations import json -from unittest.mock import MagicMock, patch - -import pytest +from unittest.mock import MagicMock from src.data.models import ( AlternativePOI, @@ -26,11 +25,11 @@ _parse_llm_response, ) - # --------------------------------------------------------------------------- # Helpers # --------------------------------------------------------------------------- + def make_plan() -> ItineraryPlan: return ItineraryPlan( days=[DayPlan(places=[PlaceInput(name="경복궁"), PlaceInput(name="남산공원")])], @@ -63,19 +62,25 @@ def make_warning() -> Warning: def make_graph_stub(with_nearby: bool = True) -> MagicMock: - """GraphRetriever 스텁 — 실제 Neo4j 연결 없이 성산일출봉 검색 결과를 흉내낸다.""" + """근거 리트리버 스텁 — 외부 서비스 없이 장소 검색 결과를 흉내낸다.""" graph = MagicMock() graph.enabled = True graph.search_places.return_value = [ PlaceEvidence( - place_id="kakao_1", name="성산일출봉", place_type="ACTIVITY", - category_name="자연관광지", region_name="성산읍", - address="제주 서귀포시 성산읍", lat=33.458, lng=126.942, + place_id="kakao_1", + name="성산일출봉", + place_type="ACTIVITY", + category_name="자연관광지", + region_name="성산읍", + address="제주 서귀포시 성산읍", + lat=33.458, + lng=126.942, ) ] graph.find_nearby.return_value = ( [AlternativePOI(name="우도", distance_km=0.25, category="자연관광지", lat=33.5, lng=126.95)] - if with_nearby else [] + if with_nearby + else [] ) return graph @@ -90,6 +95,7 @@ def make_disabled_graph_stub() -> MagicMock: # _cache_key # --------------------------------------------------------------------------- + class TestCacheKey: def test_same_inputs_same_key(self): hf = [make_hard_fail()] @@ -117,6 +123,7 @@ def test_different_day_index_different_key(self): # _graph_context # --------------------------------------------------------------------------- + class TestGraphContext: def test_none_graph_returns_none(self): assert _graph_context("성산일출봉", None) is None @@ -151,6 +158,7 @@ def test_no_nearby_omits_key(self): # _build_user_prompt # --------------------------------------------------------------------------- + class TestBuildUserPrompt: def test_contains_plan_info(self): prompt = _build_user_prompt([], [], {}, {}, None, make_plan(), 80) @@ -181,7 +189,13 @@ def test_overall_item_present(self): def test_graph_evidence_included_when_matched(self): prompt = _build_user_prompt( - [make_hard_fail()], [], {}, {}, None, make_plan(), 45, + [make_hard_fail()], + [], + {}, + {}, + None, + make_plan(), + 45, graph=make_graph_stub(), ) assert "지식그래프_근거" in prompt @@ -207,7 +221,9 @@ def test_day_index_included_for_warning(self): assert "경복궁" in prompt def test_no_day_index_omits_day_field(self): - prompt = _build_user_prompt([make_hard_fail()], [make_warning()], {}, {}, None, make_plan(), 45) + prompt = _build_user_prompt( + [make_hard_fail()], [make_warning()], {}, {}, None, make_plan(), 45 + ) assert "일자" not in prompt.split("출력 예시")[0] def test_warning_graph_evidence_uses_first_poi_name(self): @@ -222,56 +238,102 @@ def test_warning_graph_evidence_uses_first_poi_name(self): # _parse_llm_response # --------------------------------------------------------------------------- + class TestParseLlmResponse: def test_parses_valid_json_array(self): - raw = json.dumps([{ - "item_type": "hard_fail", - "item_key": "OPERATING_HOURS_CONFLICT", - "fact": "경복궁 도착 18:30, 운영 종료 18:00", - "rule": "운영시간 외 방문 불가", - "risk": "CRITICAL", - "suggestion": "방문 순서를 앞당기세요", - }]) + raw = json.dumps( + [ + { + "item_type": "hard_fail", + "item_key": "OPERATING_HOURS_CONFLICT", + "fact": "경복궁 도착 18:30, 운영 종료 18:00", + "rule": "운영시간 외 방문 불가", + "risk": "CRITICAL", + "suggestion": "방문 순서를 앞당기세요", + } + ] + ) items = _parse_llm_response(raw) assert len(items) == 1 assert items[0].item_type == "hard_fail" assert items[0].risk == "CRITICAL" def test_strips_code_block_wrapper(self): - raw = "```json\n[{\"item_type\":\"overall\",\"item_key\":\"summary\",\"fact\":\"점수 80\",\"rule\":\"규칙\",\"risk\":\"OK\",\"suggestion\":\"좋음\"}]\n```" + raw = '```json\n[{"item_type":"overall","item_key":"summary","fact":"점수 80","rule":"규칙","risk":"OK","suggestion":"좋음"}]\n```' items = _parse_llm_response(raw) assert len(items) == 1 assert items[0].risk == "OK" def test_multiple_items(self): - raw = json.dumps([ - {"item_type": "hard_fail", "item_key": "HF1", "fact": "f", "rule": "r", "risk": "CRITICAL", "suggestion": "s"}, - {"item_type": "warning", "item_key": "W1", "fact": "f", "rule": "r", "risk": "WARNING", "suggestion": "s"}, - ]) + raw = json.dumps( + [ + { + "item_type": "hard_fail", + "item_key": "HF1", + "fact": "f", + "rule": "r", + "risk": "CRITICAL", + "suggestion": "s", + }, + { + "item_type": "warning", + "item_key": "W1", + "fact": "f", + "rule": "r", + "risk": "WARNING", + "suggestion": "s", + }, + ] + ) items = _parse_llm_response(raw) assert len(items) == 2 def test_returns_explanation_items(self): - raw = json.dumps([{ - "item_type": "overall", "item_key": "summary", - "fact": "fact", "rule": "rule", "risk": "OK", "suggestion": "sug", - }]) + raw = json.dumps( + [ + { + "item_type": "overall", + "item_key": "summary", + "fact": "fact", + "rule": "rule", + "risk": "OK", + "suggestion": "sug", + } + ] + ) items = _parse_llm_response(raw) assert all(isinstance(i, ExplanationItem) for i in items) def test_day_index_echoed_back(self): - raw = json.dumps([{ - "item_type": "hard_fail", "item_key": "OPERATING_HOURS_CONFLICT", "day_index": 1, - "fact": "f", "rule": "r", "risk": "CRITICAL", "suggestion": "s", - }]) + raw = json.dumps( + [ + { + "item_type": "hard_fail", + "item_key": "OPERATING_HOURS_CONFLICT", + "day_index": 1, + "fact": "f", + "rule": "r", + "risk": "CRITICAL", + "suggestion": "s", + } + ] + ) items = _parse_llm_response(raw) assert items[0].day_index == 1 def test_missing_day_index_defaults_to_none(self): - raw = json.dumps([{ - "item_type": "overall", "item_key": "summary", - "fact": "f", "rule": "r", "risk": "OK", "suggestion": "s", - }]) + raw = json.dumps( + [ + { + "item_type": "overall", + "item_key": "summary", + "fact": "f", + "rule": "r", + "risk": "OK", + "suggestion": "s", + } + ] + ) items = _parse_llm_response(raw) assert items[0].day_index is None @@ -280,6 +342,7 @@ def test_missing_day_index_defaults_to_none(self): # _fallback # --------------------------------------------------------------------------- + class TestFallback: def test_hard_fail_becomes_critical(self): items = _fallback([make_hard_fail()], [], {}, 45) @@ -348,6 +411,7 @@ def test_no_day_index_no_prefix(self): # ExplainEngine (no LLM) # --------------------------------------------------------------------------- + class TestExplainEngineNoLLM: def setup_method(self): # API 키 없이 인스턴스 — fallback 경로 테스트 @@ -371,8 +435,13 @@ def test_generate_returns_list_of_explanation_items(self): def test_no_issues_returns_ok_overall(self): result = self.engine.generate( - hard_fails=[], warnings=[], penalty_breakdown={}, - bonus_breakdown={}, scores=make_scores(), plan=make_plan(), final_score=82, + hard_fails=[], + warnings=[], + penalty_breakdown={}, + bonus_breakdown={}, + scores=make_scores(), + plan=make_plan(), + final_score=82, ) assert len(result) == 1 assert result[0].item_type == "overall" @@ -380,24 +449,39 @@ def test_no_issues_returns_ok_overall(self): def test_hard_fail_present_in_results(self): result = self.engine.generate( - hard_fails=[make_hard_fail()], warnings=[], penalty_breakdown={}, - bonus_breakdown={}, scores=None, plan=make_plan(), final_score=45, + hard_fails=[make_hard_fail()], + warnings=[], + penalty_breakdown={}, + bonus_breakdown={}, + scores=None, + plan=make_plan(), + final_score=45, ) hf_items = [i for i in result if i.item_type == "hard_fail"] assert len(hf_items) >= 1 def test_warning_present_in_results(self): result = self.engine.generate( - hard_fails=[], warnings=[make_warning()], penalty_breakdown={}, - bonus_breakdown={}, scores=None, plan=make_plan(), final_score=70, + hard_fails=[], + warnings=[make_warning()], + penalty_breakdown={}, + bonus_breakdown={}, + scores=None, + plan=make_plan(), + final_score=70, ) w_items = [i for i in result if i.item_type == "warning"] assert len(w_items) >= 1 def test_penalty_present_in_results(self): result = self.engine.generate( - hard_fails=[], warnings=[], penalty_breakdown={"cluster_dispersion": 10}, - bonus_breakdown={}, scores=None, plan=make_plan(), final_score=70, + hard_fails=[], + warnings=[], + penalty_breakdown={"cluster_dispersion": 10}, + bonus_breakdown={}, + scores=None, + plan=make_plan(), + final_score=70, ) p_items = [i for i in result if i.item_type == "penalty"] assert len(p_items) >= 1 @@ -407,6 +491,7 @@ def test_penalty_present_in_results(self): # ExplainEngine — LLM mock 경로 # --------------------------------------------------------------------------- + class TestExplainEngineMockLLM: def _make_mock_client(self, response_json: list[dict]): raw = json.dumps(response_json) @@ -419,25 +504,33 @@ def _make_mock_client(self, response_json: list[dict]): return client def test_llm_response_used_when_available(self): - llm_output = [{ - "item_type": "hard_fail", - "item_key": "OPERATING_HOURS_CONFLICT", - "fact": "경복궁 도착 18:30, 운영종료 18:00 — 30분 초과", - "rule": "운영시간 외 방문 불가 (Hard Fail)", - "risk": "CRITICAL", - "suggestion": "방문 순서를 오전으로 앞당기세요.", - }, { - "item_type": "overall", - "item_key": "summary", - "fact": "최종 점수 45/100", - "rule": "60점 미만은 FAIL", - "risk": "CRITICAL", - "suggestion": "Hard Fail 해결 후 재검증하세요.", - }] + llm_output = [ + { + "item_type": "hard_fail", + "item_key": "OPERATING_HOURS_CONFLICT", + "fact": "경복궁 도착 18:30, 운영종료 18:00 — 30분 초과", + "rule": "운영시간 외 방문 불가 (Hard Fail)", + "risk": "CRITICAL", + "suggestion": "방문 순서를 오전으로 앞당기세요.", + }, + { + "item_type": "overall", + "item_key": "summary", + "fact": "최종 점수 45/100", + "rule": "60점 미만은 FAIL", + "risk": "CRITICAL", + "suggestion": "Hard Fail 해결 후 재검증하세요.", + }, + ] engine = ExplainEngine(api_key="test-key", client=self._make_mock_client(llm_output)) result = engine.generate( - hard_fails=[make_hard_fail()], warnings=[], penalty_breakdown={}, - bonus_breakdown={}, scores=None, plan=make_plan(), final_score=45, + hard_fails=[make_hard_fail()], + warnings=[], + penalty_breakdown={}, + bonus_breakdown={}, + scores=None, + plan=make_plan(), + final_score=45, ) assert len(result) == 2 assert result[0].fact == "경복궁 도착 18:30, 운영종료 18:00 — 30분 초과" @@ -447,20 +540,32 @@ def test_llm_failure_falls_back_gracefully(self): client.messages.create.side_effect = Exception("API timeout") engine = ExplainEngine(api_key="test-key", client=client) result = engine.generate( - hard_fails=[make_hard_fail()], warnings=[], penalty_breakdown={}, - bonus_breakdown={}, scores=None, plan=make_plan(), final_score=45, + hard_fails=[make_hard_fail()], + warnings=[], + penalty_breakdown={}, + bonus_breakdown={}, + scores=None, + plan=make_plan(), + final_score=45, ) assert len(result) >= 1 assert all(isinstance(i, ExplanationItem) for i in result) def test_cache_prevents_second_llm_call(self): import src.explain.explain_engine as ee + ee._CACHE.clear() # 모듈 단위 캐시 초기화 — 타 테스트와 격리 - llm_output = [{ - "item_type": "overall", "item_key": "summary", - "fact": "f", "rule": "r", "risk": "CRITICAL", "suggestion": "s", - }] + llm_output = [ + { + "item_type": "overall", + "item_key": "summary", + "fact": "f", + "rule": "r", + "risk": "CRITICAL", + "suggestion": "s", + } + ] client = self._make_mock_client(llm_output) engine = ExplainEngine(api_key="test-key", client=client) # 동일 입력으로 두 번 호출 @@ -476,17 +581,29 @@ def test_is_available_with_client(self): def test_graph_evidence_reaches_llm_prompt(self): import src.explain.explain_engine as ee + ee._CACHE.clear() - llm_output = [{ - "item_type": "hard_fail", "item_key": "OPERATING_HOURS_CONFLICT", - "fact": "f", "rule": "r", "risk": "CRITICAL", "suggestion": "s", - }] + llm_output = [ + { + "item_type": "hard_fail", + "item_key": "OPERATING_HOURS_CONFLICT", + "fact": "f", + "rule": "r", + "risk": "CRITICAL", + "suggestion": "s", + } + ] client = self._make_mock_client(llm_output) engine = ExplainEngine(api_key="test-key", client=client, graph_retriever=make_graph_stub()) engine.generate( - hard_fails=[make_hard_fail()], warnings=[], penalty_breakdown={}, - bonus_breakdown={}, scores=None, plan=make_plan(), final_score=45, + hard_fails=[make_hard_fail()], + warnings=[], + penalty_breakdown={}, + bonus_breakdown={}, + scores=None, + plan=make_plan(), + final_score=45, ) sent_prompt = client.messages.create.call_args.kwargs["messages"][0]["content"] assert "지식그래프_근거" in sent_prompt @@ -494,16 +611,17 @@ def test_graph_evidence_reaches_llm_prompt(self): class TestExplainEngineGraphDefault: - def test_default_graph_disabled_without_env(self, monkeypatch): + def test_default_graph_uses_local_catalog_without_env(self, monkeypatch): monkeypatch.delenv("NEO4J_URI", raising=False) engine = ExplainEngine(api_key="", client=None) - assert engine._graph.enabled is False + assert engine._graph.enabled is True # --------------------------------------------------------------------------- # ExplainEngine.build_alternatives — Hard Fail POI 지식그래프 대안 제안 # --------------------------------------------------------------------------- + class TestBuildAlternatives: def test_no_hard_fails_returns_empty(self): engine = ExplainEngine(api_key="", client=None, graph_retriever=make_graph_stub()) diff --git a/tests/test_geo.py b/tests/test_geo.py index 4ed7e72..1af5b5c 100644 --- a/tests/test_geo.py +++ b/tests/test_geo.py @@ -1,4 +1,5 @@ """Tests for src/utils/geo.py (TDD).""" + from __future__ import annotations import pytest @@ -9,9 +10,12 @@ def make_poi(poi_id: str, lat: float, lng: float) -> POI: return POI( - poi_id=poi_id, name=poi_id, - lat=lat, lng=lng, - open_start="09:00", open_end="18:00", + poi_id=poi_id, + name=poi_id, + lat=lat, + lng=lng, + open_start="09:00", + open_end="18:00", duration_min=60, ) @@ -20,6 +24,7 @@ def make_poi(poi_id: str, lat: float, lng: float) -> POI: # haversine_km # --------------------------------------------------------------------------- + class TestHaversineKm: def test_same_point_is_zero(self): assert haversine_km(37.5, 127.0, 37.5, 127.0) == pytest.approx(0.0, abs=1e-9) @@ -42,6 +47,7 @@ def test_positive(self): # build_dist_cache # --------------------------------------------------------------------------- + class TestBuildDistCache: def test_all_pairs_present(self): pois = [make_poi(str(i), 37.5 + i * 0.1, 127.0) for i in range(4)] @@ -80,6 +86,7 @@ def test_empty_list_empty_cache(self): # nn_heuristic_km # --------------------------------------------------------------------------- + class TestNnHeuristicKm: def test_single_poi_returns_zero(self): pois = [make_poi("A", 37.5, 127.0)] @@ -115,8 +122,7 @@ def test_collinear_optimal_order_matches_nn(self): # 일렬로 나열된 POI를 순서대로 방문 → NN과 동일 pois = [make_poi(str(i), 37.5, 127.0 + i * 0.1) for i in range(4)] actual_km = sum( - haversine_km(37.5, 127.0 + i * 0.1, 37.5, 127.0 + (i + 1) * 0.1) - for i in range(3) + haversine_km(37.5, 127.0 + i * 0.1, 37.5, 127.0 + (i + 1) * 0.1) for i in range(3) ) assert nn_heuristic_km(pois) == pytest.approx(actual_km, rel=1e-6) @@ -125,6 +131,7 @@ def test_collinear_optimal_order_matches_nn(self): # get_travel_min # --------------------------------------------------------------------------- + class TestGetTravelMin: def test_uses_matrix_when_available(self): origin = make_poi("A", 37.5, 127.0) diff --git a/tests/test_graph_retriever.py b/tests/test_graph_retriever.py index 0bda011..5bf2737 100644 --- a/tests/test_graph_retriever.py +++ b/tests/test_graph_retriever.py @@ -1,97 +1,41 @@ -"""GraphRetriever 테스트 (실제 Neo4j 호출 X — 모두 mock).""" -from __future__ import annotations +"""로컬 장소 근거 리트리버 테스트.""" -from unittest.mock import MagicMock, patch +from pathlib import Path -from neo4j.exceptions import Neo4jError - -from src.data.graph_retriever import GraphRetriever +from src.data.evidence_retriever import LocalEvidenceRetriever from src.data.models import AlternativePOI, PlaceEvidence -def test_disabled_without_uri_returns_empty() -> None: - retriever = GraphRetriever(uri="", username="", password="") +def _catalog(tmp_path: Path) -> Path: + path = tmp_path / "places.csv" + path.write_text( + "ID,대분류,상호명,도로명주소,위도,경도,중분류명\n" + "1,관광지,성산일출봉,제주특별자치도 서귀포시 성산읍,33.458,126.942,자연관광지\n" + "2,관광지,섭지코지,제주특별자치도 서귀포시 성산읍,33.43,126.93,자연관광지\n", + encoding="utf-8", + ) + return path + + +def test_missing_catalog_is_disabled(tmp_path: Path) -> None: + retriever = LocalEvidenceRetriever(tmp_path / "missing.csv") assert retriever.enabled is False assert retriever.search_places("성산일출봉") == [] - assert retriever.find_nearby("kakao_1") == [] - -def test_search_places_parses_records() -> None: - with patch("src.data.graph_retriever.GraphDatabase.driver", return_value=MagicMock()): - retriever = GraphRetriever(uri="neo4j+s://x", username="u", password="p", database="db") - fake_result = MagicMock() - fake_result.records = [ - { - "id": "kakao_1", "name": "성산일출봉", "place_type": "ACTIVITY", - "category_name": "자연관광지", "address": "제주 서귀포시 ...", - "lat": 33.458, "lng": 126.942, "region_name": "성산읍", - } - ] - retriever._driver.execute_query.return_value = fake_result - places = retriever.search_places("일출봉") +def test_search_places_reads_local_catalog(tmp_path: Path) -> None: + retriever = LocalEvidenceRetriever(_catalog(tmp_path)) + places = retriever.search_places("일출봉") assert len(places) == 1 assert isinstance(places[0], PlaceEvidence) assert places[0].name == "성산일출봉" - assert places[0].region_name == "성산읍" - - -def test_search_places_empty_query_skips_call() -> None: - with patch("src.data.graph_retriever.GraphDatabase.driver", return_value=MagicMock()): - retriever = GraphRetriever(uri="neo4j+s://x", username="u", password="p") - assert retriever.search_places(" ") == [] - retriever._driver.execute_query.assert_not_called() - - -def test_search_places_neo4j_error_returns_empty() -> None: - with patch("src.data.graph_retriever.GraphDatabase.driver", return_value=MagicMock()): - retriever = GraphRetriever(uri="neo4j+s://x", username="u", password="p") - retriever._driver.execute_query.side_effect = Neo4jError("boom") - assert retriever.search_places("일출봉") == [] - + assert places[0].region_name == "제주특별자치도 서귀포시" -def test_find_nearby_parses_and_converts_distance() -> None: - with patch("src.data.graph_retriever.GraphDatabase.driver", return_value=MagicMock()): - retriever = GraphRetriever(uri="neo4j+s://x", username="u", password="p") - fake_result = MagicMock() - fake_result.records = [ - {"name": "우도", "category": "자연관광지", "lat": 33.5, "lng": 126.95, "distance_m": 250.0}, - ] - retriever._driver.execute_query.return_value = fake_result - alts = retriever.find_nearby("kakao_1") - assert len(alts) == 1 - assert isinstance(alts[0], AlternativePOI) - assert alts[0].distance_km == 0.25 - - -def test_repeated_failures_skip_driver_call_during_cooldown() -> None: - with patch("src.data.graph_retriever.GraphDatabase.driver", return_value=MagicMock()): - retriever = GraphRetriever(uri="neo4j+s://x", username="u", password="p") - retriever._driver.execute_query.side_effect = Neo4jError("boom") - - assert retriever.search_places("일출봉") == [] - assert retriever.find_nearby("kakao_1") == [] - - assert retriever._driver.execute_query.call_count == 1 - - -def test_close_closes_driver() -> None: - with patch("src.data.graph_retriever.GraphDatabase.driver", return_value=MagicMock()): - retriever = GraphRetriever(uri="neo4j+s://x", username="u", password="p") - retriever.close() - retriever._driver.close.assert_called_once() - - -def test_from_env_reads_variables(monkeypatch) -> None: - monkeypatch.setenv("NEO4J_URI", "neo4j+s://x") - monkeypatch.setenv("NEO4J_USERNAME", "u") - monkeypatch.setenv("NEO4J_PASSWORD", "p") - monkeypatch.setenv("NEO4J_DATABASE", "db") - with patch("src.data.graph_retriever.GraphDatabase.driver", return_value=MagicMock()) as create: - retriever = GraphRetriever.from_env() - - create.assert_called_once_with( - "neo4j+s://x", auth=("u", "p"), connection_timeout=5.0, max_transaction_retry_time=5.0 - ) - assert retriever._database == "db" +def test_find_nearby_returns_local_alternatives(tmp_path: Path) -> None: + retriever = LocalEvidenceRetriever(_catalog(tmp_path)) + alternatives = retriever.find_nearby("1") + assert len(alternatives) == 1 + assert isinstance(alternatives[0], AlternativePOI) + assert alternatives[0].name == "섭지코지" + assert alternatives[0].distance_km > 0 diff --git a/tests/test_hard_fail.py b/tests/test_hard_fail.py index 5f96c7f..7775353 100644 --- a/tests/test_hard_fail.py +++ b/tests/test_hard_fail.py @@ -1,4 +1,5 @@ """Tests for HardFailDetector (TDD).""" + from __future__ import annotations import pytest @@ -10,6 +11,7 @@ # Helpers # --------------------------------------------------------------------------- + def make_poi( poi_id: str = "1", name: str = "POI", @@ -21,9 +23,14 @@ def make_poi( category: str = "14", ) -> POI: return POI( - poi_id=poi_id, name=name, lat=lat, lng=lng, - open_start=open_start, open_end=open_end, - duration_min=duration_min, category=category, + poi_id=poi_id, + name=name, + lat=lat, + lng=lng, + open_start=open_start, + open_end=open_end, + duration_min=duration_min, + category=category, ) @@ -54,6 +61,7 @@ def make_matrix(pairs: dict[tuple[int, int], float]) -> dict: # Fixtures # --------------------------------------------------------------------------- + @pytest.fixture def detector() -> HardFailDetector: return HardFailDetector() @@ -68,6 +76,7 @@ def open_poi() -> POI: # _time_to_min / _min_to_time # --------------------------------------------------------------------------- + class TestHelpers: def test_time_to_min(self): assert HardFailDetector._time_to_min("09:30") == 570 @@ -89,6 +98,7 @@ def test_min_to_time_wraps_past_24h(self): # OPERATING_HOURS_CONFLICT # --------------------------------------------------------------------------- + class TestOperatingHours: def test_no_fail_within_hours(self, detector, open_poi): # start=09:10, open 09:00-18:00 → no fail @@ -98,6 +108,20 @@ def test_no_fail_within_hours(self, detector, open_poi): types = [f.fail_type for f in fails] assert "OPERATING_HOURS_CONFLICT" not in types + def test_stay_must_finish_before_closing(self, detector): + poi = make_poi( + poi_id="1", + name="A", + open_start="10:00", + open_end="11:00", + duration_min=120, + ) + plan = make_plan(["A"]) + + fails = detector.detect(plan, [poi], {}, start_minutes=10 * 60 + 30) + + assert any(f.fail_type == "OPERATING_HOURS_CONFLICT" for f in fails) + def test_fail_arrive_before_open(self, detector, open_poi): # start=08:30, open 09:00-18:00 → OPERATING_HOURS_CONFLICT pois = [open_poi] @@ -132,12 +156,15 @@ def test_no_fail_for_fallback_hours(self, detector): # TRAVEL_TIME_IMPOSSIBLE # --------------------------------------------------------------------------- + class TestTravelTimeImpossible: def test_travel_impossible(self, detector): # departure at 09:00, next poi closes at 10:00 → window=60 min # matrix says 200 min travel → TRAVEL_TIME_IMPOSSIBLE poi_a = make_poi(poi_id="1", name="A", open_start="09:00", open_end="18:00", duration_min=1) - poi_b = make_poi(poi_id="2", name="B", open_start="09:00", open_end="10:00", duration_min=60) + poi_b = make_poi( + poi_id="2", name="B", open_start="09:00", open_end="10:00", duration_min=60 + ) pois = [poi_a, poi_b] matrix = make_matrix({(0, 1): 200.0}) # 200 min travel plan = make_plan(["A", "B"]) @@ -148,8 +175,12 @@ def test_travel_impossible(self, detector): assert match.confidence == "High" def test_no_fail_sufficient_window(self, detector): - poi_a = make_poi(poi_id="1", name="A", open_start="09:00", open_end="18:00", duration_min=60) - poi_b = make_poi(poi_id="2", name="B", open_start="09:00", open_end="18:00", duration_min=60) + poi_a = make_poi( + poi_id="1", name="A", open_start="09:00", open_end="18:00", duration_min=60 + ) + poi_b = make_poi( + poi_id="2", name="B", open_start="09:00", open_end="18:00", duration_min=60 + ) pois = [poi_a, poi_b] matrix = make_matrix({(0, 1): 30.0}) plan = make_plan(["A", "B"]) @@ -162,19 +193,22 @@ def test_no_fail_sufficient_window(self, detector): # SCHEDULE_INFEASIBLE # --------------------------------------------------------------------------- + class TestScheduleInfeasible: def test_schedule_exceeds_24h(self, detector): # 4 POIs × 360 min dwell + heavy travel → > 1440 min pois = [ - make_poi(poi_id=str(i), name=f"P{i}", - lat=37.5 + i * 0.01, lng=127.0, - duration_min=360) + make_poi(poi_id=str(i), name=f"P{i}", lat=37.5 + i * 0.01, lng=127.0, duration_min=360) for i in range(4) ] # travel 30 min between each pair - matrix = make_matrix({ - (0, 1): 30.0, (1, 2): 30.0, (2, 3): 30.0, - }) + matrix = make_matrix( + { + (0, 1): 30.0, + (1, 2): 30.0, + (2, 3): 30.0, + } + ) plan = make_plan([f"P{i}" for i in range(4)]) fails = detector.detect(plan, pois, matrix) # 4×360 + 3×30 = 1440 + 90 = 1530 > 1440 @@ -182,10 +216,7 @@ def test_schedule_exceeds_24h(self, detector): assert "SCHEDULE_INFEASIBLE" in types def test_schedule_within_24h(self, detector): - pois = [ - make_poi(poi_id=str(i), name=f"P{i}", duration_min=60) - for i in range(4) - ] + pois = [make_poi(poi_id=str(i), name=f"P{i}", duration_min=60) for i in range(4)] matrix = make_matrix({(0, 1): 30.0, (1, 2): 30.0, (2, 3): 30.0}) plan = make_plan([f"P{i}" for i in range(4)]) fails = detector.detect(plan, pois, matrix) @@ -198,6 +229,7 @@ def test_schedule_within_24h(self, detector): # Normal plan — empty result # --------------------------------------------------------------------------- + class TestNormalPlan: def test_normal_plan_no_fails(self, detector): pois = [ @@ -206,9 +238,13 @@ def test_normal_plan_no_fails(self, detector): make_poi(poi_id="3", name="C", open_start="09:00", open_end="18:00", duration_min=60), make_poi(poi_id="4", name="D", open_start="09:00", open_end="18:00", duration_min=60), ] - matrix = make_matrix({ - (0, 1): 20.0, (1, 2): 20.0, (2, 3): 20.0, - }) + matrix = make_matrix( + { + (0, 1): 20.0, + (1, 2): 20.0, + (2, 3): 20.0, + } + ) plan = make_plan(["A", "B", "C", "D"]) fails = detector.detect(plan, pois, matrix) assert fails == [] @@ -218,6 +254,7 @@ def test_normal_plan_no_fails(self, detector): # day_index threading # --------------------------------------------------------------------------- + class TestDayIndex: def test_day_index_defaults_to_none(self, detector): poi = make_poi(poi_id="1", name="A", open_start="09:00", open_end="18:00", duration_min=60) diff --git a/tests/test_kakao_local.py b/tests/test_kakao_local.py index 667bfd6..44f1480 100644 --- a/tests/test_kakao_local.py +++ b/tests/test_kakao_local.py @@ -1,4 +1,5 @@ """KakaoLocalClient 테스트 (실제 API 호출 X — 모두 mock).""" + from __future__ import annotations from unittest.mock import MagicMock, patch @@ -75,10 +76,20 @@ def _multi_response() -> MagicMock: m.raise_for_status.return_value = None m.json.return_value = { "documents": [ - {"place_name": "금복식당", "x": "126.922", "y": "37.547", - "category_name": "음식점 > 한식", "road_address_name": "서울 마포구 ..."}, - {"place_name": "금복식당 2호점", "x": "126.923", "y": "37.548", - "category_name": "음식점 > 한식", "address_name": "서울 마포구 ..."}, + { + "place_name": "금복식당", + "x": "126.922", + "y": "37.547", + "category_name": "음식점 > 한식", + "road_address_name": "서울 마포구 ...", + }, + { + "place_name": "금복식당 2호점", + "x": "126.923", + "y": "37.548", + "category_name": "음식점 > 한식", + "address_name": "서울 마포구 ...", + }, ] } return m diff --git a/tests/test_kakao_matrix.py b/tests/test_kakao_matrix.py index 8ab2256..1497900 100644 --- a/tests/test_kakao_matrix.py +++ b/tests/test_kakao_matrix.py @@ -1,4 +1,5 @@ """KakaoMobilityMatrix 테스트 (실제 API 호출 X — 모두 mock).""" + from __future__ import annotations import json @@ -12,8 +13,13 @@ def _place(name: str, lng: float, lat: float) -> VRPTWPlace: return VRPTWPlace( - name=name, lng=lng, lat=lat, - open="09:00", close="22:00", stay_duration=60, is_depot=False, + name=name, + lng=lng, + lat=lat, + open="09:00", + close="22:00", + stay_duration=60, + is_depot=False, ) @@ -22,10 +28,12 @@ def _ok_response() -> MagicMock: m = MagicMock() m.status_code = 200 m.json.return_value = { - "routes": [{ - "summary": {"duration": 600, "distance": 5000}, - "sections": [{"duration": 600}], - }], + "routes": [ + { + "summary": {"duration": 600, "distance": 5000}, + "sections": [{"duration": 600}], + } + ], } return m @@ -44,6 +52,7 @@ def _httpx_sync_client(response: MagicMock) -> MagicMock: # Same point → zero # --------------------------------------------------------------------------- + class TestSamePoint: def test_same_coords_returns_zero(self): m = KakaoMobilityMatrix(api_key="dummy") @@ -55,14 +64,17 @@ def test_same_coords_returns_zero(self): # Cache + sync API (_call_kakao_sync) # --------------------------------------------------------------------------- + class TestApiCall: def test_sync_call_populates_cache(self): m = KakaoMobilityMatrix(api_key="dummy") a = _place("A", 127.0, 37.5) b = _place("B", 127.1, 37.6) - with patch("src.validation.kakao_matrix.httpx.Client", - return_value=_httpx_sync_client(_ok_response())): + with patch( + "src.validation.kakao_matrix.httpx.Client", + return_value=_httpx_sync_client(_ok_response()), + ): result = m._call_kakao_sync(a, b) assert result == 600 @@ -73,8 +85,10 @@ def test_get_travel_time_uses_cache_after_sync_call(self): a = _place("A", 127.0, 37.5) b = _place("B", 127.1, 37.6) - with patch("src.validation.kakao_matrix.httpx.Client", - return_value=_httpx_sync_client(_ok_response())): + with patch( + "src.validation.kakao_matrix.httpx.Client", + return_value=_httpx_sync_client(_ok_response()), + ): m._call_kakao_sync(a, b) result = m.get_travel_time(a, b) @@ -87,12 +101,14 @@ def test_get_travel_time_second_call_cache_hit(self): a = _place("A", 127.0, 37.5) b = _place("B", 127.1, 37.6) - with patch("src.validation.kakao_matrix.httpx.Client", - return_value=_httpx_sync_client(_ok_response())): + with patch( + "src.validation.kakao_matrix.httpx.Client", + return_value=_httpx_sync_client(_ok_response()), + ): m._call_kakao_sync(a, b) - m.get_travel_time(a, b) # 1st hit - m.get_travel_time(a, b) # 2nd hit + m.get_travel_time(a, b) # 1st hit + m.get_travel_time(a, b) # 2nd hit assert m.stats["cache_hit"] == 2 def test_reverse_direction_also_cached(self): @@ -100,8 +116,10 @@ def test_reverse_direction_also_cached(self): a = _place("A", 127.0, 37.5) b = _place("B", 127.1, 37.6) - with patch("src.validation.kakao_matrix.httpx.Client", - return_value=_httpx_sync_client(_ok_response())): + with patch( + "src.validation.kakao_matrix.httpx.Client", + return_value=_httpx_sync_client(_ok_response()), + ): m._call_kakao_sync(a, b) result = m.get_travel_time(b, a) # reverse 방향 @@ -113,6 +131,7 @@ def test_reverse_direction_also_cached(self): # Quota exhaustion — 429 # --------------------------------------------------------------------------- + class TestQuotaExhaustion: def test_429_sets_quota_exhausted(self): m = KakaoMobilityMatrix(api_key="dummy") @@ -122,8 +141,9 @@ def test_429_sets_quota_exhausted(self): resp_429 = MagicMock() resp_429.status_code = 429 - with patch("src.validation.kakao_matrix.httpx.Client", - return_value=_httpx_sync_client(resp_429)): + with patch( + "src.validation.kakao_matrix.httpx.Client", return_value=_httpx_sync_client(resp_429) + ): result = m._call_kakao_sync(a, b) assert result is None @@ -134,7 +154,7 @@ def test_get_travel_time_haversine_fallback_when_no_cache(self): a = _place("A", 127.0, 37.5) b = _place("B", 127.1, 37.6) - result = m.get_travel_time(a, b) # cache miss → haversine + result = m.get_travel_time(a, b) # cache miss → haversine assert result > 0 assert m.stats["fallback"] == 1 @@ -152,6 +172,7 @@ def test_after_quota_exhausted_get_travel_time_falls_back(self): # Auth error # --------------------------------------------------------------------------- + class TestAuthError: def test_401_raises(self): resp_401 = MagicMock() @@ -161,8 +182,9 @@ def test_401_raises(self): a = _place("A", 127.0, 37.5) b = _place("B", 127.1, 37.6) - with patch("src.validation.kakao_matrix.httpx.Client", - return_value=_httpx_sync_client(resp_401)): + with patch( + "src.validation.kakao_matrix.httpx.Client", return_value=_httpx_sync_client(resp_401) + ): with pytest.raises(RuntimeError, match="인증 오류"): m._call_kakao_sync(a, b) @@ -171,6 +193,7 @@ def test_401_raises(self): # Cache persistence # --------------------------------------------------------------------------- + class TestCachePersistence: def test_save_and_load_cache(self, tmp_path): cache_file = tmp_path / "route_cache.json" @@ -179,8 +202,10 @@ def test_save_and_load_cache(self, tmp_path): a = _place("A", 127.0, 37.5) b = _place("B", 127.1, 37.6) - with patch("src.validation.kakao_matrix.httpx.Client", - return_value=_httpx_sync_client(_ok_response())): + with patch( + "src.validation.kakao_matrix.httpx.Client", + return_value=_httpx_sync_client(_ok_response()), + ): m1._call_kakao_sync(a, b) m1.save_cache() @@ -198,6 +223,7 @@ def test_save_and_load_cache(self, tmp_path): # from_env # --------------------------------------------------------------------------- + class TestFromEnv: def test_no_key_raises(self, monkeypatch): monkeypatch.delenv("KAKAO_MOBILITY_KEY", raising=False) @@ -222,10 +248,10 @@ def test_falls_back_to_rest_key(self, monkeypatch): # aprefetch_matrix (async) # --------------------------------------------------------------------------- + class TestAsyncPrefetch: def test_aprefetch_populates_cache_and_hit_on_get(self): """aprefetch_matrix 후 get_travel_time이 캐시를 사용한다.""" - import asyncio m = KakaoMobilityMatrix(api_key="dummy") a = _place("A", 127.0, 37.5) diff --git a/tests/test_party_config.py b/tests/test_party_config.py index 4da4891..2dcb404 100644 --- a/tests/test_party_config.py +++ b/tests/test_party_config.py @@ -1,9 +1,12 @@ """PartyProfile 수량화 로직 테스트.""" + from __future__ import annotations +from dataclasses import FrozenInstanceError + import pytest -from src.data.party_config import PARTY_PROFILES, PartyProfile, get_party_profile +from src.data.party_config import PARTY_PROFILES, get_party_profile class TestPartyProfiles: @@ -43,7 +46,7 @@ def test_unknown_type_returns_default(self): def test_profile_is_frozen(self): profile = get_party_profile("친구") - with pytest.raises(Exception): + with pytest.raises(FrozenInstanceError): profile.speed_factor = 2.0 # type: ignore[misc] diff --git a/tests/test_pipeline_orchestrator.py b/tests/test_pipeline_orchestrator.py index 641812a..cce9e5b 100644 --- a/tests/test_pipeline_orchestrator.py +++ b/tests/test_pipeline_orchestrator.py @@ -1,19 +1,27 @@ """Tests for ValidatorPipeline (TDD).""" + from __future__ import annotations from unittest.mock import MagicMock import pytest -from src.data.models import AlternativePOI, DayPlan, HardFail, ItineraryPlan, PlaceInput, POI, ValidationResult +from src.data.models import ( + POI, + AlternativePOI, + DayPlan, + ItineraryPlan, + PlaceInput, + ValidationResult, +) from src.explain.pipeline import ValidatorPipeline, _to_vrptw_day from src.scoring.bonus_engine import BonusEngine, _PlaceCoord - # --------------------------------------------------------------------------- # Helpers # --------------------------------------------------------------------------- + def make_poi( poi_id: str = "1", lat: float = 37.5, @@ -22,9 +30,12 @@ def make_poi( duration_min: int = 60, ) -> POI: return POI( - poi_id=poi_id, name=f"POI_{poi_id}", - lat=lat, lng=lng, - open_start="09:00", open_end="18:00", + poi_id=poi_id, + name=f"POI_{poi_id}", + lat=lat, + lng=lng, + open_start="09:00", + open_end="18:00", duration_min=duration_min, category=category, ) @@ -81,6 +92,7 @@ def sample_plan(sample_pois: list[POI]) -> ItineraryPlan: # _to_vrptw_day helper # --------------------------------------------------------------------------- + class TestToVrptwDay: def test_converts_poi_fields(self): pois = [make_poi("1", 37.5, 127.0)] @@ -101,6 +113,7 @@ def test_is_depot_false(self): # ValidatorPipeline.run() — basic contract # --------------------------------------------------------------------------- + class TestPipelineBasic: def test_returns_validation_result(self, pipeline, sample_pois, sample_plan): result = pipeline.run( @@ -153,15 +166,20 @@ def test_base_score_populated(self, pipeline, sample_pois, sample_plan): # ValidatorPipeline.run() — hard_fail cap # --------------------------------------------------------------------------- + class TestPipelineHardFail: def test_open_hours_conflict_caps_score(self, pipeline): # POI with impossible time window — close < open pois = [ POI( - poi_id="X", name="NightOnly", - lat=37.5, lng=127.0, - open_start="22:00", open_end="23:00", - duration_min=60, category="14", + poi_id="X", + name="NightOnly", + lat=37.5, + lng=127.0, + open_start="22:00", + open_end="23:00", + duration_min=60, + category="14", ), make_poi("2", 37.51, 127.01), ] @@ -182,10 +200,14 @@ def test_hard_fail_day_index_matches_offending_day(self, pipeline): # Day 0 정상, Day 1에 시간대 충돌 POI 배치 day0 = [make_poi("1", 37.50, 127.00)] night_only = POI( - poi_id="X", name="NightOnly", - lat=37.5, lng=127.0, - open_start="22:00", open_end="23:00", - duration_min=60, category="14", + poi_id="X", + name="NightOnly", + lat=37.5, + lng=127.0, + open_start="22:00", + open_end="23:00", + duration_min=60, + category="14", ) day1 = [night_only] plan = make_multi_day_plan([[p.name for p in day0], [night_only.name]]) @@ -197,14 +219,22 @@ def test_alternatives_populated_from_explain_engine(self): mock_explain = MagicMock() mock_explain.generate.return_value = [] mock_explain.build_alternatives.return_value = { - "NightOnly": [AlternativePOI(name="Alt", distance_km=0.3, category="14", lat=37.5, lng=127.0)] + "NightOnly": [ + AlternativePOI(name="Alt", distance_km=0.3, category="14", lat=37.5, lng=127.0) + ] } pipeline = ValidatorPipeline( bonus_engine=make_empty_bonus_engine(), explain_engine=mock_explain ) night_only = POI( - poi_id="X", name="NightOnly", lat=37.5, lng=127.0, - open_start="22:00", open_end="23:00", duration_min=60, category="14", + poi_id="X", + name="NightOnly", + lat=37.5, + lng=127.0, + open_start="22:00", + open_end="23:00", + duration_min=60, + category="14", ) plan = make_plan([night_only.name]) result = pipeline.run(plan=plan, per_day_pois=[[night_only]], matrix={}) @@ -222,6 +252,7 @@ def test_alternatives_not_computed_without_hard_fails(self, pipeline, sample_poi # ValidatorPipeline.run() — penalty/bonus breakdown # --------------------------------------------------------------------------- + class TestPipelineBreakdown: def test_breakdown_fields_are_dicts(self, pipeline, sample_pois, sample_plan): result = pipeline.run( @@ -257,9 +288,7 @@ def test_accessibility_bonus_for_accessible_party(self): def test_pet_friendly_bonus_when_enabled(self, pipeline): poi = make_poi("1", 37.5, 127.0).model_copy(update={"pet_friendly": True}) plan = make_plan([poi.name]) - result = pipeline.run( - plan=plan, per_day_pois=[[poi]], matrix={}, pet_friendly_enabled=True - ) + result = pipeline.run(plan=plan, per_day_pois=[[poi]], matrix={}, pet_friendly_enabled=True) assert "pet_friendly" in result.bonus_breakdown assert result.bonus_breakdown["pet_friendly"] > 0 @@ -286,14 +315,17 @@ def test_wellness_matched_exposed_on_result(self): # ValidatorPipeline.run() — multi-day # --------------------------------------------------------------------------- + class TestPipelineMultiDay: def test_multi_day_runs_without_error(self, pipeline): day1 = [make_poi("1", 37.50, 127.00), make_poi("2", 37.51, 127.01)] day2 = [make_poi("3", 37.52, 127.02), make_poi("4", 37.53, 127.03)] - plan = make_multi_day_plan([ - [p.name for p in day1], - [p.name for p in day2], - ]) + plan = make_multi_day_plan( + [ + [p.name for p in day1], + [p.name for p in day2], + ] + ) result = pipeline.run(plan=plan, per_day_pois=[day1, day2], matrix={}) assert isinstance(result, ValidationResult) assert 0 <= result.final_score <= 100 @@ -315,6 +347,7 @@ def test_sigungu_codes_accepted(self, pipeline): # ValidatorPipeline.run() — VRPTW 통합 # --------------------------------------------------------------------------- + class TestPipelineVRPTW: def test_vrptw_fields_present(self, pipeline, sample_pois, sample_plan): result = pipeline.run( @@ -346,10 +379,12 @@ def test_vrptw_efficiency_gap_non_negative(self, pipeline, sample_pois, sample_p def test_vrptw_optimal_route_per_day_count(self, pipeline): day1 = [make_poi("1", 37.50, 127.00), make_poi("2", 37.52, 127.02)] day2 = [make_poi("3", 37.51, 127.01), make_poi("4", 37.53, 127.03)] - plan = make_multi_day_plan([ - [p.name for p in day1], - [p.name for p in day2], - ]) + plan = make_multi_day_plan( + [ + [p.name for p in day1], + [p.name for p in day2], + ] + ) result = pipeline.run(plan=plan, per_day_pois=[day1, day2], matrix={}) if result.vrptw_optimal_route is not None: assert len(result.vrptw_optimal_route) == 2 @@ -382,14 +417,21 @@ def test_vrptw_penalty_does_not_double_count_with_single_poi(self, pipeline): # ValidatorPipeline.run() — Repair 제안 예상 점수 변화 (지도 UX 개선) # --------------------------------------------------------------------------- + class TestPipelineRepairGainEstimation: def test_deletion_suggestion_carries_gain_and_resolves_flag(self, pipeline): """지리적 이상치이자 Hard Fail 유발 POI를 삭제하면 점수가 오르고 문제가 해소돼야 한다.""" a = make_poi("A", 37.50, 127.00) b = make_poi("B", 37.51, 127.01) night_only = POI( - poi_id="X", name="NightOnly", lat=38.50, lng=127.00, - open_start="22:00", open_end="23:00", duration_min=60, category="14", + poi_id="X", + name="NightOnly", + lat=38.50, + lng=127.00, + open_start="22:00", + open_end="23:00", + duration_min=60, + category="14", ) pois = [a, b, night_only] plan = make_plan([p.name for p in pois]) diff --git a/tests/test_plan_extractor.py b/tests/test_plan_extractor.py index 9f19cd1..4283fc8 100644 --- a/tests/test_plan_extractor.py +++ b/tests/test_plan_extractor.py @@ -1,4 +1,5 @@ """PlanExtractor 테스트 (실제 Claude API 호출 X — 모두 mock).""" + from __future__ import annotations from unittest.mock import MagicMock @@ -47,10 +48,14 @@ def test_extract_from_text_empty_raises() -> None: def test_extract_from_text_without_client_falls_back_to_heuristic() -> None: extractor = PlanExtractor(client=None, api_key="") - resp = extractor.extract_from_text("Day 1\n1 다려도 여행지\n2 바람벽에흰당나귀 카페\n\nDay 2\n월정리해변") + resp = extractor.extract_from_text( + "Day 1\n1 다려도 여행지\n2 바람벽에흰당나귀 카페\n\nDay 2\n월정리해변" + ) assert [p.name for d in resp.days for p in d.places] == [ - "다려도", "바람벽에흰당나귀", "월정리해변", + "다려도", + "바람벽에흰당나귀", + "월정리해변", ] assert len(resp.days) == 2 @@ -101,3 +106,14 @@ def test_api_call_failure_raises_extraction_error() -> None: with pytest.raises(PlanExtractionError): extractor.extract_from_text("아무 텍스트") + + +def test_system_prompt_uses_prompt_caching() -> None: + """system 프롬프트는 매 호출 동일하므로 ephemeral 캐싱 대상이어야 함(지연/토큰 절감).""" + client = _client_returning('{"days":[]}') + extractor = PlanExtractor(client=client) + + extractor.extract_from_text("아무 텍스트") + + system = client.messages.create.call_args.kwargs["system"] + assert system[0]["cache_control"] == {"type": "ephemeral"} diff --git a/tests/test_region_config.py b/tests/test_region_config.py index a999c32..39be36b 100644 --- a/tests/test_region_config.py +++ b/tests/test_region_config.py @@ -1,4 +1,5 @@ """RegionThresholds 유닛 테스트.""" + from __future__ import annotations from src.data.region_config import ( diff --git a/tests/test_repair.py b/tests/test_repair.py index ef2b0d0..cff2ef3 100644 --- a/tests/test_repair.py +++ b/tests/test_repair.py @@ -1,8 +1,10 @@ """RepairEngine 유닛 테스트.""" + from __future__ import annotations from src.data.models import POI, DayPlan, HardFail, ItineraryPlan, PlaceInput from src.data.restaurant_catalog import RestaurantCatalog +from src.explain.repair import DeletionSuggestion, RepairResult from src.explain.repair import RepairEngine as _RepairEngineClass @@ -21,9 +23,14 @@ def _poi( open_end: str = "18:00", ) -> POI: return POI( - poi_id=name, name=name, lat=lat, lng=lng, - open_start=open_start, open_end=open_end, - duration_min=duration, category=category, + poi_id=name, + name=name, + lat=lat, + lng=lng, + open_start=open_start, + open_end=open_end, + duration_min=duration, + category=category, ) @@ -41,7 +48,9 @@ def _plan(names: list[str], party_type: str = "친구") -> ItineraryPlan: def _fail() -> HardFail: return HardFail( fail_type="SCHEDULE_INFEASIBLE", - message="test", evidence="test", confidence="High", + message="test", + evidence="test", + confidence="High", ) @@ -49,6 +58,7 @@ def _fail() -> HardFail: # 기본 동작 # --------------------------------------------------------------------------- + class TestRepairEngineNoop: def test_empty_when_no_hard_fails(self): engine = RepairEngine() @@ -70,6 +80,7 @@ def test_empty_when_pois_list_is_empty(self): # → deletion 단계 검증 가능 # --------------------------------------------------------------------------- + def _outlier_pois() -> list[POI]: """8개 POI — D(lat=38.5)가 A-C, E-H(lat=37.5) 사이의 지리적 이상치.""" return [ @@ -136,6 +147,7 @@ def test_deletion_explains_when_no_restaurant_nearby(self): # Stay-time Tuning # --------------------------------------------------------------------------- + class TestTimeTuneSuggestion: def test_no_tune_when_within_limit(self): """친구(720min) 기준, 총 120min → 조정 불필요.""" @@ -169,6 +181,7 @@ def test_adjusted_durations_above_minimum(self): # to_dict / is_empty # --------------------------------------------------------------------------- + class TestResultModel: def test_to_dict_is_serializable(self): engine = RepairEngine() @@ -189,3 +202,69 @@ def test_is_empty_false_when_has_deletion(self): plan = _plan(["A", "B", "C", "D", "E", "F", "G", "H"]) result = engine.repair(plan, [_outlier_pois()], {}, hard_fails=[_fail()]) assert not result.is_empty + + +# --------------------------------------------------------------------------- +# total_estimated_gain — 서로 다른 날짜의 제안은 합산, 같은 날짜의 대안은 최댓값만 +# --------------------------------------------------------------------------- + + +class TestTotalEstimatedGain: + def test_sums_across_different_days(self): + result = RepairResult( + deletions=[ + DeletionSuggestion( + day_index=0, + candidate_name="A", + travel_saved_km=1.0, + reason="", + estimated_score_gain=10, + ), + DeletionSuggestion( + day_index=1, + candidate_name="B", + travel_saved_km=1.0, + reason="", + estimated_score_gain=5, + ), + ] + ) + assert result.total_estimated_gain == 15 + + def test_takes_max_of_alternatives_on_same_day(self): + result = RepairResult( + deletions=[ + DeletionSuggestion( + day_index=0, + candidate_name="A", + travel_saved_km=1.0, + reason="", + estimated_score_gain=10, + ), + DeletionSuggestion( + day_index=0, + candidate_name="B", + travel_saved_km=1.0, + reason="", + estimated_score_gain=15, + ), + ] + ) + assert result.total_estimated_gain == 15 + + def test_zero_when_empty(self): + assert RepairResult().total_estimated_gain == 0 + + def test_included_in_to_dict(self): + result = RepairResult( + deletions=[ + DeletionSuggestion( + day_index=0, + candidate_name="A", + travel_saved_km=1.0, + reason="", + estimated_score_gain=10, + ), + ] + ) + assert result.to_dict()["total_estimated_gain"] == 10 diff --git a/tests/test_resolve_poi.py b/tests/test_resolve_poi.py index 321b003..b48265f 100644 --- a/tests/test_resolve_poi.py +++ b/tests/test_resolve_poi.py @@ -1,4 +1,5 @@ """_resolve_poi() 좌표 해석 폴백 순서 테스트 (카탈로그 → csv → kakao 키워드 → 지오코딩 → 서울 폴백).""" + from __future__ import annotations from unittest.mock import patch @@ -11,8 +12,16 @@ from src.api.main import app _XLSX_HEADER = [ - "상호명", "도로명주소", "위도", "경도", "대분류코드", "대분류명", "영업시간", - "TourAPI_contentid", "TourAPI_영업시간", "반려동물동반", + "상호명", + "도로명주소", + "위도", + "경도", + "대분류코드", + "대분류명", + "영업시간", + "TourAPI_contentid", + "TourAPI_영업시간", + "반려동물동반", ] @@ -32,15 +41,28 @@ def jeju_xlsx_index(tmp_path, monkeypatch): tmp_path / "제주특별자치도_통합_TourAPI병합.xlsx", [ { # TourAPI 매칭 성공 — 실측 영업시간·contentid 우선 사용, 반려동물 동반 가능 - "상호명": "제주아트센터", "도로명주소": "제주시 어딘가", "위도": "33.4", "경도": "126.5", - "대분류코드": "VE", "대분류명": "문화관광", - "영업시간": "10:00~19:00", "TourAPI_contentid": 1755806, - "TourAPI_영업시간": "09:30~18:30 (휴게 12:00~13:00)", "반려동물동반": "Y", + "상호명": "제주아트센터", + "도로명주소": "제주시 어딘가", + "위도": "33.4", + "경도": "126.5", + "대분류코드": "VE", + "대분류명": "문화관광", + "영업시간": "10:00~19:00", + "TourAPI_contentid": 1755806, + "TourAPI_영업시간": "09:30~18:30 (휴게 12:00~13:00)", + "반려동물동반": "Y", }, { # TourAPI 미매칭 — 기존 영업시간 원문 텍스트로 폴백, 반려동물 동반 정보 없음 - "상호명": "클리프홀", "도로명주소": "서귀포시 어딘가", "위도": "33.38", "경도": "126.23", - "대분류코드": "VE", "대분류명": "문화관광", - "영업시간": "10:00~24:00", "TourAPI_contentid": "", "TourAPI_영업시간": "", "반려동물동반": "", + "상호명": "클리프홀", + "도로명주소": "서귀포시 어딘가", + "위도": "33.38", + "경도": "126.23", + "대분류코드": "VE", + "대분류명": "문화관광", + "영업시간": "10:00~24:00", + "TourAPI_contentid": "", + "TourAPI_영업시간": "", + "반려동물동반": "", }, ], ) @@ -80,9 +102,15 @@ def test_resolve_poi_propagates_pet_friendly_flag(monkeypatch): router._JEJU_CSV_INDEX, router._normalize("반려동반테스트장소"), { - "name": "반려동반테스트장소", "lat": 33.4, "lng": 126.5, - "region": "제주", "cat": "12", "cat_name": "관광지", - "addr": "", "has_coords": True, "source": "jeju_csv", + "name": "반려동반테스트장소", + "lat": 33.4, + "lng": 126.5, + "region": "제주", + "cat": "12", + "cat_name": "관광지", + "addr": "", + "has_coords": True, + "source": "jeju_csv", "pet_friendly": True, }, ) diff --git a/tests/test_restaurant_catalog.py b/tests/test_restaurant_catalog.py index 9c809d7..42819bd 100644 --- a/tests/test_restaurant_catalog.py +++ b/tests/test_restaurant_catalog.py @@ -1,15 +1,18 @@ """RestaurantCatalog 유닛 테스트 (실제 CSV I/O 없음 — 인메모리 데이터 사용).""" + from __future__ import annotations from src.data.restaurant_catalog import RestaurantCatalog def _catalog() -> RestaurantCatalog: - return RestaurantCatalog([ - {"name": "가까운식당", "lat": 33.500, "lng": 126.500}, # ~0km - {"name": "먼식당", "lat": 33.700, "lng": 126.700}, # 반경 밖 - {"name": "자기자신", "lat": 33.500, "lng": 126.500}, - ]) + return RestaurantCatalog( + [ + {"name": "가까운식당", "lat": 33.500, "lng": 126.500}, # ~0km + {"name": "먼식당", "lat": 33.700, "lng": 126.700}, # 반경 밖 + {"name": "자기자신", "lat": 33.500, "lng": 126.500}, + ] + ) def test_nearby_returns_within_radius_sorted_by_distance(): diff --git a/tests/test_reward_engine.py b/tests/test_reward_engine.py index a1ea679..3bc3c19 100644 --- a/tests/test_reward_engine.py +++ b/tests/test_reward_engine.py @@ -1,7 +1,6 @@ """RewardEngine 유닛 테스트.""" -from __future__ import annotations -import pytest +from __future__ import annotations from src.data.models import Scores from src.scoring.reward_engine import generate_rewards diff --git a/tests/test_route_matrix.py b/tests/test_route_matrix.py new file mode 100644 index 0000000..d89df87 --- /dev/null +++ b/tests/test_route_matrix.py @@ -0,0 +1,54 @@ +"""운영 검증용 indexed route matrix 서비스 테스트.""" + +import asyncio + +from src.data.models import POI +from src.matrix.route_matrix import RouteMatrixService +from src.validation.vrptw_engine import HaversineMatrix + + +def _poi(name: str, lat: float, lng: float) -> POI: + return POI( + poi_id=name, + name=name, + lat=lat, + lng=lng, + open_start="09:00", + open_end="18:00", + duration_min=60, + category="12", + ) + + +class FakeRouteProvider: + def __init__(self): + self.prefetched = False + + async def aprefetch_matrix(self, places): + self.prefetched = True + + def get_travel_time(self, origin, destination): + return 120 if origin.name != destination.name else 0 + + +def test_build_uses_provider_seconds_as_minutes(): + provider = FakeRouteProvider() + service = RouteMatrixService(provider=provider, mode="kakao") + pois = [_poi("A", 37.5, 127.0), _poi("B", 37.51, 127.01)] + + matrix = asyncio.run(service.build(pois)) + + assert provider.prefetched is True + assert matrix[0][1]["travel_min"] == 2 + assert matrix[1][0]["travel_min"] == 2 + assert matrix[0][1]["mode"] == "kakao" + + +def test_haversine_provider_is_used_when_api_key_is_unavailable(): + service = RouteMatrixService(provider=HaversineMatrix()) + pois = [_poi("A", 37.5, 127.0), _poi("B", 37.51, 127.01)] + + matrix = asyncio.run(service.build(pois)) + + assert matrix[0][1]["travel_min"] > 0 + assert matrix[0][1]["mode"] == "haversine_fallback" diff --git a/tests/test_scoring.py b/tests/test_scoring.py index c67c172..96f71ee 100644 --- a/tests/test_scoring.py +++ b/tests/test_scoring.py @@ -1,16 +1,17 @@ """Tests for ScoreCalculator (TDD).""" + from __future__ import annotations import pytest -from src.data.models import DayPlan, HardFail, ItineraryPlan, PlaceInput, POI, Scores +from src.data.models import POI, DayPlan, HardFail, ItineraryPlan, PlaceInput from src.validation.scoring import WEIGHTS, ScoreCalculator - # --------------------------------------------------------------------------- # Helpers # --------------------------------------------------------------------------- + def make_poi( poi_id: str = "1", name: str = "POI", @@ -20,9 +21,14 @@ def make_poi( duration_min: int = 60, ) -> POI: return POI( - poi_id=poi_id, name=name, lat=lat, lng=lng, - open_start="09:00", open_end="18:00", - duration_min=duration_min, category=category, + poi_id=poi_id, + name=name, + lat=lat, + lng=lng, + open_start="09:00", + open_end="18:00", + duration_min=duration_min, + category=category, ) @@ -62,6 +68,7 @@ def make_hard_fail() -> HardFail: # Fixtures # --------------------------------------------------------------------------- + @pytest.fixture def calc() -> ScoreCalculator: return ScoreCalculator() @@ -92,6 +99,7 @@ def sample_plan(sample_pois) -> ItineraryPlan: # WEIGHTS constant # --------------------------------------------------------------------------- + class TestWeights: def test_weights_sum_to_one(self): total = sum(WEIGHTS.values()) @@ -99,7 +107,11 @@ def test_weights_sum_to_one(self): def test_weights_keys(self): assert set(WEIGHTS.keys()) == { - "efficiency", "feasibility", "purpose_fit", "flow", "area_intensity" + "efficiency", + "feasibility", + "purpose_fit", + "flow", + "area_intensity", } @@ -107,15 +119,14 @@ def test_weights_keys(self): # compute() — final_score range # --------------------------------------------------------------------------- + class TestCompute: def test_final_score_in_range(self, calc, sample_pois, sample_matrix, sample_plan): scores, final_score = calc.compute(sample_plan, sample_pois, sample_matrix, []) assert 0 <= final_score <= 100 def test_hard_fail_caps_score_at_59(self, calc, sample_pois, sample_matrix, sample_plan): - _, final_score = calc.compute( - sample_plan, sample_pois, sample_matrix, [make_hard_fail()] - ) + _, final_score = calc.compute(sample_plan, sample_pois, sample_matrix, [make_hard_fail()]) assert final_score <= 59 def test_no_hard_fail_can_exceed_59(self, calc, sample_pois, sample_matrix, sample_plan): @@ -137,12 +148,12 @@ def test_scores_object_fields(self, calc, sample_pois, sample_matrix, sample_pla # _calc_efficiency # --------------------------------------------------------------------------- + class TestEfficiency: def test_optimal_order_is_one(self, calc): # 4 POIs in a straight line — user visits in order → efficiency ≈ 1.0 pois = [ - make_poi(poi_id=str(i), name=f"P{i}", lat=37.5, lng=127.0 + i * 0.01) - for i in range(4) + make_poi(poi_id=str(i), name=f"P{i}", lat=37.5, lng=127.0 + i * 0.01) for i in range(4) ] efficiency = calc._calc_efficiency(pois, {}) assert efficiency == pytest.approx(1.0, abs=0.05) @@ -167,6 +178,7 @@ def test_single_poi_returns_one(self, calc): # _calc_feasibility # --------------------------------------------------------------------------- + class TestFeasibility: def test_no_hard_fails_hard_is_one(self, calc, sample_pois, sample_matrix, sample_plan): feasibility = calc._calc_feasibility(sample_plan, sample_pois, sample_matrix, []) @@ -174,7 +186,9 @@ def test_no_hard_fails_hard_is_one(self, calc, sample_pois, sample_matrix, sampl assert feasibility >= 0.5 def test_hard_fail_reduces_feasibility(self, calc, sample_pois, sample_matrix, sample_plan): - with_fail = calc._calc_feasibility(sample_plan, sample_pois, sample_matrix, [make_hard_fail()]) + with_fail = calc._calc_feasibility( + sample_plan, sample_pois, sample_matrix, [make_hard_fail()] + ) no_fail = calc._calc_feasibility(sample_plan, sample_pois, sample_matrix, []) assert with_fail < no_fail @@ -187,6 +201,7 @@ def test_feasibility_in_range(self, calc, sample_pois, sample_matrix, sample_pla # _calc_purpose_fit # --------------------------------------------------------------------------- + class TestPurposeFit: def test_cultural_all_cultural_high(self, calc): pois = [make_poi(poi_id=str(i), name=f"P{i}", category="14") for i in range(4)] @@ -210,6 +225,7 @@ def test_no_travel_type_returns_half(self, calc): # _cosine_distance # --------------------------------------------------------------------------- + class TestCosineDistance: def test_identical_vectors(self, calc): v = {"a": 0.5, "b": 0.5} diff --git a/tests/test_security.py b/tests/test_security.py new file mode 100644 index 0000000..3a28a59 --- /dev/null +++ b/tests/test_security.py @@ -0,0 +1,19 @@ +"""API 인증·레이트리밋 경계 테스트.""" + +from fastapi.testclient import TestClient + +from src.api.main import app + + +def test_production_requires_bearer_token(monkeypatch): + monkeypatch.setenv("ENVIRONMENT", "production") + monkeypatch.setenv("API_AUTH_TOKEN", "test-secret") + client = TestClient(app) + + assert client.post("/api/validate", json={}).status_code == 401 + assert ( + client.post( + "/api/validate", json={}, headers={"Authorization": "Bearer test-secret"} + ).status_code + == 422 + ) diff --git a/tests/test_settings.py b/tests/test_settings.py new file mode 100644 index 0000000..02a9d64 --- /dev/null +++ b/tests/test_settings.py @@ -0,0 +1,11 @@ +"""설정 파일 경로와 환경변수 경계 테스트.""" + +from pathlib import Path + +from src.data.models import Settings + + +def test_settings_env_file_is_project_absolute_path(): + env_file = Settings.model_config["env_file"] + + assert Path(env_file).is_absolute() diff --git a/tests/test_theme_alignment.py b/tests/test_theme_alignment.py index 6766bf1..9421d4d 100644 --- a/tests/test_theme_alignment.py +++ b/tests/test_theme_alignment.py @@ -1,4 +1,5 @@ """Tests for src/scoring/theme_alignment.py — LLM mocking 필수.""" + from __future__ import annotations from unittest.mock import MagicMock @@ -7,12 +8,10 @@ from src.data.theme_taxonomy import UserPreferences from src.scoring.theme_alignment import ( + _CACHE, PENALTY_CRIT, - PENALTY_RISK, POIWithCategory, ThemeAlignmentJudge, - ThemeJudgment, - _CACHE, _classify_score, _parse_llm_response, ) @@ -74,14 +73,19 @@ def test_high_alignment_no_penalty(self): """LLM이 0.9 응답 → 패널티 0.""" mock_client = MagicMock() mock_msg = MagicMock() - mock_msg.content = [MagicMock(text='{"score": 0.9, "reasoning": "잘 맞음", "mismatched_places": []}')] + mock_msg.content = [ + MagicMock(text='{"score": 0.9, "reasoning": "잘 맞음", "mismatched_places": []}') + ] mock_client.messages.create.return_value = mock_msg judge = ThemeAlignmentJudge(api_key="dummy", client=mock_client) prefs = UserPreferences(place_types=["산"], travel_styles=["자연과 함께"]) - report = judge.evaluate(prefs, [ - POIWithCategory(name="한라산", category_name="자연관광지/산", visit_order=1), - ]) + report = judge.evaluate( + prefs, + [ + POIWithCategory(name="한라산", category_name="자연관광지/산", visit_order=1), + ], + ) assert report.judgment is not None assert report.judgment.score == 0.9 @@ -91,14 +95,19 @@ def test_low_alignment_critical(self): """LLM이 0.3 응답 → CRITICAL 패널티.""" mock_client = MagicMock() mock_msg = MagicMock() - mock_msg.content = [MagicMock(text='{"score": 0.3, "reasoning": "안 맞음", "mismatched_places": ["카페A"]}')] + mock_msg.content = [ + MagicMock(text='{"score": 0.3, "reasoning": "안 맞음", "mismatched_places": ["카페A"]}') + ] mock_client.messages.create.return_value = mock_msg judge = ThemeAlignmentJudge(api_key="dummy", client=mock_client) prefs = UserPreferences(place_types=["액티비티"], travel_styles=[]) - report = judge.evaluate(prefs, [ - POIWithCategory(name="카페A", category_name="음식점/카페", visit_order=1), - ]) + report = judge.evaluate( + prefs, + [ + POIWithCategory(name="카페A", category_name="음식점/카페", visit_order=1), + ], + ) assert report.penalty == PENALTY_CRIT assert any(d.rule == "theme_alignment" for d in report.deep_dive) @@ -107,7 +116,9 @@ def test_cache_hit_skips_second_call(self): """동일 입력으로 두 번 호출 시 LLM은 1회만 호출.""" mock_client = MagicMock() mock_msg = MagicMock() - mock_msg.content = [MagicMock(text='{"score": 0.7, "reasoning": "x", "mismatched_places": []}')] + mock_msg.content = [ + MagicMock(text='{"score": 0.7, "reasoning": "x", "mismatched_places": []}') + ] mock_client.messages.create.return_value = mock_msg judge = ThemeAlignmentJudge(api_key="dummy", client=mock_client) diff --git a/tests/test_theme_taxonomy.py b/tests/test_theme_taxonomy.py index 689fb6c..34dfb91 100644 --- a/tests/test_theme_taxonomy.py +++ b/tests/test_theme_taxonomy.py @@ -1,4 +1,5 @@ """Tests for src/data/theme_taxonomy.py — 2축 테마 + 매핑.""" + from __future__ import annotations import pytest diff --git a/tests/test_travel_ratio.py b/tests/test_travel_ratio.py index abe7e32..60f3813 100644 --- a/tests/test_travel_ratio.py +++ b/tests/test_travel_ratio.py @@ -1,12 +1,9 @@ """Tests for src/scoring/travel_ratio.py.""" -from __future__ import annotations -import pytest +from __future__ import annotations from src.data.models import VRPTWDay, VRPTWPlace from src.scoring.travel_ratio import ( - PENALTY_RISK, - PENALTY_WARN, evaluate_travel_ratio, ) from src.validation.vrptw_engine import HaversineMatrix @@ -14,19 +11,26 @@ def _make_place(name: str, lng: float, lat: float, stay_min: int = 60): return VRPTWPlace( - name=name, lng=lng, lat=lat, - open="09:00", close="22:00", stay_duration=stay_min, is_depot=False, + name=name, + lng=lng, + lat=lat, + open="09:00", + close="22:00", + stay_duration=stay_min, + is_depot=False, ) def test_no_penalty_when_ratio_low(): """4개 장소가 모두 가까이 있으면 travel_ratio가 낮음 → 패널티 0.""" - day = VRPTWDay(places=[ - _make_place("A", 127.0, 37.5), - _make_place("B", 127.001, 37.501), - _make_place("C", 127.002, 37.502), - _make_place("D", 127.003, 37.503), - ]) + day = VRPTWDay( + places=[ + _make_place("A", 127.0, 37.5), + _make_place("B", 127.001, 37.501), + _make_place("C", 127.002, 37.502), + _make_place("D", 127.003, 37.503), + ] + ) report = evaluate_travel_ratio([day], matrix=HaversineMatrix()) assert report.total_penalty == 0 assert report.per_day[0].travel_ratio < 0.20 @@ -34,10 +38,12 @@ def test_no_penalty_when_ratio_low(): def test_penalty_when_ratio_high(): """장소가 멀리 떨어져 이동 시간이 관광 시간을 압도하면 패널티 발생.""" - day = VRPTWDay(places=[ - _make_place("서울", 126.978, 37.566, stay_min=15), - _make_place("부산", 129.075, 35.180, stay_min=15), - ]) + day = VRPTWDay( + places=[ + _make_place("서울", 126.978, 37.566, stay_min=15), + _make_place("부산", 129.075, 35.180, stay_min=15), + ] + ) report = evaluate_travel_ratio([day], matrix=HaversineMatrix()) # 서울→부산 직선거리 약 325km, 30km/h 가정 시 이동 ~10시간 # vs 체류 30분 → ratio ≈ 0.95 → CRITICAL @@ -47,14 +53,18 @@ def test_penalty_when_ratio_high(): def test_overall_ratio_aggregates_across_days(): days = [ - VRPTWDay(places=[ - _make_place("A", 127.0, 37.5, stay_min=60), - _make_place("B", 127.001, 37.501, stay_min=60), - ]), - VRPTWDay(places=[ - _make_place("C", 127.0, 37.5, stay_min=60), - _make_place("D", 127.001, 37.501, stay_min=60), - ]), + VRPTWDay( + places=[ + _make_place("A", 127.0, 37.5, stay_min=60), + _make_place("B", 127.001, 37.501, stay_min=60), + ] + ), + VRPTWDay( + places=[ + _make_place("C", 127.0, 37.5, stay_min=60), + _make_place("D", 127.001, 37.501, stay_min=60), + ] + ), ] report = evaluate_travel_ratio(days, matrix=HaversineMatrix()) assert len(report.per_day) == 2 diff --git a/tests/test_vrptw_engine.py b/tests/test_vrptw_engine.py index 7d11365..8bb3fdb 100644 --- a/tests/test_vrptw_engine.py +++ b/tests/test_vrptw_engine.py @@ -1,11 +1,11 @@ """Tests for VRPTW validation engine (TDD).""" + from __future__ import annotations -import math -from typing import Any from unittest.mock import patch import pytest +from pydantic import ValidationError from src.data.models import VRPTWDay, VRPTWPlace, VRPTWRequest, VRPTWResult from src.validation.vrptw_engine import ( @@ -21,6 +21,7 @@ # Fixtures # --------------------------------------------------------------------------- + def make_place( name: str = "POI", lng: float = 127.0, @@ -51,6 +52,7 @@ def make_place( # HaversineMatrix # --------------------------------------------------------------------------- + class TestHaversineMatrix: def test_same_point_is_zero(self): m = HaversineMatrix() @@ -72,6 +74,7 @@ def test_symmetry(self): # CachedRouteMatrix # --------------------------------------------------------------------------- + class TestCachedRouteMatrix: def test_cache_hit(self): data = {"127.1,37.5|127.2,37.5": 600} @@ -102,6 +105,7 @@ def test_load_from_dict(self): # Depot constraint enforcement # --------------------------------------------------------------------------- + class TestDepotConstraint: def _engine_with_haversine(self) -> VRPTWEngine: return VRPTWEngine(matrix=HaversineMatrix()) @@ -110,7 +114,7 @@ def test_2n3d_day1_must_end_at_depot(self): """2박3일: day1 last place must be depot.""" req = VRPTWRequest( days=[ - VRPTWDay(places=[DEPOT, POI_A, POI_B]), # depot only at start + VRPTWDay(places=[DEPOT, POI_A, POI_B]), # depot only at start VRPTWDay(places=[DEPOT, POI_C, DEPOT]), VRPTWDay(places=[DEPOT, POI_A]), ] @@ -118,8 +122,7 @@ def test_2n3d_day1_must_end_at_depot(self): engine = self._engine_with_haversine() result = engine.validate(req) has_depot_warning = any( - "depot" in d.fact.lower() or "숙소" in d.fact - for d in result.deep_dive + "depot" in d.fact.lower() or "숙소" in d.fact for d in result.deep_dive ) assert has_depot_warning or result.risk_score < 100 @@ -133,7 +136,9 @@ def test_2n3d_middle_day_must_start_and_end_at_depot(self): ) engine = self._engine_with_haversine() result = engine.validate(req) - depot_issues = [d for d in result.deep_dive if "depot" in d.fact.lower() or "숙소" in d.fact] + depot_issues = [ + d for d in result.deep_dive if "depot" in d.fact.lower() or "숙소" in d.fact + ] assert len(depot_issues) >= 1 def test_1n2d_no_depot_constraint_applied(self): @@ -147,9 +152,9 @@ def test_1n2d_no_depot_constraint_applied(self): engine = self._engine_with_haversine() result = engine.validate(req) depot_issues = [ - d for d in result.deep_dive - if ("depot" in d.rule.lower() or "depot" in d.fact.lower()) - and "1박" not in d.fact + d + for d in result.deep_dive + if ("depot" in d.rule.lower() or "depot" in d.fact.lower()) and "1박" not in d.fact ] assert len(depot_issues) == 0 @@ -158,25 +163,24 @@ def test_1n2d_no_depot_constraint_applied(self): # Time window feasibility # --------------------------------------------------------------------------- + class TestTimeWindowFeasibility: def _engine(self) -> VRPTWEngine: return VRPTWEngine(matrix=HaversineMatrix()) def test_feasible_schedule_passes(self): - req = VRPTWRequest( - days=[VRPTWDay(places=[POI_A, POI_B])] - ) + req = VRPTWRequest(days=[VRPTWDay(places=[POI_A, POI_B])]) engine = self._engine() result = engine.validate(req) - hard_fails = [d for d in result.deep_dive if d.risk == "CRITICAL" and "time_window" in d.rule.lower()] + hard_fails = [ + d for d in result.deep_dive if d.risk == "CRITICAL" and "time_window" in d.rule.lower() + ] assert len(hard_fails) == 0 def test_infeasible_close_time_triggers_critical(self): """A place that closes at 09:05 — impossible to visit after travel from A.""" tight = make_place("TightPOI", 127.2, 37.5, "08:00", "09:05", 60) - req = VRPTWRequest( - days=[VRPTWDay(places=[POI_A, tight])] - ) + req = VRPTWRequest(days=[VRPTWDay(places=[POI_A, tight])]) engine = self._engine() result = engine.validate(req) critical = [d for d in result.deep_dive if d.risk == "CRITICAL"] @@ -187,19 +191,29 @@ def test_safety_margin_warning(self): # POI_A at 127.1, stay 60 min → depart 10:00; near_close ~0.1° away → arrive ~10:20 # close = 11:00 → margin = 40 min < 60 min → safety_margin warning near_close = make_place("NearClose", 127.2, 37.5, "08:00", "11:00", 30) - req = VRPTWRequest( - days=[VRPTWDay(places=[POI_A, near_close])] - ) + req = VRPTWRequest(days=[VRPTWDay(places=[POI_A, near_close])]) engine = self._engine() result = engine.validate(req) safety_issues = [d for d in result.deep_dive if "safety_margin" in d.rule.lower()] assert len(safety_issues) >= 1 + def test_request_start_time_is_used(self): + late_poi = make_place("Late", 127.0, 37.5, "09:00", "10:00", 30) + req = VRPTWRequest( + days=[VRPTWDay(places=[late_poi])], + start_time="10:30", + ) + + result = self._engine().validate(req) + + assert any(d.risk == "CRITICAL" for d in result.deep_dive) + # --------------------------------------------------------------------------- # Efficiency gap # --------------------------------------------------------------------------- + class TestEfficiencyGap: def test_optimal_order_same_as_user_gives_zero_gap(self): """With 2 POIs the optimal is always the same, gap should be 0 or minimal.""" @@ -222,6 +236,7 @@ def test_reversed_inefficient_route_shows_gap(self): # Fatigue score # --------------------------------------------------------------------------- + class TestFatigueScore: def test_12h_schedule_no_fatigue_penalty(self): # 09:00 start, 21:00 end = exactly 12h @@ -253,13 +268,20 @@ def test_long_schedule_triggers_fatigue(self): # OR-Tools graceful degradation # --------------------------------------------------------------------------- + class TestORToolsDegradation: def test_missing_ortools_still_returns_result(self): """When ortools is not available, engine still returns a VRPTWResult.""" req = VRPTWRequest(days=[VRPTWDay(places=[POI_A, POI_B])]) - with patch.dict("sys.modules", {"ortools": None, "ortools.constraint_solver": None, - "ortools.constraint_solver.routing_enums_pb2": None, - "ortools.constraint_solver.pywrapcsp": None}): + with patch.dict( + "sys.modules", + { + "ortools": None, + "ortools.constraint_solver": None, + "ortools.constraint_solver.routing_enums_pb2": None, + "ortools.constraint_solver.pywrapcsp": None, + }, + ): # Re-import engine in patched context is complex; instead directly test the # fallback path by calling with ortools_available=False engine = VRPTWEngine(matrix=HaversineMatrix(), ortools_available=False) @@ -274,6 +296,7 @@ def test_missing_ortools_still_returns_result(self): # Risk score bounds # --------------------------------------------------------------------------- + class TestRiskScore: def test_risk_score_in_0_100(self): req = VRPTWRequest(days=[VRPTWDay(places=[POI_A, POI_B])]) @@ -295,6 +318,7 @@ def test_pass_fail_threshold(self): # Constants are tunable # --------------------------------------------------------------------------- + def test_constants_accessible(): assert EFFICIENCY_GAP_THRESHOLD == 0.20 assert FATIGUE_HOURS_LIMIT == 12 @@ -305,38 +329,46 @@ def test_constants_accessible(): # Pydantic model validation # --------------------------------------------------------------------------- + class TestModelValidation: def test_invalid_lat_raises(self): - with pytest.raises(Exception): + with pytest.raises(ValidationError): VRPTWPlace(name="X", lng=127.0, lat=91.0, open="09:00", close="18:00", stay_duration=60) def test_invalid_lng_raises(self): - with pytest.raises(Exception): + with pytest.raises(ValidationError): VRPTWPlace(name="X", lng=181.0, lat=37.0, open="09:00", close="18:00", stay_duration=60) def test_invalid_time_format_raises(self): - with pytest.raises(Exception): + with pytest.raises(ValidationError): VRPTWPlace(name="X", lng=127.0, lat=37.0, open="9:00", close="18:00", stay_duration=60) def test_invalid_time_value_raises(self): - with pytest.raises(Exception): + with pytest.raises(ValidationError): VRPTWPlace(name="X", lng=127.0, lat=37.0, open="25:00", close="18:00", stay_duration=60) def test_negative_stay_raises(self): - with pytest.raises(Exception): + with pytest.raises(ValidationError): VRPTWPlace(name="X", lng=127.0, lat=37.0, open="09:00", close="18:00", stay_duration=-1) def test_zero_stay_allowed_for_depot(self): - p = VRPTWPlace(name="Hotel", lng=127.0, lat=37.0, open="00:00", close="23:59", - stay_duration=0, is_depot=True) + p = VRPTWPlace( + name="Hotel", + lng=127.0, + lat=37.0, + open="00:00", + close="23:59", + stay_duration=0, + is_depot=True, + ) assert p.stay_duration == 0 def test_empty_day_raises(self): - with pytest.raises(Exception): + with pytest.raises(ValidationError): VRPTWDay(places=[]) def test_empty_days_raises(self): - with pytest.raises(Exception): + with pytest.raises(ValidationError): VRPTWRequest(days=[]) def test_open_minutes_property(self): @@ -352,6 +384,7 @@ def test_close_minutes_property(self): # Efficiency gap over threshold triggers deep_dive entry # --------------------------------------------------------------------------- + class TestEfficiencyGapThreshold: def test_gap_over_threshold_adds_warning(self): """If efficiency gap > 20%, a deep_dive WARNING should appear.""" @@ -373,6 +406,7 @@ def test_gap_over_threshold_adds_warning(self): # Multi-day result structure # --------------------------------------------------------------------------- + class TestMultiDayResult: def test_multi_day_returns_per_day_comparison(self): req = VRPTWRequest( @@ -412,18 +446,20 @@ def test_single_place_day_no_travel(self): # Summary string # --------------------------------------------------------------------------- + def test_summary_contains_score(): req = VRPTWRequest(days=[VRPTWDay(places=[POI_A, POI_B])]) engine = VRPTWEngine(matrix=HaversineMatrix()) result = engine.validate(req) assert str(result.risk_score) in result.summary - assert ("PASS" in result.summary or "FAIL" in result.summary) + assert "PASS" in result.summary or "FAIL" in result.summary # --------------------------------------------------------------------------- # DeepDiveItem structure # --------------------------------------------------------------------------- + def test_deep_dive_items_have_all_fields(): """Every DeepDiveItem must have non-empty fact, rule, risk, suggestion.""" tight = make_place("Tight", 127.2, 37.5, "08:00", "09:05", 60) @@ -441,9 +477,11 @@ def test_deep_dive_items_have_all_fields(): # CachedRouteMatrix.from_file (uses actual cache_route.json) # --------------------------------------------------------------------------- + def test_cached_matrix_from_actual_file(): """Smoke test: load real cache_route.json and verify at least one hit.""" import os + cache_path = os.path.join( os.path.dirname(__file__), "..", "phases", "0-setup", "cache_route.json" ) diff --git a/tests/test_warning.py b/tests/test_warning.py index a8a7a4b..6eeb82c 100644 --- a/tests/test_warning.py +++ b/tests/test_warning.py @@ -1,16 +1,17 @@ """Tests for WarningDetector (TDD).""" + from __future__ import annotations import pytest -from src.data.models import DayPlan, ItineraryPlan, PlaceInput, POI +from src.data.models import POI, DayPlan, ItineraryPlan, PlaceInput from src.validation.warning import WarningDetector - # --------------------------------------------------------------------------- # Helpers # --------------------------------------------------------------------------- + def make_poi( poi_id: str = "1", name: str = "POI", @@ -20,9 +21,14 @@ def make_poi( duration_min: int = 60, ) -> POI: return POI( - poi_id=poi_id, name=name, lat=lat, lng=lng, - open_start="09:00", open_end="18:00", - duration_min=duration_min, category=category, + poi_id=poi_id, + name=name, + lat=lat, + lng=lng, + open_start="09:00", + open_end="18:00", + duration_min=duration_min, + category=category, ) @@ -55,6 +61,7 @@ def make_matrix(pairs: dict[tuple[int, int], float]) -> dict: # Fixtures # --------------------------------------------------------------------------- + @pytest.fixture def detector() -> WarningDetector: return WarningDetector() @@ -64,6 +71,7 @@ def detector() -> WarningDetector: # DENSE_SCHEDULE # --------------------------------------------------------------------------- + class TestDenseSchedule: def test_dense_trigger_baby(self, detector): # 아기동반 피로도 한계 8h=480분, 4×60 + 3×100 = 540 > 480 → 발동 @@ -106,6 +114,7 @@ def test_dense_message_includes_party_type(self, detector): # PHYSICAL_STRAIN # --------------------------------------------------------------------------- + class TestPhysicalStrain: def test_strain_trigger(self, detector): # POIs ~13 km apart × 3 legs ≈ 39 km total > 30 km threshold @@ -121,10 +130,7 @@ def test_strain_trigger(self, detector): assert "PHYSICAL_STRAIN" in types def test_no_strain_short_distance(self, detector): - pois = [ - make_poi(poi_id=str(i), name=f"P{i}", lat=37.5, lng=127.0) - for i in range(4) - ] + pois = [make_poi(poi_id=str(i), name=f"P{i}", lat=37.5, lng=127.0) for i in range(4)] plan = make_plan([f"P{i}" for i in range(4)]) warns = detector.detect(plan, pois, {}) types = [w.warning_type for w in warns] @@ -135,13 +141,11 @@ def test_no_strain_short_distance(self, detector): # PURPOSE_MISMATCH # --------------------------------------------------------------------------- + class TestPurposeMismatch: def test_mismatch_cultural_all_sports(self, detector): # travel_type=cultural, all POIs are 레포츠(15) → mismatch - pois = [ - make_poi(poi_id=str(i), name=f"P{i}", category="15") - for i in range(4) - ] + pois = [make_poi(poi_id=str(i), name=f"P{i}", category="15") for i in range(4)] plan = make_plan([f"P{i}" for i in range(4)], travel_type="cultural") warns = detector.detect(plan, pois, {}) types = [w.warning_type for w in warns] @@ -149,10 +153,7 @@ def test_mismatch_cultural_all_sports(self, detector): def test_no_mismatch_cultural_all_cultural(self, detector): # travel_type=cultural, all POIs are 문화시설(14) → no mismatch - pois = [ - make_poi(poi_id=str(i), name=f"P{i}", category="14") - for i in range(4) - ] + pois = [make_poi(poi_id=str(i), name=f"P{i}", category="14") for i in range(4)] plan = make_plan([f"P{i}" for i in range(4)], travel_type="cultural") warns = detector.detect(plan, pois, {}) types = [w.warning_type for w in warns] @@ -170,6 +171,7 @@ def test_no_mismatch_when_no_travel_type(self, detector): # AREA_REVISIT # --------------------------------------------------------------------------- + class TestAreaRevisit: def test_consecutive_same_category_triggers(self, detector): # 3 consecutive "14" → AREA_REVISIT @@ -227,12 +229,10 @@ def test_two_consecutive_no_trigger(self, detector): # Warning model fields # --------------------------------------------------------------------------- + class TestWarningFields: def test_warning_has_confidence_from_types(self, detector): - pois = [ - make_poi(poi_id=str(i), name=f"P{i}", category="15") - for i in range(4) - ] + pois = [make_poi(poi_id=str(i), name=f"P{i}", category="15") for i in range(4)] plan = make_plan([f"P{i}" for i in range(4)], travel_type="cultural") warns = detector.detect(plan, pois, {}) mismatch = next((w for w in warns if w.warning_type == "PURPOSE_MISMATCH"), None) @@ -252,6 +252,7 @@ def test_warning_message_not_empty(self, detector): # day_index / poi_names threading # --------------------------------------------------------------------------- + class TestDayIndex: def test_day_index_defaults_to_none(self, detector): pois = [make_poi(poi_id=str(i), name=f"P{i}", duration_min=60) for i in range(4)]