/**
 * Trade-In estimate fixture — статичные данные «денежного экрана» для
 * mock-render маршрута `/__preview/estimate` (issue #801).
 *
 * Зачем: без бэкенда `/api/v1/me` + `/estimate` отвечают 401/network-fail и
 * `/trade-in` рендерит пустой EmptyState — нечего скормить axe / lighthouse.
 * Этот fixture даёт реалистичный AggregatedEstimate (HeroSummary + две таблицы
 * аналогов/сделок + price-range bar) для прогона a11y + CWV без сети.
 *
 * Контракт строго по `@/types/trade-in` (TS strict, без any). Если backend
 * Pydantic-схема изменится → `npm run codegen` + поправить типы → этот fixture
 * упадёт на type-check, что и нужно (early signal о contract drift).
 *
 * НЕ импортировать в prod-bundle: используется только preview-страницей,
 * которая сама 404'ит вне dev/CI (см. `app/%5F%5Fpreview/estimate/page.tsx`).
 */

import type {
  AggregatedEstimate,
  AnalogLot,
  TradeInEstimateInput,
} from "@/types/trade-in";

/** Параметры оцениваемой квартиры (левая колонка / блок «Параметры объекта»). */
export const MOCK_ESTIMATE_INPUT: TradeInEstimateInput = {
  address: "Екатеринбург, ул. Малышева, 4Б",
  area_m2: 58.4,
  rooms: 2,
  floor: 7,
  total_floors: 16,
  year_built: 2018,
  house_type: "monolith_brick",
  repair_state: "good",
  has_balcony: true,
};

/** Объявления-аналоги (top-аналоги в радиусе/выборке). */
const MOCK_ANALOGS: AnalogLot[] = [
  {
    address: "Екатеринбург, ул. Малышева, 8",
    area_m2: 56.2,
    rooms: 2,
    floor: 9,
    total_floors: 16,
    price_rub: 9_650_000,
    price_per_m2: 171_708,
    listing_date: "2026-05-12",
    days_on_market: 34,
    photo_url: null,
  },
  {
    address: "Екатеринбург, ул. Радищева, 33",
    area_m2: 60.1,
    rooms: 2,
    floor: 5,
    total_floors: 12,
    price_rub: 10_200_000,
    price_per_m2: 169_717,
    listing_date: "2026-04-28",
    days_on_market: 48,
    photo_url: null,
  },
  {
    address: "Екатеринбург, ул. 8 Марта, 21",
    area_m2: 54.8,
    rooms: 2,
    floor: 11,
    total_floors: 18,
    price_rub: 9_280_000,
    price_per_m2: 169_343,
    listing_date: "2026-05-30",
    days_on_market: 16,
    photo_url: null,
  },
  {
    address: "Екатеринбург, ул. Хохрякова, 74",
    area_m2: 61.5,
    rooms: 2,
    floor: 3,
    total_floors: 10,
    price_rub: 10_750_000,
    price_per_m2: 174_797,
    listing_date: "2026-03-19",
    days_on_market: 88,
    photo_url: null,
  },
  {
    address: "Екатеринбург, ул. Шейнкмана, 90",
    area_m2: 57.0,
    rooms: 2,
    floor: 14,
    total_floors: 25,
    price_rub: 9_900_000,
    price_per_m2: 173_684,
    listing_date: "2026-05-02",
    days_on_market: 41,
    photo_url: null,
  },
];

/** Фактические сделки (Росреестр, последние 12 мес). */
const MOCK_DEALS: AnalogLot[] = [
  {
    address: "Екатеринбург, ул. Малышева, 12",
    area_m2: 57.8,
    rooms: 2,
    floor: 8,
    total_floors: 16,
    price_rub: 9_400_000,
    price_per_m2: 162_630,
    listing_date: "2026-02-14",
    days_on_market: null,
    photo_url: null,
  },
  {
    address: "Екатеринбург, ул. Энгельса, 36",
    area_m2: 59.3,
    rooms: 2,
    floor: 6,
    total_floors: 14,
    price_rub: 9_750_000,
    price_per_m2: 164_418,
    listing_date: "2025-12-03",
    days_on_market: null,
    photo_url: null,
  },
  {
    address: "Екатеринбург, ул. Куйбышева, 48",
    area_m2: 55.6,
    rooms: 2,
    floor: 4,
    total_floors: 9,
    price_rub: 8_950_000,
    price_per_m2: 160_971,
    listing_date: "2025-11-21",
    days_on_market: null,
    photo_url: null,
  },
];

/** Готовый AggregatedEstimate — то, что вернул бы POST /estimate. */
export const MOCK_ESTIMATE: AggregatedEstimate = {
  estimate_id: "00000000-0000-4000-8000-000000000801",
  median_price_rub: 9_780_000,
  range_low_rub: 9_120_000,
  range_high_rub: 10_540_000,
  median_price_per_m2: 167_466,
  confidence: "high",
  n_analogs: MOCK_ANALOGS.length,
  period_months: 24,
  analogs: MOCK_ANALOGS,
  actual_deals: MOCK_DEALS,
  expires_at: "2099-12-31T23:59:59Z",
};
