Полировка Mera v2 после live-аудита — тот же класс "фейк-данные под видом
реальных", что уже чинили раньше. Честная деградация: убрать фейк / завести
реальные данные / явно разметить, никогда не выдумывать.
1. Реконсиляция счётчика аналогов. Бэкенд (schemas/trade_in.py:163-165,180-181,
estimator.py:3286-3310, #2087 M1) чётко документирует: n_analogs — полный
счёт, использованный в расчёте; analogs/source_counts — персистентный
top-10 сэмпл (намеренно капнутый, чтобы POST/GET не расходились). Это НЕ
"найдено vs использовано", а "полный итог vs капнутая выборка для показа".
02/03/05 уже использовали n_analogs в headline-цифрах — оставлено. Добавлена
дисклозура там, где рядом всплывала капнутая выборка и создавала мнимое
противоречие: 02 (тайлы источников vs "ПОСТРОЕНО ПО N АНАЛОГАМ"), 05 (шапка
карты и подвал таблицы объявлений) — по образцу уже существующего паттерна
"Показано N из M" (deals-таблица).
2. Убран фейковый donut "КАЧЕСТВО ДАННЫХ" (ObjectSummary) — хардкод
strokeDasharray/offset, композитного score нет нигде в мапперах.
3. Убрана фейковая линейка расстояний (HeroBar) — хардкод тиков 0/25/50/75/100м
поверх стокового фото.
4. Скрыты компас и street-view слот (HeroBar) — оба поля всегда "" (TODO BE-3),
по образцу уже используемого в файле паттерна locationCoef "нет данных".
5. mapReport берёт реальный created_at (#2043/BE-1), фоллбек на expires−24h
только для pre-BE-1 записей без created_at.
6. Бейдж "ДАННЫЕ АКТУАЛЬНЫ/ДЕЙСТВИТЕЛЕН 24 Ч" (ParamsPanel) загейчен на
hasEstimate — раньше показывался как свежий ДО первой оценки.
7. Дисклеймер у декоративной SVG-карты (ParamsPanel): "Схематично · не
географическая карта · радиус не в масштабе".
8. Outlier-guard на ₽/м² (mappers.ts guardPriceOutliers, порог 2.5–3× медианы
пула, взята середина — 2.75×): исключение из CV/разброса с дисклозурой
count + бейдж "возможный выброс" на строке в таблице объявлений (05).
9. SourcesMap: попап сделки "(квартал, Росреестр)" → "(месяц, Росреестр)" —
fmtMonthYear реально рендерит месяц.
10. mapCache "ВСЕГО ОЦЕНОК" → саб-лейбл "последние 50" (useEstimateHistory
капает на 50, trade-in-api.ts:247) — было похоже на лайфтайм-тотал.
tsc --noEmit + next lint зелёные; next build (задет shared types.ts) зелёный.