d46367da63
docs(readme): refresh to Jun 2026 — Trade-In/Мера + Site Finder v2 + structure + remove debug.log
CI / changes (pull_request) Successful in 7s
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
2026-06-17 23:14:40 +03:00
97fce43484
Merge pull request 'feat(yandex): map rich entity fields (predictedPrice, seller, listing_date, trend, metro)' ( #1725 ) from feat/yandex-rich-fields into main
...
Deploy Trade-In / changes (push) Successful in 10s
Deploy Trade-In / build-frontend (push) Has been skipped
Deploy Trade-In / build-browser (push) Has been skipped
Deploy Trade-In / test (push) Successful in 43s
Deploy Trade-In / build-backend (push) Successful in 58s
Deploy Trade-In / deploy (push) Successful in 42s
Reviewed-on: #1725
2026-06-17 20:03:25 +00:00
f87f3a15d3
Merge pull request 'fix(sql): ALTER TABLE IF EXISTS in migration 162 (deploy red — district_economics absent)' ( #1726 ) from fix/migration-162-table-if-exists into main
Deploy / changes (push) Successful in 8s
Deploy / build-frontend (push) Has been skipped
Deploy / build-backend (push) Successful in 35s
Deploy / build-worker (push) Successful in 36s
Deploy / deploy (push) Successful in 1m41s
2026-06-17 20:02:34 +00:00
d46695ba50
fix(sql): ALTER TABLE IF EXISTS in migration 162 — district_economics absent on main DB (deploy red)
CI / changes (pull_request) Successful in 6s
CI / frontend-tests (pull_request) Has been skipped
CI / openapi-codegen-check (pull_request) Successful in 2m24s
CI / backend-tests (pull_request) Successful in 9m4s
2026-06-17 20:02:06 +00:00
df83e0256b
Merge pull request 'fix(tradein): correct SberIndex hedonic/asking dataset filter dims + 404 warning ( #902 )' ( #1724 ) from fix/sber-dataset-paths-902 into main
Deploy Trade-In / build-frontend (push) Has been skipped
Deploy Trade-In / changes (push) Successful in 7s
Deploy Trade-In / build-browser (push) Has been skipped
Deploy Trade-In / test (push) Successful in 36s
Deploy Trade-In / build-backend (push) Successful in 1m1s
Deploy Trade-In / deploy (push) Successful in 54s
2026-06-17 19:58:48 +00:00
1fe670ea6a
feat(yandex): map rich entity fields (predictedPrice, seller, listing_date, trend, metro)
CI / changes (pull_request) Successful in 6s
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
2026-06-17 22:58:16 +03:00
4ebc271a6c
Merge pull request 'feat(site-finder): РИАСУРТ Свердл 14-layer harvest client+schema+task for ЕКБ agglomeration ( #108 )' ( #1712 ) from feat/riasurt-sverdl-layers-108 into main
Deploy / changes (push) Successful in 8s
Deploy / build-frontend (push) Has been skipped
Deploy / build-backend (push) Successful in 2m27s
Deploy / build-worker (push) Successful in 3m20s
Deploy / deploy (push) Failing after 37s
2026-06-17 19:52:58 +00:00
0a72ef9491
merge main + renumber 163→167 + guard riasurt harvest ( #108 review)
CI / changes (pull_request) Successful in 6s
CI / frontend-tests (pull_request) Has been skipped
CI / openapi-codegen-check (pull_request) Successful in 2m33s
CI / backend-tests (pull_request) Successful in 10m10s
2026-06-17 22:52:15 +03:00
5ca987fcd3
fix(tradein): correct SberIndex hedonic/asking dataset-paths + 404 warning ( #902 )
CI / changes (pull_request) Successful in 6s
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
2026-06-17 22:50:52 +03:00
f25e89767b
Merge pull request 'fix(matching): conflict_resolution picks freshest (last_seen_at) value, deterministic ( #1539 )' ( #1722 ) from fix/conflict-resolution-freshness-1539 into main
Deploy Trade-In / changes (push) Successful in 7s
Deploy Trade-In / build-frontend (push) Has been skipped
Deploy Trade-In / build-browser (push) Has been skipped
Deploy Trade-In / test (push) Successful in 31s
Deploy Trade-In / build-backend (push) Successful in 54s
Deploy Trade-In / deploy (push) Successful in 58s
2026-06-17 19:49:51 +00:00
ddf4873874
fix(riasurt): renumber migration 163→167 + guard quarterly harvest behind flag ( #108 review)
2026-06-17 22:45:23 +03:00
13db14c8c9
Merge pull request 'feat(objective): diff-gated objective_lots_history writer trigger ( #307 OBJ-6)' ( #1719 ) from feat/objective-lots-history-writer-307-obj6 into main
Deploy / changes (push) Successful in 6s
Deploy / build-backend (push) Successful in 31s
Deploy / build-frontend (push) Has been skipped
Deploy / build-worker (push) Successful in 37s
Deploy / deploy (push) Failing after 41s
2026-06-17 19:44:25 +00:00
f30f6acbf7
fix(matching): conflict_resolution picks freshest (last_seen_at) value, deterministic ( #1539 )
CI / changes (pull_request) Successful in 8s
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
2026-06-17 22:43:59 +03:00
e4cc2d9625
chore(sql): renumber objective history writer migration 164→166 (avoid collision)
CI / changes (pull_request) Successful in 7s
CI / frontend-tests (pull_request) Has been skipped
CI / openapi-codegen-check (pull_request) Failing after 1m47s
CI / backend-tests (pull_request) Failing after 9m16s
2026-06-17 22:43:55 +03:00
81e708b953
Merge pull request 'feat(sql): sales-tracker velocity + absorption MVs for Site Finder ( #61 )' ( #1711 ) from feat/velocity-mv-61 into main
Deploy / deploy (push) Blocked by required conditions
Deploy / changes (push) Successful in 8s
Deploy / build-frontend (push) Has been skipped
Deploy / build-backend (push) Has been cancelled
Deploy / build-worker (push) Has been cancelled
2026-06-17 19:43:14 +00:00
8a24b057ac
Merge pull request 'fix(site-finder): gate velocity on confidence of objective_complex_mapping ( #307 OBJ-2)' ( #1720 ) from fix/objective-mapping-is-reviewed-gate-307-obj2 into main
Deploy / changes (push) Waiting to run
Deploy / build-backend (push) Blocked by required conditions
Deploy / build-worker (push) Blocked by required conditions
Deploy / build-frontend (push) Blocked by required conditions
Deploy / deploy (push) Blocked by required conditions
2026-06-17 19:43:04 +00:00
45d8e9e4a5
Merge pull request 'fix(cian): persist detail rich fields (description) + stamp detail_enriched_at' ( #1718 ) from fix/cian-detail-rich-fields into main
Deploy Trade-In / changes (push) Successful in 8s
Deploy Trade-In / build-frontend (push) Has been skipped
Deploy Trade-In / build-browser (push) Has been skipped
Deploy Trade-In / test (push) Successful in 36s
Deploy Trade-In / build-backend (push) Successful in 1m3s
Deploy Trade-In / deploy (push) Successful in 52s
2026-06-17 19:42:58 +00:00
f6b3aad03d
Merge pull request 'test(etl): fix stale assert in objective_backfill dry_run test ( #1709 systemic CI red)' ( #1721 ) from fix/objective-backfill-test-1709 into main
...
Deploy / build-backend (push) Blocked by required conditions
Deploy / build-worker (push) Blocked by required conditions
Deploy / build-frontend (push) Blocked by required conditions
Deploy / deploy (push) Blocked by required conditions
Deploy / changes (push) Successful in 7s
Reviewed-on: #1721
2026-06-17 19:40:00 +00:00
65b0c02b85
test(etl): fix stale assert in objective_backfill dry_run test ( #1709 )
...
CI / changes (pull_request) Successful in 12s
CI / frontend-tests (pull_request) Has been skipped
CI / openapi-codegen-check (pull_request) Successful in 2m1s
CI / backend-tests (pull_request) Successful in 8m56s
backend-tests падал СИСТЕМНО на каждом PR на
test_auto_apply_matches_dry_run_no_inserts (assert 1 == 0).
Root cause: аудит-коммит 14f3ef20 (#1660 ) намеренно изменил
auto_apply_matches — dry_run теперь возвращает projected-счётчики
(auto_accepted=len(auto), сколько БЫ приняли — смысл preview в
admin_etl endpoint'е), но тест в том же коммите не обновили, он
остался с assert auto_accepted == 0.
Функция корректна (dry_run делает ранний return до db.execute/commit —
execute.assert_not_called() валиден). Правлю устаревшую ассерцию:
== 0 → == 1 (кандидат 0.95 >= AUTO_ACCEPT_THRESHOLD 0.85), + assert skipped == 0.
Полный сьют: 3277 passed, 0 failed.
Refs #1709
2026-06-17 22:38:44 +03:00
2cf6261005
chore(sql): renumber sales-tracker MV migration 161→164 (avoid collision)
CI / changes (push) Successful in 9s
CI / changes (pull_request) Successful in 7s
CI / frontend-tests (push) Has been skipped
CI / openapi-codegen-check (push) Failing after 1m49s
CI / frontend-tests (pull_request) Has been skipped
CI / openapi-codegen-check (pull_request) Failing after 1m39s
CI / backend-tests (push) Failing after 8m57s
CI / backend-tests (pull_request) Failing after 9m6s
2026-06-17 22:36:39 +03:00
5b8ee994d5
Merge pull request 'feat(tradein): segment=vtorichka|novostroyki|all on listings search ( #1188 )' ( #1710 ) from feat/listings-segment-param-1188 into main
Deploy Trade-In / changes (push) Successful in 11s
Deploy Trade-In / build-frontend (push) Has been skipped
Deploy Trade-In / build-browser (push) Has been skipped
Deploy Trade-In / test (push) Successful in 37s
Deploy Trade-In / build-backend (push) Successful in 1m1s
Deploy Trade-In / deploy (push) Successful in 45s
2026-06-17 19:34:50 +00:00
931a57ac59
Merge pull request 'feat(yandex): ingest novostroyki via gate-API newFlat=YES' ( #1715 ) from feat/yandex-novostroyki-newflat into main
Deploy Trade-In / changes (push) Waiting to run
Deploy Trade-In / test (push) Blocked by required conditions
Deploy Trade-In / build-backend (push) Blocked by required conditions
Deploy Trade-In / build-frontend (push) Blocked by required conditions
Deploy Trade-In / build-browser (push) Blocked by required conditions
Deploy Trade-In / deploy (push) Blocked by required conditions
2026-06-17 19:34:32 +00:00
9585f7fc16
Merge pull request 'fix(avito): classify novostroyki by item-development-name marker; map переуступка sale_type' ( #1716 ) from fix/avito-novostroyki-segment into main
Deploy Trade-In / changes (push) Waiting to run
Deploy Trade-In / test (push) Blocked by required conditions
Deploy Trade-In / build-backend (push) Blocked by required conditions
Deploy Trade-In / build-frontend (push) Blocked by required conditions
Deploy Trade-In / build-browser (push) Blocked by required conditions
Deploy Trade-In / deploy (push) Blocked by required conditions
2026-06-17 19:34:27 +00:00
24615b96c1
fix(site-finder): gate velocity on is_reviewed objective_complex_mapping ( #307 OBJ-2)
CI / changes (pull_request) Successful in 6s
CI / frontend-tests (pull_request) Has been skipped
CI / openapi-codegen-check (pull_request) Failing after 2m23s
CI / backend-tests (pull_request) Failing after 9m12s
2026-06-17 22:32:52 +03:00
fe805ea528
fix(cian): persist detail rich fields (description/kitchen/ceiling) + stamp detail_enriched_at
CI / changes (pull_request) Successful in 6s
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
2026-06-17 22:32:18 +03:00
3a3f934bac
feat(objective): diff-gated objective_lots_history writer trigger ( #307 OBJ-6)
CI / changes (pull_request) Successful in 9s
CI / frontend-tests (pull_request) Has been skipped
CI / openapi-codegen-check (pull_request) Failing after 2m24s
CI / backend-tests (pull_request) Failing after 9m11s
2026-06-17 22:31:51 +03:00
1de2ef2abf
Merge pull request 'fix(frontend): regen api-types.ts — POI-score fields ( #1709 systemic CI red)' ( #1714 ) from fix/api-types-poiscore-drift-1709 into main
...
Deploy / deploy (push) Blocked by required conditions
Deploy / changes (push) Successful in 8s
Deploy / build-backend (push) Has been skipped
Deploy / build-worker (push) Has been skipped
Deploy / build-frontend (push) Successful in 5m43s
Reviewed-on: #1714
2026-06-17 19:31:49 +00:00
73f47da2f9
Merge pull request 'ci: cache uv + skip dev deps to speed up gate jobs ( #1709 )' ( #1717 ) from ci/cache-uv-speed-gates-1709 into main
...
Reviewed-on: #1717
2026-06-17 19:31:35 +00:00
4e8086cc1f
ci: cache uv + skip dev deps to speed up gate jobs ( #1709 )
...
CI / changes (pull_request) Successful in 6s
CI / frontend-tests (pull_request) Successful in 47s
CI / openapi-codegen-check (pull_request) Failing after 2m29s
CI / backend-tests (pull_request) Failing after 9m35s
backend-tests и openapi-codegen-check тратят ~90% времени не на работу
(дамп схемы + pytest), а на пересборку окружения с нуля каждый прогон.
Доминанта — 'uv sync --frozen' тянет весь geo/WeasyPrint-стек заново, т.к.
~/.cache/uv не кэшировался между прогонами (npm уже кэширован setup-node).
Изменения:
- Cache uv (~/.cache/uv) через actions/cache в обоих job, ключ по backend/uv.lock,
restore-keys для частичного хита. continue-on-error → сбой cache-бэкенда
раннера не ломает gate.
- openapi-codegen-check: 'uv sync --frozen --no-dev' — job только импортирует
app.main для дампа OpenAPI, dev-группа (pytest/ruff/coverage) не нужна.
Dockerfile тоже --no-dev, поэтому импорт гарантирован.
Refs #1709
2026-06-17 22:29:33 +03:00
22a7a3f086
fix(avito): classify novostroyki by item-development-name marker; map переуступка sale_type
CI / changes (pull_request) Successful in 6s
CI / backend-tests (pull_request) Has been skipped
CI / openapi-codegen-check (pull_request) Has been skipped
CI / frontend-tests (pull_request) Has been skipped
2026-06-17 22:24:13 +03:00
bc4c6852a1
feat(yandex): ingest novostroyki via gate-API newFlat=YES
CI / changes (pull_request) Successful in 7s
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
2026-06-17 22:22:17 +03:00
d44f78c33e
fix(frontend): regen api-types.ts — add POI-score fields ( #1709 )
...
CI / changes (pull_request) Successful in 6s
CI / backend-tests (pull_request) Has been skipped
CI / frontend-tests (pull_request) Successful in 47s
CI / openapi-codegen-check (pull_request) Successful in 3m7s
openapi-codegen-check падал СИСТЕМНО на каждом backend-PR: committed
frontend/src/lib/api-types.ts отставал от backend OpenAPI на 2 поля,
добавленных в POI-score схемы (PR ~#1486 normalize POI weighted score),
но не перегенерённых:
- PoiScoreItem.score_contribution
- PoiScoreResponse.poi_weighted_score
Контент взят 1:1 из authoritative CI-диффа (openapi-typescript + prettier).
Возвращает gate openapi-codegen-check в зелёное для всех PR.
Refs #1709
2026-06-17 22:22:02 +03:00
57800b24e9
Merge pull request 'ci: drop push-on-feature-branch trigger to kill duplicate CI runs ( #1709 )' ( #1713 ) from fix/ci-dedup-runner-storm-1709 into main
2026-06-17 19:16:06 +00:00
7f732ff24d
ci: drop push-on-feature-branch trigger to kill duplicate CI runs ( #1709 )
...
CI / changes (pull_request) Successful in 6s
CI / frontend-tests (pull_request) Successful in 59s
CI / openapi-codegen-check (pull_request) Failing after 1m42s
CI / backend-tests (pull_request) Failing after 8m50s
Каждый коммит в ветку с открытым PR триггерил ДВА прогона ci.yml на один
SHA: push-событие (github.ref=refs/heads/<branch>) и pull_request-событие
(github.ref=refs/pull/<N>/merge). Разный github.ref → разные concurrency-
группы → прогоны не отменяли друг друга → 2x нагрузка на и так дефицитные
2 раннера (CI-шторм 2026-06-17, деплой tradein #1699 простоял 17 мин).
В bot-пайплайне каждый коммит идёт через PR, поэтому pull_request гейтит
его полностью; push-прогон был чистым дублем. Оставляю только pull_request:
теперь github.ref стабилен на весь PR и concurrency cancel-in-progress
корректно отменяет superseded-прогоны при новом пуше.
Refs #1709
2026-06-17 22:09:01 +03:00
31e316e04e
feat(site-finder): РИАСУРТ Свердл 14-layer harvest client+schema+task for ЕКБ agglomeration ( #108 )
CI / changes (push) Successful in 7s
CI / changes (pull_request) Successful in 6s
CI / frontend-tests (push) Has been cancelled
CI / openapi-codegen-check (push) Has been cancelled
CI / backend-tests (push) Has been cancelled
CI / backend-tests (pull_request) Has been cancelled
CI / frontend-tests (pull_request) Has been cancelled
CI / openapi-codegen-check (pull_request) Has been cancelled
2026-06-17 21:49:04 +03:00
96a9c575b4
feat(sql): sales-tracker velocity + absorption MVs for Site Finder ( #61 )
CI / changes (push) Successful in 7s
CI / changes (pull_request) Successful in 9s
CI / frontend-tests (push) Has been skipped
CI / openapi-codegen-check (push) Failing after 1m43s
CI / frontend-tests (pull_request) Has been cancelled
CI / openapi-codegen-check (pull_request) Has been cancelled
CI / backend-tests (push) Failing after 8m50s
CI / backend-tests (pull_request) Failing after 8m43s
2026-06-17 21:48:11 +03:00
0fb70f2f90
Merge pull request 'fix(sql): EMISS PK includes period_type so yearly+Q1 coexist ( #1606 follow-up)' ( #1706 ) from fix/emiss-pk-granularity-1687 into main
Deploy / changes (push) Successful in 7s
Deploy / build-backend (push) Successful in 1m45s
Deploy / build-frontend (push) Has been skipped
Deploy / deploy (push) Has been cancelled
Deploy / build-worker (push) Has been cancelled
2026-06-17 18:46:00 +00:00
2659600374
fix(sql): emiss backfill period_type='quarter' to match scraper ( #1606 review)
CI / changes (push) Successful in 9s
CI / changes (pull_request) Successful in 7s
CI / frontend-tests (push) Has been skipped
CI / openapi-codegen-check (push) Failing after 1m37s
CI / frontend-tests (pull_request) Has been skipped
CI / openapi-codegen-check (pull_request) Failing after 1m35s
CI / backend-tests (push) Failing after 8m53s
CI / backend-tests (pull_request) Failing after 8m41s
2026-06-17 21:45:12 +03:00
b64334d7bd
feat(tradein): segment=vtorichka|novostroyki|all query-param on listings ( #1188 )
CI / backend-tests (push) Has been cancelled
CI / frontend-tests (push) Has been cancelled
CI / openapi-codegen-check (push) Has been cancelled
CI / changes (push) Has been cancelled
CI / changes (pull_request) Successful in 6s
CI / backend-tests (pull_request) Has been skipped
CI / frontend-tests (pull_request) Has been cancelled
CI / openapi-codegen-check (pull_request) Has been cancelled
2026-06-17 21:43:01 +03:00
8022be6b2f
Merge pull request 'fix(leads): replace ::interval cast with make_interval (psycopg v3 trap) ( #1383 follow-up)' ( #1707 ) from fix/admin-leads-interval-cast-1694 into main
Deploy / changes (push) Successful in 7s
Deploy / build-backend (push) Has been cancelled
Deploy / build-worker (push) Has been cancelled
Deploy / build-frontend (push) Has been cancelled
Deploy / deploy (push) Has been cancelled
2026-06-17 18:42:11 +00:00
16990af11c
Merge pull request 'docs(estimator): DKP corridor described as P10/P90 not min/max in schema+TS ( #1520 follow-up)' ( #1708 ) from fix/dkp-corridor-doc-p10p90-1695 into main
Deploy / changes (push) Waiting to run
Deploy / build-backend (push) Blocked by required conditions
Deploy / build-worker (push) Blocked by required conditions
Deploy / build-frontend (push) Blocked by required conditions
Deploy / deploy (push) Blocked by required conditions
Deploy Trade-In / changes (push) Successful in 7s
Deploy Trade-In / test (push) Has been cancelled
Deploy Trade-In / build-backend (push) Has been cancelled
Deploy Trade-In / build-frontend (push) Has been cancelled
Deploy Trade-In / build-browser (push) Has been cancelled
Deploy Trade-In / deploy (push) Has been cancelled
2026-06-17 18:42:10 +00:00
584aa46f6f
Merge pull request 'fix(admin-scrape): ge=1 on /failures limit + enforce LLM finish_reason' ( #1701 ) from fix/admin-scrape-validation into main
Deploy / changes (push) Waiting to run
Deploy / build-backend (push) Blocked by required conditions
Deploy / build-worker (push) Blocked by required conditions
Deploy / build-frontend (push) Blocked by required conditions
Deploy / deploy (push) Blocked by required conditions
2026-06-17 18:35:35 +00:00
6bf1042171
Merge pull request 'fix(llm): word-boundary INN match, tighten edge cases ( #1640 follow-up)' ( #1703 ) from fix/inn-regex-word-boundary-1682 into main
Deploy / changes (push) Waiting to run
Deploy / build-backend (push) Blocked by required conditions
Deploy / build-worker (push) Blocked by required conditions
Deploy / build-frontend (push) Blocked by required conditions
Deploy / deploy (push) Blocked by required conditions
2026-06-17 18:34:52 +00:00
3d2d6d5da2
Merge pull request 'fix(exporters): annotate scenario deficit horizon in excel too ( #1590 follow-up)' ( #1702 ) from fix/excel-deficit-horizon-1590 into main
Deploy / changes (push) Waiting to run
Deploy / build-backend (push) Blocked by required conditions
Deploy / build-worker (push) Blocked by required conditions
Deploy / build-frontend (push) Blocked by required conditions
Deploy / deploy (push) Blocked by required conditions
2026-06-17 18:34:47 +00:00
9e6b0b1786
Merge pull request 'fix(weather): wind_d returns None when no valid samples, not fabricated 0.0°' ( #1700 ) from fix/weather-wind-d-allnone into main
Deploy / changes (push) Waiting to run
Deploy / build-backend (push) Blocked by required conditions
Deploy / build-worker (push) Blocked by required conditions
Deploy / build-frontend (push) Blocked by required conditions
Deploy / deploy (push) Blocked by required conditions
2026-06-17 18:34:45 +00:00
be33faf73e
Merge pull request 'fix(scrapers): narrow domrf Level-1 status badge-class regex ( #1609 follow-up)' ( #1704 ) from fix/domrf-badge-regex-narrow-1686 into main
Deploy / changes (push) Waiting to run
Deploy / build-backend (push) Blocked by required conditions
Deploy / build-worker (push) Blocked by required conditions
Deploy / build-frontend (push) Blocked by required conditions
Deploy / deploy (push) Blocked by required conditions
2026-06-17 18:34:32 +00:00
ae6d86d9cc
Merge pull request 'test(site-finder): cover is_residential_zone raw_props/subcategory branch ( #1353 follow-up)' ( #1705 ) from test/residential-zone-rawprops-1681 into main
Deploy / build-backend (push) Blocked by required conditions
Deploy / build-worker (push) Blocked by required conditions
Deploy / deploy (push) Blocked by required conditions
Deploy / changes (push) Waiting to run
Deploy / build-frontend (push) Blocked by required conditions
2026-06-17 18:34:30 +00:00
e5d78b5e53
Merge pull request 'feat(yandex): route gate-API fetch through camoufox (sustainable, no proxy burn)' ( #1699 ) from feat/yandex-camoufox-transport into main
Deploy Trade-In / changes (push) Waiting to run
Deploy Trade-In / test (push) Blocked by required conditions
Deploy Trade-In / build-backend (push) Blocked by required conditions
Deploy Trade-In / build-browser (push) Blocked by required conditions
Deploy Trade-In / deploy (push) Blocked by required conditions
Deploy Trade-In / build-frontend (push) Blocked by required conditions
2026-06-17 18:28:50 +00:00
c514b992ee
Merge pull request 'fix(site-finder): remove dead sat_factor (computed+written, never applied) ( #1509 )' ( #1698 ) from fix/score-sat-factor-1509 into main
Deploy / changes (push) Waiting to run
Deploy / build-backend (push) Blocked by required conditions
Deploy / build-worker (push) Blocked by required conditions
Deploy / build-frontend (push) Blocked by required conditions
Deploy / deploy (push) Blocked by required conditions
2026-06-17 18:28:45 +00:00
5170107405
fix(sql): EMISS PK includes period_type so yearly+Q1 coexist ( #1606 follow-up)
...
CI / backend-tests (push) Has been cancelled
CI / frontend-tests (push) Has been cancelled
CI / openapi-codegen-check (push) Has been cancelled
CI / changes (push) Has been cancelled
CI / changes (pull_request) Successful in 6s
CI / backend-tests (pull_request) Has been cancelled
CI / frontend-tests (pull_request) Has been cancelled
CI / openapi-codegen-check (pull_request) Has been cancelled
Adds period_type TEXT NOT NULL DEFAULT 'unknown' to macro_indicator and
widens the PRIMARY KEY to (indicator_type, region, obs_date, period_type).
Before: yearly aggregate ('год'→obs_date YYYY-01-01) and Q1 ('I квартал'→
same date) shared the same PK slot → ON CONFLICT DO UPDATE made them
overwrite each other despite the in-memory dedup fix in #1687 .
After: each EmissRow carries period_type from _emiss_period_granularity
('year'/'quarter'/'month'); DB ON CONFLICT targets include it, so
yearly+Q1 rows genuinely coexist.
Non-EMISS sources (CBR, rosstat open-data, domrf) use period_type='unknown'
(literal in SQL) — they are disambiguated by obs_date already, so the
wider PK is backward-compatible. All ON CONFLICT clauses in
cbr_macro_sync.py and rosstat_macro_sync.py updated accordingly.
Migration: 163_emiss_pk_period_type.sql (idempotent BEGIN/COMMIT).
Tests: 49 passed (emiss + rosstat suite), ruff clean, py_compile OK.
2026-06-17 21:27:34 +03:00