diff --git a/B09_Estimation/B09_Estimation_WorkItemUnit.py b/B09_Estimation/B09_Estimation_WorkItemUnit.py index d3f3bdf5..ec05eb27 100644 --- a/B09_Estimation/B09_Estimation_WorkItemUnit.py +++ b/B09_Estimation/B09_Estimation_WorkItemUnit.py @@ -61,6 +61,15 @@ _QUANTITY_UNITS = frozenset( _RE_HEADING = re.compile(r"^#{2,4}\s*(\d+(?:-\d+)*)\s*\.\s*(.*)$") #: 「(단위: ㎡당)」·「(단위 : 100㎡당)」. 앞에 붙은 수는 밑수라 여기서는 버린다. _RE_UNIT_LINE = re.compile(r"^\(\s*단위\s*[::]\s*(.+?)\s*\)\s*$") +#: 「단위:」를 빼고 **괄호만** 적는 절이 있다 — 「(㎡당)」·「(인/100㎡당)」·「(1,000본당)」. +#: 씨앗뿜어붙이기 5-24 가 그 모양이라 통째로 안 읽히고 있었다(2026-09-08). +#: +#: ⚠ **앞의 「인/」은 품의 단위이고 뒤가 공종 단위다** — 「인/㎡당」은 「㎡당 몇 인」이라 +#: 공종 단위가 ㎡ 다. 그래서 그것만 건너뛴다. +#: ⚠ **「㎥/1대, 1일」·「대/ton」 같은 것은 안 받는다** — 그건 소요량이 아니라 +#: **시공량**(1대가 하루에 몇 ㎥)이라, 공종 단위로 읽으면 뜻이 뒤집힌다. +#: 쉼표가 들어간 것(「1ha당, 100본당」)도 밑수가 둘이라 안 받는다. +_RE_BARE_UNIT_LINE = re.compile(r"^\(\s*(?:인\s*/\s*)?(?:[\d.,]+\s*)?([^\s/,()]+?)\s*당?\s*\)\s*$") #: 공식이 스스로 밝히는 결과 단위 — 「= ㎥/시간」·「㎥/hr」. #: ⚠ 등호와 단위 사이에 **수가 끼는 표기**가 있다 — 「A = 77.7 ㎡/시간」(9-17-1 비탈면 다짐). #: 그 수를 건너뛰지 않으면 그 절이 통째로 안 읽힌다. @@ -102,7 +111,7 @@ def section_units() -> dict[str, str]: continue if section is None or section in units: continue - unit_line = _RE_UNIT_LINE.match(line) + unit_line = _RE_UNIT_LINE.match(line) or _RE_BARE_UNIT_LINE.match(line) if unit_line: cleaned = _clean_unit(unit_line.group(1)) if cleaned: