feat(master_data): 건설품셈 공통 5장 로직 35개 — 기초공사

- 로직_건설품셈_공통5장.json: 흙막이(마대 · H-Beam · 흙막이판 · 앵커 · 복공판 · 기준틀) · 지반개량(매트 · 고압분사 · PBD · 다짐말뚝) · 말뚝(기성 · 천공 · 두부정리 · 현장타설) · 차수재
- 장비조립·해체 = 인력·크레인 × (조립 + 해체 소요일수) · 본당 작업소요시간 = 지층별 연장 입력 × 굴착시간 표 · 편성 × T
- 부속장비·소모자재 = 인력편성 노무비 × 표 요율 · 공구손료율은 그룹 계수 표에서 찾기
- 8장: 연료 없는 기종 경비 로직 새로(공기식 크롤러드릴) · 기계 고르기 더함
- 재료_자체: 매트 · P.P로프 · 모래주머니 · 철근 19㎜ · 드레인 보드 · 차수재
- 식 엔진: 찾기·로직 머리는 「,」「)」에서만 끊음(표 이름 「P.P마대」)
- 막힘: 5-1-7 인장(「중급기술자」 노임 요소 없음) · 5-2-1 수중부설(「잠수조」 구성 원문 없음)

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01V1MKKZKpUHTPKb513FneU8
This commit is contained in:
2026-09-19 17:56:12 +09:00
co-authored by Claude Opus 5
parent 7f4fe9a8f5
commit 7fe462f972
5 changed files with 5351 additions and 13 deletions
@@ -122,8 +122,9 @@ class _Parser:
self.i = m.end()
return m.group()
def ref(self) -> str:
"""열쇠 글자 — 괄호 밖의 `,` · `)` · `.칸` · ` 연산자 ` 앞에서 멈춤(열쇠에 빈칸·괄호가 들어감)."""
def ref(self, head: bool = False) -> str:
"""열쇠 글자 — 괄호 밖의 `,` · `)` · `.칸` · ` 연산자 ` 앞에서 멈춤(열쇠에 빈칸·괄호가 들어감).
head = 찾기·로직 머리 — `,` · `)` 에서만 멈춤(표 이름의 `P.P마대` 같은 점)."""
start, depth = self.i, 0
while self.i < len(self.s):
ch = self.s[self.i]
@@ -135,6 +136,8 @@ class _Parser:
depth -= 1
elif depth == 0 and ch == ",":
break
elif head:
pass
elif depth == 0 and ch == "." and not self.s[self.i + 1 : self.i + 2].isdigit():
break
elif depth == 0 and re.match(r"\s[-+*/<>=!]", self.s[self.i : self.i + 2]):
@@ -172,10 +175,10 @@ class _Parser:
self.need("(")
head = self.name()
self.need(":")
return ("find", f"{head}:{self.ref()}", self.args())
return ("find", f"{head}:{self.ref(True)}", self.args())
if word == "로직":
self.need("(")
return ("logic", self.ref(), self.args())
return ("logic", self.ref(True), self.args())
if word in FUNCS:
self.need("(")
items = [self.expr()]