종합부동산웹앱 AI 분석 워크벤치 원천 식별자 실행 흐름 구현
질의 원문
계속 진행해
수집 경로와 시점
- 수집·구현시점: 2026-08-12 15:03:45 +09:00
- 확인 경로: 로컬 저장소
src/realestate/webapp/analyst.py,src/realestate/webapp/orchestrator.py,src/realestate/webapp/metric_collector.py,src/realestate/webapp/templates/index.html,src/realestate/webapp/static/app.js - 직전 맥락: AI 투자분석 워크벤치가 후보 등록 흐름까지 갖췄으므로, 사용자가 명시한 원천 식별자를 계획과 실행 단계로 넘겨 실제 수집기 연결 지점을 열어야 했다.
데이터 등급
| 항목 | 등급 | 비고 |
|---|---|---|
| 사용자 지시 | 1차 사용자 입력 | 본 대화에서 직접 제공 |
| 구현 코드 | 로컬 코드 원본 | planner source_refs, 기본 executor의 네이버/법원경매 metric collector 연결 |
| 테스트 metric collector | 테스트 대역 | 네트워크 없이 current_price, jeonse_price, metric_sources 계약 검증 |
| 실제 네이버·법원경매 응답 | 미수집 | 이번 검증은 식별자 전달·실행 계약 검증이며 실제 외부 원천 호출은 수행하지 않음 |
구현 내용
build_analysis_plan()이 source_refs를 보존한다. 지원 식별자는 네이버 단지번호·면적 기준, 법원경매 사건번호·법원코드·물건번호, 법정동코드, 정비사업 번호·구역명·원문 URL이다. 알 수 없는 키는 버리고, 정비 원문 URL은 http:// 또는 https://만 허용한다.
홈 화면 AI 투자분석 워크벤치에 원천 식별자 입력 영역을 추가했다. 사용자가 단지번호나 사건번호를 넣으면 프론트엔드가 빈 값을 제거하고 /api/analyst/plan, /api/analyst/run payload의 source_refs로 전달한다.
run_analysis_plan() 기본 executor가 source_refs를 활용한다.
naver_complex:source_refs.naver_complex_no가 있으면WatchlistMetricCollector로 현재가·전세가 지표를 갱신한다.courtauction:court_case_no,court_code,court_goods_no가 모두 있으면 법원경매 최저매각가 지표를 갱신하고 워치리스트 후보 초안을 만든다.- 정비사업 후보는
redev_project_no또는redev_zone_name이 있으면 공식 정비사업 후보풀에서 해당 식별자를 우선 필터링한다.
식별자가 부족하면 자동 추정하지 않고 SourceUnavailable 사유로 남긴다.
가정
- source refs는 “원천을 안전하게 다시 찾기 위한 키”이지, 원본 확인이 끝났다는 뜻이 아니다.
- 네이버 단지 지표는 플랫폼 경유 값이므로 원본 확인 완료값으로 보지 않는다.
- 법원경매 최저매각가는 자동 갱신할 수 있어도 권리관계는 매각물건명세서·현황조사서·등기사항증명서 원문 확인 전까지 미확정이다.
한계·미확인
- 실제 네이버·법원경매 외부 호출은 이번 테스트에서 수행하지 않았다.
- 국토부 실거래와 건축물대장은
data_go_lawd_cd만으로 충분하지 않고 거래월, 주소/대장 식별자 등이 추가로 필요하므로 아직 자동 실행하지 않는다. - 정비사업 식별자 필터는 공식 후보풀 안에서 이름/번호를 좁히는 수준이며, 권리산정일·조합원 지위·확정 분담금은 여전히 원문 확인 과제다.
검증
- RED:
$env:PYTHONPATH='src'; python -m pytest tests/test_webapp_analyst.py::test_build_analysis_plan_preserves_source_refs tests/test_webapp_analyst.py::test_run_analysis_plan_refreshes_naver_metrics_from_source_refs tests/test_webapp_analyst.py::test_run_analysis_plan_refreshes_court_metrics_and_candidate_from_source_refs tests/test_webapp_app.py::test_homepage_accepts_analyst_source_ref_inputs -q-> 4 failed - GREEN:
$env:PYTHONPATH='src'; python -m pytest tests/test_webapp_analyst.py::test_build_analysis_plan_preserves_source_refs tests/test_webapp_analyst.py::test_run_analysis_plan_refreshes_naver_metrics_from_source_refs tests/test_webapp_analyst.py::test_run_analysis_plan_refreshes_court_metrics_and_candidate_from_source_refs tests/test_webapp_app.py::test_homepage_accepts_analyst_source_ref_inputs -q-> 4 passed - Focused:
$env:PYTHONPATH='src'; python -m pytest tests/test_webapp_analyst.py tests/test_webapp_app.py tests/test_webapp_metric_collector.py tests/test_webapp_watchlist.py -q-> 89 passed - JS 문법:
node --check src/realestate/webapp/static/app.js-> 통과
다음 단계
- 분석 결과 저장 후 등록 후보에
source_doc_id를 자동 연결할지 검토한다. - 국토부 실거래·건축물대장 실행에 필요한 추가 식별자 입력 구조를 별도 설계한다.
- 원천 실행 결과를 투자안 카드형 요약으로 재구성해 후보 비교에 바로 쓰게 한다.