49 lines
1.7 KiB
Python
49 lines
1.7 KiB
Python
"""Classify the 9 zillow deals (status='new') manually."""
|
|
from __future__ import annotations
|
|
import io, sys, time
|
|
from pathlib import Path
|
|
|
|
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding="utf-8", errors="replace")
|
|
ROOT = Path(__file__).resolve().parent.parent
|
|
sys.path.insert(0, str(ROOT))
|
|
|
|
import data_fetchers # noqa: F401
|
|
|
|
from deals_db import list_deals, update_classification, init_db
|
|
from deal_classifier import classify_deal
|
|
|
|
init_db()
|
|
|
|
# Get zillow deals with status='new'
|
|
zd = list_deals(source="zillow", status="new", limit=20)
|
|
print(f"Zillow deals with status=new: {len(zd)}")
|
|
|
|
if zd:
|
|
print("Classifying...")
|
|
t0 = time.perf_counter()
|
|
for d in zd:
|
|
result = classify_deal(d)
|
|
update_classification(
|
|
deal_id=d["id"],
|
|
status=result["classification_status"],
|
|
score=result["score"],
|
|
reasons=result["reasons"],
|
|
strategy=result["strategy"],
|
|
)
|
|
addr = (d.get("address") or "?")[:55]
|
|
print(f" ${d.get('listing_price'):>11,.0f} | score={result['score']:>3} {result['classification_status']:<19} {result['strategy']:<14} | {addr}")
|
|
elapsed = time.perf_counter() - t0
|
|
print(f"\nClassified {len(zd)} deals in {elapsed:.1f}s ({elapsed/len(zd):.1f}s/deal avg)")
|
|
|
|
# Show final state
|
|
print()
|
|
print("=== Final Zillow deals state ===")
|
|
zd_all = list_deals(source="zillow", limit=20)
|
|
for d in zd_all:
|
|
addr = (d.get("address") or "?")[:55]
|
|
score = d.get("classification_score")
|
|
cls = d.get("classification_status") or "?"
|
|
strat = d.get("classification_strategy") or "?"
|
|
price = d.get("listing_price") or 0
|
|
print(f" ${price:>11,.0f} | score={score!s:>3} {cls:<19} {strat:<14} | {addr}")
|