«Все точки показывают максимум информации» — карты-попапы недоливают данные (verified audit) #2111

Closed
opened 2026-06-30 12:34:37 +00:00 by bot-backend · 1 comment
Collaborator

Многоагентный аудит (adversarially verified) всех попапов/карточек карт Site Finder против требования «каждая точка показывает максимум информации». Проверены 7 слоёв — в каждом нашлись поля, которые есть в источнике данных, но не доходят до попапа.

Контекст: §1 POI-точки уже починены в #2110 (адрес/оператор/часы/сайт/телефон из OSM tags). Этот тикет — остальной подтверждённый бэклог.

HIGH / на тему «точки подключения + характеристики» (прямой запрос Anton по §3)

  • UtilityInfrastructureLayer (OSM инж. сети) — попап не показывает voltage/operator/diameter из osm_utility_infrastructure_ekb.tags (JSONB). Voltage class (110/35/10 кВ) = тариф подключения и capex; diameter (мм) = магистраль vs распределитель. Backend: добавить tags в SQL SELECT + в контракт UtilityInfrastructureFeature. Frontend: человекочитаемо «110 кВ», «530 мм», оператор. severity: medium-high
  • ConnectionPointsLayer (НСПД точки подключения) — попап не показывает cad_num (№ ЕГРН, уже в схеме EngineeringStructure) и params_purpose/object_type_value (назначение/класс, «1.1. Сооружения электроэнергетики», quarter_dump_lookup.py:1319-1323). severity: medium
  • ZouitLayer (ЗОУИТ охранные зоны) — попап не показывает reg_numb_border (рег. № границы зоны, напр. 66:41-6.4380) и coverage_pct (% перекрытия участка — критично для buildability). Оба отдаёт бэкенд (_get_zouit_overlaps/_get_cad_zouit_overlaps). severity: medium

MEDIUM

  • MarketLayers (попап конкурента) — не показывает dev_name (застройщик, уже в типе ParcelAnalysisCompetitor) и avg_area_pd (ср. площадь квартиры — нужно для unit-cost; нет в TS-типе, бэкенд считает в obj_pricing CTE). severity: medium
  • NspdEngineeringNearbyBlock (§3 таблица «инж. сооружения рядом») — таблица показывает только name/type/distance, хотя бэкенд уже отдаёт readable_address, characteristics, cad_num, source (та же EngineeringStructure, что и map-popup, починенный в PR-D). severity: medium
  • CustomPoiLayer (пользовательские точки) — попап не показывает parcel_cad (scope: global vs parcel — load-bearing для аудита скоринга), created_at, updated_at. severity: medium

LOW

  • NeighborsBlock (соседние здания) — не показывает purpose (назначение здания, cad_buildings.purpose) и status (статус, cad_buildings.status, >90% заполнено). severity: low

Отклонено аудитом (НЕ делать — hallucinated/неверный источник)

  • NspdZoningBlock max_far/max_height_m/max_floors/max_building_pct/regulation_zone_index — приходят из zone_regulation_cache (геопортал), НЕ из NSPD-dump features; не часть схемы NspdZoning. Это отдельная история (градрегламент уже рендерится в §1 карточке ГРАДРЕГЛАМЕНТ).
  • ЗОУИТ is_network_zone/network_kind — только в cad_zouit fallback, нет в TS-типе NspdZouitOverlap.
  • Neighbors year_commisioning/ownership_type/cultural_heritage/underground_floors — в схеме есть, но population не подтверждён (нет в upsert-параметрах bulk_harvest).

Источник: workflow-аудит 2026-06-30, 14 агентов, adversarial verify. Полный JSON в сессии.

Многоагентный аудит (adversarially verified) всех попапов/карточек карт Site Finder против требования «каждая точка показывает максимум информации». Проверены 7 слоёв — в каждом нашлись поля, которые **есть в источнике данных, но не доходят до попапа**. Контекст: §1 POI-точки уже починены в [#2110](https://git.gendsgn.ru/lekss361/gendesign/pulls/2110) (адрес/оператор/часы/сайт/телефон из OSM tags). Этот тикет — остальной подтверждённый бэклог. ### HIGH / на тему «точки подключения + характеристики» (прямой запрос Anton по §3) - [ ] **UtilityInfrastructureLayer (OSM инж. сети)** — попап не показывает `voltage`/`operator`/`diameter` из `osm_utility_infrastructure_ekb.tags` (JSONB). Voltage class (110/35/10 кВ) = тариф подключения и capex; diameter (мм) = магистраль vs распределитель. **Backend:** добавить `tags` в SQL SELECT + в контракт `UtilityInfrastructureFeature`. **Frontend:** человекочитаемо «110 кВ», «530 мм», оператор. _severity: medium-high_ - [ ] **ConnectionPointsLayer (НСПД точки подключения)** — попап не показывает `cad_num` (№ ЕГРН, уже в схеме `EngineeringStructure`) и `params_purpose`/`object_type_value` (назначение/класс, «1.1. Сооружения электроэнергетики», `quarter_dump_lookup.py:1319-1323`). _severity: medium_ - [ ] **ZouitLayer (ЗОУИТ охранные зоны)** — попап не показывает `reg_numb_border` (рег. № границы зоны, напр. `66:41-6.4380`) и `coverage_pct` (% перекрытия участка — критично для buildability). Оба отдаёт бэкенд (`_get_zouit_overlaps`/`_get_cad_zouit_overlaps`). _severity: medium_ ### MEDIUM - [ ] **MarketLayers (попап конкурента)** — не показывает `dev_name` (застройщик, уже в типе `ParcelAnalysisCompetitor`) и `avg_area_pd` (ср. площадь квартиры — нужно для unit-cost; нет в TS-типе, бэкенд считает в `obj_pricing` CTE). _severity: medium_ - [ ] **NspdEngineeringNearbyBlock (§3 таблица «инж. сооружения рядом»)** — таблица показывает только name/type/distance, хотя бэкенд уже отдаёт `readable_address`, `characteristics`, `cad_num`, `source` (та же `EngineeringStructure`, что и map-popup, починенный в PR-D). _severity: medium_ - [ ] **CustomPoiLayer (пользовательские точки)** — попап не показывает `parcel_cad` (scope: global vs parcel — load-bearing для аудита скоринга), `created_at`, `updated_at`. _severity: medium_ ### LOW - [ ] **NeighborsBlock (соседние здания)** — не показывает `purpose` (назначение здания, `cad_buildings.purpose`) и `status` (статус, `cad_buildings.status`, >90% заполнено). _severity: low_ ### Отклонено аудитом (НЕ делать — hallucinated/неверный источник) - ❌ NspdZoningBlock `max_far`/`max_height_m`/`max_floors`/`max_building_pct`/`regulation_zone_index` — приходят из `zone_regulation_cache` (геопортал), НЕ из NSPD-dump features; не часть схемы `NspdZoning`. Это отдельная история (градрегламент уже рендерится в §1 карточке ГРАДРЕГЛАМЕНТ). - ❌ ЗОУИТ `is_network_zone`/`network_kind` — только в cad_zouit fallback, нет в TS-типе `NspdZouitOverlap`. - ❌ Neighbors `year_commisioning`/`ownership_type`/`cultural_heritage`/`underground_floors` — в схеме есть, но population не подтверждён (нет в upsert-параметрах `bulk_harvest`). --- _Источник: workflow-аудит 2026-06-30, 14 агентов, adversarial verify. Полный JSON в сессии._
Author
Collaborator

Все HIGH/MEDIUM/LOW пункты отгружены и задеплоены (2026-06-30):

  • #2110 §1 POI — адрес/часы/телефон/сайт. Прод-verified (попап «Магазин Поль Бейкери» кажет часы Mo-Su 10:00-22:00, телефоны, Сайт).
  • #2112 §3 «Сети» (HIGH) — Utility voltage/diameter/material(RU), connection-point purpose + «№ ЕГРН», ЗОУИТ reg_numb/coverage. Прод-verified (попап точки подключения кажет «№ ЕГРН: 66:41:0702017:130»); Utility characteristics подтверждён в live API (26/200 фич).
  • #2113 secondary — competitor застройщик/площадь, §3-таблица, custom-POI scope/даты, соседи назначение/статус. Соседи прод-verified в API (11/11 покрыты, «Нежилое»/«Учтенный»).
  • #2114 hotfix — competitor NUMERIC-поля приходили строкой (Pydantic Decimal→str), typeof===number-гвард молча ронял цену+площадь → coerce через toFiniteNumber. Цена конкурента раньше вообще не показывалась.

Отклонённые пункты (NspdZoning max_far/etc, ЗОУИТ is_network_zone, neighbor year_commisioning) — НЕ делались (см. описание: hallucinated/неверный источник/population не подтверждён).

Паттерн зафиксирован в workflow-памяти. Закрываю.

✅ Все HIGH/MEDIUM/LOW пункты отгружены и задеплоены (2026-06-30): - **#2110** §1 POI — адрес/часы/телефон/сайт. Прод-verified (попап «Магазин Поль Бейкери» кажет часы Mo-Su 10:00-22:00, телефоны, Сайт). - **#2112** §3 «Сети» (HIGH) — Utility voltage/diameter/material(RU), connection-point purpose + «№ ЕГРН», ЗОУИТ reg_numb/coverage. Прод-verified (попап точки подключения кажет «№ ЕГРН: 66:41:0702017:130»); Utility `characteristics` подтверждён в live API (26/200 фич). - **#2113** secondary — competitor застройщик/площадь, §3-таблица, custom-POI scope/даты, соседи назначение/статус. Соседи прод-verified в API (11/11 покрыты, «Нежилое»/«Учтенный»). - **#2114** hotfix — competitor NUMERIC-поля приходили строкой (Pydantic Decimal→str), `typeof===number`-гвард молча ронял цену+площадь → coerce через `toFiniteNumber`. Цена конкурента раньше вообще не показывалась. Отклонённые пункты (NspdZoning max_far/etc, ЗОУИТ is_network_zone, neighbor year_commisioning) — НЕ делались (см. описание: hallucinated/неверный источник/population не подтверждён). Паттерн зафиксирован в workflow-памяти. Закрываю.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: lekss361/gendesign#2111
No description provided.