feat(site-finder): оптимизатор программ — «Как участок сходится» при отрицательном вердикте (#2181) #2222

Merged
bot-backend merged 2 commits from feat/program-optimizer-2181 into main 2026-07-02 20:57:13 +00:00
Showing only changes of commit 9e1dca7885 - Show all commits

View file

@ -6,7 +6,7 @@
кламп floors_grid по max_floors_allowed (10 [5, 9]);
ЕДИНАЯ откалиброванная цена во все комбо (price_per_sqm_used одинакова);
сбой одного комбо не валит грид;
полный вызов быстрый (<100 мс).
полный вызов быстрый (грубый порог 1 с защита от деградации на порядки).
Детерминированно, без LLM / БД.
"""
@ -220,11 +220,17 @@ def test_result_carries_caveat_and_metadata() -> None:
# ── производительность ────────────────────────────────────────────────────────
def test_full_grid_under_100ms() -> None:
"""Полный вызов (12 комбо) укладывается в <100 мс (синхронно в теле запроса)."""
def test_full_grid_fast_enough_for_sync_request() -> None:
"""Полный грид достаточно быстр для синхронного вызова в теле запроса.
Локально 12 комбо 15 мс; порог 1000 мс намеренно грубый ловим
деградацию НА ПОРЯДКИ (случайный I/O, БД, квадратичный взрыв), а не
миллисекунды: на нагруженном shared CI-раннере тот же вызов занимал
199 мс и валил жёсткий порог 100 мс (flaky, run 3917).
"""
kwargs = _big_profitable_kwargs()
start = time.perf_counter()
result = optimize_program(**kwargs)
elapsed_ms = (time.perf_counter() - start) * 1000.0
assert result is not None
assert elapsed_ms < 100.0, f"optimize_program took {elapsed_ms:.1f} ms (>100 ms)"
assert elapsed_ms < 1000.0, f"optimize_program took {elapsed_ms:.1f} ms (>1000 ms)"