feat(master_data): 모래·자갈 단위중량 계수표와 레미콘 강도·슬럼프 설계 입력
- 계수 CC000337 「재료의 단위중량」(건설품셈 공통 1-2-4 3) — 원문 표 47줄을 「아래」·「위」 두 값 칸으로 폄
- GF000156·GF000157 — 「모래상태」·「자갈상태」·「모래단위중량」·「자갈단위중량」·「자재지역」 입력 · 중간 밀도로 kg 호표를 ㎥ 로 환산(0 이면 고른 상태의 표 위끝)
- 레미콘 14줄 — 품셈재료 MP000001 을 고르기 조건 {레미콘 · 규격 "{굵은골재최대치수}-{강도}-{슬럼프}"} 로 바꾸고 설계 입력 셋 추가 · 부르는 GF000170·GF000171 에 넘김
- 엔진 — 덧줄에서 `줄.'호표 줄 이름'` 으로 그 줄 금액을 집음(GF000185 콘크리트다짐)
- 일괄 시험 계산 통과 1,279 → 1,291 · 멈춤 75 → 63 · 단위 경고 14 그대로 · 틀 0 · 로직 0
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JgUhN55Z3BCYhUJTjwTNfj
This commit is contained in:
@@ -509,6 +509,8 @@ def run(master: Master, ref: str, given: dict, depth: int = 0) -> dict:
|
||||
**({"출처": source} if source else {}),
|
||||
}
|
||||
)
|
||||
# 덧줄이 호표 줄 금액 하나를 빼고 더할 수 있게 — `줄.'호표 줄 이름'`
|
||||
env["줄"] = {item["이름"]: item["금액"] for item in lines if item["이름"]}
|
||||
for extra in row.get("덧줄", []):
|
||||
env.update(sums)
|
||||
value = evaluate(parse(extra["식"]), env, master, depth)
|
||||
@@ -671,7 +673,7 @@ def check_logic(master: Master, row: dict) -> tuple[list[str], set]:
|
||||
group = mk.GROUP_OF.get(mk.id_of(str(item["요소"])))
|
||||
if item.get("종류") != "로직" and group != item.get("종류"):
|
||||
out.append(f"{where} · 요소 그룹이 종류와 다름")
|
||||
names = known | set(COST_ITEMS)
|
||||
names = known | set(COST_ITEMS) | {"줄"} # 「줄」 = 호표 줄 금액 묶음(덧줄에서만)
|
||||
for extra in row.get("덧줄", []):
|
||||
one(extra["식"], f"{key} 덧줄 {extra['이름']}", names)
|
||||
names = names | {extra["이름"]}
|
||||
|
||||
Reference in New Issue
Block a user