종합부동산웹앱 워치리스트 UI 로직 검증
질의 원문
다음 작업 계속 진행해
수집 경로와 시점
- 작성 시점: 2026-08-11 11:16 KST
- 작업 위치:
D:\03.Dev\Projects\11.real_assets\.worktrees\real-assets-investment-app - 확인 경로: 로컬 저장소 소스·테스트·최근 인계 문서
- 기준 맥락:
docs/CONTEXT_HANDOFF.md의 다음 추천 작업 중 “브라우저 E2E로 필터·정렬·비교 상호작용 검증”
데이터 등급
- 내부 구현 기록: A — 로컬 소스, 테스트, 커밋 전 diff로 확인
- 검증 결과: A — Node 내장 테스트, pytest, JS 문법 검사 기준
- 외부 부동산 원본 데이터: 사용하지 않음
- 투자 판단·시세·권리관계 데이터: 새로 수집하지 않음
가정
- 다음 작업은 새 투자 판단이 아니라 직전 워치리스트·파이프라인 통합 UI를 더 단단하게 검증하는 단계로 본다.
- 브라우저 E2E는 유용하지만, 현재 저장소에는 별도 JS 테스트 환경이나 package.json이 없다.
- 따라서 무거운 브라우저 테스트를 바로 추가하기보다, 필터·정렬·비교에 쓰이는 순수 로직을 분리해 Node 내장 테스트로 빠르게 검증하는 것이 유지보수에 더 맞다.
구현 결과
src/realestate/webapp/static/watchlist_logic.js를 추가했다.- 워치리스트 검색, 상태/파이프라인 필터, 점수·목표가·최근순·원래순 정렬, 가격 표시 로직을 순수 함수로 분리했다.
src/realestate/webapp/static/app.js가window.WatchlistLogic을 사용하되, 다른 페이지나 로딩 실패 상황에서는 기존 fallback 로직으로 동작하도록 했다.src/realestate/webapp/templates/watchlist.html에서watchlist_logic.js를app.js보다 먼저 로드한다.tests/webapp_watchlist_logic.test.js에 Node 내장 테스트를 추가했다.tests/test_webapp_static_js.py를 추가해 전체 pytest에서 Node 테스트를 함께 실행하되, Node가 없거나 18 미만이면 skip한다.
검증
- RED:
node --test tests/webapp_watchlist_logic.test.js가watchlist_logic.js부재로 실패했다. - GREEN:
node --test tests/webapp_watchlist_logic.test.js→ 3 passedpython -m pytest tests/test_webapp_static_js.py -q→ 1 passedpython -m pytest tests/test_webapp_static_js.py tests/test_webapp_watchlist.py tests/test_webapp_pipeline.py -q→ 49 passedpython -m pytest -q→ 231 passednode --check src/realestate/webapp/static/app.jsnode --check src/realestate/webapp/static/watchlist_logic.jsgit diff --check→ whitespace error 없음
한계
- 실제 브라우저에서 클릭·입력·체크박스 상호작용을 수행하는 E2E 테스트는 아직 아니다.
- DOM 렌더링은 기존 FastAPI/Jinja2 테스트와 JS 문법 검사로 확인했고, 이번 테스트는 순수 로직 중심이다.
- 비교 패널에 현재가, 전세가, 분담금, 총투입금 같은 투자 지표를 붙이는 기능은 별도 설계가 필요하다.
다음 연결 지점
- Playwright 기반 실제 브라우저 E2E 추가
- 비교 패널에 현재가·목표가 괴리·총투입금·전세가율·분담금 지표 추가
- 파이프라인 보드에서 워치리스트 후보가 있는 문서만 필터링
원문 Markdown: docs/analysis/2026-08-11-종합부동산웹앱-워치리스트-ui-로직검증.md