|
All checks were successful
CI Trade-In / backend-tests (pull_request) Successful in 4m30s
CI / changes (pull_request) Successful in 11s
CI Trade-In / changes (pull_request) Successful in 11s
CI Trade-In / browser-tests (pull_request) Has been skipped
CI Trade-In / frontend-checks (pull_request) Has been skipped
CI / backend-tests (pull_request) Has been skipped
CI / frontend-tests (pull_request) Has been skipped
CI / openapi-codegen-check (pull_request) Has been skipped
has_panorama разбирался, писался и обещался публичным контрактом market.v_houses, но положительных значений не имел ни одного: 0 true из 1536 страниц yandex_valuation за 24.05–12.08.2026 (false 1536, ключ отсутствует 0), houses — 12 непустых из 9468, все false. Соседний has_lift выглядел контрольной группой («текст читается, разбор работает»), но контролирует он только факт отрисовки страницы: "Лифт" in body_text ловит подстроку внутри отрицания, и на живой пятиэтажке 1977 г. со строкой «Лифт отсутствует» парсер отдаёт True. На проде 300 из 313 пятиэтажек «с лифтом». Гейт отрицания для has_lift — отдельной правкой, здесь не смешиваю. Живая проверка боевым трактом 13.08.2026 (curl_cffi impersonate=chrome120 + прод-прокси, RealScraperConfig + get_scraper_delay — ровно как estimator.py; только чтение, в БД не писал): три адреса Екатеринбурга, все HTTP 200, полный HTML ~1.19 МБ каждый. Вхождений «анорам» без учёта регистра — 0/0/0, равно как panorama / 3D-тур / Виртуальн / Street. Мета при этом разобралась целиком (1974/9эт/панель/2,50/46 объектов; 2020/18эт; 1977/5эт/кирпич/184 объекта). Метка не «переехала» в атрибут или JSON-стейт — её нет в документе вовсе. Это третий вид нуля: не «уже починено» и не «заблокировано выше по потоку», а НЕПРИМЕНИМО к предметной области. Ноль был механически гарантирован самим кодом — поиск подстроки по тексту, где такого слова не бывает, — и о доме не говорил ничего. Цена: снос ломает публичный контракт market.v_houses (мигр. 154 прямо называет удаление колонки ломающим изменением). Принято осознанно — читателей вне tradein-mvp нет (git grep пуст, в т.ч. newbuilding_crossload.py). CREATE OR REPLACE VIEW колонку не удаляет, поэтому DROP VIEW → DROP COLUMN → CREATE VIEW, и вместе с DROP VIEW теряются гранты: GRANT SELECT для gendesign_reader восстановлен явно. Оговорка честности: сырой HTML прошлых сборов не хранится (raw_payload держит только body_len/items_count), поэтому «метка была и исчезла в мае» доказательно не опровергается — но и в измеренной истории 1536 страниц положительных ноль. Refs #2674 |
||
|---|---|---|
| .. | ||
| src/scraper_kit | ||
| pyproject.toml | ||