|
All checks were successful
CI Trade-In / changes (pull_request) Successful in 8s
CI / changes (pull_request) Successful in 10s
CI Trade-In / backend-tests (pull_request) Has been skipped
CI Trade-In / browser-tests (pull_request) Has been skipped
CI Trade-In / frontend-checks (pull_request) Has been skipped
CI / frontend-tests (pull_request) Has been skipped
CI / openapi-codegen-check (pull_request) Successful in 1m53s
CI / backend-tests (pull_request) Successful in 17m21s
Каждое проверено против кода или прод-данных, а не переписано по впечатлению. 1. macro_coefficient:99 — «СУММА backed-весов = 0.45». С #946 inflation стал backed-каналом с весом 0.08: 0.18+0.12+0.10+0.05+0.08 = 0.53. Сумму не обновили. 2. macro_series:305 и 3. sales_series:496 — оба обещали пустой результат «при months_back < 0». Код клампит через max(0, months_back), поэтому сетка всегда содержит текущий месяц. Проверено прогоном: months_back=-5 → 1 месяц. Документировалось поведение, которого нет. 4. analytics_queries._velocity_baseline — «objective_corpus_room_month.district matches domrf_kn_objects.district_name». Неверно, и соседний _elasticity_coef описывает ту же колонку правильно (МИКРО-вокабуляр). Замер прода: district (микро) Академический, ВИЗ, Юго-Западный, Уктус, Втузгородок… district_name (админ) Академический, Чкаловский, Верх-Исетский, Ленинский… Из 8 админ-имён в микро-колонке встречаются 4, и с меньшим объёмом (Ленинский 55 точек против 621 у Академического; Чкаловский и Верх-Исетский — ноль). Вызывающий передаёт админ-имя. Резолв admin→micros тут НЕ делаю — это отдельная задача; docstring лишь перестаёт утверждать обратное. 5. nspd_denorm.denorm_dump — «Caller отвечает за commit/close», при том что функция сама вызывает db.commit() на 373. Вызывающий, понадеявшийся обернуть это в свою транзакцию, получил бы уже зафиксированные строки. 6. nspd_client.search_by_quarter — смета «6/11/22 запроса, ~3.6с/~6.6с/~13с». Фактически три из пяти core-слоёв и ВСЕ zouit/risk идут grid-walk'ом по 49 запросов: 150/395/934 запроса, ~90с/~237с/~560с. Занижение в 25-42 раза, и это не безобидно: по такой оценке слои включают не задумываясь, а объём запросов здесь — прямой фактор WAF-риска (ср. #2956, где НСПД сейчас отдаёт 403 на IP VPS). Два из шести чисел проверяемы автоматически, и на них поставлен гейт: сумма backed-весов сверяется с константами, смета запросов — с _GRID_WALK_LAYERS. Мутационно проверен: вернуть 0.45 → красный, изменить вес канала не тронув комментарий → красный, вернуть 6/11/22 → красный, контроль → 3 passed rc=0. Плюс контроль на сам гейт: если _GRID_WALK_LAYERS опустеет, расчёт совпал бы с любой мелкой цифрой тавтологически. Прогоны: tests/services — 3116 passed rc=0. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| __init__.py | ||
| cbr_macro.py | ||
| documents.py | ||
| domrf_catalog.py | ||
| domrf_catalog_object.py | ||
| domrf_kn.py | ||
| ekb_geoportal_client.py | ||
| ekb_krt_registry.py | ||
| ekb_ppt_tep_parser.py | ||
| ekburg_permits.py | ||
| flat_plans.py | ||
| gisogd66.py | ||
| gisogd_so_client.py | ||
| izyatie_client.py | ||
| izyatie_ocr.py | ||
| nspd_client.py | ||
| nspd_denorm.py | ||
| nspd_lite.py | ||
| obj_checks.py | ||
| objective.py | ||
| okn_egrkn_client.py | ||
| page_reservation_parser.py | ||
| pravo_gov66_client.py | ||
| rosstat_emiss.py | ||
| stealth.py | ||