feat(z01): 찾기에서 물결표·가운뎃점·띄어쓰기를 같게 봄 — 원문이 ∼·~ 를 섞어 써 「~」로 치면 0줄이던 것 · 찾기에만 쓰고 열쇠·칸 값은 원문 그대로(갈래 열쇠 흔들림 방지 · 브레인 · 서브 훑기)

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BW6Jdsh18WPtYUR6THZJqn
This commit is contained in:
2026-09-17 17:43:14 +09:00
co-authored by Claude Opus 5
parent d9b1d5ccb8
commit a8d635f2cc
2 changed files with 32 additions and 3 deletions
+14 -2
View File
@@ -517,6 +517,18 @@ def public(row: dict[str, Any]) -> dict[str, Any]:
return {k: v for k, v in row.items() if k not in ("@source", "@axis")}
#: 찾기만 같게 보는 글자 — 원문이 물결표·가운뎃점을 여러 벌로 씀(∼ 26 · ~ 8 · ․ · ㆍ) · 자간 공백(「굴 삭 기」).
#: ⚠ **찾기에만** 씀 — 열쇠·칸 값은 원문 그대로(손질하면 갈래 열쇠가 갈림 · 브레인 2026-09-17).
_SEARCH_SAME = str.maketrans(
{"∼": "~", "~": "~", "〜": "~", "․": "·", "ㆍ": "·", "・": "·", "‧": "·"}
)
def fold(text: str) -> str:
"""찾기 비교용 — 소문자 · 물결표·가운뎃점 한 벌 · 공백 없앰."""
return "".join(str(text or "").lower().translate(_SEARCH_SAME).split())
def table(
kind: str,
page: int = 1,
@@ -528,12 +540,12 @@ def table(
) -> dict[str, Any]:
all_rows = rows(kind)
columns = _columns(kind, all_rows)
needle = q.strip().lower()
needle = fold(q)
hits = (
[
r
for r in all_rows
if needle in json.dumps(public(r), ensure_ascii=False, default=str).lower()
if needle in fold(json.dumps(public(r), ensure_ascii=False, default=str))
]
if needle
else all_rows