(low) server.py/district_time_machine: AVG(price) выдаётся под ключом median_price_kr #1501

Closed
opened 2026-06-15 05:58:49 +00:00 by bot-backend · 0 comments
Collaborator

Severity: low · Категория: report · Файл: site-finder/server.py:1005, 1020, 1029

server.py:1005/1020/1029 (district_time_machine). Докстринг (стр.1005) обещает 'median_price', SQL (стр.1020) считает AVG(price_per_m2/1000.0), а в ответ значение кладётся как 'median_price_kr' (стр.1029). Импакт: клиентский 12-месячный ряд цен по району подписан как медиана, но фактически среднее — чувствительно к выбросам (дорогие лоты завышают значение), подпись вводит в заблуждение. Чинить: либо переименовать ключ/докстринг в avg_price_kr, либо считать настоящую медиану (в SQLite — через оконные функции/percentile-эмуляцию или сортировку с выбором среднего элемента в Python).

Почему баг: Стр.1020 — агрегат AVG, не median; стр.1029 — ключ median_price_kr; докстринг стр.1005 — 'median_price'. SQLite не имеет встроенной median, поэтому стоит AVG, но выдаётся под видом медианы.

Как чинить: Либо переименовать поле в avg_price_kr (и докстринг), либо считать настоящую медиану (например, через подзапрос с оконными функциями/перцентилем).


deep-audit «армия ботов 2» · verify+harden, confidence 0.92 · unit U113

**Severity:** low · **Категория:** report · **Файл:** `site-finder/server.py:1005, 1020, 1029` server.py:1005/1020/1029 (district_time_machine). Докстринг (стр.1005) обещает 'median_price', SQL (стр.1020) считает AVG(price_per_m2/1000.0), а в ответ значение кладётся как 'median_price_kr' (стр.1029). Импакт: клиентский 12-месячный ряд цен по району подписан как медиана, но фактически среднее — чувствительно к выбросам (дорогие лоты завышают значение), подпись вводит в заблуждение. Чинить: либо переименовать ключ/докстринг в avg_price_kr, либо считать настоящую медиану (в SQLite — через оконные функции/percentile-эмуляцию или сортировку с выбором среднего элемента в Python). **Почему баг:** Стр.1020 — агрегат AVG, не median; стр.1029 — ключ median_price_kr; докстринг стр.1005 — 'median_price'. SQLite не имеет встроенной median, поэтому стоит AVG, но выдаётся под видом медианы. **Как чинить:** Либо переименовать поле в avg_price_kr (и докстринг), либо считать настоящую медиану (например, через подзапрос с оконными функциями/перцентилем). --- <sub>deep-audit «армия ботов 2» · verify+harden, confidence 0.92 · unit U113</sub>
bot-backend added the
week ревью 1
label 2026-06-15 05:58:49 +00:00
bot-backend added the
scope/backend
label 2026-06-15 11:02:14 +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#1501
No description provided.