(medium) QuartirographyChart.tsx/portfolioMap: portfolio по числу комнат сопоставлен с deals по площади под общими площадными ярлыками #1436

Closed
opened 2026-06-15 05:54:51 +00:00 by bot-backend · 2 comments
Collaborator

Severity: medium · Категория: report · Файл: frontend/src/components/analytics/QuartirographyChart.tsx:26-35

QuartirographyChart.tsx:26-35 (+ analytics_queries.py:61-168). portfolio-серия бакетизирована по комнатности (ONE/TWO/THREE/FOUR → '1-к'..'4+', analytics_queries.py:90-95), deals-серия — по площади на юнит area/deal_count (<30/<45/<60/<80/80+, analytics_queries.py:127-133). Обе рисуются под одними ярлыками buckets (строки 19-25), при этом '4+' комнат подставлено под '80+ м²'. Импакт: в секции «Парадокс портфеля» (page.tsx:101-117) две серии под одной осью читаются как прямое сравнение по метражу, хотя серая серия — про число комнат. Строка «80+ м²: строится X% / покупают Y%» вводит в заблуждение — X% это про 4+комнатные, а не про метраж. Как чинить: бакетизировать обе серии по одному измерению (привести portfolio к площади через avg_area, который уже считается в analytics_queries.py:99, либо deals — к комнатности), или явно подписать оси разными метками и не выдавать за прямое сравнение.

Почему баг: Это сравнение по разным измерениям, выданное за прямое: доля 4-комнатных квартир (которые могут быть 70 м²) показывается на строке «80+ м²» рядом с долей ДДУ-сделок реально 80+ м². Двухкомнатная 62 м² попадёт в deals-бакет «80+? нет, 60-80», а в portfolio — в «TWO»→«45-60», то есть строки осей семантически не совпадают. Клиент читает «80+ м²: строится X% / покупают Y%», тогда как X% — это про 4+ комнаты, а не про метраж.

Как чинить: Привести обе серии к одной оси: либо обе по комнатности, либо обе по площади. Если DomRF даёт только комнатность — подписать ось portfolio по комнатам и не утверждать площадную эквивалентность; не маппить '4+ комнаты' на метку '80+ м²'.


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

**Severity:** medium · **Категория:** report · **Файл:** `frontend/src/components/analytics/QuartirographyChart.tsx:26-35` QuartirographyChart.tsx:26-35 (+ analytics_queries.py:61-168). portfolio-серия бакетизирована по комнатности (ONE/TWO/THREE/FOUR → '1-к'..'4+', analytics_queries.py:90-95), deals-серия — по площади на юнит area/deal_count (<30/<45/<60/<80/80+, analytics_queries.py:127-133). Обе рисуются под одними ярлыками buckets (строки 19-25), при этом '4+' комнат подставлено под '80+ м²'. Импакт: в секции «Парадокс портфеля» (page.tsx:101-117) две серии под одной осью читаются как прямое сравнение по метражу, хотя серая серия — про число комнат. Строка «80+ м²: строится X% / покупают Y%» вводит в заблуждение — X% это про 4+комнатные, а не про метраж. Как чинить: бакетизировать обе серии по одному измерению (привести portfolio к площади через avg_area, который уже считается в analytics_queries.py:99, либо deals — к комнатности), или явно подписать оси разными метками и не выдавать за прямое сравнение. **Почему баг:** Это сравнение по разным измерениям, выданное за прямое: доля 4-комнатных квартир (которые могут быть 70 м²) показывается на строке «80+ м²» рядом с долей ДДУ-сделок реально 80+ м². Двухкомнатная 62 м² попадёт в deals-бакет «80+? нет, 60-80», а в portfolio — в «TWO»→«45-60», то есть строки осей семантически не совпадают. Клиент читает «80+ м²: строится X% / покупают Y%», тогда как X% — это про 4+ комнаты, а не про метраж. **Как чинить:** Привести обе серии к одной оси: либо обе по комнатности, либо обе по площади. Если DomRF даёт только комнатность — подписать ось portfolio по комнатам и не утверждать площадную эквивалентность; не маппить '4+ комнаты' на метку '80+ м²'. --- <sub>deep-audit «армия ботов 2» · verify+harden, confidence 0.83 · unit U87</sub>
bot-backend added the
week ревью 1
label 2026-06-15 05:54:51 +00:00
bot-backend added the
scope/frontend
label 2026-06-15 11:02:04 +00:00
Owner

🔍 week ревью 1 — верификация (ПОДТВЕРЖДЕНО)

Текущее состояние кода: frontend/src/components/analytics/QuartirographyChart.tsx:26-35 (+ backend analytics_queries.py). portfolio-серия бакетизирована по комнатности (r.bucket === "1-к"/"2-к"/"3-к"/"4+", стр.27-30), deals-серия — по площади на юнит (стр.32-34); обе рисуются под одними площадными ярлыками buckets (стр.19-25), при этом "4+" подставлен под "80+ м²".

Корень: дубль/смежный с #1406 (unit U87 vs U72) — сравнение по разным измерениям выдано за прямое: строка «80+ м²: строится X% / покупают Y%» вводит в заблуждение (X% — про 4+ комнаты, не про метраж). Двухкомнатная 62 м² попадёт в deals-бакет «60-80», а в portfolio — в «TWO»→«45-60»; метки осей семантически не совпадают. Секция «Парадокс портфеля» (app/analytics/page.tsx:101-117) читается как прямое сравнение по метражу.

Что править:

  • Привести обе серии к одной оси (обе по площади — предпочтительно через DOM.РФ area-bucket, либо обе по комнатности). Не маппить "4+ комнаты" на метку "80+ м²". Если DOM.РФ даёт только комнатность — подписать ось портфеля по комнатам, без площадной эквивалентности.
  • Рекомендация: вести вместе с #1406 (та же строка кода, та же первопричина); #1405 — частный случай (студийный бакет).

Что посмотреть:

  • Код: QuartirographyChart.tsx:26-35, backend analytics_queries.py (portfolio room_count_type vs deals area_per_unit), app/analytics/page.tsx:101-117.
  • Vault: релевантных заметок не найдено.
**🔍 week ревью 1 — верификация (ПОДТВЕРЖДЕНО)** **Текущее состояние кода:** `frontend/src/components/analytics/QuartirographyChart.tsx:26-35` (+ backend `analytics_queries.py`). portfolio-серия бакетизирована по комнатности (`r.bucket === "1-к"/"2-к"/"3-к"/"4+"`, стр.27-30), deals-серия — по площади на юнит (стр.32-34); обе рисуются под одними площадными ярлыками `buckets` (стр.19-25), при этом `"4+"` подставлен под `"80+ м²"`. **Корень:** дубль/смежный с #1406 (unit U87 vs U72) — сравнение по разным измерениям выдано за прямое: строка «80+ м²: строится X% / покупают Y%» вводит в заблуждение (X% — про 4+ комнаты, не про метраж). Двухкомнатная 62 м² попадёт в deals-бакет «60-80», а в portfolio — в «TWO»→«45-60»; метки осей семантически не совпадают. Секция «Парадокс портфеля» (`app/analytics/page.tsx:101-117`) читается как прямое сравнение по метражу. **Что править:** - Привести обе серии к одной оси (обе по площади — предпочтительно через DOM.РФ area-bucket, либо обе по комнатности). Не маппить `"4+ комнаты"` на метку `"80+ м²"`. Если DOM.РФ даёт только комнатность — подписать ось портфеля по комнатам, без площадной эквивалентности. - Рекомендация: вести вместе с #1406 (та же строка кода, та же первопричина); #1405 — частный случай (студийный бакет). **Что посмотреть:** - Код: `QuartirographyChart.tsx:26-35`, backend `analytics_queries.py` (portfolio room_count_type vs deals area_per_unit), `app/analytics/page.tsx:101-117`. - Vault: релевантных заметок не найдено.
Author
Collaborator

Дубликат #1406 (тот же дефект, подтверждено при верификации week ревью 1). Закрываю как duplicate — работа ведётся в #1406.

Дубликат #1406 (тот же дефект, подтверждено при верификации week ревью 1). Закрываю как duplicate — работа ведётся в #1406.
bot-backend added the
duplicate
label 2026-06-15 11:32:45 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
2 participants
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#1436
No description provided.