낡은 시험 고침: test_masterdata_check 굴착기 · 암석 보정 · 노체포설 · 집게 기대값 = 조종원 1/8 꼴 값(노무비 × 0.6) · test_713_3_list 목록 수(1,461 · 묶음 307 · 작업량 21 · 터파기 작업량 지움으로 표본 GF000098) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
81 lines
2.6 KiB
Python
81 lines
2.6 KiB
Python
"""713-4 지킴 — 정본 로직 원문 대조 정리(내역 15) 뒤 꼴.
|
|
|
|
조종원 = 하루 노임 × 1/8(질의회신 상여 · 휴지계수 없음) ·
|
|
지운 키(쪼갠 로직 · 쪽 표 · 터파기 작업량)를
|
|
쓰는 곳 0 · 방제 8-3 열 여덟 모두 로직 · 플랜트 13-1-1 표 하나.
|
|
"""
|
|
|
|
from __future__ import annotations
|
|
|
|
import json
|
|
import re
|
|
import sys
|
|
from pathlib import Path
|
|
|
|
ROOT = Path(__file__).resolve().parents[2]
|
|
sys.path.insert(0, str(ROOT / "resources/master_data/scripts"))
|
|
|
|
import check_master as cm # noqa: E402
|
|
|
|
GONE = [
|
|
*("GF000100", "GF000102", "GF000104", "GF000106", "GF000108", "GF000110"),
|
|
*("GC000872", "GC000873", "GC000874", "GC000875", "GF000216", "GF000217"),
|
|
*("QC001609", "QC001610", "QC001611", "QC001612"),
|
|
]
|
|
MACHINE = (
|
|
"GC000267",
|
|
"GC000268",
|
|
"GC000269",
|
|
"GC000270",
|
|
"GC000271",
|
|
"GC000275",
|
|
"GC000276",
|
|
"GF000145",
|
|
)
|
|
|
|
|
|
def _rows(files):
|
|
return {
|
|
str(r["키"]): r for d in files.values() for r in (d.get("줄") or []) + (d.get("표") or [])
|
|
}
|
|
|
|
|
|
def _bare(v):
|
|
"""비고 글(옛 키를 적어 둔 내력)은 뺌 — 식 · 요소 · 용도만 봄."""
|
|
if isinstance(v, dict):
|
|
return {k: _bare(x) for k, x in v.items() if k != "비고"}
|
|
if isinstance(v, list):
|
|
return [_bare(x) for x in v]
|
|
return v
|
|
|
|
|
|
def test_지운_키는_어디에도_없음() -> None:
|
|
pattern = re.compile("|".join(GONE))
|
|
for name, data in cm.load().items(): # 대장(`_키대장.json`)은 준 키를 지님(키 불변) · 안 읽음
|
|
assert not pattern.search(json.dumps(_bare(data), ensure_ascii=False, default=str)), name
|
|
for path in (ROOT / "resources/master_template").rglob("*.json"):
|
|
assert not pattern.search(path.read_text(encoding="utf-8", errors="ignore")), path.name
|
|
|
|
|
|
def test_조종원_시간환산_본문대로() -> None:
|
|
rows = _rows(cm.load())
|
|
for key in MACHINE:
|
|
text = str(rows[key]["중간"])
|
|
assert "상여계수" not in text and "휴지계수" not in text, key
|
|
|
|
|
|
def test_방제_열_여덟_플랜트_한_표() -> None:
|
|
files = cm.load()
|
|
rows = _rows(files)
|
|
assert len(rows["QF000229"]["용도"]["로직키"]) == 8 # 8-3 원문 열 여덟
|
|
pipe = rows["QC001608"]["줄"]
|
|
assert {r["구분"] for r in pipe} == {
|
|
"배관용 탄소강관 KSD3507",
|
|
"압력배관용 탄소강관 KSD3562 SCH#40",
|
|
}
|
|
whole = cm.mf.Master(files)
|
|
passed, stuck = cm.calc_all(files, whole)
|
|
assert not stuck and passed == sum(
|
|
1 for d in files.values() if d.get("그룹") == "로직" for _ in d["줄"]
|
|
)
|