feat(master_data): 관급 다산 줄 우선 채움 · 못 채움 800 → 495 · 못 채운 까닭 비고

- 아스콘 지역 포함(시군 붙은 글 끊기) · R3-H/A1-H 규격 번호 떼기 · 파형강관 ×t·1RS·PE 피복 · 교량받침·합성목재·혼합골재 제조사 괄호 짝
- 못 채운 495줄 비고에 까닭(조달청 종합쇼핑몰에 없음 · 짝 못 지음) · 경질폴리염화비닐관 받기
- 다산 4,552줄 기준 채움 4,057 · 맞음 3,442 · 다름 615 · 못 채움 495 · 로직 일괄 시험 멈춤 327 그대로
- 시험 13건 · 설계 문서 대조표 갱신

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PAdA5ThqmtVSsbzjusk1cJ
This commit is contained in:
2026-09-20 18:40:55 +09:00
co-authored by Claude Sonnet 5
parent 3b37f9d24d
commit a905edd87f
8 changed files with 977 additions and 826 deletions
+43 -1
View File
@@ -106,7 +106,7 @@ def test_제조사별_값_갈리면_최저_제조사_비고():
def test_짝_없는_갈래는_안_채움():
_, (val, note) = fill(item("h", "벤치플륨(관급)", "300"))
assert val is None and "짝짓기 없음" in note
assert val is None and "벤치플륨 품명 없음" in note
def test_호출_오류에_키_안_찍힘(monkeypatch):
@@ -160,3 +160,45 @@ def test_조달청에만_있는_품목은_같은_규격_최저가로_새_줄():
"2026-09-20",
)
assert val == 44000 and "나 최저" in note
def test_교량받침_이름_괄호_제조사와_관급_꼬리():
up_raw = {
"MASCntrct_교량받침": [
raw_row(
"교량받침, 부흥시스템, BHS-C-700-110-F, 250×300×60mm, 700kN, 고정단, 일체형탄성받침",
"전지역",
599000,
maker="부흥시스템",
),
raw_row(
"교량받침, 타사, X-700-F, 250×300×60mm, 700kN, 고정단",
"전지역",
500000,
maker="타사",
),
]
}
x = item("m", "교량받침(부흥시스템/예산)-관급", "250×300×60mm,700kN,고정단")
(r,) = up.refill([x], up_raw)
assert up.decide(x, r, "2026-09-20")[0] == 599000 # 더 싼 타사가 아니라 이름의 제조사
def test_파형강관_t표기와_PE피복_글자():
def cor(spec, price):
return raw_row(spec, "전지역", price, maker="가")
raw = {
"MASCntrct_파형강관": [
cor("파형강관, 가, A, Φ300×t1.6mm, 직관(1RS), PE내면피복", 33820),
cor("파형강관, 가, B, Φ300×t1.6mm, 1RS, PE양면피복", 36310),
cor("파형강관, 가, C, Φ300×t1.6mm, 1RS, 아연도금", 31870),
]
}
_, (val, _) = fill_raw(item("n", "파형강관(관급)-거양", "Φ300×t1.6mm, 1RS, PE양면피복"), raw)
assert val == 36310
def fill_raw(x, raw):
(r,) = up.refill([x], raw)
return r, up.decide(x, r, "2026-09-20")