Merge remote-tracking branch 'origin/sub_laptop_5' into sub_laptop_2

# Conflicts:
#	B04_PreProcess/B04_PreProcess_Router_Basins.py
#	B08_Quantity/B08_Quantity_Router_Summary.py
This commit is contained in:
2026-10-09 15:54:20 +09:00
25 changed files with 762 additions and 122 deletions
+15 -2
View File
@@ -422,9 +422,11 @@ class Expand:
from M02_MasterTemplete import M02_Labor_Doc as labor
lines = [one for one in doc.get("담은로직") or [] if isinstance(one, dict)]
kept = doc.get("알약") # 프로젝트 참조사본 = 가져온 때 굳힌 알약(142-2) · 층 = 지금 M01
pills = kept if isinstance(kept, list) else None
by_logic = {
code: pill
for pill in combo_store.combo_pills({"담은로직": lines})["물량"]
for pill in pills or combo_store.combo_pills({"담은로직": lines})["물량"]
for code in pill["로직"]
}
inner, rows, why = [], [], None
@@ -478,13 +480,24 @@ def frozen(doc: dict[str, Any]) -> dict[str, dict[str, Any]]:
continue
got = read_ref(ref)
if got is not None:
out[ref_id(ref)] = got
out[ref_id(ref)] = with_pills(got)
walk(got.get("담은로직"), depth + 1)
walk(doc.get("담은로직"), 1)
return out
def with_pills(doc: dict[str, Any]) -> dict[str, Any]:
"""사전조합 굳힘 — 안 로직 줄 알약(배 · 단위)도 그때 M01 값으로(142-2 · 사본 셈이 지금 M01 을
안 읽게)."""
if doc.get("종류") != TITLE["precombo"]:
return doc
from M01_MasterData import M01_MasterData_Store_Combo as combo_store
lines = [one for one in doc.get("담은로직") or [] if isinstance(one, dict)]
return {**doc, "알약": combo_store.combo_pills({"담은로직": lines})["물량"]}
def frozen_logics(copies: dict[str, Any]) -> list[str]:
"""굳힌 단가승격 · 사전조합이 담은 로직 키 — 프로젝트 단가 묶음에 넣음."""
return [