feat(m01): 단위 후보 같은 성격인 빈 줄만 검색어로 (PLAN 8-3)
- 혼화제(GC000684) g ↔ kg — 검색어 「무수축혼화제」 · 단가 0 → 5 · 금액 변화 0(수량 0) - 성격이 다른 11줄 · 값 빈 자리표 14줄은 그대로 - 도구: 빈 줄은 후보 단위가 같은 성격일 때만 바꿈 · 1,354 자동값 금액 변화 0 · check_master 로직 0 · 단위 16 → 15 Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01V1MKKZKpUHTPKb513FneU8
This commit is contained in:
@@ -173,9 +173,14 @@ def convert(master: mf.Master, row: dict, item: dict) -> tuple[dict | None, list
|
||||
words = [w for k in ("이름", "규격") for w in str(elem.get(k) or "").split()]
|
||||
targets = {want for _, want in cases}
|
||||
if targets == {None}:
|
||||
# 지금 같은 단위 후보 0 인 빈 줄 — 검색어는 다른 단위 품목을 잡아 값이 생기거나(금액 바뀜)
|
||||
# 후보 0 검사에 걸림 · 조건 그대로 두고 목록으로 알림
|
||||
return None, cases
|
||||
# 지금 같은 단위 후보 0 인 빈 줄 — 후보 단위가 줄 단위와 같은 성격(g ↔ kg 등)일 때만
|
||||
# 검색어로(값이 생김 · 금액 바뀜 · 줄마다 보고) · 성격이 다르면 빈칸 그대로
|
||||
probe = {**base, "검색어": _root(item.get("이름"))}
|
||||
got = mp.search(master, probe, mau.values(master, row), unit)
|
||||
if not got or not mp.same_kind(master.get(got[0])["단위"], unit):
|
||||
return None, cases
|
||||
name = _core(master.get(got[0]))[0]
|
||||
return {**base, "검색어": name}, cases
|
||||
if len(targets) == 1:
|
||||
want = master.get(next(iter(targets)))
|
||||
name, *spec = _core(want)
|
||||
|
||||
@@ -475,7 +475,7 @@
|
||||
},
|
||||
{
|
||||
"종류": "재료",
|
||||
"요소": {"구분": "도료·방수·접착", "상세구분": "접착·혼화"},
|
||||
"요소": {"구분": "도료·방수·접착", "상세구분": "접착·혼화", "검색어": "무수축혼화제"},
|
||||
"이름": "혼화제",
|
||||
"단위": "g",
|
||||
"수량": "만약(혼화제 == '씀', 찾기(QC001356, 구분='혼화제').수량, 0)",
|
||||
|
||||
Reference in New Issue
Block a user