feat(analytics): extend recommend comparables with cad_quarter, lat/lon, buildings_n
This commit is contained in:
parent
b18f44e1ad
commit
2847262953
2 changed files with 25 additions and 1 deletions
|
|
@ -48,6 +48,10 @@ class RecommendComparable(BaseModel):
|
||||||
obj_class: str | None = None
|
obj_class: str | None = None
|
||||||
flat_count: int | None = None
|
flat_count: int | None = None
|
||||||
sold_perc: float | None = None
|
sold_perc: float | None = None
|
||||||
|
cad_quarter: str | None = None
|
||||||
|
lat: float | None = None
|
||||||
|
lon: float | None = None
|
||||||
|
buildings_n: int | None = None
|
||||||
|
|
||||||
|
|
||||||
class RecommendMixOutput(BaseModel):
|
class RecommendMixOutput(BaseModel):
|
||||||
|
|
|
||||||
|
|
@ -2077,15 +2077,31 @@ def recommend_mix(
|
||||||
FROM domrf_kn_sales_agg
|
FROM domrf_kn_sales_agg
|
||||||
WHERE type = 'apartments'
|
WHERE type = 'apartments'
|
||||||
GROUP BY obj_id
|
GROUP BY obj_id
|
||||||
|
),
|
||||||
|
vcf_dedup AS (
|
||||||
|
-- один ряд на canonical_name: берём с наибольшим cad_buildings_n
|
||||||
|
SELECT DISTINCT ON (lower(canonical_name))
|
||||||
|
lower(canonical_name) AS name_key,
|
||||||
|
cad_quarter,
|
||||||
|
latitude,
|
||||||
|
longitude,
|
||||||
|
cad_buildings_n
|
||||||
|
FROM v_complex_full
|
||||||
|
ORDER BY lower(canonical_name), cad_buildings_n DESC NULLS LAST
|
||||||
)
|
)
|
||||||
SELECT o.obj_id, o.comm_name, o.dev_name, o.obj_class, o.flat_count,
|
SELECT o.obj_id, o.comm_name, o.dev_name, o.obj_class, o.flat_count,
|
||||||
a.perc AS sold_perc
|
a.perc AS sold_perc,
|
||||||
|
c.cad_quarter,
|
||||||
|
c.latitude AS lat,
|
||||||
|
c.longitude AS lon,
|
||||||
|
c.cad_buildings_n AS buildings_n
|
||||||
FROM domrf_kn_objects o
|
FROM domrf_kn_objects o
|
||||||
LEFT JOIN latest_agg la ON la.obj_id = o.obj_id
|
LEFT JOIN latest_agg la ON la.obj_id = o.obj_id
|
||||||
LEFT JOIN domrf_kn_sales_agg a
|
LEFT JOIN domrf_kn_sales_agg a
|
||||||
ON a.obj_id = la.obj_id
|
ON a.obj_id = la.obj_id
|
||||||
AND a.snapshot_date = la.snap
|
AND a.snapshot_date = la.snap
|
||||||
AND a.type = 'apartments'
|
AND a.type = 'apartments'
|
||||||
|
LEFT JOIN vcf_dedup c ON c.name_key = lower(o.comm_name)
|
||||||
WHERE o.region_cd = :rc
|
WHERE o.region_cd = :rc
|
||||||
AND o.district_name = :dn
|
AND o.district_name = :dn
|
||||||
AND (CAST(:cls AS TEXT) IS NULL OR o.obj_class = :cls)
|
AND (CAST(:cls AS TEXT) IS NULL OR o.obj_class = :cls)
|
||||||
|
|
@ -2212,6 +2228,10 @@ def recommend_mix(
|
||||||
"obj_class": r["obj_class"],
|
"obj_class": r["obj_class"],
|
||||||
"flat_count": r["flat_count"],
|
"flat_count": r["flat_count"],
|
||||||
"sold_perc": _f(r["sold_perc"]),
|
"sold_perc": _f(r["sold_perc"]),
|
||||||
|
"cad_quarter": r["cad_quarter"],
|
||||||
|
"lat": _f(r["lat"]),
|
||||||
|
"lon": _f(r["lon"]),
|
||||||
|
"buildings_n": r["buildings_n"],
|
||||||
}
|
}
|
||||||
for r in cmp_rows
|
for r in cmp_rows
|
||||||
],
|
],
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue