From c362b8592aa8e99a1a994a0f90bc1a076c95ac18 Mon Sep 17 00:00:00 2001 From: bot-backend Date: Mon, 29 Jun 2026 02:03:16 +0300 Subject: [PATCH] =?UTF-8?q?fix(tradein/v2):=20=D0=B8=D1=81=D1=82=D0=BE?= =?UTF-8?q?=D1=87=D0=BD=D0=B8=D0=BA=D0=B8=20N1+Restate=20=D0=B2=D0=BE?= =?UTF-8?q?=D0=BD,=20=D0=94=D0=BE=D0=BC=D0=BA=D0=BB=D0=B8=D0=BA=20=D0=B2?= =?UTF-8?q?=20=D1=82=D0=B5=D0=BA=D1=81=D1=82;=20disabled-=D0=BF=D0=B0?= =?UTF-8?q?=D0=BB=D0=B8=D1=82=D1=80=D0=B0=20=D0=B4=D0=BE=20AA=20(#2081)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - M9 correction: #2086 ошибочно убрал Домклик из «как считаем» (по stale-ссылке на #1968 «drop dead domklik»), но live-проверка под админом показала Домклик живым (реально даёт лоты). Возвращён в текст. N1.RU + RESTATE убраны из SOURCE_SLOTS (мёртвые — всегда «нет данных», не учитываем) → плитки и счётчик «N / 7» → «N / 5». TOTAL_SOURCES = SOURCE_SLOTS.length (единый источник истины: плитки/счётчик/текст не расходятся). Итог: Циан, Я.Недвижимость, Авито, Домклик (+ Росреестр сделки). - C1 residual: disabledValue («—» no-data) #c2cdd9 1.4:1 -> #656b71 4.61:1; disabledLabel («нет данных») #aab7c5 1.7:1 -> #636b73 4.62:1. Аудит #2081 флагал «нет данных», #2086 дотемнил только muted-шкалу — disabled-палитру пропустил. tsc + next build green. Найдено live-проверкой /trade-in/v2 под админом (реальная оценка). --- .../src/components/trade-in/v2/LocationDrawer.tsx | 2 +- .../frontend/src/components/trade-in/v2/mappers.ts | 10 ++++++---- .../frontend/src/components/trade-in/v2/tokens.ts | 4 ++-- 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/tradein-mvp/frontend/src/components/trade-in/v2/LocationDrawer.tsx b/tradein-mvp/frontend/src/components/trade-in/v2/LocationDrawer.tsx index 01c3919c..5478a83b 100644 --- a/tradein-mvp/frontend/src/components/trade-in/v2/LocationDrawer.tsx +++ b/tradein-mvp/frontend/src/components/trade-in/v2/LocationDrawer.tsx @@ -271,7 +271,7 @@ export function LocationDrawer({ open, onClose }: LocationDrawerProps) { color: tokens.body2, }} > - Агрегируем объявления (Циан, Я.Недвижимость, Авито, N1.ru) и сделки + Агрегируем объявления (Циан, Я.Недвижимость, Авито, Домклик) и сделки Росреестра по сопоставимым квартирам. Медиана{" "} ₽/м² → 3 оценки:{" "} diff --git a/tradein-mvp/frontend/src/components/trade-in/v2/mappers.ts b/tradein-mvp/frontend/src/components/trade-in/v2/mappers.ts index 8d251a19..d520ed2b 100644 --- a/tradein-mvp/frontend/src/components/trade-in/v2/mappers.ts +++ b/tradein-mvp/frontend/src/components/trade-in/v2/mappers.ts @@ -68,8 +68,8 @@ import type { } from "./types"; import { tokens } from "./tokens"; -// Total number of source slots in the design (ЦИАН … N1.RU) — meta "N / 7". -const TOTAL_SOURCES = 7; +// Total number of source slots — meta "N / M". Single source of truth is +// SOURCE_SLOTS.length (defined with the array below as TOTAL_SOURCES). // ── Composite presentation shapes consumed by the wired components ────────── // One `data` prop per component; each field keeps its exact ./types shape. @@ -479,9 +479,11 @@ const SOURCE_SLOTS: ReadonlyArray<{ name: string; keys: string[] }> = [ { name: "РОСРЕЕСТР", keys: ["rosreestr"] }, { name: "АВИТО", keys: ["avito", "avito_imv"] }, { name: "ДОМКЛИК", keys: ["domklik", "domclick"] }, - { name: "RESTATE", keys: ["restate"] }, - { name: "N1.RU", keys: ["n1", "n1ru"] }, ]; +// #2081 round2: N1.RU + RESTATE dropped — мёртвые (всегда «нет данных», не +// учитываем); Домклик оставлен (живой источник, реально даёт лоты). TOTAL_SOURCES +// = единый счётчик «N / M», чтобы плитки, счётчик и текст не расходились. +const TOTAL_SOURCES = SOURCE_SLOTS.length; function buildSources(e: AggregatedEstimate): SourceCard[] { const counts = new Map(); diff --git a/tradein-mvp/frontend/src/components/trade-in/v2/tokens.ts b/tradein-mvp/frontend/src/components/trade-in/v2/tokens.ts index f937aee4..ab75bc9b 100644 --- a/tradein-mvp/frontend/src/components/trade-in/v2/tokens.ts +++ b/tradein-mvp/frontend/src/components/trade-in/v2/tokens.ts @@ -78,8 +78,8 @@ export const tokens = { // Disabled / no-data source card (02 RESULT · inactive source tile, design lines 366-384) disabledBorder: "#d8e2ec", // inactive source card edge - disabledValue: "#c2cdd9", // greyed-out "—" count value - disabledLabel: "#aab7c5", // greyed-out "нет данных" caption + disabledValue: "#656b71", // 4.61:1 — "—" no-data value (#2081 C1: was #c2cdd9 1.4:1) + disabledLabel: "#636b73", // 4.62:1 — "нет данных" caption (#2081 C1: was #aab7c5 1.7:1) // Accent glow (range-marker dot halo, design lines 303/341) accentGlow: "rgba(46,139,255,.5)",