Let the floor fall back to deterministic places when an axis has no semantic critic so the reconnaissance axis gets a threshold instead of silently buying nothing

This commit is contained in:
heaven 2026-08-14 21:08:25 +03:00
parent ce33a8bcac
commit 7d0f133247

View file

@ -749,8 +749,14 @@ def cmd_floor() -> None:
# у текущей пары. Прежняя редакция звала `ФД-A` и `units_zh()` безусловно, то есть на
# английской оси купила бы китайский пол в китайскую кассу — и порог оси считался бы по
# чужому шуму. Критик-арм передаётся, потому что у осей он называется по-разному.
crit_arm = "A3" if pair().key == "zh-ru" else "E3"
led = MONEY.Guarded(phase_of(crit_arm))
# ⚠ Источник мест зависит от того, ЕСТЬ ли у оси смысловой критик. У японской разведки его
# нет (панель — связка и однопроходка), и `critic_places` там возвращает пусто на КАЖДОЙ
# единице: пол молча не покупается, а прогон завершается успехом. Проверено исполнением
# 14.08 — японский пол вышел 0 из 18, и это выглядело как «купили», а не как «нечего купить».
P = pair()
crit_arm = {"zh-ru": "A3", "en-ru": "E3"}.get(P.key)
ref_arm = crit_arm or {"ja-ru": "J2"}[P.key]
led = MONEY.Guarded(phase_of(ref_arm))
src_units = ([u for u in P22.M.units_zh() if u["uid"] not in EXCLUDED]
if pair().key == "zh-ru" else units_ok())
for u in src_units:
@ -758,12 +764,12 @@ def cmd_floor() -> None:
draft = base_draft(uid)
if not draft.strip():
continue
places, _ = critic_places(crit_arm, uid)
places = (critic_places(crit_arm, uid)[0] if crit_arm else flags_of(u, draft))
if not places:
print(f" {uid}: мест нет — единица в пол не идёт")
continue
for half in ("flo1", "flo2"):
tg = f"dv-{phase_letter(crit_arm)}-{half}-{uid}"
tg = f"dv-{phase_letter(ref_arm)}-{half}-{uid}"
if (OUT / f"{tg}.json").exists():
continue
_buy(led, tg, fix_msgs(src, draft, places),