feat(794-2c): 근거 제안 엔진 후속 — 같은 말 묶음 · 옛 번호 대조표 · 기계 작업량 길 넓힘 · 섞기 오인 넷 고침
- 새 M02_San_Basis_Map — 옛 번호 대조표(건설 옛 11-3 → 8-2-3 · 3-7 → 3-9-1 · 8-2-35 → 8-2-32 · 근거 = 원문 표 값 · 실무 글) · 사방(옛) = 판 대응표 2018 통합 판 · 기계 상수 줄 글 읽기(여러 대입 한 줄 · 괄호 설명 · 끝값 없는 나눗셈) · 작업량당 기계경비 로직 낱말 표 - 엔진 — 같은 말(휠라 = 채움재 · 평떼 = 평잔디 · 육샹 = 육상) · 건설(옛) 같은 번호는 같은 절 + 제목 뜻 겹침만 · Q 식 절 기호 채움(고르는 차례는 채우기 전) · 값 · 제목 길이 품 검산으로 안 받쳐지면 그 기계 작업량당 기계경비(차례 「기계」 · 번호 길은 그대로) - 검산 probe — 고르기가 범위뿐이면 용량 · 규격 값이 드는 범위 하나로(버킷용량 → 규격구분) - 459 블록: 없음 85 → 58 · 확정 125 → 164 · 근접 135 → 145 · 사람 114 → 92 · 확정 · 근접 → 없음 0 · 섞기(GF000132) 오인 넷 → GC001148 · GC001189 - 시험 test_793_3a 넓힘 — 없음 ≤ 58 · 확정 ≥ 164 · 손 확인 견본 열 · 1/3 적용 지어 넣지 않음 · 상수 읽기 · 대조표 - 근거후보 꼴 그대로 · M01 · 지식DB 고침 없음 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -5,6 +5,8 @@
|
||||
야면석소운반 GC001140 석재류 · 불량 · 큰돌쌓기 ÷10 근접) · 지어 넣은 값 0 · 보정 자료 = 여덟 파일 ·
|
||||
저장본 길(임시 폴더). 엑셀 = `helper_m02_hopyo_golden.FILES`(읽기만 · 없으면 skip) ·
|
||||
STmate 숨은 G 식 = 올림 길과 같은 `M02_San_Basis_Store.hidden`.
|
||||
794-2c 넓힘 — 없음 85 → 58 · 확정 단 125 → 164 · 손 확인 견본 열(기계 작업량 길 · 섞기 오인 넷 ·
|
||||
옛 번호 대조 · 같은 말 묶음) · 기계 상수 읽기 · 옛 번호 대조표.
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
@@ -22,6 +24,7 @@ from M02_MasterTemplete import M02_Hopyo_Store as hopyo_store
|
||||
from M02_MasterTemplete import M02_San_Basis as sb
|
||||
from M02_MasterTemplete import M02_San_Basis_Const as bc
|
||||
from M02_MasterTemplete import M02_San_Basis_Index as bi
|
||||
from M02_MasterTemplete import M02_San_Basis_Map as bm
|
||||
from M02_MasterTemplete import M02_San_Basis_Store as store
|
||||
from M02_MasterTemplete import M02_San_Book as san_book
|
||||
|
||||
@@ -81,6 +84,9 @@ def test_counts_at_least_d2():
|
||||
assert kind["확정·전부"] >= 52
|
||||
assert same >= 141
|
||||
assert tier["없음"] <= 94 and kind["없음"] <= 94
|
||||
# 794-2c — 같은 말 묶음 · 옛 번호 대조표 · 기계 작업량 길(전 85 · 125 · 260)
|
||||
assert tier["없음"] <= 58 and tier["확정"] >= 164
|
||||
assert sum(v for k, v in kind.items() if k.startswith("확정")) >= 309
|
||||
|
||||
|
||||
def _first(bid: str) -> dict:
|
||||
@@ -181,3 +187,73 @@ def test_hidden_g_lines():
|
||||
rows = [[None] * 7, [None] * 6 + ["_x0007_L=20"], [None] * 6 + ["_x0007_"], [None] * 6 + ["x"]]
|
||||
assert store.hidden(book, {store.SHEET: rows}) == {"3": ["L=20"]}
|
||||
assert store.hidden({"꼴": "엑셀꼴", "단산": []}, {}) == {}
|
||||
|
||||
|
||||
# ── 794-2c 손 확인 견본 ─────────────────────────────────────────────
|
||||
HAND = [
|
||||
("북부청임도#56", "GC001148", "확정"), # 잔토정리 Q 식 · 제목에 품셈 이름 없음 → 기계 작업량 길
|
||||
("울진대흥#2264", "GC001148", "확정"), # 섞기 오인(GF000132) → 옛 11-3 · 굴착기
|
||||
("울진대흥#2269", "GC001148", "확정"), # 섞기 오인 → 되메우기 굴착기 Q 식
|
||||
("울진대흥#2290", "GC001148", "근접"), # 섞기 오인 → 적상 굴착기(운반 · 정지 절 미확정)
|
||||
("동부청영월#111", "GC001189", "근접"), # 섞기 오인 → 옛 8-2-35 = 현행 8-2-32 임목파쇄기
|
||||
("북부청임도#41", "GC000227", "확정"), # 휠라 = 채움재 · 옛 6-3-10 같은 절
|
||||
("울진소광#1329", "GC000143", "확정"), # 평떼 = 잔디 · 옛 4-1-1 같은 절
|
||||
("울진소광#794", "GF000298", "근접"), # 사방(옛) 4-16-2 → 판 대응표 산림 5-16-1
|
||||
("동부청영월#33", "GC000129", "근접"), # 옛 3-7 → 현행 3-9-1 벌목(표 값 같음)
|
||||
("울진대흥#2277", "GC001148", "확정"), # 옛 11-3 → 8-2-3 · 번호 + 검산
|
||||
]
|
||||
|
||||
|
||||
@pytest.mark.parametrize("bid,key,tier", HAND)
|
||||
def test_794_2c_hand(bid, key, tier):
|
||||
r = results()[0][bid]
|
||||
keys = [c["기초"] for c in r["근거후보"]]
|
||||
assert key in keys and r["단"] == tier, (bid, r["단"], keys)
|
||||
assert "GF000132" not in keys, bid # 섞기(굴착기 0.7) 값 우연 짝 없음
|
||||
|
||||
|
||||
def test_794_2c_no_invented_divisor():
|
||||
"""「/ Q / 3」(1/3 적용) 블록은 검산 못 함 = 사람 · 1/3 을 지어 넣지 않음."""
|
||||
r = results()[0]["봉화#24"]
|
||||
assert r["단"] == "사람" and {c["기초"] for c in r["근거후보"]} == {"GC001147", "GC001148"}
|
||||
assert all(c["옵션"] == {} for c in r["근거후보"])
|
||||
|
||||
|
||||
def test_machine_consts_reader():
|
||||
got = bm.consts(
|
||||
[
|
||||
"q = 0.7 , k = 0.7 , f =1/1.175= 0.85",
|
||||
"E = 0.5 , Cm = 18 sec(90)",
|
||||
"Q = 3600*q*k*E*f/Cm = 41.65 m3/hr",
|
||||
]
|
||||
)
|
||||
assert got == [
|
||||
{"기호": "q", "값": 0.7},
|
||||
{"기호": "K", "값": 0.7},
|
||||
{"기호": "f", "값": 0.85},
|
||||
{"기호": "E", "값": 0.5},
|
||||
{"기호": "Cm", "값": 18.0, "덧": "90˚"},
|
||||
]
|
||||
got = bm.consts(
|
||||
[
|
||||
"q (버킷용량(m3)) = 0.7 , f (체적환산계수) = 1/1.25 , K (버킷계수) = 0.9",
|
||||
"Cm (1회 사이클 시간(초)) = 20 sec (135˚) , E = ( 0.55 + 0.45 ) / 2. - 0.05 = 0.45",
|
||||
]
|
||||
)
|
||||
assert [(x["기호"], x["값"]) for x in got] == [
|
||||
("q", 0.7),
|
||||
("f", 0.8),
|
||||
("K", 0.9),
|
||||
("Cm", 20.0),
|
||||
("E", 0.45),
|
||||
]
|
||||
assert bm.has_q(["3,600. × q × K × f × E", "Cm 20."]) and not bm.has_q(["Q = 6 ㎥/hr"])
|
||||
|
||||
|
||||
def test_old_number_map():
|
||||
assert {o["키"] for o in bm.old_rows("건설품셈(옛)", "11-3")} >= {"GC001147", "GC001148"}
|
||||
assert "GC000129" in {o["키"] for o in bm.old_rows("건설품셈(옛)", "3-7")}
|
||||
assert "GC001189" in {o["키"] for o in bm.old_rows("건설품셈(옛)", "8-2-35")}
|
||||
assert bm.sabang_map()["4-16-2"] == "5-16-1"
|
||||
assert "3-7" not in bm.sabang_map() # 임도(2017) 줄은 사방에 안 씀
|
||||
assert bm.old_rows("건설품셈(옛)", "8-2") == [] # 대조 없는 번호 = 없음(윗마디 안 받음)
|
||||
|
||||
Reference in New Issue
Block a user