knowledge(마스터): 전력을 재료_유가전력으로 연결 — 자재품목 전력 2줄 뺌

- 품셈재료 「전력」 연결 = {이름: 전력량요금, 계약종별: 입력} — 유가전력 전력 줄을 가리킴
- 전력 쓰는 로직 8 줄에 입력 「전력 계약종별」(주택용 저압 · 일반용(갑)Ⅰ 저압 · 산업용(갑)Ⅰ 저압) — 품셈·계약예규에 계약종별 규정 없어 기본값 두지 않음
- 임시전력(갑)은 주택용 저압 요금 그대로(요금표 6.가) — 따로 고르기에 두지 않음
- master_material: 자재품목 아닌 줄은 「값」 한 칸으로 읽고 계약종별 후보를 고름 · check_master 연결 모양·끊김 검사도 맞춤
- 자재품목 MT000006 · MT000007 삭제 → _키대장.json 「폐기」 · 빌더 DROP 에 더해 다시 만들어도 같음
- _틀.md 재료 절 · 시험 둘 고침(전력 계약종별 · 연결 낮은 값은 시멘트로)

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JgUhN55Z3BCYhUJTjwTNfj
This commit is contained in:
2026-09-20 19:11:34 +09:00
co-authored by Claude Opus 5
parent 7b017e61c6
commit 76ee8acb4b
11 changed files with 157 additions and 29 deletions
@@ -300,8 +300,9 @@ def _check_linked(where: str, row: dict) -> list[str]:
link = row.get("연결")
if isinstance(link, dict) and (
not link.get("이름")
or set(link) - {"이름", "규격", "지역"}
or set(link) - {"이름", "규격", "지역", "계약종별"}
or link.get("지역") not in (None, "입력")
or link.get("계약종별") not in (None, "입력")
):
out.append(f"{where} · 후보 조건 모양 「{link}")
elif link is not None and not isinstance(link, (str, dict)):
@@ -314,8 +315,8 @@ def check_links(whole: mf.Master) -> list[str]:
out = []
for key, row in whole.index.get("MP", {}).items():
link = row.get("연결")
if isinstance(link, str) and link not in whole.index.get("MT", {}):
out.append(f"{whole.label(key)} · 연결 「{link}」 이 자재품목에 없음")
if isinstance(link, str) and link not in whole.index.get(link[:2], {}):
out.append(f"{whole.label(key)} · 연결 「{link}」 이 자재품목·유가전력에 없음")
for key, row in whole.index.get("LB", {}).items():
for col in ("준용",):
ref = row.get(col)