종합부동산웹앱 AI 분석 워크벤치 원천 시그널 카드 구현
질의 원문
계속 진행해
수집 경로와 시점
- 수집·구현시점: 2026-08-12 15:25:00 +09:00
- 확인 경로: 로컬 저장소
src/realestate/webapp/orchestrator.py,src/realestate/webapp/templates/index.html,src/realestate/webapp/static/app.js,src/realestate/webapp/static/app.css - 직전 맥락: 원천 실행 결과가 Markdown 본문과 후보 목록으로는 남지만, 사용자가 실행 원천별 신뢰도·시그널·다음 행동을 빠르게 읽기 어려웠다.
데이터 등급
| 항목 | 등급 | 비고 |
|---|---|---|
| 사용자 지시 | 1차 사용자 입력 | 본 대화에서 직접 제공 |
| 원천 실행 상태 | 로컬 실행 결과 | run_analysis_plan()의 source_status, source_results 기반 |
| 투자 시그널 카드 | 파생 요약 | 원천별 summary를 화면용으로 재구성한 값이며 투자 결론 확정값이 아님 |
| 테스트 executor | 테스트 대역 | 실제 외부 원천 호출 없이 카드 계약 검증 |
구현 내용
run_analysis_plan() 결과에 investment_cards를 추가했다. 카드는 모든 계획 원천을 대상으로 만들며, 실행 완료·미확인·보류·실행 전 상태를 구분한다.
각 카드에는 다음 필드를 담는다.
collector,titlestatus,confidencedata_grade,purposesignalsnext_action
실행 완료 원천은 summary를 읽기 쉬운 시그널로 바꾼다. 예를 들어 정비사업 후보 수와 상위 후보, 네이버 현재가·전세가, 국토부 중위 거래금액, 건축물대장 주용도·사용승인연도·용적률·세대수 같은 값이다.
미확인 원천은 실패 사유를 next_action으로 보여준다. 보류 원천은 부분연결·활용신청·파서 고정 필요 상태를 카드에 남긴다.
홈 화면 AI 투자분석 워크벤치에 원천 시그널 패널을 추가했다. 실행 응답의 investment_cards를 카드 그리드로 렌더링해, 사용자가 원천별 상태와 다음 확인 과제를 한눈에 볼 수 있게 했다.
추가로 실행 결과 Markdown 본문에도 ## AI 원천 시그널 표를 남기도록 했다. 따라서 사용자가 분석 실행 결과를 docs/analysis에 저장하면 화면 전용 카드뿐 아니라 저장 문서와 투자 현황판 렌더링 HTML에서도 원천별 상태·신뢰도·시그널·다음 행동을 확인할 수 있다. 원천 실행 전 상태에서도 실행 전 카드가 문서에 남아, 나중에 무엇을 호출해야 하는지 추적 가능하다.
가정
- 카드의
confidence=확인은 “수집기 실행이 성공했다”는 뜻이며, 가격·권리·분담금이 최종 확정됐다는 뜻이 아니다. signals는 summary에서 파생한 UI 표시값이다. 원천별 원문 확인은 분석 문서의 한계와 다음 행동을 따른다.- 미확인 원천도 숨기지 않고 카드에 표시해야 분석 누락을 추적할 수 있다.
한계·미확인
- 이번 카드 구현은 기존 summary 필드를 사람이 읽기 쉬운 형태로 변환하는 수준이다.
- 여러 원천을 가중해 하나의 최종 투자점수로 합성하는 로직은 아직 추가하지 않았다.
- 실제 외부 API 호출 검증은 수행하지 않았으며, 테스트 executor로 상태·표시 계약을 검증했다.
검증
- RED:
$env:PYTHONPATH='src'; python -m pytest tests/test_webapp_analyst.py::test_run_analysis_plan_builds_source_signal_cards tests/test_webapp_app.py::test_homepage_prioritizes_ai_investment_workbench tests/test_webapp_app.py::test_static_js_renders_analyst_source_cards -q-> 3 failed - GREEN:
$env:PYTHONPATH='src'; python -m pytest tests/test_webapp_analyst.py::test_run_analysis_plan_builds_source_signal_cards tests/test_webapp_app.py::test_homepage_prioritizes_ai_investment_workbench tests/test_webapp_app.py::test_static_js_renders_analyst_source_cards -q-> 3 passed - RED:
$env:PYTHONPATH='src'; python -m pytest tests/test_webapp_analyst.py::test_run_analysis_plan_includes_source_signal_section_in_markdown -q-> 1 failed - GREEN:
$env:PYTHONPATH='src'; python -m pytest tests/test_webapp_analyst.py::test_run_analysis_plan_includes_source_signal_section_in_markdown -q-> 1 passed - RED:
$env:PYTHONPATH='src'; python -m pytest tests/test_webapp_analyst.py::test_run_analysis_plan_includes_source_signal_section_before_execution -q-> 1 failed - GREEN:
$env:PYTHONPATH='src'; python -m pytest tests/test_webapp_analyst.py::test_run_analysis_plan_includes_source_signal_section_before_execution -q-> 1 passed
다음 단계
- 카드 시그널을 후보별 투자 점수·가격 앵커·원문 확인 체크리스트와 합성한다.
- 카드 클릭 시 해당 원천의 상세 Markdown 위치로 이동하거나 접기/펼치기 동작을 추가한다.
- 실행 저장 시 카드 요약도 분석 문서 상단에 별도 “AI 원천 시그널” 섹션으로 재구성한다.