fix(master_data): ESTX 다섯 갈래 노임 파일 뺌 · 값 확인 못 한 직종은 모두 준용 — 인력_준용대상

- 인력_엔지니어링노임 · 측량노임 · 건설사업관리노임 · SW노임 · 산림노임 뺌(출처 모르는 105 줄 · 원문 확보 뒤에만)
- 인력_미확보 → 인력_준용대상 49 직종(18 직종 되돌림) · 줄마다 준용 칸 null · 로직 참조 526 곳 되돌림
- M01 준용 고르기 — 준용대상 파일도 · 후보 = 건설노임·제조노임 공표 직종 · ref = 인력:원문:열쇠
- 로직 일괄 시험 계산: 통과 1011 · 인력 준용대상 값 없음 176 · check 틀·로직 0

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PAdA5ThqmtVSsbzjusk1cJ
This commit is contained in:
2026-09-20 00:00:36 +09:00
co-authored by Claude Opus 5
parent d2a6646fc4
commit 91640faf54
28 changed files with 621 additions and 781 deletions
+9 -4
View File
@@ -232,7 +232,7 @@ def elements(group: str, q: str, limit: int) -> dict:
_PICK = {
"procure": "재료_나라장터자재.json",
"price": "재료_시중물가.json",
"job": "인력_건설노임.json",
"job": ("인력_건설노임.json", "인력_제조노임.json"),
}
@@ -251,12 +251,15 @@ def _lowest(value) -> object:
def pick(kind: str, q: str, limit: int) -> dict:
"""고르기 창 — `procure` 나라장터자재(ref = 나라장터:<열쇠>) · `price` 시중물가(관급 조달 줄 포함 · ref = 열쇠)
· `job` 값 있는 건설노임 직종(ref = 열쇠) · 이름·규격 낱말이 모두 들어간 줄."""
· `job` 값 있는 건설노임·제조노임 직종(ref = 인력:원문:열쇠) · 이름·규격 낱말이 모두 들어간 줄."""
if kind not in _PICK:
raise StoreError(404, f"없는 고르기 「{kind}」")
words = [_squash(w) for w in q.split()]
hits = []
for row in read(_PICK[kind])[0].get("줄") or []:
names = _PICK[kind] if isinstance(_PICK[kind], tuple) else (_PICK[kind],)
books = [read(n)[0] for n in names]
rows = [(data.get("원문"), row) for data in books for row in data.get("줄") or []]
for book, row in rows:
if kind == "job" and row.get("값") is None:
continue
text = _squash(f"{row.get('이름')} {row.get('규격')}")
@@ -264,7 +267,9 @@ def pick(kind: str, q: str, limit: int) -> dict:
key = str(row.get("열쇠"))
hits.append(
{
"ref": f"나라장터:{key}" if kind == "procure" else key,
"ref": {"procure": f"나라장터:{key}", "job": f"인력:{book}:{key}"}.get(
kind, key
),
**{k: row.get(k) for k in ("이름", "규격", "단위")},
"값": _lowest(row.get("값")),
"관급": kind == "price" and row["값"]["조달"].get("값") is not None,