(medium) QuartirographyChart.tsx/portfolioMap: бар «строится · Студии» всегда 0% — рассинхрон с подписью «52% портфеля — студии» #1435

Closed
opened 2026-06-15 05:54:50 +00:00 by bot-backend · 1 comment
Collaborator

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

QuartirographyChart.tsx:26-35. buckets[0]='Студии 15-30', но в portfolioMap (строки 26-31) такого ключа нет — есть только '1-к 30-45'/'2-к 45-60'/'3-к 60-80'/'80+ м²'. portfolioPercents = buckets.map(b => portfolioMap[b] ?? 0) (строка 35) → для студий всегда 0%. Корень: портфельный источник domrf_region_aggregates (analytics_queries.py:61-102) не содержит студий (room_count_type только ONE/TWO/THREE/FOUR). Импакт: на /analytics (page.tsx:101-117) серый бар «Что строится» для студий = 0%, тогда как подпись секции прямо пишет «52% портфеля — инвесторские студии и однушки». Финдиректор видит «студий строят 0%», что противоречит собственному выводу-тексту. Как чинить: либо явно подписать сегмент как «нет данных DOM.РФ по студиям» (исключить из серии portfolio / отрисовать как N/A, а не 0), либо смержить студии в '1-к' и убрать отдельный сегмент, либо дотянуть данные. Минимум — не рисовать 0% там, где данных нет.

Почему баг: Источник portfolio — domrf_region_aggregates, где room_count_type ∈ {ONE,TWO,THREE,FOUR} (data/sql/10_schema_domrf.sql:32, и SQL в analytics_queries.py:75-95 не выбирает студии вовсе). То есть студий в портфельных данных физически нет, и map их не маппит — бар студий гарантированно 0. При этом секция на /analytics (analytics/page.tsx:114-116) прямо утверждает: «предложение перекошено в сторону инвесторских студий и однушек (52% портфеля)». График показывает «что строится: студии 0%», что противоречит собственному выводу-тексту в клиентском дашборде. Финдиректор видит «студий строят 0%, покупают 35%» — артефакт отсутствующего ключа/данных, а не реальная картина.

Как чинить: Либо явно пометить, что portfolio по студиям не разбит (DomRF их не выделяет), либо не показывать строку «Студии» для серии portfolio (null вместо 0, чтобы бар не рисовался как «0%»), либо привести подпись секции в соответствие с тем, что реально умеет показать график.


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

**Severity:** medium · **Категория:** report · **Файл:** `frontend/src/components/analytics/QuartirographyChart.tsx:26-35` QuartirographyChart.tsx:26-35. buckets[0]='Студии 15-30', но в portfolioMap (строки 26-31) такого ключа нет — есть только '1-к 30-45'/'2-к 45-60'/'3-к 60-80'/'80+ м²'. portfolioPercents = buckets.map(b => portfolioMap[b] ?? 0) (строка 35) → для студий всегда 0%. Корень: портфельный источник domrf_region_aggregates (analytics_queries.py:61-102) не содержит студий (room_count_type только ONE/TWO/THREE/FOUR). Импакт: на /analytics (page.tsx:101-117) серый бар «Что строится» для студий = 0%, тогда как подпись секции прямо пишет «52% портфеля — инвесторские студии и однушки». Финдиректор видит «студий строят 0%», что противоречит собственному выводу-тексту. Как чинить: либо явно подписать сегмент как «нет данных DOM.РФ по студиям» (исключить из серии portfolio / отрисовать как N/A, а не 0), либо смержить студии в '1-к' и убрать отдельный сегмент, либо дотянуть данные. Минимум — не рисовать 0% там, где данных нет. **Почему баг:** Источник portfolio — domrf_region_aggregates, где room_count_type ∈ {ONE,TWO,THREE,FOUR} (data/sql/10_schema_domrf.sql:32, и SQL в analytics_queries.py:75-95 не выбирает студии вовсе). То есть студий в портфельных данных физически нет, и map их не маппит — бар студий гарантированно 0. При этом секция на /analytics (analytics/page.tsx:114-116) прямо утверждает: «предложение перекошено в сторону инвесторских студий и однушек (52% портфеля)». График показывает «что строится: студии 0%», что противоречит собственному выводу-тексту в клиентском дашборде. Финдиректор видит «студий строят 0%, покупают 35%» — артефакт отсутствующего ключа/данных, а не реальная картина. **Как чинить:** Либо явно пометить, что portfolio по студиям не разбит (DomRF их не выделяет), либо не показывать строку «Студии» для серии portfolio (null вместо 0, чтобы бар не рисовался как «0%»), либо привести подпись секции в соответствие с тем, что реально умеет показать график. --- <sub>deep-audit «армия ботов 2» · verify+harden, confidence 0.92 · unit U87</sub>
bot-backend added the
week ревью 1
label 2026-06-15 05:54:50 +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:19-35. buckets[0]="Студии 15-30" (стр. 20), но portfolioMap (стр. 26-31) содержит только ключи "1-к 30-45"/"2-к 45-60"/"3-к 60-80"/"80+ м²" — ключа "Студии 15-30" нет. portfolioPercents = buckets.map((b) => portfolioMap[b] ?? 0) (стр. 35) → для студий всегда 0. Серия «Что строится (портфель)» рисует студии как 0% (стр. 49-53).

Корень: Источник портфеля useQuartirographyPortfolio() (DOM.РФ domrf_region_aggregates, room_count_type ∈ {ONE,TWO,THREE,FOUR}) физически не содержит студий, поэтому portfolioMap их не маппит. Серый бар студий гарантированно 0%, что противоречит тексту секции на /analytics про «52% портфеля — студии».

Что править (выбрать одно):

  • В portfolioPercents для бакета без ключа в portfolioMap отдавать null вместо 0, чтобы ECharts не рисовал «0%»-бар (echarts пропускает null-точки в bar-серии). Сейчас оба варианта схлопываются в ?? 0.
  • Либо смержить студии в «1-к» бакет (убрать отдельный сегмент студий из серии portfolio).
  • Либо привести подпись секции /analytics в соответствие (не утверждать «52% портфеля — студии», если график этого показать не может).

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

  • Код: QuartirographyChart.tsx:19-35 (buckets/portfolioMap/portfolioPercents); хук useQuartirographyPortfolio в frontend/src/lib/analytics-api.ts; backend analytics_queries.py (SQL по domrf_region_aggregates); текст-вывод на frontend/src/app/analytics/page.tsx. Номера строк в теле (page.tsx:101-117) проверить на актуальной версии страницы.
  • Vault: релевантных заметок не найдено.
**🔍 week ревью 1 — верификация (ПОДТВЕРЖДЕНО)** **Текущее состояние кода:** `frontend/src/components/analytics/QuartirographyChart.tsx:19-35`. `buckets[0]="Студии 15-30"` (стр. 20), но `portfolioMap` (стр. 26-31) содержит только ключи `"1-к 30-45"`/`"2-к 45-60"`/`"3-к 60-80"`/`"80+ м²"` — ключа `"Студии 15-30"` нет. `portfolioPercents = buckets.map((b) => portfolioMap[b] ?? 0)` (стр. 35) → для студий всегда `0`. Серия «Что строится (портфель)» рисует студии как 0% (стр. 49-53). **Корень:** Источник портфеля `useQuartirographyPortfolio()` (DOM.РФ `domrf_region_aggregates`, `room_count_type ∈ {ONE,TWO,THREE,FOUR}`) физически не содержит студий, поэтому `portfolioMap` их не маппит. Серый бар студий гарантированно 0%, что противоречит тексту секции на `/analytics` про «52% портфеля — студии». **Что править (выбрать одно):** - В `portfolioPercents` для бакета без ключа в `portfolioMap` отдавать `null` вместо `0`, чтобы ECharts не рисовал «0%»-бар (echarts пропускает null-точки в bar-серии). Сейчас оба варианта схлопываются в `?? 0`. - Либо смержить студии в «1-к» бакет (убрать отдельный сегмент студий из серии portfolio). - Либо привести подпись секции `/analytics` в соответствие (не утверждать «52% портфеля — студии», если график этого показать не может). **Что посмотреть:** - Код: `QuartirographyChart.tsx:19-35` (buckets/portfolioMap/portfolioPercents); хук `useQuartirographyPortfolio` в `frontend/src/lib/analytics-api.ts`; backend `analytics_queries.py` (SQL по `domrf_region_aggregates`); текст-вывод на `frontend/src/app/analytics/page.tsx`. Номера строк в теле (page.tsx:101-117) проверить на актуальной версии страницы. - Vault: релевантных заметок не найдено.
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#1435
No description provided.