Commit graph

  • de6afc99fa fix(tradein): a11y follow-up — sr-only th-текст + heading-order (#835) (#845) Co-authored-by: bot-frontend <bot-frontend@gendsgn.local> Co-committed-by: bot-frontend <bot-frontend@gendsgn.local> bot-frontend 2026-05-30 21:13:19 +00:00
  • abdb87e806 fix(tradein): a11y follow-up — sr-only th-текст + heading-order (#835) bot-frontend 2026-05-31 00:03:50 +03:00
  • 19c69be493 fix(tradein): recharts a11y — aria-hidden чарты, h1, aria-label th (#835) (#844) Co-authored-by: bot-frontend <bot-frontend@gendsgn.local> Co-committed-by: bot-frontend <bot-frontend@gendsgn.local> bot-frontend 2026-05-30 20:49:19 +00:00
  • b1b0dc4b0f fix(tradein): recharts a11y — aria-hidden чарты, h1, aria-label th (#835) bot-frontend 2026-05-30 23:45:15 +03:00
  • 3885b9f62d fix(tradein): контраст AA follow-up — muted-on-tint, rating, sold-delta (#834) (#842) Co-authored-by: bot-frontend <bot-frontend@gendsgn.local> Co-committed-by: bot-frontend <bot-frontend@gendsgn.local> bot-frontend 2026-05-30 20:43:10 +00:00
  • 54c37d89a6 fix(tradein): контраст AA follow-up — --muted на тинтах, rating, sold-delta (#834) bot-frontend 2026-05-30 23:36:49 +03:00
  • cd406225fc fix(tradein): aria-label на input[type=file] в PhotoUpload — a11y critical (#839) (#841) Co-authored-by: bot-frontend <bot-frontend@gendsgn.local> Co-committed-by: bot-frontend <bot-frontend@gendsgn.local> bot-frontend 2026-05-30 20:30:49 +00:00
  • 08509b1b78 fix(scrapers): normalize cian descriptionMinhash list[int]→str + silent-0 guard (Refs #836) (#840) Co-authored-by: bot-backend <bot-backend@gendsgn.local> Co-committed-by: bot-backend <bot-backend@gendsgn.local> bot-backend 2026-05-30 20:28:56 +00:00
  • 391ff9bed8 fix(tradein): aria-label на input[type=file] в PhotoUpload (a11y critical) bot-frontend 2026-05-30 23:23:31 +03:00
  • 86307f5eba fix(tradein): контраст muted/teal токенов до WCAG AA (#834) (#838) Co-authored-by: bot-frontend <bot-frontend@gendsgn.local> Co-committed-by: bot-frontend <bot-frontend@gendsgn.local> bot-frontend 2026-05-30 20:23:00 +00:00
  • 8b64ab85ed fix(scrapers): normalize cian descriptionMinhash list[int]->str + silent-0 guard (Refs #836) bot-backend 2026-05-30 23:20:20 +03:00
  • 068bd8b5f8 fix(tradein): gas leaflet map в ui-preview для CI-аудита (#801) (#837) Co-authored-by: bot-backend <bot-backend@gendsgn.local> Co-committed-by: bot-backend <bot-backend@gendsgn.local> bot-backend 2026-05-30 20:15:58 +00:00
  • 1e6f167b37 fix(tradein): gas leaflet map in ui-preview (placeholder) для CI-аудита (#801) lekss361 2026-05-30 23:15:03 +03:00
  • a41dd21f83 fix(tradein): контраст muted/teal токенов до WCAG AA ≥4.5:1 (#834) bot-frontend 2026-05-30 23:15:02 +03:00
  • 80a063b482 feat(observability): sentry alert on N consecutive scraper failures (Refs #827) (#833) Co-authored-by: bot-backend <bot-backend@gendsgn.local> Co-committed-by: bot-backend <bot-backend@gendsgn.local> bot-backend 2026-05-30 20:10:29 +00:00
  • fd75f4d47a perf(estimator): executemany batch insert in _save_yandex_history_items (Refs #826) (#832) Co-authored-by: bot-backend <bot-backend@gendsgn.local> Co-committed-by: bot-backend <bot-backend@gendsgn.local> bot-backend 2026-05-30 20:07:06 +00:00
  • f22ca1f17e fix(tradein): seed sales-vs-listings → StreetDeals в preview (1:1) (#801) (#831) Co-authored-by: bot-backend <bot-backend@gendsgn.local> Co-committed-by: bot-backend <bot-backend@gendsgn.local> bot-backend 2026-05-30 20:04:17 +00:00
  • f7deed096b fix(scrapers): avito per-card parse_failures counter + logging (Refs #823) (#830) Co-authored-by: bot-backend <bot-backend@gendsgn.local> Co-committed-by: bot-backend <bot-backend@gendsgn.local> bot-backend 2026-05-30 20:01:50 +00:00
  • 5a4b1cc3a4 fix(tradein): seed sales-vs-listings → StreetDealsCard рендерится (1:1) (#801) lekss361 2026-05-30 22:58:42 +03:00
  • 3ece1ba339 feat(observability): sentry alert on N consecutive scraper failures (Refs #827) bot-backend 2026-05-30 23:00:05 +03:00
  • e4ad1f8f7a perf(estimator): executemany batch insert in _save_yandex_history_items (Refs #826) bot-backend 2026-05-30 22:58:52 +03:00
  • cbb3c64cd6 fix(tradein): seed sales-vs-listings → StreetDealsCard рендерится (1:1) (#801) feat/801-preview-full-wt lekss361 2026-05-30 22:58:42 +03:00
  • 2739973285 fix(scrapers): COALESCE-backfill listing_date/area_m2 in save_listings ON CONFLICT (Refs #821) (#829) Co-authored-by: bot-backend <bot-backend@gendsgn.local> Co-committed-by: bot-backend <bot-backend@gendsgn.local> bot-backend 2026-05-30 19:58:06 +00:00
  • 20ec4647d3 feat(tradein): ui-preview/estimate — все 17 секций на оффлайн-фикстуре (#801) (#828) Co-authored-by: lekss361 <lekss361@gendsgn.local> Co-committed-by: lekss361 <lekss361@gendsgn.local> lekss361 2026-05-30 19:57:04 +00:00
  • 53130d6a4b fix(scrapers): detect avito HTTP-200 block/captcha page -> raise (Refs #823) bot-backend 2026-05-30 22:51:43 +03:00
  • a34686ac38 feat(tradein): ui-preview/estimate — все 17 секций на оффлайн-фикстуре (#801) lekss361 2026-05-30 22:51:29 +03:00
  • 31d24ffbdb fix(tradein): error/not-found/loading UI при restore по ?id= (#822) (#825) Co-authored-by: bot-frontend <bot-frontend@gendsgn.local> Co-committed-by: bot-frontend <bot-frontend@gendsgn.local> bot-frontend 2026-05-30 19:49:47 +00:00
  • 4b3c67b012 fix(scrapers): COALESCE-backfill listing_date/area_m2 in save_listings ON CONFLICT (Refs #821) bot-backend 2026-05-30 22:49:00 +03:00
  • b8aa77dbe2 fix(tradein): error/not-found/loading UI при restore по ?id= bot-frontend 2026-05-30 22:45:37 +03:00
  • 1a733302c2 Merge pull request 'fix(tradein): import trade-in.css в ui-preview (#801)' (#820) from fix/801-preview-css into main lekss361 2026-05-30 19:34:05 +00:00
  • a357aedb45 fix(tradein): preview обёрнут в .page/.result-col (desktop-раскладка, не «мобильная») (#801) lekss361 2026-05-30 22:30:59 +03:00
  • 553fb6b9c2 fix(tradein): import trade-in.css в ui-preview (страница была без стилей) (#801) lekss361 2026-05-30 22:25:20 +03:00
  • 01593be438 feat(scrapers): route cian sessions through mobile proxy (Refs #806) (#818) Co-authored-by: bot-backend <bot-backend@gendsgn.local> Co-committed-by: bot-backend <bot-backend@gendsgn.local> bot-backend 2026-05-30 19:10:36 +00:00
  • 7bd5a834dc fix(tradein): cian _cianConfig concat-формат + auth из header-frontend (#639) (#819) Co-authored-by: bot-backend <bot-backend@gendsgn.local> Co-committed-by: bot-backend <bot-backend@gendsgn.local> bot-backend 2026-05-30 19:08:01 +00:00
  • d815d7ba83 fixup(scrapers): bind SCRAPER_PROXY_URL via validation_alias + env-binding test (#806) bot-backend 2026-05-30 22:07:53 +03:00
  • 65b7b73691 fix(tradein): cian state-extraction для нового _cianConfig формата + auth из header-frontend (#639) lekss361 2026-05-30 22:04:26 +03:00
  • e5f4e37415 feat(scrapers): route cian sessions through mobile proxy (Refs #806) bot-backend 2026-05-30 22:01:21 +03:00
  • a48205391c Merge pull request 'hotfix(caddy): @uipreview named matcher (fix prod-down crash-loop)' (#817) from hotfix/caddy-uipreview-named-matcher into main lekss361 2026-05-30 18:52:11 +00:00
  • 547ab37597 hotfix(caddy): named matcher @uipreview — handle не принимает несколько inline-путей → caddy crash-loop, прод down (#801) lekss361 2026-05-30 18:52:09 +00:00
  • 2ebfe2352d Merge pull request 'fix(caddy): exempt /trade-in/_next/static/* (ui-preview CSS) (#801)' (#816) from chore/caddy-ui-preview-next-static into main lekss361 2026-05-30 18:47:03 +00:00
  • b779376f9d fix(caddy): exempt /trade-in/_next/static/* too — CSS/JS на ui-preview грузились под auth → 401 (#801) lekss361 2026-05-30 18:47:01 +00:00
  • 7330d10dcc Merge pull request 'chore(tradein): enable /ui-preview on prod (NEXT_PUBLIC_ENABLE_PREVIEW) (#801)' (#813) from chore/enable-ui-preview-prod into main lekss361 2026-05-30 18:40:41 +00:00
  • ae1a35140c ci(tradein): pass NEXT_PUBLIC_ENABLE_PREVIEW=1 to frontend build (#801) lekss361 2026-05-30 18:40:22 +00:00
  • f72edb828a chore(tradein-fe): bake NEXT_PUBLIC_ENABLE_PREVIEW build-arg (#801) lekss361 2026-05-30 18:40:21 +00:00
  • 40a78c3670 Merge pull request 'chore(caddy): exempt /trade-in/ui-preview/* from basic_auth (#801)' (#810) from chore/caddy-ui-preview-exempt into main lekss361 2026-05-30 18:30:16 +00:00
  • c73a79ee6f Merge pull request 'feat(estimator): exclude city-centroid listings from radius analogs (Refs #769 Part E)' (#811) from fix/769-e-geo-centroid into main lekss361 2026-05-30 18:26:39 +00:00
  • 86d98aac30 Merge pull request 'fix(frontend): pilot-only юзер → auto-redirect на /trade-in/ вместо «Доступа нет» (#799)' (#809) from feat/799-pilot-redirect-tradein into main lekss361 2026-05-30 18:23:06 +00:00
  • e195828c7f fix(frontend): pilot-only юзер → auto-redirect на /trade-in/ вместо «Доступа нет» bot-frontend 2026-05-30 21:22:38 +03:00
  • b736d7b7e0 feat(estimator): exclude city-centroid listings from radius analogs (Refs #769 Part E) bot-backend 2026-05-30 21:22:21 +03:00
  • 84f6d57d9d chore(caddy): exempt /trade-in/ui-preview/* from basic_auth (#801) lekss361 2026-05-30 18:21:34 +00:00
  • 654ce7b6c8 fix(frontend): pilot-only юзер → auto-redirect на /trade-in/ вместо «Доступа нет» bot-frontend 2026-05-30 21:18:19 +03:00
  • ae820d3bd9 docs(agents): auto-analyst verify-before-ready + dedup/loop guardrails bot-analyst 2026-05-30 21:15:48 +03:00
  • a7a839b512 Merge pull request 'chore(auth): regenerate praktika pilot password' (#807) from chore/praktika-password into main lekss361 2026-05-30 18:15:28 +00:00
  • a42ca6a014 chore(auth): regenerate praktika pilot password (#635/#659) lekss361 2026-05-30 21:10:09 +03:00
  • 950d0f60de fix(tradein): sweep shared-session (SERP+detail) через mobile proxy (#623) (#805) Co-authored-by: bot-backend <bot-backend@gendsgn.local> Co-committed-by: bot-backend <bot-backend@gendsgn.local> bot-backend 2026-05-30 18:07:37 +00:00
  • 5bf650c843 fix(tradein): route sweep shared-session (SERP+detail) через mobile proxy (#623) lekss361 2026-05-30 21:02:26 +03:00
  • a9e4aecb54 fix(tradein): data-layer tail A2+B+C — trgm index, FDW options, matview refresh (Refs #769) (#804) Co-authored-by: bot-backend <bot-backend@gendsgn.local> Co-committed-by: bot-backend <bot-backend@gendsgn.local> bot-backend 2026-05-30 17:40:54 +00:00
  • dffe1ccc18 fix(tradein): data-layer tail A2+B+C — trgm index, FDW options, matview refresh (Refs #769) bot-backend 2026-05-30 20:38:32 +03:00
  • 046febcae8 feat(tradein): dev/CI preview route for a11y+lighthouse (#801) (#803) Co-authored-by: bot-backend <bot-backend@gendsgn.local> Co-committed-by: bot-backend <bot-backend@gendsgn.local> bot-backend 2026-05-30 17:37:40 +00:00
  • 96491352df feat(tradein): dev/CI preview route for a11y+lighthouse audits (#801) lekss361 2026-05-30 20:35:22 +03:00
  • c76785308b feat(scrapers/n1): извлекать floor/total_floors из ведущего N/M-токена (Refs #795) (#802) Co-authored-by: bot-backend <bot-backend@gendsgn.local> Co-committed-by: bot-backend <bot-backend@gendsgn.local> bot-backend 2026-05-30 17:31:13 +00:00
  • 7eb4d6d255 feat(scrapers/n1): извлекать floor/total_floors из ведущего N/M-токена (Refs #795) bot-backend 2026-05-30 20:27:59 +03:00
  • 4c275e04ea fix(tradein): word-boundary street match + cian unescape robustness (Refs #769 A1+D) (#798) Co-authored-by: bot-backend <bot-backend@gendsgn.local> Co-committed-by: bot-backend <bot-backend@gendsgn.local> bot-backend 2026-05-30 17:18:33 +00:00
  • 87a5de0cae feat(db): quarter_price_index FDW foreign table + monthly refresh (Refs #762) (#797) Co-authored-by: bot-backend <bot-backend@gendsgn.local> Co-committed-by: bot-backend <bot-backend@gendsgn.local> bot-backend 2026-05-30 17:16:28 +00:00
  • 679e75b9e8 fix(tradein): resilience-хвост аудита #770 (findings #25-33) (#793) Co-authored-by: bot-frontend <bot-frontend@gendsgn.local> Co-committed-by: bot-frontend <bot-frontend@gendsgn.local> bot-frontend 2026-05-30 17:13:31 +00:00
  • 10155eb0fb fix(tradein): word-boundary street match + cian unescape robustness (Refs #769 A1+D) bot-backend 2026-05-30 20:13:07 +03:00
  • 76baf8011d feat(db): quarter_price_index FDW foreign table + monthly refresh (Refs #762) bot-backend 2026-05-30 20:13:02 +03:00
  • 5af7542522 fix(tradein): resilience-хвост аудита (#770 findings #26-33 + global-error) bot-frontend 2026-05-30 20:09:16 +03:00
  • a4057a5b28 feat(db): mv_quarter_price_index — quarter price-index из ДКП (Refs #760) (#792) Co-authored-by: bot-backend <bot-backend@gendsgn.local> Co-committed-by: bot-backend <bot-backend@gendsgn.local> bot-backend 2026-05-30 17:05:51 +00:00
  • 2e237d0288 feat(db): mv_quarter_price_index — quarter price-index из ДКП (Refs #760) bot-backend 2026-05-30 20:02:43 +03:00
  • b175ea4225 fix(tradein): санитизация brand.logo_url + валидация brand-цветов (#766) (#791) Co-authored-by: bot-frontend <bot-frontend@gendsgn.local> Co-committed-by: bot-frontend <bot-frontend@gendsgn.local> bot-frontend 2026-05-30 16:58:14 +00:00
  • 3653f020b6 fix(ratio): ppm² потолок asking→sold в конфиг, default 1.2M (Refs #767) (#790) Co-authored-by: bot-backend <bot-backend@gendsgn.local> Co-committed-by: bot-backend <bot-backend@gendsgn.local> bot-backend 2026-05-30 16:57:09 +00:00
  • 38d44f46b7 fix(pdf): brand-spoof + median=0 empty-state + SSRF + дисклеймер + sources (Refs #772) (#789) Co-authored-by: bot-backend <bot-backend@gendsgn.local> Co-committed-by: bot-backend <bot-backend@gendsgn.local> bot-backend 2026-05-30 16:55:56 +00:00
  • 639ab3f63d fix(tradein): санитизация brand.logo_url (safeUrl) + валидация brand-цветов bot-frontend 2026-05-30 19:53:02 +03:00
  • 96027357b5 feat(tradein): Avito mobile proxy egress + firewall detect + MSK date (#623, #726) (#788) Co-authored-by: bot-backend <bot-backend@gendsgn.local> Co-committed-by: bot-backend <bot-backend@gendsgn.local> bot-backend 2026-05-30 16:52:35 +00:00
  • 4d93e5a1aa fix(ratio): ppm² потолок asking→sold в конфиг, default 1.2M (Refs #767) bot-backend 2026-05-30 19:51:18 +03:00
  • 77692b2244 fix(pdf): brand-spoof + median=0 empty-state + SSRF + дисклеймер + sources (Refs #772) bot-backend 2026-05-30 19:51:14 +03:00
  • 147c36d448 feat(tradein): Avito mobile proxy egress + firewall detect + MSK date (#623, #726) lekss361 2026-05-30 19:49:09 +03:00
  • a45d4b3cf4 fix(tradein): MapCard клик по пину + честная ДКП-легенда (#786) (#787) Co-authored-by: bot-frontend <bot-frontend@gendsgn.local> Co-committed-by: bot-frontend <bot-frontend@gendsgn.local> bot-frontend 2026-05-30 16:46:04 +00:00
  • 832a8895e5 fix(tradein): MapCard клик по пину + честная ДКП-легенда bot-frontend 2026-05-30 19:43:06 +03:00
  • 8f2ff10a1c fix(cian): verify_session на curl_cffi impersonate — ban != cookies expired (Refs #768) (#785) Co-authored-by: bot-backend <bot-backend@gendsgn.local> Co-committed-by: bot-backend <bot-backend@gendsgn.local> bot-backend 2026-05-30 16:40:54 +00:00
  • ec84637abf fix(estimator): expected_sold guard listings_clean → median_price>0 (Refs #773) (#784) Co-authored-by: bot-backend <bot-backend@gendsgn.local> Co-committed-by: bot-backend <bot-backend@gendsgn.local> bot-backend 2026-05-30 16:39:08 +00:00
  • 30ae4841a4 fix(scrapers): yandex area из embedded-state JSON (Refs #775) (#783) Co-authored-by: bot-backend <bot-backend@gendsgn.local> Co-committed-by: bot-backend <bot-backend@gendsgn.local> bot-backend 2026-05-30 16:38:12 +00:00
  • fdbd6ed70d fix(tradein): MapPicker через portal в document.body — z-index конфликт с SourcesProgress (#771) (#782) Co-authored-by: bot-frontend <bot-frontend@gendsgn.local> Co-committed-by: bot-frontend <bot-frontend@gendsgn.local> bot-frontend 2026-05-30 16:37:03 +00:00
  • 800bc631bf fix(cian): verify_session на curl_cffi impersonate — ban != cookies expired (Refs #768) bot-backend 2026-05-30 19:35:22 +03:00
  • b547fca673 fix(estimator): expected_sold guard listings_clean → median_price>0 (Refs #773) bot-backend 2026-05-30 19:35:18 +03:00
  • d03c96a79a fix(scrapers): yandex area из embedded-state JSON (Refs #775) bot-backend 2026-05-30 19:35:13 +03:00
  • 52db40cc40 fix(tradein): MapPicker через portal в document.body (z-index конфликт) bot-frontend 2026-05-30 19:34:24 +03:00
  • 238f14a0d7 fix(tradein): account-бренд приоритетен над ?brand= — cross-brand leak (#765) (#780) Co-authored-by: bot-frontend <bot-frontend@gendsgn.local> Co-committed-by: bot-frontend <bot-frontend@gendsgn.local> bot-frontend 2026-05-30 16:29:11 +00:00
  • 489666c735 fix(tradein): avito content-block (HTTP-200) не маскируется под end-of-pagination (Refs #754) (#779) Co-authored-by: bot-backend <bot-backend@gendsgn.local> Co-committed-by: bot-backend <bot-backend@gendsgn.local> bot-backend 2026-05-30 16:28:23 +00:00
  • bcd035034a fix(tradein): SSRF host-allowlist на admin scrape + удалён dead ADMIN_TOKEN (Refs #756) (#778) Co-authored-by: bot-backend <bot-backend@gendsgn.local> Co-committed-by: bot-backend <bot-backend@gendsgn.local> bot-backend 2026-05-30 16:27:19 +00:00
  • 9954f4962f fix(tradein): /sales-vs-listings street_only не house_linked (Refs #757) (#777) Co-authored-by: bot-backend <bot-backend@gendsgn.local> Co-committed-by: bot-backend <bot-backend@gendsgn.local> bot-backend 2026-05-30 16:26:08 +00:00
  • 652e0df10f fix(tradein): cron-scrape.sh log to writable path + graceful tee (Refs #758) (#776) Co-authored-by: bot-backend <bot-backend@gendsgn.local> Co-committed-by: bot-backend <bot-backend@gendsgn.local> bot-backend 2026-05-30 16:25:19 +00:00
  • 5bf26c216f fix(tradein): account-бренд приоритетен над ?brand= (cross-brand leak) bot-frontend 2026-05-30 19:23:06 +03:00
  • 5b430d3ffe fix(tradein): avito content-block (HTTP-200) не маскируется под end-of-pagination (Refs #754) bot-backend 2026-05-30 19:21:35 +03:00
  • 5c559ed0e3 fix(tradein): SSRF host-allowlist на admin scrape + удалён dead ADMIN_TOKEN (Refs #756) bot-backend 2026-05-30 19:21:31 +03:00
  • da2abeac01 fix(tradein): /sales-vs-listings street_only не house_linked (Refs #757) bot-backend 2026-05-30 19:21:28 +03:00
  • 51cbff20f2 fix(tradein): cron-scrape.sh log to writable path + graceful tee (Refs #758) bot-backend 2026-05-30 19:21:26 +03:00
  • 79a79004cf fix(scrapers): stable dedup_hash — drop price_rub + strip URL query (Refs #753) (#761) Co-authored-by: bot-backend <bot-backend@gendsgn.local> Co-committed-by: bot-backend <bot-backend@gendsgn.local> bot-backend 2026-05-30 16:10:27 +00:00
  • f25fa57141 fix(scrapers): stable dedup_hash — drop price_rub + strip URL query (Refs #753) bot-backend 2026-05-30 19:06:03 +03:00