Merge remote-tracking branch 'origin/dev' into sub_laptop_8
- 충돌 시험 셋(717-4 · 719-2 · hopyo build) = 740-1 펼침 단언 + 742-1 저장 수량 단언 합침 - 740-2 일위대가표 풍선 줄의 body(742-1 이 걷은 휘발 셈 몸) → cur Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -308,6 +308,16 @@ class Builder:
|
||||
bid = self.precombo(whole, ref, doc, copies, depth + 1, use)
|
||||
return {"kind": "daega", "key": bid, "name": doc.get("이름") or name,
|
||||
"unit": doc.get("단위") or "", "qty": each} # fmt: skip
|
||||
fz = one.get("굳힌")
|
||||
if isinstance(fz, dict) and fz.get("키"): # 덮개 줄(740-1) = 굳힌 줄 단가산출 대가
|
||||
bid = self.sangeun(
|
||||
whole, {"층": "project", "키": fz["키"]}, _sk_of(one), copies, depth + 1
|
||||
)
|
||||
if bid is None:
|
||||
return {"kind": "blank", "name": name, "qty": each, "why": "덮개 줄을 못 셈"}
|
||||
block = self.blocks[bid] # 블록 = 결과단위(배) 몫 · 수량 = 수량 ÷ 배
|
||||
return {"kind": "daega", "key": bid, "name": block["name"], "unit": block["unit"],
|
||||
"qty": each} # fmt: skip
|
||||
code = str(one.get("로직") or "")
|
||||
if one.get("승격") is not True: # 단가산출 줄 = 산근
|
||||
if not sg.is_money(whole, code):
|
||||
@@ -453,6 +463,36 @@ class Builder:
|
||||
return self.precombo(whole, ref, doc, copies, 1)
|
||||
|
||||
|
||||
def _sk_of(one: dict) -> dict[str, Any]:
|
||||
"""굳힌 덮개 줄(740-1) → 굳힌 SK 꼴(`Builder.sangeun` 이 읽음) — 고름 · 자재표시 = 굳힌 줄 cid ·
|
||||
`원본.덮개` = 그 줄 패치 덮개(원값 = M02 에서 고친 줄의 품셈 값)."""
|
||||
from M02_MasterTemplete import M02_Item_Sangeun as item_sk
|
||||
from M02_MasterTemplete import M02_Sangeun_Doc as sd
|
||||
|
||||
fz = one["굳힌"]
|
||||
ids = sd.line_ids(fz["줄"])
|
||||
keyed = {
|
||||
k: {ids[int(n)]: v for n, v in (fz.get(k) or {}).items() if int(n) < len(ids)}
|
||||
for k in ("고름", "자재표시")
|
||||
}
|
||||
return {
|
||||
"종류": "단가산출",
|
||||
"키": fz["키"],
|
||||
"이름": one.get("별칭") or fz["줄"].get("이름") or "",
|
||||
"단위": "",
|
||||
"바탕": {"로직": fz["키"]},
|
||||
"입력값": fz.get("입력값") or {},
|
||||
**({"켜쌓기율": fz["켜쌓기율"]} if fz.get("켜쌓기율") is not None else {}),
|
||||
**keyed,
|
||||
"덮개": {},
|
||||
"더한줄": [],
|
||||
"뺀줄": [],
|
||||
item_sk.ROW: fz["줄"],
|
||||
"원본": {"덮개": (one.get("패치") or {}).get("덮개") or {}},
|
||||
"정체": list(fz.get("정체") or []),
|
||||
}
|
||||
|
||||
|
||||
def _Loose(whole: Any, read: Any) -> Any:
|
||||
"""B09 SK 속 펼침(723-4) — 사전조합 안 줄 수량 없음 = 0 값묶음(엔진 차례 · 수량만 씀 ·
|
||||
그 줄 값 = B09 사전조합 블록 · 이 공사에서 입력) · 그 밖 까닭은 그대로."""
|
||||
|
||||
Reference in New Issue
Block a user