// #801: статичная фикстура результата оценки для preview-маршрута (a11y/lighthouse).
// Полностью оффлайн — никакой сети. Значения правдоподобны (ЕКБ, 2-к вторичка),
// заполнены ВСЕ surface'ы «денежного экрана»: asking + expected-sold + Avito IMV +
// ДКП-коридор + cian valuation + price_trend + аналоги/сделки.
// photo_url=null у всех лотов — намеренно, чтобы не тянуть внешние картинки
// (чистый оффлайн-рендер для lighthouse/axe).

import type {
  AggregatedEstimate,
  AnalogLot,
  HouseAnalyticsResponse,
  HouseInfoForEstimate,
  IMVBenchmarkResponse,
  PlacementHistoryItem,
  SalesVsListingsResponse,
  SellTimeSensitivityResponse,
  TradeInEstimateInput,
} from "@/types/trade-in";

const analogs: AnalogLot[] = [
  {
    address: "ул. Репина, 73",
    area_m2: 54,
    rooms: 2,
    floor: 7,
    total_floors: 16,
    price_rub: 9_700_000,
    price_per_m2: 179_629,
    listing_date: "2026-05-12",
    days_on_market: 18,
    photo_url: null,
    source: "avito",
    source_url: "https://www.avito.ru/ekaterinburg/kvartiry/preview-1",
    distance_m: 120,
    tier: null,
    lat: 56.8401,
    lon: 60.5702,
  },
  {
    address: "ул. Викулова, 33",
    area_m2: 57,
    rooms: 2,
    floor: 4,
    total_floors: 10,
    price_rub: 9_950_000,
    price_per_m2: 174_561,
    listing_date: "2026-05-20",
    days_on_market: 10,
    photo_url: null,
    source: "cian",
    source_url: "https://www.cian.ru/sale/flat/preview-2",
    distance_m: 340,
    tier: null,
    lat: 56.8389,
    lon: 60.5681,
  },
  {
    address: "ул. Кирова, 28",
    area_m2: 53,
    rooms: 2,
    floor: 9,
    total_floors: 12,
    price_rub: 9_400_000,
    price_per_m2: 177_358,
    listing_date: "2026-05-04",
    days_on_market: 31,
    photo_url: null,
    source: "avito",
    source_url: "https://www.avito.ru/ekaterinburg/kvartiry/preview-3",
    distance_m: 510,
    tier: null,
    lat: 56.8372,
    lon: 60.5749,
  },
];

const actualDeals: AnalogLot[] = [
  {
    address: "ул. Репина",
    area_m2: 55,
    rooms: 2,
    floor: null,
    total_floors: null,
    price_rub: 8_800_000,
    price_per_m2: 160_000,
    listing_date: "2026-01-01",
    days_on_market: null,
    photo_url: null,
    source: "rosreestr",
    source_url: null,
    distance_m: null,
    tier: "T1_per_street",
    lat: null,
    lon: null,
  },
  {
    address: "ул. Викулова",
    area_m2: 58,
    rooms: 2,
    floor: null,
    total_floors: null,
    price_rub: 9_280_000,
    price_per_m2: 160_000,
    listing_date: "2025-10-01",
    days_on_market: null,
    photo_url: null,
    source: "rosreestr",
    source_url: null,
    distance_m: null,
    tier: "T1_per_street",
    lat: null,
    lon: null,
  },
];

export const FIXTURE_ESTIMATE: AggregatedEstimate = {
  estimate_id: "preview-0000-0000-0000-000000000000",
  median_price_rub: 9_850_000,
  range_low_rub: 9_100_000,
  range_high_rub: 10_600_000,
  median_price_per_m2: 178_000,
  expected_sold_price_rub: 8_900_000,
  expected_sold_range_low_rub: 8_300_000,
  expected_sold_range_high_rub: 9_500_000,
  expected_sold_per_m2: 160_800,
  asking_to_sold_ratio: 0.9,
  ratio_basis: "per_rooms",
  confidence: "high",
  confidence_explanation: "12 аналогов в радиусе 800 м, разброс цен ±9%.",
  n_analogs: 12,
  insufficient_data: false,
  period_months: 24,
  analogs,
  actual_deals: actualDeals,
  expires_at: "2026-06-30T00:00:00Z",
  target_address: "Екатеринбург, ул. Репина, 75/2",
  target_lat: 56.84,
  target_lon: 60.57,
  sources_used: ["avito", "cian", "rosreestr"],
  data_freshness_minutes: 35,
  last_scraped_at: "2026-05-30T12:00:00Z",
  est_days_on_market: 48,
  address_precision: "house",
  area_m2: 55.3,
  rooms: 2,
  floor: 5,
  total_floors: 11,
  year_built: 2018,
  house_type: "monolith",
  repair_state: "good",
  has_balcony: true,
  cian_valuation: {
    sale_price_rub: 9_700_000,
    rent_price_rub: 42_000,
    chart: [
      { date: "2025-11", price: 9_300_000 },
      { date: "2025-12", price: 9_420_000 },
      { date: "2026-01", price: 9_510_000 },
      { date: "2026-02", price: 9_560_000 },
      { date: "2026-03", price: 9_640_000 },
      { date: "2026-04", price: 9_700_000 },
    ],
    chart_change_pct: 3.2,
    chart_change_direction: "increase",
  },
  avito_imv: {
    recommended_price: 10_200_000,
    lower_price: 9_400_000,
    higher_price: 11_000_000,
    market_count: 7,
  },
  dkp_corridor: {
    count: 9,
    low_ppm2: 150_000,
    median_ppm2: 162_000,
    high_ppm2: 178_000,
    period_months: 24,
  },
  price_trend: [
    { month: "2025-11", ppm2: 168_000 },
    { month: "2025-12", ppm2: 170_500 },
    { month: "2026-01", ppm2: 172_000 },
    { month: "2026-02", ppm2: 174_000 },
    { month: "2026-03", ppm2: 176_500 },
    { month: "2026-04", ppm2: 178_000 },
  ],
  // #2002: премиальный дом + рекомендация ручной оценки — чтобы баннер и бейдж
  // рендерились в preview-маршруте (/ui-preview/estimate) для a11y/визуального ревью.
  manual_review_recommended: true,
  manual_review_reasons: [
    "премиальный дом — мало сопоставимых сделок",
    "высокая стоимость объекта",
    "широкий диапазон цены аналогов",
  ],
  premium_building: true,
  premium_building_class: "бизнес",
  premium_building_median_ppm2: 182_000,
};

export const FIXTURE_INPUT: TradeInEstimateInput = {
  address: "Екатеринбург, ул. Репина, 75/2",
  area_m2: 55.3,
  rooms: 2,
  floor: 5,
  total_floors: 11,
  year_built: 2018,
  house_type: "monolith",
  repair_state: "good",
  has_balcony: true,
};

// ── IMV Benchmark fixture ─────────────────────────────────────────────────────
// available:true обязательно — иначе IMVBenchmark возвращает null.
export const FIXTURE_IMV: IMVBenchmarkResponse = {
  available: true,
  cache_key: "ekb:preview-house:2k",
  recommended_price: 10_200_000,
  lower_price: 9_400_000,
  higher_price: 11_000_000,
  market_count: 7,
  fetched_at: "2026-05-30T12:00:00Z",
  our_median_price: 9_850_000,
  diff_pct: -3.4,
};

// ── HouseInfo fixture ─────────────────────────────────────────────────────────
// houses.length > 0 обязательно — иначе HouseInfoCard возвращает null.
export const FIXTURE_HOUSES: HouseInfoForEstimate[] = [
  {
    house_id: 42001,
    ext_house_id: "ekb-repin-75",
    address: "Екатеринбург, ул. Репина, 75",
    short_address: "Репина, 75",
    lat: 56.84,
    lon: 60.57,
    year_built: 2018,
    total_floors: 11,
    house_type: "monolith",
    passenger_elevators: 2,
    cargo_elevators: 1,
    has_concierge: false,
    closed_yard: true,
    has_playground: true,
    parking_type: "подземная",
    developer_name: "Атомстройкомплекс",
    rating: 4.3,
    reviews_count: 28,
    raw_characteristics: [],
  },
];

// ── PlacementHistory fixture ──────────────────────────────────────────────────
// items.length > 0 обязательно — иначе PlacementHistoryCard возвращает null.
export const FIXTURE_PLACEMENT: PlacementHistoryItem[] = [
  {
    id: 1001,
    source: "avito",
    house_id: 42001,
    ext_item_id: "avito-preview-1001",
    title: "2к, 54 м², 7/16 эт.",
    rooms: 2,
    area_m2: 54,
    floor: 7,
    total_floors: 16,
    start_price: 10_200_000,
    start_price_date: "2025-11-01",
    last_price: 9_700_000,
    last_price_date: "2026-03-15",
    removed_date: "2026-04-10",
    exposure_days: 160,
    notes: null,
  },
  {
    id: 1002,
    source: "cian",
    house_id: 42001,
    ext_item_id: "cian-preview-1002",
    title: "2к, 57 м², 4/10 эт.",
    rooms: 2,
    area_m2: 57,
    floor: 4,
    total_floors: 10,
    start_price: 9_800_000,
    start_price_date: "2025-09-10",
    last_price: 9_500_000,
    last_price_date: "2025-12-20",
    removed_date: "2026-01-05",
    exposure_days: 117,
    notes: null,
  },
  {
    id: 1003,
    source: "avito",
    house_id: 42001,
    ext_item_id: "avito-preview-1003",
    title: "2к, 55 м², 5/11 эт.",
    rooms: 2,
    area_m2: 55,
    floor: 5,
    total_floors: 11,
    start_price: 9_500_000,
    start_price_date: "2025-06-01",
    last_price: 9_100_000,
    last_price_date: "2025-08-30",
    removed_date: "2025-09-05",
    exposure_days: 96,
    notes: null,
  },
];

// ── HouseAnalytics fixture ────────────────────────────────────────────────────
// kpi.total_lots > 0 обязательно — иначе HouseAnalyticsSection возвращает null.
// price_history >= 2 точки — для рендера PriceHistoryChart.
// recent_sold > 0 — для рендера RecentSoldList.
export const FIXTURE_ANALYTICS: HouseAnalyticsResponse = {
  house_ids: [42001],
  radius_m: 0,
  kpi: {
    total_lots: 38,
    sold_count: 24,
    sold_rate_pct: 63.2,
    median_exposure_days: 112,
    median_bargain_pct: 4.8,
  },
  price_history: [
    { year: 2022, source: "avito_imv", median_price_per_m2: 155_000, n_lots: 6, median_price_rub: 8_525_000 },
    { year: 2023, source: "avito_imv", median_price_per_m2: 161_000, n_lots: 9, median_price_rub: 8_855_000 },
    { year: 2024, source: "avito_imv", median_price_per_m2: 170_000, n_lots: 12, median_price_rub: 9_350_000 },
    { year: 2025, source: "avito_imv", median_price_per_m2: 176_000, n_lots: 11, median_price_rub: 9_680_000 },
  ],
  recent_sold: [
    {
      id: 2001,
      source: "avito_imv",
      rooms: 2,
      area_m2: 54,
      floor: 7,
      start_price: 10_200_000,
      last_price: 9_700_000,
      removed_date: "2026-04-10",
      exposure_days: 160,
      discount_pct: 4.9,
    },
    {
      id: 2002,
      source: "avito_imv",
      rooms: 2,
      area_m2: 57,
      floor: 4,
      start_price: 9_800_000,
      last_price: 9_500_000,
      removed_date: "2026-01-05",
      exposure_days: 117,
      discount_pct: 3.1,
    },
  ],
};

// ── SellTimeSensitivity fixture ───────────────────────────────────────────────
export const FIXTURE_SELLTIME: SellTimeSensitivityResponse = {
  house_ids: [42001],
  radius_m: 0,
  target_median_price_per_m2: 178_000,
  buckets: [
    { price_premium_label: "cheap",  price_premium_pct: -5, median_exposure_days: 38,  p25_days: 21, p75_days: 55,  n_lots: 8 },
    { price_premium_label: "median", price_premium_pct:  0, median_exposure_days: 112, p25_days: 60, p75_days: 160, n_lots: 14 },
    { price_premium_label: "plus5",  price_premium_pct:  5, median_exposure_days: 185, p25_days: 90, p75_days: 240, n_lots: 10 },
    { price_premium_label: "plus10", price_premium_pct: 10, median_exposure_days: 270, p25_days: 150, p75_days: 360, n_lots: 6 },
  ],
};

// Секция 12: StreetDealsCard — useSalesVsListings(address, area_m2, rooms).
// Guard: street != null И pairs.length > 0 — иначе return null.
export const FIXTURE_SALES: SalesVsListingsResponse = {
  street: "Репина",
  period_months: 24,
  window_days: 180,
  area_tolerance: 0.15,
  total_deals: 9,
  deals_with_listings: 5,
  linkage_rate_pct: 55.6,
  median_discount_pct: -6.2,
  data_quality: "house_linked",
  pairs: [
    {
      deal_id: 9001,
      deal_date: "2026-04-18",
      deal_price_rub: 8_900_000,
      deal_price_per_m2: 161_818,
      deal_area_m2: 55,
      deal_rooms: 2,
      deal_floor: 6,
      deal_address: "Екатеринбург, ул. Репина, 75/2",
      listing_id: 50001,
      listing_source: "avito",
      listing_source_url: "https://www.avito.ru/ekaterinburg/kvartiry/preview-d1",
      listing_date: "2026-03-20",
      listing_price_rub: 9_500_000,
      listing_price_per_m2: 172_727,
      listing_area_m2: 55,
      days_listing_to_deal: 29,
      discount_pct: -6.3,
    },
    {
      deal_id: 9002,
      deal_date: "2026-02-27",
      deal_price_rub: 9_100_000,
      deal_price_per_m2: 159_649,
      deal_area_m2: 57,
      deal_rooms: 2,
      deal_floor: 9,
      deal_address: "Екатеринбург, ул. Репина, 73",
      listing_id: 50002,
      listing_source: "cian",
      listing_source_url: "https://www.cian.ru/sale/flat/preview-d2",
      listing_date: "2026-01-30",
      listing_price_rub: 9_700_000,
      listing_price_per_m2: 170_175,
      listing_area_m2: 57,
      days_listing_to_deal: 28,
      discount_pct: -6.2,
    },
  ],
};
