From 26bf63b72677ff21556193914c507bacfedb7072 Mon Sep 17 00:00:00 2001 From: umsangdon Date: Sun, 8 Nov 2026 21:52:41 +0900 Subject: [PATCH 1/2] =?UTF-8?q?feat(810-4):=20=EC=97=B0=EA=B2=B0=20?= =?UTF-8?q?=EC=B0=BE=EA=B8=B0=20=EC=97=94=EC=A7=84=20=E2=80=94=20=EA=B0=80?= =?UTF-8?q?=EC=A0=B8=EC=98=A8=20=EC=8B=9D=20=E2=86=94=20=EC=9A=B0=EB=A6=AC?= =?UTF-8?q?=20M01=20=EA=B8=B0=EC=B4=88=20=C2=B7=20=ED=99=95=EC=A0=95?= =?UTF-8?q?=EC=9D=BC=20=EB=95=8C=EB=A7=8C=20=EC=9A=B0=EB=A6=AC=20=EA=B8=B0?= =?UTF-8?q?=EC=B4=88=20=EC=82=AC=EB=B3=B8=EC=9C=BC=EB=A1=9C=20=EB=B0=94?= =?UTF-8?q?=EA=BE=B8=EA=B8=B0=20=C2=B7=20=EB=90=98=EB=8F=8C=EB=A6=AC?= =?UTF-8?q?=EA=B8=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 새 M02_Doc_Match(서버 단독) — 후보(결과단위 · 노임 키 · 재료 · 기계 · 품셈 절 번호) · 옵션 풀이(줄 수량 · 단가가 의존하는 선택 · 입력 변수만 돌려 좁힘 · 글 근거 값 유지) · 줄 대조(같음 · 단가 차이 · 단위 환산 · 기계 규격 · 비목 · 율 값 · 율 줄 · 공구손료 유무 · 줄 없음 · 끝수 · 옵션 글) · 판정 확정(다른 항 0 · 원 단위 같음) / 근접 / 없음(가까운 후보 보이기만) - 새 M02_Doc_MatchSk — 찾기 = SK 가져온.원본.연결후보 적음 · 바꾸기 = 서버가 다시 찾아 확정만 같은 키에 M01 사본 SK(바탕 · 입력값 = 찾은 옵션) · 원래 몸 = 가져온보관 · 되돌리기 · 근접 · 없음 409 - 길 POST /api/m02/layers/{층}/sangeun/{키}/match {할일 찾기 · 바꾸기 · 되돌리기}(층 쓰기) - M02_Sangeun_Imported clean — 가져온보관 칸 받음 · M02_Doc_Import 형제 SK 가 우리 기초 사본이면 그 수식 문서로 셈(연결 안 끊김) - 화면 — 원문 패널 「어디서 왔나」 카드 맨 위 판정 띠(띠 알림 부품) · 확정 = [우리 기초 사본으로 바꾸기] · 근접 · 없음 = 단추 없음 + 다른 항 자세히 · 안 찾음 = [우리 기초와 연결 찾기] · 바꾼 SK = [가져온 식으로 되돌리기] · 저장 안 한 고침 있으면 막음 · 끝나면 SK 다시 엶(새 판) - 시험 test_810_4_match(판정 셋 · 요구 704 파형강관 Φ800 = GF000179 근접 · 단위 환산 × 6 · 기계 규격 · 율 줄 · 옵션 풀이 · 줄 대조 · 바꾸기 = M01 사본 셈 · 되돌리기 · 근접 409 · 형제 사본 · 전수 S8104_ALL) · helper_810_4_sweep - 낡은 시험 글 대조 고침 — 717_2b(View 다시 엶 mount) · 750_2(createSangeunSide(opt.match)) · 807_1(원문 패널에 SK 문서 넘김) Co-Authored-By: Claude Opus 5.5 --- M02_MasterTemplete/M02_Doc_Import.py | 7 +- M02_MasterTemplete/M02_Doc_Match.py | 593 ++++++++++++++++++ M02_MasterTemplete/M02_Doc_MatchSk.py | 104 +++ M02_MasterTemplete/M02_Doc_Router.py | 27 + .../M02_MasterTemplete_Sangeun_Detail.ts | 8 +- .../M02_MasterTemplete_Sangeun_MatchBand.ts | 85 +++ .../M02_MasterTemplete_Sangeun_Side.ts | 25 +- .../M02_MasterTemplete_Sangeun_View.ts | 37 +- M02_MasterTemplete/M02_Sangeun_Imported.py | 6 +- M02_MasterTemplete/logic/M02_Sangeun_Match.ts | 88 +++ resources/tester/helper_810_4_sweep.py | 122 ++++ .../tester/test_717_2b_sangeun_detail.py | 2 +- .../tester/test_750_2_views_one_answer.py | 2 +- resources/tester/test_807_1_import_doc_one.py | 2 +- resources/tester/test_810_4_match.py | 211 +++++++ 15 files changed, 1298 insertions(+), 21 deletions(-) create mode 100644 M02_MasterTemplete/M02_Doc_Match.py create mode 100644 M02_MasterTemplete/M02_Doc_MatchSk.py create mode 100644 M02_MasterTemplete/M02_MasterTemplete_Sangeun_MatchBand.ts create mode 100644 M02_MasterTemplete/logic/M02_Sangeun_Match.ts create mode 100644 resources/tester/helper_810_4_sweep.py create mode 100644 resources/tester/test_810_4_match.py diff --git a/M02_MasterTemplete/M02_Doc_Import.py b/M02_MasterTemplete/M02_Doc_Import.py index f6aec7ef1..23e6f5ec9 100644 --- a/M02_MasterTemplete/M02_Doc_Import.py +++ b/M02_MasterTemplete/M02_Doc_Import.py @@ -395,11 +395,14 @@ class Links(dc.ml.Links): if rid in self.trail or len(self.trail) >= refs.DEPTH: continue sib = refs.read_ref(full) - if not is_imported(sib): + mine = ((sib or {}).get(dc.KEY) or {}).get( + "문서" + ) # 우리 기초 사본으로 바꾼 형제(810-4) + if not is_imported(sib) and not isinstance(mine, dict): continue self.mine[key] = None # 순환 막음 try: - sub = view(of(sib), self.basis) + sub = view(of(sib), self.basis) if is_imported(sib) else {**mine, "키": key} except Exception: # noqa: BLE001 — 못 지음 = 없는 단가산출(연결 끊김 표지) continue self.mine[key] = sub diff --git a/M02_MasterTemplete/M02_Doc_Match.py b/M02_MasterTemplete/M02_Doc_Match.py new file mode 100644 index 000000000..fbddf1bad --- /dev/null +++ b/M02_MasterTemplete/M02_Doc_Match.py @@ -0,0 +1,593 @@ +"""가져온 식 ↔ 우리 M01 기초 연결 찾기(PLAN 810-4 · 요구 707 · 709 · 703) — 서버 단독. + +가져온 식 문서(원파일 확정 정보 · 우리 단가로 셈) 하나를 M01 수식 문서 전부와 맞대어 +「확정」 · 「근접」 · 「없음」 을 냄 — 지어 맞추기 없음(값 보정 · 허용 오차 없음 · 원 단위 같아야 확정). + ① 후보 = 결과단위 같음 + 노임 키 ⊂ M01 노임 키 + 재료 · 기계 있으면 M01 에도 · + 품셈 절 번호(가져온 「추정」 글 · M01 `출처`)가 겹치는 문서가 있으면 그것만. + ② 옵션 풀이 = 그 문서의 선택 · 입력 변수 값을 줄마다 좁힘(줄 수량 · 단가가 의존하는 변수만 돌림 · + 값이 가져온 줄 수량 · 단가 묶음에 있거나 0(꺼진 줄)인 값만 남김) → 남은 조합(상한 `CAP_ALL`)을 + 문서 셈 · 입력 변수 후보 = 기본값 · 0 · 가져온 식에 나온 수 · 선택은 가져온 글에 든 값부터. + ③ 판정 = 줄 대조(수량 · 단가 · 비목 금액 · 율 줄) + 노 · 재 · 경 · 계 — + 다른 항 0 = 「확정」 · 같은 줄이 하나 넘고 핵심 줄 반 넘게 짝 = 「근접」(다른 항 목록) · 그 밖 「없음」. +결과 `{판정, 키, 이름, 옵션, 다른, 금액 {가져온, 우리}, 후보수}` = 가져온 식 원본 `연결후보`. +""" + +from __future__ import annotations + +import functools +import itertools +import json +import re +from decimal import Decimal, InvalidOperation +from typing import Any + +from M02_MasterTemplete import M02_Doc_Copy as dc + +md, mc, ml = dc.md, dc.mc, dc.ml +if not hasattr( + md.parse, "cache_info" +): # 식 글 → 나무 = 순수 함수 · 조합마다 같은 글을 다시 풀지 않음 + md.parse = functools.lru_cache(maxsize=50000)(md.parse) + +KEY = "연결후보" +SURE, NEAR, NONE = "확정", "근접", "없음" +CAP_LINE = 3000 # 줄 하나 좁힐 때 돌리는 조합 상한(넘으면 그 줄은 좁힘에 안 씀) +CAP_ALL = 192 # 문서 하나 끝 셈 조합 상한 +CAP_INPUT = 12 # 입력 변수 후보 수 상한 +NICE = (2, 3, 4, 5, 6, 8, 10, 12, 100, 1000) # 단위 환산으로 보는 배 +_SEC = re.compile(r"(? Any: + """비교 열쇠 — 수 = 유효 12 자리(Decimal 셈 자리 차이만 지움) · 묶음 = 비목 튜플.""" + if isinstance(v, dict): + return tuple(_key(v.get(k)) for k in md.COSTS) + if isinstance(v, Decimal): + try: + return v.normalize() if v == 0 else Decimal(f"{v:.12g}").normalize() + except InvalidOperation: + return None + return v + + +def unit_of(text: Any) -> str: + """결과단위 「원/㎡」 → 「㎡」(소문자 · m3 → ㎥ 등) · 돈 아닌 단위 = "".""" + text = str(text or "").strip() + if not text.startswith("원/"): + return "" + unit = text[2:].strip().lower().replace(" ", "") + return _UNIT.get(unit, unit) + + +def sections(texts: list[str]) -> set[str]: + """품셈 절 번호(「6-3-1」) — 앞 둘 · 셋 마디 모두.""" + out = set() + for t in texts: + for s in _SEC.findall(str(t or "")): + parts = s.split("-") + out |= {"-".join(parts[:n]) for n in range(2, len(parts) + 1)} + return out + + +# ── 줄 사실 ─────────────────────────────────────────────────────────── +def _single(text: Any) -> str | None: + try: + node = md.parse(text) + except md.DocError: + return None + return node[1] if node[0] == "var" else None + + +def _what(doc: dict, line: dict) -> tuple[str, str]: + """금액 줄 자원 → (갈래, 코드) · 갈래 = 노임 · 재료 · 기계 · 산출 · 율 · 수.""" + sym = _single(line.get("단가")) + var = next((v for v in doc.get("변수") or [] if sym and md.var_id(v) == sym), None) + if var is None: + return "율", "" + link = var.get("연결") or {} + kind, key = link.get("갈래"), str(link.get("키") or "") + if kind == "요소": + if key.startswith("LB"): + return "노임", key + if key.startswith("EQ"): + return "기계", key + return "재료", key + if kind == "단가산출": + given = link.get("입력") or {} + code = str(given.get("기계") or "").strip("'") + return ("기계", code) if "기계" in given else ("산출", key) + if kind == "숫자" and isinstance(link.get("값"), dict): + return "산출", "" + if kind == "식": + return "율", "" + return "수", "" + + +def facts(doc: dict, got: dict) -> list[dict]: + """셈 답 줄 → 대조 사실 — 소계 보임(비목 없는 합 밖) · 꺼진 줄(수량 0 · 금액 0) 뺌.""" + out = [] + money = doc.get("금액") or [] + for i, (line, row) in enumerate(zip(money, got.get("줄") or [])): + if line.get("합밖") and not line.get("비목"): + continue + if row.get("금액") is not None and row["금액"] == 0 and row.get("수량") == 0: + continue + kind, code = _what(doc, line) + if kind == "기계" and code in (got.get("값") or {}): # 옵션 기호 = 그 값(기계 코드) + code = mc.plain_text(got["값"][code]) + if kind == "율" or (kind == "수" and line.get("수량") in (None, "")): + kind = "율" + out.append( + { + "번": i, + "이름": str(line.get("이름") or ""), + "갈래": kind, + "코드": code, + "수량": _key(row.get("수량")) if kind != "율" else None, + "단가": _key(row.get("단가")) if kind != "율" else None, + "비목": {k: _key(v) for k, v in (row.get("비목") or {}).items() if v}, + "금액": _key(row.get("금액")), + "합밖": bool(row.get("합밖")), + } + ) + return out + + +def resources(doc: dict) -> dict[str, set]: + """문서가 쓸 수 있는 자원(옵션 무관) — {노임 키, 재료, 기계}.""" + out: dict[str, set] = {"노임": set(), "재료": set(), "기계": set()} + for line in doc.get("금액") or []: + kind, code = _what(doc, line) + if kind == "노임": + out["노임"].add(code) + elif kind == "재료": + out["재료"].add(code or "고름") + elif kind in ("기계", "산출"): + out["기계"].add(code or kind) + return out + + +# ── 연결 기억 ───────────────────────────────────────────────────────── +class Memo: + """M01 연결 + 셈 기억(요소 · 표 · 부른 단가산출) — 같은 값을 조합마다 다시 찾지 않음.""" + + def __init__(self, links: Any): + self.links, self.hits, self.calls = links, {}, {} + + def _hit(self, tag: str, p: dict, fn: Any) -> Any: + key = (tag, json.dumps(p, sort_keys=True, ensure_ascii=False, default=str)) + if key not in self.hits: + try: + self.hits[key] = (True, fn(p)) + except (mc.Gap, mc.Broken) as e: + self.hits[key] = (False, e) + ok, got = self.hits[key] + if not ok: + raise got + return got + + def element(self, p: dict) -> Any: + return self._hit("요소", p, self.links.element) + + def table(self, p: dict) -> Any: + return self._hit("표", p, self.links.table) + + def doc(self, key: str) -> dict | None: + return self.links.doc(key) + + +# ── ① 후보 ──────────────────────────────────────────────────────────── +class Index: + """M01 수식 문서 색인(결과단위 · 자원 · 절) — 프로세스 안 한 번.""" + + def __init__(self, docs: dict[str, dict]): + self.docs = docs + self.by_unit: dict[str, list[str]] = {} + self.res: dict[str, dict[str, set]] = {} + self.secs: dict[str, set[str]] = {} + self.regions: set[str] = set() + for key, doc in docs.items(): + for v in doc.get("변수") or []: + if str(v.get("열쇠") or "").endswith("지역"): + self.regions |= {str(x) for x in (v.get("연결") or {}).get("목록") or []} + unit = unit_of(doc.get("결과단위")) + if not unit or not doc.get("금액"): + continue + self.by_unit.setdefault(unit, []).append(key) + self.res[key] = resources(doc) + self.secs[key] = sections([doc.get("출처")]) + + def candidates(self, doc: dict) -> list[str]: + mine = resources(doc) + keys = [] + for key in self.by_unit.get(unit_of(doc.get("결과단위")), []): + have = self.res[key] + if not mine["노임"] <= have["노임"]: + continue + if mine["재료"] and not have["재료"]: + continue + if mine["기계"] and not have["기계"]: + continue + if not (mine["노임"] or mine["재료"] or mine["기계"]): + continue + keys.append(key) + secs = sections([x.get("글") for x in (doc.get("가져온") or {}).get("추정") or []]) + hit = [k for k in keys if secs & self.secs[k]] + return hit or keys + + +# ── ② 옵션 풀이 ─────────────────────────────────────────────────────── +def _closure(doc: dict) -> dict[str, set[str]]: + """기호 → 그 기호가 (거쳐서) 부르는 이름 전부.""" + direct: dict[str, set[str]] = {} + for v in doc.get("변수") or []: + direct[md.var_id(v)] = set(md.link_names(v.get("연결") or {})) + for line in doc.get("식") or []: + try: + direct[str(line.get("기호"))] = set(md.names(md.parse(line.get("식")))) + except md.DocError: + direct[str(line.get("기호"))] = set() + memo: dict[str, set[str]] = {} + + def reach(name: str, seen: tuple = ()) -> set[str]: + if name in memo: + return memo[name] + out = set() + for n in direct.get(name, ()): + if n not in seen: + out |= {n} | reach(n, (*seen, name)) + memo[name] = out + return out + + return {n: reach(n) for n in direct} + + +def _uses(text: Any, close: dict) -> set[str] | None: + try: + names = md.names(md.parse(text)) if text not in (None, "") else [] + except md.DocError: + return None + out = set(names) + for n in names: + out |= close.get(n, set()) + return out + + +def numbers_of(doc: dict) -> list[Decimal]: + """가져온 식에 나온 수(숫자 변수 · 식 · 수량 글 · 규격 · 이름).""" + got: list[Decimal] = [] + texts = [doc.get("이름"), (doc.get("가져온") or {}).get("규격")] + for v in doc.get("변수") or []: + val = (v.get("연결") or {}).get("값") + if not isinstance(val, dict): + texts.append(val) + texts += [x.get("식") for x in doc.get("식") or []] + texts += [x.get("수량") for x in doc.get("금액") or []] + texts += [x.get("규격") for x in doc.get("금액") or []] + for t in texts: + for s in _NUMS.findall(str(t or "")): + d = Decimal(s).normalize() + if d not in got: + got.append(d) + return got + + +def _words(doc: dict) -> str: + """가져온 식 글(이름 · 규격 · 줄 규격 · 부름 입력 값 — 줄 이름 뺌) — 선택 값의 글 근거.""" + bits = [doc.get("이름"), (doc.get("가져온") or {}).get("규격")] + bits += [x.get("규격") for x in doc.get("금액") or []] + for v in doc.get("변수") or []: + bits += [str(x) for x in ((v.get("연결") or {}).get("입력") or {}).values()] + return " ".join(str(b or "") for b in bits).replace(" ", "") + + +def domains( + doc: dict, imported: dict, regions: set[str] = frozenset() +) -> tuple[dict[str, list], dict[str, set]]: + """선택 · 입력 변수 → (돌릴 값, 글 근거) — 기본 먼저 · 가져온 글에 든 선택 값(근거) 먼저 · + 글 입력 지역 = 가져온 글에 든 지역 이름.""" + words, nums = _words(imported), numbers_of(imported) + out: dict[str, list] = {} + ev: dict[str, set] = {} + for v in doc.get("변수") or []: + link = v.get("연결") or {} + kind, base = link.get("갈래"), link.get("값") + if kind == "선택": + opts = list(link.get("목록") or []) + seen = [o for o in opts if str(o).replace(" ", "") in words and len(str(o)) > 1] + seen.sort(key=lambda o: -len(str(o))) + if seen: + ev[md.var_id(v)] = set(seen) + rest = [o for o in opts if o not in seen] + first = [base] if base in rest else [] + out[md.var_id(v)] = seen + first + [o for o in rest if o != base] + elif kind == "입력": + try: + d = Decimal(str(base).replace(",", "")).normalize() + except (InvalidOperation, ValueError): + if str(v.get("열쇠") or "").endswith("지역"): + seen = sorted((r for r in regions if len(r) > 1 and r in words), key=len) + out[md.var_id(v)] = list(dict.fromkeys([base, *seen[::-1]])) + continue # 그 밖 글 입력 = 기본 그대로 + low, high = (mc.number(x) for x in (link.get("범위") or [None, None])) + vals = [d, Decimal(0)] + nums + vals = [x for x in vals if (low is None or x >= low) and (high is None or x <= high)] + out[md.var_id(v)] = list(dict.fromkeys(vals))[:CAP_INPUT] + return out, ev + + +def _given(doc: dict, pick: dict) -> dict: + ids = {md.var_id(v): v.get("열쇠") or md.var_id(v) for v in doc.get("변수") or []} + return {ids[k]: v for k, v in pick.items()} + + +def _eval(doc: dict, links: Any, pick: dict, text: Any, memo: dict) -> Any: + run = mc._Run(doc, links, _given(doc, pick), (str(doc.get("키")),), links.calls) + got = run.expr(text, "줄") + if isinstance(got, Decimal) and got == 0: + return 0 + return _key(got) if isinstance(got, (Decimal, dict)) else None + + +def narrow( + doc: dict, links: Any, dom: dict, want: dict[str, set], ev: dict[str, set] | None = None +) -> dict[str, list]: + """줄마다 의존 변수만 돌려 가져온 값(수량 · 단가) · 0 에 닿는 값만 남김(두 바퀴) · + 글 근거 값(`ev`)은 안 지움(값이 달라도 그 조합을 셈 — 다른 항으로 드러냄).""" + ev = ev or {} + close = _closure(doc) + memo: dict = {} + base = {k: vs[0] for k, vs in dom.items()} + jobs = [] + for line in doc.get("금액") or []: + for slot, field in (("수량", "수량"), ("단가", "단가")): + uses = _uses(line.get(field), close) + if uses is None or uses & (set(md.MONEY_NAMES) | _money_syms(doc)): + continue + free = sorted(u for u in uses if u in dom) + if free: + jobs.append((line.get(field), free, want[slot])) + for _ in range(2): + for text, free, targets in jobs: + space = [dom[f] for f in free] + if _size(space) > CAP_LINE: + continue + ok: dict[str, set] = {f: set() for f in free} + for combo in itertools.product(*space): + pick = {**base, **dict(zip(free, combo))} + got = _eval(doc, links, pick, text, memo) + if got == 0 or got in targets: + for f, c in zip(free, combo): + ok[f].add(c) + if all(ok.values()): + for f in free: + ok[f] |= ev.get(f, set()) + dom[f] = [x for x in dom[f] if x in ok[f]] + base[f] = dom[f][0] + return dom + + +def _money_syms(doc: dict) -> set[str]: + return {str(x["기호"]) for x in doc.get("금액") or [] if x.get("기호")} + + +def _size(space: list[list]) -> int: + n = 1 + for s in space: + n *= max(len(s), 1) + return n + + +def combos(doc: dict, dom: dict) -> list[dict]: + """좁힌 값 조합(기본 쪽 먼저 · 상한 `CAP_ALL`) — 한 값뿐인 변수는 그 값.""" + keys = [k for k, v in dom.items() if v] + out = [] + for combo in itertools.product(*(dom[k] for k in keys)): + out.append(dict(zip(keys, combo))) + if len(out) >= CAP_ALL: + break + return out + + +# ── ③ 줄 대조 ───────────────────────────────────────────────────────── +def _ratio(a: Any, b: Any) -> str | None: + if not isinstance(a, Decimal) or not isinstance(b, Decimal) or not a or not b: + return None + for n in NICE: + if _key(a * n) == b: + return f"× {n}" + if _key(b * n) == a: + return f"÷ {n}" + return None + + +def compare(mine: list[dict], ours: list[dict]) -> dict[str, Any]: + """가져온 줄(mine) ↔ M01 줄(ours) → {같음, 짝, 핵심, 다른 [{항, 글}]}.""" + left, right = list(mine), list(ours) + same = paired = 0 + diffs: list[dict] = [] + + def take(test) -> list[tuple[dict, dict]]: + hits = [] + for a in list(left): + b = next((x for x in right if test(a, x)), None) + if b is not None: + left.remove(a) + right.remove(b) + hits.append((a, b)) + return hits + + def core(a: dict, b: dict) -> bool: + return a["갈래"] != "율" and b["갈래"] != "율" + + def cls(a: dict, b: dict) -> bool: + return a["갈래"] == b["갈래"] or {a["갈래"], b["갈래"]} <= {"기계", "산출"} + + exact = take( + lambda a, b: ( + a["수량"] == b["수량"] and a["단가"] == b["단가"] and a["비목"] == b["비목"] + if core(a, b) + else a["갈래"] == b["갈래"] == "율" and a["비목"] == b["비목"] + ) + ) + same += sum(1 for a, _ in exact if a["갈래"] != "율") + for a, b in take(lambda a, b: core(a, b) and cls(a, b) and a["수량"] == b["수량"]): + paired += 1 + if a["갈래"] == "기계" and b["갈래"] == "기계" and a["코드"] != b["코드"]: + diffs.append({"항": "기계 규격", "글": f"{a['이름']} {a['코드']} ↔ {b['코드']}"}) + elif a["단가"] != b["단가"]: + diffs.append({"항": "단가 차이", "글": f"{a['이름']} 단가 {a['단가']} ↔ {b['단가']}"}) + else: + diffs.append({"항": "비목", "글": f"{a['이름']} 비목 다름"}) + for a, b in take(lambda a, b: core(a, b) and cls(a, b) and a["단가"] == b["단가"]): + paired += 1 + how = _ratio(a["수량"], b["수량"]) + what = "단위 환산" if how else "수량" + diffs.append({"항": what, "글": f"{a['이름']} 수량 {a['수량']} ↔ {b['수량']} {how or ''}"}) + for a, b in take(lambda a, b: core(a, b) and a["갈래"] == b["갈래"] == "기계"): + paired += 1 + diffs.append( + {"항": "기계 규격", "글": f"{a['이름']} {a['코드']} ↔ {b['코드']} · 수량 다름"} + ) + for a, b in take(lambda a, b: a["갈래"] == b["갈래"] == "율" and a["금액"] == b["금액"]): + diffs.append({"항": "비목", "글": f"율 줄 {a['이름']} 비목 다름"}) + for a, b in take(lambda a, b: a["갈래"] == b["갈래"] == "율"): + diffs.append({"항": "율 값", "글": f"{a['이름']} {a['금액']} ↔ {b['이름']} {b['금액']}"}) + for side, rows in (("가져온 쪽만", left), ("우리 쪽만", right)): + for x in rows: + if x["갈래"] == "율": + what = "공구손료 유무" if "공구" in x["이름"] else "율 줄" + else: + what = "줄 없음" + diffs.append({"항": what, "글": f"{side} — {x['이름']}"}) + n_core = sum(1 for a in mine if a["갈래"] != "율") + return {"같음": same, "짝": same + paired, "핵심": n_core, "다른": diffs} + + +def _totals(got: dict) -> dict: + return {k: _key(mc.number(got.get(k))) for k in md.BUNDLE} + + +EXPLAINED = ( + "단가 차이", + "단위 환산", + "기계 규격", + "비목", + "율 값", + "율 줄", + "공구손료 유무", + "끝수", +) + + +def verdict( + mine: list[dict], ours: list[dict], got_a: dict, got_b: dict, off: list[dict] = () +) -> dict: + """확정 = 다른 항 0(옵션 글 근거까지 맞음) · 근접 = 핵심 줄 반 넘게 짝 + (같은 줄 있음 또는 + 다른 항이 모두 까닭 있는 갈래 — 단가 · 단위 환산 · 기계 규격 · 비목 · 율) · 그 밖 없음.""" + res = compare(mine, ours) + res["다른"] = [*off, *res["다른"]] + ta, tb = _totals(got_a), _totals(got_b) + if not res["다른"] and ta != tb: + res["다른"].append({"항": "끝수", "글": f"줄은 같고 합이 다름 {ta} ↔ {tb}"}) + if not res["다른"] and res["같음"]: + res["판정"] = SURE + elif res["짝"] * 2 >= res["핵심"] + 1 and ( + res["같음"] or all(d["항"] in EXPLAINED for d in res["다른"]) + ): + res["판정"] = NEAR + else: + res["판정"] = NONE + return res + + +# ── 한 문서 ─────────────────────────────────────────────────────────── +def _calc(doc: dict, links: Any, given: dict) -> dict | None: + try: + got = mc.calc(doc, links, given, (), getattr(links, "calls", None)) + except Exception: # noqa: BLE001 — 못 셈 = 그 조합 버림 + return None + return got if got.get("셈됨") else None + + +def try_doc( + base: dict, links: Any, imported: dict, got_imp: dict, mine: list[dict], regions: set[str] +) -> dict: + """M01 문서 하나 — 옵션 풀이 · 가장 나은 조합 판정.""" + want = { + "수량": {x["수량"] for x in mine if x["수량"] is not None}, + "단가": {x["단가"] for x in mine if x["단가"] is not None}, + } + dom, ev = domains(base, imported, regions) + dom = narrow(base, links, dom, want, ev) + best: dict | None = None + for pick in combos(base, dom) or [{}]: + got = _calc(base, links, _given(base, pick)) + if got is None: + continue + off = [_off(base, k, pick[k], ev[k]) for k in ev if k in pick and pick[k] not in ev[k]] + res = verdict(mine, facts(base, got), got_imp, got, off) + rank = (res["판정"] == SURE, -len(off), res["같음"], res["짝"], -len(res["다른"])) + if best is None or rank > best["순위"]: + best = {**res, "순위": rank, "옵션": pick, "금액": _totals(got)} + if res["판정"] == SURE: + break + return best or {"판정": NONE, "같음": 0, "짝": 0, "다른": [], "순위": (False, -9, 0, 0, 0)} + + +def _off(doc: dict, vid: str, value: Any, seen: set) -> dict: + """옵션 값이 가져온 글 근거와 다름 — 다른 항 「옵션 글」.""" + var = next((v for v in doc.get("변수") or [] if md.var_id(v) == vid), {}) + name = var.get("이름") or vid + return {"항": "옵션 글", "글": f"{name} 글 {'·'.join(map(str, seen))} ↔ {value}"} + + +def match(imported: dict, links_imp: Any, index: Index, links: Any) -> dict[str, Any]: + """가져온 식 문서 → 연결후보 `{판정, 키, 이름, 옵션, 다른, 금액, 후보수}`.""" + links = links if isinstance(links, Memo) else Memo(links) + got_imp = _calc(imported, links_imp, {}) + if got_imp is None: + return {"판정": NONE, "까닭": "가져온 식을 우리 단가로 못 셈", "후보수": 0} + mine = facts(imported, got_imp) + keys = index.candidates(imported) + best, best_key = None, None + for key in keys: + res = try_doc(index.docs[key], links, imported, got_imp, mine, index.regions) + if best is None or res["순위"] > best["순위"]: + best, best_key = res, key + if res["판정"] == SURE: + break + if best is None: + return {"판정": NONE, "후보수": 0} + base = index.docs[best_key] + if best["판정"] == NONE: # 가까운 후보(보이기만 — 단추 없음) + near = {"키": best_key, "이름": base.get("이름"), "다른": best["다른"][:12]} + return {"판정": NONE, "후보수": len(keys), "가까움": near} + return { + "판정": best["판정"], + "키": best_key, + "이름": base.get("이름"), + "옵션": _shown(base, best["옵션"]), + "다른": best["다른"], + "금액": {"가져온": _plain(_totals(got_imp)), "우리": _plain(best["금액"])}, + "후보수": len(keys), + } + + +def _shown(doc: dict, pick: dict) -> dict[str, str]: + """고른 옵션(기본과 다른 것) — {열쇠: 값 글}.""" + out = {} + for v in doc.get("변수") or []: + vid = md.var_id(v) + if vid in pick and mc.plain_text(mc.number(pick[vid])) != mc.plain_text( + mc.number((v.get("연결") or {}).get("값")) + ): + out[str(v.get("열쇠") or vid)] = mc.plain_text(mc.number(pick[vid])) + return out + + +def _plain(d: dict) -> dict: + return {k: (None if v is None else float(v)) for k, v in d.items()} diff --git a/M02_MasterTemplete/M02_Doc_MatchSk.py b/M02_MasterTemplete/M02_Doc_MatchSk.py new file mode 100644 index 000000000..9cad03cce --- /dev/null +++ b/M02_MasterTemplete/M02_Doc_MatchSk.py @@ -0,0 +1,104 @@ +"""가져온 식 SK ↔ 우리 M01 기초 — 연결 찾기 기록 · 「확정」 때만 우리 기초 사본으로 바꾸기 · 되돌리기 +(PLAN 810-4 · 요구 707 · 708 · 709 · 703) — 서버 단독. + + 찾기(`find`) = 가져온 식 문서(우리 단가로 셈) → `M02_Doc_Match.match` → SK `가져온.원본.연결후보` 에 적음. + 바꾸기(`swap`) = 서버가 다시 찾아 「확정」 일 때만 — 같은 SK 키에 M01 사본 SK(바탕 = 그 기초 · + 입력값 = 찾은 옵션 · 802-4a 꼴 · 수식 사본은 저장 때 서버가 찍음)를 씀 · 원래 가져온 식 SK 몸은 + `가져온보관` 칸에 그대로 둠 · 일위대가 줄 참조 = 키 그대로(SK 내용만 바뀜 → 금액 다시 셈). + 되돌리기(`back`) = `가져온보관` 몸을 그 키에 다시 씀(가져온 식 금액 그대로). +우리 M01 기초는 어느 갈래에서도 안 바뀜(708) · 근접 · 없음 = 바꾸기 409(703). +""" + +from __future__ import annotations + +from typing import Any + +from common_util.common_util_time import utc_now_text +from M02_MasterTemplete import M02_Doc_Copy as dc +from M02_MasterTemplete import M02_Doc_Import as dim +from M02_MasterTemplete import M02_Doc_Match as dm +from M02_MasterTemplete import M02_MasterTemplete_Store as store +from M02_MasterTemplete import M02_Sangeun_Doc as sd +from M02_MasterTemplete import M02_Sangeun_Imported as imp + +KEEP = "가져온보관" # 바꾼 SK 의 원래 가져온 식 몸(되돌리기) +_INDEX: dict[str, Any] = {"문서": None, "색인": None} + + +def _bad(why: str, status: int = 400) -> store.StoreError: + return store.StoreError(status, why) + + +def index() -> dm.Index: + """M01 수식 문서 색인 — 폴더가 바뀌면(M01 관리자 고침) 다시.""" + docs = dc.folder() + if _INDEX["문서"] is not docs: + _INDEX["문서"], _INDEX["색인"] = docs, dm.Index(docs) + return _INDEX["색인"] + + +def _read(key: str) -> dict[str, Any]: + if not sd.KEY.match(str(key or "")): + raise _bad("키(SK-######)") + return store.read(sd.KIND, key) + + +def judge(sk: dict) -> dict[str, Any]: + """가져온 식 SK → 연결후보(저장 없음).""" + whole = imp._whole() + links_imp = dim.Links(whole, "우리") + doc = dim.of(sk) + links_imp.learn(doc) + got = dm.match(doc, links_imp, index(), dm.ml.Links(whole, dc.folder())) + return {**got, "때": utc_now_text()} + + +def find(key: str, version: str) -> dict[str, Any]: + """연결 찾기 → SK `가져온.원본.연결후보` 에 적음 → {연결후보, 판}.""" + got = _read(key) + sk = got["문서"] + if not dim.is_imported(sk): + raise _bad("가져온 식 단가산출만 연결을 찾음") + found = judge(sk) + meta = sk[imp.KEY] + new = {**sk, imp.KEY: {**meta, "원본": {**(meta.get("원본") or {}), dm.KEY: found}}} + info = store.write(sd.KIND, key, version or got["판"], new) + return {dm.KEY: found, "판": info.get("판")} + + +def copy_body(sk: dict, found: dict) -> dict[str, Any]: + """M01 사본 SK 몸(이름 · 단위 · 구분 그대로 · 바탕 = 찾은 기초 · 입력값 = 찾은 옵션).""" + keep = {k: sk.get(k) for k in ("키", "이름", "단위", "구분", "상세구분") if sk.get(k)} + old = {k: v for k, v in sk.items() if k not in ("키", "종류", KEEP)} + body = { + "덮개": {}, + "뺀줄": [], + "더한줄": [], + "고름": {}, + "자재표시": {}, + } # M01 그대로(고침 없음) + base = {"바탕": {"로직": found["키"]}, "입력값": dict(found.get("옵션") or {})} + return {**keep, **body, **base, KEEP: old} + + +def swap(key: str, version: str) -> dict[str, Any]: + """「확정」 일 때만 우리 기초 사본으로 — 서버가 다시 찾음(화면 판정을 믿지 않음).""" + got = _read(key) + sk = got["문서"] + if not dim.is_imported(sk): + raise _bad("가져온 식 단가산출만 바꿈") + found = judge(sk) + if found.get("판정") != dm.SURE: + raise _bad(f"우리 기초와 「확정」 일치가 아님({found.get('판정')}) — 바꾸지 않음", 409) + info = store.write(sd.KIND, key, version or got["판"], copy_body(sk, found)) + return {dm.KEY: found, "판": info.get("판")} + + +def back(key: str, version: str) -> dict[str, Any]: + """우리 기초 사본 → 원래 가져온 식(보관 몸 그대로).""" + got = _read(key) + old = got["문서"].get(KEEP) + if not isinstance(old, dict) or not old.get(imp.KEY): + raise _bad("되돌릴 가져온 식 없음") + info = store.write(sd.KIND, key, version or got["판"], {**old, "키": key}) + return {"판": info.get("판")} diff --git a/M02_MasterTemplete/M02_Doc_Router.py b/M02_MasterTemplete/M02_Doc_Router.py index f248f7f1f..1f7b117f3 100644 --- a/M02_MasterTemplete/M02_Doc_Router.py +++ b/M02_MasterTemplete/M02_Doc_Router.py @@ -4,6 +4,8 @@ POST /api/m02/layers/{층}/sangeun/{키}/doc/preview 미리 셈(층 쓰기) {문서?, 끊음?, 할일?} → {…, 전, 후, 바뀐자원?, 버림?} POST /api/m02/layers/{층}/sangeun/{키}/doc/save 저장(층 쓰기) {문서?, 끊음?, 할일?, 판} → 읽기 꼴 + POST /api/m02/layers/{층}/sangeun/{키}/match {할일 찾기|바꾸기|되돌리기, 판?}(층 쓰기 · 810-4) + → {연결후보?, 판}(바꾸기 = 확정만 · 아니면 409) ⚠ 등록은 `main.py`(로그인만 · 층 권한은 길 안에서). """ @@ -48,6 +50,31 @@ def preview_doc( return _call(folder, path.preview, key, body.model_dump(exclude_none=True)) +class MatchBody(BaseModel): + 할일: str = "찾기" # 찾기 | 바꾸기 | 되돌리기(810-4) + 판: str | None = None + + +@router.post("/layers/{layer}/sangeun/{key}/match") +def match_doc( + layer: Layer, + key: str, + body: MatchBody, + owner: str | None = None, + session: Session = Depends(verify_session), +) -> dict: + """가져온 식 ↔ 우리 기초(810-4) — 찾기(연결후보 적음) · 바꾸기(확정만 · M01 사본 SK) · 되돌리기.""" + from fastapi import HTTPException + + from M02_MasterTemplete import M02_Doc_MatchSk as msk + + jobs = {"찾기": msk.find, "바꾸기": msk.swap, "되돌리기": msk.back} + if body.할일 not in jobs: + raise HTTPException(status_code=400, detail="찾기 · 바꾸기 · 되돌리기") + folder = _root(session, layer, owner, write=True) + return _call(folder, jobs[body.할일], key, body.판 or "") + + @router.post("/layers/{layer}/sangeun/{key}/doc/save") def save_doc( layer: Layer, diff --git a/M02_MasterTemplete/M02_MasterTemplete_Sangeun_Detail.ts b/M02_MasterTemplete/M02_MasterTemplete_Sangeun_Detail.ts index 91b515372..d539a3195 100644 --- a/M02_MasterTemplete/M02_MasterTemplete_Sangeun_Detail.ts +++ b/M02_MasterTemplete/M02_MasterTemplete_Sangeun_Detail.ts @@ -68,8 +68,8 @@ export interface SangeunDetailOptions { source?: boolean; /** 수식 탭 저장 뒤 그 SK 새 판(페이지 [저장] 409 막음 · 802-4b-2) */ onVersion?: (version: string) => void; - /** 페이지 머리 줄 빈 자리(804-8) — 보기 고르기를 M01 처럼 머리 줄에 */ - slot?: HTMLElement; + slot?: HTMLElement; // 페이지 머리 줄 빈 자리(804-8) — 보기 고르기를 M01 처럼 머리 줄에 + match?: Parameters[0]; // 원문 패널 판정 띠 단추(810-4) } const LIB = { read: "/m02/logic-lib", calc: "/m02/logic-lib" }; @@ -104,7 +104,7 @@ export function mountSangeunDetail( const inputsOf = new Map(); const infoOf = new Map(); // 더한줄 로직 → 원문 탭(752-1) let extraKeys: string[] = []; - const side = opt.source ? createSangeunSide() : null; + const side = opt.source ? createSangeunSide(opt.match) : null; let seq = 0; let alive = true; @@ -430,7 +430,7 @@ export function mountSangeunDetail( side?.set([ ...(base ? [tabOf(base.logic)] : []), ...extraKeys.flatMap((k) => (k === baseKey() ? [] : infoOf.has(k) ? [infoOf.get(k)!] : [])), - ], doc.가져온); + ], doc); } /** 재료 고름(줄 모달) = SK 문서 `고름`(cid → MT) — 둘째 기초 세부 줄은 보기만 */ diff --git a/M02_MasterTemplete/M02_MasterTemplete_Sangeun_MatchBand.ts b/M02_MasterTemplete/M02_MasterTemplete_Sangeun_MatchBand.ts new file mode 100644 index 000000000..d73d377a2 --- /dev/null +++ b/M02_MasterTemplete/M02_MasterTemplete_Sangeun_MatchBand.ts @@ -0,0 +1,85 @@ +/* ============================================================================= + * M02_MasterTemplete_Sangeun_MatchBand.ts + * 가져온 식 ↔ 우리 기초 판정 띠(PLAN 810-4 · 요구 707 · 709 · 703) — 원문 패널 「어디서 왔나」 카드 맨 위. + * 글 · 단추 = `logic/M02_Sangeun_Match.ts` `matchBand` · 길 POST `/m02/layers/{층}/sangeun/{키}/match` + * {할일 찾기 | 바꾸기 | 되돌리기} — 서버가 다시 찾아 「확정」 일 때만 바꿈(화면 판정을 믿지 않음) · + * 바꾸기 · 되돌리기 = 확인창 · 저장 안 한 고침이 있으면 막음(먼저 [저장]) · 끝나면 `done(판)` = 그 SK 를 다시 엶 + * 층 쓰기 권한 없음(읽기만) = 단추 없음 + * ========================================================================== */ + +import { createBanner } from "@ui/ui_template_banner"; +import { createButton } from "@ui/ui_template_button"; +import { el } from "@ui/ui_template_elements"; +import { askConfirm } from "@ui/ui_template_modal"; +import { createText } from "@ui/ui_template_text"; +import { showToast } from "@ui/ui_template_toast"; +import { call, type Layer } from "./M02_MasterTemplete_Api_Fetch"; +import { matchBand, type MatchAction } from "./logic/M02_Sangeun_Match"; + +export interface MatchCtx { + layer: Layer; + owner: string | null; + key: string; + readOnly: boolean; + /** 저장 안 한 고침 있음 */ + dirty: () => boolean; + /** 서버가 SK 를 고친 뒤(새 판) — 그 SK 다시 엶 */ + done: (version: string) => void; +} + +const LABEL: Record, string> = { + 찾기: "우리 기초와 연결 찾기", + 바꾸기: "우리 기초 사본으로 바꾸기", + 되돌리기: "가져온 식으로 되돌리기", +}; +const ASK: Partial, string>> = { + 바꾸기: + "이 단가산출을 우리 기초 사본(찾은 옵션)으로 바꿈 — 키 그대로 · 일위대가 금액이 다시 셈됨 · 원래 가져온 식은 보관", + 되돌리기: "우리 기초 사본을 원래 가져온 식으로 되돌림 — 가져온 식 금액 그대로", +}; + +/** 판정 띠 — 가져온 식 · 바꾼 SK 가 아니면 null */ +export function createMatchBand(sk: unknown, ctx: MatchCtx | undefined): HTMLElement | null { + const band = matchBand(sk as Parameters[0]); + if (!band) return null; + const act = band.action; + const actions = + act && ctx && !ctx.readOnly && ctx.key + ? [ + createButton({ + label: LABEL[act], + variant: act === "바꾸기" ? "filled" : "ghost", + size: 24, + onClick: (ev) => void run(act, ctx, ev.currentTarget as HTMLButtonElement), + }), + ] + : []; + const details = band.details.length + ? el("div", { children: band.details.map((x) => createText(x, "muted", 12)) }) + : undefined; + const root = createBanner({ tone: band.tone, text: band.text, details, actions }); + root.setAttribute("data-sk-match", act ?? ""); + return root; +} + +async function run(act: Exclude, ctx: MatchCtx, btn: HTMLButtonElement) { + if (ctx.dirty()) return void showToast("저장 안 한 고침이 있음 — 먼저 [저장]", "warning"); + const ask = ASK[act]; + if (ask && !(await askConfirm({ message: ask, okLabel: LABEL[act] }))) return; + const label = btn.textContent; + btn.disabled = true; + btn.textContent = act === "찾기" ? "찾는 중…" : "바꾸는 중…"; + try { + const owner = ctx.owner ? `?owner=${encodeURIComponent(ctx.owner)}` : ""; + const path = `/layers/${ctx.layer}/sangeun/${encodeURIComponent(ctx.key)}/match${owner}`; + const got = await call<{ 판?: string }>(path, { + method: "POST", + body: JSON.stringify({ 할일: act }), + }); + ctx.done(got.판 ?? ""); + } catch (e) { + showToast(e instanceof Error ? e.message : String(e), "error"); + btn.disabled = false; + btn.textContent = label; + } +} diff --git a/M02_MasterTemplete/M02_MasterTemplete_Sangeun_Side.ts b/M02_MasterTemplete/M02_MasterTemplete_Sangeun_Side.ts index 2e1179b1f..b492db6cb 100644 --- a/M02_MasterTemplete/M02_MasterTemplete_Sangeun_Side.ts +++ b/M02_MasterTemplete/M02_MasterTemplete_Sangeun_Side.ts @@ -7,6 +7,7 @@ * 맨 위 「단가산출 기초 찾기」(807-1 · M01 원문 패널과 같은 `LogicLab_SourceFind`) — 고르면 그 기초 원문(보기만 · 기억 안 함) · * 지우면 처음 화면 · 처음 화면 = 우리 SK 는 기초 원문 · 가져온 식 SK 는 「어디서 왔나」 카드 * (프로그램 · 파일 · 블록 · 행 · 가져온 때 · 표지 요약 + 엑셀 글의 품셈 절 글만 — 찾기 · 잇기 없음) + * 카드 맨 위 = 우리 기초 판정 띠(810-4 · `Sangeun_MatchBand`) · 우리 기초 사본으로 바꾼 SK = 보관한 가져온 식 카드 * 일위대가 줄 모달 안 상세는 안 만듦(부르는 쪽이 `source` 를 안 켬). * ========================================================================== */ @@ -22,6 +23,7 @@ import { createSourceView } from "../M01_MasterData/M01_MasterData_UI_LogicLab_S import { createSourceFind } from "../M01_MasterData/M01_MasterData_UI_LogicLab_SourceFind"; import { originOf, type Origin, type OriginMeta } from "./logic/M02_Sangeun_Origin"; import { tc } from "./M02_MasterTemplete_Labor_Text"; +import { createMatchBand, type MatchCtx } from "./M02_MasterTemplete_Sangeun_MatchBand"; export interface SourceTab { label: string; @@ -61,7 +63,7 @@ const tx = (k: keyof typeof TEXT, n = 0): string => TEXT[k][currentLanguageIndex === 1 ? 1 : 0].replace("{n}", String(n)); /** 「어디서 왔나」 카드 — 표지는 셋까지(더 = 단추로 펼침) */ -function originCard(o: Origin): HTMLElement { +function originCard(o: Origin, band: HTMLElement | null): HTMLElement { const marks = el("div"); const showMarks = (all: boolean): void => marks.replaceChildren( @@ -80,6 +82,7 @@ function originCard(o: Origin): HTMLElement { title: tx("Origin"), pad: 12, body: [ + ...(band ? [band] : []), ...(o.요약 ? [el("strong", { text: o.요약, attrs: { "data-origin-native": "" } })] : []), createKv([ { label: tx("Program"), value: o.프로그램 }, @@ -100,10 +103,10 @@ function originCard(o: Origin): HTMLElement { return card; } -export function createSangeunSide(): { +export function createSangeunSide(match?: MatchCtx): { wrap: (main: HTMLElement) => HTMLElement; - /** 원문 탭 · 가져온 식 머리(`가져온` — 있으면 첫 화면 = 카드) */ - set: (tabs: SourceTab[], imported?: unknown) => void; + /** 원문 탭 · SK 문서(`가져온` · 바꾼 SK `가져온보관` — 있으면 첫 화면 = 카드 + 판정 띠) */ + set: (tabs: SourceTab[], sk?: unknown) => void; } { const view = createSourceView({ path: "/m02/logic-lib/source", @@ -122,6 +125,7 @@ export function createSangeunSide(): { }); let tabs: SourceTab[] = []; let origin: Origin | null = null; + let skDoc: unknown = null; let at = 0; const side = createSidePanels({ prefKey: "m02-sangeun-side", @@ -136,7 +140,8 @@ export function createSangeunSide(): { view.show(found); return void content.replaceChildren(view.root); } - if (origin) return void content.replaceChildren(originCard(origin)); + if (origin) + return void content.replaceChildren(originCard(origin, createMatchBand(skDoc, match))); if (!tabs.length) return void content.replaceChildren(createText(L("M02_SangeunSourceNone"), "muted")); at = Math.min(at, tabs.length - 1); @@ -157,10 +162,12 @@ export function createSangeunSide(): { } return { wrap: (main) => el("div", { className: "ui-side-panels-row", children: [main, side.root] }), - set: (next, imported) => { - const card = originOf(imported as OriginMeta | null); - if (JSON.stringify([next, card]) === JSON.stringify([tabs, origin])) return; - [tabs, origin] = [next, card]; + set: (next, sk) => { + const one = sk as { 가져온?: unknown; 가져온보관?: { 가져온?: unknown } } | null; + const card = originOf((one?.가져온 ?? one?.가져온보관?.가져온) as OriginMeta | null); + const same = JSON.stringify([next, card, sk]) === JSON.stringify([tabs, origin, skDoc]); + if (same) return; + [tabs, origin, skDoc] = [next, card, sk ?? null]; paint(); }, }; diff --git a/M02_MasterTemplete/M02_MasterTemplete_Sangeun_View.ts b/M02_MasterTemplete/M02_MasterTemplete_Sangeun_View.ts index 66e131f31..9c636c468 100644 --- a/M02_MasterTemplete/M02_MasterTemplete_Sangeun_View.ts +++ b/M02_MasterTemplete/M02_MasterTemplete_Sangeun_View.ts @@ -3,8 +3,10 @@ * 단가산출(SK) 상세 자리(717-2a) — 편집 칸 종류 sangeun 이 여는 곳(UI_Main 갈래 한 줄). * 717-2b = 상세 · 고침(`Sangeun_Detail.ts` mountSangeunDetail) · [저장]은 그 손잡이 `getDoc` · 고침 알림 `opt.onChanged`. * 804-8 = 페이지 [저장] 한 번에 수식도(`flush` 먼저 · 새 판) · 보기 고르기는 머리 줄 `slot`. + * 810-4 = 원문 패널 판정 띠 [바꾸기] · [되돌리기] · [연결 찾기] 뒤 그 SK 를 다시 읽어 상세를 다시 엶(새 판). * ========================================================================== */ +import { readTemplate } from "./M02_MasterTemplete_Api_Fetch"; import { mountSangeunDetail } from "./M02_MasterTemplete_Sangeun_Detail"; import type { Selection } from "./M02_MasterTemplete_UI_Main"; @@ -23,6 +25,37 @@ export function mountSangeunView( doc: unknown, opt: SangeunViewOptions, ): { getDoc: () => Promise; destroy: () => void } { - const one = mountSangeunDetail(host, doc, { ...opt, owner: opt.owner ?? null, source: true }); // 752-1 - return { getDoc: () => one.flush().then(() => one.getDoc()), destroy: one.destroy }; + let dirty = false; + const onChanged = (d: boolean): void => ((dirty = d), opt.onChanged(d)); + /** 판정 띠 단추(810-4) — 서버가 SK 를 고친 뒤 새 판 · 그 SK 를 다시 읽어 상세를 다시 엶 */ + const match = { + layer: opt.layer, + owner: opt.owner ?? null, + key: opt.name, + readOnly: opt.readOnly, + dirty: () => dirty, + done: (version: string): void => { + opt.onVersion?.(version); + void readTemplate(opt.layer, "sangeun", opt.name, null, opt.owner ?? null).then((got) => { + if (!alive) return; + one.destroy(); + one = mount(got.문서); + onChanged(false); + }); + }, + }; + const mount = (d: unknown) => + mountSangeunDetail(host, d, { + ...opt, + onChanged, + owner: opt.owner ?? null, + source: true, + match, + }); // 752-1 + let alive = true; + let one = mount(doc); + return { + getDoc: () => one.flush().then(() => one.getDoc()), + destroy: () => ((alive = false), one.destroy()), + }; } diff --git a/M02_MasterTemplete/M02_Sangeun_Imported.py b/M02_MasterTemplete/M02_Sangeun_Imported.py index 287f08d8e..0ecc5c8e3 100644 --- a/M02_MasterTemplete/M02_Sangeun_Imported.py +++ b/M02_MasterTemplete/M02_Sangeun_Imported.py @@ -251,7 +251,11 @@ def _meta(raw: Any, name: str) -> Any: def clean(raw: Any, out: dict) -> dict: - """`sd.clean` 끝(`const.clean_more`) — `가져온` 칸 · 바탕과 같이 못 둠.""" + """`sd.clean` 끝(`const.clean_more`) — `가져온` 칸 · 바탕과 같이 못 둠 · + `가져온보관` = 우리 기초 사본으로 바꾼 SK 의 원래 가져온 식 몸(810-4 되돌리기).""" + kept = raw.get("가져온보관") if isinstance(raw, dict) else None + if isinstance(kept, dict) and isinstance(kept.get(KEY), dict): + out = {**out, "가져온보관": _meta(kept, "가져온보관")} meta = raw.get(KEY) if isinstance(raw, dict) else None if meta in (None, {}): return out diff --git a/M02_MasterTemplete/logic/M02_Sangeun_Match.ts b/M02_MasterTemplete/logic/M02_Sangeun_Match.ts new file mode 100644 index 000000000..05256cf65 --- /dev/null +++ b/M02_MasterTemplete/logic/M02_Sangeun_Match.ts @@ -0,0 +1,88 @@ +/* ============================================================================= + * M02_Sangeun_Match.ts + * 가져온 식 ↔ 우리 M01 기초 연결 판정 띠 자료(PLAN 810-4 · 요구 707 · 709 · 703) — 원문 패널 카드 위. + * SK `가져온.원본.연결후보`(서버 `M02_Doc_Match` 가 적음) → 띠 글 · 다른 항 · 단추 하나: + * 확정 = [우리 기초 사본으로 바꾸기] · 근접 · 없음 = 단추 없음(703) · 안 찾음 = [연결 찾기] · + * 바꾼 SK(`가져온보관` 있음) = 「우리 기초 사본 ○○」 + [가져온 식으로 되돌리기] + * 화면 · DOM · fetch 없음 + * ========================================================================== */ + +export type MatchVerdict = "확정" | "근접" | "없음"; + +export interface MatchFound { + 판정?: MatchVerdict; + 키?: string; + 이름?: string; + 옵션?: Record; + 다른?: { 항: string; 글: string }[]; + 금액?: { 가져온?: Record; 우리?: Record }; + 후보수?: number; + 가까움?: { 키?: string; 이름?: string; 다른?: { 항: string; 글: string }[] }; +} + +export type MatchAction = "찾기" | "바꾸기" | "되돌리기" | null; + +export interface MatchBand { + tone: "success" | "info" | "warning"; + text: string; + /** 다른 항 글(근접 · 없음의 가까운 후보) */ + details: string[]; + action: MatchAction; +} + +interface SkLike { + 바탕?: { 로직?: string } | null; + 입력값?: Record; + 가져온?: { 로직?: unknown; 원본?: { 연결후보?: MatchFound } } | null; + 가져온보관?: { 가져온?: { 원본?: { 연결후보?: MatchFound } } } | null; +} + +const opts = (o?: Record): string => { + const list = Object.entries(o ?? {}).map(([k, v]) => `${k} ${String(v)}`); + return list.length ? `(${list.join(" · ")})` : "(기본 옵션)"; +}; +const lines = (d?: { 항: string; 글: string }[]): string[] => + (d ?? []).map((x) => `${x.항} — ${x.글}`); + +/** SK → 띠 자료 · 가져온 식도 · 바꾼 SK 도 아니면 null */ +export function matchBand(sk: SkLike | null | undefined): MatchBand | null { + const kept = sk?.가져온보관; + if (kept && sk?.바탕?.로직) { + return { + tone: "info", + text: `우리 기초 사본 ${sk.바탕.로직} ${opts(sk.입력값)} — 원래 가져온 식은 보관`, + details: [], + action: "되돌리기", + }; + } + if (!sk?.가져온?.로직) return null; + const f = sk.가져온.원본?.연결후보; + if (!f?.판정) { + return { tone: "info", text: "우리 기초와 연결을 아직 안 찾음", details: [], action: "찾기" }; + } + const base = `${f.키 ?? ""} ${f.이름 ?? ""} ${opts(f.옵션)}`.trim(); + if (f.판정 === "확정") { + return { + tone: "success", + text: `우리 기초 ${base} 와 확정 일치`, + details: [], + action: "바꾸기", + }; + } + if (f.판정 === "근접") { + const kinds = [...new Set((f.다른 ?? []).map((x) => x.항))].join(" · "); + return { + tone: "warning", + text: `근접 — ${base} · 다른 항: ${kinds}`, + details: lines(f.다른), + action: null, + }; + } + const near = f.가까움; + return { + tone: "info", + text: `없음 — 우리 기초 후보 ${f.후보수 ?? 0} 개와 맞지 않음`, + details: near ? [`가장 가까운 ${near.키 ?? ""} ${near.이름 ?? ""}`, ...lines(near.다른)] : [], + action: null, + }; +} diff --git a/resources/tester/helper_810_4_sweep.py b/resources/tester/helper_810_4_sweep.py new file mode 100644 index 000000000..049900ebf --- /dev/null +++ b/resources/tester/helper_810_4_sweep.py @@ -0,0 +1,122 @@ +"""810-4 전수 도우미 — 원파일 산근 블록 전부(EST 6 · STC 7) × M01 수식 문서 1,518 연결 찾기. + +파일마다 프로세스 · 안쪽 산근(형제)은 같은 파일 블록을 우리 단가로 먼저 셈해 묶음 값으로 넣음(저장 층의 +형제 SK 읽기와 같은 값) · 확정은 M01 문서를 찾은 옵션(입력값 꼴)으로 다시 셈해 금액 대조. +마지막 줄 = JSON {블록, 판정, 근접항, 오류, 확정다시셈다름} · `--rows ` = 줄 목록 저장(목록 xlsx 용). +""" + +from __future__ import annotations + +import collections +import json +import pickle +import sys +import time +from multiprocessing import Pool +from pathlib import Path + +HERE = Path(__file__).resolve().parent +ROOT = HERE.parents[1] +for p in (ROOT, HERE): + if str(p) not in sys.path: + sys.path.insert(0, str(p)) + + +def _ctx(): + import test_810_2_native_doc as t + + from M02_MasterTemplete import M02_Doc_Import as dim + from M02_MasterTemplete import M02_Doc_Match as dm + + whole = t.whole() + docs = dm.ml.load_all() + return t, dim, dm, whole, docs, dm.Index(docs), dm.Memo(dm.ml.Links(whole, docs)) + + +def file_docs(t, dim, dm, whole, kind: str, tag: str) -> dict[int, dict]: + """파일 블록 → 가져온 식 문서(형제 = 우리 단가 묶음).""" + saved = t.native(kind, tag) + nums = t.fn.numbers(saved) + by_code = {str(b.get("코드")): n for n, b in nums.items()} + links = dim.Links(whole, "우리") + made: dict[int, dict] = {} + ours: dict[int, dict | None] = {} + + def build(no: int, trail: tuple = ()) -> None: + if no in made: + return + out = t.fn.emit(saved, no) + doc = dim.derive(t.sk_of(out), None, whole) + for h in out["로직"]["호표"]: + res = h.get("자원") or {} + n = by_code.get(str(res.get("코드"))) + if res.get("갈래") != "단가산출" or n is None or n in trail or n == no: + continue + build(n, (*trail, no)) + got = ours.get(n) + line = next( + (x for x in doc["금액"] if x["이름"] == h["이름"] and x.get("비목") == "묶음"), None + ) # noqa: E501 + if not line or not got: + continue + for v in doc["변수"]: + if dm.md.var_id(v) == line["단가"] and (v.get("연결") or {}).get("갈래") == "숫자": + v["연결"] = {"갈래": "숫자", "값": {k: str(got[k]) for k in dm.md.COSTS}} + made[no] = doc + ours[no] = dm._calc(doc, links, {}) + + for no in nums: + build(no) + return made + + +def sweep(arg: tuple[str, str]) -> list[dict]: + kind, tag = arg + t, dim, dm, whole, docs, index, links = _ctx() + rows = [] + try: + made = file_docs(t, dim, dm, whole, kind, tag) + except Exception as e: # noqa: BLE001 — 원파일 없음(다른 PC) = 빈 줄 + return [{"파일": tag, "오류": repr(e)[:200], "판정": "오류", "없는파일": "없음" in repr(e)}] + for no, doc in made.items(): + start = time.time() + try: + res = dm.match(doc, dim.Links(whole, "우리"), index, links) + except Exception as e: # noqa: BLE001 + res = {"판정": "오류", "까닭": repr(e)[:200]} + row = {"파일": tag, "꼴": kind, "번": no, "블록": doc["이름"], "단위": doc["결과단위"]} + row |= {"규격": (doc.get("가져온") or {}).get("규격"), **res} + if res.get("판정") == dm.SURE: + again = dm._calc(docs[res["키"]], dm.ml.Links(whole, docs), dict(res["옵션"])) + row["다시셈같음"] = ( + again is not None and dm._plain(dm._totals(again)) == res["금액"]["가져온"] + ) # noqa: E501 + row["초"] = round(time.time() - start, 2) + rows.append(row) + return rows + + +def main() -> None: + import test_810_1_estx as e + import test_810_1_stc as c + + tags = [("EST", k) for k in e.FILES] + [("STC", k) for k in c.FILES] + with Pool(len(tags)) as pool: + rows = [r for part in pool.map(sweep, tags) for r in part] + if "--rows" in sys.argv: + pickle.dump(rows, open(sys.argv[sys.argv.index("--rows") + 1], "wb")) + real = [r for r in rows if not r.get("없는파일")] + out = { + "블록": sum(1 for r in real if r.get("판정") != "오류" or "번" in r), + "판정": dict(collections.Counter(r["판정"] for r in real)), + "근접항": dict( + collections.Counter(d["항"] for r in real if r["판정"] == "근접" for d in r["다른"]) + ), # noqa: E501 + "오류": sum(1 for r in real if r["판정"] == "오류"), + "확정다시셈다름": sum(1 for r in real if r.get("다시셈같음") is False), + } + print(json.dumps(out, ensure_ascii=False)) + + +if __name__ == "__main__": + main() diff --git a/resources/tester/test_717_2b_sangeun_detail.py b/resources/tester/test_717_2b_sangeun_detail.py index fb2e2e0c2..7d29540b3 100644 --- a/resources/tester/test_717_2b_sangeun_detail.py +++ b/resources/tester/test_717_2b_sangeun_detail.py @@ -163,7 +163,7 @@ def test_상세_부품_길_부품상자(): view = _text(M02 / "M02_MasterTemplete_Sangeun_View.ts") detail = _text(M02 / "M02_MasterTemplete_Sangeun_Detail.ts") cover = _text(M02 / "M02_MasterTemplete_Sangeun_Cover.ts") - assert "mountSangeunDetail(host, doc" in view and "createEmpty" not in view + assert "mountSangeunDetail(host, d," in view and "createEmpty" not in view assert 'read: "/m02/logic-lib"' in detail and "setLogicApiPaths(LIB)" in detail assert "buildLabDetail(editor" in detail and "cover: { ho, open: lineOpener(hoCtx) }" in detail assert "buildCalc" not in detail # 799-2 시험 계산 보기 걷음 diff --git a/resources/tester/test_750_2_views_one_answer.py b/resources/tester/test_750_2_views_one_answer.py index 8ec1e48c9..04acc0b7d 100644 --- a/resources/tester/test_750_2_views_one_answer.py +++ b/resources/tester/test_750_2_views_one_answer.py @@ -41,7 +41,7 @@ def test_752_1_source_panel_only_on_sangeun_screen(): assert "source: true" in _ts("M02_MasterTemplete/M02_MasterTemplete_Sangeun_View.ts") assert "source" not in _ts("M02_MasterTemplete/M02_MasterTemplete_Labor_RowSk.ts") detail = _ts("M02_MasterTemplete/M02_MasterTemplete_Sangeun_Detail.ts") - assert "opt.source ? createSangeunSide()" in detail and "side?.set(" in detail + assert "opt.source ? createSangeunSide(opt.match)" in detail and "side?.set(" in detail def test_753_2_option_off_flag_reaches_sheet_and_views(): diff --git a/resources/tester/test_807_1_import_doc_one.py b/resources/tester/test_807_1_import_doc_one.py index 8675635ff..6c648a3b1 100644 --- a/resources/tester/test_807_1_import_doc_one.py +++ b/resources/tester/test_807_1_import_doc_one.py @@ -157,4 +157,4 @@ def test_source_find_on_m01_and_m02_panels() -> None: assert "/hopyo-build-all" in sheet and "번: h.번" in sheet assert '{ layer: "personal", owner: null }' in block and "openImported" in block detail = (ROOT / "M02_MasterTemplete/M02_MasterTemplete_Sangeun_Detail.ts").read_text("utf-8") - assert "doc.가져온);" in detail # 원문 패널에 가져온 머리를 넘김 + assert "], doc);" in detail # 원문 패널에 SK 문서(가져온 머리 · 810-4 가져온보관)를 넘김 diff --git a/resources/tester/test_810_4_match.py b/resources/tester/test_810_4_match.py new file mode 100644 index 000000000..0760de919 --- /dev/null +++ b/resources/tester/test_810_4_match.py @@ -0,0 +1,211 @@ +# ruff: noqa: F811 — 임시 층 fixture(world)를 test_m02_labor_ref 에서 받아 씀 +"""810-4 지킴 — 가져온 식 ↔ 우리 M01 기초 연결 찾기(`M02_Doc_Match`) · 확정일 때만 바꾸기(`M02_Doc_MatchSk`). + +(a) 판정 — 거창 원파일 블록: 확정(콘크리트 표층 인력포설 = GC000297 형식 B-Type · 금액 원 단위 같음) · + 근접(합판거푸집 4회 = GC000211 보통 · 4회 — 단가 차이 · 비목 · 율) · 요구 704 파형강관 매설 Φ800 = + GF000179 관경 800 근접 · 다른 항 = 단위 환산(× 6) · 기계 규격 · 율 줄 · 없음(후보 0) +(b) 옵션 풀이 — 줄 수량이 의존하는 변수만 돌려 좁힘 · 글 근거 값과 다르면 「옵션 글」 다른 항(확정 아님) +(c) 줄 대조 — 같음 · 단가 차이 · 단위 환산 · 율 줄 · 끝수(지어 맞추기 없음 — 1 원 달라도 확정 아님) +(d) 바꾸기 — 임시 층 개인: 확정 SK = 같은 키에 M01 사본(바탕 · 입력값) · 금액 = M01 문서 셈 · 원래 몸 보관 → + 되돌리기 = 원래 금액 · 근접 SK 바꾸기 = 409 · M01 문서 파일 그대로 +(e) 전수(1,518 문서 × 원파일 산근 2,220 블록 · 파일마다 프로세스) — 확정은 모두 다시 셈해도 금액 같음 · + 판정 셋 · 근접 다른 항 갈래 표(S8104_ALL=1 일 때만 · 10 분 남짓) +원파일 없으면 그 시험만 skip(다른 PC). +""" + +from __future__ import annotations + +import os +import sys +from decimal import Decimal as D +from functools import lru_cache +from pathlib import Path + +import pytest + +ROOT = Path(__file__).resolve().parents[2] +HERE = Path(__file__).resolve().parent +for p in (ROOT, HERE): + if str(p) not in sys.path: + sys.path.insert(0, str(p)) + +import test_810_2_native_doc as t2 # noqa: E402 + +from M02_MasterTemplete import M02_Doc_Import as dim # noqa: E402 +from M02_MasterTemplete import M02_Doc_Match as dm # noqa: E402 +from M02_MasterTemplete import M02_Doc_MatchSk as msk # noqa: E402 +from M02_MasterTemplete import M02_MasterTemplete_Store as store # noqa: E402 +from M02_MasterTemplete import M02_Sangeun_FromHopyo as fh # noqa: E402 +from resources.tester.test_m02_labor_ref import world # noqa: E402, F401 — 같은 임시 층 + + +@lru_cache(maxsize=1) +def ctx(): + whole = t2.whole() + docs = dm.ml.load_all() + return whole, docs, dm.Index(docs), dm.Memo(dm.ml.Links(whole, docs)) + + +def block(no: int, tag: str = "거창") -> dict: + """원파일 블록 → 가져온 식 문서(형제 산근 없는 블록만 씀 — 형제는 저장 층에서 읽음).""" + out = t2.fn.emit(t2.native("EST", tag), no) + return dim.derive(t2.sk_of(out), None, t2.whole()) + + +def judge(no: int) -> dict: + whole, _, index, links = ctx() + return dm.match(block(no), dim.Links(whole, "우리"), index, links) + + +# ── (a) 판정 ───────────────────────────────────────────────────────────── +def test_sure_one_block() -> None: + got = judge(33) # 콘크리트 포장포설 t=20cm이하 + assert got["판정"] == dm.SURE and got["키"] == "GC000297" + assert got["옵션"] == {"형식": "B-Type"} and not got["다른"] + assert got["금액"]["가져온"] == got["금액"]["우리"] + + +def test_near_formwork_lists_differences() -> None: + got = judge(41) # 합판거푸집 4회 + assert got["판정"] == dm.NEAR and got["키"] == "GC000211" + assert got["옵션"]["사용횟수"] == "4회" and got["옵션"]["유형"] == "보통" + kinds = {d["항"] for d in got["다른"]} + assert "단가 차이" in kinds and "비목" in kinds # 대전 합판 단가 · 공구손료 재료비 ↔ 경비 + + +def test_req704_pipe_is_near_with_unit_rate_machine() -> None: + got = judge(19) # 파형강관 매설 Φ800 ↔ GF000179(요구 704) + assert got["판정"] == dm.NEAR and got["키"] == "GF000179" and got["옵션"] == {"관경": "800"} + kinds = [d["항"] for d in got["다른"]] + assert kinds.count("단위 환산") == 2 and "기계 규격" in kinds and "율 줄" in kinds + assert any("× 6" in d["글"] for d in got["다른"]) + + +def test_none_without_candidates() -> None: + got = judge(7) # 지장목 제거 — 같은 단위 · 자원 묶음 기초 없음 + assert got["판정"] == dm.NONE and not got.get("키") + + +# ── (b) 옵션 풀이 ──────────────────────────────────────────────────────── +def test_option_narrowing_and_text_evidence() -> None: + whole, docs, index, links = ctx() + imported = block(41) + base = docs["GC000211"] + dom, ev = dm.domains(base, imported, index.regions) + assert dom["n_사용"][0] == "4회" and "4회" in ev["n_사용"] # 규격 글 「4회」 = 근거 먼저 + got = dm._calc(imported, dim.Links(whole, "우리"), {}) + mine = dm.facts(imported, got) + want = {"수량": {x["수량"] for x in mine if x["수량"] is not None}, "단가": set()} + small = dm.narrow(base, links, {k: list(v) for k, v in dom.items()}, want, ev) + assert ( + small["S_유형"] == ["보통"] and D(0) in small["r_높이"] + ) # 5 ÷ 45 · 2 ÷ 45 = 보통 · 감률 0 + res = dm.try_doc(base, links, imported, got, mine, index.regions) + assert res["옵션"]["n_사용"] == "4회" + off = dm.verdict(mine, mine, got, got, [dm._off(base, "n_사용", "1회", {"4회"})]) + assert off["판정"] != dm.SURE and off["다른"][0]["항"] == "옵션 글" + + +# ── (c) 줄 대조 ────────────────────────────────────────────────────────── +def _line(name, kind, qty, price, cost="노무비", code=""): + q, p = D(qty), D(price) + return {"번": 0, "이름": name, "갈래": kind, "코드": code, "수량": dm._key(q), + "단가": dm._key(p), "비목": {cost: dm._key(q * p)}, "금액": dm._key(q * p), "합밖": False} # fmt: skip + + +def test_compare_kinds_and_no_tolerance() -> None: + a = [_line("인부", "노임", "0.04", "100"), _line("공", "노임", "0.5", "10")] + tot = {"노무비": 9, "재료비": 0, "경비": 0, "계": 9} + assert dm.verdict(a, list(a), tot, tot)["판정"] == dm.SURE + off = dm.verdict(a, list(a), tot, {**tot, "노무비": 10, "계": 10}) + assert off["판정"] != dm.SURE and off["다른"][0]["항"] == "끝수" # 1 원도 확정 아님 + b = [_line("인부", "노임", "0.24", "100"), _line("공", "노임", "0.5", "11")] + res = dm.verdict(a, b, tot, tot) + assert [d["항"] for d in res["다른"]] == ["단가 차이", "단위 환산"] and res["판정"] == dm.NEAR + rate = {**_line("율", "율", "1", "3", "경비"), "수량": None, "단가": None} + res = dm.verdict([*a, rate], a, tot, tot) + assert res["다른"] == [{"항": "율 줄", "글": "가져온 쪽만 — 율"}] and res["판정"] == dm.NEAR + c = [_line("딴", "노임", "3", "7", code="LB9")] + assert dm.verdict(a, c, tot, tot)["판정"] == dm.NONE + + +# ── (d) 바꾸기 · 되돌리기 ──────────────────────────────────────────────── +COSTS = ("노무비", "재료비", "경비") + + +def _money(key: str) -> list: + from M02_MasterTemplete import M02_Doc_Sk_Path as path + + got = path.read(key)["셈"] + return [got[k] for k in COSTS] + + +def test_swap_only_when_sure_and_back(world) -> None: + folder = world["personal"] + est = t2._file(t2.EST["거창"]) + before = {p.name: p.read_bytes() for p in dm.ml.FOLDER.glob("수식_*.json")} + with store.at(folder): + hp = fh.upload_native(folder, est.name, est.read_bytes(), t2.WHO)["키"] + sure = fh.make(folder, hp, 33)["이름"] + near = fh.make(folder, hp, 41)["이름"] + old = store.read("sangeun", sure) + money0 = _money(sure) + found = msk.find(sure, old["판"]) + assert found[dm.KEY]["판정"] == dm.SURE + meta = store.read("sangeun", sure)["문서"]["가져온"]["원본"][dm.KEY] + assert meta["키"] == "GC000297" and meta["옵션"] == {"형식": "B-Type"} + assert _money(sure) == money0 # 찾기 = 기록만 · 금액 그대로 + msk.swap(sure, found["판"]) + now = store.read("sangeun", sure) + doc = now["문서"] + assert doc["바탕"] == {"로직": "GC000297"} and doc["입력값"] == {"형식": "B-Type"} + assert not doc.get("가져온") and doc[msk.KEEP]["가져온"]["로직"] + assert isinstance((doc.get("수식") or {}).get("문서"), dict) # 수식 사본(802-4a) 찍힘 + want = dm._calc(dm.ml.load_all()["GC000297"], dm.ml.Links(t2.whole()), {"형식": "B-Type"}) + assert _money(sure) == [want[k] for k in COSTS] # 바꾼 뒤 = M01 사본 셈 + msk.back(sure, now["판"]) + again = store.read("sangeun", sure)["문서"] + assert again["가져온"]["로직"] and not again.get("바탕") + assert _money(sure) == money0 # 되돌리기 = 원래 가져온 식 금액 + with pytest.raises(store.StoreError) as e: + msk.swap(near, "") + assert e.value.status == 409 + assert store.read("sangeun", near)["문서"]["가져온"]["로직"] # 근접 = 그대로 + assert before == {p.name: p.read_bytes() for p in dm.ml.FOLDER.glob("수식_*.json")} + + +# ── (e) 전수 ───────────────────────────────────────────────────────────── +@pytest.mark.skipif(os.environ.get("S8104_ALL") != "1", reason="전수 = S8104_ALL=1") +def test_every_block_table() -> None: + import collections + import subprocess + + out = subprocess.run( + [sys.executable, str(HERE / "helper_810_4_sweep.py")], capture_output=True, text=True + ) + assert out.returncode == 0, out.stderr[-2000:] + import json + + got = json.loads(out.stdout.strip().splitlines()[-1]) + assert got["블록"] == 2220 and got["오류"] == 0 and got["확정다시셈다름"] == 0 + assert set(got["판정"]) <= {dm.SURE, dm.NEAR, dm.NONE} + assert sum(got["판정"].values()) == 2220 and got["판정"].get(dm.SURE, 0) >= 1 + assert collections.Counter(got["근접항"]).get("단가 차이", 0) >= 1 + + +def test_parent_reads_swapped_sibling(world) -> None: + """형제 SK 를 우리 기초 사본으로 바꿔도 부르는 가져온 식은 그 사본 문서로 셈(연결 안 끊김).""" + folder = world["personal"] + est = t2._file(t2.EST["거창"]) + with store.at(folder): + hp = fh.upload_native(folder, est.name, est.read_bytes(), t2.WHO)["키"] + parent = fh.make(folder, hp, 15)["이름"] # 전석 메쌓기 — 형제 산근 둘 + sk = store.read("sangeun", parent)["문서"] + sib = next(x["참조"]["키"] for x in sk["가져온"]["로직"]["호표"] if x.get("참조")) + got = store.read("sangeun", sib) + body = msk.copy_body(got["문서"], {"키": "GC000211", "옵션": {}}) # 같은 ㎡ + store.write("sangeun", sib, got["판"], body) + mid = _money(parent) + assert None not in mid and sum(mid) != 94215 # 사본 문서로 셈(끊기면 None) + msk.back(sib, store.read("sangeun", sib)["판"]) + assert sum(_money(parent)) == 94215 # 되돌리면 원파일 금액 From 0b50fcab85e367a50d011bfdf4a15c617280bc68 Mon Sep 17 00:00:00 2001 From: umsangdon Date: Sun, 8 Nov 2026 22:54:48 +0900 Subject: [PATCH 2/2] =?UTF-8?q?feat(810-4):=20=EC=97=B0=EA=B2=B0=20?= =?UTF-8?q?=EC=B0=BE=EA=B8=B0=20=EB=9C=BB=20=EA=B7=BC=EA=B1=B0=20=C2=B7=20?= =?UTF-8?q?=EC=98=B5=EC=85=98=20=EA=B0=92=20=EA=BC=B4=20=C2=B7=20=EC=A0=84?= =?UTF-8?q?=EC=88=98=20=ED=8C=90=EC=A0=95=20=EB=AA=A9=EB=A1=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 확정 = 줄 · 금액 같음 + 뜻 근거(품셈 절 번호 같음 또는 이름 낱말 겹침) — 값만 같은 남의 기초(구조물되메우기 ↔ 숲가꾸기 · 모르타르 ↔ 기초다짐 등)는 다른 항 「이름 다름」 = 근접 - 찾은 옵션 = 목록 값 꼴 그대로(수 = 수) — SK 입력값 · M01 다시 셈이 같은 값(간벌재직경 「22」 글이면 표 줄 못 찾던 것 고침) - 전수 도우미 파일마다 열 갈래로 나눠 맡김(큰 파일 한 프로세스가 붙잡지 않게) · 시험 S8104_ROWS 줄 목록 저장 - 전수(M01 수식 문서 1,518 × 원파일 산근 2,220 블록) — 확정 98 · 근접 617 · 없음 1,505 · 확정 다시 셈 다름 0 · 요구 704 파형강관 Φ800 = GF000179 관경 800 근접(단위 환산 × 6 · 기계 규격 · 율 줄) · 목록 docs/raw/요구_1104/_목록_810-4_연결판정.xlsx Co-Authored-By: Claude Opus 5.5 --- M02_MasterTemplete/M02_Doc_Match.py | 37 +++++++++++++++++-- docs/raw/요구_1104/_목록_810-4_연결판정.xlsx | Bin 0 -> 283185 bytes resources/tester/helper_810_4_sweep.py | 15 ++++++-- resources/tester/test_810_4_match.py | 13 +++++-- 4 files changed, 55 insertions(+), 10 deletions(-) create mode 100644 docs/raw/요구_1104/_목록_810-4_연결판정.xlsx diff --git a/M02_MasterTemplete/M02_Doc_Match.py b/M02_MasterTemplete/M02_Doc_Match.py index fbddf1bad..974901cbc 100644 --- a/M02_MasterTemplete/M02_Doc_Match.py +++ b/M02_MasterTemplete/M02_Doc_Match.py @@ -472,6 +472,7 @@ def _totals(got: dict) -> dict: EXPLAINED = ( + "이름 다름", "단가 차이", "단위 환산", "기계 규격", @@ -516,19 +517,21 @@ def _calc(doc: dict, links: Any, given: dict) -> dict | None: def try_doc( base: dict, links: Any, imported: dict, got_imp: dict, mine: list[dict], regions: set[str] ) -> dict: - """M01 문서 하나 — 옵션 풀이 · 가장 나은 조합 판정.""" + """M01 문서 하나 — 옵션 풀이 · 가장 나은 조합 판정(이름 · 절 근거 없으면 「이름 다름」 = 확정 아님).""" want = { "수량": {x["수량"] for x in mine if x["수량"] is not None}, "단가": {x["단가"] for x in mine if x["단가"] is not None}, } dom, ev = domains(base, imported, regions) dom = narrow(base, links, dom, want, ev) + named = [] if same_name(imported, base) else [_unnamed(imported, base)] best: dict | None = None for pick in combos(base, dom) or [{}]: got = _calc(base, links, _given(base, pick)) if got is None: continue off = [_off(base, k, pick[k], ev[k]) for k in ev if k in pick and pick[k] not in ev[k]] + off += named res = verdict(mine, facts(base, got), got_imp, got, off) rank = (res["판정"] == SURE, -len(off), res["같음"], res["짝"], -len(res["다른"])) if best is None or rank > best["순위"]: @@ -577,17 +580,43 @@ def match(imported: dict, links_imp: Any, index: Index, links: Any) -> dict[str, } -def _shown(doc: dict, pick: dict) -> dict[str, str]: - """고른 옵션(기본과 다른 것) — {열쇠: 값 글}.""" +def _shown(doc: dict, pick: dict) -> dict[str, Any]: + """고른 옵션(기본과 다른 것) — {열쇠: 값}(수 = 수 · 선택 목록의 수 값과 같은 꼴 · SK 입력값).""" out = {} for v in doc.get("변수") or []: vid = md.var_id(v) if vid in pick and mc.plain_text(mc.number(pick[vid])) != mc.plain_text( mc.number((v.get("연결") or {}).get("값")) ): - out[str(v.get("열쇠") or vid)] = mc.plain_text(mc.number(pick[vid])) + out[str(v.get("열쇠") or vid)] = ml._norm(mc.number(pick[vid])) return out +_STOP = {"설치", "해체", "인력", "기계", "작업", "운반", "타설", "제작"} + + +def _grams(texts: list[Any]) -> set[str]: + """이름 낱말 — 한글 두 글자 묶음 · 영문 · 수 낱말(일반 낱말 뺌).""" + out: set[str] = set() + for t in texts: + t = re.sub(r"\s|및", "", str(t or "")) + for run in re.findall(r"[가-힣]+", t): + out |= {run[i : i + 2] for i in range(len(run) - 1)} + out |= {w.lower() for w in re.findall(r"[A-Za-z]{2,}", t)} + return out - _STOP + + +def same_name(imported: dict, base: dict) -> bool: + """뜻 근거 — 품셈 절 번호가 같거나 이름 낱말이 겹침(값만 같은 남의 기초를 확정으로 안 묶음).""" + secs = sections([x.get("글") for x in (imported.get("가져온") or {}).get("추정") or []]) + if secs & sections([base.get("출처")]): + return True + return bool(_grams([imported.get("이름")]) & _grams([base.get("이름")])) + + +def _unnamed(imported: dict, base: dict) -> dict: + return {"항": "이름 다름", "글": f"{imported.get('이름')} ↔ {base.get('이름')}"} + + def _plain(d: dict) -> dict: return {k: (None if v is None else float(v)) for k, v in d.items()} diff --git a/docs/raw/요구_1104/_목록_810-4_연결판정.xlsx b/docs/raw/요구_1104/_목록_810-4_연결판정.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..52aa19e209e7423332d80627222e33dd750fc6ab GIT binary patch literal 283185 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 +Hz^4nLJKIo$_~VMyV|9G&p#> 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�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�AHNNxnT_5AD>B|Fu0ls^0 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 z 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

d;;p2VpLmj`?DZfqQ{B9w1$ZO?61f0LSMZB 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 r{1N{Dj7uIO~jsW_9AErIi literal 0 HcmV?d00001 diff --git a/resources/tester/helper_810_4_sweep.py b/resources/tester/helper_810_4_sweep.py index 049900ebf..36ee191aa 100644 --- a/resources/tester/helper_810_4_sweep.py +++ b/resources/tester/helper_810_4_sweep.py @@ -9,6 +9,7 @@ from __future__ import annotations import collections import json +import os import pickle import sys import time @@ -70,15 +71,22 @@ def file_docs(t, dim, dm, whole, kind: str, tag: str) -> dict[int, dict]: return made -def sweep(arg: tuple[str, str]) -> list[dict]: - kind, tag = arg +PARTS = 10 # 파일마다 블록을 나눠 맡김(큰 파일 한 프로세스가 끝을 붙잡지 않게) + + +def sweep(arg: tuple[str, str, int]) -> list[dict]: + kind, tag, part = arg t, dim, dm, whole, docs, index, links = _ctx() rows = [] try: made = file_docs(t, dim, dm, whole, kind, tag) except Exception as e: # noqa: BLE001 — 원파일 없음(다른 PC) = 빈 줄 + if part: + return [] return [{"파일": tag, "오류": repr(e)[:200], "판정": "오류", "없는파일": "없음" in repr(e)}] for no, doc in made.items(): + if no % PARTS != part: + continue start = time.time() try: res = dm.match(doc, dim.Links(whole, "우리"), index, links) @@ -101,7 +109,8 @@ def main() -> None: import test_810_1_stc as c tags = [("EST", k) for k in e.FILES] + [("STC", k) for k in c.FILES] - with Pool(len(tags)) as pool: + tags = [(kind, tag, part) for kind, tag in tags for part in range(PARTS)] + with Pool(min(len(tags), max(2, (os.cpu_count() or 4) - 2))) as pool: rows = [r for part in pool.map(sweep, tags) for r in part] if "--rows" in sys.argv: pickle.dump(rows, open(sys.argv[sys.argv.index("--rows") + 1], "wb")) diff --git a/resources/tester/test_810_4_match.py b/resources/tester/test_810_4_match.py index 0760de919..bb2bed4fc 100644 --- a/resources/tester/test_810_4_match.py +++ b/resources/tester/test_810_4_match.py @@ -9,7 +9,7 @@ (d) 바꾸기 — 임시 층 개인: 확정 SK = 같은 키에 M01 사본(바탕 · 입력값) · 금액 = M01 문서 셈 · 원래 몸 보관 → 되돌리기 = 원래 금액 · 근접 SK 바꾸기 = 409 · M01 문서 파일 그대로 (e) 전수(1,518 문서 × 원파일 산근 2,220 블록 · 파일마다 프로세스) — 확정은 모두 다시 셈해도 금액 같음 · - 판정 셋 · 근접 다른 항 갈래 표(S8104_ALL=1 일 때만 · 10 분 남짓) + 판정 셋 · 근접 다른 항 갈래 표(S8104_ALL=1 일 때만 · 수십 분 · S8104_ROWS= = 줄 목록 저장) 원파일 없으면 그 시험만 skip(다른 PC). """ @@ -75,7 +75,7 @@ def test_near_formwork_lists_differences() -> None: def test_req704_pipe_is_near_with_unit_rate_machine() -> None: got = judge(19) # 파형강관 매설 Φ800 ↔ GF000179(요구 704) - assert got["판정"] == dm.NEAR and got["키"] == "GF000179" and got["옵션"] == {"관경": "800"} + assert got["판정"] == dm.NEAR and got["키"] == "GF000179" and got["옵션"] == {"관경": 800} kinds = [d["항"] for d in got["다른"]] assert kinds.count("단위 환산") == 2 and "기계 규격" in kinds and "율 줄" in kinds assert any("× 6" in d["글"] for d in got["다른"]) @@ -125,6 +125,12 @@ def test_compare_kinds_and_no_tolerance() -> None: rate = {**_line("율", "율", "1", "3", "경비"), "수량": None, "단가": None} res = dm.verdict([*a, rate], a, tot, tot) assert res["다른"] == [{"항": "율 줄", "글": "가져온 쪽만 — 율"}] and res["판정"] == dm.NEAR + named = dm.verdict( + a, list(a), tot, tot, [dm._unnamed({"이름": "구조물되메우기"}, {"이름": "숲가꾸기"})] + ) + assert named["판정"] == dm.NEAR # 값만 같은 남의 기초 = 확정 아님 + assert not dm.same_name({"이름": "모르타르"}, {"이름": "기초다짐 및 뒷채움(인력)"}) + assert dm.same_name({"이름": "유로폼 설치및해체"}, {"이름": "유로폼 설치 및 해체"}) c = [_line("딴", "노임", "3", "7", code="LB9")] assert dm.verdict(a, c, tot, tot)["판정"] == dm.NONE @@ -180,8 +186,9 @@ def test_every_block_table() -> None: import collections import subprocess + rows = ["--rows", os.environ["S8104_ROWS"]] if os.environ.get("S8104_ROWS") else [] out = subprocess.run( - [sys.executable, str(HERE / "helper_810_4_sweep.py")], capture_output=True, text=True + [sys.executable, str(HERE / "helper_810_4_sweep.py"), *rows], capture_output=True, text=True ) assert out.returncode == 0, out.stderr[-2000:] import json