gendesign/site-finder/reports/parcel_66_41_0204016_10.html
Light1YT 97b19a0b85 Import Site Finder app from analysis/ vibe-coding session
Adds site-finder/ subfolder with:
  - server.py — FastAPI scoring service v2 (35 endpoints, ~85KB)
  - 01_load_sites.py … 12_more_pois.py — data ingest pipeline
  - db_init.py — SQLite schema bootstrap
  - static/ — Leaflet UI (index.html ~3500 lines + sw.js)
  - cache/ — small persistent caches (admin districts, jk polygons,
    geocode warm cache, parcel polygons drop-zone with README)
  - reports/ — sample generated parcel report (HTML+JSON)

Excluded via .gitignore (regeneratable, too big for git):
  - analysis.db (336MB SQLite — rebuild via 01_*..12_*.py)
  - cache/objective_raw/ (1.2GB Объектив raw dumps)
  - cache/overpass_raw.json, cache/osm_buildings_all.geojson
    (regen from Overpass API)

Production deploy: /opt/gendesign/site-finder/ on gendsgn.ru
(container gendesign-site-finder-1, served at /sf/).
2026-05-10 22:42:25 +05:00

77 lines
No EOL
11 KiB
HTML
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!doctype html>
<html lang=ru><head><meta charset=utf-8>
<title>Анализ участка Участок 66:41:0204016:10</title>
<style>
body{font-family:-apple-system,Segoe UI,sans-serif;max-width:980px;margin:32px auto;padding:0 16px;color:#222;line-height:1.5}
h1{font-size:24px;margin:0 0 8px}
h2{font-size:18px;margin-top:32px;border-bottom:1px solid #eee;padding-bottom:6px}
.kpi{display:grid;grid-template-columns:repeat(5,1fr);gap:12px;margin:18px 0}
.kpi div{background:#f5f7fa;border-radius:8px;padding:14px}
.kpi b{display:block;font-size:11px;color:#666;text-transform:uppercase;margin-bottom:4px}
.kpi span{font-size:24px;font-weight:600}
.big{font-size:42px;font-weight:700;color:#0a6}
table{border-collapse:collapse;width:100%;margin:8px 0;font-size:13px}
th,td{border:1px solid #ddd;padding:6px 10px;text-align:left}
th{background:#f5f7fa;font-weight:600}
.r{text-align:right}
.g{color:#0a6;font-weight:600}
.r.r{color:#c33;font-weight:600}
.muted{color:#888;font-size:12px}
.note{background:#fffbe6;border-left:4px solid #f0c000;padding:10px 14px;border-radius:4px;margin:12px 0}
</style></head><body>
<h1>Анализ участка <code>66:41:0204016:10</code></h1>
<div class=muted>Сгенерировано 2026-05-08T00:34:04 · Сравнение с 380 строящимися ЖК Екатеринбурга</div>
<div class="note">
Координаты участка получены из ссылки на NSPD-карту (EPSG:3857 → WGS84):
<b>56.878913, 60.522615</b>. Район — центрально-северная часть ЕКБ (Пионерский / Втузгородок).
</div>
<div class=kpi>
<div><b>Итоговый балл</b><span class=big>72.1</span><span class=muted>из 100</span></div>
<div><b>Ранг по ЕКБ</b><span>#183 / 381</span></div>
<div><b>Перцентиль</b><span>52%</span></div>
<div><b>Медиана ЖК</b><span>70.9</span></div>
<div><b>Топ-25% ЖК ≥</b><span>81.7</span></div>
</div>
<h2>Компоненты (взвешенные)</h2>
<table><thead><tr><th>Компонент</th><th class=r>Участок</th><th class=r>Медиана ЖК</th><th class=r>P75 ЖК</th><th class=r>Δ vs медиана</th></tr></thead>
<tbody><tr><td>economic</td><td class='r'>40.2</td><td class='r'>47.2</td><td class='r'>59.5</td><td class='r r'>-7.0</td></tr><tr><td>education</td><td class='r'>79.5</td><td class='r'>75.9</td><td class='r'>94.7</td><td class='r g'>+3.6</td></tr><tr><td>health</td><td class='r'>88.7</td><td class='r'>83.2</td><td class='r'>98.3</td><td class='r g'>+5.5</td></tr><tr><td>leisure</td><td class='r'>98.4</td><td class='r'>86.1</td><td class='r'>96.9</td><td class='r g'>+12.3</td></tr><tr><td>retail</td><td class='r'>100.0</td><td class='r'>100.0</td><td class='r'>100.0</td><td class='r '>+0.0</td></tr><tr><td>transit</td><td class='r'>69.7</td><td class='r'>70.0</td><td class='r'>85.0</td><td class='r r'>-0.3</td></tr></tbody></table>
<div class=muted>Веса: образование 20% · здоровье 10% · ритейл 15% · транспорт 15% · досуг 10% · экономика 30%</div>
<h2>Экономика района (Объектив API, последние 90 дней)</h2>
<table>
<tr><th>Район (Объектив)</th><td><b>Старая Сортировка</b> <span class=muted>(по голосованию 5 ближайших ЖК (расст. до репрезентанта 492 м))</span></td></tr>
<tr><th>Проектов в районе</th><td>6</td></tr>
<tr><th>Лотов всего / продано</th><td>8,356 / <b>4,078</b> (48.8%)</td></tr>
<tr><th>Цена за м² (медиана)</th><td><b>114.9 тыс ₽</b> · P25=96.1 · P75=132.7</td></tr>
<tr><th>Средняя площадь сделки</th><td>49.0 м²</td></tr>
<tr><th>Скорость продаж (real)</th><td><b>2.7</b> зарег. ДДУ/корпус/мес <span class=muted>(по 12 мес)</span></td></tr>
<tr><th>Средняя готовность</th><td>75.8%</td></tr>
<tr><th>Цена corp_sum (взвеш.)</th><td class=muted>128.3 тыс ₽/м² · скорость 0.5</td></tr>
<tr><th>Распродажа стока (corp_sum)</th><td class=muted>15.9 мес</td></tr>
</table>
<p class=muted><b>real_*</b> рассчитаны по 8,356 лотам из Поквартирные/Лоты (303 677 квартир Екб). Это per-flat, основной источник правды.</p>
<h2>Ближайшие POI вокруг участка</h2>
<table><thead><tr><th>Категория</th><th>Ближайший</th><th class=r>До него</th><th class=r>В 500 м</th><th class=r>В 1 км</th></tr></thead>
<tbody><tr><td>kindergarten</td><td>Детский сад № 357</td><td class='r'>380 м</td><td class='r'>1.0</td><td class='r'>4.0</td></tr><tr><td>school</td><td>Школа № 122</td><td class='r'>792 м</td><td class='r'>0.0</td><td class='r'>3.0</td></tr><tr><td>university</td><td>Железнодорожный техникум</td><td class='r'>906 м</td><td class='r'>0.0</td><td class='r'>1.0</td></tr><tr><td>pharmacy</td><td>Вита Экспресс</td><td class='r'>471 м</td><td class='r'>1.0</td><td class='r'>8.0</td></tr><tr><td>clinic</td><td>Инвитро</td><td class='r'>450 м</td><td class='r'>1.0</td><td class='r'>6.0</td></tr><tr><td>hospital</td><td>Дорожная больница станции Екатеринбург-Пассажирский</td><td class='r'>1761 м</td><td class='r'>0.0</td><td class='r'>0.0</td></tr><tr><td>shop_big</td><td>Магнит</td><td class='r'>20 м</td><td class='r'>3.0</td><td class='r'>10.0</td></tr><tr><td>shop_med</td><td>Кировский</td><td class='r'>450 м</td><td class='r'>1.0</td><td class='r'>12.0</td></tr><tr><td>shop_small</td><td></td><td class='r'></td><td class='r'>0.0</td><td class='r'>0.0</td></tr><tr><td>bus_stop</td><td>Билимбаевская</td><td class='r'>320 м</td><td class='r'>4.0</td><td class='r'>20.0</td></tr><tr><td>tram_stop</td><td>Расточная улица</td><td class='r'>598 м</td><td class='r'>0.0</td><td class='r'>8.0</td></tr><tr><td>metro</td><td></td><td class='r'></td><td class='r'>0.0</td><td class='r'>0.0</td></tr><tr><td>park</td><td></td><td class='r'>566 м</td><td class='r'>0.0</td><td class='r'>3.0</td></tr><tr><td>playground</td><td></td><td class='r'>163 м</td><td class='r'>12.0</td><td class='r'>22.0</td></tr><tr><td>sports</td><td></td><td class='r'>243 м</td><td class='r'>7.0</td><td class='r'>16.0</td></tr></tbody></table>
<h2>10 ближайших ЖК (для прямого бенчмарка)</h2>
<table><thead><tr><th class=r>Расст.</th><th>Название</th><th>Район</th><th>Девелопер</th><th>Класс</th><th class=r>Балл</th><th class=r>Ранг</th></tr></thead>
<tbody><tr><td class='r'>492 м</td><td>Квартал "Траектория"</td><td>Железнодорожный</td><td>Брусника</td><td></td><td class='r'>66.6</td><td class='r'>#223</td></tr><tr><td class='r'>994 м</td><td>Квартал Депо</td><td>Железнодорожный</td><td>Брусника</td><td></td><td class='r'>69.5</td><td class='r'>#206</td></tr><tr><td class='r'>994 м</td><td>Квартал Депо</td><td>Железнодорожный</td><td>Брусника</td><td></td><td class='r'>73.3</td><td class='r'>#176</td></tr><tr><td class='r'>1036 м</td><td>Астон. Движение</td><td>Железнодорожный</td><td>Астон</td><td></td><td class='r'>64.3</td><td class='r'>#240</td></tr><tr><td class='r'>1211 м</td><td>Жилой Комплекс "Раута" </td><td>Железнодорожный</td><td>Эталон</td><td></td><td class='r'>72.0</td><td class='r'>#186</td></tr><tr><td class='r'>1312 м</td><td>Жилой Комплекс "Раута" </td><td>Железнодорожный</td><td>Эталон</td><td></td><td class='r'>74.4</td><td class='r'>#168</td></tr><tr><td class='r'>3065 м</td><td>ЖК Белая Башня</td><td>Орджоникидзевский</td><td>Ривьера Инвест Екатеринбург</td><td></td><td class='r'>81.2</td><td class='r'>#106</td></tr><tr><td class='r'>3596 м</td><td>ЖК "ПАЙЕР"</td><td>Железнодорожный</td><td>Самолет</td><td></td><td class='r'>58.8</td><td class='r'>#267</td></tr><tr><td class='r'>3612 м</td><td>ЖК ТЕМП</td><td>Орджоникидзевский</td><td>Практика</td><td></td><td class='r'>81.4</td><td class='r'>#104</td></tr><tr><td class='r'>4021 м</td><td>ЖК "Парк Победы"</td><td>Орджоникидзевский</td><td>PRINZIP</td><td></td><td class='r'>80.3</td><td class='r'>#118</td></tr></tbody></table>
<h2>Топ-10 ЖК ЕКБ по локационной привлекательности</h2>
<table><thead><tr><th class=r>Ранг</th><th>Название</th><th>Район</th><th>Девелопер</th><th>Класс</th><th class=r>Балл</th></tr></thead>
<tbody><tr><td class='r'>#1</td><td></td><td>Железнодорожный</td><td>ТЭН</td><td></td><td class='r'>91.2</td></tr><tr><td class='r'>#2</td><td>Квартал «Лайв»</td><td>Ленинский</td><td>Атомстройкомплекс</td><td></td><td class='r'>91.0</td></tr><tr><td class='r'>#3</td><td>Клубный дом инженера Ятеса</td><td>Железнодорожный</td><td>ТЭН</td><td></td><td class='r'>91.0</td></tr><tr><td class='r'>#4</td><td>Клубный дом инженера Ятеса</td><td>Железнодорожный</td><td>ТЭН</td><td></td><td class='r'>90.7</td></tr><tr><td class='r'>#5</td><td>Квартал "На Некрасова"</td><td>Железнодорожный</td><td>Брусника</td><td></td><td class='r'>90.6</td></tr><tr><td class='r'>#6</td><td>ЖК "Азина 16"</td><td>Железнодорожный</td><td>ЛСР</td><td></td><td class='r'>90.4</td></tr><tr><td class='r'>#7</td><td>Жилой дом "ТЕТРО"</td><td>Железнодорожный</td><td>Девелоперская компания "Люди"</td><td></td><td class='r'>90.2</td></tr><tr><td class='r'>#8</td><td>Жилой квартал «Тихий центр» 1 оч. 1 этап</td><td>Железнодорожный</td><td>Синара-Девелопмент</td><td></td><td class='r'>90.1</td></tr><tr><td class='r'>#9</td><td>ЖК "Кайдзен"</td><td>Верх-Исетский</td><td>Астра</td><td></td><td class='r'>90.0</td></tr><tr><td class='r'>#10</td><td>ЖК "Азина 16"</td><td>Железнодорожный</td><td>ЛСР</td><td></td><td class='r'>89.7</td></tr></tbody></table>
<h2>Методика</h2>
<p><b>Источник POI:</b> OpenStreetMap (Overpass API), bbox по всем 381 ЖК Свердл.</p>
<p><b>Логика:</b> для каждой категории — расстояние-в-балл (piecewise linear от <i>ideal_m</i> к <i>max_m</i>),
далее агрегация в 5 компонент с весами (max-pool там, где категории альтернативны: ритейл = max(big, 0.7×med); транспорт = max(metro, 0.85×tram, 0.7×bus)).
Финальный балл — взвешенная сумма компонент.</p>
<p><b>База данных:</b> локальная SQLite <code>analysis.db</code> (sites/pois/features/scores), под-выборка строящихся ЖК ЕКБ из прода <code>domrf_kn_objects</code>.</p>
</body></html>