[tradein][analytics] Per-source listing history — Phase 0 audit + DDL + writers #570

Closed
opened 2026-05-25 06:02:34 +00:00 by lekss361 · 0 comments
Owner

Контекст

Decision Decision_TradeIn_PerSource_Listing_History (draft / proposed). Schema заготовлена, писатели не реализованы.

Цель: иметь snapshot цены/статуса/площади per (source, ext_id, timestamp) для time-series анализа цены.

Phase 0 — Audit (сделать первым)

grep -rn "INSERT INTO listing_sources\|INSERT INTO listings_snapshots\|INSERT INTO offer_price_history" backend/app/

Выписать в issue comment: какие writers есть, какие отсутствуют.

Phase 1 — DDL

Если таблицы есть но не используются — задокументировать; если нет — создать миграцию.

Phase 2 — Writers

В каждом scraper (avito_detail, cian_detail, yandex_detail) — после успешного parse:

await db.execute(insert(listings_snapshots).values(
    listing_id=listing_id, source=..., price=..., status=..., area=...,
    snapshot_at=now, source_payload=raw_json
))

Phase 3 — Views

v_listing_price_trajectory (per listing с дельтами), v_zhk_median_ask_history (per zhk).

Acceptance

  • 4 источника пишут snapshots при каждом detail fetch.
  • В UI dashboard есть chart "цена ASK по времени" для конкретного listing'а.

Refs

  • decisions/Decision_TradeIn_PerSource_Listing_History
## Контекст Decision `Decision_TradeIn_PerSource_Listing_History` (draft / proposed). Schema заготовлена, писатели **не реализованы**. Цель: иметь snapshot цены/статуса/площади per (source, ext_id, timestamp) для time-series анализа цены. ## Phase 0 — Audit (сделать первым) `grep -rn "INSERT INTO listing_sources\|INSERT INTO listings_snapshots\|INSERT INTO offer_price_history" backend/app/` Выписать в issue comment: какие writers есть, какие отсутствуют. ## Phase 1 — DDL Если таблицы есть но не используются — задокументировать; если нет — создать миграцию. ## Phase 2 — Writers В каждом scraper (avito_detail, cian_detail, yandex_detail) — после успешного parse: ```python await db.execute(insert(listings_snapshots).values( listing_id=listing_id, source=..., price=..., status=..., area=..., snapshot_at=now, source_payload=raw_json )) ``` ## Phase 3 — Views `v_listing_price_trajectory` (per listing с дельтами), `v_zhk_median_ask_history` (per zhk). ## Acceptance - 4 источника пишут snapshots при каждом detail fetch. - В UI dashboard есть chart "цена ASK по времени" для конкретного listing'а. ## Refs - `decisions/Decision_TradeIn_PerSource_Listing_History`
lekss361 added the
analytics
tradein
labels 2026-05-25 06:02:34 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: lekss361/gendesign#570
No description provided.