From b57fa9bd460a43530a7bbc971184f7298c41587a Mon Sep 17 00:00:00 2001 From: umsangdon Date: Thu, 24 Sep 2026 22:32:33 +0900 Subject: [PATCH] =?UTF-8?q?fix(M01):=20=EB=AA=A9=EB=A1=9D=20=EA=B2=80?= =?UTF-8?q?=EC=83=89=EC=9D=B4=20=EC=96=91=EC=AA=BD=20=EB=9D=84=EC=96=B4?= =?UTF-8?q?=EC=93=B0=EA=B8=B0=EB=A5=BC=20=EB=96=BC=EA=B3=A0=20=EB=A7=9E?= =?UTF-8?q?=EB=8C=90=20=E2=80=94=20=EA=B3=A8=20=ED=95=A8=20=EC=84=9D=20?= =?UTF-8?q?=E2=86=94=20=ED=95=A8=EC=84=9D=20(PLAN=208-5)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Sonnet 5 Claude-Session: https://claude.ai/code/session_01JgUhN55Z3BCYhUJTjwTNfj --- M01_MasterData/M01_MasterData_Store.py | 6 ++---- resources/tester/test_m01_pick.py | 6 ++++++ 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/M01_MasterData/M01_MasterData_Store.py b/M01_MasterData/M01_MasterData_Store.py index bb40ca84..16508673 100644 --- a/M01_MasterData/M01_MasterData_Store.py +++ b/M01_MasterData/M01_MasterData_Store.py @@ -88,10 +88,8 @@ def chapter_of(file: str, data: dict | None = None) -> str: def _hit(row: dict, q: str) -> bool: - q = q.lower() - return not q or any( - q in str(row.get(k, "")).lower() for k in ("키", "원문번호", "이름", "옛이름") - ) + q = _squash(q) # 띄어쓰기 무시 — 「골 함 석」 ↔ 「함석」 + return not q or any(q in _squash(row.get(k, "")) for k in ("키", "원문번호", "이름", "옛이름")) def _book(data: dict) -> str | None: diff --git a/resources/tester/test_m01_pick.py b/resources/tester/test_m01_pick.py index b891cd4e..b55767e8 100644 --- a/resources/tester/test_m01_pick.py +++ b/resources/tester/test_m01_pick.py @@ -143,3 +143,9 @@ def test_재료_줄마다_품목_칸(client) -> None: "lines" ] assert lines[idx]["품목"]["키"] == "MT000019" and "인천" in lines[idx]["품목"]["이름"] + + +def test_목록_검색은_띄어쓰기를_무시(client) -> None: + for q in ("함석", "골 함 석", "골함석"): + got = client.get("/api/m01/rows", params={"file": "재료_자재품목.json", "q": q}).json() + assert any(r["이름"] == "골 함 석" for r in got["rows"]), q