tradein/yandex: сдвиг разряда (×10) в истории цен Яндекса структурно не ловится на записи — нужен отлов «на следующем наблюдении» #3385

Open
opened 2026-09-05 22:02:25 +00:00 by bot-backend · 0 comments
Collaborator

Находка deep-ревью PR #3383 (#3376). app/services/yandex_price_history.py строит максимум 2 точки (price.previous + текущая цена лота) и свидетелем последней передаёт lot.price_rub — то есть саму проверяемую точку. Чтобы гейт drop_decimal_slips сработал, нужно одновременно cur/prev ∈ [9.5,10.5] и cur/prev ∈ [0.9,1.1] — перебор всех 2-точечных форм даёт 0 выбросов. Проводка гейта в yandex-писатель снята как мёртвая (PR #3383).

Миграция 286 yandex-строки тоже не тронет: в прод-замере 06.09 у yandex 6 точек «вверх» и 0 «вниз», второй свидетель (listings.price_rub) равен последней точке истории (обе пишутся из lot.price_rub одним батчем) → отношение 10, не 0.9–1.1. Итого 6 yandex-строк ×10 остаются в базе честно, потому что второго свидетеля нет.

Что сделать: отлов на следующем наблюдении — когда приходит новая точка, которая возвращается к базе (new/prev_prev ∈ [0.9,1.1] при prev/prev_prev ≈ 10), предыдущая точка признаётся сдвигом: DELETE (или пометка) прежней строки + пересчёт diff_percent. Это единственный писатель, где нужен DELETE, поэтому отдельно от #3376.

Приёмка: тест по значению на серию из трёх наблюдений 1M → 10M → 1M через настоящий record_yandex_price_history (три вызова) — в БД остаются две точки 1M, 1M; на проде 6 строк из замера уходят после следующего наблюдения тех же лотов (или остаются, если лот больше не встречается — записать честно).

Refs #3376, PR #3383.

Находка deep-ревью PR #3383 (#3376). `app/services/yandex_price_history.py` строит максимум 2 точки (`price.previous` + текущая цена лота) и свидетелем последней передаёт `lot.price_rub` — то есть саму проверяемую точку. Чтобы гейт `drop_decimal_slips` сработал, нужно одновременно `cur/prev ∈ [9.5,10.5]` и `cur/prev ∈ [0.9,1.1]` — перебор всех 2-точечных форм даёт 0 выбросов. Проводка гейта в yandex-писатель снята как мёртвая (PR #3383). Миграция 286 yandex-строки тоже не тронет: в прод-замере 06.09 у yandex 6 точек «вверх» и 0 «вниз», второй свидетель (`listings.price_rub`) равен последней точке истории (обе пишутся из `lot.price_rub` одним батчем) → отношение 10, не 0.9–1.1. Итого 6 yandex-строк ×10 остаются в базе честно, потому что второго свидетеля нет. **Что сделать:** отлов на следующем наблюдении — когда приходит новая точка, которая возвращается к базе (`new/prev_prev ∈ [0.9,1.1]` при `prev/prev_prev ≈ 10`), предыдущая точка признаётся сдвигом: DELETE (или пометка) прежней строки + пересчёт `diff_percent`. Это единственный писатель, где нужен DELETE, поэтому отдельно от #3376. **Приёмка:** тест по значению на серию из трёх наблюдений `1M → 10M → 1M` через настоящий `record_yandex_price_history` (три вызова) — в БД остаются две точки `1M, 1M`; на проде 6 строк из замера уходят после следующего наблюдения тех же лотов (или остаются, если лот больше не встречается — записать честно). Refs #3376, PR #3383.
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#3385
No description provided.